revision-date 2020-05-29;
}
+ import org-openroadm-common-state-types {
+ prefix org-openroadm-common-state-types;
+ revision-date 2019-11-29;
+ }
+
organization
"transportPCE";
contact
ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
POSSIBILITY OF SUCH DAMAGE";
+ revision 2020-12-10 {
+ description
+ "Version 1.6.3. To add states in path description elements";
+ }
revision 2020-11-26 {
description
"Version 1.6.2. To manage flexgrid";
}
-
revision 2020-06-29 {
description
"Version 1.6.1. To manage otn services";
}
}
}
+ leaf state {
+ type org-openroadm-common-state-types:state;
+ mandatory true;
+ description "Operational state of pce-resource";
+ }
}
}
org.opendaylight.yang.gen.v1.gnpy.path.rev200909.$YangModuleInfoImpl.getInstance(),
org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev201012
.$YangModuleInfoImpl.getInstance(),
- org.opendaylight.yang.gen.v1.http.org.transportpce.b.c._interface.pathdescription.rev201126
+ org.opendaylight.yang.gen.v1.http.org.transportpce.b.c._interface.pathdescription.rev201210
.$YangModuleInfoImpl.getInstance(),
org.opendaylight.yang.gen.v1.http.org.transportpce.b.c._interface.routing.constraints.rev171017
.$YangModuleInfoImpl.getInstance(),
*/
package org.opendaylight.transportpce.networkmodel.service;
-import org.opendaylight.yang.gen.v1.http.org.transportpce.b.c._interface.pathdescription.rev201126.path.description.AToZDirection;
-import org.opendaylight.yang.gen.v1.http.org.transportpce.b.c._interface.pathdescription.rev201126.path.description.ZToADirection;
+import org.opendaylight.yang.gen.v1.http.org.transportpce.b.c._interface.pathdescription.rev201210.path.description.AToZDirection;
+import org.opendaylight.yang.gen.v1.http.org.transportpce.b.c._interface.pathdescription.rev201210.path.description.ZToADirection;
public interface FrequenciesService {
import org.opendaylight.yang.gen.v1.http.org.openroadm.network.types.rev200529.available.freq.map.AvailFreqMapsBuilder;
import org.opendaylight.yang.gen.v1.http.org.openroadm.network.types.rev200529.available.freq.map.AvailFreqMapsKey;
import org.opendaylight.yang.gen.v1.http.org.openroadm.xponder.rev200529.xpdr.port.connection.attributes.WavelengthBuilder;
-import org.opendaylight.yang.gen.v1.http.org.transportpce.b.c._interface.pathdescription.rev201126.path.description.AToZDirection;
-import org.opendaylight.yang.gen.v1.http.org.transportpce.b.c._interface.pathdescription.rev201126.path.description.ZToADirection;
-import org.opendaylight.yang.gen.v1.http.org.transportpce.b.c._interface.pathdescription.rev201126.path.description.atoz.direction.AToZ;
-import org.opendaylight.yang.gen.v1.http.org.transportpce.b.c._interface.pathdescription.rev201126.path.description.ztoa.direction.ZToA;
-import org.opendaylight.yang.gen.v1.http.org.transportpce.b.c._interface.pathdescription.rev201126.pce.resource.resource.resource.TerminationPoint;
+import org.opendaylight.yang.gen.v1.http.org.transportpce.b.c._interface.pathdescription.rev201210.path.description.AToZDirection;
+import org.opendaylight.yang.gen.v1.http.org.transportpce.b.c._interface.pathdescription.rev201210.path.description.ZToADirection;
+import org.opendaylight.yang.gen.v1.http.org.transportpce.b.c._interface.pathdescription.rev201210.path.description.atoz.direction.AToZ;
+import org.opendaylight.yang.gen.v1.http.org.transportpce.b.c._interface.pathdescription.rev201210.path.description.ztoa.direction.ZToA;
+import org.opendaylight.yang.gen.v1.http.org.transportpce.b.c._interface.pathdescription.rev201210.pce.resource.resource.resource.TerminationPoint;
import org.opendaylight.yangtools.yang.binding.InstanceIdentifier;
import org.opendaylight.yangtools.yang.common.Uint32;
import org.slf4j.Logger;
+++ /dev/null
-package org.opendaylight.yang.gen.v1.http.org.openroadm.syslog.rev161014.syslog.selector.log.selector.selector.facility.log.facility;
-import org.opendaylight.yang.gen.v1.http.org.openroadm.syslog.rev161014.syslog.selector.log.selector.selector.facility.log.facility.LogFacility.Facility;
-
-/**
- * The purpose of generated class in src/main/java for Union types is to create new instances of unions from a string representation.
- * In some cases it is very difficult to automate it since there can be unions such as (uint32 - uint16), or (string - uint32).
- *
- * The reason behind putting it under src/main/java is:
- * This class is generated in form of a stub and needs to be finished by the user. This class is generated only once to prevent
- * loss of user code.
- *
- */
-public class LogFacilityFacilityBuilder {
-
- public static Facility getDefaultInstance(java.lang.String defaultValue) {
- throw new java.lang.UnsupportedOperationException("Not yet implemented");
- }
-
-}
+++ /dev/null
-package org.opendaylight.yang.gen.v1.http.org.openroadm.syslog.rev171215.syslog.selector.log.selector.selector.facility.log.facility;
-import java.lang.String;
-import java.lang.UnsupportedOperationException;
-
-/**
- * The purpose of generated class in src/main/java for Union types is to create new instances of unions from a string representation.
- * In some cases it is very difficult to automate it since there can be unions such as (uint32 - uint16), or (string - uint32).
- *
- * The reason behind putting it under src/main/java is:
- * This class is generated in form of a stub and needs to be finished by the user. This class is generated only once to prevent
- * loss of user code.
- *
- */
-public class LogFacilityFacilityBuilder {
- private LogFacilityFacilityBuilder() {
- //Exists only to defeat instantiation.
- }
-
- public static LogFacility.Facility getDefaultInstance(String defaultValue) {
- throw new UnsupportedOperationException("Not yet implemented");
- }
-
-}
import org.opendaylight.transportpce.pce.networkanalyzer.PceLink;
import org.opendaylight.transportpce.pce.networkanalyzer.PceResult;
import org.opendaylight.yang.gen.v1.http.org.openroadm.common.optical.channel.types.rev200529.FrequencyTHz;
+import org.opendaylight.yang.gen.v1.http.org.openroadm.common.state.types.rev191129.State;
import org.opendaylight.yang.gen.v1.http.org.openroadm.common.types.rev181019.ModulationFormat;
-import org.opendaylight.yang.gen.v1.http.org.transportpce.b.c._interface.pathdescription.rev201126.path.description.AToZDirectionBuilder;
-import org.opendaylight.yang.gen.v1.http.org.transportpce.b.c._interface.pathdescription.rev201126.path.description.ZToADirectionBuilder;
-import org.opendaylight.yang.gen.v1.http.org.transportpce.b.c._interface.pathdescription.rev201126.path.description.atoz.direction.AToZ;
-import org.opendaylight.yang.gen.v1.http.org.transportpce.b.c._interface.pathdescription.rev201126.path.description.atoz.direction.AToZBuilder;
-import org.opendaylight.yang.gen.v1.http.org.transportpce.b.c._interface.pathdescription.rev201126.path.description.atoz.direction.AToZKey;
-import org.opendaylight.yang.gen.v1.http.org.transportpce.b.c._interface.pathdescription.rev201126.path.description.ztoa.direction.ZToA;
-import org.opendaylight.yang.gen.v1.http.org.transportpce.b.c._interface.pathdescription.rev201126.path.description.ztoa.direction.ZToABuilder;
-import org.opendaylight.yang.gen.v1.http.org.transportpce.b.c._interface.pathdescription.rev201126.path.description.ztoa.direction.ZToAKey;
-import org.opendaylight.yang.gen.v1.http.org.transportpce.b.c._interface.pathdescription.rev201126.pce.resource.Resource;
-import org.opendaylight.yang.gen.v1.http.org.transportpce.b.c._interface.pathdescription.rev201126.pce.resource.ResourceBuilder;
-import org.opendaylight.yang.gen.v1.http.org.transportpce.b.c._interface.pathdescription.rev201126.pce.resource.resource.resource.LinkBuilder;
-import org.opendaylight.yang.gen.v1.http.org.transportpce.b.c._interface.pathdescription.rev201126.pce.resource.resource.resource.NodeBuilder;
-import org.opendaylight.yang.gen.v1.http.org.transportpce.b.c._interface.pathdescription.rev201126.pce.resource.resource.resource.TerminationPoint;
-import org.opendaylight.yang.gen.v1.http.org.transportpce.b.c._interface.pathdescription.rev201126.pce.resource.resource.resource.TerminationPointBuilder;
+import org.opendaylight.yang.gen.v1.http.org.transportpce.b.c._interface.pathdescription.rev201210.path.description.AToZDirectionBuilder;
+import org.opendaylight.yang.gen.v1.http.org.transportpce.b.c._interface.pathdescription.rev201210.path.description.ZToADirectionBuilder;
+import org.opendaylight.yang.gen.v1.http.org.transportpce.b.c._interface.pathdescription.rev201210.path.description.atoz.direction.AToZ;
+import org.opendaylight.yang.gen.v1.http.org.transportpce.b.c._interface.pathdescription.rev201210.path.description.atoz.direction.AToZBuilder;
+import org.opendaylight.yang.gen.v1.http.org.transportpce.b.c._interface.pathdescription.rev201210.path.description.atoz.direction.AToZKey;
+import org.opendaylight.yang.gen.v1.http.org.transportpce.b.c._interface.pathdescription.rev201210.path.description.ztoa.direction.ZToA;
+import org.opendaylight.yang.gen.v1.http.org.transportpce.b.c._interface.pathdescription.rev201210.path.description.ztoa.direction.ZToABuilder;
+import org.opendaylight.yang.gen.v1.http.org.transportpce.b.c._interface.pathdescription.rev201210.path.description.ztoa.direction.ZToAKey;
+import org.opendaylight.yang.gen.v1.http.org.transportpce.b.c._interface.pathdescription.rev201210.pce.resource.Resource;
+import org.opendaylight.yang.gen.v1.http.org.transportpce.b.c._interface.pathdescription.rev201210.pce.resource.ResourceBuilder;
+import org.opendaylight.yang.gen.v1.http.org.transportpce.b.c._interface.pathdescription.rev201210.pce.resource.resource.resource.LinkBuilder;
+import org.opendaylight.yang.gen.v1.http.org.transportpce.b.c._interface.pathdescription.rev201210.pce.resource.resource.resource.NodeBuilder;
+import org.opendaylight.yang.gen.v1.http.org.transportpce.b.c._interface.pathdescription.rev201210.pce.resource.resource.resource.TerminationPoint;
+import org.opendaylight.yang.gen.v1.http.org.transportpce.b.c._interface.pathdescription.rev201210.pce.resource.resource.resource.TerminationPointBuilder;
import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.network.topology.rev180226.LinkId;
import org.opendaylight.yangtools.yang.common.Uint16;
import org.opendaylight.yangtools.yang.common.Uint32;
.build();
AToZKey clientKey = new AToZKey(index.toString());
- Resource clientResource = new ResourceBuilder().setResource(stp).build();
+ Resource clientResource = new ResourceBuilder().setResource(stp).setState(State.InService).build();
AToZ firstResource = new AToZBuilder().setId(tpName).withKey(clientKey).setResource(clientResource).build();
atozMap.put(firstResource.key(),firstResource);
index += 1;
for (PceLink pcelink : path) {
String srcName = pcelink.getSourceId().getValue();
// Nodes
- org.opendaylight.yang.gen.v1.http.org.transportpce.b.c._interface.pathdescription.rev201126.pce
+ org.opendaylight.yang.gen.v1.http.org.transportpce.b.c._interface.pathdescription.rev201210.pce
.resource.resource.resource.Node sourceNode = new NodeBuilder()
.setNodeId(srcName)
.build();
// Source Resource
AToZKey sourceKey = new AToZKey(index.toString());
- Resource nodeResource1 = new ResourceBuilder().setResource(sourceNode).build();
+ Resource nodeResource1 = new ResourceBuilder().setResource(sourceNode).setState(State.InService).build();
AToZ srcResource = new AToZBuilder().setId(srcName).withKey(sourceKey).setResource(nodeResource1).build();
index += 1;
atozMap.put(srcResource.key(),srcResource);
// Resource
AToZKey srcTPKey = new AToZKey(index.toString());
- Resource tpResource1 = new ResourceBuilder().setResource(stp).build();
+ Resource tpResource1 = new ResourceBuilder().setResource(stp).setState(State.InService).build();
AToZ stpResource = new AToZBuilder().setId(tpName).withKey(srcTPKey).setResource(tpResource1).build();
index += 1;
atozMap.put(stpResource.key(),stpResource);
String linkName = pcelink.getLinkId().getValue();
// Link
- org.opendaylight.yang.gen.v1.http.org.transportpce.b.c._interface.pathdescription.rev201126.pce
+ org.opendaylight.yang.gen.v1.http.org.transportpce.b.c._interface.pathdescription.rev201210.pce
.resource.resource.resource.Link atozLink = new LinkBuilder()
.setLinkId(linkName)
.build();
// Link Resource
AToZKey linkKey = new AToZKey(index.toString());
- Resource nodeResource2 = new ResourceBuilder().setResource(atozLink).build();
+ Resource nodeResource2 = new ResourceBuilder().setResource(atozLink).setState(pcelink.getState()).build();
AToZ linkResource = new AToZBuilder().setId(linkName).withKey(linkKey).setResource(nodeResource2).build();
index += 1;
atozMap.put(linkResource.key(),linkResource);
// Resource
AToZKey destTPKey = new AToZKey(index.toString());
- Resource tpResource2 = new ResourceBuilder().setResource(dtp).build();
+ Resource tpResource2 = new ResourceBuilder().setResource(dtp).setState(State.InService).build();
AToZ ttpResource = new AToZBuilder().setId(tpName).withKey(destTPKey).setResource(tpResource2).build();
index += 1;
atozMap.put(ttpResource.key(),ttpResource);
- org.opendaylight.yang.gen.v1.http.org.transportpce.b.c._interface.pathdescription.rev201126.pce
+ org.opendaylight.yang.gen.v1.http.org.transportpce.b.c._interface.pathdescription.rev201210.pce
.resource.resource.resource.Node targetNode = new NodeBuilder()
.setNodeId(destName)
.build();
// Target Resource
AToZKey targetKey = new AToZKey(index.toString());
- Resource nodeResource3 = new ResourceBuilder().setResource(targetNode).build();
+ Resource nodeResource3 = new ResourceBuilder().setResource(targetNode).setState(State.InService).build();
lastResource = new AToZBuilder().setId(destName).withKey(targetKey).setResource(nodeResource3).build();
lastLink = pcelink;
index += 1;
clientKey = new AToZKey(index.toString());
- clientResource = new ResourceBuilder().setResource(stp).build();
+ clientResource = new ResourceBuilder().setResource(stp).setState(State.InService).build();
lastResource = new AToZBuilder().setId(tpName).withKey(clientKey).setResource(clientResource).build();
atozMap.put(lastResource.key(),lastResource);
.build();
ZToAKey clientKey = new ZToAKey(index.toString());
- Resource clientResource = new ResourceBuilder().setResource(stp).build();
+ Resource clientResource = new ResourceBuilder().setResource(stp).setState(State.InService).build();
ZToA firstResource = new ZToABuilder().setId(tpName).withKey(clientKey).setResource(clientResource).build();
ztoaList.put(firstResource.key(),firstResource);
index += 1;
// Nodes
- org.opendaylight.yang.gen.v1.http.org.transportpce.b.c._interface.pathdescription.rev201126.pce
+ org.opendaylight.yang.gen.v1.http.org.transportpce.b.c._interface.pathdescription.rev201210.pce
.resource.resource.resource.Node sourceNode = new NodeBuilder()
.setNodeId(srcName).build();
// Source Resource
ZToAKey sourceKey = new ZToAKey(index.toString());
- Resource nodeResource1 = new ResourceBuilder().setResource(sourceNode).build();
+ Resource nodeResource1 = new ResourceBuilder().setResource(sourceNode).setState(State.InService).build();
ZToA srcResource = new ZToABuilder().setId(srcName).withKey(sourceKey).setResource(nodeResource1).build();
index += 1;
ztoaList.put(srcResource.key(),srcResource);
// Resource
ZToAKey srcTPKey = new ZToAKey(index.toString());
- Resource tpResource1 = new ResourceBuilder().setResource(stp).build();
+ Resource tpResource1 = new ResourceBuilder().setResource(stp).setState(State.InService).build();
ZToA stpResource = new ZToABuilder().setId(tpName).withKey(srcTPKey).setResource(tpResource1).build();
index += 1;
ztoaList.put(stpResource.key(),stpResource);
String linkName = pcelink.getLinkId().getValue();
// Link
- org.opendaylight.yang.gen.v1.http.org.transportpce.b.c._interface.pathdescription.rev201126.pce
+ org.opendaylight.yang.gen.v1.http.org.transportpce.b.c._interface.pathdescription.rev201210.pce
.resource.resource.resource.Link ztoaLink = new LinkBuilder()
.setLinkId(linkName).build();
// Link Resource
ZToAKey linkKey = new ZToAKey(index.toString());
- Resource nodeResource2 = new ResourceBuilder().setResource(ztoaLink).build();
+ Resource nodeResource2 = new ResourceBuilder().setResource(ztoaLink).setState(State.InService).build();
ZToA linkResource = new ZToABuilder().setId(linkName).withKey(linkKey).setResource(nodeResource2).build();
index += 1;
ztoaList.put(linkResource.key(),linkResource);
// Resource
ZToAKey destTPKey = new ZToAKey(index.toString());
- Resource tpResource2 = new ResourceBuilder().setResource(ttp).build();
+ Resource tpResource2 = new ResourceBuilder().setResource(ttp).setState(State.InService).build();
ZToA ttpResource = new ZToABuilder().setId(tpName).withKey(destTPKey).setResource(tpResource2).build();
index += 1;
ztoaList.put(ttpResource.key(),ttpResource);
- org.opendaylight.yang.gen.v1.http.org.transportpce.b.c._interface.pathdescription.rev201126.pce
+ org.opendaylight.yang.gen.v1.http.org.transportpce.b.c._interface.pathdescription.rev201210.pce
.resource.resource.resource.Node targetNode = new NodeBuilder()
.setNodeId(destName).build();
// Target Resource
ZToAKey targetKey = new ZToAKey(index.toString());
- Resource nodeResource3 = new ResourceBuilder().setResource(targetNode).build();
+ Resource nodeResource3 = new ResourceBuilder().setResource(targetNode).setState(State.InService).build();
lastResource = new ZToABuilder().setId(destName).withKey(targetKey).setResource(nodeResource3).build();
lastLink = pcelink;
index += 1;
clientKey = new ZToAKey(index.toString());
- clientResource = new ResourceBuilder().setResource(stp).build();
+ clientResource = new ResourceBuilder().setResource(stp).setState(State.InService).build();
lastResource = new ZToABuilder().setId(tpName).withKey(clientKey).setResource(clientResource).build();
ztoaList.put(lastResource.key(),lastResource);
}
import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.pce.rev200128.PathComputationRequestInput;
import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.pce.rev200128.PathComputationRequestInputBuilder;
import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.pce.rev200128.service.path.rpc.result.PathDescriptionBuilder;
-import org.opendaylight.yang.gen.v1.http.org.transportpce.b.c._interface.pathdescription.rev201126.path.description.AToZDirection;
-import org.opendaylight.yang.gen.v1.http.org.transportpce.b.c._interface.pathdescription.rev201126.path.description.ZToADirection;
+import org.opendaylight.yang.gen.v1.http.org.transportpce.b.c._interface.pathdescription.rev201210.path.description.AToZDirection;
+import org.opendaylight.yang.gen.v1.http.org.transportpce.b.c._interface.pathdescription.rev201210.path.description.ZToADirection;
import org.opendaylight.yang.gen.v1.http.org.transportpce.b.c._interface.routing.constraints.rev171017.RoutingConstraintsSp.PceMetric;
import org.opendaylight.yang.gen.v1.http.org.transportpce.b.c._interface.routing.constraints.rev171017.routing.constraints.sp.HardConstraints;
import org.slf4j.Logger;
import org.opendaylight.transportpce.common.Timeouts;
import org.opendaylight.transportpce.common.network.NetworkTransactionService;
import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.pce.rev200128.PathComputationRequestInput;
-import org.opendaylight.yang.gen.v1.http.org.transportpce.b.c._interface.pathdescription.rev201126.PathDescription;
-import org.opendaylight.yang.gen.v1.http.org.transportpce.b.c._interface.pathdescription.rev201126.path.description.atoz.direction.AToZ;
-import org.opendaylight.yang.gen.v1.http.org.transportpce.b.c._interface.pathdescription.rev201126.pce.resource.resource.resource.Link;
-import org.opendaylight.yang.gen.v1.http.org.transportpce.b.c._interface.pathdescription.rev201126.pce.resource.resource.resource.Node;
+import org.opendaylight.yang.gen.v1.http.org.transportpce.b.c._interface.pathdescription.rev201210.PathDescription;
+import org.opendaylight.yang.gen.v1.http.org.transportpce.b.c._interface.pathdescription.rev201210.path.description.atoz.direction.AToZ;
+import org.opendaylight.yang.gen.v1.http.org.transportpce.b.c._interface.pathdescription.rev201210.pce.resource.resource.resource.Link;
+import org.opendaylight.yang.gen.v1.http.org.transportpce.b.c._interface.pathdescription.rev201210.pce.resource.resource.resource.Node;
import org.opendaylight.yang.gen.v1.http.org.transportpce.b.c._interface.routing.constraints.rev171017.RoutingConstraintsSp.PceMetric;
import org.opendaylight.yang.gen.v1.http.org.transportpce.b.c._interface.routing.constraints.rev171017.constraints.sp.CoRoutingOrGeneral;
import org.opendaylight.yang.gen.v1.http.org.transportpce.b.c._interface.routing.constraints.rev171017.constraints.sp.co.routing.or.general.CoRouting;
import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.pce.rev200128.PathComputationRequestInput;
import org.opendaylight.yang.gen.v1.http.org.openroadm.common.optical.channel.types.rev200529.FrequencyTHz;
import org.opendaylight.yang.gen.v1.http.org.openroadm.common.types.rev181019.ModulationFormat;
-import org.opendaylight.yang.gen.v1.http.org.transportpce.b.c._interface.pathdescription.rev201126.path.description.AToZDirection;
-import org.opendaylight.yang.gen.v1.http.org.transportpce.b.c._interface.pathdescription.rev201126.path.description.ZToADirection;
-import org.opendaylight.yang.gen.v1.http.org.transportpce.b.c._interface.pathdescription.rev201126.path.description.atoz.direction.AToZ;
-import org.opendaylight.yang.gen.v1.http.org.transportpce.b.c._interface.pathdescription.rev201126.path.description.ztoa.direction.ZToA;
-import org.opendaylight.yang.gen.v1.http.org.transportpce.b.c._interface.pathdescription.rev201126.pce.resource.resource.Resource;
+import org.opendaylight.yang.gen.v1.http.org.transportpce.b.c._interface.pathdescription.rev201210.path.description.AToZDirection;
+import org.opendaylight.yang.gen.v1.http.org.transportpce.b.c._interface.pathdescription.rev201210.path.description.ZToADirection;
+import org.opendaylight.yang.gen.v1.http.org.transportpce.b.c._interface.pathdescription.rev201210.path.description.atoz.direction.AToZ;
+import org.opendaylight.yang.gen.v1.http.org.transportpce.b.c._interface.pathdescription.rev201210.path.description.ztoa.direction.ZToA;
+import org.opendaylight.yang.gen.v1.http.org.transportpce.b.c._interface.pathdescription.rev201210.pce.resource.resource.Resource;
import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev130715.IpAddress;
import org.opendaylight.yangtools.yang.common.Uint32;
import org.slf4j.Logger;
Long idx = index;
if (resource
instanceof
- org.opendaylight.yang.gen.v1.http.org.transportpce.b.c._interface.pathdescription.rev201126
+ org.opendaylight.yang.gen.v1.http.org.transportpce.b.c._interface.pathdescription.rev201210
.pce.resource.resource.resource.Node) {
- org.opendaylight.yang.gen.v1.http.org.transportpce.b.c._interface.pathdescription.rev201126
+ org.opendaylight.yang.gen.v1.http.org.transportpce.b.c._interface.pathdescription.rev201210
.pce.resource.resource.resource.Node node =
- (org.opendaylight.yang.gen.v1.http.org.transportpce.b.c._interface.pathdescription.rev201126
+ (org.opendaylight.yang.gen.v1.http.org.transportpce.b.c._interface.pathdescription.rev201210
.pce.resource.resource.resource.Node) resource;
if (node.getNodeId() == null) {
throw new GnpyException("In gnpyServiceImpl: nodeId is null");
if (resource
instanceof
- org.opendaylight.yang.gen.v1.http.org.transportpce.b.c._interface.pathdescription.rev201126
+ org.opendaylight.yang.gen.v1.http.org.transportpce.b.c._interface.pathdescription.rev201210
.pce.resource.resource.resource.Link) {
- org.opendaylight.yang.gen.v1.http.org.transportpce.b.c._interface.pathdescription.rev201126
+ org.opendaylight.yang.gen.v1.http.org.transportpce.b.c._interface.pathdescription.rev201210
.pce.resource.resource.resource.Link link =
- (org.opendaylight.yang.gen.v1.http.org.transportpce.b.c._interface.pathdescription.rev201126
+ (org.opendaylight.yang.gen.v1.http.org.transportpce.b.c._interface.pathdescription.rev201210
.pce.resource.resource.resource.Link) resource;
idx = addLinkToRouteObject(link.getLinkId(),idx);
}
import org.opendaylight.yang.gen.v1.gnpy.path.rev200909.service.PathRequest;
import org.opendaylight.yang.gen.v1.gnpy.path.rev200909.synchronization.info.Synchronization;
import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.pce.rev200128.PathComputationRequestInput;
-import org.opendaylight.yang.gen.v1.http.org.transportpce.b.c._interface.pathdescription.rev201126.path.description.AToZDirection;
-import org.opendaylight.yang.gen.v1.http.org.transportpce.b.c._interface.pathdescription.rev201126.path.description.AToZDirectionBuilder;
-import org.opendaylight.yang.gen.v1.http.org.transportpce.b.c._interface.pathdescription.rev201126.path.description.ZToADirection;
+import org.opendaylight.yang.gen.v1.http.org.transportpce.b.c._interface.pathdescription.rev201210.path.description.AToZDirection;
+import org.opendaylight.yang.gen.v1.http.org.transportpce.b.c._interface.pathdescription.rev201210.path.description.AToZDirectionBuilder;
+import org.opendaylight.yang.gen.v1.http.org.transportpce.b.c._interface.pathdescription.rev201210.path.description.ZToADirection;
import org.opendaylight.yang.gen.v1.http.org.transportpce.b.c._interface.routing.constraints.rev171017.routing.constraints.sp.HardConstraints;
import org.opendaylight.yangtools.yang.binding.InstanceIdentifier;
import org.opendaylight.yangtools.yang.common.Uint32;
import java.io.Serializable;
import java.util.Comparator;
-import org.opendaylight.yang.gen.v1.http.org.transportpce.b.c._interface.pathdescription.rev201126.path.description.atoz.direction.AToZ;
+import org.opendaylight.yang.gen.v1.http.org.transportpce.b.c._interface.pathdescription.rev201210.path.description.atoz.direction.AToZ;
@edu.umd.cs.findbugs.annotations.SuppressFBWarnings(
value = "SE_NO_SERIALVERSIONID",
import java.io.Serializable;
import java.util.Comparator;
-import org.opendaylight.yang.gen.v1.http.org.transportpce.b.c._interface.pathdescription.rev201126.path.description.ztoa.direction.ZToA;
+import org.opendaylight.yang.gen.v1.http.org.transportpce.b.c._interface.pathdescription.rev201210.path.description.ztoa.direction.ZToA;
@edu.umd.cs.findbugs.annotations.SuppressFBWarnings(
value = "SE_NO_SERIALVERSIONID",
import org.opendaylight.transportpce.common.ResponseCodes;
import org.opendaylight.transportpce.common.fixedflex.GridConstant;
import org.opendaylight.yang.gen.v1.http.org.openroadm.service.format.rev190531.ServiceFormat;
-import org.opendaylight.yang.gen.v1.http.org.transportpce.b.c._interface.pathdescription.rev201126.path.description.AToZDirection;
-import org.opendaylight.yang.gen.v1.http.org.transportpce.b.c._interface.pathdescription.rev201126.path.description.ZToADirection;
+import org.opendaylight.yang.gen.v1.http.org.transportpce.b.c._interface.pathdescription.rev201210.path.description.AToZDirection;
+import org.opendaylight.yang.gen.v1.http.org.transportpce.b.c._interface.pathdescription.rev201210.path.description.ZToADirection;
import org.opendaylight.yangtools.yang.common.Uint16;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.pce.rev200128.service.path.rpc.result.PathDescription;
import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.pce.rev200128.service.path.rpc.result.PathDescriptionBuilder;
import org.opendaylight.yang.gen.v1.http.org.openroadm.common.service.types.rev190531.configuration.response.common.ConfigurationResponseCommonBuilder;
-import org.opendaylight.yang.gen.v1.http.org.transportpce.b.c._interface.pathdescription.rev201126.path.description.AToZDirection;
-import org.opendaylight.yang.gen.v1.http.org.transportpce.b.c._interface.pathdescription.rev201126.path.description.ZToADirection;
+import org.opendaylight.yang.gen.v1.http.org.transportpce.b.c._interface.pathdescription.rev201210.path.description.AToZDirection;
+import org.opendaylight.yang.gen.v1.http.org.transportpce.b.c._interface.pathdescription.rev201210.path.description.ZToADirection;
import org.opendaylight.yang.gen.v1.http.org.transportpce.b.c._interface.service.types.rev200128.RpcStatusEx;
import org.opendaylight.yang.gen.v1.http.org.transportpce.b.c._interface.service.types.rev200128.ServicePathNotificationTypes;
import org.opendaylight.yang.gen.v1.http.org.transportpce.b.c._interface.service.types.rev200128.response.parameters.sp.ResponseParametersBuilder;
AToZDirection atoz = pathDescription.getAToZDirection();
if ((atoz != null) && (atoz.getAToZ() != null)) {
LOG.debug("Impl AtoZ Notification: [{}] elements in description", atoz.getAToZ().size());
- for (org.opendaylight.yang.gen.v1.http.org.transportpce.b.c._interface.pathdescription.rev201126
+ for (org.opendaylight.yang.gen.v1.http.org.transportpce.b.c._interface.pathdescription.rev201210
.path.description.atoz.direction.AToZKey key : atoz.getAToZ().keySet()) {
LOG.debug("Impl AtoZ Notification: [{}] {}", key, atoz.getAToZ().get(key));
}
ZToADirection ztoa = pathDescription.getZToADirection();
if ((ztoa != null) && (ztoa.getZToA() != null)) {
LOG.debug("Impl ZtoA Notification: [{}] elements in description", ztoa.getZToA().size());
- for (org.opendaylight.yang.gen.v1.http.org.transportpce.b.c._interface.pathdescription.rev201126
+ for (org.opendaylight.yang.gen.v1.http.org.transportpce.b.c._interface.pathdescription.rev201210
.path.description.ztoa.direction.ZToAKey key : ztoa.getZToA().keySet()) {
LOG.debug("Impl ZtoA Notification: [{}] {}", key, ztoa.getZToA().get(key));
}
import org.opendaylight.transportpce.pce.utils.JsonUtil;
import org.opendaylight.transportpce.pce.utils.PceTestData;
import org.opendaylight.transportpce.test.AbstractTest;
-import org.opendaylight.yang.gen.v1.http.org.transportpce.b.c._interface.pathdescription.rev201126.path.description.AToZDirectionBuilder;
-import org.opendaylight.yang.gen.v1.http.org.transportpce.b.c._interface.pathdescription.rev201126.path.description.ZToADirectionBuilder;
-import org.opendaylight.yang.gen.v1.http.org.transportpce.b.c._interface.pathdescription.rev201126.path.description.atoz.direction.AToZ;
-import org.opendaylight.yang.gen.v1.http.org.transportpce.b.c._interface.pathdescription.rev201126.path.description.atoz.direction.AToZBuilder;
-import org.opendaylight.yang.gen.v1.http.org.transportpce.b.c._interface.pathdescription.rev201126.path.description.atoz.direction.AToZKey;
-import org.opendaylight.yang.gen.v1.http.org.transportpce.b.c._interface.pathdescription.rev201126.path.description.ztoa.direction.ZToA;
-import org.opendaylight.yang.gen.v1.http.org.transportpce.b.c._interface.pathdescription.rev201126.path.description.ztoa.direction.ZToABuilder;
-import org.opendaylight.yang.gen.v1.http.org.transportpce.b.c._interface.pathdescription.rev201126.path.description.ztoa.direction.ZToAKey;
-import org.opendaylight.yang.gen.v1.http.org.transportpce.b.c._interface.pathdescription.rev201126.pce.resource.Resource;
-import org.opendaylight.yang.gen.v1.http.org.transportpce.b.c._interface.pathdescription.rev201126.pce.resource.ResourceBuilder;
-import org.opendaylight.yang.gen.v1.http.org.transportpce.b.c._interface.pathdescription.rev201126.pce.resource.resource.resource.TerminationPoint;
-import org.opendaylight.yang.gen.v1.http.org.transportpce.b.c._interface.pathdescription.rev201126.pce.resource.resource.resource.TerminationPointBuilder;
+import org.opendaylight.yang.gen.v1.http.org.transportpce.b.c._interface.pathdescription.rev201210.path.description.AToZDirectionBuilder;
+import org.opendaylight.yang.gen.v1.http.org.transportpce.b.c._interface.pathdescription.rev201210.path.description.ZToADirectionBuilder;
+import org.opendaylight.yang.gen.v1.http.org.transportpce.b.c._interface.pathdescription.rev201210.path.description.atoz.direction.AToZ;
+import org.opendaylight.yang.gen.v1.http.org.transportpce.b.c._interface.pathdescription.rev201210.path.description.atoz.direction.AToZBuilder;
+import org.opendaylight.yang.gen.v1.http.org.transportpce.b.c._interface.pathdescription.rev201210.path.description.atoz.direction.AToZKey;
+import org.opendaylight.yang.gen.v1.http.org.transportpce.b.c._interface.pathdescription.rev201210.path.description.ztoa.direction.ZToA;
+import org.opendaylight.yang.gen.v1.http.org.transportpce.b.c._interface.pathdescription.rev201210.path.description.ztoa.direction.ZToABuilder;
+import org.opendaylight.yang.gen.v1.http.org.transportpce.b.c._interface.pathdescription.rev201210.path.description.ztoa.direction.ZToAKey;
+import org.opendaylight.yang.gen.v1.http.org.transportpce.b.c._interface.pathdescription.rev201210.pce.resource.Resource;
+import org.opendaylight.yang.gen.v1.http.org.transportpce.b.c._interface.pathdescription.rev201210.pce.resource.ResourceBuilder;
+import org.opendaylight.yang.gen.v1.http.org.transportpce.b.c._interface.pathdescription.rev201210.pce.resource.resource.resource.TerminationPoint;
+import org.opendaylight.yang.gen.v1.http.org.transportpce.b.c._interface.pathdescription.rev201210.pce.resource.resource.resource.TerminationPointBuilder;
import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.network.rev180226.NetworkId;
import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.network.rev180226.Networks;
import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.network.rev180226.networks.Network;
import org.opendaylight.yang.gen.v1.http.org.openroadm.service.format.rev190531.ServiceFormat;
import org.opendaylight.yang.gen.v1.http.org.openroadm.service.rev190531.ServiceCreateInput;
import org.opendaylight.yang.gen.v1.http.org.openroadm.service.rev190531.ServiceCreateInputBuilder;
-import org.opendaylight.yang.gen.v1.http.org.transportpce.b.c._interface.pathdescription.rev201126.path.description.AToZDirection;
-import org.opendaylight.yang.gen.v1.http.org.transportpce.b.c._interface.pathdescription.rev201126.path.description.AToZDirectionBuilder;
-import org.opendaylight.yang.gen.v1.http.org.transportpce.b.c._interface.pathdescription.rev201126.path.description.ZToADirection;
-import org.opendaylight.yang.gen.v1.http.org.transportpce.b.c._interface.pathdescription.rev201126.path.description.ZToADirectionBuilder;
+import org.opendaylight.yang.gen.v1.http.org.transportpce.b.c._interface.pathdescription.rev201210.path.description.AToZDirection;
+import org.opendaylight.yang.gen.v1.http.org.transportpce.b.c._interface.pathdescription.rev201210.path.description.AToZDirectionBuilder;
+import org.opendaylight.yang.gen.v1.http.org.transportpce.b.c._interface.pathdescription.rev201210.path.description.ZToADirection;
+import org.opendaylight.yang.gen.v1.http.org.transportpce.b.c._interface.pathdescription.rev201210.path.description.ZToADirectionBuilder;
import org.opendaylight.yang.gen.v1.http.org.transportpce.b.c._interface.routing.constraints.rev171017.RoutingConstraintsSp.PceMetric;
import org.opendaylight.yang.gen.v1.http.org.transportpce.b.c._interface.routing.constraints.rev171017.constraints.sp.co.routing.or.general.CoRoutingBuilder;
import org.opendaylight.yang.gen.v1.http.org.transportpce.b.c._interface.routing.constraints.rev171017.constraints.sp.co.routing.or.general.GeneralBuilder;
import org.opendaylight.transportpce.test.converter.DataObjectConverter;
import org.opendaylight.transportpce.test.converter.XMLDataObjectConverter;
import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.pce.rev200128.PathComputationRequestOutput;
-import org.opendaylight.yang.gen.v1.http.org.transportpce.b.c._interface.pathdescription.rev201126.path.description.atoz.direction.AToZ;
-import org.opendaylight.yang.gen.v1.http.org.transportpce.b.c._interface.pathdescription.rev201126.path.description.atoz.direction.AToZKey;
-import org.opendaylight.yang.gen.v1.http.org.transportpce.b.c._interface.pathdescription.rev201126.pce.resource.resource.resource.Node;
+import org.opendaylight.yang.gen.v1.http.org.transportpce.b.c._interface.pathdescription.rev201210.path.description.atoz.direction.AToZ;
+import org.opendaylight.yang.gen.v1.http.org.transportpce.b.c._interface.pathdescription.rev201210.path.description.atoz.direction.AToZKey;
+import org.opendaylight.yang.gen.v1.http.org.transportpce.b.c._interface.pathdescription.rev201210.pce.resource.resource.resource.Node;
import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.network.rev180226.NetworkId;
import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.network.rev180226.Networks;
import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.network.rev180226.networks.Network;
import org.opendaylight.yang.gen.v1.http.org.openroadm.common.types.rev181019.FrequencyTHz;
import org.opendaylight.yang.gen.v1.http.org.openroadm.common.types.rev181019.ModulationFormat;
import org.opendaylight.yang.gen.v1.http.org.openroadm.service.rev190531.ServiceDeleteInput;
-import org.opendaylight.yang.gen.v1.http.org.transportpce.b.c._interface.pathdescription.rev201126.PathDescription;
-import org.opendaylight.yang.gen.v1.http.org.transportpce.b.c._interface.pathdescription.rev201126.path.description.AToZDirection;
-import org.opendaylight.yang.gen.v1.http.org.transportpce.b.c._interface.pathdescription.rev201126.path.description.ZToADirection;
-import org.opendaylight.yang.gen.v1.http.org.transportpce.b.c._interface.pathdescription.rev201126.path.description.atoz.direction.AToZ;
-import org.opendaylight.yang.gen.v1.http.org.transportpce.b.c._interface.pathdescription.rev201126.path.description.ztoa.direction.ZToA;
-import org.opendaylight.yang.gen.v1.http.org.transportpce.b.c._interface.pathdescription.rev201126.pce.resource.resource.resource.TerminationPoint;
+import org.opendaylight.yang.gen.v1.http.org.transportpce.b.c._interface.pathdescription.rev201210.PathDescription;
+import org.opendaylight.yang.gen.v1.http.org.transportpce.b.c._interface.pathdescription.rev201210.path.description.AToZDirection;
+import org.opendaylight.yang.gen.v1.http.org.transportpce.b.c._interface.pathdescription.rev201210.path.description.ZToADirection;
+import org.opendaylight.yang.gen.v1.http.org.transportpce.b.c._interface.pathdescription.rev201210.path.description.atoz.direction.AToZ;
+import org.opendaylight.yang.gen.v1.http.org.transportpce.b.c._interface.pathdescription.rev201210.path.description.ztoa.direction.ZToA;
+import org.opendaylight.yang.gen.v1.http.org.transportpce.b.c._interface.pathdescription.rev201210.pce.resource.resource.resource.TerminationPoint;
import org.opendaylight.yang.gen.v1.http.org.transportpce.common.types.rev201211.olm.renderer.input.Nodes;
import org.opendaylight.yang.gen.v1.http.org.transportpce.common.types.rev201211.olm.renderer.input.NodesBuilder;
import org.opendaylight.yang.gen.v1.http.org.transportpce.common.types.rev201211.olm.renderer.input.NodesKey;
import org.opendaylight.yang.gen.v1.http.org.openroadm.resource.types.rev161014.ResourceTypeEnum;
import org.opendaylight.yang.gen.v1.http.org.openroadm.service.format.rev190531.ServiceFormat;
import org.opendaylight.yang.gen.v1.http.org.openroadm.service.rev190531.service.list.Services;
-import org.opendaylight.yang.gen.v1.http.org.transportpce.b.c._interface.pathdescription.rev201126.PathDescription;
+import org.opendaylight.yang.gen.v1.http.org.transportpce.b.c._interface.pathdescription.rev201210.PathDescription;
import org.opendaylight.yang.gen.v1.http.org.transportpce.b.c._interface.service.types.rev200128.RpcStatusEx;
import org.opendaylight.yang.gen.v1.http.org.transportpce.b.c._interface.service.types.rev200128.ServicePathNotificationTypes;
import org.opendaylight.yang.gen.v1.http.org.transportpce.b.c._interface.servicepath.rev171017.ServicePathList;
import org.opendaylight.yang.gen.v1.http.org.openroadm.common.service.types.rev190531.ConnectionType;
import org.opendaylight.yang.gen.v1.http.org.openroadm.common.service.types.rev190531.service.port.PortBuilder;
import org.opendaylight.yang.gen.v1.http.org.openroadm.service.format.rev190531.ServiceFormat;
-import org.opendaylight.yang.gen.v1.http.org.transportpce.b.c._interface.pathdescription.rev201126.path.description.AToZDirection;
-import org.opendaylight.yang.gen.v1.http.org.transportpce.b.c._interface.pathdescription.rev201126.path.description.AToZDirectionBuilder;
-import org.opendaylight.yang.gen.v1.http.org.transportpce.b.c._interface.pathdescription.rev201126.path.description.ZToADirection;
-import org.opendaylight.yang.gen.v1.http.org.transportpce.b.c._interface.pathdescription.rev201126.path.description.ZToADirectionBuilder;
-import org.opendaylight.yang.gen.v1.http.org.transportpce.b.c._interface.pathdescription.rev201126.path.description.atoz.direction.AToZ;
-import org.opendaylight.yang.gen.v1.http.org.transportpce.b.c._interface.pathdescription.rev201126.path.description.atoz.direction.AToZBuilder;
-import org.opendaylight.yang.gen.v1.http.org.transportpce.b.c._interface.pathdescription.rev201126.path.description.atoz.direction.AToZKey;
-import org.opendaylight.yang.gen.v1.http.org.transportpce.b.c._interface.pathdescription.rev201126.path.description.ztoa.direction.ZToA;
-import org.opendaylight.yang.gen.v1.http.org.transportpce.b.c._interface.pathdescription.rev201126.path.description.ztoa.direction.ZToABuilder;
-import org.opendaylight.yang.gen.v1.http.org.transportpce.b.c._interface.pathdescription.rev201126.path.description.ztoa.direction.ZToAKey;
-import org.opendaylight.yang.gen.v1.http.org.transportpce.b.c._interface.pathdescription.rev201126.pce.resource.ResourceBuilder;
-import org.opendaylight.yang.gen.v1.http.org.transportpce.b.c._interface.pathdescription.rev201126.pce.resource.resource.resource.Link;
-import org.opendaylight.yang.gen.v1.http.org.transportpce.b.c._interface.pathdescription.rev201126.pce.resource.resource.resource.LinkBuilder;
-import org.opendaylight.yang.gen.v1.http.org.transportpce.b.c._interface.pathdescription.rev201126.pce.resource.resource.resource.NodeBuilder;
-import org.opendaylight.yang.gen.v1.http.org.transportpce.b.c._interface.pathdescription.rev201126.pce.resource.resource.resource.TerminationPoint;
-import org.opendaylight.yang.gen.v1.http.org.transportpce.b.c._interface.pathdescription.rev201126.pce.resource.resource.resource.TerminationPointBuilder;
+import org.opendaylight.yang.gen.v1.http.org.transportpce.b.c._interface.pathdescription.rev201210.path.description.AToZDirection;
+import org.opendaylight.yang.gen.v1.http.org.transportpce.b.c._interface.pathdescription.rev201210.path.description.AToZDirectionBuilder;
+import org.opendaylight.yang.gen.v1.http.org.transportpce.b.c._interface.pathdescription.rev201210.path.description.ZToADirection;
+import org.opendaylight.yang.gen.v1.http.org.transportpce.b.c._interface.pathdescription.rev201210.path.description.ZToADirectionBuilder;
+import org.opendaylight.yang.gen.v1.http.org.transportpce.b.c._interface.pathdescription.rev201210.path.description.atoz.direction.AToZ;
+import org.opendaylight.yang.gen.v1.http.org.transportpce.b.c._interface.pathdescription.rev201210.path.description.atoz.direction.AToZBuilder;
+import org.opendaylight.yang.gen.v1.http.org.transportpce.b.c._interface.pathdescription.rev201210.path.description.atoz.direction.AToZKey;
+import org.opendaylight.yang.gen.v1.http.org.transportpce.b.c._interface.pathdescription.rev201210.path.description.ztoa.direction.ZToA;
+import org.opendaylight.yang.gen.v1.http.org.transportpce.b.c._interface.pathdescription.rev201210.path.description.ztoa.direction.ZToABuilder;
+import org.opendaylight.yang.gen.v1.http.org.transportpce.b.c._interface.pathdescription.rev201210.path.description.ztoa.direction.ZToAKey;
+import org.opendaylight.yang.gen.v1.http.org.transportpce.b.c._interface.pathdescription.rev201210.pce.resource.ResourceBuilder;
+import org.opendaylight.yang.gen.v1.http.org.transportpce.b.c._interface.pathdescription.rev201210.pce.resource.resource.resource.Link;
+import org.opendaylight.yang.gen.v1.http.org.transportpce.b.c._interface.pathdescription.rev201210.pce.resource.resource.resource.LinkBuilder;
+import org.opendaylight.yang.gen.v1.http.org.transportpce.b.c._interface.pathdescription.rev201210.pce.resource.resource.resource.Node;
+import org.opendaylight.yang.gen.v1.http.org.transportpce.b.c._interface.pathdescription.rev201210.pce.resource.resource.resource.NodeBuilder;
+import org.opendaylight.yang.gen.v1.http.org.transportpce.b.c._interface.pathdescription.rev201210.pce.resource.resource.resource.TerminationPoint;
+import org.opendaylight.yang.gen.v1.http.org.transportpce.b.c._interface.pathdescription.rev201210.pce.resource.resource.resource.TerminationPointBuilder;
import org.opendaylight.yang.gen.v1.http.org.transportpce.b.c._interface.service.types.rev200128.service.endpoint.sp.RxDirectionBuilder;
import org.opendaylight.yang.gen.v1.http.org.transportpce.b.c._interface.service.types.rev200128.service.endpoint.sp.TxDirectionBuilder;
import org.opendaylight.yang.gen.v1.http.org.transportpce.b.c._interface.service.types.rev200128.service.handler.header.ServiceHandlerHeaderBuilder;
private static PathDescription createPathDescriptionInvalidResource() {
Map<AToZKey,AToZ> atoZMap = new HashMap<>();
- org.opendaylight.yang.gen.v1.http.org.transportpce.b.c._interface.pathdescription.rev201126.pce.resource
- .resource.resource.NodeBuilder nodesBuilder = new NodeBuilder();
- org.opendaylight.yang.gen.v1.http.org.transportpce.b.c._interface.pathdescription.rev201126.pce.resource
- .resource.resource.Node node1 = nodesBuilder
- .setNodeId("XPONDER-1-2").build();
- org.opendaylight.yang.gen.v1.http.org.transportpce.b.c._interface.pathdescription.rev201126.pce.resource
- .resource.resource.Node node2 = nodesBuilder
- .setNodeId("XPONDER-1-2").build();
+ Node node = new NodeBuilder().setNodeId("XPONDER-1-2").build();
AToZ atoZ = new AToZBuilder().setId("1").withKey(new AToZKey("1")).setResource(new ResourceBuilder()
- .setResource(node1).build()).build();
- AToZ atoZ2 = new AToZBuilder().setId("1").withKey(new AToZKey("1")).setResource(new ResourceBuilder()
- .setResource(node2).build()).build();
+ .setResource(node).build()).build();
atoZMap.put(atoZ.key(),atoZ);
- atoZMap.put(atoZ2.key(),atoZ2);
AToZDirection atozDirection = new AToZDirectionBuilder()
.setRate(Uint32.valueOf(20))
.setAToZWavelengthNumber(Uint32.valueOf(32))
.build();
Map<ZToAKey,ZToA> ztoAMap = new HashMap<>();
ZToA ztoA = new ZToABuilder().setId("1").withKey(new ZToAKey("1")).setResource(new ResourceBuilder()
- .setResource(node1).build()).build();
- ZToA ztoA2 = new ZToABuilder().setId("1").withKey(new ZToAKey("1")).setResource(new ResourceBuilder()
- .setResource(node2).build()).build();
+ .setResource(node).build()).build();
ztoAMap.put(ztoA.key(),ztoA);
- ztoAMap.put(ztoA2.key(),ztoA2);
ZToADirection ztoaDirection = new ZToADirectionBuilder()
.setRate(Uint32.valueOf(20))
.setZToAWavelengthNumber(Uint32.valueOf(20))
import java.util.Map;
import org.opendaylight.yang.gen.v1.http.org.openroadm.common.service.types.rev190531.service.port.PortBuilder;
import org.opendaylight.yang.gen.v1.http.org.openroadm.service.format.rev190531.ServiceFormat;
-import org.opendaylight.yang.gen.v1.http.org.transportpce.b.c._interface.pathdescription.rev201126.path.description.AToZDirection;
-import org.opendaylight.yang.gen.v1.http.org.transportpce.b.c._interface.pathdescription.rev201126.path.description.AToZDirectionBuilder;
-import org.opendaylight.yang.gen.v1.http.org.transportpce.b.c._interface.pathdescription.rev201126.path.description.ZToADirection;
-import org.opendaylight.yang.gen.v1.http.org.transportpce.b.c._interface.pathdescription.rev201126.path.description.ZToADirectionBuilder;
-import org.opendaylight.yang.gen.v1.http.org.transportpce.b.c._interface.pathdescription.rev201126.path.description.atoz.direction.AToZ;
-import org.opendaylight.yang.gen.v1.http.org.transportpce.b.c._interface.pathdescription.rev201126.path.description.atoz.direction.AToZBuilder;
-import org.opendaylight.yang.gen.v1.http.org.transportpce.b.c._interface.pathdescription.rev201126.path.description.atoz.direction.AToZKey;
-import org.opendaylight.yang.gen.v1.http.org.transportpce.b.c._interface.pathdescription.rev201126.path.description.ztoa.direction.ZToA;
-import org.opendaylight.yang.gen.v1.http.org.transportpce.b.c._interface.pathdescription.rev201126.path.description.ztoa.direction.ZToABuilder;
-import org.opendaylight.yang.gen.v1.http.org.transportpce.b.c._interface.pathdescription.rev201126.path.description.ztoa.direction.ZToAKey;
-import org.opendaylight.yang.gen.v1.http.org.transportpce.b.c._interface.pathdescription.rev201126.pce.resource.ResourceBuilder;
-import org.opendaylight.yang.gen.v1.http.org.transportpce.b.c._interface.pathdescription.rev201126.pce.resource.resource.resource.TerminationPoint;
-import org.opendaylight.yang.gen.v1.http.org.transportpce.b.c._interface.pathdescription.rev201126.pce.resource.resource.resource.TerminationPointBuilder;
+import org.opendaylight.yang.gen.v1.http.org.transportpce.b.c._interface.pathdescription.rev201210.path.description.AToZDirection;
+import org.opendaylight.yang.gen.v1.http.org.transportpce.b.c._interface.pathdescription.rev201210.path.description.AToZDirectionBuilder;
+import org.opendaylight.yang.gen.v1.http.org.transportpce.b.c._interface.pathdescription.rev201210.path.description.ZToADirection;
+import org.opendaylight.yang.gen.v1.http.org.transportpce.b.c._interface.pathdescription.rev201210.path.description.ZToADirectionBuilder;
+import org.opendaylight.yang.gen.v1.http.org.transportpce.b.c._interface.pathdescription.rev201210.path.description.atoz.direction.AToZ;
+import org.opendaylight.yang.gen.v1.http.org.transportpce.b.c._interface.pathdescription.rev201210.path.description.atoz.direction.AToZBuilder;
+import org.opendaylight.yang.gen.v1.http.org.transportpce.b.c._interface.pathdescription.rev201210.path.description.atoz.direction.AToZKey;
+import org.opendaylight.yang.gen.v1.http.org.transportpce.b.c._interface.pathdescription.rev201210.path.description.ztoa.direction.ZToA;
+import org.opendaylight.yang.gen.v1.http.org.transportpce.b.c._interface.pathdescription.rev201210.path.description.ztoa.direction.ZToABuilder;
+import org.opendaylight.yang.gen.v1.http.org.transportpce.b.c._interface.pathdescription.rev201210.path.description.ztoa.direction.ZToAKey;
+import org.opendaylight.yang.gen.v1.http.org.transportpce.b.c._interface.pathdescription.rev201210.pce.resource.ResourceBuilder;
+import org.opendaylight.yang.gen.v1.http.org.transportpce.b.c._interface.pathdescription.rev201210.pce.resource.resource.resource.TerminationPoint;
+import org.opendaylight.yang.gen.v1.http.org.transportpce.b.c._interface.pathdescription.rev201210.pce.resource.resource.resource.TerminationPointBuilder;
import org.opendaylight.yang.gen.v1.http.org.transportpce.b.c._interface.service.types.rev200128.service.endpoint.sp.RxDirectionBuilder;
import org.opendaylight.yang.gen.v1.http.org.transportpce.b.c._interface.service.types.rev200128.service.endpoint.sp.TxDirectionBuilder;
import org.opendaylight.yang.gen.v1.http.org.transportpce.b.c._interface.service.types.rev200128.service.path.PathDescription;
*/
package org.opendaylight.transportpce.servicehandler.listeners;
+import edu.umd.cs.findbugs.annotations.SuppressFBWarnings;
+import java.util.HashMap;
+import java.util.Iterator;
+import java.util.Map;
+import java.util.Optional;
import org.opendaylight.mdsal.binding.api.NotificationPublishService;
+import org.opendaylight.transportpce.common.OperationResult;
import org.opendaylight.transportpce.servicehandler.service.ServiceDataStoreOperations;
import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.networkmodel.rev201116.TopologyUpdateResult;
import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.networkmodel.rev201116.TransportpceNetworkmodelListener;
+import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.networkmodel.rev201116.topology.update.result.OrdTopologyChanges;
+import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.networkmodel.rev201116.topology.update.result.OrdTopologyChangesKey;
+import org.opendaylight.yang.gen.v1.http.org.openroadm.common.state.types.rev181130.State;
+import org.opendaylight.yang.gen.v1.http.org.openroadm.equipment.states.types.rev181130.AdminStates;
+import org.opendaylight.yang.gen.v1.http.org.openroadm.service.rev190531.service.list.Services;
+import org.opendaylight.yang.gen.v1.http.org.transportpce.b.c._interface.pathdescription.rev201210.path.description.AToZDirection;
+import org.opendaylight.yang.gen.v1.http.org.transportpce.b.c._interface.pathdescription.rev201210.path.description.AToZDirectionBuilder;
+import org.opendaylight.yang.gen.v1.http.org.transportpce.b.c._interface.pathdescription.rev201210.path.description.ZToADirection;
+import org.opendaylight.yang.gen.v1.http.org.transportpce.b.c._interface.pathdescription.rev201210.path.description.ZToADirectionBuilder;
+import org.opendaylight.yang.gen.v1.http.org.transportpce.b.c._interface.pathdescription.rev201210.path.description.atoz.direction.AToZ;
+import org.opendaylight.yang.gen.v1.http.org.transportpce.b.c._interface.pathdescription.rev201210.path.description.atoz.direction.AToZBuilder;
+import org.opendaylight.yang.gen.v1.http.org.transportpce.b.c._interface.pathdescription.rev201210.path.description.atoz.direction.AToZKey;
+import org.opendaylight.yang.gen.v1.http.org.transportpce.b.c._interface.pathdescription.rev201210.path.description.ztoa.direction.ZToA;
+import org.opendaylight.yang.gen.v1.http.org.transportpce.b.c._interface.pathdescription.rev201210.path.description.ztoa.direction.ZToABuilder;
+import org.opendaylight.yang.gen.v1.http.org.transportpce.b.c._interface.pathdescription.rev201210.path.description.ztoa.direction.ZToAKey;
+import org.opendaylight.yang.gen.v1.http.org.transportpce.b.c._interface.pathdescription.rev201210.pce.resource.Resource;
+import org.opendaylight.yang.gen.v1.http.org.transportpce.b.c._interface.pathdescription.rev201210.pce.resource.ResourceBuilder;
+import org.opendaylight.yang.gen.v1.http.org.transportpce.b.c._interface.pathdescription.rev201210.pce.resource.resource.resource.Link;
+import org.opendaylight.yang.gen.v1.http.org.transportpce.b.c._interface.pathdescription.rev201210.pce.resource.resource.resource.Node;
+import org.opendaylight.yang.gen.v1.http.org.transportpce.b.c._interface.pathdescription.rev201210.pce.resource.resource.resource.TerminationPoint;
+import org.opendaylight.yang.gen.v1.http.org.transportpce.b.c._interface.service.types.rev200128.service.path.PathDescription;
+import org.opendaylight.yang.gen.v1.http.org.transportpce.b.c._interface.service.types.rev200128.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.slf4j.Logger;
import org.slf4j.LoggerFactory;
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) {
@Override
public void onTopologyUpdateResult(TopologyUpdateResult notification) {
LOG.info("Topology update notification: {}", notification.toString());
+ if (compareTopologyUpdateResult(notification)) {
+ LOG.warn("TopologyUpdateResult already wired !");
+ return;
+ }
+ topologyUpdateResult = notification;
+ switch (topologyUpdateResult.getNotificationType().getIntValue()) {
+ case 1:
+ // Update service datastore and service path description
+ LOG.info("openroadm-topology update");
+ updateServicePaths(notification);
+ break;
+ case 2:
+ LOG.info("openroadm-network update");
+ break;
+ case 3:
+ LOG.info("clli-network update");
+ break;
+ case 4:
+ LOG.info("otn-topology update");
+ break;
+ default:
+ break;
+ }
+ }
+
+ /**
+ * Process topology update result.
+ * @param notification the result notification.
+ */
+ private void updateServicePaths(TopologyUpdateResult notification) {
+ Map<OrdTopologyChangesKey, OrdTopologyChanges> ordTopologyChanges = notification.getOrdTopologyChanges();
+ Optional<ServicePathList> servicePathListOptional = this.serviceDataStoreOperations.getServicePaths();
+ ServicePathList servicePathList = null;
+ if (!servicePathListOptional.isPresent()) {
+ LOG.error("Couldn't retrieve service path list");
+ return;
+ }
+ servicePathList = servicePathListOptional.get();
+ if (servicePathList.getServicePaths().isEmpty()) {
+ return;
+ }
+ for (ServicePaths servicePaths : servicePathList.getServicePaths().values()) {
+ String serviceName = servicePaths.getServicePathName();
+ PathDescription pathDescription = servicePaths.getPathDescription();
+ // update path descriptions in the datastore
+ Map<AToZKey, AToZ> updatedAtoZ = changePathElementStateAZ(ordTopologyChanges, pathDescription);
+ Map<ZToAKey, ZToA> updatedZtoA = changePathElementStateZA(ordTopologyChanges, pathDescription);
+ OperationResult operationResult = this.serviceDataStoreOperations
+ .modifyServicePath(buildNewPathDescription(pathDescription, updatedAtoZ, updatedZtoA), serviceName);
+ if (!operationResult.isSuccess()) {
+ LOG.warn("Service Path not updated in datastore!");
+ continue;
+ }
+ // update service in the datastore. Only path description with all elements in service can have a service
+ // in service. Therefore we check if all the states of the path description resources are inService
+ Optional<Services> serviceOptional = this.serviceDataStoreOperations.getService(serviceName);
+ Services services = null;
+ if (!serviceOptional.isPresent()) {
+ LOG.error("Couldn't retrieve service");
+ continue;
+ }
+ services = serviceOptional.get();
+ OperationResult operationResult1 = null;
+ if (State.InService.equals(services.getOperationalState())
+ && !allElementsinPathinService(updatedAtoZ, updatedZtoA)) {
+ LOG.info("Service={} needs to be updated to outOfService", serviceName);
+ operationResult1 = this.serviceDataStoreOperations.modifyService(serviceName, State.OutOfService,
+ AdminStates.OutOfService);
+ } else if (State.OutOfService.equals(services.getOperationalState())
+ && allElementsinPathinService(updatedAtoZ, updatedZtoA)) {
+ LOG.info("Service={} needs to be updated to inService", serviceName);
+ operationResult1 = this.serviceDataStoreOperations.modifyService(serviceName, State.InService,
+ AdminStates.InService);
+ } else {
+ LOG.info("Service {} state doesnt need to be modified", serviceName);
+ }
+ if (operationResult1 != null && operationResult1.isSuccess()) {
+ LOG.info("Service state correctly updated in datastore");
+ }
+ }
+ }
+
+ private Map<ZToAKey, ZToA> changePathElementStateZA(Map<OrdTopologyChangesKey,
+ OrdTopologyChanges> ordTopologyChanges, PathDescription pathDescription) {
+ Map<ZToAKey, ZToA> ztoaMap = pathDescription.getZToADirection().getZToA();
+ // Needed as ztoaMap is immutable
+ Map<ZToAKey, ZToA> newztoaMap = new HashMap<ZToAKey, ZToA>();
+ for (ZToA element : ztoaMap.values()) {
+ org.opendaylight.yang.gen.v1.http.org.openroadm.common.state.types.rev191129.State elementState
+ = element.getResource().getState();
+ String elementType = element.getResource().getResource().implementedInterface().getSimpleName();
+ org.opendaylight.yang.gen.v1.http.org.openroadm.common.state.types.rev191129.State updatedState = null;
+ ZToAKey elementKey = null;
+ Resource elementResource = null;
+ switch (elementType) {
+ case "TerminationPoint":
+ TerminationPoint tp = (TerminationPoint) element.getResource().getResource();
+ // for the tps we need to merge nodeId and tpId
+ String tpId = tp.getTpNodeId() + "-" + tp.getTpId();
+ if (!(ordTopologyChanges.containsKey(new OrdTopologyChangesKey(tpId))
+ && !ordTopologyChanges.get(new OrdTopologyChangesKey(tpId)).getState()
+ .equals(elementState))) {
+ newztoaMap.put(element.key(), element);
+ continue;
+ }
+ updatedState = ordTopologyChanges.get(new OrdTopologyChangesKey(tpId)).getState();
+ LOG.info("Updating path element {} to {}", tpId, updatedState.getName());
+ // Create new resource element and replace on map
+ elementKey = new ZToAKey(element.getId());
+ elementResource = new ResourceBuilder().setResource(tp).setState(updatedState).build();
+ ZToA tpResource = new ZToABuilder().setId(tp.getTpId()).withKey(elementKey)
+ .setResource(elementResource).build();
+ newztoaMap.put(elementKey, tpResource);
+ break;
+ case "Link":
+ Link link = (Link) element.getResource().getResource();
+ if (!(ordTopologyChanges.containsKey(new OrdTopologyChangesKey(link.getLinkId()))
+ && !ordTopologyChanges.get(new OrdTopologyChangesKey(link.getLinkId())).getState()
+ .equals(elementState))) {
+ newztoaMap.put(element.key(), element);
+ continue;
+ }
+ updatedState = ordTopologyChanges.get(new OrdTopologyChangesKey(link.getLinkId())).getState();
+ LOG.info("Updating path element {} to {}", link.getLinkId(), updatedState.getName());
+ // Create new resource element and replace on map
+ elementKey = new ZToAKey(element.getId());
+ elementResource = new ResourceBuilder().setResource(link).setState(updatedState).build();
+ ZToA linkResource = new ZToABuilder().setId(link.getLinkId()).withKey(elementKey)
+ .setResource(elementResource).build();
+ newztoaMap.put(elementKey, linkResource);
+ break;
+ case "Node":
+ Node node = (Node) element.getResource().getResource();
+ if (!(ordTopologyChanges.containsKey(new OrdTopologyChangesKey(node.getNodeId()))
+ && !ordTopologyChanges.get(new OrdTopologyChangesKey(node.getNodeId())).getState()
+ .equals(elementState))) {
+ newztoaMap.put(element.key(), element);
+ continue;
+ }
+ updatedState = ordTopologyChanges.get(new OrdTopologyChangesKey(node.getNodeId())).getState();
+ LOG.info("Updating path element {} to {}", node.getNodeId(), updatedState.getName());
+ // Create new resource element and replace on map
+ elementKey = new ZToAKey(element.getId());
+ elementResource = new ResourceBuilder().setResource(node).setState(updatedState).build();
+ ZToA nodeResource = new ZToABuilder().setId(node.getNodeId()).withKey(elementKey)
+ .setResource(elementResource).build();
+ newztoaMap.put(elementKey, nodeResource);
+ break;
+ default:
+ LOG.warn("Element type {} not recognized", elementType);
+ break;
+ }
+ }
+ return newztoaMap;
+ }
+
+ private Map<AToZKey, AToZ> changePathElementStateAZ(Map<OrdTopologyChangesKey,
+ OrdTopologyChanges> ordTopologyChanges, PathDescription pathDescription) {
+ Map<AToZKey, AToZ> atozMap = pathDescription.getAToZDirection().getAToZ();
+ // Needed as atozMap is immutable
+ Map<AToZKey, AToZ> newatozMap = new HashMap<AToZKey, AToZ>();
+ for (AToZ element : atozMap.values()) {
+ org.opendaylight.yang.gen.v1.http.org.openroadm.common.state.types.rev191129.State elementState
+ = element.getResource().getState();
+ String elementType = element.getResource().getResource().implementedInterface().getSimpleName();
+ org.opendaylight.yang.gen.v1.http.org.openroadm.common.state.types.rev191129.State updatedState = null;
+ AToZKey elementKey = null;
+ Resource elementResource = null;
+ switch (elementType) {
+ case "TerminationPoint":
+ TerminationPoint tp = (TerminationPoint) element.getResource().getResource();
+ // for the tps we need to merge nodeId and tpId
+ String tpId = tp.getTpNodeId() + "-" + tp.getTpId();
+ if (!(ordTopologyChanges.containsKey(new OrdTopologyChangesKey(tpId))
+ && !ordTopologyChanges.get(new OrdTopologyChangesKey(tpId)).getState()
+ .equals(elementState))) {
+ newatozMap.put(element.key(), element);
+ continue;
+ }
+ updatedState = ordTopologyChanges.get(new OrdTopologyChangesKey(tpId)).getState();
+ LOG.info("Updating path element {} to {}", tpId, updatedState.getName());
+ // Create new resource element and replace on map
+ elementKey = new AToZKey(element.getId());
+ elementResource = new ResourceBuilder().setResource(tp).setState(updatedState).build();
+ AToZ tpResource = new AToZBuilder().setId(tp.getTpId()).withKey(elementKey)
+ .setResource(elementResource).build();
+ newatozMap.put(elementKey, tpResource);
+ break;
+ case "Link":
+ Link link = (Link) element.getResource().getResource();
+ if (!(ordTopologyChanges.containsKey(new OrdTopologyChangesKey(link.getLinkId()))
+ && !ordTopologyChanges.get(new OrdTopologyChangesKey(link.getLinkId())).getState()
+ .equals(elementState))) {
+ newatozMap.put(element.key(), element);
+ continue;
+ }
+ updatedState = ordTopologyChanges.get(new OrdTopologyChangesKey(link.getLinkId()))
+ .getState();
+ LOG.info("Updating path element {} to {}", link.getLinkId(), updatedState.getName());
+ // Create new resource element and replace on map
+ elementKey = new AToZKey(element.getId());
+ elementResource = new ResourceBuilder().setResource(link).setState(updatedState).build();
+ AToZ linkResource = new AToZBuilder().setId(link.getLinkId()).withKey(elementKey)
+ .setResource(elementResource).build();
+ newatozMap.put(elementKey, linkResource);
+ break;
+ case "Node":
+ Node node = (Node) element.getResource().getResource();
+ if (!(ordTopologyChanges.containsKey(new OrdTopologyChangesKey(node.getNodeId()))
+ && !ordTopologyChanges.get(new OrdTopologyChangesKey(node.getNodeId())).getState()
+ .equals(elementState))) {
+ newatozMap.put(element.key(), element);
+ continue;
+ }
+ updatedState = ordTopologyChanges.get(new OrdTopologyChangesKey(node.getNodeId())).getState();
+ LOG.info("Updating path element {} to {}", node.getNodeId(), updatedState.getName());
+ // Create new resource element and replace on map
+ elementKey = new AToZKey(element.getId());
+ elementResource = new ResourceBuilder().setResource(node).setState(updatedState).build();
+ AToZ nodeResource = new AToZBuilder().setId(node.getNodeId()).withKey(elementKey)
+ .setResource(elementResource).build();
+ newatozMap.put(elementKey, nodeResource);
+ break;
+ default:
+ LOG.warn("Element type {} not recognized", elementType);
+ break;
+ }
+ }
+ return newatozMap;
+ }
+
+ private PathDescription buildNewPathDescription(PathDescription pathDescription, Map<AToZKey, AToZ> updatedAtoZ,
+ Map<ZToAKey, ZToA> updatedZtoA) {
+ // A to Z
+ AToZDirection atozDir = new AToZDirectionBuilder()
+ .setAToZ(updatedAtoZ)
+ .setAToZWavelengthNumber(pathDescription.getAToZDirection().getAToZWavelengthNumber())
+ .setModulationFormat(pathDescription.getAToZDirection().getModulationFormat())
+ .setRate(pathDescription.getAToZDirection().getRate())
+ .setTribPortNumber(pathDescription.getAToZDirection().getTribPortNumber())
+ .setTribSlotNumber(pathDescription.getAToZDirection().getTribSlotNumber())
+ .build();
+ // Z to A
+ ZToADirection ztoaDir = new ZToADirectionBuilder()
+ .setZToA(updatedZtoA)
+ .setZToAWavelengthNumber(pathDescription.getZToADirection().getZToAWavelengthNumber())
+ .setModulationFormat(pathDescription.getZToADirection().getModulationFormat())
+ .setRate(pathDescription.getAToZDirection().getRate())
+ .setTribPortNumber(pathDescription.getAToZDirection().getTribPortNumber())
+ .setTribSlotNumber(pathDescription.getAToZDirection().getTribSlotNumber())
+ .build();
+ return new PathDescriptionBuilder().setAToZDirection(atozDir).setZToADirection(ztoaDir).build();
+ }
+
+ private boolean allElementsinPathinService(Map<AToZKey, AToZ> updatedAtoZ, Map<ZToAKey, ZToA> updatedZtoA) {
+ boolean allEleminService = true;
+ Iterator<AToZ> i1 = updatedAtoZ.values().iterator();
+ Iterator<ZToA> i2 = updatedZtoA.values().iterator();
+ // TODO: both directions have same length?
+ while (i1.hasNext() && i2.hasNext()) {
+ if (State.OutOfService.getIntValue() == i1.next().getResource().getState().getIntValue()
+ || State.OutOfService.getIntValue() == i2.next().getResource().getState().getIntValue()) {
+ allEleminService = false;
+ break;
+ }
+ }
+
+ return allEleminService;
+ }
+
+ @SuppressFBWarnings(
+ value = "ES_COMPARING_STRINGS_WITH_EQ",
+ justification = "false positives, not strings but real object references comparisons")
+ private boolean compareTopologyUpdateResult(TopologyUpdateResult notification) {
+ if (topologyUpdateResult == null) {
+ return false;
+ }
+ if (topologyUpdateResult.getNotificationType() != notification.getNotificationType()) {
+ return false;
+ }
+ if (topologyUpdateResult.getOrdTopologyChanges().values()
+ .equals(notification.getOrdTopologyChanges().values())) {
+ return false;
+ }
+ return true;
}
public void setserviceDataStoreOperations(ServiceDataStoreOperations serviceData) {
@Override
public void onServicePathRpcResult(ServicePathRpcResult notification) {
- if (!compareServicePathRpcResult(notification)) {
- servicePathRpcResult = notification;
- switch (servicePathRpcResult.getNotificationType().getIntValue()) {
- /* path-computation-request. */
- case 1:
- onPathComputationResult(notification);
- break;
- /* cancel-resource-reserve. */
- case 2:
- onCancelResourceResult();
- break;
- default:
- break;
- }
- } else {
+ if (compareServicePathRpcResult(notification)) {
LOG.warn("ServicePathRpcResult already wired !");
+ return;
+ }
+ servicePathRpcResult = notification;
+ switch (servicePathRpcResult.getNotificationType().getIntValue()) {
+ /* path-computation-request. */
+ case 1:
+ onPathComputationResult(notification);
+ break;
+ /* cancel-resource-reserve. */
+ case 2:
+ onCancelResourceResult();
+ break;
+ default:
+ break;
}
}
import org.opendaylight.yang.gen.v1.http.org.openroadm.service.rev190531.ServiceCreateInput;
import org.opendaylight.yang.gen.v1.http.org.openroadm.service.rev190531.TempServiceCreateInput;
import org.opendaylight.yang.gen.v1.http.org.openroadm.service.rev190531.service.list.Services;
+import org.opendaylight.yang.gen.v1.http.org.transportpce.b.c._interface.service.types.rev200128.service.path.PathDescription;
+import org.opendaylight.yang.gen.v1.http.org.transportpce.b.c._interface.servicepath.rev171017.ServicePathList;
/**
* OpenROADM Service operations API providing basic operations on services.
*/
OperationResult createTempService(TempServiceCreateInput tempServiceCreateInput);
+ Optional<ServicePathList> getServicePaths();
+
+ OperationResult modifyServicePath(PathDescription pathDescription, String serviceName);
+
/**
* deleteServicePath by name.
*
import org.opendaylight.yang.gen.v1.http.org.openroadm.service.rev190531.service.list.Services;
import org.opendaylight.yang.gen.v1.http.org.openroadm.service.rev190531.service.list.ServicesBuilder;
import org.opendaylight.yang.gen.v1.http.org.openroadm.service.rev190531.service.list.ServicesKey;
+import org.opendaylight.yang.gen.v1.http.org.transportpce.b.c._interface.service.types.rev200128.service.path.PathDescription;
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.opendaylight.yang.gen.v1.http.org.transportpce.b.c._interface.servicepath.rev171017.service.path.list.ServicePathsBuilder;
import org.opendaylight.yang.gen.v1.http.org.transportpce.b.c._interface.servicepath.rev171017.service.path.list.ServicePathsKey;
import org.opendaylight.yangtools.yang.binding.InstanceIdentifier;
import org.slf4j.Logger;
public static final String SUCCESSFUL_MESSAGE;
public static final String SERVICE_NOT_FOUND;
+ public static final String SERVICE_PATH_NOT_FOUND;
// Static blocks are generated once and spare memory.
static {
SUCCESSFUL_MESSAGE = "Successful";
SERVICE_NOT_FOUND = "Service not found";
+ SERVICE_PATH_NOT_FOUND = "Service path not found";
}
public static String failedTo(String action, String serviceName) {
}
}
+ @Override
+ public Optional<ServicePathList> getServicePaths() {
+ LOG.debug("Retrieving list of ServicePath...");
+ try {
+ ReadTransaction readTx = this.dataBroker.newReadOnlyTransaction();
+ InstanceIdentifier<ServicePathList> servicePathListIID = InstanceIdentifier.create(ServicePathList.class);
+ Future<java.util.Optional<ServicePathList>> future = readTx.read(LogicalDatastoreType.OPERATIONAL,
+ servicePathListIID);
+ return future.get(Timeouts.DATASTORE_READ, TimeUnit.MILLISECONDS);
+ } catch (InterruptedException | ExecutionException | TimeoutException e) {
+ LOG.error("Reading service path list failed. Error={}", e.getMessage());
+ }
+ return Optional.empty();
+ }
+
+ private Optional<ServicePaths> getServicePath(String serviceName) {
+ LOG.debug("Retrieving service path of service {}", serviceName);
+ try {
+ ReadTransaction readTx = this.dataBroker.newReadOnlyTransaction();
+ InstanceIdentifier<ServicePaths> servicePathsIID = InstanceIdentifier.create(ServicePathList.class)
+ .child(ServicePaths.class, new ServicePathsKey(serviceName));
+ Future<java.util.Optional<ServicePaths>> future = readTx.read(LogicalDatastoreType.OPERATIONAL,
+ servicePathsIID);
+ return future.get(Timeouts.DATASTORE_READ, TimeUnit.MILLISECONDS);
+ } catch (InterruptedException | ExecutionException | TimeoutException e) {
+ LOG.error("Reading service path failed. Error={}", e.getMessage());
+ }
+ return Optional.empty();
+ }
+
@Override
public OperationResult createServicePath(ServiceInput serviceInput, PathComputationRequestOutput outputFromPce) {
LOG.debug("Writing '{}' ServicePath ", serviceInput.getServiceName());
}
}
+ @Override
+ public OperationResult modifyServicePath(PathDescription pathDescription, String serviceName) {
+ LOG.debug("Updating servicePath because of a change in the openroadm-topology");
+ Optional<ServicePaths> readServicePath = getServicePath(serviceName);
+ if (!readServicePath.isPresent()) {
+ LOG.warn("modifyServicePath: {}", LogMessages.SERVICE_PATH_NOT_FOUND);
+ return OperationResult.failed(LogMessages.SERVICE_PATH_NOT_FOUND);
+ }
+ try {
+ WriteTransaction writeTx = this.dataBroker.newWriteOnlyTransaction();
+ InstanceIdentifier<ServicePaths> iid = InstanceIdentifier.create(ServicePathList.class)
+ .child(ServicePaths.class, new ServicePathsKey(serviceName));
+ ServicePaths servicePaths = new ServicePathsBuilder()
+ .setServiceAEnd(readServicePath.get().getServiceAEnd())
+ .setServiceHandlerHeader(readServicePath.get().getServiceHandlerHeader())
+ .setServicePathName(readServicePath.get().getServicePathName())
+ .setServiceZEnd(readServicePath.get().getServiceZEnd())
+ .setSupportingServiceName(readServicePath.get().getSupportingServiceName())
+ .setEquipmentSrgs(readServicePath.get().getEquipmentSrgs())
+ .setFiberSpanSrlgs(readServicePath.get().getFiberSpanSrlgs())
+ .setHardConstraints(readServicePath.get().getHardConstraints())
+ .setLatency(readServicePath.get().getLatency())
+ .setLocallyProtectedLinks(readServicePath.get().isLocallyProtectedLinks())
+ .setPathDescription(pathDescription)
+ .setPceMetric(readServicePath.get().getPceMetric())
+ .setSoftConstraints(readServicePath.get().getSoftConstraints())
+ .build();
+
+ writeTx.merge(LogicalDatastoreType.OPERATIONAL, iid, servicePaths);
+ writeTx.commit().get(Timeouts.DATASTORE_WRITE, TimeUnit.MILLISECONDS);
+ return OperationResult.ok(LogMessages.SUCCESSFUL_MESSAGE);
+ } catch (TimeoutException | InterruptedException | ExecutionException e) {
+ LOG.warn("modifyServicePath : {}", LogMessages.failedTo("modify service path", serviceName), e);
+ return OperationResult.failed(LogMessages.failedTo("modify service path", serviceName));
+ }
+ }
+
@Override
public OperationResult deleteServicePath(String serviceName) {
InstanceIdentifier<ServicePaths> servicePathsIID = InstanceIdentifier.create(ServicePathList.class)
import org.opendaylight.yang.gen.v1.http.org.openroadm.service.rev190531.service.list.Services;
import org.opendaylight.yang.gen.v1.http.org.openroadm.service.rev190531.service.list.ServicesBuilder;
import org.opendaylight.yang.gen.v1.http.org.openroadm.service.rev190531.service.list.ServicesKey;
-import org.opendaylight.yang.gen.v1.http.org.transportpce.b.c._interface.pathdescription.rev201126.path.description.AToZDirectionBuilder;
-import org.opendaylight.yang.gen.v1.http.org.transportpce.b.c._interface.pathdescription.rev201126.path.description.ZToADirectionBuilder;
+import org.opendaylight.yang.gen.v1.http.org.transportpce.b.c._interface.pathdescription.rev201210.path.description.AToZDirectionBuilder;
+import org.opendaylight.yang.gen.v1.http.org.transportpce.b.c._interface.pathdescription.rev201210.path.description.ZToADirectionBuilder;
import org.opendaylight.yang.gen.v1.http.org.transportpce.b.c._interface.service.types.rev200128.response.parameters.sp.ResponseParameters;
import org.opendaylight.yang.gen.v1.http.org.transportpce.b.c._interface.service.types.rev200128.response.parameters.sp.ResponseParametersBuilder;
import org.opendaylight.yang.gen.v1.http.org.transportpce.b.c._interface.service.types.rev200128.response.parameters.sp.response.parameters.PathDescriptionBuilder;
import org.opendaylight.yang.gen.v1.http.org.openroadm.service.rev190531.ServiceCreateInput;
import org.opendaylight.yang.gen.v1.http.org.openroadm.service.rev190531.TempServiceCreateInput;
import org.opendaylight.yang.gen.v1.http.org.openroadm.service.rev190531.service.list.Services;
-import org.opendaylight.yang.gen.v1.http.org.transportpce.b.c._interface.pathdescription.rev201126.path.description.AToZDirectionBuilder;
-import org.opendaylight.yang.gen.v1.http.org.transportpce.b.c._interface.pathdescription.rev201126.path.description.ZToADirectionBuilder;
+import org.opendaylight.yang.gen.v1.http.org.transportpce.b.c._interface.pathdescription.rev201210.path.description.AToZDirectionBuilder;
+import org.opendaylight.yang.gen.v1.http.org.transportpce.b.c._interface.pathdescription.rev201210.path.description.ZToADirectionBuilder;
import org.opendaylight.yang.gen.v1.http.org.transportpce.b.c._interface.service.types.rev200128.response.parameters.sp.ResponseParameters;
import org.opendaylight.yang.gen.v1.http.org.transportpce.b.c._interface.service.types.rev200128.response.parameters.sp.ResponseParametersBuilder;
import org.opendaylight.yang.gen.v1.http.org.transportpce.b.c._interface.service.types.rev200128.response.parameters.sp.response.parameters.PathDescriptionBuilder;
import org.opendaylight.yang.gen.v1.http.org.openroadm.service.rev190531.service.feasibility.check.inputs.ServiceAEndBuilder;
import org.opendaylight.yang.gen.v1.http.org.openroadm.service.rev190531.service.feasibility.check.inputs.ServiceZEnd;
import org.opendaylight.yang.gen.v1.http.org.openroadm.service.rev190531.service.feasibility.check.inputs.ServiceZEndBuilder;
-import org.opendaylight.yang.gen.v1.http.org.transportpce.b.c._interface.pathdescription.rev201126.path.description.AToZDirection;
-import org.opendaylight.yang.gen.v1.http.org.transportpce.b.c._interface.pathdescription.rev201126.path.description.AToZDirectionBuilder;
-import org.opendaylight.yang.gen.v1.http.org.transportpce.b.c._interface.pathdescription.rev201126.path.description.ZToADirection;
-import org.opendaylight.yang.gen.v1.http.org.transportpce.b.c._interface.pathdescription.rev201126.path.description.ZToADirectionBuilder;
+import org.opendaylight.yang.gen.v1.http.org.transportpce.b.c._interface.pathdescription.rev201210.path.description.AToZDirection;
+import org.opendaylight.yang.gen.v1.http.org.transportpce.b.c._interface.pathdescription.rev201210.path.description.AToZDirectionBuilder;
+import org.opendaylight.yang.gen.v1.http.org.transportpce.b.c._interface.pathdescription.rev201210.path.description.ZToADirection;
+import org.opendaylight.yang.gen.v1.http.org.transportpce.b.c._interface.pathdescription.rev201210.path.description.ZToADirectionBuilder;
import org.opendaylight.yang.gen.v1.http.org.transportpce.b.c._interface.routing.constraints.rev171017.RoutingConstraintsSp.PceMetric;
import org.opendaylight.yang.gen.v1.http.org.transportpce.b.c._interface.service.types.rev200128.RpcStatusEx;
import org.opendaylight.yang.gen.v1.http.org.transportpce.b.c._interface.service.types.rev200128.ServicePathNotificationTypes;
import transportpce-pathDescription {
prefix transportpce-pathDescription;
- revision-date 2020-11-26;
+ revision-date 2020-12-10;
}
description
nbElmPath = len(res['output']['response-parameters']['path-description']
['aToZ-direction']['aToZ'])
self.assertEqual(31, nbElmPath)
- link = {"link-id": "OpenROADM-1-3-DEG2-to-OpenROADM-1-2-DEG2"}
+ link = {"link-id": "OpenROADM-1-3-DEG2-to-OpenROADM-1-2-DEG2", "state":"inService"}
find = False
for i in range(0, nbElmPath):
resource_i = (res['output']['response-parameters']['path-description']['aToZ-direction']['aToZ'][i]
nbElmPath = len(res['output']['response-parameters']['path-description']
['aToZ-direction']['aToZ'])
self.assertEqual(47, nbElmPath)
- link = {"link-id": "OpenROADM-1-3-DEG2-to-OpenROADM-1-2-DEG2"}
+ link = {"link-id": "OpenROADM-1-3-DEG2-to-OpenROADM-1-2-DEG2", "state":"inService"}
find = False
for i in range(0, nbElmPath):
resource_i = (res['output']['response-parameters']['path-description']['aToZ-direction']['aToZ'][i]