d67db8a03fc8c05a59dafecda5ec07746e853d64
[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.openroadm.impl;
23
24 import org.onap.ccsdk.features.sdnr.wt.netconfnodestateservice.NetconfAccessor;
25 import org.opendaylight.yang.gen.v1.http.org.openroadm.device.rev191129.OrgOpenroadmDevice;
26 import org.opendaylight.yang.gen.v1.http.org.openroadm.device.rev191129.circuit.packs.CircuitPacks;
27 import org.opendaylight.yang.gen.v1.http.org.openroadm.device.rev191129.interfaces.grp.Interface;
28 import org.opendaylight.yang.gen.v1.http.org.openroadm.device.rev191129.org.openroadm.device.Xponder;
29 import org.opendaylight.yang.gen.v1.http.org.openroadm.device.rev191129.shelves.Shelves;
30 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.data.provider.rev190801.Inventory;
31 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.data.provider.rev190801.InventoryBuilder;
32 import org.slf4j.Logger;
33 import org.slf4j.LoggerFactory;
34
35 /**
36  * @author Shabnam Sultana
37  *
38  *         Reading the inventory data of an open roadm device
39  *
40  **/
41 public class OpenroadmInventoryInput {
42     // variable
43     private static final Logger log = LoggerFactory.getLogger(OpenroadmInventoryInput.class);
44     private OrgOpenroadmDevice openRoadmDevice;
45     private final NetconfAccessor accessor;
46     // end of variables
47
48     // constructors
49     public OpenroadmInventoryInput(NetconfAccessor netconfAccessor, OrgOpenroadmDevice readDevice) {
50         this.openRoadmDevice = readDevice;
51         this.accessor = netconfAccessor;
52     }
53     // end of constructors
54
55     // public methods
56     public Inventory getInventoryData(long treeLevel) {
57         InventoryBuilder inventoryBuilder = new InventoryBuilder();
58         inventoryBuilder.setNodeId(this.accessor.getNodeId().getValue())
59                 .setUuid(this.openRoadmDevice.getInfo().getNodeId().getValue())
60                 .setDate(this.openRoadmDevice.getInfo().getCurrentDatetime().getValue())
61                 .setId(this.openRoadmDevice.getInfo().getNodeId().getValue())
62                 .setManufacturerIdentifier(this.openRoadmDevice.getInfo().getVendor())
63                 .setModelIdentifier(this.openRoadmDevice.getInfo().getModel())
64                 .setSerial(this.openRoadmDevice.getInfo().getSerialId()).setTreeLevel(treeLevel)
65                 .setVersion(this.openRoadmDevice.getInfo().getOpenroadmVersion().getName())
66                 .setDescription("org-openroadm-device").setParentUuid("None")
67                 .setTypeName(this.openRoadmDevice.getInfo().getNodeType().getName()).setPartTypeId("device");
68         log.info("Inventory data written for device {}", this.openRoadmDevice.getInfo().getNodeId().getValue());
69         return inventoryBuilder.build();
70     }
71
72     public Inventory getShelvesInventory(Shelves shelf, long treeLevel) {
73         InventoryBuilder inventoryBuilder = new InventoryBuilder();
74         inventoryBuilder.setNodeId(this.accessor.getNodeId().getValue()).setId(shelf.getShelfName())
75                 .setDescription((shelf.getUserDescription() == null)
76                         ? ("Position: " + shelf.getShelfPosition() + "\nState: " + shelf.getOperationalState())
77                         : (shelf.getUserDescription()) + "\nPosition: " + shelf.getShelfPosition() + "\nState: "
78                                 + shelf.getOperationalState())
79                 .setSerial(shelf.getSerialId()).setUuid(shelf.getShelfName())
80                 .setParentUuid(this.openRoadmDevice.getInfo().getNodeId().getValue()).setTreeLevel(treeLevel)
81                 .setTypeName(shelf.getShelfType()).setPartTypeId(shelf.getClei())
82                 .setManufacturerIdentifier(shelf.getVendor()).setModelIdentifier(shelf.getModel())
83                 .setVersion(shelf.getHardwareVersion()).setDate(shelf.getManufactureDate().getValue());
84         log.info("Inventory data written for Shelf {}", shelf.getShelfName());
85         return inventoryBuilder.build();
86     }
87
88     public Inventory getInterfacesInventory(Interface deviceInterface, long treeLevel) {
89         InventoryBuilder inventoryBuilder = new InventoryBuilder();
90         inventoryBuilder.setNodeId(this.accessor.getNodeId().getValue()).setId(deviceInterface.getName())
91                 .setDescription((deviceInterface.getDescription() == null) ? "N/A" : deviceInterface.getDescription())
92                 .setUuid(deviceInterface.getName()).setSerial(deviceInterface.getName())
93                 .setParentUuid(deviceInterface.getSupportingCircuitPackName()).setTreeLevel(treeLevel)
94                 .setTypeName((deviceInterface.getType() == null) ? "Interface"
95                         : deviceInterface.getType().getName().substring(69,
96                                 deviceInterface.getType().getName().length()))
97                 .setPartTypeId("Interface").setManufacturerIdentifier(this.openRoadmDevice.getInfo().getVendor())
98                 .setModelIdentifier(this.openRoadmDevice.getInfo().getModel()).setVersion("N/A")
99                 .setDate(this.openRoadmDevice.getInfo().getCurrentDatetime().getValue());
100         log.info("Inventory data written for Interface {}", deviceInterface.getName());
101
102         return inventoryBuilder.build();
103     }
104
105     public Inventory getCircuitPackInventory(CircuitPacks circuitPack, long treeLevel) {
106         InventoryBuilder inventoryBuilder = new InventoryBuilder();
107         inventoryBuilder.setNodeId(this.accessor.getNodeId().getValue()).setUuid(circuitPack.getCircuitPackName())
108                 .setDate((circuitPack.getManufactureDate() == null) ? "N/A"
109                         : circuitPack.getManufactureDate().getValue().substring(0, 19))
110                 .setId(circuitPack.getCircuitPackName()).setManufacturerIdentifier(circuitPack.getVendor())
111                 .setModelIdentifier(circuitPack.getModel()).setSerial(circuitPack.getSerialId()).setTreeLevel(treeLevel)
112                 .setVersion(circuitPack.getHardwareVersion())
113                 .setDescription("ProductCode: " + circuitPack.getProductCode() + "  " + "Mode: "
114                         + circuitPack.getCircuitPackMode())
115                 .setTypeName((circuitPack.getType() == null) ? circuitPack.getCircuitPackType() : circuitPack.getType())
116                 .setPartTypeId((circuitPack.getClei() == null) ? circuitPack.getType() : circuitPack.getClei())
117                 .setParentUuid((circuitPack.getParentCircuitPack() != null)
118                         ? circuitPack.getParentCircuitPack().getCircuitPackName()
119                         : (circuitPack.getShelf() != null) ? circuitPack.getShelf()
120                                 : this.openRoadmDevice.getInfo().getNodeId().getValue());
121         log.info("Inventory data written for CircuitPack {}", circuitPack.getCircuitPackName());
122
123         return inventoryBuilder.build();
124     }
125
126     public Inventory getXponderInventory(Xponder xpdr, long treeLevel) {
127         InventoryBuilder inventoryBuilder = new InventoryBuilder();
128         inventoryBuilder.setNodeId(this.accessor.getNodeId().getValue()).setId(xpdr.getXpdrNumber().toString())
129                 .setDescription("Xponder\nLifecycleState: " + xpdr.getLifecycleState().getName())
130                 .setUuid(xpdr.getXpdrNumber().toString()).setSerial(xpdr.getXpdrNumber().toString())
131                 .setParentUuid(this.openRoadmDevice.getInfo().getNodeId().getValue()).setTreeLevel(treeLevel)
132                 .setTypeName(xpdr.getXpdrType().getName()).setPartTypeId(xpdr.getXpdrType().getName())
133                 .setManufacturerIdentifier(this.openRoadmDevice.getInfo().getVendor())
134                 .setModelIdentifier(this.openRoadmDevice.getInfo().getModel())
135                 .setVersion(this.openRoadmDevice.getInfo().getOpenroadmVersion().getName())
136                 .setDate(this.openRoadmDevice.getInfo().getCurrentDatetime().getValue());
137         log.info("Inventory data written for Xponder{}", xpdr.getXpdrNumber());
138
139         return inventoryBuilder.build();
140     }
141     // end of public methods
142 }