From: David Goldberg Date: Tue, 10 Jan 2017 11:20:09 +0000 (+0200) Subject: add vrf id to vpn operational X-Git-Tag: release/carbon~39 X-Git-Url: https://git.opendaylight.org/gerrit/gitweb?a=commitdiff_plain;h=fc742f7b4d066982874c4bb428915fe55e6bd668;p=unimgr.git add vrf id to vpn operational Change-Id: I5a300a4dd192a97250054416a25d65794799677b Signed-off-by: David Goldberg --- diff --git a/legato-api/src/main/yang/mef-services.yang b/legato-api/src/main/yang/mef-services.yang index d362556a..b0237594 100644 --- a/legato-api/src/main/yang/mef-services.yang +++ b/legato-api/src/main/yang/mef-services.yang @@ -2032,6 +2032,7 @@ module mef-services { augment "/mef-services:mef-services/mef-services:mef-service/mef-services:mef-service-choice/mef-services:ipvc-choice/mef-services:ipvc" { ext:augment-identifier "ipvc-vpn"; leaf vpn-id {type string;} + leaf vrf-id {type string;} list vpn-elans { key "uni-id ip-uni-id"; leaf uni-id {type mef-types:identifier45;} diff --git a/netvirt/src/main/java/org/opendaylight/unimgr/mef/netvirt/IpvcListener.java b/netvirt/src/main/java/org/opendaylight/unimgr/mef/netvirt/IpvcListener.java index 79b2a64e..021f7a86 100644 --- a/netvirt/src/main/java/org/opendaylight/unimgr/mef/netvirt/IpvcListener.java +++ b/netvirt/src/main/java/org/opendaylight/unimgr/mef/netvirt/IpvcListener.java @@ -104,7 +104,7 @@ public class IpvcListener extends UnimgrDataTreeChangeListener implements @Override public void connectUni(String uniId) { List allIpvcs = MefServicesUtils.getAllIpvcsServiceIds(dataBroker); - allIpvcs = (allIpvcs != null) ? allIpvcs : Collections.emptyList(); + allIpvcs = allIpvcs != null ? allIpvcs : Collections.emptyList(); for (RetailSvcIdType ipvcSerId : allIpvcs) { InstanceIdentifier ipvcId = MefServicesUtils.getIpvcInstanceIdentifier(ipvcSerId); @@ -115,8 +115,8 @@ public class IpvcListener extends UnimgrDataTreeChangeListener implements } List toConnect = new ArrayList<>(); - List unis = (ipvc.getUnis() != null) ? ipvc.getUnis().getUni() : null; - unis = (unis != null) ? unis : Collections.emptyList(); + List unis = ipvc.getUnis() != null ? ipvc.getUnis().getUni() : null; + unis = unis != null ? unis : Collections.emptyList(); for (Uni uni : unis) { if (uni.getUniId().getValue().equals(uniId)) { Log.info("Connecting Uni {} to svc id {}", uniId, ipvcSerId); @@ -146,7 +146,7 @@ public class IpvcListener extends UnimgrDataTreeChangeListener implements public void disconnectUni(String uniId) { List allIpvcs = MefServicesUtils.getAllIpvcsServiceIds(dataBroker); - allIpvcs = (allIpvcs != null) ? allIpvcs : Collections.emptyList(); + allIpvcs = allIpvcs != null ? allIpvcs : Collections.emptyList(); for (RetailSvcIdType ipvcSerId : allIpvcs) { InstanceIdentifier ipvcId = MefServicesUtils.getIpvcInstanceIdentifier(ipvcSerId); @@ -157,8 +157,8 @@ public class IpvcListener extends UnimgrDataTreeChangeListener implements } List toRemove = new ArrayList<>(); - List unis = (ipvc.getUnis() != null) ? ipvc.getUnis().getUni() : null; - unis = (unis != null) ? unis : Collections.emptyList(); + List unis = ipvc.getUnis() != null ? ipvc.getUnis().getUni() : null; + unis = unis != null ? unis : Collections.emptyList(); for (Uni uni : unis) { if (uni.getUniId().getValue().equals(uniId)) { Log.info("Disconnecting Uni {} from svc id {}", uniId, ipvcSerId); @@ -191,6 +191,8 @@ public class IpvcListener extends UnimgrDataTreeChangeListener implements createVpnInstance(vpnName, ipvcId); String rd = waitForRd(vpnName); + updateOperationalDataStoreWithVrfId(ipvcId, vpnName, rd); + List unis = new ArrayList<>(); if (ipvc.getUnis() != null && ipvc.getUnis() != null) { unis = ipvc.getUnis().getUni(); @@ -203,6 +205,12 @@ public class IpvcListener extends UnimgrDataTreeChangeListener implements } } + private void updateOperationalDataStoreWithVrfId(InstanceIdentifier ipvcId, String vpnName, String vrfId) { + WriteTransaction tx = MdsalUtils.createTransaction(dataBroker); + MefServicesUtils.addOperIpvcVpnElan(ipvcId, vpnName, vrfId, tx); + MdsalUtils.commitTransaction(tx); + } + private void createVpnInstance(final String vpnName, InstanceIdentifier ipvcId) { synchronized (vpnName.intern()) { WriteTransaction tx = MdsalUtils.createTransaction(dataBroker); @@ -306,7 +314,7 @@ public class IpvcListener extends UnimgrDataTreeChangeListener implements return; } String vpnName = operIpvcVpn.getVpnId(); - String rd = (String) waitForRd(vpnName); + String rd = waitForRd(vpnName); List originalUni = origIpvc.getUnis() != null && origIpvc.getUnis().getUni() != null ? origIpvc.getUnis().getUni() : Collections.emptyList(); List updateUni = updateIpvc.getUnis() != null && updateIpvc.getUnis().getUni() != null @@ -373,14 +381,17 @@ public class IpvcListener extends UnimgrDataTreeChangeListener implements private void waitForInterfaceDpn(String vpnName, String rd, String interfaceName) { InstanceIdentifier vpnId = NetvirtVpnUtils.getVpnInstanceOpDataIdentifier(rd); DataWaitGetter getInterfByName = (vpn) -> { - if (vpn.getVpnToDpnList() == null) + if (vpn.getVpnToDpnList() == null) { return null; + } for (VpnToDpnList is : vpn.getVpnToDpnList()) { - if (is.getVpnInterfaces() == null) + if (is.getVpnInterfaces() == null) { continue; + } for (VpnInterfaces i : is.getVpnInterfaces()) { - if (i.getInterfaceName().equals(interfaceName)) + if (i.getInterfaceName().equals(interfaceName)) { return interfaceName; + } } } return null; diff --git a/netvirt/src/main/java/org/opendaylight/unimgr/mef/netvirt/MefServicesUtils.java b/netvirt/src/main/java/org/opendaylight/unimgr/mef/netvirt/MefServicesUtils.java index 3c01deac..e58043c8 100644 --- a/netvirt/src/main/java/org/opendaylight/unimgr/mef/netvirt/MefServicesUtils.java +++ b/netvirt/src/main/java/org/opendaylight/unimgr/mef/netvirt/MefServicesUtils.java @@ -129,12 +129,19 @@ public class MefServicesUtils { } public static void addOperIpvcVpnElan(InstanceIdentifier identifier, String vpnId, WriteTransaction tx) { + addOperIpvcVpnElan(identifier, vpnId, null, tx); + } + + public static void addOperIpvcVpnElan(InstanceIdentifier identifier, String vpnId, String vrfId, WriteTransaction tx) { synchronized (vpnId.intern()) { InstanceIdentifier path = identifier.augmentation(IpvcVpn.class); IpvcVpnBuilder ipvcVpnBuilder = new IpvcVpnBuilder(); ipvcVpnBuilder.setVpnId(vpnId); + if (vrfId != null) { + ipvcVpnBuilder.setVrfId(vrfId); + } tx.merge(LogicalDatastoreType.OPERATIONAL, path, ipvcVpnBuilder.build(), true); }