import org.opendaylight.controller.md.sal.binding.api.WriteTransaction;
import org.opendaylight.controller.md.sal.common.api.data.LogicalDatastoreType;
import org.opendaylight.yang.gen.v1.http.metroethernetforum.org.ns.yang.mef.interfaces.rev150526.mef.interfaces.subnets.Subnet;
+import org.opendaylight.yang.gen.v1.http.metroethernetforum.org.ns.yang.mef.services.rev150526.EvcElan;
import org.opendaylight.yang.gen.v1.http.metroethernetforum.org.ns.yang.mef.services.rev150526.IpvcVpn;
import org.opendaylight.yang.gen.v1.http.metroethernetforum.org.ns.yang.mef.services.rev150526.IpvcVpnBuilder;
import org.opendaylight.yang.gen.v1.http.metroethernetforum.org.ns.yang.mef.services.rev150526.MefServices;
import org.opendaylight.yang.gen.v1.http.metroethernetforum.org.ns.yang.mef.services.rev150526.mef.services.MefService;
import org.opendaylight.yang.gen.v1.http.metroethernetforum.org.ns.yang.mef.services.rev150526.mef.services.MefServiceKey;
+import org.opendaylight.yang.gen.v1.http.metroethernetforum.org.ns.yang.mef.services.rev150526.mef.services.mef.service.mef.service.choice.EvcChoice;
+import org.opendaylight.yang.gen.v1.http.metroethernetforum.org.ns.yang.mef.services.rev150526.mef.services.mef.service.mef.service.choice.IpvcChoice;
import org.opendaylight.yang.gen.v1.http.metroethernetforum.org.ns.yang.mef.services.rev150526.mef.services.mef.service.mef.service.choice.evc.choice.Evc;
import org.opendaylight.yang.gen.v1.http.metroethernetforum.org.ns.yang.mef.services.rev150526.mef.services.mef.service.mef.service.choice.ipvc.choice.Ipvc;
import org.opendaylight.yang.gen.v1.http.metroethernetforum.org.ns.yang.mef.services.rev150526.mef.services.mef.service.mef.service.choice.ipvc.choice.ipvc.Unis;
return getMefServiceInstanceIdentifier().child(Evc.class);
}
+ public static InstanceIdentifier<Evc> getEvcInstanceIdentifier(RetailSvcIdType svcId) {
+ return InstanceIdentifier.create(MefServices.class).child(MefService.class, new MefServiceKey(svcId))
+ .child(Evc.class);
+ }
+
public static InstanceIdentifier<MefService> getMefServiceInstanceIdentifier() {
return InstanceIdentifier.create(MefServices.class).child(MefService.class);
}
}
public static InstanceIdentifier<Ipvc> getIpvcsInstanceIdentifier() {
- return InstanceIdentifier.create(MefServices.class).child(MefService.class).child(Ipvc.class);
+ return getMefServiceInstanceIdentifier().child(Ipvc.class);
}
- public static InstanceIdentifier<Ipvc> getIpvcsInstanceIdentifier(RetailSvcIdType svcId) {
+ public static InstanceIdentifier<Ipvc> getIpvcInstanceIdentifier(RetailSvcIdType svcId) {
return InstanceIdentifier.create(MefServices.class).child(MefService.class, new MefServiceKey(svcId))
.child(Ipvc.class);
}
return null;
}
+ public static Ipvc getIpvc(DataBroker dataBroker, InstanceIdentifier<Ipvc> identifier) {
+ Optional<Ipvc> ipvcVpn = MdsalUtils.read(dataBroker, LogicalDatastoreType.CONFIGURATION, identifier);
+ if (ipvcVpn.isPresent()) {
+ return ipvcVpn.get();
+ } else {
+ return null;
+ }
+ }
+
+ public static Evc getEvc(DataBroker dataBroker, InstanceIdentifier<Evc> identifier) {
+ Optional<Evc> evcVpn = MdsalUtils.read(dataBroker, LogicalDatastoreType.CONFIGURATION, identifier);
+ if (evcVpn.isPresent()) {
+ return evcVpn.get();
+ } else {
+ return null;
+ }
+ }
public static IpvcVpn getOperIpvcVpn(DataBroker dataBroker, InstanceIdentifier<Ipvc> identifier) {
InstanceIdentifier<IpvcVpn> path = identifier.augmentation(IpvcVpn.class);
}
public static void addOperIpvcVpnElan(InstanceIdentifier<Ipvc> identifier, String vpnId, WriteTransaction tx) {
+ addOperIpvcVpnElan(identifier, vpnId, null, tx);
+ }
+
+ public static void addOperIpvcVpnElan(InstanceIdentifier<Ipvc> identifier, String vpnId, String vrfId, WriteTransaction tx) {
synchronized (vpnId.intern()) {
InstanceIdentifier<IpvcVpn> 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);
}
}
public static void removeOperIpvcVpn(InstanceIdentifier<Ipvc> identifier, WriteTransaction tx) {
- InstanceIdentifier<IpvcVpn> path = identifier.augmentation(IpvcVpn.class);
- tx.delete(LogicalDatastoreType.OPERATIONAL, path);
+ final InstanceIdentifier<MefService> serviceId = identifier.firstIdentifierOf(MefService.class);
+ tx.delete(LogicalDatastoreType.OPERATIONAL, serviceId);
}
public static void removeOperIpvcSubnet(DataBroker dataBroker, InstanceIdentifier<Ipvc> identifier, String vpnId,
vpnElansEx.remove(vpnElans);
VpnElansBuilder vpnElansB = new VpnElansBuilder(vpnElans);
List<Subnets> exSubnets = vpnElansB.getSubnets();
- List<Subnets> newSubnets = exSubnets.stream().filter(s -> ! s.getSubnet().equals(deleteSubnet)).collect(Collectors.toList());
+ List<Subnets> newSubnets = exSubnets.stream().filter(s -> !s.getSubnet().equals(deleteSubnet))
+ .collect(Collectors.toList());
vpnElansB.setSubnets(newSubnets);
vpnElansEx.add(vpnElansB.build());
}
MdsalUtils.syncWrite(dataBroker, LogicalDatastoreType.OPERATIONAL, path, ipvcVpnBuilder.build());
}
+ public static List<RetailSvcIdType> getAllIpvcsServiceIds(DataBroker dataBroker) {
+ List<RetailSvcIdType> toReturn = new ArrayList<>();
+
+ InstanceIdentifier<MefServices> path = MefServicesUtils.getMefServicesInstanceIdentifier();
+ Optional<MefServices> mefServices = MdsalUtils.read(dataBroker, LogicalDatastoreType.CONFIGURATION, path);
+ if (!mefServices.isPresent() || mefServices.get() == null) {
+ return toReturn;
+ }
+ for (MefService service : mefServices.get().getMefService()) {
+ if (service.getMefServiceChoice() instanceof IpvcChoice) {
+ toReturn.add(service.getSvcId());
+ }
+ }
+ return toReturn;
+ }
+
+ public static List<RetailSvcIdType> getAllEvcsServiceIds(DataBroker dataBroker) {
+ List<RetailSvcIdType> toReturn = new ArrayList<>();
+
+ InstanceIdentifier<MefServices> path = MefServicesUtils.getMefServicesInstanceIdentifier();
+ Optional<MefServices> mefServices = MdsalUtils.read(dataBroker, LogicalDatastoreType.CONFIGURATION, path);
+ if (!mefServices.isPresent() || mefServices.get() == null) {
+ return toReturn;
+ }
+ for (MefService service : mefServices.get().getMefService()) {
+ if (service.getMefServiceChoice() instanceof EvcChoice) {
+ toReturn.add(service.getSvcId());
+ }
+ }
+ return toReturn;
+ }
+
+ public static Optional<MefService> getOpMefServiceBySvcId(DataBroker dataBroker, RetailSvcIdType svcId) {
+ InstanceIdentifier<MefService> mefServiceIdr = InstanceIdentifier.builder(MefServices.class)
+ .child(MefService.class, new MefServiceKey(svcId)).build();
+ return MdsalUtils.read(dataBroker, LogicalDatastoreType.OPERATIONAL, mefServiceIdr);
+ }
+
+ public static VpnElans getVpnElanByIpUniId(List<VpnElans> vpnElansList, String ipUniId) {
+ if (!vpnElansList.isEmpty()) {
+ for (VpnElans vpnElan : vpnElansList) {
+ if (vpnElan.getIpUniId() != null && vpnElan.getIpUniId().getValue().equals(ipUniId)) {
+ return vpnElan;
+ }
+ }
+ }
+ return null;
+ }
+
+ public static String getNetworkIdFromOpMefService(MefService opMefService, String unimgrNetworkId) {
+ if (opMefService.getMefServiceChoice() instanceof EvcChoice) {
+ return ((EvcChoice) opMefService.getMefServiceChoice()).getEvc().getAugmentation(EvcElan.class)
+ .getElanId();
+ } else if (opMefService.getMefServiceChoice() instanceof IpvcChoice) {
+ List<VpnElans> vpnElansList = ((IpvcChoice) opMefService.getMefServiceChoice()).getIpvc()
+ .getAugmentation(IpvcVpn.class).getVpnElans();
+ VpnElans vpnElan = MefServicesUtils.getVpnElanByIpUniId(vpnElansList, unimgrNetworkId);
+ if (vpnElan != null) {
+ return vpnElan.getElanId();
+ }
+ }
+ return null;
+ }
+
}