-/*\r
- * ============LICENSE_START========================================================================\r
- * ONAP : tr-069-adapter\r
- * =================================================================================================\r
- * Copyright (C) 2020 CommScope Inc Intellectual Property.\r
- * =================================================================================================\r
- * This tr-069-adapter software file is distributed by CommScope Inc under the Apache License,\r
- * Version 2.0 (the "License"); you may not use this file except in compliance with the License. You\r
- * may obtain a copy of the License at\r
- *\r
- * http://www.apache.org/licenses/LICENSE-2.0\r
- *\r
- * This file is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND,\r
- * either express or implied. See the License for the specific language governing permissions and\r
- * limitations under the License.\r
- * ===============LICENSE_END=======================================================================\r
- */\r
-\r
-package org.commscope.tr069adapter.mapper.acs.impl;\r
-\r
-import java.util.ArrayList;\r
-import java.util.Iterator;\r
-import java.util.List;\r
-import java.util.Map;\r
-import org.commscope.tr069adapter.acs.common.DeviceInform;\r
-import org.commscope.tr069adapter.acs.common.DeviceRPCRequest;\r
-import org.commscope.tr069adapter.acs.common.DeviceRPCResponse;\r
-import org.commscope.tr069adapter.acs.common.ParameterDTO;\r
-import org.commscope.tr069adapter.acs.common.dto.ConfigurationData;\r
-import org.commscope.tr069adapter.acs.common.dto.TR069OperationCode;\r
-import org.commscope.tr069adapter.acs.common.dto.TR069OperationDetails;\r
-import org.commscope.tr069adapter.acs.common.inform.BootInform;\r
-import org.commscope.tr069adapter.acs.common.inform.BootstrapInform;\r
-import org.commscope.tr069adapter.mapper.MOMetaData;\r
-import org.commscope.tr069adapter.mapper.MapperConfigProperties;\r
-import org.commscope.tr069adapter.mapper.sync.SynchronizedRequestHandler;\r
-import org.commscope.tr069adapter.mapper.util.MOMetaDataUtil;\r
-import org.commscope.tr069adapter.mapper.util.NetconfToTr069MapperUtil;\r
-import org.slf4j.Logger;\r
-import org.slf4j.LoggerFactory;\r
-import org.slf4j.MDC;\r
-import org.springframework.beans.factory.annotation.Autowired;\r
-import org.springframework.http.HttpEntity;\r
-import org.springframework.http.HttpHeaders;\r
-import org.springframework.http.MediaType;\r
-import org.springframework.http.ResponseEntity;\r
-import org.springframework.stereotype.Component;\r
-import org.springframework.util.LinkedMultiValueMap;\r
-import org.springframework.util.MultiValueMap;\r
-import org.springframework.util.StringUtils;\r
-import org.springframework.web.client.RestTemplate;\r
-\r
-@Component\r
-public class PnPPreProvisioningHandler {\r
-\r
- private static final Logger logger = LoggerFactory.getLogger(PnPPreProvisioningHandler.class);\r
-\r
- private static String clientString = "client";\r
- private static final String ADMIN_STATE = "AdminState";\r
- private static final String ENODEB_NAME = "X_0005B9_eNBName";\r
-\r
- @Autowired\r
- SynchronizedRequestHandler syncHandler;\r
-\r
- @Autowired\r
- MOMetaDataUtil moMetaDataUtil;\r
-\r
- @Autowired\r
- MapperConfigProperties config;\r
-\r
- private RestTemplate restTemplate = new RestTemplate();\r
-\r
- /**\r
- * @param notification\r
- */\r
- public void onDeviceNotification(DeviceInform notification) {\r
- String deviceId = null;\r
- try {\r
- if (notification instanceof BootstrapInform || notification instanceof BootInform) {\r
- logger.debug("Checking whether the PnP pre-configuration is enabled");\r
- if (isPreConfigureOnPnPEnabled()) {\r
- logger.info(\r
- "Pre-configuration during Bootstrap or Boot is enabled, hence the configuration imported in Config DB shall be provisioned to the device");\r
- } else {\r
- logger.debug("Pre-configuration on PnP is disabled!!!");\r
- return;\r
- }\r
- }\r
-\r
- if (notification instanceof BootstrapInform) {\r
- BootstrapInform bootstrapNotification = (BootstrapInform) notification;\r
- deviceId = bootstrapNotification.getDeviceDetails().getDeviceId();\r
- MDC.put(clientString, deviceId);\r
- logger.info("Bootstrap notification received");\r
- performPreProvisioning(deviceId,\r
- bootstrapNotification.getDeviceDetails().getSoftwareVersion(),\r
- bootstrapNotification.getDeviceDetails().getHardwareVersion(), false);\r
-\r
- } else if (notification instanceof BootInform) {\r
- BootInform bootNotification = (BootInform) notification;\r
- deviceId = bootNotification.getDeviceDetails().getDeviceId();\r
- MDC.put(clientString, deviceId);\r
- logger.info("Boot notification received");\r
-\r
- performPreProvisioning(deviceId, bootNotification.getDeviceDetails().getSoftwareVersion(),\r
- bootNotification.getDeviceDetails().getHardwareVersion(), true);\r
- }\r
-\r
- logger.debug("Successfully completed provisioning of PnP mandatory parameters");\r
- } finally {\r
- MDC.remove(clientString);\r
- }\r
- }\r
-\r
- /**\r
- * @param deviceId\r
- * @param isBoot\r
- */\r
- private void performPreProvisioning(String deviceId, String swVersion, String hwVersion,\r
- boolean isBoot) {\r
- List<DeviceRPCRequest> deviceRPCRequestList =\r
- prepareNBIDeviceOperationrequest(deviceId, swVersion, hwVersion, isBoot);\r
- if (deviceRPCRequestList.isEmpty()) {\r
- logger.debug("No Operation requests exists to perform pre provision on the device");\r
- return;\r
- }\r
-\r
- boolean isMandatoryProvFailed = false;\r
- for (DeviceRPCRequest deviceRPCRequest : deviceRPCRequestList) {\r
- logger.info("Performing PROVISION operation");\r
- DeviceRPCResponse deviceRPCResponse = syncHandler.performDeviceOperation(deviceRPCRequest);\r
- logger.debug("Received Provisioning Operation result");\r
- if (deviceRPCResponse != null && !StringUtils.isEmpty(deviceRPCResponse.getFaultString())) {\r
- logger.error("Device operation failed, Reason: {}", deviceRPCResponse.getFaultString());\r
- isMandatoryProvFailed = true;\r
- break;\r
- }\r
-\r
- logger.debug("Provisioning is successful");\r
- }\r
-\r
- if (isMandatoryProvFailed) {\r
- logger\r
- .debug("Mandatory provisioning has failed, hence provisioning Admin down on the device");\r
- provisionAdminDown(deviceRPCRequestList);\r
- logger.debug("AdminDown Provisioning is successful");\r
- }\r
- }\r
-\r
- private void provisionAdminDown(List<DeviceRPCRequest> deviceRPCRequestList) {\r
- DeviceRPCRequest adminDownOpRequest = null;\r
- for (DeviceRPCRequest nbiDeviceOperationRequest : deviceRPCRequestList) {\r
- ParameterDTO param = nbiDeviceOperationRequest.getOpDetails().getParmeters().get(0);\r
- if (param.getParamName().endsWith(ADMIN_STATE)) {\r
- adminDownOpRequest = nbiDeviceOperationRequest;\r
- break;\r
- }\r
- }\r
- if (adminDownOpRequest != null) {\r
- List<ParameterDTO> adminDownParams = adminDownOpRequest.getOpDetails().getParmeters();\r
- for (ParameterDTO adminDownParam : adminDownParams) {\r
- adminDownParam.setParamValue("0");\r
- }\r
- DeviceRPCResponse deviceRPCResponse = syncHandler.performDeviceOperation(adminDownOpRequest);\r
- if (deviceRPCResponse == null || !StringUtils.isEmpty(deviceRPCResponse.getFaultString())) {\r
- logger.error("Device operation failed, Reason: {}", ((deviceRPCResponse == null)\r
- ? "Null Operation result" : deviceRPCResponse.getFaultString()));\r
- }\r
- }\r
- }\r
-\r
- /**\r
- * @param deviceId\r
- * @param isBoot\r
- * @return\r
- */\r
- private List<DeviceRPCRequest> prepareNBIDeviceOperationrequest(String deviceId, String swVersion,\r
- String hwVersion, boolean isBoot) {\r
- logger.debug("Preparing the NBI Device Operation Request");\r
- List<DeviceRPCRequest> deviceRPCRequestList = new ArrayList<>();\r
-\r
- ConfigurationData configData = getDeviceConfigurationData(deviceId, swVersion, hwVersion);\r
- if (configData == null || configData.getParameterMONameValueMap().isEmpty()) {\r
- logger.debug("No configuration exists for the device");\r
- return deviceRPCRequestList;\r
- }\r
-\r
- List<ParameterDTO> configParams = new ArrayList<>();\r
- List<ParameterDTO> adminStateParams = new ArrayList<>();\r
- Map<String, String> paramNameValueMap = configData.getParameterMONameValueMap();\r
- Iterator<String> iter = paramNameValueMap.keySet().iterator();\r
- while (iter.hasNext()) {\r
- String paramName = iter.next();\r
- String paramValue = paramNameValueMap.get(paramName);\r
- MOMetaData moMetaData = moMetaDataUtil.getMetaDataByTR69Name(paramName, swVersion, hwVersion);\r
- if ((isBoot && !paramName.endsWith(ADMIN_STATE)) || moMetaData == null)\r
- continue;\r
- ParameterDTO parameterDTO = getParameterDTO(paramName, paramValue, moMetaData);\r
-\r
- if (paramName.endsWith(ADMIN_STATE)) {\r
- adminStateParams.add(parameterDTO);\r
- } else {\r
- configParams.add(parameterDTO);\r
- }\r
- logger.debug("Param -> {} Param Value: {}", paramName, paramValue);\r
- }\r
-\r
- if (configParams.isEmpty() && adminStateParams.isEmpty()) {\r
- logger.debug("Empty parameters list from config db, hence not performing pre-provision");\r
- return deviceRPCRequestList;\r
- }\r
-\r
- if (!configParams.isEmpty()) {\r
- deviceRPCRequestList.add(createNBIOperationRequest(deviceId, configParams));\r
- }\r
-\r
- if (!adminStateParams.isEmpty()) {\r
- deviceRPCRequestList.add(createNBIOperationRequest(deviceId, adminStateParams));\r
- }\r
-\r
- return deviceRPCRequestList;\r
- }\r
-\r
- private ParameterDTO getParameterDTO(String paramName, String paramValue, MOMetaData moMetaData) {\r
- String dataType = moMetaData.getDataType();\r
- if (dataType.equals("boolean")) {\r
- if (paramValue.equalsIgnoreCase("true")) {\r
- paramValue = "1";\r
- } else if (paramValue.equalsIgnoreCase("false")) {\r
- paramValue = "0";\r
- }\r
- }\r
- ParameterDTO parameterDTO = new ParameterDTO(paramName, paramValue);\r
- parameterDTO.setDataType(dataType);\r
-\r
- return parameterDTO;\r
- }\r
-\r
- /**\r
- * @param deviceId\r
- * @param params\r
- * @return\r
- */\r
- private DeviceRPCRequest createNBIOperationRequest(String deviceId, List<ParameterDTO> params) {\r
- TR069OperationDetails opDetails = new TR069OperationDetails();\r
- opDetails.setOpCode(TR069OperationCode.SET_PARAMETER_VALUES);\r
-\r
- return NetconfToTr069MapperUtil.handleParamsOperation(params, opDetails, deviceId);\r
-\r
- }\r
-\r
- /**\r
- * @param deviceId\r
- * @return\r
- */\r
- private ConfigurationData getDeviceConfigurationData(String deviceId, String swVersion,\r
- String hwVersion) {\r
- String configDBURI = getConfigDBURI();\r
- logger.debug(\r
- "Device Configuration to be fetched from Config DB URI: {}, macId {}, swVersion {}, hwVersion {}",\r
- configDBURI, deviceId, swVersion, hwVersion);\r
- ConfigurationData configData = null;\r
- try {\r
-\r
- MultiValueMap<String, String> uriParams = new LinkedMultiValueMap<>();\r
- uriParams.add("macId", deviceId);\r
- uriParams.add("swVersion", swVersion);\r
- uriParams.add("hwVersion", hwVersion);\r
- HttpHeaders headers = new HttpHeaders();\r
- headers.setContentType(MediaType.APPLICATION_FORM_URLENCODED);\r
- final HttpEntity<MultiValueMap<String, String>> entity = new HttpEntity<>(uriParams, headers);\r
-\r
- ResponseEntity<ConfigurationData> res =\r
- restTemplate.postForEntity(configDBURI, entity, ConfigurationData.class);\r
- configData = res.getBody();\r
- logger.debug("Successfully retrived config data for device id{} data {}", deviceId,\r
- configData);\r
- } catch (Exception e) {\r
- logger.error("An exception occurred to get the initial device configuration, Reason: {}",\r
- e.getMessage());\r
- }\r
- return configData;\r
- }\r
-\r
- /**\r
- * @return\r
- */\r
- private boolean isPreConfigureOnPnPEnabled() {\r
- boolean isEnabled = false;\r
- String preConfigureOnPnP = config.getPreConfigureOnPNP();\r
- if (preConfigureOnPnP != null && ("true".equalsIgnoreCase(preConfigureOnPnP)\r
- || "false".equalsIgnoreCase(preConfigureOnPnP))) {\r
- isEnabled = Boolean.valueOf(preConfigureOnPnP);\r
- }\r
-\r
- return isEnabled;\r
- }\r
-\r
- /**\r
- * @return\r
- */\r
- private String getConfigDBURI() {\r
- return config.getConfigDBUri();\r
-\r
- }\r
-\r
- /**\r
- * it will return the eNodBName if the configuration is imported\r
- * \r
- * @return String\r
- */\r
- public String getEnodeBName(String deviceId, String swVersion, String hwVersion) {\r
- String eNodeBName = null;\r
- if (isPreConfigureOnPnPEnabled()) {\r
- ConfigurationData configData = getDeviceConfigurationData(deviceId, swVersion, hwVersion);\r
- if (configData == null || configData.getParameterMONameValueMap().isEmpty()) {\r
- logger.debug("No configuration exists for the device");\r
- return eNodeBName;\r
- }\r
-\r
- Map<String, String> paramNameValueMap = configData.getParameterMONameValueMap();\r
- Iterator<String> iter = paramNameValueMap.keySet().iterator();\r
- while (iter.hasNext()) {\r
- String paramName = iter.next();\r
- if (paramName.endsWith(ENODEB_NAME)) {\r
- eNodeBName = paramNameValueMap.get(paramName);\r
- break;\r
- }\r
- }\r
- }\r
- return eNodeBName;\r
- }\r
-}\r
+/*
+ * ============LICENSE_START========================================================================
+ * ONAP : tr-069-adapter
+ * =================================================================================================
+ * Copyright (C) 2020 CommScope Inc Intellectual Property.
+ * =================================================================================================
+ * This tr-069-adapter software file is distributed by CommScope Inc under the Apache License,
+ * Version 2.0 (the "License"); you may not use this file except in compliance with the License. You
+ * may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * This file is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND,
+ * either express or implied. See the License for the specific language governing permissions and
+ * limitations under the License.
+ * ===============LICENSE_END=======================================================================
+ */
+
+package org.commscope.tr069adapter.mapper.acs.impl;
+
+import java.util.ArrayList;
+import java.util.Iterator;
+import java.util.List;
+import java.util.Map;
+
+import org.commscope.tr069adapter.acs.common.DeviceInform;
+import org.commscope.tr069adapter.acs.common.DeviceRPCRequest;
+import org.commscope.tr069adapter.acs.common.DeviceRPCResponse;
+import org.commscope.tr069adapter.acs.common.ParameterDTO;
+import org.commscope.tr069adapter.acs.common.dto.ConfigurationData;
+import org.commscope.tr069adapter.acs.common.dto.TR069OperationCode;
+import org.commscope.tr069adapter.acs.common.dto.TR069OperationDetails;
+import org.commscope.tr069adapter.acs.common.inform.BootInform;
+import org.commscope.tr069adapter.acs.common.inform.BootstrapInform;
+import org.commscope.tr069adapter.mapper.MOMetaData;
+import org.commscope.tr069adapter.mapper.MapperConfigProperties;
+import org.commscope.tr069adapter.mapper.sync.SynchronizedRequestHandler;
+import org.commscope.tr069adapter.mapper.util.MOMetaDataUtil;
+import org.commscope.tr069adapter.mapper.util.NetconfToTr069MapperUtil;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.slf4j.MDC;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.http.HttpEntity;
+import org.springframework.http.HttpHeaders;
+import org.springframework.http.MediaType;
+import org.springframework.http.ResponseEntity;
+import org.springframework.stereotype.Component;
+import org.springframework.util.LinkedMultiValueMap;
+import org.springframework.util.MultiValueMap;
+import org.springframework.util.StringUtils;
+import org.springframework.web.client.RestTemplate;
+
+@Component
+public class PnPPreProvisioningHandler {
+
+ private static final Logger logger = LoggerFactory.getLogger(PnPPreProvisioningHandler.class);
+
+ private static String clientString = "client";
+ private static final String ADMIN_STATE = "AdminState";
+ private static final String ENODEB_NAME = "X_0005B9_eNBName";
+
+ @Autowired
+ SynchronizedRequestHandler syncHandler;
+
+ @Autowired
+ MOMetaDataUtil moMetaDataUtil;
+
+ @Autowired
+ MapperConfigProperties config;
+
+ private RestTemplate restTemplate = new RestTemplate();
+
+ /**
+ * @param notification
+ */
+ public void onDeviceNotification(DeviceInform notification) {
+ String deviceId = null;
+ try {
+ if (notification instanceof BootstrapInform || notification instanceof BootInform) {
+ logger.debug("Checking whether the PnP pre-configuration is enabled");
+ if (isPreConfigureOnPnPEnabled()) {
+ logger.info(
+ "Pre-configuration during Bootstrap or Boot is enabled, hence the configuration imported in Config DB shall be provisioned to the device");
+ } else {
+ logger.debug("Pre-configuration on PnP is disabled!!!");
+ return;
+ }
+ }
+
+ if (notification instanceof BootstrapInform) {
+ BootstrapInform bootstrapNotification = (BootstrapInform) notification;
+ deviceId = bootstrapNotification.getDeviceDetails().getDeviceId();
+ MDC.put(clientString, deviceId);
+ logger.info("Bootstrap notification received");
+ performPreProvisioning(deviceId,
+ bootstrapNotification.getDeviceDetails().getSoftwareVersion(),
+ bootstrapNotification.getDeviceDetails().getHardwareVersion(), false);
+
+ } else if (notification instanceof BootInform) {
+ BootInform bootNotification = (BootInform) notification;
+ deviceId = bootNotification.getDeviceDetails().getDeviceId();
+ MDC.put(clientString, deviceId);
+ logger.info("Boot notification received");
+
+ performPreProvisioning(deviceId, bootNotification.getDeviceDetails().getSoftwareVersion(),
+ bootNotification.getDeviceDetails().getHardwareVersion(), true);
+ }
+
+ logger.debug("Successfully completed provisioning of PnP mandatory parameters");
+ } finally {
+ MDC.remove(clientString);
+ }
+ }
+
+ /**
+ * @param deviceId
+ * @param isBoot
+ */
+ private void performPreProvisioning(String deviceId, String swVersion, String hwVersion,
+ boolean isBoot) {
+ List<DeviceRPCRequest> deviceRPCRequestList =
+ prepareNBIDeviceOperationrequest(deviceId, swVersion, hwVersion, isBoot);
+ if (deviceRPCRequestList.isEmpty()) {
+ logger.debug("No Operation requests exists to perform pre provision on the device");
+ return;
+ }
+
+ boolean isMandatoryProvFailed = false;
+ for (DeviceRPCRequest deviceRPCRequest : deviceRPCRequestList) {
+ logger.info("Performing PROVISION operation");
+ DeviceRPCResponse deviceRPCResponse = syncHandler.performDeviceOperation(deviceRPCRequest);
+ logger.debug("Received Provisioning Operation result");
+ if (deviceRPCResponse != null && !StringUtils.isEmpty(deviceRPCResponse.getFaultString())) {
+ logger.error("Device operation failed, Reason: {}", deviceRPCResponse.getFaultString());
+ isMandatoryProvFailed = true;
+ break;
+ }
+
+ logger.debug("Provisioning is successful");
+ }
+
+ if (isMandatoryProvFailed) {
+ logger
+ .debug("Mandatory provisioning has failed, hence provisioning Admin down on the device");
+ provisionAdminDown(deviceRPCRequestList);
+ logger.debug("AdminDown Provisioning is successful");
+ }
+ }
+
+ private void provisionAdminDown(List<DeviceRPCRequest> deviceRPCRequestList) {
+ DeviceRPCRequest adminDownOpRequest = null;
+ for (DeviceRPCRequest nbiDeviceOperationRequest : deviceRPCRequestList) {
+ ParameterDTO param = nbiDeviceOperationRequest.getOpDetails().getParmeters().get(0);
+ if (param.getParamName().endsWith(ADMIN_STATE)) {
+ adminDownOpRequest = nbiDeviceOperationRequest;
+ break;
+ }
+ }
+ if (adminDownOpRequest != null) {
+ List<ParameterDTO> adminDownParams = adminDownOpRequest.getOpDetails().getParmeters();
+ for (ParameterDTO adminDownParam : adminDownParams) {
+ adminDownParam.setParamValue("0");
+ }
+ DeviceRPCResponse deviceRPCResponse = syncHandler.performDeviceOperation(adminDownOpRequest);
+ if (deviceRPCResponse == null || !StringUtils.isEmpty(deviceRPCResponse.getFaultString())) {
+ logger.error("Device operation failed, Reason: {}",
+ ((deviceRPCResponse == null) ? "Null Operation result"
+ : deviceRPCResponse.getFaultString()));
+ }
+ }
+ }
+
+ /**
+ * @param deviceId
+ * @param isBoot
+ * @return
+ */
+ private List<DeviceRPCRequest> prepareNBIDeviceOperationrequest(String deviceId, String swVersion,
+ String hwVersion, boolean isBoot) {
+ logger.debug("Preparing the NBI Device Operation Request");
+ List<DeviceRPCRequest> deviceRPCRequestList = new ArrayList<>();
+
+ ConfigurationData configData = getDeviceConfigurationData(deviceId, swVersion, hwVersion);
+ if (configData == null || configData.getParameterMONameValueMap().isEmpty()) {
+ logger.debug("No configuration exists for the device");
+ return deviceRPCRequestList;
+ }
+
+ List<ParameterDTO> configParams = new ArrayList<>();
+ List<ParameterDTO> adminStateParams = new ArrayList<>();
+ Map<String, String> paramNameValueMap = configData.getParameterMONameValueMap();
+ Iterator<String> iter = paramNameValueMap.keySet().iterator();
+ while (iter.hasNext()) {
+ String paramName = iter.next();
+ String paramValue = paramNameValueMap.get(paramName);
+ MOMetaData moMetaData = moMetaDataUtil.getMetaDataByTR69Name(paramName, swVersion, hwVersion);
+ if ((isBoot && !paramName.endsWith(ADMIN_STATE)) || moMetaData == null)
+ continue;
+ ParameterDTO parameterDTO = getParameterDTO(paramName, paramValue, moMetaData);
+
+ if (paramName.endsWith(ADMIN_STATE)) {
+ adminStateParams.add(parameterDTO);
+ } else {
+ configParams.add(parameterDTO);
+ }
+ logger.debug("Param -> {} Param Value: {}", paramName, paramValue);
+ }
+
+ if (configParams.isEmpty() && adminStateParams.isEmpty()) {
+ logger.debug("Empty parameters list from config db, hence not performing pre-provision");
+ return deviceRPCRequestList;
+ }
+
+ if (!configParams.isEmpty()) {
+ deviceRPCRequestList.add(createNBIOperationRequest(deviceId, configParams));
+ }
+
+ if (!adminStateParams.isEmpty()) {
+ deviceRPCRequestList.add(createNBIOperationRequest(deviceId, adminStateParams));
+ }
+
+ return deviceRPCRequestList;
+ }
+
+ private ParameterDTO getParameterDTO(String paramName, String paramValue, MOMetaData moMetaData) {
+ String dataType = moMetaData.getDataType();
+ if (dataType.equals("boolean")) {
+ if (paramValue.equalsIgnoreCase("true")) {
+ paramValue = "1";
+ } else if (paramValue.equalsIgnoreCase("false")) {
+ paramValue = "0";
+ }
+ }
+ ParameterDTO parameterDTO = new ParameterDTO(paramName, paramValue);
+ parameterDTO.setDataType(dataType);
+
+ return parameterDTO;
+ }
+
+ /**
+ * @param deviceId
+ * @param params
+ * @return
+ */
+ private DeviceRPCRequest createNBIOperationRequest(String deviceId, List<ParameterDTO> params) {
+ TR069OperationDetails opDetails = new TR069OperationDetails();
+ opDetails.setOpCode(TR069OperationCode.SET_PARAMETER_VALUES);
+
+ return NetconfToTr069MapperUtil.handleParamsOperation(params, opDetails, deviceId);
+
+ }
+
+ /**
+ * @param deviceId
+ * @return
+ */
+ private ConfigurationData getDeviceConfigurationData(String deviceId, String swVersion,
+ String hwVersion) {
+ String configDBURI = getConfigDBURI();
+ logger.debug(
+ "Device Configuration to be fetched from Config DB URI: {}, macId {}, swVersion {}, hwVersion {}",
+ configDBURI, deviceId, swVersion, hwVersion);
+ ConfigurationData configData = null;
+ try {
+
+ MultiValueMap<String, String> uriParams = new LinkedMultiValueMap<>();
+ uriParams.add("macId", deviceId);
+ uriParams.add("swVersion", swVersion);
+ uriParams.add("hwVersion", hwVersion);
+ HttpHeaders headers = new HttpHeaders();
+ headers.setContentType(MediaType.APPLICATION_FORM_URLENCODED);
+ final HttpEntity<MultiValueMap<String, String>> entity = new HttpEntity<>(uriParams, headers);
+
+ ResponseEntity<ConfigurationData> res =
+ restTemplate.postForEntity(configDBURI, entity, ConfigurationData.class);
+ configData = res.getBody();
+ logger.debug("Successfully retrived config data for device id{} data {}", deviceId,
+ configData);
+ } catch (Exception e) {
+ logger.error("An exception occurred to get the initial device configuration, Reason: {}",
+ e.getMessage());
+ }
+ return configData;
+ }
+
+ /**
+ * @return
+ */
+ private boolean isPreConfigureOnPnPEnabled() {
+ boolean isEnabled = false;
+ String preConfigureOnPnP = config.getPreConfigureOnPNP();
+ if (preConfigureOnPnP != null && ("true".equalsIgnoreCase(preConfigureOnPnP)
+ || "false".equalsIgnoreCase(preConfigureOnPnP))) {
+ isEnabled = Boolean.valueOf(preConfigureOnPnP);
+ }
+
+ return isEnabled;
+ }
+
+ /**
+ * @return
+ */
+ private String getConfigDBURI() {
+ return config.getConfigDBUri();
+
+ }
+
+ /**
+ * it will return the eNodBName if the configuration is imported
+ *
+ * @return String
+ */
+ public String getEnodeBName(String deviceId, String swVersion, String hwVersion) {
+ String eNodeBName = null;
+ if (isPreConfigureOnPnPEnabled()) {
+ ConfigurationData configData = getDeviceConfigurationData(deviceId, swVersion, hwVersion);
+ if (configData == null || configData.getParameterMONameValueMap().isEmpty()) {
+ logger.debug("No configuration exists for the device");
+ return eNodeBName;
+ }
+
+ Map<String, String> paramNameValueMap = configData.getParameterMONameValueMap();
+ Iterator<String> iter = paramNameValueMap.keySet().iterator();
+ while (iter.hasNext()) {
+ String paramName = iter.next();
+ if (paramName.endsWith(ENODEB_NAME)) {
+ eNodeBName = paramNameValueMap.get(paramName);
+ break;
+ }
+ }
+ }
+ return eNodeBName;
+ }
+}