X-Git-Url: https://git.opendaylight.org/gerrit/gitweb?a=blobdiff_plain;f=networkmodel%2Fsrc%2Fmain%2Fjava%2Forg%2Fopendaylight%2Ftransportpce%2Fnetworkmodel%2FRdm2XpdrLink.java;h=1a518514c40f1aff462be53547ad3b9f79e20f91;hb=56d1795b647693ec1d620d6aca2c4003e3b302ca;hp=363b5119f3f62a8cc339628fa7cec683a758477e;hpb=f5a8fe61d265bce36b2fca393d82685a22ac326a;p=transportpce.git diff --git a/networkmodel/src/main/java/org/opendaylight/transportpce/networkmodel/Rdm2XpdrLink.java b/networkmodel/src/main/java/org/opendaylight/transportpce/networkmodel/Rdm2XpdrLink.java index 363b5119f..1a518514c 100644 --- a/networkmodel/src/main/java/org/opendaylight/transportpce/networkmodel/Rdm2XpdrLink.java +++ b/networkmodel/src/main/java/org/opendaylight/transportpce/networkmodel/Rdm2XpdrLink.java @@ -8,7 +8,7 @@ package org.opendaylight.transportpce.networkmodel; -import com.google.common.collect.ImmutableList; +import com.google.common.collect.ImmutableMap; import com.google.common.util.concurrent.FluentFuture; import java.util.Optional; import java.util.concurrent.ExecutionException; @@ -21,13 +21,14 @@ import org.opendaylight.mdsal.common.api.LogicalDatastoreType; import org.opendaylight.transportpce.common.NetworkUtils; import org.opendaylight.transportpce.networkmodel.util.LinkIdUtil; import org.opendaylight.transportpce.networkmodel.util.TopologyUtils; -import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.networkutils.rev170818.links.input.grouping.LinksInput; -import org.opendaylight.yang.gen.v1.http.org.openroadm.network.topology.rev181130.Link1; -import org.opendaylight.yang.gen.v1.http.org.openroadm.network.topology.rev181130.Link1Builder; -import org.opendaylight.yang.gen.v1.http.org.openroadm.network.topology.rev181130.TerminationPoint1; -import org.opendaylight.yang.gen.v1.http.org.openroadm.network.topology.rev181130.TerminationPoint1Builder; -import org.opendaylight.yang.gen.v1.http.org.openroadm.network.topology.rev181130.networks.network.node.termination.point.XpdrNetworkAttributesBuilder; -import org.opendaylight.yang.gen.v1.http.org.openroadm.network.types.rev181130.OpenroadmLinkType; +import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.networkutils.rev220630.links.input.grouping.LinksInput; +import org.opendaylight.yang.gen.v1.http.org.openroadm.common.network.rev211210.Link1Builder; +import org.opendaylight.yang.gen.v1.http.org.openroadm.common.state.types.rev191129.State; +import org.opendaylight.yang.gen.v1.http.org.openroadm.equipment.states.types.rev191129.AdminStates; +import org.opendaylight.yang.gen.v1.http.org.openroadm.network.topology.rev211210.TerminationPoint1; +import org.opendaylight.yang.gen.v1.http.org.openroadm.network.topology.rev211210.TerminationPoint1Builder; +import org.opendaylight.yang.gen.v1.http.org.openroadm.network.topology.rev211210.networks.network.node.termination.point.XpdrNetworkAttributesBuilder; +import org.opendaylight.yang.gen.v1.http.org.openroadm.network.types.rev211210.OpenroadmLinkType; 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.NodeId; @@ -37,10 +38,10 @@ import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.network.rev import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.network.rev180226.networks.network.Node; import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.network.rev180226.networks.network.NodeBuilder; import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.network.rev180226.networks.network.NodeKey; -import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.network.topology.rev180226.Network1; import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.network.topology.rev180226.Network1Builder; import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.network.topology.rev180226.Node1Builder; import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.network.topology.rev180226.TpId; +import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.network.topology.rev180226.networks.network.Link; import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.network.topology.rev180226.networks.network.LinkBuilder; import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.network.topology.rev180226.networks.network.node.TerminationPoint; import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.network.topology.rev180226.networks.network.node.TerminationPointBuilder; @@ -64,12 +65,17 @@ final class Rdm2XpdrLink { String destTp = linksInput.getTerminationPointNum(); // update tail-equipment-id for tp of link TerminationPoint xpdrTp = getTpofNode(srcNode, srcTp, dataBroker); + TerminationPoint rdmTp = getTpofNode(destNode, destTp, dataBroker); - Network topoNetowkLayer = createNetworkBuilder(srcNode, srcTp, destNode, destTp, false, xpdrTp).build(); + NetworkBuilder networkBldr = createNetworkBuilder(srcNode, srcTp, destNode, destTp, false, xpdrTp, rdmTp); + if (networkBldr == null) { + return false; + } + Network network = networkBldr.build(); InstanceIdentifier.InstanceIdentifierBuilder nwIID = InstanceIdentifier.builder(Networks.class) .child(Network.class, new NetworkKey(new NetworkId(NetworkUtils.OVERLAY_NETWORK_ID))); WriteTransaction wrtx = dataBroker.newWriteOnlyTransaction(); - wrtx.merge(LogicalDatastoreType.CONFIGURATION, nwIID.build(), topoNetowkLayer); + wrtx.merge(LogicalDatastoreType.CONFIGURATION, nwIID.build(), network); FluentFuture commit = wrtx.commit(); @@ -92,13 +98,18 @@ final class Rdm2XpdrLink { String destTp = new StringBuilder("XPDR").append(linksInput.getXpdrNum()).append("-NETWORK") .append(linksInput.getNetworkNum()).toString(); TerminationPoint xpdrTp = getTpofNode(destNode, destTp, dataBroker); + TerminationPoint rdmTp = getTpofNode(srcNode, srcTp, dataBroker); - Network topoNetowkLayer = createNetworkBuilder(srcNode, srcTp, destNode, destTp, true, xpdrTp).build(); + NetworkBuilder networkBldr = createNetworkBuilder(srcNode, srcTp, destNode, destTp, true, xpdrTp, rdmTp); + if (networkBldr == null) { + return false; + } + Network network = networkBldr.build(); InstanceIdentifier.InstanceIdentifierBuilder nwIID = InstanceIdentifier.builder(Networks.class).child(Network.class, - new NetworkKey(new NetworkId(NetworkUtils.OVERLAY_NETWORK_ID))); + new NetworkKey(new NetworkId(NetworkUtils.OVERLAY_NETWORK_ID))); WriteTransaction wrtx = dataBroker.newWriteOnlyTransaction(); - wrtx.merge(LogicalDatastoreType.CONFIGURATION, nwIID.build(), topoNetowkLayer); + wrtx.merge(LogicalDatastoreType.CONFIGURATION, nwIID.build(), network); FluentFuture commit = wrtx.commit(); try { commit.get(); @@ -112,7 +123,10 @@ final class Rdm2XpdrLink { } private static NetworkBuilder createNetworkBuilder(String srcNode, String srcTp, String destNode, String destTp, - boolean isXponderInput, TerminationPoint xpdrTp) { + boolean isXponderInput, TerminationPoint xpdrTp, TerminationPoint rdmTp) { + if (xpdrTp == null || rdmTp == null) { + return null; + } //update tp of nodes TerminationPointBuilder xpdrTpBldr = new TerminationPointBuilder(xpdrTp); if (xpdrTpBldr.augmentation(TerminationPoint1.class) != null) { @@ -127,40 +141,44 @@ final class Rdm2XpdrLink { tp1Bldr.setXpdrNetworkAttributes(new XpdrNetworkAttributesBuilder() .setTailEquipmentId(destNode + "--" + destTp).build()); } - xpdrTpBldr.addAugmentation(TerminationPoint1.class, tp1Bldr.build()); + xpdrTpBldr.addAugmentation(tp1Bldr.build()); + TerminationPoint newXpdrTp = xpdrTpBldr.build(); org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.network.topology.rev180226.Node1 node1 = - new Node1Builder().setTerminationPoint(ImmutableList.of(xpdrTpBldr.build())).build(); - NodeBuilder nodeBldr = new NodeBuilder() - .addAugmentation(org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.network.topology.rev180226 - .Node1.class, node1); + new Node1Builder().setTerminationPoint(ImmutableMap.of(newXpdrTp.key(),newXpdrTp)).build(); + NodeBuilder nodeBldr = new NodeBuilder().addAugmentation(node1); if (isXponderInput) { nodeBldr.setNodeId(new NodeId(destNode)); } else { nodeBldr.setNodeId(new NodeId(srcNode)); } - Link1Builder lnk1bldr = new Link1Builder(); - org.opendaylight.yang.gen.v1.http.org.openroadm.common.network.rev181130.Link1Builder lnk2bldr - = new org.opendaylight.yang.gen.v1.http.org.openroadm.common.network.rev181130.Link1Builder() + Link1Builder lnk2bldr + = new Link1Builder() .setLinkType(isXponderInput ? OpenroadmLinkType.XPONDERINPUT : OpenroadmLinkType.XPONDEROUTPUT) .setOppositeLink(LinkIdUtil.getOppositeLinkId(srcNode, srcTp, destNode, destTp)); + // If both TPs of the Xpdr2Rdm link are inService --> link inService. Otherwise outOfService + if (State.InService.equals(xpdrTp.augmentation(org.opendaylight.yang.gen.v1.http + .org.openroadm.common.network.rev211210.TerminationPoint1.class).getOperationalState()) + && State.InService.equals(rdmTp.augmentation(org.opendaylight.yang.gen.v1.http + .org.openroadm.common.network.rev211210.TerminationPoint1.class).getOperationalState())) { + lnk2bldr.setOperationalState(State.InService).setAdministrativeState(AdminStates.InService); + } else { + lnk2bldr.setOperationalState(State.OutOfService).setAdministrativeState(AdminStates.OutOfService); + } LinkBuilder linkBuilder = TopologyUtils.createLink(srcNode, destNode, srcTp, destTp, null) - .addAugmentation(Link1.class, lnk1bldr.build()) - .addAugmentation( - org.opendaylight.yang.gen.v1.http.org.openroadm.common.network.rev181130.Link1.class, - lnk2bldr.build()); + .addAugmentation(lnk2bldr.build()); - LOG.info("Link id in the linkbldr {}", linkBuilder.getLinkId()); - LOG.info("Link with oppo link {}", linkBuilder.augmentation(Link1.class)); - Network1Builder nwBldr1 = new Network1Builder().setLink(ImmutableList.of(linkBuilder.build())); + LOG.info("Creating Link with id {}", linkBuilder.getLinkId()); + Link link = linkBuilder.build(); + Network1Builder nwBldr1 = new Network1Builder().setLink(ImmutableMap.of(link.key(),link)); NetworkId nwId = new NetworkId(NetworkUtils.OVERLAY_NETWORK_ID); - NetworkBuilder nwBuilder = new NetworkBuilder() + Node node = nodeBldr.build(); + return new NetworkBuilder() .setNetworkId(nwId) .withKey(new NetworkKey(nwId)) - .addAugmentation(Network1.class, nwBldr1.build()) - .setNode(ImmutableList.of(nodeBldr.build())); - return nwBuilder; + .addAugmentation(nwBldr1.build()) + .setNode(ImmutableMap.of(node.key(),node)); } private static TerminationPoint getTpofNode(String srcNode, String srcTp, DataBroker dataBroker) {