-
- }
-
- private void setTerminationPointsChangedMap(CircuitPacks changedCpack, String nodeId) {
- List<Ports> portsList = new ArrayList<>(Objects.requireNonNull(changedCpack.getPorts()).values());
- for (Ports port : portsList) {
- String lcp = port.getLogicalConnectionPoint();
- if (lcp != null) {
- String abstractNodeid = nodeId + "-" + lcp.split("-")[0];
- if (!this.terminationPointsChanged.containsKey(abstractNodeid + "-" + lcp)) {
- LOG.info("Node id {}, LCP {}", abstractNodeid, lcp);
- this.terminationPointsChanged.put(abstractNodeid + "-" + lcp,
- State.forValue(port.getOperationalState().getIntValue()));
- }
- }
- }
- }
-
- private void updateOpenRoadmNetworkTopologyTPs(List<Node> nodesList, String nodeId) {
- /* 1. The nodes in nodesList are abstract nodes (i.e. ROADMA01-DEG1) and we have the id of the node that has
- a change (i.e. ROADMA01). So we only need to look for the abstract nodes that belong to the physical node. */
- String abstractNodeId;
- for (Node node : nodesList) {
- abstractNodeId = Objects.requireNonNull(node.getNodeId()).getValue();
- // Checking if the node is operationally inService
- if (abstractNodeId.contains(nodeId) && node.augmentation(org.opendaylight.yang.gen.v1.http
- .org.openroadm.common.network.rev200529.Node1.class)
- .getOperationalState().equals(State.InService)) {
- /* 2. Check if the state of the termination points from the topology shard are equal to the state of
- the termination points in the previously created map. */
- List<TerminationPoint> tpList = new ArrayList<>(Objects.requireNonNull(node.augmentation(Node1.class))
- .getTerminationPoint().values());
- Map<TerminationPointKey, TerminationPoint> updatedTpMap = new HashMap<>();
- for (TerminationPoint tp : tpList) {
- String tpId = Objects.requireNonNull(tp.getTpId()).getValue();
- State tpState = Objects.requireNonNull(tp.augmentation(org.opendaylight.yang.gen.v1.http
- .org.openroadm.common.network.rev200529.TerminationPoint1.class)).getOperationalState();
- String key = abstractNodeId + "-" + tpId;
- if (this.terminationPointsChanged.containsKey(key)
- && !this.terminationPointsChanged.get(key).equals(tpState)) {
- // The state of a termination point has changed... updating
- State newTpOperationalState = null;
- AdminStates newTpAdminState = null;
- /* 3. If the TP has changed its state, it has to be added to the links Map, as a Link state
- is defined by the state of the TPs that model the link. */
- switch (this.terminationPointsChanged.get(key)) {
- case InService:
- newTpAdminState = AdminStates.InService;
- newTpOperationalState = State.InService;
- // Add TP and state inService to the links Map
- this.linksChanged.put(key, State.InService);
- // Update topology change list for service handler notification
- this.topologyChanges.put(
- new OrdTopologyChangesKey(node.getNodeId().getValue() + "-" + tpId),
- new OrdTopologyChangesBuilder()
- .setId(node.getNodeId().getValue() + "-" + tpId)
- .setState(newTpOperationalState)
- .build());
- break;
- case OutOfService:
- newTpAdminState = AdminStates.OutOfService;
- newTpOperationalState = State.OutOfService;
- // Add TP and state outOfService to the links Map
- this.linksChanged.put(key, State.OutOfService);
- // Update topology change list for service handler notification
- this.topologyChanges.put(
- new OrdTopologyChangesKey(node.getNodeId().getValue() + "-" + tpId),
- new OrdTopologyChangesBuilder()
- .setId(node.getNodeId().getValue() + "-" + tpId)
- .setState(newTpOperationalState)
- .build());
- break;
- case Degraded:
- LOG.warn("Operational state Degraded not handled");
- break;
- default:
- LOG.warn("Unrecognized state!");
- }
- // 4. Add modified TP to the updated List.
- TerminationPoint updTp = new TerminationPointBuilder().withKey(tp.key())
- .setTpId(tp.getTpId())
- .addAugmentation(new TerminationPoint1Builder()
- .setAdministrativeState(newTpAdminState)
- .setOperationalState(newTpOperationalState)
- .build())
- .build();
- updatedTpMap.put(tp.key(), updTp);
- }
- // 5. Update the list of termination points of the corresponding node and merge to the datastore.
- if (!updatedTpMap.isEmpty()) {
- Node updNode = new NodeBuilder().setNodeId(node.getNodeId()).addAugmentation(new Node1Builder()
- .setTerminationPoint(updatedTpMap).build()).build();
- InstanceIdentifier<Node> iiOpenRoadmTopologyNode = InstanceIdentifier.builder(
- Networks.class).child(Network.class, new NetworkKey(
- new NetworkId(NetworkUtils.OVERLAY_NETWORK_ID))).child(Node.class, node.key())
- .build();
- networkTransactionService.merge(LogicalDatastoreType.CONFIGURATION, iiOpenRoadmTopologyNode,
- updNode);
- try {
- networkTransactionService.commit().get();
- } catch (InterruptedException e) {
- LOG.error("Couldnt commit change to openroadm topology.", e);
- Thread.currentThread().interrupt();
- } catch (ExecutionException e) {
- LOG.error("Couldnt commit change to openroadm topology.", e);
- }
- }
- }
- }
- }