X-Git-Url: https://git.opendaylight.org/gerrit/gitweb?a=blobdiff_plain;f=neutronvpn%2Fneutronvpn-impl%2Fsrc%2Fmain%2Fjava%2Forg%2Fopendaylight%2Fvpnservice%2Fneutronvpn%2FNeutronvpnUtils.java;h=a74a34b62a65303df327f79c57c79bd82a3b2635;hb=c103ce9e5b1e4acfb3320f245503e46332593e43;hp=042b0ea19f28dd22f0e400f892d715692b59c79b;hpb=84eb40f762ad62cb0b1f71768bab07fc17d4a81d;p=vpnservice.git diff --git a/neutronvpn/neutronvpn-impl/src/main/java/org/opendaylight/vpnservice/neutronvpn/NeutronvpnUtils.java b/neutronvpn/neutronvpn-impl/src/main/java/org/opendaylight/vpnservice/neutronvpn/NeutronvpnUtils.java index 042b0ea1..a74a34b6 100644 --- a/neutronvpn/neutronvpn-impl/src/main/java/org/opendaylight/vpnservice/neutronvpn/NeutronvpnUtils.java +++ b/neutronvpn/neutronvpn-impl/src/main/java/org/opendaylight/vpnservice/neutronvpn/NeutronvpnUtils.java @@ -25,6 +25,9 @@ import org.opendaylight.yang.gen.v1.urn.opendaylight.neutron.networks.rev150712. import org.opendaylight.yang.gen.v1.urn.opendaylight.neutron.networks.rev150712.networks.attributes.networks.NetworkKey; import org.opendaylight.yang.gen.v1.urn.opendaylight.neutron.ports.rev150712.ports.attributes.ports.Port; import org.opendaylight.yang.gen.v1.urn.opendaylight.neutron.rev150712.Neutron; +import org.opendaylight.yang.gen.v1.urn.opendaylight.neutron.subnets.rev150712.subnets.attributes.Subnets; +import org.opendaylight.yang.gen.v1.urn.opendaylight.neutron.subnets.rev150712.subnets.attributes.subnets.Subnet; +import org.opendaylight.yang.gen.v1.urn.opendaylight.neutron.subnets.rev150712.subnets.attributes.subnets.SubnetKey; import org.opendaylight.yang.gen.v1.urn.opendaylight.vpnservice.lockmanager.rev150819.LockManagerService; import org.opendaylight.yang.gen.v1.urn.opendaylight.vpnservice.lockmanager.rev150819.TimeUnits; import org.opendaylight.yang.gen.v1.urn.opendaylight.vpnservice.lockmanager.rev150819.TryLockInput; @@ -104,16 +107,26 @@ public class NeutronvpnUtils { return null; } - protected static Uuid getVpnForRouter(DataBroker broker, Uuid router) { + // true for external vpn, false for internal vpn + protected static Uuid getVpnForRouter(DataBroker broker, Uuid routerId, Boolean externalVpn) { InstanceIdentifier vpnMapsIdentifier = InstanceIdentifier.builder(VpnMaps.class).build(); - Optional optionalVpnMaps = read(broker, LogicalDatastoreType.CONFIGURATION, vpnMapsIdentifier); + Optional optionalVpnMaps = read(broker, LogicalDatastoreType.CONFIGURATION, + vpnMapsIdentifier); if (optionalVpnMaps.isPresent()) { VpnMaps vpnNets = optionalVpnMaps.get(); List allMaps = vpnNets.getVpnMap(); - if (router != null) { + if (routerId != null) { for (VpnMap vpnMap : allMaps) { - if (router.equals(vpnMap.getRouterId())) { - return vpnMap.getVpnId(); + if (routerId.equals(vpnMap.getRouterId())) { + if (externalVpn == true) { + if (!routerId.equals(vpnMap.getVpnId())) { + return vpnMap.getVpnId(); + } + } else { + if (routerId.equals(vpnMap.getVpnId())) { + return vpnMap.getVpnId(); + } + } } } } @@ -201,20 +214,20 @@ public class NeutronvpnUtils { protected static List getNeutronRouterSubnetIds(DataBroker broker, Uuid routerId) { logger.info("getNeutronRouterSubnetIds for {}", routerId.getValue()); - List subnetNames = new ArrayList(); + List subnetIdList = new ArrayList(); Router router = getNeutronRouter(broker, routerId); if (router != null) { List ifs = router.getInterfaces(); - if (!ifs.isEmpty()) { + .Interfaces> interfacesList = router.getInterfaces(); + if (!interfacesList.isEmpty()) { for (org.opendaylight.yang.gen.v1.urn.opendaylight.neutron.l3.rev150712.routers.attributes.routers - .router.Interfaces iff : ifs) { - subnetNames.add(iff.getSubnetId()); + .router.Interfaces interfaces : interfacesList) { + subnetIdList.add(interfaces.getSubnetId()); } } } logger.info("returning from getNeutronRouterSubnetIds for {}", routerId.getValue()); - return subnetNames; + return subnetIdList; } protected static String uuidToTapPortName(Uuid id) { @@ -261,17 +274,10 @@ public class NeutronvpnUtils { try { Uuid subnetUUID = port.getFixedIps().get(0).getSubnetId(); - org.opendaylight.yang.gen.v1.urn.opendaylight.neutron.subnets.rev150712.subnets.attributes.subnets - .SubnetKey subnetkey = new org.opendaylight.yang.gen.v1.urn.opendaylight.neutron.subnets - .rev150712.subnets.attributes.subnets.SubnetKey(subnetUUID); - InstanceIdentifier subnetidentifier = InstanceIdentifier.create(Neutron.class).child(org - .opendaylight.yang.gen.v1.urn.opendaylight.neutron.subnets.rev150712.subnets.attributes.Subnets - .class).child(org.opendaylight.yang.gen.v1.urn.opendaylight.neutron.subnets.rev150712.subnets - .attributes.subnets.Subnet.class, subnetkey); - Optional subnet = read(broker, LogicalDatastoreType.CONFIGURATION, subnetidentifier); - + SubnetKey subnetkey = new SubnetKey(subnetUUID); + InstanceIdentifier subnetidentifier = InstanceIdentifier.create(Neutron.class).child(Subnets + .class).child(Subnet.class, subnetkey); + Optional subnet = read(broker, LogicalDatastoreType.CONFIGURATION,subnetidentifier); if (subnet.isPresent()) { cidr = subnet.get().getCidr(); // Extract the prefix length from cidr