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.Link;
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.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;
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;
def test_40_get_service_path_service_2(self):
response = test_utils.get_serv_path_list_attr("service-paths", "service2")
self.assertEqual(response['status_code'], requests.codes.ok)
- index = self.service_path_service_2_AtoZ.index(
+ index1 = self.service_path_service_2_AtoZ.index(
{
'id': '10',
'resource': {
}
}
)
- service_path_expected = self.service_path_service_2_AtoZ[:index] + [{
+ index2 = self.service_path_service_2_AtoZ.index(
+ {
+ 'id': '11',
+ 'resource': {
+ 'state': 'inService',
+ 'link-id': 'ROADM-A1-DEG2-DEG2-TTP-TXRXtoROADM-C1-DEG1-DEG1-TTP-TXRX'
+ }
+ }
+ )
+ service_path_expected = self.service_path_service_2_AtoZ[:index1] + [{
'id': '10',
'resource': {
'state': 'outOfService',
'tp-id': 'DEG2-TTP-TXRX',
'tp-node-id': 'ROADM-A1-DEG2'
}
- }] + self.service_path_service_2_AtoZ[index + 1:]
+ }] + self.service_path_service_2_AtoZ[index1 + 1:index2] + [{
+ 'id': '11',
+ 'resource': {
+ 'state': 'outOfService',
+ 'link-id': 'ROADM-A1-DEG2-DEG2-TTP-TXRXtoROADM-C1-DEG1-DEG1-TTP-TXRX'
+ }
+ }] + self.service_path_service_2_AtoZ[index2 + 1:]
self.assertCountEqual(service_path_expected,
response['service-paths'][0]['path-description']['aToZ-direction']['aToZ'])