+ netConfResponse.setNetconfResponseXml(getNetconfResponseXML(\r
+ opResult.getOperationResponse().getParameterDTOs(), isCustomparameter));\r
+ return netConfResponse;\r
+ }\r
+\r
+ public NetConfResponse getNetconfResponseForSoftwareInventory(DeviceRPCResponse opResult) {\r
+\r
+ NetConfResponse netConfResponse = new NetConfResponse();\r
+ ErrorCodeDetails errorCodeDetails = errorCodeUtil.getErrorCodeMetaData(opResult.getFaultKey());\r
+ ErrorCodeDetails errorCode = new ErrorCodeDetails();\r
+ if (errorCodeDetails != null) {\r
+ errorCode.setFaultCode(opResult.getFaultKey());\r
+ errorCode.setErrorMessage(errorCodeDetails.getErrorMessage());\r
+ errorCode.setErrorType(errorCodeDetails.getErrorType());\r
+ errorCode.setErrorTag(errorCodeDetails.getErrorTag());\r
+ errorCode.setErrorSeverity(errorCodeDetails.getErrorSeverity());\r
+ netConfResponse.setErrorCode(errorCode);\r
+ netConfResponse.setErrorMessage(opResult.getFaultString());\r
+ return netConfResponse;\r
+ } else if (opResult.getFaultKey() != null && opResult.getFaultString() != null) {\r
+ errorCode.setFaultCode(opResult.getFaultKey());\r
+ errorCode.setErrorMessage(opResult.getFaultString());\r
+ errorCode.setErrorType("application");\r
+ errorCode.setErrorTag("operation-failed");\r
+ errorCode.setErrorSeverity("ERROR");\r
+ netConfResponse.setErrorCode(errorCode);\r
+ netConfResponse.setErrorMessage(opResult.getFaultString());\r
+ return netConfResponse;\r
+ }\r
+ List<ParameterDTO> paramDTOList = new ArrayList<>();\r
+\r
+ String build = null;\r
+ String productClass = null;\r
+ for (ParameterDTO paramDto : opResult.getOperationResponse().getParameterDTOs()) {\r
+ if (paramDto.getParamName().equals("Device.DeviceInfo.SoftwareVersion"))\r
+ build = paramDto.getParamValue();\r
+ else if (paramDto.getParamName().equals("Device.DeviceInfo.ProductClass"))\r
+ productClass = paramDto.getParamValue();\r
+ }\r
+\r
+ String[] arrOfBuild = build.split("\\.");\r
+ String buildId = arrOfBuild[arrOfBuild.length - 1];\r
+ StringBuilder buildVersion = new StringBuilder();\r
+ for (int i = 0; i < arrOfBuild.length - 1; i++) {\r
+ if (i == arrOfBuild.length - 2) {\r
+ buildVersion.append(arrOfBuild[i]);\r
+ } else {\r
+ buildVersion.append(arrOfBuild[i]);\r
+ buildVersion.append(".");\r
+ }\r
+ }\r
+\r
+ paramDTOList.add(new ParameterDTO("software-inventory.software-slot.name", "Active Partition"));\r
+ paramDTOList.add(new ParameterDTO("software-inventory.software-slot.status", "VALID"));\r
+ paramDTOList.add(new ParameterDTO("software-inventory.software-slot.active", "true"));\r
+ paramDTOList.add(new ParameterDTO("software-inventory.software-slot.running", "true"));\r
+ paramDTOList.add(new ParameterDTO("software-inventory.software-slot.access", "READ_ONLY"));\r
+ paramDTOList\r
+ .add(new ParameterDTO("software-inventory.software-slot.product-code", productClass));\r
+ paramDTOList.add(new ParameterDTO("software-inventory.software-slot.vendor-code", "CS"));\r
+ paramDTOList.add(new ParameterDTO("software-inventory.software-slot.build-id", buildId));\r
+ paramDTOList.add(new ParameterDTO("software-inventory.software-slot.build-version",\r
+ buildVersion.toString()));\r
+ paramDTOList.add(new ParameterDTO("software-inventory.software-slot.files.name", "BC_ONE"));\r
+ paramDTOList.add(new ParameterDTO("software-inventory.software-slot.files.integrity", "OK"));\r
+\r
+ String XmlStr = getNetconfResponseXML(paramDTOList, true);\r
+\r
+ DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();\r
+ DocumentBuilder builder;\r
+ Document doc = null;\r
+ try {\r
+ builder = factory.newDocumentBuilder();\r
+ doc = builder.parse(new InputSource(new StringReader(XmlStr)));\r
+ } catch (Exception e) {\r
+ logger.error("Error while converting String to element" + e);\r
+ errorCode.setFaultCode("8002");\r
+ errorCode.setErrorMessage("Operation Aborted");\r
+ errorCode.setErrorType("application");\r
+ errorCode.setErrorTag("operation-failed");\r
+ errorCode.setErrorSeverity("ERROR");\r
+ netConfResponse.setErrorCode(errorCode);\r
+ netConfResponse.setErrorMessage("Operation Aborted");\r
+ return netConfResponse;\r
+ }\r
+\r
+ Element originalDocumentElement = doc.getDocumentElement();\r
+ Element newDocumentElement = doc.createElementNS("urn:o-ran:software-management:1.0",\r
+ originalDocumentElement.getNodeName());\r
+ NodeList list = originalDocumentElement.getChildNodes();\r
+ while (list.getLength() != 0) {\r
+ newDocumentElement.appendChild(list.item(0));\r
+ }\r
+ // Replace the original element\r
+ doc.replaceChild(newDocumentElement, originalDocumentElement);\r
+\r
+ String strxml = null;\r
+ try {\r
+ TransformerFactory transformerFactory = TransformerFactory.newInstance();\r
+ Transformer transformer = transformerFactory.newTransformer();\r
+ DOMSource source = new DOMSource(doc);\r
+ StreamResult result = new StreamResult(new StringWriter());\r
+ transformer.transform(source, result);\r
+ strxml = result.getWriter().toString();\r
+ } catch (Exception e) {\r
+ logger.error("Error while converting Element to String" + e);\r
+ errorCode.setFaultCode("8002");\r
+ errorCode.setErrorMessage("Operation Aborted");\r
+ errorCode.setErrorType("application");\r
+ errorCode.setErrorTag("operation-failed");\r
+ errorCode.setErrorSeverity("ERROR");\r
+ netConfResponse.setErrorCode(errorCode);\r
+ netConfResponse.setErrorMessage("Operation Aborted");\r
+ return netConfResponse;\r
+ }\r
+\r
+ netConfResponse.setNetconfResponseXml(strxml);\r
+ logger.debug("NetConf Response XML String for software inventory: " + strxml);\r