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.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;
 
  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