X-Git-Url: https://git.opendaylight.org/gerrit/gitweb?a=blobdiff_plain;f=renderer%2Fsrc%2Fmain%2Fjava%2Forg%2Fopendaylight%2Ftransportpce%2Frenderer%2FNetworkModelWavelengthServiceImpl.java;h=eee258516ae28e70d5d68e69c7cec9d92783a9df;hb=66ccddbe00692f230350a19e1a222f09d6abd9a7;hp=0d596ee5551c27c3c2b2d71baf9b382ff8178617;hpb=e9ff01802d87203416f6af280c0590c22ed75538;p=transportpce.git diff --git a/renderer/src/main/java/org/opendaylight/transportpce/renderer/NetworkModelWavelengthServiceImpl.java b/renderer/src/main/java/org/opendaylight/transportpce/renderer/NetworkModelWavelengthServiceImpl.java index 0d596ee55..eee258516 100644 --- a/renderer/src/main/java/org/opendaylight/transportpce/renderer/NetworkModelWavelengthServiceImpl.java +++ b/renderer/src/main/java/org/opendaylight/transportpce/renderer/NetworkModelWavelengthServiceImpl.java @@ -7,19 +7,18 @@ */ package org.opendaylight.transportpce.renderer; -import com.google.common.base.Optional; - import java.math.BigDecimal; import java.util.ArrayList; import java.util.List; +import java.util.Optional; import java.util.concurrent.ExecutionException; import java.util.concurrent.TimeUnit; import java.util.concurrent.TimeoutException; import java.util.stream.Collectors; -import org.opendaylight.controller.md.sal.binding.api.DataBroker; -import org.opendaylight.controller.md.sal.binding.api.ReadOnlyTransaction; -import org.opendaylight.controller.md.sal.binding.api.WriteTransaction; -import org.opendaylight.controller.md.sal.common.api.data.LogicalDatastoreType; +import org.opendaylight.mdsal.binding.api.DataBroker; +import org.opendaylight.mdsal.binding.api.ReadTransaction; +import org.opendaylight.mdsal.binding.api.WriteTransaction; +import org.opendaylight.mdsal.common.api.LogicalDatastoreType; import org.opendaylight.transportpce.common.NetworkUtils; import org.opendaylight.transportpce.common.Timeouts; import org.opendaylight.transportpce.common.fixedflex.FixedFlexImpl; @@ -48,7 +47,6 @@ import org.opendaylight.yang.gen.v1.http.org.openroadm.network.topology.rev18113 import org.opendaylight.yang.gen.v1.http.org.openroadm.network.topology.rev181130.networks.network.node.termination.point.TxTtpAttributes; import org.opendaylight.yang.gen.v1.http.org.openroadm.network.topology.rev181130.networks.network.node.termination.point.TxTtpAttributesBuilder; import org.opendaylight.yang.gen.v1.http.org.openroadm.network.topology.rev181130.networks.network.node.termination.point.XpdrClientAttributes; -import org.opendaylight.yang.gen.v1.http.org.openroadm.network.topology.rev181130.networks.network.node.termination.point.XpdrClientAttributesBuilder; import org.opendaylight.yang.gen.v1.http.org.openroadm.network.topology.rev181130.networks.network.node.termination.point.XpdrNetworkAttributes; 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.topology.rev181130.networks.network.node.termination.point.XpdrPortAttributes; @@ -162,16 +160,41 @@ public class NetworkModelWavelengthServiceImpl implements NetworkModelWavelength .Node.class, new NodeKey(new NodeId(nodeId))).augmentation(Node1.class).build(); } + private InstanceIdentifier createNode2IID(String nodeId) { + return InstanceIdentifier + .builder(Networks.class).child(Network.class, new NetworkKey( + new NetworkId(NetworkUtils.OVERLAY_NETWORK_ID))) + .child(org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.network.rev180226.networks.network + .Node.class, new NodeKey(new NodeId(nodeId))).augmentation(org.opendaylight.yang.gen.v1.http.org + .openroadm.common.network.rev181130.Node1.class).build(); + } + private Optional getNode1FromDatastore(String nodeId) { InstanceIdentifier nodeIID = createNode1IID(nodeId); Optional nodeOpt; - try (ReadOnlyTransaction nodeReadTx = this.dataBroker.newReadOnlyTransaction()) { + try (ReadTransaction nodeReadTx = this.dataBroker.newReadOnlyTransaction()) { + nodeOpt = nodeReadTx.read(LogicalDatastoreType.CONFIGURATION, nodeIID) + .get(Timeouts.DATASTORE_READ, TimeUnit.MILLISECONDS); + } catch (InterruptedException | ExecutionException | TimeoutException e) { + LOG.warn("Exception while getting node from {} topology!", NetworkUtils.OVERLAY_NETWORK_ID, e); + nodeOpt = Optional.empty(); + } + return nodeOpt; + } + + private Optional getNode2FromDatastore(String nodeId) { + InstanceIdentifier + nodeIID = createNode2IID(nodeId); + Optional nodeOpt; + try (ReadTransaction nodeReadTx = this.dataBroker.newReadOnlyTransaction()) { nodeOpt = nodeReadTx.read(LogicalDatastoreType.CONFIGURATION, nodeIID) .get(Timeouts.DATASTORE_READ, TimeUnit.MILLISECONDS); } catch (InterruptedException | ExecutionException | TimeoutException e) { LOG.warn("Exception while getting node from {} topology!", NetworkUtils.OVERLAY_NETWORK_ID, e); - nodeOpt = Optional.absent(); + nodeOpt = Optional.empty(); } return nodeOpt; } @@ -179,22 +202,31 @@ public class NetworkModelWavelengthServiceImpl implements NetworkModelWavelength private void addAvailableWL(List nodeIds, Long wavelengthNumber) { WriteTransaction nodeWriteTx = this.dataBroker.newWriteOnlyTransaction(); for (String nodeId : nodeIds) { - Optional nodeOpt = - getNode1FromDatastore(nodeId); - Node1 node; - if (nodeOpt.isPresent()) { - node = nodeOpt.get(); + Optional node1Opt = getNode1FromDatastore(nodeId); + Node1 node1; + Optional node2Opt = + getNode2FromDatastore(nodeId); + org.opendaylight.yang.gen.v1.http.org.openroadm.common.network.rev181130.Node1 node2; + if (node2Opt.isPresent()) { + node2 = node2Opt.get(); } else { - LOG.error("Unable to get node {} from topology {}! Skipping addition of available wavelength for this" - + "node.", nodeId, NetworkUtils.OVERLAY_NETWORK_ID); + LOG.error("Unable to get common-network node {} from topology {}! Skipping addition of available" + + "wavelength for this node.", nodeId, NetworkUtils.OVERLAY_NETWORK_ID); + continue; + } + if (node1Opt.isPresent()) { + node1 = node1Opt.get(); + } else { + LOG.error("Unable to get network-topology node {} from topology {}! Skipping addition of available" + + "wavelength for this node.", nodeId, NetworkUtils.OVERLAY_NETWORK_ID); continue; } - Node1Builder node1Builder = new Node1Builder(node); + Node1Builder node1Builder = new Node1Builder(node1); - switch (node.getNodeType()) { + switch (node2.getNodeType()) { case DEGREE: - DegreeAttributes degreeAttributes = node.getDegreeAttributes(); + DegreeAttributes degreeAttributes = node1.getDegreeAttributes(); DegreeAttributesBuilder degreeAttributesBuilder; if (degreeAttributes == null) { degreeAttributesBuilder = new DegreeAttributesBuilder(); @@ -213,7 +245,7 @@ public class NetworkModelWavelengthServiceImpl implements NetworkModelWavelength node1Builder.setDegreeAttributes(degreeAttributesBuilder.build()); break; case SRG: - SrgAttributes srgAttributes = node.getSrgAttributes(); + SrgAttributes srgAttributes = node1.getSrgAttributes(); SrgAttributesBuilder srgAttributesBuilder; if (srgAttributes == null) { srgAttributesBuilder = new SrgAttributesBuilder(); @@ -234,10 +266,10 @@ public class NetworkModelWavelengthServiceImpl implements NetworkModelWavelength // TODO skip for now continue; } - nodeWriteTx.put(LogicalDatastoreType.CONFIGURATION, createNode1IID(nodeId), node1Builder.build(), true); + nodeWriteTx.put(LogicalDatastoreType.CONFIGURATION, createNode1IID(nodeId), node1Builder.build()); } try { - nodeWriteTx.submit().get(Timeouts.DATASTORE_DELETE, TimeUnit.MILLISECONDS); + nodeWriteTx.commit().get(Timeouts.DATASTORE_DELETE, TimeUnit.MILLISECONDS); } catch (InterruptedException | ExecutionException | TimeoutException e) { LOG.error("Unable to add available WL {} for nodes {}!", wavelengthNumber, String.join(", ", nodeIds), e); } @@ -246,13 +278,15 @@ public class NetworkModelWavelengthServiceImpl implements NetworkModelWavelength private void deleteAvailableWL(List nodeIds, Long wavelengthNumber) { WriteTransaction nodeWriteTx = this.dataBroker.newWriteOnlyTransaction(); for (String nodeId : nodeIds) { - Optional nodeOpt = getNode1FromDatastore(nodeId); - Node1 node; + Optional nodeOpt = + getNode2FromDatastore(nodeId); + org.opendaylight.yang.gen.v1.http.org.openroadm.common.network.rev181130.Node1 node; if (nodeOpt.isPresent()) { node = nodeOpt.get(); } else { - LOG.error("Unable to get node {} from topology {}! Skipping addition of available wavelength for this" - + "node.", nodeId, NetworkUtils.OVERLAY_NETWORK_ID); + LOG.error( + "Unable to get node {} from topology {}! Skipping addition of available wavelength for this node.", + nodeId, NetworkUtils.OVERLAY_NETWORK_ID); continue; } @@ -262,6 +296,8 @@ public class NetworkModelWavelengthServiceImpl implements NetworkModelWavelength InstanceIdentifier availableWlIID; switch (node.getNodeType()) { + //switch (((org.opendaylight.yang.gen.v1.http.org.openroadm.common.network.rev181130.Node1) node) + // .getNodeType()) { case DEGREE: availableWlIID = nodeIIDBuilder.child(DegreeAttributes.class) .child(org.opendaylight.yang.gen.v1.http.org.openroadm.degree.rev181130.degree.node @@ -285,7 +321,7 @@ public class NetworkModelWavelengthServiceImpl implements NetworkModelWavelength nodeWriteTx.delete(LogicalDatastoreType.CONFIGURATION, availableWlIID); } try { - nodeWriteTx.submit().get(Timeouts.DATASTORE_DELETE, TimeUnit.MILLISECONDS); + nodeWriteTx.commit().get(Timeouts.DATASTORE_DELETE, TimeUnit.MILLISECONDS); } catch (InterruptedException | ExecutionException | TimeoutException e) { LOG.error("Unable to delete available WL {} for nodes {}!", wavelengthNumber, String.join(", ", nodeIds), e); @@ -303,16 +339,45 @@ public class NetworkModelWavelengthServiceImpl implements NetworkModelWavelength .augmentation(TerminationPoint1.class); } + private InstanceIdentifierBuilder createTerminationPoint2IIDBuilder(String nodeId, String tpId) { + return InstanceIdentifier + .builder(Networks.class).child(Network.class, new NetworkKey( + new NetworkId(NetworkUtils.OVERLAY_NETWORK_ID))).child(org.opendaylight.yang.gen.v1.urn.ietf.params.xml + .ns.yang.ietf.network.rev180226.networks.network.Node.class, new NodeKey(new NodeId(nodeId))) + .augmentation(org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.network.topology.rev180226 + .Node1.class).child(org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.network.topology + .rev180226.networks.network.node.TerminationPoint.class, new TerminationPointKey(new TpId(tpId))) + .augmentation(org.opendaylight.yang.gen.v1.http.org.openroadm.common.network.rev181130 + .TerminationPoint1.class); + } + private Optional getTerminationPoint1FromDatastore(String nodeId, String tpId) { InstanceIdentifier tpIID = createTerminationPoint1IIDBuilder(nodeId, tpId).build(); Optional tpOpt; - try (ReadOnlyTransaction readTx = this.dataBroker.newReadOnlyTransaction()) { + try (ReadTransaction readTx = this.dataBroker.newReadOnlyTransaction()) { + tpOpt = readTx.read(LogicalDatastoreType.CONFIGURATION, tpIID) + .get(Timeouts.DATASTORE_READ, TimeUnit.MILLISECONDS); + } catch (InterruptedException | ExecutionException | TimeoutException e) { + LOG.warn("Exception while getting termination point from {} topology!", NetworkUtils.OVERLAY_NETWORK_ID, + e); + tpOpt = Optional.empty(); + } + return tpOpt; + } + + private Optional getTerminationPoint2FromDatastore(String nodeId, String tpId) { + InstanceIdentifier tpIID = createTerminationPoint2IIDBuilder(nodeId, tpId).build(); + Optional tpOpt; + try (ReadTransaction readTx = this.dataBroker.newReadOnlyTransaction()) { tpOpt = readTx.read(LogicalDatastoreType.CONFIGURATION, tpIID) .get(Timeouts.DATASTORE_READ, TimeUnit.MILLISECONDS); } catch (InterruptedException | ExecutionException | TimeoutException e) { LOG.warn("Exception while getting termination point from {} topology!", NetworkUtils.OVERLAY_NETWORK_ID, e); - tpOpt = Optional.absent(); + tpOpt = Optional.empty(); } return tpOpt; } @@ -320,11 +385,14 @@ public class NetworkModelWavelengthServiceImpl implements NetworkModelWavelength private void deleteUsedWL(long wavelengthIndex, List tpIds) { WriteTransaction deleteUsedWlTx = this.dataBroker.newWriteOnlyTransaction(); for (NodeIdPair idPair : tpIds) { - Optional tpOpt = getTerminationPoint1FromDatastore(idPair.getNodeID(), idPair.getTpID()); + Optional tp2Opt = getTerminationPoint2FromDatastore(idPair.getNodeID(), idPair.getTpID()); OpenroadmTpType tpType; - if (tpOpt.isPresent()) { - tpType = tpOpt.get().getTpType(); + if (tp2Opt.isPresent()) { + tpType = tp2Opt.get().getTpType(); + // ((org.opendaylight.yang.gen.v1.http.org.openroadm.common.network.rev181130.TerminationPoint1) + // tpOpt.get()).getTpType(); } else { LOG.error("Unable to get termination point {} from topology {}! Skipping removal of used wavelength" + " for this node.", idPair.getTpID(), NetworkUtils.OVERLAY_NETWORK_ID); @@ -386,7 +454,7 @@ public class NetworkModelWavelengthServiceImpl implements NetworkModelWavelength deleteUsedWlTx.delete(LogicalDatastoreType.CONFIGURATION, usedWlIID); } try { - deleteUsedWlTx.submit().get(Timeouts.DATASTORE_DELETE, TimeUnit.MILLISECONDS); + deleteUsedWlTx.commit().get(Timeouts.DATASTORE_DELETE, TimeUnit.MILLISECONDS); } catch (InterruptedException | ExecutionException | TimeoutException e) { List tpIdsString = tpIds.stream().map(NodeIdPair::toString).collect(Collectors.toList()); LOG.error("Unable to delete used WL {} from TPs {}!", wavelengthIndex, String.join(", ", tpIdsString), e); @@ -395,29 +463,40 @@ public class NetworkModelWavelengthServiceImpl implements NetworkModelWavelength private void addUsedWL(long wavelengthIndex, List tpIds) { WriteTransaction addUsedWlTx = this.dataBroker.newWriteOnlyTransaction(); - FixedFlexImpl fixedFlex = new FixedFlexImpl(); - fixedFlex.getFixedFlexWaveMapping(wavelengthIndex); - FrequencyGHz frequencyGHz = new FrequencyGHz(new BigDecimal(fixedFlex.getWavelength())); - FrequencyTHz frequencyTHz = new FrequencyTHz(new BigDecimal(fixedFlex.getCenterFrequency())); - + FixedFlexImpl fixedFlex = new FixedFlexImpl(wavelengthIndex); + FrequencyTHz centralTHz = new FrequencyTHz(new BigDecimal(fixedFlex.getCenterFrequency())); for (NodeIdPair idPair : tpIds) { - Optional tpOpt = getTerminationPoint1FromDatastore(idPair.getNodeID(), idPair.getTpID()); - - TerminationPoint1 tp; - if (tpOpt.isPresent()) { - tp = tpOpt.get(); + Optional tp1Opt = + getTerminationPoint1FromDatastore(idPair.getNodeID(), idPair.getTpID()); + TerminationPoint1 tp1 = null; + Optional tp2Opt = getTerminationPoint2FromDatastore(idPair.getNodeID(), idPair.getTpID()); + org.opendaylight.yang.gen.v1.http.org.openroadm.common.network.rev181130.TerminationPoint1 tp2; + if (tp2Opt.isPresent()) { + tp2 = tp2Opt.get(); } else { - LOG.error("Unable to get termination point {} from topology {}! Skipping removal of used wavelength" - + " for this node.", idPair.getTpID(), NetworkUtils.OVERLAY_NETWORK_ID); + LOG.error( + "Unable to get common-network termination point {} from topology {}! Skip removal of used" + + "wavelength for the node", idPair.getTpID(), NetworkUtils.OVERLAY_NETWORK_ID); continue; } + TerminationPoint1Builder tp1Builder; + if (tp1Opt.isPresent()) { + tp1 = tp1Opt.get(); + tp1Builder = new TerminationPoint1Builder(tp1); + } else { + tp1Builder = new TerminationPoint1Builder(); + } - TerminationPoint1Builder tp1Builder = new TerminationPoint1Builder(tp); - - switch (tp.getTpType()) { + switch (tp2.getTpType()) { + //switch (((org.opendaylight.yang.gen.v1.http.org.openroadm.common.network.rev181130.TerminationPoint1) tp) + // .getTpType()) { case DEGREETXTTP: case DEGREETXRXTTP: - TxTtpAttributes txTtpAttributes = tp.getTxTtpAttributes(); + TxTtpAttributes txTtpAttributes = null; + if (tp1 != null) { + txTtpAttributes = tp1.getTxTtpAttributes(); + } TxTtpAttributesBuilder txTtpAttributesBuilder; if (txTtpAttributes == null) { txTtpAttributesBuilder = new TxTtpAttributesBuilder(); @@ -429,12 +508,16 @@ public class NetworkModelWavelengthServiceImpl implements NetworkModelWavelength usedDegreeTxTtpWls = new ArrayList<>(); txTtpAttributesBuilder.setUsedWavelengths(usedDegreeTxTtpWls); } - usedDegreeTxTtpWls.add(new UsedWavelengthsBuilder().setIndex(wavelengthIndex).build()); + usedDegreeTxTtpWls.add(new UsedWavelengthsBuilder().setIndex(wavelengthIndex) + .setFrequency(centralTHz).setWidth(FrequencyGHz.getDefaultInstance("40")).build()); tp1Builder.setTxTtpAttributes(txTtpAttributesBuilder.build()); break; case DEGREERXTTP: - RxTtpAttributes rxTtpAttributes = tp.getRxTtpAttributes(); + RxTtpAttributes rxTtpAttributes = null; + if (tp1 != null) { + rxTtpAttributes = tp1.getRxTtpAttributes(); + } RxTtpAttributesBuilder rxTtpAttributesBuilder; if (rxTtpAttributes == null) { rxTtpAttributesBuilder = new RxTtpAttributesBuilder(); @@ -446,14 +529,18 @@ public class NetworkModelWavelengthServiceImpl implements NetworkModelWavelength usedDegreeRxTtpWls = new ArrayList<>(); rxTtpAttributesBuilder.setUsedWavelengths(usedDegreeRxTtpWls); } - usedDegreeRxTtpWls.add(new UsedWavelengthsBuilder().setIndex(wavelengthIndex).build()); + usedDegreeRxTtpWls.add(new UsedWavelengthsBuilder().setIndex(wavelengthIndex) + .setFrequency(centralTHz).setWidth(FrequencyGHz.getDefaultInstance("40")).build()); tp1Builder.setRxTtpAttributes(rxTtpAttributesBuilder.build()); break; case DEGREETXCTP: case DEGREERXCTP: case DEGREETXRXCTP: - CtpAttributes ctpAttributes = tp.getCtpAttributes(); + CtpAttributes ctpAttributes = null; + if (tp1 != null) { + ctpAttributes = tp1.getCtpAttributes(); + } CtpAttributesBuilder ctpAttributesBuilder; if (ctpAttributes == null) { ctpAttributesBuilder = new CtpAttributesBuilder(); @@ -465,14 +552,18 @@ public class NetworkModelWavelengthServiceImpl implements NetworkModelWavelength usedDegreeCtpWls = new ArrayList<>(); ctpAttributesBuilder.setUsedWavelengths(usedDegreeCtpWls); } - usedDegreeCtpWls.add(new UsedWavelengthsBuilder().setIndex(wavelengthIndex).build()); + usedDegreeCtpWls.add(new UsedWavelengthsBuilder().setIndex(wavelengthIndex) + .setFrequency(centralTHz).setWidth(FrequencyGHz.getDefaultInstance("40")).build()); tp1Builder.setCtpAttributes(ctpAttributesBuilder.build()); break; case SRGTXCP: case SRGRXCP: case SRGTXRXCP: - CpAttributes cpAttributes = tp.getCpAttributes(); + CpAttributes cpAttributes = null; + if (tp1 != null) { + cpAttributes = tp1.getCpAttributes(); + } CpAttributesBuilder cpAttributesBuilder; if (cpAttributes == null) { cpAttributesBuilder = new CpAttributesBuilder(); @@ -488,14 +579,18 @@ public class NetworkModelWavelengthServiceImpl implements NetworkModelWavelength } usedDegreeCpWls.add(new org.opendaylight.yang.gen.v1.http.org.openroadm.network.topology.rev181130 .networks.network.node.termination.point.cp.attributes.UsedWavelengthsBuilder() - .setIndex(wavelengthIndex).build()); + .setIndex(wavelengthIndex) + .setFrequency(centralTHz).setWidth(FrequencyGHz.getDefaultInstance("40")).build()); tp1Builder.setCpAttributes(cpAttributesBuilder.build()); break; case SRGTXRXPP: case SRGRXPP: case SRGTXPP: - PpAttributes ppAttributes = tp.getPpAttributes(); + PpAttributes ppAttributes = null; + if (tp1 != null) { + ppAttributes = tp1.getPpAttributes(); + } PpAttributesBuilder ppAttributesBuilder; if (ppAttributes == null) { ppAttributesBuilder = new PpAttributesBuilder(); @@ -507,51 +602,44 @@ public class NetworkModelWavelengthServiceImpl implements NetworkModelWavelength usedDegreePpWls = new ArrayList<>(); ppAttributesBuilder.setUsedWavelength(usedDegreePpWls); } - usedDegreePpWls.add(new UsedWavelengthBuilder().setIndex(wavelengthIndex).build()); + usedDegreePpWls.add(new UsedWavelengthBuilder().setIndex(wavelengthIndex) + .setFrequency(centralTHz).setWidth(FrequencyGHz.getDefaultInstance("40")).build()); tp1Builder.setPpAttributes(ppAttributesBuilder.build()); break; case XPONDERNETWORK: - XpdrNetworkAttributes xpdrNetworkAttributes = tp.getXpdrNetworkAttributes(); + XpdrNetworkAttributes xpdrNetworkAttributes = null; + if (tp1 != null) { + xpdrNetworkAttributes = tp1.getXpdrNetworkAttributes(); + } XpdrNetworkAttributesBuilder xpdrNetworkAttributesBuilder; if (xpdrNetworkAttributes == null) { xpdrNetworkAttributesBuilder = new XpdrNetworkAttributesBuilder(); } else { xpdrNetworkAttributesBuilder = new XpdrNetworkAttributesBuilder(xpdrNetworkAttributes); } - Wavelength usedXpdrNetworkWl = new WavelengthBuilder().setWidth(frequencyGHz) - .setFrequency(frequencyTHz).build(); - tp1Builder.setXpdrNetworkAttributes(xpdrNetworkAttributesBuilder - .setWavelength(usedXpdrNetworkWl) - .build()); + Wavelength usedXpdrNetworkWl = new WavelengthBuilder() + .setWidth(FrequencyGHz.getDefaultInstance("40")).setFrequency(centralTHz).build(); + tp1Builder.setXpdrNetworkAttributes(xpdrNetworkAttributesBuilder.setWavelength(usedXpdrNetworkWl) + .build()); break; case XPONDERCLIENT: - XpdrClientAttributes xpdrClientAttributes = tp.getXpdrClientAttributes(); - XpdrClientAttributesBuilder xpdrClientAttributesBuilder; - if (xpdrClientAttributes == null) { - xpdrClientAttributesBuilder = new XpdrClientAttributesBuilder(); - } else { - xpdrClientAttributesBuilder = new XpdrClientAttributesBuilder(xpdrClientAttributes); - } - Wavelength usedXpdrClientWl = new WavelengthBuilder().setWidth(frequencyGHz) - .setFrequency(frequencyTHz).build(); - tp1Builder.setXpdrClientAttributes(xpdrClientAttributesBuilder - .setWavelength(usedXpdrClientWl) - .build()); break; case XPONDERPORT: - XpdrPortAttributes xpdrPortAttributes = tp.getXpdrPortAttributes(); + XpdrPortAttributes xpdrPortAttributes = null; + if (tp1 != null) { + xpdrPortAttributes = tp1.getXpdrPortAttributes(); + } XpdrPortAttributesBuilder xpdrPortAttributesBuilder; if (xpdrPortAttributes == null) { xpdrPortAttributesBuilder = new XpdrPortAttributesBuilder(); } else { xpdrPortAttributesBuilder = new XpdrPortAttributesBuilder(xpdrPortAttributes); } - Wavelength usedXpdrPortWl = new WavelengthBuilder().setWidth(frequencyGHz) - .setFrequency(frequencyTHz).build(); - tp1Builder.setXpdrPortAttributes(xpdrPortAttributesBuilder - .setWavelength(usedXpdrPortWl) - .build()); + Wavelength usedXpdrPortWl = new WavelengthBuilder().setWidth(FrequencyGHz.getDefaultInstance("40")) + .setFrequency(centralTHz).build(); + tp1Builder.setXpdrPortAttributes(xpdrPortAttributesBuilder.setWavelength(usedXpdrPortWl) + .build()); break; default: @@ -559,10 +647,10 @@ public class NetworkModelWavelengthServiceImpl implements NetworkModelWavelength continue; } addUsedWlTx.put(LogicalDatastoreType.CONFIGURATION, createTerminationPoint1IIDBuilder(idPair.getNodeID(), - idPair.getTpID()).build(), tp1Builder.build(), true); + idPair.getTpID()).build(), tp1Builder.build()); } try { - addUsedWlTx.submit().get(Timeouts.DATASTORE_WRITE, TimeUnit.MILLISECONDS); + addUsedWlTx.commit().get(Timeouts.DATASTORE_WRITE, TimeUnit.MILLISECONDS); } catch (InterruptedException | ExecutionException | TimeoutException e) { List tpIdsString = tpIds.stream().map(NodeIdPair::toString).collect(Collectors.toList()); LOG.error("Unable to add used WL {} for TPs {}!", wavelengthIndex, String.join(", ", tpIdsString), e);