if (hardware != null) {
Collection<Component> componentList = YangHelper.getCollection(hardware.getComponent());
if (componentList != null) {
+ int componentListSize = componentList.size();
+ int writeCount = 0;
+
for (Component component : componentList) {
- databaseService
- .writeInventory(oRanMapper.getInternalEquipment(netconfAccessor.getNodeId(), component));
+ if (component.getParent() == null) {
+ writeCount += writeInventory(component, componentList, 0);
+ }
+ }
+ if (componentListSize != writeCount) {
+ log.warn("Not all data were written to the Inventory. Potential entries with missing "
+ + "contained-child. Node Id = {}, Components Found = {}, Entries written to Database = {}",
+ netconfAccessor.getNodeId().getValue(), componentListSize, writeCount);
}
}
}
+
System1 sys = getOnapSystemData(netconfAccessor);
if (sys != null) {
GuicutthroughBuilder gcBuilder = new GuicutthroughBuilder();
}
}
+ private int writeInventory(Component component, Collection<Component> componentList, int treeLevel) {
+ databaseService
+ .writeInventory(oRanMapper.getInternalEquipment(netconfAccessor.getNodeId(), component, treeLevel));
+ int count = 1;
+ if (component.getContainsChild() != null) {
+ List<String> containerHolderList = component.getContainsChild();
+ for (String containerHolder : containerHolderList) {
+ for (Component c : componentList) {
+ if (containerHolder.equals(c.getName())) {
+ count += writeInventory(c, componentList, treeLevel + 1);
+ }
+ }
+ }
+ }
+ return count;
+ }
+
@Override
public NetworkElementDeviceType getDeviceType() {
return NetworkElementDeviceType.ORAN;
*/
public class ORanToInternalDataModel {
-
- public Inventory getInternalEquipment(NodeId nodeId, Component component) {
+ public Inventory getInternalEquipment(NodeId nodeId, Component component, int treeLevel) {
InventoryBuilder inventoryBuilder = new InventoryBuilder();
// General
inventoryBuilder.setNodeId(nodeId.getValue());
- inventoryBuilder.setParentUuid(component.getParent());
- inventoryBuilder.setTreeLevel(new Long(component.getParentRelPos()));
- inventoryBuilder.setTreeLevel(Uint32.valueOf(component.getParentRelPos().intValue()));
+ inventoryBuilder.setParentUuid(component.getParent()!=null?component.getParent():component.getName());
+ inventoryBuilder.setTreeLevel(Uint32.valueOf(treeLevel));
- inventoryBuilder.setUuid(component.getUuid().getValue());
+ inventoryBuilder.setUuid(component.getName());
// -- String list with ids of holders
List<String> containerHolderKeyList = new ArrayList<>();
List<String> containerHolderList = component.getContainsChild();
}
inventoryBuilder.setContainedHolder(containerHolderKeyList);
// -- Manufacturer related things
- inventoryBuilder.setManufacturerName(component.getName());
+ inventoryBuilder.setManufacturerName(component.getMfgName());
+ inventoryBuilder.setManufacturerIdentifier(component.getMfgName());
+
// Equipment type
inventoryBuilder.setDescription(component.getDescription());
inventoryBuilder.setModelIdentifier(component.getModelName());
- inventoryBuilder.setPartTypeId(component.getXmlClass().getName());
+ if (component.getXmlClass() != null) {
+ inventoryBuilder.setPartTypeId(component.getXmlClass().getName());
+ }
inventoryBuilder.setTypeName(component.getName());
inventoryBuilder.setVersion(component.getHardwareRev());
+
// Equipment instance
- inventoryBuilder.setDate(component.getMfgDate().getValue());
+ if (component.getMfgDate() != null) {
+ inventoryBuilder.setDate(component.getMfgDate().getValue());
+ }
inventoryBuilder.setSerial(component.getSerialNum());
-
return inventoryBuilder.build();
}
NodeId nodeId;
Component component;
- @Before
+ @Before
public void init() throws InterruptedException, IOException {
nodeId = mock(NodeId.class);
component = mock(Component.class);
when(nodeId.getValue()).thenReturn("ORan-1000");
when(component.getParent()).thenReturn("Shelf");
+ when(component.getName()).thenReturn("Slot-0");
when(component.getParentRelPos()).thenReturn(0);
when(component.getUuid()).thenReturn(new Uuid("0Aabcdef-0abc-0cfD-0abC-0123456789AB"));
@Test
public void test() throws Exception {
ORanToInternalDataModel model = new ORanToInternalDataModel();
- model.getInternalEquipment(nodeId, component);
+ model.getInternalEquipment(nodeId, component,0);
assertEquals(component.getUuid().getValue(), "0Aabcdef-0abc-0cfD-0abC-0123456789AB");
assertEquals(component.getMfgDate().getValue(), "2020-02-05T12:30:45.283Z");