b383c9d7016409615f6420e09051c367ade0bb29
[ccsdk/features.git] /
1 /*
2  * ============LICENSE_START=======================================================
3  * ONAP : ccsdk features
4  * ================================================================================
5  * Copyright (C) 2020 highstreet technologies GmbH Intellectual Property.
6  * All rights reserved.
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
11  *
12  *     http://www.apache.org/licenses/LICENSE-2.0
13  *
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=========================================================
20  *
21  */
22 package org.onap.ccsdk.features.sdnr.wt.devicemanager.openroadm71.impl;
23
24 import org.onap.ccsdk.features.sdnr.wt.netconfnodestateservice.NetconfAccessor;
25 import org.opendaylight.yang.gen.v1.http.org.openroadm.device.rev200529.OrgOpenroadmDevice;
26 import org.opendaylight.yang.gen.v1.http.org.openroadm.device.rev200529.circuit.packs.CircuitPacks;
27 import org.opendaylight.yang.gen.v1.http.org.openroadm.device.rev200529.interfaces.grp.Interface;
28 import org.opendaylight.yang.gen.v1.http.org.openroadm.device.rev200529.org.openroadm.device.Info;
29 import org.opendaylight.yang.gen.v1.http.org.openroadm.device.rev200529.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;
36
37 /**
38  * @author Shabnam Sultana
39  *
40  *         Reading the inventory data of an open roadm device
41  *
42  **/
43 public class OpenroadmInventoryInput {
44     // variable
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;
49     // end of variables
50
51     // constructors
52     public OpenroadmInventoryInput(NetconfAccessor netconfAccessor, OrgOpenroadmDevice roadmDevice) {
53         this.openRoadmDevice = roadmDevice;
54         this.accessor = netconfAccessor;
55     }
56     // end of constructors
57
58     // public methods
59     public Inventory getInventoryData(Uint32 treeLevel) {
60         InventoryBuilder inventoryBuilder = new InventoryBuilder();
61         log.debug("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.debug("Inventory data written for device {}", this.openRoadmDevice.getInfo().getNodeId().getValue());
72         return inventoryBuilder.build();
73     }
74
75     public Inventory getShelvesInventory(Shelves shelf, Uint32 treeLevel) {
76         InventoryBuilder inventoryBuilder = new InventoryBuilder();
77         inventoryBuilder.setNodeId(this.accessor.getNodeId().getValue())
78                 .setId(this.accessor.getNodeId().getValue() + "/" + shelf.getShelfName())
79                 .setDescription((shelf.getUserDescription() == null)
80                         ? ("Position: " + shelf.getShelfPosition() + "\nState: " + shelf.getOperationalState())
81                         : (shelf.getUserDescription()) + "\nPosition: " + shelf.getShelfPosition() + "\nState: "
82                                 + shelf.getOperationalState())
83                 .setSerial(shelf.getSerialId()).setUuid(shelf.getShelfName())
84                 .setParentUuid(this.openRoadmDevice.getInfo().getNodeId().getValue()).setTreeLevel(treeLevel)
85                 .setTypeName(shelf.getShelfType()).setPartTypeId(shelf.getClei())
86                 .setManufacturerIdentifier(shelf.getVendor()).setModelIdentifier(shelf.getModel())
87                 .setVersion(shelf.getHardwareVersion())
88                 .setDate(shelf.getManufactureDate() != null ? shelf.getManufactureDate().getValue() : NOT_AVAILABLE);
89         log.debug("Inventory data written for Shelf {}", shelf.getShelfName());
90         return inventoryBuilder.build();
91     }
92
93     public Inventory getInterfacesInventory(Interface deviceInterface, Uint32 treeLevel) {
94         InventoryBuilder inventoryBuilder = new InventoryBuilder();
95         inventoryBuilder.setNodeId(this.accessor.getNodeId().getValue())
96                 .setId(this.accessor.getNodeId().getValue() + "/" + deviceInterface.getName())
97                 .setDescription(
98                         (deviceInterface.getDescription() == null) ? NOT_AVAILABLE : deviceInterface.getDescription())
99                 .setUuid(deviceInterface.getName()).setSerial(deviceInterface.getName())
100                 .setParentUuid((deviceInterface.getSupportingCircuitPackName() != null)
101                         ? deviceInterface.getSupportingCircuitPackName()
102                         // : ((deviceInterface.getSupportingInterface() != null) ?
103                         // deviceInterface.getSupportingInterface()
104                         : this.openRoadmDevice.getInfo().getNodeId().getValue())
105                 .setTreeLevel(treeLevel)
106                 .setTypeName((deviceInterface.getType() == null) ? "Interface"
107                         : deviceInterface.getType().getClass().getSimpleName())
108                 .setPartTypeId("Interface").setManufacturerIdentifier(this.openRoadmDevice.getInfo().getVendor())
109                 .setModelIdentifier(this.openRoadmDevice.getInfo().getModel()).setVersion("N/A")
110                 .setDate(this.openRoadmDevice.getInfo().getCurrentDatetime().getValue());
111         log.debug("Inventory data written for Interface {}", deviceInterface.getName());
112
113         return inventoryBuilder.build();
114     }
115
116     public Inventory getCircuitPackInventory(CircuitPacks circuitPack, Uint32 treeLevel) {
117         InventoryBuilder inventoryBuilder = new InventoryBuilder();
118         inventoryBuilder.setNodeId(this.accessor.getNodeId().getValue()).setUuid(circuitPack.getCircuitPackName())
119                 .setDate((circuitPack.getManufactureDate() == null) ? NOT_AVAILABLE
120                         : circuitPack.getManufactureDate().getValue().substring(0, 19))
121                 .setId(this.accessor.getNodeId().getValue() + "/" + circuitPack.getCircuitPackName())
122                 .setManufacturerIdentifier(circuitPack.getVendor()).setModelIdentifier(circuitPack.getModel())
123                 .setSerial(circuitPack.getSerialId()).setTreeLevel(treeLevel)
124                 .setVersion(circuitPack.getHardwareVersion())
125                 .setDescription("ProductCode: " + circuitPack.getProductCode() + "  " + "Mode: "
126                         + circuitPack.getCircuitPackMode())
127                 .setTypeName((circuitPack.getType() == null) ? circuitPack.getCircuitPackType() : circuitPack.getType())
128                 .setPartTypeId((circuitPack.getClei() == null) ? circuitPack.getType() : circuitPack.getClei())
129                 .setParentUuid((circuitPack.getParentCircuitPack() != null)
130                         ? circuitPack.getParentCircuitPack().getCircuitPackName()
131                         : ((circuitPack.getShelf() != null) ? circuitPack.getShelf()
132                                 : this.openRoadmDevice.getInfo().getNodeId().getValue()));
133         log.debug("Inventory data written for CircuitPack {}", circuitPack.getCircuitPackName());
134
135         return inventoryBuilder.build();
136     }
137
138     public Inventory getXponderInventory(Xponder xpdr, Uint32 treeLevel) {
139         InventoryBuilder inventoryBuilder = new InventoryBuilder();
140         inventoryBuilder.setNodeId(this.accessor.getNodeId().getValue())
141                 .setId(this.accessor.getNodeId().getValue() + "/" + xpdr.getXpdrNumber().toString())
142                 .setDescription("Xponder\nLifecycleState: " + xpdr.getLifecycleState().getName())
143                 .setUuid(xpdr.getXpdrNumber().toString()).setSerial(xpdr.getXpdrNumber().toString())
144                 .setParentUuid(this.openRoadmDevice.getInfo().getNodeId().getValue()).setTreeLevel(treeLevel)
145                 .setTypeName(xpdr.getXpdrType().getName()).setPartTypeId(xpdr.getXpdrType().getName())
146                 .setManufacturerIdentifier(this.openRoadmDevice.getInfo().getVendor())
147                 .setModelIdentifier(this.openRoadmDevice.getInfo().getModel())
148                 .setVersion(this.openRoadmDevice.getInfo().getOpenroadmVersion().getName())
149                 .setDate(this.openRoadmDevice.getInfo().getCurrentDatetime().getValue());
150         log.debug("Inventory data written for Xponder{}", xpdr.getXpdrNumber());
151
152         return inventoryBuilder.build();
153     }
154     // end of public methods
155 }