Admin state issue fix and heart beat start epoc time rounding change.
Issue-Id: OAM-130
Signed-off-by: cschowdam <chandrasekhar.chowdam@commscope.com>
Change-Id: I32091e4f9115dfc33f94b5ead69c360f5f4cf35a
package org.commscope.tr069adapter.acs.common;\r
\r
import com.fasterxml.jackson.annotation.JsonTypeInfo;\r
-\r
import java.io.Serializable;\r
\r
@JsonTypeInfo(use = JsonTypeInfo.Id.CLASS, include = JsonTypeInfo.As.PROPERTY, property = "@class")\r
private String paramValue;\r
private String dataType;\r
private boolean isProcessed;\r
+ private boolean isInitiated = Boolean.FALSE;\r
\r
public ParameterDTO() {\r
\r
this.isProcessed = isProcessed;\r
}\r
\r
+ public boolean isInitiated() {\r
+ return isInitiated;\r
+ }\r
+\r
+ public void setInitiated(boolean isInitiated) {\r
+ this.isInitiated = isInitiated;\r
+ }\r
+\r
@Override\r
public String toString() {\r
return "ParameterDTO [paramName=" + paramName + ", paramValue=" + paramValue + ", dataType="\r
\r
import static org.commscope.tr069adapter.acs.common.utils.AcsConstants.NUMBER_REGEX;\r
import static org.commscope.tr069adapter.acs.common.utils.AcsConstants.SUCCESS;\r
-\r
import java.util.ArrayList;\r
import java.util.List;\r
import java.util.regex.Matcher;\r
import java.util.regex.Pattern;\r
-\r
import org.commscope.tr069adapter.acs.common.DeviceRPCRequest;\r
import org.commscope.tr069adapter.acs.common.DeviceRPCResponse;\r
import org.commscope.tr069adapter.acs.common.OperationDetails;\r
} else if (opResponse instanceof SetParameterValueResponse) {\r
logger.debug("Received Set parameter value response");\r
isPendingOperationExists = false;\r
+ for (ParameterDTO setParam : tr069modifyParamList) {\r
+ if (Boolean.TRUE.equals(setParam.isInitiated())\r
+ && Boolean.FALSE.equals(setParam.isProcessed())) {\r
+ setParam.setInitiated(Boolean.FALSE);\r
+ setParam.setProcessed(Boolean.TRUE);\r
+ } else if (Boolean.FALSE.equals(setParam.isInitiated())\r
+ && Boolean.FALSE.equals(setParam.isProcessed())) {\r
+ isPendingOperationExists = true;\r
+ nextOperation = OperationOrder.SET_PARAMETER_VALUE;\r
+ }\r
+ }\r
+\r
+ updateParamChangedFlagInDb(deviceDetails.getDeviceId(), nbiDeviceOperationRequest);\r
+ logger.debug("Next operation to be executed is : {}", nextOperation);\r
}\r
}\r
\r
clonedOpRequest.setOpDetails(null);\r
OperationDetails opDetails = new OperationDetails();\r
opDetails.setOpCode(TR069OperationCode.SET_PARAMETER_VALUES);\r
- opDetails.setParmeters(tr069modifyParamList);\r
+ List<ParameterDTO> unprocessedParamList = new ArrayList<>();\r
+ ParameterDTO adminStateParam = null;\r
+ for (ParameterDTO paramDTO : tr069modifyParamList) {\r
+ if (!paramDTO.isProcessed()) {\r
+ if (isAdminStateExists(paramDTO)) {\r
+ adminStateParam = paramDTO;\r
+ } else {\r
+ unprocessedParamList.add(paramDTO);\r
+ }\r
+ }\r
+ }\r
+\r
+ if (null != adminStateParam && isAdminStateFalse(adminStateParam.getParamValue())) {\r
+ List<ParameterDTO> adminStateParamList = new ArrayList<>();\r
+ adminStateParam.setInitiated(Boolean.TRUE);\r
+ adminStateParamList.add(adminStateParam);\r
+ opDetails.setParmeters(adminStateParamList);\r
+ updateParamChangedFlagInDb(deviceDetails.getDeviceId(), nbiDeviceOperationRequest);\r
+ } else if (!unprocessedParamList.isEmpty()) {\r
+ setInititedFlagTrue(unprocessedParamList);\r
+ opDetails.setParmeters(unprocessedParamList);\r
+ updateParamChangedFlagInDb(deviceDetails.getDeviceId(), nbiDeviceOperationRequest);\r
+ } else if (null != adminStateParam\r
+ && isAdminStateTrue(adminStateParam.getParamValue())) {\r
+ List<ParameterDTO> paramList = new ArrayList<>();\r
+ adminStateParam.setInitiated(Boolean.TRUE);\r
+ paramList.add(adminStateParam);\r
+ opDetails.setParmeters(paramList);\r
+ updateParamChangedFlagInDb(deviceDetails.getDeviceId(), nbiDeviceOperationRequest);\r
+ } else {\r
+ isPendingOperationExists = false;\r
+ }\r
+\r
clonedOpRequest.setOpDetails(opDetails);\r
operRequest = clonedOpRequest;\r
} else {\r
return customOperationData;\r
}\r
\r
+\r
enum OperationOrder {\r
\r
SET_PARAMETER_VALUE(null), ADD_OBJECT(SET_PARAMETER_VALUE), DELETE_OBJECT(ADD_OBJECT);\r
return parameterDTO;\r
}\r
\r
+ private boolean isAdminStateExists(ParameterDTO paramDTO) {\r
+ return (paramDTO.getParamName().contains(TR069RequestProcessorUtility.ADMIN_STATE)\r
+ || paramDTO.getParamName().contains(TR069RequestProcessorUtility.ADMIN_STATUS));\r
+ }\r
+\r
+ private void updateParamChangedFlagInDb(String deviceId,\r
+ DeviceRPCRequest nbiDeviceOperationRequest) throws TR069EventProcessingException {\r
+ List<TR069DeviceRPCRequestEntity> entityList = deviceRPCRequestRepositoryHelper\r
+ .findByDeviceIdAndOperationId(deviceId, nbiDeviceOperationRequest.getOperationId());\r
+ List<TR069DeviceRPCRequestEntity> tr069DeviceRPCRequestEntityList =\r
+ TR069RequestProcessorUtility.convertToEntity(nbiDeviceOperationRequest);\r
+ for (int i = 0; i < entityList.size(); i++) {\r
+ tr069DeviceRPCRequestEntityList.get(i).setId(entityList.get(i).getId());\r
+ }\r
+ deviceRPCRequestRepositoryHelper.saveAll(tr069DeviceRPCRequestEntityList);\r
+ }\r
+\r
+ private void setInititedFlagTrue(List<ParameterDTO> unprocessedParamList) {\r
+ for (ParameterDTO paramDTO : unprocessedParamList) {\r
+ paramDTO.setInitiated(Boolean.TRUE);\r
+ }\r
+ }\r
+\r
+ private boolean isAdminStateFalse(String adminState) {\r
+ return (null != adminState && (adminState.equalsIgnoreCase(Boolean.FALSE.toString())\r
+ || adminState.equalsIgnoreCase("0")));\r
+ }\r
+\r
+ private boolean isAdminStateTrue(String adminState) {\r
+ return (null != adminState && (adminState.equalsIgnoreCase(Boolean.TRUE.toString())\r
+ || adminState.equalsIgnoreCase("1")));\r
+ }\r
+\r
}\r
protected static final int BLOCK_SIZE = 3999;\r
protected static final int MAX_SIZE = 11998;\r
public static final int DEVICE_REACHABLE_STATUS_CODE = 100;\r
+ public static final String ADMIN_STATE = "FAPControl.LTE.AdminState";\r
+ public static final String ADMIN_STATUS = "FAPControl.LTE.AdminStatus";\r
\r
\r
private TR069RequestProcessorUtility() {\r
ENV DB_NAME=dmsdb\r
ENV DB_USERNAME=root\r
ENV DB_PASSWORD=root\r
+ENV VENDOR_NAME=CS\r
\r
WORKDIR /opt/CSAdapter/\r
\r
+++ /dev/null
-# ============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\r
-# under the Apache License, Version 2.0 (the "License");\r
-# you may not use this file except in compliance with the License.\r
-# You 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,\r
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r
-# See the License for the specific language governing permissions and\r
-# limitations under the License.\r
-# ===============LICENSE_END=======================================================================\r
-\r
-# CS Adapter configuration file. test\r
-REQUEST_TIMEOUT=40\r
-SBI_URI=http://tr069adapter:${SBI_REST_PORT}/tr069DMSBI/operationRequest\r
-NBI_URI=http://netconfserver:${NBI_REST_PORT}/tr069DMSBI/operationRequest
\ No newline at end of file
</configuration>
</execution>
</executions>
+ </plugin>
+ <plugin>
+ <groupId>org.apache.maven.plugins</groupId>
+ <artifactId>maven-jar-plugin</artifactId>
+ <executions>
+ <execution>
+ <id>mapper-jar</id>
+ <goals>
+ <goal>jar</goal>
+ </goals>
+ <configuration>
+ <finalName>mapper-jar</finalName>
+ <classifier>lib</classifier>
+ </configuration>
+ </execution>
+ </executions>
</plugin>
<plugin>
<groupId>org.springframework.boot</groupId>
private String alarmMORegex;\r
\r
private String verConfigUri;\r
+ private String vendorName;\r
\r
public String getRequesTimeout() {\r
return requesTimeout;\r
this.verConfigUri = verConfigUri;\r
}\r
\r
+ public String getVendorName() {\r
+ return vendorName;\r
+ }\r
+\r
+ public void setVendorName(String vendorName) {\r
+ this.vendorName = vendorName;\r
+ }\r
+\r
}\r
if (notification.getDeviceDetails().getSoftwareVersion()\r
.equalsIgnoreCase(devDetails.getSwVersion())) {\r
paramList.add(new ParameterDTO("activation-event.status", "APPLICATION_ERROR"));\r
+ paramList.add(new ParameterDTO("activation-event.error-message", "Same Software Version is reported after upgrade"));\r
devDetails.setDownLoadStatus(FirwareUpgradeStatus.ACTIVATION_ERROR.getStatus());\r
} else {\r
devDetails.setSwVersion(notification.getDeviceDetails().getSoftwareVersion());\r
import java.util.ArrayList;\r
import java.util.List;\r
import java.util.Map;\r
-\r
import org.commscope.tr069adapter.acs.common.DeviceRPCRequest;\r
import org.commscope.tr069adapter.acs.common.DeviceRPCResponse;\r
import org.commscope.tr069adapter.acs.common.OperationOptions;\r
+import org.commscope.tr069adapter.acs.common.OperationResponse;\r
import org.commscope.tr069adapter.acs.common.ParameterDTO;\r
+import org.commscope.tr069adapter.acs.common.dto.CustomOperationCode;\r
import org.commscope.tr069adapter.acs.common.dto.TR069DeviceDetails;\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.response.SetParameterValueResponse;\r
import org.commscope.tr069adapter.mapper.MOMetaData;\r
import org.commscope.tr069adapter.mapper.dao.DeviceOperationsDAO;\r
import org.commscope.tr069adapter.mapper.entity.DeviceOperationDetails;\r
MOMetaDataUtil metaDataUtil;\r
\r
@Autowired\r
- private ErrorCodeUtil errorCodeUtil;\r
+ ErrorCodeUtil errorCodeUtil;\r
\r
@Autowired\r
VESNotificationSender vesnotiSender;\r
DeviceRPCResponse deviceRPCResponseDevice = null;\r
if (null != allParamList && !allParamList.isEmpty()) {\r
deviceRPCRequest.getOpDetails().setParmeters(allParamList);\r
- deviceRPCResponseDevice = syncHandler.performDeviceOperation(deviceRPCRequest);\r
+ if (isAdminStateOverriden(allParamList)) {\r
+ deviceRPCRequest.getOpDetails().setOpCode(CustomOperationCode.CONFIGURE_MULTIPLE_OBJECTS);\r
+ TR069OperationDetails tr069OperationDetails =\r
+ (TR069OperationDetails) deviceRPCRequest.getOpDetails();\r
+ tr069OperationDetails.setModifyParamList(allParamList);\r
+ tr069OperationDetails.setSetParamList(null);\r
+\r
+ deviceRPCResponseDevice = syncHandler.performDeviceOperation(deviceRPCRequest);\r
+ convertResposeToSPVResponse(deviceRPCResponseDevice);\r
+ } else {\r
+ deviceRPCResponseDevice = syncHandler.performDeviceOperation(deviceRPCRequest);\r
+ }\r
\r
if (null == deviceRPCResponseDevice) {\r
return getTimeOutResponse();\r
return response;\r
}\r
\r
- private DeviceRPCResponse mergeGetConfigDeviceRPCResponse(DeviceRPCResponse opResultVes,\r
+ protected DeviceRPCResponse mergeGetConfigDeviceRPCResponse(DeviceRPCResponse opResultVes,\r
DeviceRPCResponse opResultDevice) {\r
if (null == opResultVes) {\r
return opResultDevice;\r
return opResultDevice;\r
}\r
\r
- private DeviceRPCResponse mergeSetConfigDeviceRPCResponse(DeviceRPCResponse opResultVes,\r
+ protected DeviceRPCResponse mergeSetConfigDeviceRPCResponse(DeviceRPCResponse opResultVes,\r
DeviceRPCResponse opResultDevice) {\r
if (null == opResultVes) {\r
return opResultDevice;\r
return opResultDevice;\r
}\r
\r
- private boolean isVesNotificationRequest(ParameterDTO param) {\r
+ protected boolean isVesNotificationRequest(ParameterDTO param) {\r
if (null == param.getParamName() || param.getParamName().isEmpty()) {\r
return false;\r
}\r
return false;\r
}\r
\r
- private void handleBooleanParameters(List<ParameterDTO> parameterDTOs) {\r
+ protected void handleBooleanParameters(List<ParameterDTO> parameterDTOs) {\r
\r
for (ParameterDTO param : parameterDTOs) {\r
MOMetaData metaData = metaDataUtil.getMetaDataByTR69Name(param.getParamName());\r
}\r
}\r
\r
- private void handleBooleanParametersReverse(List<ParameterDTO> parameterDTOs) {\r
+ protected void handleBooleanParametersReverse(List<ParameterDTO> parameterDTOs) {\r
\r
for (ParameterDTO param : parameterDTOs) {\r
MOMetaData metaData = metaDataUtil.getMetaDataByTR69Name(param.getParamName());\r
}\r
}\r
\r
- private NetConfResponse getEmptyResponse() {\r
+ protected NetConfResponse getEmptyResponse() {\r
NetConfResponse response = new NetConfResponse();\r
ErrorCodeDetails errorCodeMetaData = errorCodeUtil.getErrorCodeMetaData("0");\r
ErrorCodeDetails errorCode = new ErrorCodeDetails();\r
return response;\r
}\r
\r
- private NetConfResponse getTimeOutResponse() {\r
+ protected NetConfResponse getTimeOutResponse() {\r
// prepare timeout error response\r
NetConfResponse timeOutErrorResponse = new NetConfResponse();\r
ErrorCodeDetails errorCode = new ErrorCodeDetails();\r
return timeOutErrorResponse;\r
}\r
\r
- private NetConfResponse getErrorResponse(String errCode, String errorMsg) {\r
+ protected NetConfResponse getErrorResponse(String errCode, String errorMsg) {\r
NetConfResponse errorResponse = new NetConfResponse();\r
ErrorCodeDetails errorCode = new ErrorCodeDetails();\r
ErrorCodeDetails errorCodeMetaData = errorCodeUtil.getErrorCodeMetaData("8006");\r
return errorResponse;\r
}\r
\r
- private NetConfResponse getOperationAbortedResponse(String errorMessage) {\r
+ protected NetConfResponse getOperationAbortedResponse(String errorMessage) {\r
// prepare timeout error response\r
NetConfResponse timeOutErrorResponse = new NetConfResponse();\r
ErrorCodeDetails errorCode = new ErrorCodeDetails();\r
ErrorCodeDetails errorCodeMetaData = errorCodeUtil.getErrorCodeMetaData("8006");\r
- if (errorCode != null) {\r
+ if (errorCodeMetaData != null) {\r
errorCode.setFaultCode("8002");\r
errorCode.setErrorMessage(errorCodeMetaData.getErrorMessage());\r
errorCode.setErrorType(errorCodeMetaData.getErrorType());\r
return result;\r
}\r
\r
- private List<ParameterDTO> filteredGetParameters(List<ParameterDTO> parameters) {\r
+ protected List<ParameterDTO> filteredGetParameters(List<ParameterDTO> parameters) {\r
\r
return metaDataUtil.getSupportedChildParameters(parameters);\r
}\r
return result;\r
}\r
\r
- private static String getDownloadFileURI(String filepath) {\r
+ protected static String getDownloadFileURI(String filepath) {\r
\r
if (filepath.contains("@") && filepath.contains("//")) {\r
String[] str = filepath.split("@");\r
return null;\r
}\r
\r
- private static String getDownloadUserName(String filepath) {\r
+ protected static String getDownloadUserName(String filepath) {\r
\r
if (filepath.contains("@") && filepath.contains("//")) {\r
String[] str = filepath.split("@");\r
}\r
return null;\r
}\r
+\r
+ protected boolean isAdminStateOverriden(List<ParameterDTO> paramList) {\r
+ for (ParameterDTO paramDTO : paramList) {\r
+ if (paramDTO.getParamName().contains(MapperConstants.ADMIN_STATE)\r
+ || paramDTO.getParamName().contains(MapperConstants.ADMIN_STATUS)) {\r
+ return true;\r
+ }\r
+ }\r
+ return false;\r
+ }\r
+\r
+ protected void convertResposeToSPVResponse(DeviceRPCResponse deviceRPCResponse) {\r
+ if (null == deviceRPCResponse) {\r
+ return;\r
+ }\r
+\r
+ OperationResponse operationResponse = new SetParameterValueResponse();\r
+ operationResponse.setParameterDTOs(new ArrayList<ParameterDTO>());\r
+\r
+ if (null == deviceRPCResponse.getFaultKey()) {\r
+ operationResponse.setStatus(MapperConstants.RPC_SUCCESS_CODE);\r
+ } else {\r
+ operationResponse.setStatus(MapperConstants.RPC_FAILED_CODE);\r
+ }\r
+\r
+ deviceRPCResponse.setOperationResponse(operationResponse);\r
+ }\r
}\r
* ===============LICENSE_END=======================================================================
*/
-package org.commscope.tr069adapter.mapper.util;\r
-\r
-public class MapperConstants {\r
- public static final String HEART_BEAT_PERIOD = "heartbeatPeriod";\r
- public static final String HEART_BEAT = "heartbeat";\r
- public static final String COUNT_DOWN_TIMER = "countDownTimer";\r
- public static final String COUNT_DOWN_TIMER_SET_VAL = "0";\r
- public static final String INVALID_COUNT_DOWN_TIMER_MSG =\r
- "Only 0 is allowed for countDownTimer value during set operation";\r
- public static final String INVALID_PARAM_VAL_ERROR_CODE = "9007";\r
-\r
- public static final int DEVICE_REACHABLE_STATUS_CODE = 100;\r
- public static final int DEVICE_REACHABILITY_OP_FAILURE_CODE = 101;\r
- public static final String DEVICE_TIMEOUT_STATUS_CODE = "8006";\r
- public static final String DEVICE_REACHABLE_MSG = "Device is reachable";\r
- public static final String DEFAULT_OP_TIMEOUT_MSG = "Operation Timed out";\r
- public static final String RPC_SUCCESS = "0";\r
-}\r
+package org.commscope.tr069adapter.mapper.util;
+
+public class MapperConstants {
+ public static final String HEART_BEAT_PERIOD = "heartbeatPeriod";
+ public static final String HEART_BEAT = "heartbeat";
+ public static final String COUNT_DOWN_TIMER = "countDownTimer";
+ public static final String COUNT_DOWN_TIMER_SET_VAL = "0";
+ public static final String INVALID_COUNT_DOWN_TIMER_MSG =
+ "Only 0 is allowed for countDownTimer value during set operation";
+ public static final String INVALID_PARAM_VAL_ERROR_CODE = "9007";
+
+ public static final int DEVICE_REACHABLE_STATUS_CODE = 100;
+ public static final int DEVICE_REACHABILITY_OP_FAILURE_CODE = 101;
+ public static final String DEVICE_TIMEOUT_STATUS_CODE = "8006";
+ public static final String DEVICE_REACHABLE_MSG = "Device is reachable";
+ public static final String DEFAULT_OP_TIMEOUT_MSG = "Operation Timed out";
+ public static final String RPC_SUCCESS = "0";
+ public static final String RPC_FAILED = "1";
+
+ public static final int RPC_SUCCESS_CODE = 0;
+ public static final int RPC_FAILED_CODE = 1;
+
+ public static final String ADMIN_STATE = "FAPControl.LTE.AdminState";
+ public static final String ADMIN_STATUS = "FAPControl.LTE.AdminStatus";
+}
import org.commscope.tr069adapter.acs.common.dto.TR069DeviceDetails;\r
import org.commscope.tr069adapter.acs.common.dto.TR069OperationCode;\r
import org.commscope.tr069adapter.acs.common.dto.TR069OperationDetails;\r
+import org.commscope.tr069adapter.mapper.MapperConfigProperties;\r
import org.commscope.tr069adapter.mapper.model.ErrorCodeDetails;\r
import org.commscope.tr069adapter.mapper.model.NetConfResponse;\r
import org.slf4j.Logger;\r
\r
@Autowired\r
MOMetaDataUtil metaDataUtil;\r
+ \r
+ @Autowired\r
+ MapperConfigProperties config;\r
\r
private static final Logger logger = LoggerFactory.getLogger(NetconfToTr069MapperUtil.class);\r
private static final String INDEX_STR = "index";\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.vendor-code", config.getVendorName()));\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
config.nbiServerManagerUri=http://${NBI_REST_HOST}:${NBI_REST_PORT}/netConfServerManagerService\r
config.vesUri=http://${VES_REST_HOST}:${VES_REST_PORT}/vesagent/deviceEvent\r
config.verConfigUri=http://${VES_REST_HOST}:${VES_REST_PORT}/vesagent\r
-config.netConfServerIP=${netConfServerIP};\r
-config.netConfServerPort=${netConfServerPort};\r
+config.netConfServerIP=${netConfServerIP}\r
+config.netConfServerPort=${netConfServerPort}\r
+config.vendorName=${VENDOR_NAME}\r
\r
## Datasource properties\r
spring.datasource.platform=mariadb\r
}\r
LOG.debug("Successfully populated available ports list.");\r
}\r
-\r
- public String reserveServerPort() throws ServerPortAllocationException {\r
+ \r
+ public synchronized String reserveServerPort() throws ServerPortAllocationException {\r
\r
if (availablePorts.isEmpty()) {\r
LOG.debug(\r
LOG.debug("Trying to reserve port : {}", port);\r
if (isServerPortInUse(port)) {\r
LOG.debug("Port {} is already in use.", port);\r
+ availablePorts.poll();\r
return reserveServerPort(); // retry if current port is not available\r
}\r
\r
ENV faultvesCollectorPort=30235\r
ENV pnfregvesCollectorHost=localhost\r
ENV pnfregvesCollectorPort=30235\r
-ENV vendorName=CommScope\r
-ENV faultEventType=CommScope_RAN_Alarms\r
-ENV pnfRegEventType=CommScope_RAN_pnfRegistration\r
-ENV unitFamily=OneCell\r
-ENV unitType=BasebandController\r
-ENV faultEventSourcePrefix=OneCell\r
+ENV vendorName=ORAN\r
+ENV faultEventType=O_RAN_Alarms\r
+ENV pnfRegEventType=O_RAN_pnfRegistration\r
+ENV unitFamily=ORAN\r
+ENV unitType=SmallCell\r
+ENV faultEventSourcePrefix=SmallCell\r
ENV DB_SERVICE=tr069adapter-mariadb\r
ENV DB_NAME=dmsdb\r
ENV DB_USERNAME=root\r
}\r
\r
@Async\r
- public void initiateDeviceReachabilityCheck(DeviceDataEntity deviceDataEntity) {\r
+ public void initiateDeviceReachabilityCheck(DeviceDataEntity deviceDataEntity) {
+ deviceDataEntity.setStartEpochMicrosec(VesAgentUtils.getStartEpochTime()*1000);\r
DeviceDetails deviceDetails = new DeviceDetails();\r
deviceDetails.setDeviceId(deviceDataEntity.getDeviceId());\r
deviceDetails.setOui(deviceDataEntity.getOui());\r
eventHeader.setSourceId(deviceDataEntity.getDeviceId());\r
}\r
\r
- eventHeader.setStartEpochMicrosec(System.currentTimeMillis() * 1000);\r
+ eventHeader.setStartEpochMicrosec(deviceDataEntity.getStartEpochMicrosec());\r
eventHeader.setVersion(config.getEventVersion());\r
eventHeader.setNfNamingCode("");\r
eventHeader.setNfcNamingCode("");\r
import javax.persistence.Transient;\r
import javax.persistence.UniqueConstraint;\r
\r
-/**\r
- * \r
- * @version 1.0\r
- * @since May 21, 2020\r
- * @author Prashant Kumar\r
- */\r
-\r
@Entity\r
@Table(name = "VES_DEVICE_DATA",\r
uniqueConstraints = @UniqueConstraint(columnNames = {"DEVICE_ID", "ATTR_GROUP"}))\r
\r
public void setLastUpdateTime(Date lastUpdateTime) {\r
this.lastUpdateTime = lastUpdateTime;\r
+ }
+
+ @Transient
+ private Long startEpochMicrosec;
+
+ public Long getStartEpochMicrosec() {
+ return startEpochMicrosec;
+ }
+
+ public void setStartEpochMicrosec(Long startEpochMicrosec) {
+ this.startEpochMicrosec = startEpochMicrosec;
}\r
\r
@Transient\r
* ===============LICENSE_END=======================================================================
*/
-package org.commscope.tr069adapter.vesagent.util;\r
-\r
-import java.util.List;\r
-import java.util.Map;\r
-\r
-import org.apache.commons.logging.Log;\r
-import org.apache.commons.logging.LogFactory;\r
-import org.commscope.tr069adapter.acs.common.DeviceRPCRequest;\r
-import org.commscope.tr069adapter.acs.common.DeviceRPCResponse;\r
-import org.commscope.tr069adapter.acs.common.OperationCode;\r
-import org.commscope.tr069adapter.acs.common.OperationResponse;\r
-import org.commscope.tr069adapter.acs.common.ParameterDTO;\r
-import org.commscope.tr069adapter.mapper.model.VESNotification;\r
-import org.commscope.tr069adapter.vesagent.exception.VesAgentException;\r
-\r
-\r
-public class VesAgentUtils {\r
- private static final Log logger = LogFactory.getLog(VesAgentUtils.class);\r
-\r
- private static String errorMsg = null;\r
-\r
- public static boolean isNullOrEmpty(String object) {\r
- return (null == object || object.isEmpty());\r
- }\r
-\r
- public static Boolean isNullOrEmpty(List list) {\r
- return (null == list || list.isEmpty());\r
- }\r
-\r
- public static Boolean isNullOrEmpty(Map map) {\r
- return (null == map || map.isEmpty());\r
- }\r
-\r
- public static void validateDeviceId(String deviceId) throws VesAgentException {\r
- if (null == deviceId || deviceId.isEmpty()) {\r
- errorMsg = "Error: deviceId in request is null or empty";\r
- logger.error(errorMsg);\r
- throw new VesAgentException(errorMsg);\r
- }\r
- }\r
-\r
- public static void validateHeartBeatPeriod(Integer heartBeatPeriod) throws VesAgentException {\r
- if (null == heartBeatPeriod) {\r
- errorMsg = "Error: heartBeatPeriod in request is null or empty";\r
- logger.error(errorMsg);\r
- throw new VesAgentException(errorMsg);\r
- }\r
- }\r
-\r
-\r
- public static void validateCountDownTimer(Integer countDownTimer) throws VesAgentException {\r
- if (null == countDownTimer) {\r
- errorMsg = "Error: countDownTimer in request is null or empty";\r
- logger.error(errorMsg);\r
- throw new VesAgentException(errorMsg);\r
- }\r
- }\r
-\r
- public static void validateDeviceRPCRequest(DeviceRPCRequest deviceRPCRequest)\r
- throws VesAgentException {\r
- if (null == deviceRPCRequest || null == deviceRPCRequest.getOpDetails()\r
- || null == deviceRPCRequest.getOpDetails().getParmeters()\r
- || deviceRPCRequest.getOpDetails().getParmeters().isEmpty()) {\r
- errorMsg = "Error: Input parameter list is null or empty";\r
- logger.error(errorMsg);\r
- throw new VesAgentException(VesAgentConstants.INVALID_ARGUMENTS, errorMsg);\r
- }\r
-\r
- if (null == deviceRPCRequest.getDeviceDetails()\r
- || null == deviceRPCRequest.getDeviceDetails().getDeviceId()\r
- || deviceRPCRequest.getDeviceDetails().getDeviceId().isEmpty()) {\r
- errorMsg = "Error: Input deviceId is null or empty";\r
- logger.error(errorMsg);\r
- throw new VesAgentException(VesAgentConstants.INVALID_ARGUMENTS, errorMsg);\r
- }\r
- }\r
-\r
- public static void validateVESNotification(VESNotification notification)\r
- throws VesAgentException {\r
- if (null == notification || null == notification.getDevnotification()\r
- || null == notification.getDevnotification().getDeviceDetails()\r
- || null == notification.getDevnotification().getDeviceDetails().getDeviceId()\r
- || notification.getDevnotification().getDeviceDetails().getDeviceId().isEmpty()) {\r
-\r
- errorMsg = "Error: Input device details is null or empty";\r
- logger.error(errorMsg);\r
- throw new VesAgentException(VesAgentConstants.INVALID_ARGUMENTS, errorMsg);\r
- }\r
- }\r
-\r
- public static void validateDelVESNotification(VESNotification notification)\r
- throws VesAgentException {\r
- if (null == notification || null == notification.getOperationDetails()\r
- || null == notification.getOperationDetails().getParmeters()\r
- || notification.getOperationDetails().getParmeters().isEmpty()) {\r
- errorMsg = "Error: Input parameter list is null or empty";\r
- logger.error(errorMsg);\r
- throw new VesAgentException(VesAgentConstants.INVALID_ARGUMENTS, errorMsg);\r
- }\r
-\r
- if (null == notification.geteNodeBName() || notification.geteNodeBName().isEmpty()) {\r
- errorMsg = "Error: Input deviceId/enodeBName is null or empty";\r
- logger.error(errorMsg);\r
- throw new VesAgentException(VesAgentConstants.INVALID_ARGUMENTS, errorMsg);\r
- }\r
- }\r
-\r
-\r
- public static DeviceRPCResponse getErrorResponse(DeviceRPCRequest deviceRPCRequest,\r
- String faultCode, String faultMessage) {\r
- DeviceRPCResponse errorResponse = new DeviceRPCResponse();\r
-\r
- errorResponse.setDeviceDetails(deviceRPCRequest.getDeviceDetails());\r
-\r
- OperationResponse operationResponse = new OperationResponse();\r
- operationResponse.setStatus(VesAgentConstants.RPC_FAILED);// device reachable...change value 1\r
- // to some constant or enum\r
- operationResponse.setOperationCode(deviceRPCRequest.getOpDetails().getOpCode());\r
-\r
- errorResponse.setOperationResponse(operationResponse);\r
- errorResponse.setFaultKey(faultCode);\r
- errorResponse.setFaultString(faultMessage);\r
-\r
- return errorResponse;\r
- }\r
-\r
- public static DeviceRPCResponse getSuccessResponse(DeviceRPCRequest deviceRPCRequest) {\r
- DeviceRPCResponse response = new DeviceRPCResponse();\r
-\r
- response.setDeviceDetails(deviceRPCRequest.getDeviceDetails());\r
-\r
- OperationResponse operationResponse = new OperationResponse();\r
- operationResponse.setStatus(VesAgentConstants.RPC_SUCCESS);\r
- operationResponse.setOperationCode(deviceRPCRequest.getOpDetails().getOpCode());\r
- operationResponse.setParameterDTOs(deviceRPCRequest.getOpDetails().getParmeters());\r
-\r
- response.setOperationResponse(operationResponse);\r
- return response;\r
- }\r
-\r
- public static boolean isDeviceReachable(DeviceRPCResponse deviceRPCResponse) {\r
- if (null == deviceRPCResponse || null == deviceRPCResponse.getOperationResponse()) {\r
- return false;\r
- }\r
-\r
- if (deviceRPCResponse.getOperationResponse()\r
- .getStatus() == VesAgentConstants.DEVICE_IS_REACHABLE) {\r
- return true;\r
- }\r
-\r
- return (null != deviceRPCResponse.getFaultKey() && deviceRPCResponse.getFaultKey()\r
- .equalsIgnoreCase(VesAgentConstants.ABORTED_BY_BOOT_BOOTSTRAP));\r
- }\r
-\r
- public static Boolean isVesNotificationRequest(ParameterDTO param) {\r
- if (null == param.getParamName() || param.getParamName().isEmpty()) {\r
- return false;\r
- }\r
-\r
- return param.getParamName().toLowerCase().contains(VesAgentConstants.HEART_BEAT.toLowerCase());\r
- }\r
-\r
-\r
- public static String getDeviceOperationKey(String deviceId, OperationCode opCode) {\r
- return deviceId + "-" + opCode;\r
- }\r
-\r
-}\r
+package org.commscope.tr069adapter.vesagent.util;
+
+import java.util.Calendar;
+import java.util.List;
+import java.util.Map;
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+import org.commscope.tr069adapter.acs.common.DeviceRPCRequest;
+import org.commscope.tr069adapter.acs.common.DeviceRPCResponse;
+import org.commscope.tr069adapter.acs.common.OperationCode;
+import org.commscope.tr069adapter.acs.common.OperationResponse;
+import org.commscope.tr069adapter.acs.common.ParameterDTO;
+import org.commscope.tr069adapter.mapper.model.VESNotification;
+import org.commscope.tr069adapter.vesagent.exception.VesAgentException;
+
+
+public class VesAgentUtils {
+ private static final Log logger = LogFactory.getLog(VesAgentUtils.class);
+
+ private static String errorMsg = null;
+
+ public static boolean isNullOrEmpty(String object) {
+ return (null == object || object.isEmpty());
+ }
+
+ public static Boolean isNullOrEmpty(List list) {
+ return (null == list || list.isEmpty());
+ }
+
+ public static Boolean isNullOrEmpty(Map map) {
+ return (null == map || map.isEmpty());
+ }
+
+ public static void validateDeviceId(String deviceId) throws VesAgentException {
+ if (null == deviceId || deviceId.isEmpty()) {
+ errorMsg = "Error: deviceId in request is null or empty";
+ logger.error(errorMsg);
+ throw new VesAgentException(errorMsg);
+ }
+ }
+
+ public static void validateHeartBeatPeriod(Integer heartBeatPeriod) throws VesAgentException {
+ if (null == heartBeatPeriod) {
+ errorMsg = "Error: heartBeatPeriod in request is null or empty";
+ logger.error(errorMsg);
+ throw new VesAgentException(errorMsg);
+ }
+ }
+
+
+ public static void validateCountDownTimer(Integer countDownTimer) throws VesAgentException {
+ if (null == countDownTimer) {
+ errorMsg = "Error: countDownTimer in request is null or empty";
+ logger.error(errorMsg);
+ throw new VesAgentException(errorMsg);
+ }
+ }
+
+ public static void validateDeviceRPCRequest(DeviceRPCRequest deviceRPCRequest)
+ throws VesAgentException {
+ if (null == deviceRPCRequest || null == deviceRPCRequest.getOpDetails()
+ || null == deviceRPCRequest.getOpDetails().getParmeters()
+ || deviceRPCRequest.getOpDetails().getParmeters().isEmpty()) {
+ errorMsg = "Error: Input parameter list is null or empty";
+ logger.error(errorMsg);
+ throw new VesAgentException(VesAgentConstants.INVALID_ARGUMENTS, errorMsg);
+ }
+
+ if (null == deviceRPCRequest.getDeviceDetails()
+ || null == deviceRPCRequest.getDeviceDetails().getDeviceId()
+ || deviceRPCRequest.getDeviceDetails().getDeviceId().isEmpty()) {
+ errorMsg = "Error: Input deviceId is null or empty";
+ logger.error(errorMsg);
+ throw new VesAgentException(VesAgentConstants.INVALID_ARGUMENTS, errorMsg);
+ }
+ }
+
+ public static void validateVESNotification(VESNotification notification)
+ throws VesAgentException {
+ if (null == notification || null == notification.getDevnotification()
+ || null == notification.getDevnotification().getDeviceDetails()
+ || null == notification.getDevnotification().getDeviceDetails().getDeviceId()
+ || notification.getDevnotification().getDeviceDetails().getDeviceId().isEmpty()) {
+
+ errorMsg = "Error: Input device details is null or empty";
+ logger.error(errorMsg);
+ throw new VesAgentException(VesAgentConstants.INVALID_ARGUMENTS, errorMsg);
+ }
+ }
+
+ public static void validateDelVESNotification(VESNotification notification)
+ throws VesAgentException {
+ if (null == notification || null == notification.getOperationDetails()
+ || null == notification.getOperationDetails().getParmeters()
+ || notification.getOperationDetails().getParmeters().isEmpty()) {
+ errorMsg = "Error: Input parameter list is null or empty";
+ logger.error(errorMsg);
+ throw new VesAgentException(VesAgentConstants.INVALID_ARGUMENTS, errorMsg);
+ }
+
+ if (null == notification.geteNodeBName() || notification.geteNodeBName().isEmpty()) {
+ errorMsg = "Error: Input deviceId/enodeBName is null or empty";
+ logger.error(errorMsg);
+ throw new VesAgentException(VesAgentConstants.INVALID_ARGUMENTS, errorMsg);
+ }
+ }
+
+
+ public static DeviceRPCResponse getErrorResponse(DeviceRPCRequest deviceRPCRequest,
+ String faultCode, String faultMessage) {
+ DeviceRPCResponse errorResponse = new DeviceRPCResponse();
+
+ errorResponse.setDeviceDetails(deviceRPCRequest.getDeviceDetails());
+
+ OperationResponse operationResponse = new OperationResponse();
+ operationResponse.setStatus(VesAgentConstants.RPC_FAILED);// device reachable...change value 1
+ // to some constant or enum
+ operationResponse.setOperationCode(deviceRPCRequest.getOpDetails().getOpCode());
+
+ errorResponse.setOperationResponse(operationResponse);
+ errorResponse.setFaultKey(faultCode);
+ errorResponse.setFaultString(faultMessage);
+
+ return errorResponse;
+ }
+
+ public static DeviceRPCResponse getSuccessResponse(DeviceRPCRequest deviceRPCRequest) {
+ DeviceRPCResponse response = new DeviceRPCResponse();
+
+ response.setDeviceDetails(deviceRPCRequest.getDeviceDetails());
+
+ OperationResponse operationResponse = new OperationResponse();
+ operationResponse.setStatus(VesAgentConstants.RPC_SUCCESS);
+ operationResponse.setOperationCode(deviceRPCRequest.getOpDetails().getOpCode());
+ operationResponse.setParameterDTOs(deviceRPCRequest.getOpDetails().getParmeters());
+
+ response.setOperationResponse(operationResponse);
+ return response;
+ }
+
+ public static boolean isDeviceReachable(DeviceRPCResponse deviceRPCResponse) {
+ if (null == deviceRPCResponse || null == deviceRPCResponse.getOperationResponse()) {
+ return false;
+ }
+
+ if (deviceRPCResponse.getOperationResponse()
+ .getStatus() == VesAgentConstants.DEVICE_IS_REACHABLE) {
+ return true;
+ }
+
+ return (null != deviceRPCResponse.getFaultKey() && deviceRPCResponse.getFaultKey()
+ .equalsIgnoreCase(VesAgentConstants.ABORTED_BY_BOOT_BOOTSTRAP));
+ }
+
+ public static Boolean isVesNotificationRequest(ParameterDTO param) {
+ if (null == param.getParamName() || param.getParamName().isEmpty()) {
+ return false;
+ }
+
+ return param.getParamName().toLowerCase().contains(VesAgentConstants.HEART_BEAT.toLowerCase());
+ }
+
+
+ public static String getDeviceOperationKey(String deviceId, OperationCode opCode) {
+ return deviceId + "-" + opCode;
+ }
+
+ public static long getStartEpochTime() {
+ Calendar calendar = Calendar.getInstance();
+
+ long minuteEquivalentWithoutSec = calendar.getTimeInMillis();
+ minuteEquivalentWithoutSec = (minuteEquivalentWithoutSec / 60000);
+ minuteEquivalentWithoutSec = minuteEquivalentWithoutSec * 60 * 1000;
+
+ return minuteEquivalentWithoutSec;
+ }
+
+}