import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.networkmodel.rev201116.topology.update.result.TopologyChanges;
import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.networkmodel.rev201116.topology.update.result.TopologyChangesKey;
import org.opendaylight.yang.gen.v1.http.org.openroadm.common.state.types.rev191129.State;
-import org.opendaylight.yang.gen.v1.http.org.openroadm.service.rev211210.service.list.Services;
-import org.opendaylight.yang.gen.v1.http.org.transportpce.b.c._interface.pathdescription.rev210705.path.description.AToZDirection;
-import org.opendaylight.yang.gen.v1.http.org.transportpce.b.c._interface.pathdescription.rev210705.path.description.AToZDirectionBuilder;
-import org.opendaylight.yang.gen.v1.http.org.transportpce.b.c._interface.pathdescription.rev210705.path.description.ZToADirection;
-import org.opendaylight.yang.gen.v1.http.org.transportpce.b.c._interface.pathdescription.rev210705.path.description.ZToADirectionBuilder;
-import org.opendaylight.yang.gen.v1.http.org.transportpce.b.c._interface.pathdescription.rev210705.path.description.atoz.direction.AToZ;
-import org.opendaylight.yang.gen.v1.http.org.transportpce.b.c._interface.pathdescription.rev210705.path.description.atoz.direction.AToZBuilder;
-import org.opendaylight.yang.gen.v1.http.org.transportpce.b.c._interface.pathdescription.rev210705.path.description.atoz.direction.AToZKey;
-import org.opendaylight.yang.gen.v1.http.org.transportpce.b.c._interface.pathdescription.rev210705.path.description.ztoa.direction.ZToA;
-import org.opendaylight.yang.gen.v1.http.org.transportpce.b.c._interface.pathdescription.rev210705.path.description.ztoa.direction.ZToABuilder;
-import org.opendaylight.yang.gen.v1.http.org.transportpce.b.c._interface.pathdescription.rev210705.path.description.ztoa.direction.ZToAKey;
-import org.opendaylight.yang.gen.v1.http.org.transportpce.b.c._interface.pathdescription.rev210705.pce.resource.Resource;
-import org.opendaylight.yang.gen.v1.http.org.transportpce.b.c._interface.pathdescription.rev210705.pce.resource.ResourceBuilder;
-import org.opendaylight.yang.gen.v1.http.org.transportpce.b.c._interface.pathdescription.rev210705.pce.resource.resource.resource.TerminationPoint;
+import org.opendaylight.yang.gen.v1.http.org.openroadm.service.rev230526.service.list.Services;
+import org.opendaylight.yang.gen.v1.http.org.transportpce.b.c._interface.pathdescription.rev230501.path.description.AToZDirection;
+import org.opendaylight.yang.gen.v1.http.org.transportpce.b.c._interface.pathdescription.rev230501.path.description.AToZDirectionBuilder;
+import org.opendaylight.yang.gen.v1.http.org.transportpce.b.c._interface.pathdescription.rev230501.path.description.ZToADirection;
+import org.opendaylight.yang.gen.v1.http.org.transportpce.b.c._interface.pathdescription.rev230501.path.description.ZToADirectionBuilder;
+import org.opendaylight.yang.gen.v1.http.org.transportpce.b.c._interface.pathdescription.rev230501.path.description.atoz.direction.AToZ;
+import org.opendaylight.yang.gen.v1.http.org.transportpce.b.c._interface.pathdescription.rev230501.path.description.atoz.direction.AToZBuilder;
+import org.opendaylight.yang.gen.v1.http.org.transportpce.b.c._interface.pathdescription.rev230501.path.description.atoz.direction.AToZKey;
+import org.opendaylight.yang.gen.v1.http.org.transportpce.b.c._interface.pathdescription.rev230501.path.description.ztoa.direction.ZToA;
+import org.opendaylight.yang.gen.v1.http.org.transportpce.b.c._interface.pathdescription.rev230501.path.description.ztoa.direction.ZToABuilder;
+import org.opendaylight.yang.gen.v1.http.org.transportpce.b.c._interface.pathdescription.rev230501.path.description.ztoa.direction.ZToAKey;
+import org.opendaylight.yang.gen.v1.http.org.transportpce.b.c._interface.pathdescription.rev230501.pce.resource.Resource;
+import org.opendaylight.yang.gen.v1.http.org.transportpce.b.c._interface.pathdescription.rev230501.pce.resource.ResourceBuilder;
+import org.opendaylight.yang.gen.v1.http.org.transportpce.b.c._interface.pathdescription.rev230501.pce.resource.resource.resource.Link;
+import org.opendaylight.yang.gen.v1.http.org.transportpce.b.c._interface.pathdescription.rev230501.pce.resource.resource.resource.TerminationPoint;
import org.opendaylight.yang.gen.v1.http.org.transportpce.b.c._interface.service.types.rev220118.service.path.PathDescription;
import org.opendaylight.yang.gen.v1.http.org.transportpce.b.c._interface.service.types.rev220118.service.path.PathDescriptionBuilder;
import org.opendaylight.yang.gen.v1.http.org.transportpce.b.c._interface.servicepath.rev171017.ServicePathList;
import org.opendaylight.yang.gen.v1.http.org.transportpce.b.c._interface.servicepath.rev171017.service.path.list.ServicePaths;
+import org.osgi.service.component.annotations.Activate;
+import org.osgi.service.component.annotations.Component;
+import org.osgi.service.component.annotations.Reference;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
-public class NetworkModelListenerImpl implements TransportpceNetworkmodelListener {
+@Component
+public class NetworkModelListenerImpl implements TransportpceNetworkmodelListener, NetworkListener {
private static final Logger LOG = LoggerFactory.getLogger(NetworkModelListenerImpl.class);
- private final NotificationPublishService notificationPublishService; // to be used for T-API notification
private ServiceDataStoreOperations serviceDataStoreOperations;
private TopologyUpdateResult topologyUpdateResult;
- public NetworkModelListenerImpl(NotificationPublishService notificationPublishService,
- ServiceDataStoreOperations serviceDataStoreOperations) {
- this.notificationPublishService = notificationPublishService;
+ @Activate
+ public NetworkModelListenerImpl(@Reference NotificationPublishService notificationPublishService,
+ @Reference ServiceDataStoreOperations serviceDataStoreOperations) {
this.serviceDataStoreOperations = serviceDataStoreOperations;
}
LOG.warn("Enable to retrieve service path list");
return;
}
- ServicePathList servicePathList = servicePathListOptional.get();
+ ServicePathList servicePathList = servicePathListOptional.orElseThrow();
for (ServicePaths servicePaths : servicePathList.getServicePaths().values()) {
String serviceName = servicePaths.getServicePathName();
PathDescription pathDescription = servicePaths.getPathDescription();
LOG.error("Couldn't retrieve service");
continue;
}
- Services services = serviceOptional.get();
- OperationResult operationResult1 = null;
+ Services services = serviceOptional.orElseThrow();
State newState;
switch (services.getOperationalState()) {
case InService:
List<ZToA> tpResources = pathDescription.getZToADirection().getZToA().values().stream()
.filter(ele -> ele.getResource().getResource() instanceof TerminationPoint)
.collect(Collectors.toList());
+ List<ZToA> linkResources = pathDescription.getZToADirection().getZToA().values().stream()
+ .filter(ele -> ele.getResource().getResource() instanceof Link)
+ .collect(Collectors.toList());
for (ZToA ztoA : tpResources) {
String ztoAid = ztoA.getId();
State ztoAState = ztoA.getResource().getState();
.setResource(updatedResource)
.build();
newztoaMap.put(updatedZToA.key(), updatedZToA);
+ for (ZToA ztoALink : linkResources) {
+ Link link = (Link)ztoALink.getResource().getResource();
+ if (link.getLinkId().contains(tp.getTpNodeId())
+ && link.getLinkId().contains(tp.getTpId())
+ && ztoALink.getResource().getState() != updatedState) {
+ ZToA updatedZToAlink = new ZToABuilder(ztoALink)
+ .setId(ztoAid)
+ .setResource(new ResourceBuilder()
+ .setResource(link)
+ .setState(updatedState)
+ .build())
+ .build();
+ newztoaMap.put(updatedZToAlink.key(), updatedZToAlink);
+ }
+ }
}
}
return newztoaMap;
List<AToZ> tpResources = pathDescription.getAToZDirection().getAToZ().values().stream()
.filter(ele -> ele.getResource().getResource() instanceof TerminationPoint)
.collect(Collectors.toList());
+ List<AToZ> linkResources = pathDescription.getAToZDirection().getAToZ().values().stream()
+ .filter(ele -> ele.getResource().getResource() instanceof Link)
+ .collect(Collectors.toList());
for (AToZ atoZ : tpResources) {
String atoZid = atoZ.getId();
State atoZState = atoZ.getResource().getState();
.setResource(updatedResource)
.build();
newatozMap.put(updatedAToZ.key(), updatedAToZ);
+ for (AToZ atozLink : linkResources) {
+ Link link = (Link)atozLink.getResource().getResource();
+ if (link.getLinkId().contains(tp.getTpNodeId())
+ && link.getLinkId().contains(tp.getTpId())
+ && atozLink.getResource().getState() != updatedState) {
+ AToZ updatedAToZlink = new AToZBuilder(atozLink)
+ .setId(atoZid)
+ .setResource(new ResourceBuilder()
+ .setResource(link)
+ .setState(updatedState)
+ .build())
+ .build();
+ newatozMap.put(updatedAToZlink.key(), updatedAToZlink);
+ }
+ }
}
}
return newatozMap;
&& topologyUpdateResult.getTopologyChanges().equals(notification.getTopologyChanges());
}
+ @Override
public void setserviceDataStoreOperations(ServiceDataStoreOperations serviceData) {
this.serviceDataStoreOperations = serviceData;
}