2 * ============LICENSE_START=======================================================
3 * ONAP : ccsdk features
4 * ================================================================================
5 * Copyright (C) 2020 highstreet technologies GmbH Intellectual Property.
7 * ================================================================================
8 * Licensed under the Apache License, Version 2.0 (the "License");
9 * you may not use this file except in compliance with the License.
10 * You may obtain a copy of the License at
12 * http://www.apache.org/licenses/LICENSE-2.0
14 * Unless required by applicable law or agreed to in writing, software
15 * distributed under the License is distributed on an "AS IS" BASIS,
16 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
17 * See the License for the specific language governing permissions and
18 * limitations under the License.
19 * ============LICENSE_END=========================================================
22 package org.onap.ccsdk.features.sdnr.wt.devicemanager.openroadm71.impl;
24 import org.onap.ccsdk.features.sdnr.wt.netconfnodestateservice.NetconfAccessor;
25 import org.opendaylight.yang.gen.v1.http.org.openroadm.device.rev200529.circuit.packs.CircuitPacks;
26 import org.opendaylight.yang.gen.v1.http.org.openroadm.device.rev200529.interfaces.grp.Interface;
27 import org.opendaylight.yang.gen.v1.http.org.openroadm.device.rev200529.org.openroadm.device.container.OrgOpenroadmDevice;
28 import org.opendaylight.yang.gen.v1.http.org.openroadm.device.rev200529.org.openroadm.device.container.org.openroadm.device.Info;
29 import org.opendaylight.yang.gen.v1.http.org.openroadm.device.rev200529.org.openroadm.device.container.org.openroadm.device.Xponder;
30 import org.opendaylight.yang.gen.v1.http.org.openroadm.device.rev200529.shelves.Shelves;
31 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.data.provider.rev201110.Inventory;
32 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.data.provider.rev201110.InventoryBuilder;
33 import org.opendaylight.yangtools.yang.common.Uint32;
34 import org.slf4j.Logger;
35 import org.slf4j.LoggerFactory;
38 * @author Shabnam Sultana
40 * Reading the inventory data of an open roadm device
43 public class OpenroadmInventoryInput {
45 private static final Logger log = LoggerFactory.getLogger(OpenroadmInventoryInput.class);
46 private static final String NOT_AVAILABLE = "N/A";
47 private OrgOpenroadmDevice openRoadmDevice;
48 private final NetconfAccessor accessor;
52 public OpenroadmInventoryInput(NetconfAccessor netconfAccessor, OrgOpenroadmDevice roadmDevice) {
53 this.openRoadmDevice = roadmDevice;
54 this.accessor = netconfAccessor;
56 // end of constructors
59 public Inventory getInventoryData(Uint32 treeLevel) {
60 InventoryBuilder inventoryBuilder = new InventoryBuilder();
61 log.info("Info for device {}", this.openRoadmDevice.getInfo().getNodeId().getValue());
62 Info info = this.openRoadmDevice.getInfo();
63 inventoryBuilder.setNodeId(this.accessor.getNodeId().getValue())
64 .setUuid(info.getNodeId() == null ? NOT_AVAILABLE : info.getNodeId().getValue())
65 .setDate(info.getCurrentDatetime() != null ? info.getCurrentDatetime().getValue() : null)
66 .setId(info.getNodeId().getValue()).setManufacturerIdentifier(info.getVendor())
67 .setModelIdentifier(info.getModel()).setSerial(info.getSerialId()).setTreeLevel(treeLevel)
68 .setVersion(info.getOpenroadmVersion() != null ? info.getOpenroadmVersion().getName() : null)
69 .setDescription("org-openroadm-device").setParentUuid("None").setTypeName(info.getNodeType().getName())
70 .setPartTypeId("device");
71 log.info("Inventory data written for device {}", this.openRoadmDevice.getInfo().getNodeId().getValue());
72 return inventoryBuilder.build();
75 public Inventory getShelvesInventory(Shelves shelf, Uint32 treeLevel) {
76 InventoryBuilder inventoryBuilder = new InventoryBuilder();
77 inventoryBuilder.setNodeId(this.accessor.getNodeId().getValue()).setId(shelf.getShelfName())
78 .setDescription((shelf.getUserDescription() == null)
79 ? ("Position: " + shelf.getShelfPosition() + "\nState: " + shelf.getOperationalState())
80 : (shelf.getUserDescription()) + "\nPosition: " + shelf.getShelfPosition() + "\nState: "
81 + shelf.getOperationalState())
82 .setSerial(shelf.getSerialId()).setUuid(shelf.getShelfName())
83 .setParentUuid(this.openRoadmDevice.getInfo().getNodeId().getValue()).setTreeLevel(treeLevel)
84 .setTypeName(shelf.getShelfType()).setPartTypeId(shelf.getClei())
85 .setManufacturerIdentifier(shelf.getVendor()).setModelIdentifier(shelf.getModel())
86 .setVersion(shelf.getHardwareVersion())
87 .setDate(shelf.getManufactureDate() != null ? shelf.getManufactureDate().getValue() : NOT_AVAILABLE);
88 log.info("Inventory data written for Shelf {}", shelf.getShelfName());
89 return inventoryBuilder.build();
92 public Inventory getInterfacesInventory(Interface deviceInterface, Uint32 treeLevel) {
93 InventoryBuilder inventoryBuilder = new InventoryBuilder();
94 inventoryBuilder.setNodeId(this.accessor.getNodeId().getValue()).setId(deviceInterface.getName())
96 (deviceInterface.getDescription() == null) ? NOT_AVAILABLE : deviceInterface.getDescription())
97 .setUuid(deviceInterface.getName()).setSerial(deviceInterface.getName())
98 .setParentUuid((deviceInterface.getSupportingCircuitPackName() != null)
99 ? deviceInterface.getSupportingCircuitPackName()
100 // : ((deviceInterface.getSupportingInterface() != null) ? deviceInterface.getSupportingInterface()
101 : this.openRoadmDevice.getInfo().getNodeId().getValue())
102 .setTreeLevel(treeLevel)
103 .setTypeName((deviceInterface.getType() == null) ? "Interface"
104 : deviceInterface.getType().getName().substring(69,
105 deviceInterface.getType().getName().length()))
106 .setPartTypeId("Interface").setManufacturerIdentifier(this.openRoadmDevice.getInfo().getVendor())
107 .setModelIdentifier(this.openRoadmDevice.getInfo().getModel()).setVersion("N/A")
108 .setDate(this.openRoadmDevice.getInfo().getCurrentDatetime().getValue());
109 log.info("Inventory data written for Interface {}", deviceInterface.getName());
111 return inventoryBuilder.build();
114 public Inventory getCircuitPackInventory(CircuitPacks circuitPack, Uint32 treeLevel) {
115 InventoryBuilder inventoryBuilder = new InventoryBuilder();
116 inventoryBuilder.setNodeId(this.accessor.getNodeId().getValue()).setUuid(circuitPack.getCircuitPackName())
117 .setDate((circuitPack.getManufactureDate() == null) ? NOT_AVAILABLE
118 : circuitPack.getManufactureDate().getValue().substring(0, 19))
119 .setId(circuitPack.getCircuitPackName()).setManufacturerIdentifier(circuitPack.getVendor())
120 .setModelIdentifier(circuitPack.getModel()).setSerial(circuitPack.getSerialId()).setTreeLevel(treeLevel)
121 .setVersion(circuitPack.getHardwareVersion())
122 .setDescription("ProductCode: " + circuitPack.getProductCode() + " " + "Mode: "
123 + circuitPack.getCircuitPackMode())
124 .setTypeName((circuitPack.getType() == null) ? circuitPack.getCircuitPackType() : circuitPack.getType())
125 .setPartTypeId((circuitPack.getClei() == null) ? circuitPack.getType() : circuitPack.getClei())
126 .setParentUuid((circuitPack.getParentCircuitPack() != null)
127 ? circuitPack.getParentCircuitPack().getCircuitPackName()
128 : ((circuitPack.getShelf() != null) ? circuitPack.getShelf()
129 : this.openRoadmDevice.getInfo().getNodeId().getValue()));
130 log.info("Inventory data written for CircuitPack {}", circuitPack.getCircuitPackName());
132 return inventoryBuilder.build();
135 public Inventory getXponderInventory(Xponder xpdr, Uint32 treeLevel) {
136 InventoryBuilder inventoryBuilder = new InventoryBuilder();
137 inventoryBuilder.setNodeId(this.accessor.getNodeId().getValue()).setId(xpdr.getXpdrNumber().toString())
138 .setDescription("Xponder\nLifecycleState: " + xpdr.getLifecycleState().getName())
139 .setUuid(xpdr.getXpdrNumber().toString()).setSerial(xpdr.getXpdrNumber().toString())
140 .setParentUuid(this.openRoadmDevice.getInfo().getNodeId().getValue()).setTreeLevel(treeLevel)
141 .setTypeName(xpdr.getXpdrType().getName()).setPartTypeId(xpdr.getXpdrType().getName())
142 .setManufacturerIdentifier(this.openRoadmDevice.getInfo().getVendor())
143 .setModelIdentifier(this.openRoadmDevice.getInfo().getModel())
144 .setVersion(this.openRoadmDevice.getInfo().getOpenroadmVersion().getName())
145 .setDate(this.openRoadmDevice.getInfo().getCurrentDatetime().getValue());
146 log.info("Inventory data written for Xponder{}", xpdr.getXpdrNumber());
148 return inventoryBuilder.build();
150 // end of public methods