aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--ransim/WebContent/META-INF/MANIFEST.MF3
-rw-r--r--ransim/docker/.env2
-rwxr-xr-x[-rw-r--r--]ransim/docker/config/db/db.sh0
-rw-r--r--ransim/docker/config/db/ransim_schema.sql369
-rw-r--r--ransim/docker/config/ransim/gNBCUConfig.json772
-rw-r--r--ransim/docker/config/ransim/gNBCUConfig_1NSSAI.json472
-rw-r--r--ransim/docker/config/ransim/jssecacertsbin0 -> 161770 bytes
-rw-r--r--ransim/docker/config/ransim/ransim.properties5
-rw-r--r--ransim/docker/docker-compose.yml10
-rw-r--r--ransim/docker/ransim-docker/Dockerfile35
-rwxr-xr-x[-rw-r--r--]ransim/docker/ransim-docker/do-start.sh0
-rwxr-xr-x[-rw-r--r--]ransim/docker/ransim-docker/docker-install.sh0
-rwxr-xr-x[-rw-r--r--]ransim/docker/ransim-docker/wait-for-port.sh0
-rw-r--r--ransim/pom.xml7
-rw-r--r--ransim/ransimctrlr/RANSIM-CTRLR/.gitignore1
-rw-r--r--ransim/ransimctrlr/RANSIM-CTRLR/pom.xml147
-rw-r--r--ransim/ransimctrlr/RANSIM-CTRLR/src/main/java/org/onap/ransim/Application.java17
-rw-r--r--ransim/ransimctrlr/RANSIM-CTRLR/src/main/java/org/onap/ransim/RansimDbConfig.java74
-rw-r--r--ransim/ransimctrlr/RANSIM-CTRLR/src/main/java/org/onap/ransim/ServletInitializer.java13
-rw-r--r--ransim/ransimctrlr/RANSIM-CTRLR/src/main/java/org/onap/ransim/netconf/NetconfClient.java226
-rw-r--r--ransim/ransimctrlr/RANSIM-CTRLR/src/main/java/org/onap/ransim/rest/api/controller/FileController.java90
-rw-r--r--ransim/ransimctrlr/RANSIM-CTRLR/src/main/java/org/onap/ransim/rest/api/controller/RANSliceConfigController.java567
-rw-r--r--ransim/ransimctrlr/RANSIM-CTRLR/src/main/java/org/onap/ransim/rest/api/controller/RansimController.java1525
-rw-r--r--ransim/ransimctrlr/RANSIM-CTRLR/src/main/java/org/onap/ransim/rest/api/controller/RansimControllerDatabase.java409
-rw-r--r--ransim/ransimctrlr/RANSIM-CTRLR/src/main/java/org/onap/ransim/rest/api/controller/RansimControllerServices.java730
-rw-r--r--ransim/ransimctrlr/RANSIM-CTRLR/src/main/java/org/onap/ransim/rest/api/exceptions/RansimException.java27
-rw-r--r--ransim/ransimctrlr/RANSIM-CTRLR/src/main/java/org/onap/ransim/rest/api/handler/RansimPciHandler.java (renamed from ransim/ransimctrlr/RANSIM-CTRLR/src/main/java/org/onap/ransim/rest/api/controller/RansimPciHandler.java)176
-rw-r--r--ransim/ransimctrlr/RANSIM-CTRLR/src/main/java/org/onap/ransim/rest/api/handler/RansimSlicingHandler.java265
-rw-r--r--ransim/ransimctrlr/RANSIM-CTRLR/src/main/java/org/onap/ransim/rest/api/models/CellData.java74
-rw-r--r--ransim/ransimctrlr/RANSIM-CTRLR/src/main/java/org/onap/ransim/rest/api/models/CellDetails.java465
-rw-r--r--ransim/ransimctrlr/RANSIM-CTRLR/src/main/java/org/onap/ransim/rest/api/models/CellInfo.java191
-rw-r--r--ransim/ransimctrlr/RANSIM-CTRLR/src/main/java/org/onap/ransim/rest/api/models/CellNeighbor.java106
-rw-r--r--ransim/ransimctrlr/RANSIM-CTRLR/src/main/java/org/onap/ransim/rest/api/models/ConfigData.java21
-rw-r--r--ransim/ransimctrlr/RANSIM-CTRLR/src/main/java/org/onap/ransim/rest/api/models/CreateACellReq.java105
-rw-r--r--ransim/ransimctrlr/RANSIM-CTRLR/src/main/java/org/onap/ransim/rest/api/models/DeleteACellReq.java51
-rw-r--r--ransim/ransimctrlr/RANSIM-CTRLR/src/main/java/org/onap/ransim/rest/api/models/FmAlarmInfo.java97
-rw-r--r--ransim/ransimctrlr/RANSIM-CTRLR/src/main/java/org/onap/ransim/rest/api/models/GNBCUCPFunction.java79
-rw-r--r--ransim/ransimctrlr/RANSIM-CTRLR/src/main/java/org/onap/ransim/rest/api/models/GNBCUUPFunction.java79
-rw-r--r--ransim/ransimctrlr/RANSIM-CTRLR/src/main/java/org/onap/ransim/rest/api/models/GNBDUFunction.java86
-rw-r--r--ransim/ransimctrlr/RANSIM-CTRLR/src/main/java/org/onap/ransim/rest/api/models/GetACellDetailReq.java51
-rw-r--r--ransim/ransimctrlr/RANSIM-CTRLR/src/main/java/org/onap/ransim/rest/api/models/GetNeighborList.java98
-rw-r--r--ransim/ransimctrlr/RANSIM-CTRLR/src/main/java/org/onap/ransim/rest/api/models/GetNeighborListReq.java51
-rw-r--r--ransim/ransimctrlr/RANSIM-CTRLR/src/main/java/org/onap/ransim/rest/api/models/GetNetconfServerDetailsReq.java53
-rw-r--r--ransim/ransimctrlr/RANSIM-CTRLR/src/main/java/org/onap/ransim/rest/api/models/GetPmDataReq.java74
-rw-r--r--ransim/ransimctrlr/RANSIM-CTRLR/src/main/java/org/onap/ransim/rest/api/models/GetTopology.java144
-rw-r--r--ransim/ransimctrlr/RANSIM-CTRLR/src/main/java/org/onap/ransim/rest/api/models/ModifyACellReq.java101
-rw-r--r--ransim/ransimctrlr/RANSIM-CTRLR/src/main/java/org/onap/ransim/rest/api/models/NRCellCU.java58
-rw-r--r--ransim/ransimctrlr/RANSIM-CTRLR/src/main/java/org/onap/ransim/rest/api/models/NRCellDU.java98
-rw-r--r--ransim/ransimctrlr/RANSIM-CTRLR/src/main/java/org/onap/ransim/rest/api/models/NSSAIConfig.java45
-rw-r--r--ransim/ransimctrlr/RANSIM-CTRLR/src/main/java/org/onap/ransim/rest/api/models/NbrDump.java62
-rw-r--r--ransim/ransimctrlr/RANSIM-CTRLR/src/main/java/org/onap/ransim/rest/api/models/NearRTRIC.java96
-rw-r--r--ransim/ransimctrlr/RANSIM-CTRLR/src/main/java/org/onap/ransim/rest/api/models/NeighborDetails.java56
-rw-r--r--ransim/ransimctrlr/RANSIM-CTRLR/src/main/java/org/onap/ransim/rest/api/models/NeighborPmDetails.java82
-rw-r--r--ransim/ransimctrlr/RANSIM-CTRLR/src/main/java/org/onap/ransim/rest/api/models/NeihborId.java125
-rw-r--r--ransim/ransimctrlr/RANSIM-CTRLR/src/main/java/org/onap/ransim/rest/api/models/NetconfServers.java133
-rw-r--r--ransim/ransimctrlr/RANSIM-CTRLR/src/main/java/org/onap/ransim/rest/api/models/OperationLog.java128
-rw-r--r--ransim/ransimctrlr/RANSIM-CTRLR/src/main/java/org/onap/ransim/rest/api/models/PLMNInfo.java43
-rw-r--r--ransim/ransimctrlr/RANSIM-CTRLR/src/main/java/org/onap/ransim/rest/api/models/PLMNInfoModel.java115
-rw-r--r--ransim/ransimctrlr/RANSIM-CTRLR/src/main/java/org/onap/ransim/rest/api/models/PmDataDump.java42
-rw-r--r--ransim/ransimctrlr/RANSIM-CTRLR/src/main/java/org/onap/ransim/rest/api/models/PmParameters.java135
-rw-r--r--ransim/ransimctrlr/RANSIM-CTRLR/src/main/java/org/onap/ransim/rest/api/models/RANSliceInfo.java101
-rw-r--r--ransim/ransimctrlr/RANSIM-CTRLR/src/main/java/org/onap/ransim/rest/api/models/RRMPolicyMember.java41
-rw-r--r--ransim/ransimctrlr/RANSIM-CTRLR/src/main/java/org/onap/ransim/rest/api/models/RRMPolicyRatio.java91
-rw-r--r--ransim/ransimctrlr/RANSIM-CTRLR/src/main/java/org/onap/ransim/rest/api/models/SNSSAI.java68
-rw-r--r--ransim/ransimctrlr/RANSIM-CTRLR/src/main/java/org/onap/ransim/rest/api/models/SetCollisionReq.java47
-rw-r--r--ransim/ransimctrlr/RANSIM-CTRLR/src/main/java/org/onap/ransim/rest/api/models/SetConstants.java168
-rw-r--r--ransim/ransimctrlr/RANSIM-CTRLR/src/main/java/org/onap/ransim/rest/api/models/SliceProfile.java130
-rw-r--r--ransim/ransimctrlr/RANSIM-CTRLR/src/main/java/org/onap/ransim/rest/api/models/TACells.java36
-rw-r--r--ransim/ransimctrlr/RANSIM-CTRLR/src/main/java/org/onap/ransim/rest/api/models/Topology.java164
-rw-r--r--ransim/ransimctrlr/RANSIM-CTRLR/src/main/java/org/onap/ransim/rest/api/models/TopologyDump.java35
-rw-r--r--ransim/ransimctrlr/RANSIM-CTRLR/src/main/java/org/onap/ransim/rest/api/repository/CellDetailsRepo.java37
-rw-r--r--ransim/ransimctrlr/RANSIM-CTRLR/src/main/java/org/onap/ransim/rest/api/repository/CellNeighborRepo.java29
-rw-r--r--ransim/ransimctrlr/RANSIM-CTRLR/src/main/java/org/onap/ransim/rest/api/repository/GNBCUCPRepository.java17
-rw-r--r--ransim/ransimctrlr/RANSIM-CTRLR/src/main/java/org/onap/ransim/rest/api/repository/GNBCUUPRepository.java10
-rw-r--r--ransim/ransimctrlr/RANSIM-CTRLR/src/main/java/org/onap/ransim/rest/api/repository/GNBDURepository.java14
-rw-r--r--ransim/ransimctrlr/RANSIM-CTRLR/src/main/java/org/onap/ransim/rest/api/repository/NRCellCURepository.java10
-rw-r--r--ransim/ransimctrlr/RANSIM-CTRLR/src/main/java/org/onap/ransim/rest/api/repository/NRCellDURepository.java8
-rw-r--r--ransim/ransimctrlr/RANSIM-CTRLR/src/main/java/org/onap/ransim/rest/api/repository/NearRTRICRepository.java24
-rw-r--r--ransim/ransimctrlr/RANSIM-CTRLR/src/main/java/org/onap/ransim/rest/api/repository/NeighborDetailsRepo.java29
-rw-r--r--ransim/ransimctrlr/RANSIM-CTRLR/src/main/java/org/onap/ransim/rest/api/repository/NetconfServersRepo.java29
-rw-r--r--ransim/ransimctrlr/RANSIM-CTRLR/src/main/java/org/onap/ransim/rest/api/repository/OperationLogRepo.java29
-rw-r--r--ransim/ransimctrlr/RANSIM-CTRLR/src/main/java/org/onap/ransim/rest/api/repository/RANInventoryRepository.java13
-rw-r--r--ransim/ransimctrlr/RANSIM-CTRLR/src/main/java/org/onap/ransim/rest/api/repository/RRMPolicyMemberRepository.java31
-rw-r--r--ransim/ransimctrlr/RANSIM-CTRLR/src/main/java/org/onap/ransim/rest/api/repository/RRMPolicyRepository.java15
-rw-r--r--ransim/ransimctrlr/RANSIM-CTRLR/src/main/java/org/onap/ransim/rest/api/repository/SliceProfileRepository.java9
-rw-r--r--ransim/ransimctrlr/RANSIM-CTRLR/src/main/java/org/onap/ransim/rest/api/repository/TACellRepository.java15
-rw-r--r--ransim/ransimctrlr/RANSIM-CTRLR/src/main/java/org/onap/ransim/rest/api/services/RANSliceConfigService.java614
-rw-r--r--ransim/ransimctrlr/RANSIM-CTRLR/src/main/java/org/onap/ransim/rest/api/services/RansimControllerServices.java1527
-rw-r--r--ransim/ransimctrlr/RANSIM-CTRLR/src/main/java/org/onap/ransim/rest/api/services/RansimRepositoryService.java244
-rw-r--r--ransim/ransimctrlr/RANSIM-CTRLR/src/main/java/org/onap/ransim/rest/api/services/SlicingPMDataGenerator.java282
-rw-r--r--ransim/ransimctrlr/RANSIM-CTRLR/src/main/java/org/onap/ransim/rest/client/RestClient.java169
-rw-r--r--ransim/ransimctrlr/RANSIM-CTRLR/src/main/java/org/onap/ransim/rest/config/RansimRestConfig.java90
-rw-r--r--ransim/ransimctrlr/RANSIM-CTRLR/src/main/java/org/onap/ransim/rest/config/RansimRestInitializer.java49
-rw-r--r--ransim/ransimctrlr/RANSIM-CTRLR/src/main/java/org/onap/ransim/rest/web/mapper/CellData.java101
-rw-r--r--ransim/ransimctrlr/RANSIM-CTRLR/src/main/java/org/onap/ransim/rest/web/mapper/CellInputPayload.java24
-rw-r--r--ransim/ransimctrlr/RANSIM-CTRLR/src/main/java/org/onap/ransim/rest/web/mapper/CellNbrInfoResponse.java57
-rw-r--r--ransim/ransimctrlr/RANSIM-CTRLR/src/main/java/org/onap/ransim/rest/web/mapper/CellObj.java33
-rw-r--r--ransim/ransimctrlr/RANSIM-CTRLR/src/main/java/org/onap/ransim/rest/web/mapper/CellPciValueObj.java33
-rw-r--r--ransim/ransimctrlr/RANSIM-CTRLR/src/main/java/org/onap/ransim/rest/web/mapper/ErrorData.java30
-rw-r--r--ransim/ransimctrlr/RANSIM-CTRLR/src/main/java/org/onap/ransim/rest/web/mapper/GNBCUCPModel.java62
-rw-r--r--ransim/ransimctrlr/RANSIM-CTRLR/src/main/java/org/onap/ransim/rest/web/mapper/GNBCUUPModel.java72
-rw-r--r--ransim/ransimctrlr/RANSIM-CTRLR/src/main/java/org/onap/ransim/rest/web/mapper/GNBDUModel.java70
-rw-r--r--ransim/ransimctrlr/RANSIM-CTRLR/src/main/java/org/onap/ransim/rest/web/mapper/NRCellCUModel.java32
-rw-r--r--ransim/ransimctrlr/RANSIM-CTRLR/src/main/java/org/onap/ransim/rest/web/mapper/NRCellDUModel.java83
-rw-r--r--ransim/ransimctrlr/RANSIM-CTRLR/src/main/java/org/onap/ransim/rest/web/mapper/NSSAIConfigData.java37
-rw-r--r--ransim/ransimctrlr/RANSIM-CTRLR/src/main/java/org/onap/ransim/rest/web/mapper/NSSAIData.java43
-rw-r--r--ransim/ransimctrlr/RANSIM-CTRLR/src/main/java/org/onap/ransim/rest/web/mapper/NbrCellsNetwork.java38
-rw-r--r--ransim/ransimctrlr/RANSIM-CTRLR/src/main/java/org/onap/ransim/rest/web/mapper/NbrCellsNetworkResponse.java41
-rw-r--r--ransim/ransimctrlr/RANSIM-CTRLR/src/main/java/org/onap/ransim/rest/web/mapper/NbrList.java38
-rw-r--r--ransim/ransimctrlr/RANSIM-CTRLR/src/main/java/org/onap/ransim/rest/web/mapper/NbrListResponse.java29
-rw-r--r--ransim/ransimctrlr/RANSIM-CTRLR/src/main/java/org/onap/ransim/rest/web/mapper/NbrObj.java27
-rw-r--r--ransim/ransimctrlr/RANSIM-CTRLR/src/main/java/org/onap/ransim/rest/web/mapper/NearRTRICModel.java77
-rw-r--r--ransim/ransimctrlr/RANSIM-CTRLR/src/main/java/org/onap/ransim/rest/web/mapper/PLMNInfoModel.java24
-rw-r--r--ransim/ransimctrlr/RANSIM-CTRLR/src/main/java/org/onap/ransim/rest/web/mapper/RANSliceInfoModel.java79
-rw-r--r--ransim/ransimctrlr/RANSIM-CTRLR/src/main/java/org/onap/ransim/rest/web/mapper/RRMPolicyMemberModel.java23
-rw-r--r--ransim/ransimctrlr/RANSIM-CTRLR/src/main/java/org/onap/ransim/rest/web/mapper/RRMPolicyRatioModel.java77
-rw-r--r--ransim/ransimctrlr/RANSIM-CTRLR/src/main/java/org/onap/ransim/rest/web/mapper/Result.java40
-rw-r--r--ransim/ransimctrlr/RANSIM-CTRLR/src/main/java/org/onap/ransim/rest/web/mapper/SliceProfileModel.java92
-rw-r--r--ransim/ransimctrlr/RANSIM-CTRLR/src/main/java/org/onap/ransim/rest/xml/models/FileFooter.java42
-rw-r--r--ransim/ransimctrlr/RANSIM-CTRLR/src/main/java/org/onap/ransim/rest/xml/models/FileHeader.java79
-rw-r--r--ransim/ransimctrlr/RANSIM-CTRLR/src/main/java/org/onap/ransim/rest/xml/models/FileSender.java53
-rw-r--r--ransim/ransimctrlr/RANSIM-CTRLR/src/main/java/org/onap/ransim/rest/xml/models/GranularityPeriod.java56
-rw-r--r--ransim/ransimctrlr/RANSIM-CTRLR/src/main/java/org/onap/ransim/rest/xml/models/Job.java49
-rw-r--r--ransim/ransimctrlr/RANSIM-CTRLR/src/main/java/org/onap/ransim/rest/xml/models/ManagedElement.java65
-rw-r--r--ransim/ransimctrlr/RANSIM-CTRLR/src/main/java/org/onap/ransim/rest/xml/models/MeasCollec.java46
-rw-r--r--ransim/ransimctrlr/RANSIM-CTRLR/src/main/java/org/onap/ransim/rest/xml/models/MeasCollecEnd.java19
-rw-r--r--ransim/ransimctrlr/RANSIM-CTRLR/src/main/java/org/onap/ransim/rest/xml/models/MeasCollecFile.java68
-rw-r--r--ransim/ransimctrlr/RANSIM-CTRLR/src/main/java/org/onap/ransim/rest/xml/models/MeasData.java51
-rw-r--r--ransim/ransimctrlr/RANSIM-CTRLR/src/main/java/org/onap/ransim/rest/xml/models/MeasInfo.java112
-rw-r--r--ransim/ransimctrlr/RANSIM-CTRLR/src/main/java/org/onap/ransim/rest/xml/models/MeasResult.java34
-rw-r--r--ransim/ransimctrlr/RANSIM-CTRLR/src/main/java/org/onap/ransim/rest/xml/models/MeasType.java55
-rw-r--r--ransim/ransimctrlr/RANSIM-CTRLR/src/main/java/org/onap/ransim/rest/xml/models/MeasValue.java63
-rw-r--r--ransim/ransimctrlr/RANSIM-CTRLR/src/main/java/org/onap/ransim/rest/xml/models/ReportingPeriod.java47
-rw-r--r--ransim/ransimctrlr/RANSIM-CTRLR/src/main/java/org/onap/ransim/rest/xml/models/Result.java54
-rw-r--r--ransim/ransimctrlr/RANSIM-CTRLR/src/main/java/org/onap/ransim/utilities/RansimUtilities.java55
-rw-r--r--ransim/ransimctrlr/RANSIM-CTRLR/src/main/java/org/onap/ransim/websocket/model/AdditionalMeasurements.java43
-rw-r--r--ransim/ransimctrlr/RANSIM-CTRLR/src/main/java/org/onap/ransim/websocket/model/Attributes.java46
-rw-r--r--ransim/ransimctrlr/RANSIM-CTRLR/src/main/java/org/onap/ransim/websocket/model/CommonEventHeaderFm.java124
-rw-r--r--ransim/ransimctrlr/RANSIM-CTRLR/src/main/java/org/onap/ransim/websocket/model/CommonEventHeaderPm.java76
-rw-r--r--ransim/ransimctrlr/RANSIM-CTRLR/src/main/java/org/onap/ransim/websocket/model/ConfigData.java33
-rw-r--r--ransim/ransimctrlr/RANSIM-CTRLR/src/main/java/org/onap/ransim/websocket/model/ConfigPLMNInfo.java38
-rw-r--r--ransim/ransimctrlr/RANSIM-CTRLR/src/main/java/org/onap/ransim/websocket/model/DeviceData.java42
-rw-r--r--ransim/ransimctrlr/RANSIM-CTRLR/src/main/java/org/onap/ransim/websocket/model/DeviceDataDecoder.java56
-rw-r--r--ransim/ransimctrlr/RANSIM-CTRLR/src/main/java/org/onap/ransim/websocket/model/DeviceDataEncoder.java38
-rw-r--r--ransim/ransimctrlr/RANSIM-CTRLR/src/main/java/org/onap/ransim/websocket/model/EventFm.java62
-rw-r--r--ransim/ransimctrlr/RANSIM-CTRLR/src/main/java/org/onap/ransim/websocket/model/EventPm.java40
-rw-r--r--ransim/ransimctrlr/RANSIM-CTRLR/src/main/java/org/onap/ransim/websocket/model/FaultFields.java123
-rw-r--r--ransim/ransimctrlr/RANSIM-CTRLR/src/main/java/org/onap/ransim/websocket/model/FmMessage.java18
-rw-r--r--ransim/ransimctrlr/RANSIM-CTRLR/src/main/java/org/onap/ransim/websocket/model/GNBCUUPFunction.java31
-rw-r--r--ransim/ransimctrlr/RANSIM-CTRLR/src/main/java/org/onap/ransim/websocket/model/GNBDUFunction.java40
-rw-r--r--ransim/ransimctrlr/RANSIM-CTRLR/src/main/java/org/onap/ransim/websocket/model/Measurement.java41
-rw-r--r--ransim/ransimctrlr/RANSIM-CTRLR/src/main/java/org/onap/ransim/websocket/model/MessageTypes.java24
-rw-r--r--ransim/ransimctrlr/RANSIM-CTRLR/src/main/java/org/onap/ransim/websocket/model/ModifyNeighbor.java58
-rw-r--r--ransim/ransimctrlr/RANSIM-CTRLR/src/main/java/org/onap/ransim/websocket/model/ModifyPci.java163
-rw-r--r--ransim/ransimctrlr/RANSIM-CTRLR/src/main/java/org/onap/ransim/websocket/model/NRCellDU.java32
-rw-r--r--ransim/ransimctrlr/RANSIM-CTRLR/src/main/java/org/onap/ransim/websocket/model/NearRTRIC.java48
-rw-r--r--ransim/ransimctrlr/RANSIM-CTRLR/src/main/java/org/onap/ransim/websocket/model/Neighbor.java127
-rw-r--r--ransim/ransimctrlr/RANSIM-CTRLR/src/main/java/org/onap/ransim/websocket/model/NeighborHo.java56
-rw-r--r--ransim/ransimctrlr/RANSIM-CTRLR/src/main/java/org/onap/ransim/websocket/model/PmMessage.java18
-rw-r--r--ransim/ransimctrlr/RANSIM-CTRLR/src/main/java/org/onap/ransim/websocket/model/RanNetwork.java47
-rw-r--r--ransim/ransimctrlr/RANSIM-CTRLR/src/main/java/org/onap/ransim/websocket/model/SNSSAI.java31
-rw-r--r--ransim/ransimctrlr/RANSIM-CTRLR/src/main/java/org/onap/ransim/websocket/model/SetConfigTopology.java134
-rw-r--r--ransim/ransimctrlr/RANSIM-CTRLR/src/main/java/org/onap/ransim/websocket/model/SlicingPmMessage.java83
-rw-r--r--ransim/ransimctrlr/RANSIM-CTRLR/src/main/java/org/onap/ransim/websocket/model/Topology.java132
-rw-r--r--ransim/ransimctrlr/RANSIM-CTRLR/src/main/java/org/onap/ransim/websocket/model/UpdateCell.java94
-rw-r--r--ransim/ransimctrlr/RANSIM-CTRLR/src/main/java/org/onap/ransim/websocket/server/RansimWebSocketServer.java392
-rw-r--r--ransim/ransimctrlr/RANSIM-CTRLR/src/main/resources/META-INF/persistence.xml43
-rw-r--r--ransim/ransimctrlr/RANSIM-CTRLR/src/main/resources/application.properties8
-rw-r--r--ransim/ransimctrlr/RANSIM-CTRLR/src/main/resources/dumpfileNames.properties1
-rw-r--r--ransim/ransimctrlr/RANSIM-CTRLR/src/test/java/org/onap/ransim/rest/api/controller/TestRansimController.java96
-rw-r--r--ransim/ransimctrlr/RANSIM-CTRLR/src/test/java/org/onap/ransim/rest/api/services/TestRANSliceConfigServices.java316
-rw-r--r--ransim/ransimctrlr/RANSIM-CTRLR/src/test/resources/hibernate.properties11
-rw-r--r--ransim/ransimctrlr/RANSIM-GUI/src/main/webapp/AdditionalFeature.html155
-rw-r--r--ransim/ransimctrlr/RANSIM-GUI/src/main/webapp/SimulationStop.html85
-rw-r--r--ransim/ransimctrlr/RANSIM-GUI/src/main/webapp/SimulationTrigger.html131
-rw-r--r--ransim/ransimctrlr/RANSIM-GUI/src/main/webapp/SimulationTriggerFile.html101
-rw-r--r--ransim/ransimctrlr/RANSIM-GUI/src/main/webapp/controlpanel.html74
-rw-r--r--ransim/ransimctrlr/RANSIM-GUI/src/main/webapp/deleteCell.html110
-rw-r--r--ransim/ransimctrlr/RANSIM-GUI/src/main/webapp/displayCellDetails.html138
-rw-r--r--ransim/ransimctrlr/RANSIM-GUI/src/main/webapp/getdump.html207
-rw-r--r--ransim/ransimctrlr/RANSIM-GUI/src/main/webapp/honeycomb.html95
-rw-r--r--ransim/ransimctrlr/RANSIM-GUI/src/main/webapp/modifyCell.html143
-rw-r--r--ransim/ransimctrlr/RANSIM-GUI/src/main/webapp/modifyCellPci.html148
-rw-r--r--ransim/ransimctrlr/RANSIM-GUI/src/main/webapp/newmodify.html145
-rw-r--r--ransim/ransimctrlr/RANSIM-GUI/src/main/webapp/operationhistory.html67
-rw-r--r--ransim/ransimctrlr/RANSIM-GUI/src/main/webapp/ransim.html166
-rw-r--r--ransim/ransimctrlr/RANSIM-GUI/src/main/webapp/ransimgrid.html158
-rw-r--r--ransim/ransimctrlr/RANSIM-GUI/src/main/webapp/startPm.html116
-rw-r--r--ransim/ransimctrlr/RANSIM-GUI/src/main/webapp/startsPm.html112
-rw-r--r--ransim/ransimctrlr/RANSIM-GUI/src/main/webapp/stopPm.html84
-rw-r--r--ransim/ransimctrlr/RANSIM-GUI/src/main/webapp/uploadFile.html13
-rwxr-xr-x[-rw-r--r--]ransim/ransimctrlr/packages/base/src/files/install/servers/common/tomcat/init.d/tomcatd0
-rw-r--r--ransim/ransimctrlr/pom.xml59
193 files changed, 14346 insertions, 6197 deletions
diff --git a/ransim/WebContent/META-INF/MANIFEST.MF b/ransim/WebContent/META-INF/MANIFEST.MF
new file mode 100644
index 0000000..5e94951
--- /dev/null
+++ b/ransim/WebContent/META-INF/MANIFEST.MF
@@ -0,0 +1,3 @@
+Manifest-Version: 1.0
+Class-Path:
+
diff --git a/ransim/docker/.env b/ransim/docker/.env
deleted file mode 100644
index 0916ff2..0000000
--- a/ransim/docker/.env
+++ /dev/null
@@ -1,2 +0,0 @@
-PRELOAD_POLICIES=true
-
diff --git a/ransim/docker/config/db/db.sh b/ransim/docker/config/db/db.sh
index 4f988be..4f988be 100644..100755
--- a/ransim/docker/config/db/db.sh
+++ b/ransim/docker/config/db/db.sh
diff --git a/ransim/docker/config/db/ransim_schema.sql b/ransim/docker/config/db/ransim_schema.sql
new file mode 100644
index 0000000..2212253
--- /dev/null
+++ b/ransim/docker/config/db/ransim_schema.sql
@@ -0,0 +1,369 @@
+CREATE USER 'uroot'@'%' IDENTIFIED BY 'psecret';
+CREATE SCHEMA IF NOT EXISTS `ransim_db` DEFAULT CHARACTER SET utf8 ;
+USE `ransim_db` ;
+grant all privileges on ransim_db.* TO 'uroot'@'%' identified by 'psecret';
+flush privileges;
+drop table if exists nearrtric;
+drop table if exists gnbcucpfunction;
+drop table if exists gnbcuupfunction;
+drop table if exists gnbdufunction;
+drop table if exists nrcellcu;
+drop table if exists nrcelldu;
+drop table if exists raninventory;
+drop table if exists rrmpolicyratio;
+drop table if exists rrmpolicymember;
+drop table if exists tacells;
+drop table if exists sliceprofile;
+drop table if exists plmninfo;
+drop table if exists trackingarea;
+drop table if exists rannfnssi;
+drop table if exists nssai;
+drop table if exists rannssi;
+
+-- -----------------------------------------------------
+-- Table `ransim_db`.`cell`
+-- -----------------------------------------------------
+CREATE TABLE IF NOT EXISTS `ransim_db`.`cell`(
+ `cell_id` varchar(45) NOT NULL,
+ `last_modifiedts` datetime(6) NOT NULL,
+ `location` varchar(200) DEFAULT NULL,
+ `network_id` varchar(45) NOT NULL,
+ `notes` varchar(255) DEFAULT NULL,
+ `pci_value` bigint(20) NOT NULL,
+ `pnf_id` varchar(255) NOT NULL,
+ PRIMARY KEY (`cell_id`)
+) ENGINE=InnoDB DEFAULT CHARSET=utf8;
+-- -----------------------------------------------------
+-- Table `ransim_db`.`cell_nbr_info`
+-- -----------------------------------------------------
+CREATE TABLE IF NOT EXISTS `ransim_db`.`cell_nbr_info`(
+ `cell_id` varchar(45) NOT NULL,
+ `target_cell_id` varchar(45) NOT NULL,
+ `ho` bit(1) NOT NULL,
+ PRIMARY KEY (`cell_id`,`target_cell_id`)
+) ENGINE=InnoDB DEFAULT CHARSET=utf8;
+-- Guilin - Slicing Usecase
+-- -----------------------------------------------------
+-- Table `ransim_db`.`nearrtric`
+-- -----------------------------------------------------
+create table nearrtric (
+ nearrtricid integer not null,
+ gnbid integer,
+ resourcetype varchar(255),
+ primary key (nearrtricid)
+ ) engine=InnoDB;
+-- -----------------------------------------------------
+-- Table `ransim_db`.`trackingarea`
+-- -----------------------------------------------------
+create table trackingarea (
+ nearrtricid integer not null,
+ tracking_area varchar(255)
+ ) engine=InnoDB;
+-- -----------------------------------------------------
+-- Table `ransim_db`.`rannfnssi`
+-- -----------------------------------------------------
+ create table rannfnssi (
+ nearrtricid integer not null,
+ rannfnssilist varchar(255)
+ ) engine=InnoDB;
+-- -----------------------------------------------------
+-- Table `ransim_db`.`nssai`
+-- -----------------------------------------------------
+create table nssai (
+ rannfnssiid varchar(255) not null,
+ nssailist varchar(255)
+ ) engine=InnoDB;
+-- -----------------------------------------------------
+-- Table `ransim_db`.`gnbcucpfunction`
+-- -----------------------------------------------------
+create table gnbcucpfunction (
+ gnbcuname varchar(255) not null,
+ gnbid integer,
+ gnbidlength integer,
+ nftype varchar(255),
+ plmnid varchar(255),
+ nearrtricid integer,
+ primary key (gnbcuname)
+ ) engine=InnoDB;
+-- -----------------------------------------------------
+-- Table `ransim_db`.`gnbcuupfunction`
+-- -----------------------------------------------------
+create table gnbcuupfunction (
+ gnbcuupid integer not null,
+ gnbid integer,
+ gnbidlength integer,
+ resourcetype varchar(255),
+ nearrtricid integer,
+ primary key (gnbcuupid)
+ ) engine=InnoDB;
+-- -----------------------------------------------------
+-- Table `ransim_db`.`gnbdufunction`
+-- -----------------------------------------------------
+create table gnbdufunction (
+ gnbduid integer not null,
+ gnbduname varchar(255),
+ gnbid integer,
+ gnbidlength integer,
+ nftype varchar(255),
+ plmnid varchar(255),
+ nearrtricid integer,
+ primary key (gnbduid)
+ ) engine=InnoDB;
+-- -----------------------------------------------------
+-- Table `ransim_db`.`nrcellcu`
+-- -----------------------------------------------------
+create table nrcellcu (
+ celllocalid integer not null,
+ gnbcuname varchar(255),
+ resourcetype varchar(255),
+ primary key (celllocalid)
+ ) engine=InnoDB;
+-- -----------------------------------------------------
+-- Table `ransim_db`.`nrcelldu`
+-- -----------------------------------------------------
+create table nrcelldu (
+ celllocalid integer not null,
+ administrativestate varchar(255),
+ resourcetype varchar(255),
+ cellstate varchar(255),
+ nrpci integer,
+ nrtac integer,
+ operationalstate varchar(255),
+ gnbduid integer,
+ primary key (celllocalid)
+ ) engine=InnoDB;
+-- -----------------------------------------------------
+-- Table `ransim_db`.`raninventory`
+-- -----------------------------------------------------
+create table raninventory (
+ rannfnssiid varchar(255) not null,
+ isshareable varchar(255),
+ nsstid varchar(255),
+ slicetype varchar(255),
+ subnetstatus varchar(255),
+ talist varchar(500),
+ primary key (rannfnssiid)
+ ) engine=InnoDB;
+-- -----------------------------------------------------
+-- Table `ransim_db`.`rannssi`
+-- -----------------------------------------------------
+create table rannssi (
+ rannfnssiid varchar(255) not null,
+ rannssilist varchar(255)
+ ) engine=InnoDB;
+-- -----------------------------------------------------
+-- Table `ransim_db`.`rrmpolicyratio`
+-- -----------------------------------------------------
+create table rrmpolicyratio (
+ rrmpolicyid integer not null,
+ quotatype varchar(255),
+ rrmpolicydedicatedratio integer,
+ rrmpolicymaxratio integer,
+ rrmpolicyminratio integer,
+ resourceid varchar(255),
+ resourcetype varchar(255),
+ slicetype varchar(255),
+ primary key (rrmpolicyid)
+ ) engine=InnoDB;
+-- -----------------------------------------------------
+-- Table `ransim_db`.`rrmpolicymember`
+-- -----------------------------------------------------
+create table rrmpolicymember (
+ plmnid varchar(255) not null,
+ snssai varchar(255) not null,
+ rrm_policy_rrmpolicyid integer,
+ primary key (plmnid, snssai)
+ ) engine=InnoDB;
+-- -----------------------------------------------------
+-- Table `ransim_db`.`tacells`
+-- -----------------------------------------------------
+create table tacells (
+ trackingarea varchar(255) not null,
+ cells varchar(255),
+ primary key (trackingarea)
+ ) engine=InnoDB;
+-- -----------------------------------------------------
+-- Table `ransim_db`.`plmninfo`
+-- -----------------------------------------------------
+create table plmninfo (
+ plmnid varchar(255) not null,
+ globalSubscriberId varchar(255),
+ snssai varchar(255),
+ status varchar(255),
+ subscriptionServiceType varchar(255),
+ gnbcuupid integer,
+ nrcellcu_celllocalid integer,
+ nrcelldu_celllocalid integer,
+ nearrtricid integer,
+ uLThptPerSlice integer,
+ dLThptPerSlice integer,
+ maxNumberOfConns integer,
+ lastUpdatedTS TIMESTAMP DEFAULT CURRENT_TIMESTAMP()
+ ) engine=InnoDB;
+-- -----------------------------------------------------
+-- Table `ransim_db`.`sliceprofile`
+-- -----------------------------------------------------
+create table sliceprofile (
+ sliceprofileid varchar(255) not null,
+ coveragearealist varchar(255),
+ ulthptperslice integer,
+ dlthptperslice integer,
+ latency integer,
+ maxnumberofconns integer,
+ maxnoofues integer,
+ plmnidlist varchar(255),
+ resourcesharinglevel varchar(255),
+ snssai varchar(255),
+ uemobilitylevel varchar(255),
+ rannfnssiid varchar(255),
+ primary key (sliceprofileid)
+ ) engine=InnoDB;
+-- -----------------------------------------------------
+--Pre-loaded data
+-- -----------------------------------------------------
+-- tacells
+
+INSERT INTO tacells(trackingarea,cells) VALUES('TA1', '15289,15290,15296,15687,15689,15155,15174,15175');
+INSERT INTO tacells(trackingarea,cells) VALUES('TA2', '15176,15825,15826,15425,15426,13999,14000');
+INSERT INTO tacells(trackingarea,cells) VALUES('TA3', '11561,11562,11568,11569,10896,10897,14655,14656');
+INSERT INTO tacells(trackingarea,cells) VALUES('TA4', '13905,13910,15360,15361,15548,15549,14427');
+
+--nearrtric
+INSERT INTO nearrtric (nearrtricid, gnbid, resourcetype) VALUES(11, 98763, 'NearRTRIC');
+INSERT INTO nearrtric (nearrtricid, gnbid, resourcetype) VALUES(22, 98763, 'NearRTRIC');
+--gnbcucpfunction
+INSERT INTO gnbcucpfunction(gnbcuname, gnbid, gnbidlength, nftype,plmnid,nearrtricid) VALUES('cucpserver1', 98763, 32, 'CUCP', '310-410', 11);
+INSERT INTO gnbcucpfunction(gnbcuname, gnbid, gnbidlength, nftype,plmnid,nearrtricid) VALUES('cucpserver2', 98763, 32, 'CUCP', '310-410',22);
+--gnbcuupfunction
+INSERT INTO gnbcuupfunction(gnbcuupid, gnbid, gnbidlength, resourcetype, nearrtricid) VALUES(1111, 98763, 32, 'DRB', 11);
+INSERT INTO gnbcuupfunction(gnbcuupid, gnbid, gnbidlength, resourcetype, nearrtricid) VALUES(2222, 98763, 32, 'DRB', 22);
+--gnbdufunction
+INSERT INTO gnbdufunction(gnbduid,gnbduname, gnbid, gnbidlength, nftype, plmnid, nearrtricid) VALUES(1,'gnduserver1', 98763, 32, 'DU', '310-410', 11);
+INSERT INTO gnbdufunction(gnbduid,gnbduname, gnbid, gnbidlength, nftype, plmnid, nearrtricid) VALUES(2,'gnduserver2', 98763, 32, 'DU', '310-410', 11);
+INSERT INTO gnbdufunction(gnbduid,gnbduname, gnbid, gnbidlength, nftype, plmnid, nearrtricid) VALUES(3,'gnduserver3', 98763, 32, 'DU', '310-410', 11);
+INSERT INTO gnbdufunction(gnbduid,gnbduname, gnbid, gnbidlength, nftype, plmnid, nearrtricid) VALUES(4,'gnduserver4', 98763, 32, 'DU', '310-410', 22);
+INSERT INTO gnbdufunction(gnbduid,gnbduname, gnbid, gnbidlength, nftype, plmnid, nearrtricid) VALUES(5,'gnduserver5', 98763, 32, 'DU', '310-410', 22);
+INSERT INTO gnbdufunction(gnbduid,gnbduname, gnbid, gnbidlength, nftype, plmnid, nearrtricid) VALUES(6,'gnduserver6', 98763, 32, 'DU', '310-410', 22);
+--nrcellcu
+INSERT INTO nrcellcu(celllocalId,resourcetype,gnbcuname) VALUES(15289,'RRC Connected Users','cucpserver1');
+
+INSERT INTO nrcellcu(celllocalId,resourcetype,gnbcuname) VALUES(15290,'RRC Connected Users','cucpserver1');
+
+INSERT INTO nrcellcu(celllocalId,resourcetype,gnbcuname) VALUES(15296,'RRC Connected Users','cucpserver1');
+
+INSERT INTO nrcellcu(celllocalId,resourcetype,gnbcuname) VALUES(15687,'RRC Connected Users','cucpserver1');
+
+INSERT INTO nrcellcu(celllocalId,resourcetype,gnbcuname) VALUES(15689,'RRC Connected Users','cucpserver1');
+
+INSERT INTO nrcellcu(celllocalId,resourcetype,gnbcuname) VALUES(15155,'RRC Connected Users','cucpserver1');
+
+INSERT INTO nrcellcu(celllocalId,resourcetype,gnbcuname) VALUES(15174,'RRC Connected Users','cucpserver1');
+
+INSERT INTO nrcellcu(celllocalId,resourcetype,gnbcuname) VALUES(15175,'RRC Connected Users','cucpserver1');
+
+INSERT INTO nrcellcu(celllocalId,resourcetype,gnbcuname) VALUES(15176,'RRC Connected Users','cucpserver1');
+
+INSERT INTO nrcellcu(celllocalId,resourcetype,gnbcuname) VALUES(15825,'RRC Connected Users','cucpserver1');
+
+INSERT INTO nrcellcu(celllocalId,resourcetype,gnbcuname) VALUES(15826,'RRC Connected Users','cucpserver1');
+
+INSERT INTO nrcellcu(celllocalId,resourcetype,gnbcuname) VALUES(15425,'RRC Connected Users','cucpserver1');
+
+INSERT INTO nrcellcu(celllocalId,resourcetype,gnbcuname) VALUES(15426,'RRC Connected Users','cucpserver1');
+
+INSERT INTO nrcellcu(celllocalId,resourcetype,gnbcuname) VALUES(13999,'RRC Connected Users','cucpserver1');
+
+INSERT INTO nrcellcu(celllocalId,resourcetype,gnbcuname) VALUES(14000,'RRC Connected Users','cucpserver1');
+
+INSERT INTO nrcellcu(celllocalId,resourcetype,gnbcuname) VALUES(11561,'RRC Connected Users','cucpserver2');
+
+INSERT INTO nrcellcu(celllocalId,resourcetype,gnbcuname) VALUES(11562,'RRC Connected Users','cucpserver2');
+
+INSERT INTO nrcellcu(celllocalId,resourcetype,gnbcuname) VALUES(11568,'RRC Connected Users','cucpserver2');
+
+INSERT INTO nrcellcu(celllocalId,resourcetype,gnbcuname) VALUES(11569,'RRC Connected Users','cucpserver2');
+
+INSERT INTO nrcellcu(celllocalId,resourcetype,gnbcuname) VALUES(10896,'RRC Connected Users','cucpserver2');
+
+INSERT INTO nrcellcu(celllocalId,resourcetype,gnbcuname) VALUES(10897,'RRC Connected Users','cucpserver2');
+
+INSERT INTO nrcellcu(celllocalId,resourcetype,gnbcuname) VALUES(14655,'RRC Connected Users','cucpserver2');
+
+INSERT INTO nrcellcu(celllocalId,resourcetype,gnbcuname) VALUES(14656,'RRC Connected Users','cucpserver2');
+
+INSERT INTO nrcellcu(celllocalId,resourcetype,gnbcuname) VALUES(13905,'RRC Connected Users','cucpserver2');
+
+INSERT INTO nrcellcu(celllocalId,resourcetype,gnbcuname) VALUES(13910,'RRC Connected Users','cucpserver2');
+
+INSERT INTO nrcellcu(celllocalId,resourcetype,gnbcuname) VALUES(15360,'RRC Connected Users','cucpserver2');
+
+INSERT INTO nrcellcu(celllocalId,resourcetype,gnbcuname) VALUES(15361,'RRC Connected Users','cucpserver2');
+
+INSERT INTO nrcellcu(celllocalId,resourcetype,gnbcuname) VALUES(15548,'RRC Connected Users','cucpserver2');
+
+INSERT INTO nrcellcu(celllocalId,resourcetype,gnbcuname) VALUES(15549,'RRC Connected Users','cucpserver2');
+
+INSERT INTO nrcellcu(celllocalId,resourcetype,gnbcuname) VALUES(14427,'RRC Connected Users','cucpserver2');
+
+--nrcelldu
+
+INSERT INTO nrcelldu(celllocalId,resourcetype,administrativestate,cellstate, nrpci, nrtac, operationalstate,gnbduid) VALUES(15289,'PRB','UNLOCKED','ACTIVE',12,310,'ENABLED',1);
+
+INSERT INTO nrcelldu(celllocalId,resourcetype,administrativestate,cellstate, nrpci, nrtac, operationalstate,gnbduid) VALUES(15290,'PRB','UNLOCKED','ACTIVE',12,310,'ENABLED',1);
+
+INSERT INTO nrcelldu(celllocalId,resourcetype,administrativestate,cellstate, nrpci, nrtac, operationalstate,gnbduid) VALUES(15296,'PRB','UNLOCKED','ACTIVE',12,310,'ENABLED',1);
+
+INSERT INTO nrcelldu(celllocalId,resourcetype,administrativestate,cellstate, nrpci, nrtac, operationalstate,gnbduid) VALUES(15687,'PRB','UNLOCKED','ACTIVE',12,310,'ENABLED',1);
+
+INSERT INTO nrcelldu(celllocalId,resourcetype,administrativestate,cellstate, nrpci, nrtac, operationalstate,gnbduid) VALUES(15689,'PRB','UNLOCKED','ACTIVE',12,310,'ENABLED',1);
+
+INSERT INTO nrcelldu(celllocalId,resourcetype,administrativestate,cellstate, nrpci, nrtac, operationalstate,gnbduid) VALUES(15155,'PRB','UNLOCKED','ACTIVE',12,310,'ENABLED',2);
+
+INSERT INTO nrcelldu(celllocalId,resourcetype,administrativestate,cellstate, nrpci, nrtac, operationalstate,gnbduid) VALUES(15174,'PRB','UNLOCKED','ACTIVE',12,310,'ENABLED',2);
+
+INSERT INTO nrcelldu(celllocalId,resourcetype,administrativestate,cellstate, nrpci, nrtac, operationalstate,gnbduid) VALUES(15175,'PRB','UNLOCKED','ACTIVE',12,310,'ENABLED',2);
+
+INSERT INTO nrcelldu(celllocalId,resourcetype,administrativestate,cellstate, nrpci, nrtac, operationalstate,gnbduid) VALUES(15176,'PRB','UNLOCKED','ACTIVE',12,310,'ENABLED',2);
+
+INSERT INTO nrcelldu(celllocalId,resourcetype,administrativestate,cellstate, nrpci, nrtac, operationalstate,gnbduid) VALUES(15825,'PRB','UNLOCKED','ACTIVE',12,310,'ENABLED',2);
+
+INSERT INTO nrcelldu(celllocalId,resourcetype,administrativestate,cellstate, nrpci, nrtac, operationalstate,gnbduid) VALUES(15826,'PRB','UNLOCKED','ACTIVE',12,310,'ENABLED',3);
+
+INSERT INTO nrcelldu(celllocalId,resourcetype,administrativestate,cellstate, nrpci, nrtac, operationalstate,gnbduid) VALUES(15425,'PRB','UNLOCKED','ACTIVE',12,310,'ENABLED',3);
+
+INSERT INTO nrcelldu(celllocalId,resourcetype,administrativestate,cellstate, nrpci, nrtac, operationalstate,gnbduid) VALUES(15426,'PRB','UNLOCKED','ACTIVE',12,310,'ENABLED',3);
+
+INSERT INTO nrcelldu(celllocalId,resourcetype,administrativestate,cellstate, nrpci, nrtac, operationalstate,gnbduid) VALUES(13999,'PRB','UNLOCKED','ACTIVE',12,310,'ENABLED',3);
+
+INSERT INTO nrcelldu(celllocalId,resourcetype,administrativestate,cellstate, nrpci, nrtac, operationalstate,gnbduid) VALUES(14000,'PRB','UNLOCKED','ACTIVE',12,310,'ENABLED',3);
+
+INSERT INTO nrcelldu(celllocalId,resourcetype,administrativestate,cellstate, nrpci, nrtac, operationalstate,gnbduid) VALUES(11561,'PRB','UNLOCKED','ACTIVE',12,310,'ENABLED',4);
+
+INSERT INTO nrcelldu(celllocalId,resourcetype,administrativestate,cellstate, nrpci, nrtac, operationalstate,gnbduid) VALUES(11562,'PRB','UNLOCKED','ACTIVE',12,310,'ENABLED',4);
+
+INSERT INTO nrcelldu(celllocalId,resourcetype,administrativestate,cellstate, nrpci, nrtac, operationalstate,gnbduid) VALUES(11568,'PRB','UNLOCKED','ACTIVE',12,310,'ENABLED',4);
+
+INSERT INTO nrcelldu(celllocalId,resourcetype,administrativestate,cellstate, nrpci, nrtac, operationalstate,gnbduid) VALUES(11569,'PRB','UNLOCKED','ACTIVE',12,310,'ENABLED',4);
+
+INSERT INTO nrcelldu(celllocalId,resourcetype,administrativestate,cellstate, nrpci, nrtac, operationalstate,gnbduid) VALUES(10896,'PRB','UNLOCKED','ACTIVE',12,310,'ENABLED',4);
+
+INSERT INTO nrcelldu(celllocalId,resourcetype,administrativestate,cellstate, nrpci, nrtac, operationalstate,gnbduid) VALUES(10897,'PRB','UNLOCKED','ACTIVE',12,310,'ENABLED',5);
+
+INSERT INTO nrcelldu(celllocalId,resourcetype,administrativestate,cellstate, nrpci, nrtac, operationalstate,gnbduid) VALUES(14655,'PRB','UNLOCKED','ACTIVE',12,310,'ENABLED',5);
+
+INSERT INTO nrcelldu(celllocalId,resourcetype,administrativestate,cellstate, nrpci, nrtac, operationalstate,gnbduid) VALUES(14656,'PRB','UNLOCKED','ACTIVE',12,310,'ENABLED',5);
+
+INSERT INTO nrcelldu(celllocalId,resourcetype,administrativestate,cellstate, nrpci, nrtac, operationalstate,gnbduid) VALUES(13905,'PRB','UNLOCKED','ACTIVE',12,310,'ENABLED',5);
+
+INSERT INTO nrcelldu(celllocalId,resourcetype,administrativestate,cellstate, nrpci, nrtac, operationalstate,gnbduid) VALUES(13910,'PRB','UNLOCKED','ACTIVE',12,310,'ENABLED',5);
+
+INSERT INTO nrcelldu(celllocalId,resourcetype,administrativestate,cellstate, nrpci, nrtac, operationalstate,gnbduid) VALUES(15360,'PRB','UNLOCKED','ACTIVE',12,310,'ENABLED',6);
+
+INSERT INTO nrcelldu(celllocalId,resourcetype,administrativestate,cellstate, nrpci, nrtac, operationalstate,gnbduid) VALUES(15361,'PRB','UNLOCKED','ACTIVE',12,310,'ENABLED',6);
+
+INSERT INTO nrcelldu(celllocalId,resourcetype,administrativestate,cellstate, nrpci, nrtac, operationalstate,gnbduid) VALUES(15548,'PRB','UNLOCKED','ACTIVE',12,310,'ENABLED',6);
+
+INSERT INTO nrcelldu(celllocalId,resourcetype,administrativestate,cellstate, nrpci, nrtac, operationalstate,gnbduid) VALUES(15549,'PRB','UNLOCKED','ACTIVE',12,310,'ENABLED',6);
+
+INSERT INTO nrcelldu(celllocalId,resourcetype,administrativestate,cellstate, nrpci, nrtac, operationalstate,gnbduid) VALUES(14427,'PRB','UNLOCKED','ACTIVE',12,310,'ENABLED',6);
+
diff --git a/ransim/docker/config/ransim/gNBCUConfig.json b/ransim/docker/config/ransim/gNBCUConfig.json
new file mode 100644
index 0000000..171239f
--- /dev/null
+++ b/ransim/docker/config/ransim/gNBCUConfig.json
@@ -0,0 +1,772 @@
+[
+ {
+ "gNBCUName": "cucpserver1",
+ "gNBId": 98763,
+ "gNBIdLength": 32,
+ "pLMNId": "310-410",
+ "nFType": "CUCP",
+ "nearRTRICId": 11,
+ "cellCUList": [
+ {
+ "cellLocalId": 15289,
+ "pLMNInfoList": [
+ {
+ "pLMNId": "310-410",
+ "sNSSAI": {
+ "sNSSAI": "0010-1110",
+ "status": "ACTIVE",
+ "configData": {
+ "maxNumberOfConns": 6000
+ }
+ }
+ },
+ {
+ "pLMNId": "310-410",
+ "sNSSAI": {
+ "sNSSAI": "0011-0010",
+ "status": "ACTIVE",
+ "configData": {
+ "maxNumberOfConns": 4500
+ }
+ }
+ }
+ ]
+ },
+ {
+ "cellLocalId": 15290,
+ "pLMNInfoList": [
+ {
+ "pLMNId": "310-410",
+ "sNSSAI": {
+ "sNSSAI": "0010-1110",
+ "status": "ACTIVE",
+ "configData": {
+ "maxNumberOfConns": 6000
+ }
+ }
+ },
+ {
+ "pLMNId": "310-410",
+ "sNSSAI": {
+ "sNSSAI": "0011-0010",
+ "status": "ACTIVE",
+ "configData": {
+ "maxNumberOfConns": 4500
+ }
+ }
+ }
+ ]
+ },
+ {
+ "cellLocalId": 15296,
+ "pLMNInfoList": [
+ {
+ "pLMNId": "310-410",
+ "sNSSAI": {
+ "sNSSAI": "0010-1110",
+ "status": "ACTIVE",
+ "configData": {
+ "maxNumberOfConns": 6000
+ }
+ }
+ },
+ {
+ "pLMNId": "310-410",
+ "sNSSAI": {
+ "sNSSAI": "0011-0010",
+ "status": "ACTIVE",
+ "configData": {
+ "maxNumberOfConns": 4500
+ }
+ }
+ }
+ ]
+ },
+ {
+ "cellLocalId": 15687,
+ "pLMNInfoList": [
+ {
+ "pLMNId": "310-410",
+ "sNSSAI": {
+ "sNSSAI": "0010-1110",
+ "status": "ACTIVE",
+ "configData": {
+ "maxNumberOfConns": 6000
+ }
+ }
+ },
+ {
+ "pLMNId": "310-410",
+ "sNSSAI": {
+ "sNSSAI": "0011-0010",
+ "status": "ACTIVE",
+ "configData": {
+ "maxNumberOfConns": 4500
+ }
+ }
+ }
+ ]
+ },
+ {
+ "cellLocalId": 15689,
+ "pLMNInfoList": [
+ {
+ "pLMNId": "310-410",
+ "sNSSAI": {
+ "sNSSAI": "0010-1110",
+ "status": "ACTIVE",
+ "configData": {
+ "maxNumberOfConns": 6000
+ }
+ }
+ },
+ {
+ "pLMNId": "310-410",
+ "sNSSAI": {
+ "sNSSAI": "0011-0010",
+ "status": "ACTIVE",
+ "configData": {
+ "maxNumberOfConns": 4500
+ }
+ }
+ }
+ ]
+ },
+ {
+ "cellLocalId": 15155,
+ "pLMNInfoList": [
+ {
+ "pLMNId": "310-410",
+ "sNSSAI": {
+ "sNSSAI": "0010-1110",
+ "status": "ACTIVE",
+ "configData": {
+ "maxNumberOfConns": 6000
+ }
+ }
+ },
+ {
+ "pLMNId": "310-410",
+ "sNSSAI": {
+ "sNSSAI": "0011-0010",
+ "status": "ACTIVE",
+ "configData": {
+ "maxNumberOfConns": 4500
+ }
+ }
+ }
+ ]
+ },
+ {
+ "cellLocalId": 15174,
+ "pLMNInfoList": [
+ {
+ "pLMNId": "310-410",
+ "sNSSAI": {
+ "sNSSAI": "0010-1110",
+ "status": "ACTIVE",
+ "configData": {
+ "maxNumberOfConns": 6000
+ }
+ }
+ },
+ {
+ "pLMNId": "310-410",
+ "sNSSAI": {
+ "sNSSAI": "0011-0010",
+ "status": "ACTIVE",
+ "configData": {
+ "maxNumberOfConns": 4500
+ }
+ }
+ }
+ ]
+ },
+ {
+ "cellLocalId": 15175,
+ "pLMNInfoList": [
+ {
+ "pLMNId": "310-410",
+ "sNSSAI": {
+ "sNSSAI": "0010-1110",
+ "status": "ACTIVE",
+ "configData": {
+ "maxNumberOfConns": 6000
+ }
+ }
+ },
+ {
+ "pLMNId": "310-410",
+ "sNSSAI": {
+ "sNSSAI": "0011-0010",
+ "status": "ACTIVE",
+ "configData": {
+ "maxNumberOfConns": 4500
+ }
+ }
+ }
+ ]
+ },
+ {
+ "cellLocalId": 15176,
+ "pLMNInfoList": [
+ {
+ "pLMNId": "310-410",
+ "sNSSAI": {
+ "sNSSAI": "0010-1110",
+ "status": "ACTIVE",
+ "configData": {
+ "maxNumberOfConns": 6000
+ }
+ }
+ },
+ {
+ "pLMNId": "310-410",
+ "sNSSAI": {
+ "sNSSAI": "0011-0010",
+ "status": "ACTIVE",
+ "configData": {
+ "maxNumberOfConns": 4500
+ }
+ }
+ }
+ ]
+ },
+ {
+ "cellLocalId": 15825,
+ "pLMNInfoList": [
+ {
+ "pLMNId": "310-410",
+ "sNSSAI": {
+ "sNSSAI": "0010-1110",
+ "status": "ACTIVE",
+ "configData": {
+ "maxNumberOfConns": 6000
+ }
+ }
+ },
+ {
+ "pLMNId": "310-410",
+ "sNSSAI": {
+ "sNSSAI": "0011-0010",
+ "status": "ACTIVE",
+ "configData": {
+ "maxNumberOfConns": 4500
+ }
+ }
+ }
+ ]
+ },
+ {
+ "cellLocalId": 15826,
+ "pLMNInfoList": [
+ {
+ "pLMNId": "310-410",
+ "sNSSAI": {
+ "sNSSAI": "0010-1110",
+ "status": "ACTIVE",
+ "configData": {
+ "maxNumberOfConns": 6000
+ }
+ }
+ },
+ {
+ "pLMNId": "310-410",
+ "sNSSAI": {
+ "sNSSAI": "0011-0010",
+ "status": "ACTIVE",
+ "configData": {
+ "maxNumberOfConns": 4500
+ }
+ }
+ }
+ ]
+ },
+ {
+ "cellLocalId": 15425,
+ "pLMNInfoList": [
+ {
+ "pLMNId": "310-410",
+ "sNSSAI": {
+ "sNSSAI": "0010-1110",
+ "status": "ACTIVE",
+ "configData": {
+ "maxNumberOfConns": 6000
+ }
+ }
+ },
+ {
+ "pLMNId": "310-410",
+ "sNSSAI": {
+ "sNSSAI": "0011-0010",
+ "status": "ACTIVE",
+ "configData": {
+ "maxNumberOfConns": 4500
+ }
+ }
+ }
+ ]
+ },
+ {
+ "cellLocalId": 15426,
+ "pLMNInfoList": [
+ {
+ "pLMNId": "310-410",
+ "sNSSAI": {
+ "sNSSAI": "0010-1110",
+ "status": "ACTIVE",
+ "configData": {
+ "maxNumberOfConns": 6000
+ }
+ }
+ },
+ {
+ "pLMNId": "310-410",
+ "sNSSAI": {
+ "sNSSAI": "0011-0010",
+ "status": "ACTIVE",
+ "configData": {
+ "maxNumberOfConns": 4500
+ }
+ }
+ }
+ ]
+ },
+ {
+ "cellLocalId": 13999,
+ "pLMNInfoList": [
+ {
+ "pLMNId": "310-410",
+ "sNSSAI": {
+ "sNSSAI": "0010-1110",
+ "status": "ACTIVE",
+ "configData": {
+ "maxNumberOfConns": 6000
+ }
+ }
+ },
+ {
+ "pLMNId": "310-410",
+ "sNSSAI": {
+ "sNSSAI": "0011-0010",
+ "status": "ACTIVE",
+ "configData": {
+ "maxNumberOfConns": 4500
+ }
+ }
+ }
+ ]
+ },
+ {
+ "cellLocalId": 14000,
+ "pLMNInfoList": [
+ {
+ "pLMNId": "310-410",
+ "sNSSAI": {
+ "sNSSAI": "0010-1110",
+ "status": "ACTIVE",
+ "configData": {
+ "maxNumberOfConns": 6000
+ }
+ }
+ },
+ {
+ "pLMNId": "310-410",
+ "sNSSAI": {
+ "sNSSAI": "0011-0010",
+ "status": "ACTIVE",
+ "configData": {
+ "maxNumberOfConns": 4500
+ }
+ }
+ }
+ ]
+ }
+ ]
+ },
+ {
+ "gNBCUName": "cucpserver2",
+ "gNBId": 98763,
+ "gNBIdLength": 32,
+ "pLMNId": "310-410",
+ "nFType": "CUCP",
+ "nearRTRICId": 22,
+ "cellCUList": [
+ {
+ "cellLocalId": 11561,
+ "pLMNInfoList": [
+ {
+ "pLMNId": "310-410",
+ "sNSSAI": {
+ "sNSSAI": "0010-1110",
+ "status": "ACTIVE",
+ "configData": {
+ "maxNumberOfConns": 6000
+ }
+ }
+ },
+ {
+ "pLMNId": "310-410",
+ "sNSSAI": {
+ "sNSSAI": "0011-0010",
+ "status": "ACTIVE",
+ "configData": {
+ "maxNumberOfConns": 4500
+ }
+ }
+ }
+ ]
+ },
+ {
+ "cellLocalId": 11562,
+ "pLMNInfoList": [
+ {
+ "pLMNId": "310-410",
+ "sNSSAI": {
+ "sNSSAI": "0010-1110",
+ "status": "ACTIVE",
+ "configData": {
+ "maxNumberOfConns": 6000
+ }
+ }
+ },
+ {
+ "pLMNId": "310-410",
+ "sNSSAI": {
+ "sNSSAI": "0011-0010",
+ "status": "ACTIVE",
+ "configData": {
+ "maxNumberOfConns": 4500
+ }
+ }
+ }
+ ]
+ },
+ {
+ "cellLocalId": 11568,
+ "pLMNInfoList": [
+ {
+ "pLMNId": "310-410",
+ "sNSSAI": {
+ "sNSSAI": "0010-1110",
+ "status": "ACTIVE",
+ "configData": {
+ "maxNumberOfConns": 6000
+ }
+ }
+ },
+ {
+ "pLMNId": "310-410",
+ "sNSSAI": {
+ "sNSSAI": "0011-0010",
+ "status": "ACTIVE",
+ "configData": {
+ "maxNumberOfConns": 4500
+ }
+ }
+ }
+ ]
+ },
+ {
+ "cellLocalId": 11569,
+ "pLMNInfoList": [
+ {
+ "pLMNId": "310-410",
+ "sNSSAI": {
+ "sNSSAI": "0010-1110",
+ "status": "ACTIVE",
+ "configData": {
+ "maxNumberOfConns": 6000
+ }
+ }
+ },
+ {
+ "pLMNId": "310-410",
+ "sNSSAI": {
+ "sNSSAI": "0011-0010",
+ "status": "ACTIVE",
+ "configData": {
+ "maxNumberOfConns": 4500
+ }
+ }
+ }
+ ]
+ },
+ {
+ "cellLocalId": 10896,
+ "pLMNInfoList": [
+ {
+ "pLMNId": "310-410",
+ "sNSSAI": {
+ "sNSSAI": "0010-1110",
+ "status": "ACTIVE",
+ "configData": {
+ "maxNumberOfConns": 6000
+ }
+ }
+ },
+ {
+ "pLMNId": "310-410",
+ "sNSSAI": {
+ "sNSSAI": "0011-0010",
+ "status": "ACTIVE",
+ "configData": {
+ "maxNumberOfConns": 4500
+ }
+ }
+ }
+ ]
+ },
+ {
+ "cellLocalId": 10897,
+ "pLMNInfoList": [
+ {
+ "pLMNId": "310-410",
+ "sNSSAI": {
+ "sNSSAI": "0010-1110",
+ "status": "ACTIVE",
+ "configData": {
+ "maxNumberOfConns": 6000
+ }
+ }
+ },
+ {
+ "pLMNId": "310-410",
+ "sNSSAI": {
+ "sNSSAI": "0011-0010",
+ "status": "ACTIVE",
+ "configData": {
+ "maxNumberOfConns": 4500
+ }
+ }
+ }
+ ]
+ },
+ {
+ "cellLocalId": 14655,
+ "pLMNInfoList": [
+ {
+ "pLMNId": "310-410",
+ "sNSSAI": {
+ "sNSSAI": "0010-1110",
+ "status": "ACTIVE",
+ "configData": {
+ "maxNumberOfConns": 6000
+ }
+ }
+ },
+ {
+ "pLMNId": "310-410",
+ "sNSSAI": {
+ "sNSSAI": "0011-0010",
+ "status": "ACTIVE",
+ "configData": {
+ "maxNumberOfConns": 4500
+ }
+ }
+ }
+ ]
+ },
+ {
+ "cellLocalId": 14656,
+ "pLMNInfoList": [
+ {
+ "pLMNId": "310-410",
+ "sNSSAI": {
+ "sNSSAI": "0010-1110",
+ "status": "ACTIVE",
+ "configData": {
+ "maxNumberOfConns": 6000
+ }
+ }
+ },
+ {
+ "pLMNId": "310-410",
+ "sNSSAI": {
+ "sNSSAI": "0011-0010",
+ "status": "ACTIVE",
+ "configData": {
+ "maxNumberOfConns": 4500
+ }
+ }
+ }
+ ]
+ },
+ {
+ "cellLocalId": 13905,
+ "pLMNInfoList": [
+ {
+ "pLMNId": "310-410",
+ "sNSSAI": {
+ "sNSSAI": "0010-1110",
+ "status": "ACTIVE",
+ "configData": {
+ "maxNumberOfConns": 6000
+ }
+ }
+ },
+ {
+ "pLMNId": "310-410",
+ "sNSSAI": {
+ "sNSSAI": "0011-0010",
+ "status": "ACTIVE",
+ "configData": {
+ "maxNumberOfConns": 4500
+ }
+ }
+ }
+ ]
+ },
+ {
+ "cellLocalId": 13910,
+ "pLMNInfoList": [
+ {
+ "pLMNId": "310-410",
+ "sNSSAI": {
+ "sNSSAI": "0010-1110",
+ "status": "ACTIVE",
+ "configData": {
+ "maxNumberOfConns": 6000
+ }
+ }
+ },
+ {
+ "pLMNId": "310-410",
+ "sNSSAI": {
+ "sNSSAI": "0011-0010",
+ "status": "ACTIVE",
+ "configData": {
+ "maxNumberOfConns": 4500
+ }
+ }
+ }
+ ]
+ },
+ {
+ "cellLocalId": 15360,
+ "pLMNInfoList": [
+ {
+ "pLMNId": "310-410",
+ "sNSSAI": {
+ "sNSSAI": "0010-1110",
+ "status": "ACTIVE",
+ "configData": {
+ "maxNumberOfConns": 6000
+ }
+ }
+ },
+ {
+ "pLMNId": "310-410",
+ "sNSSAI": {
+ "sNSSAI": "0011-0010",
+ "status": "ACTIVE",
+ "configData": {
+ "maxNumberOfConns": 4500
+ }
+ }
+ }
+ ]
+ },
+ {
+ "cellLocalId": 15361,
+ "pLMNInfoList": [
+ {
+ "pLMNId": "310-410",
+ "sNSSAI": {
+ "sNSSAI": "0010-1110",
+ "status": "ACTIVE",
+ "configData": {
+ "maxNumberOfConns": 6000
+ }
+ }
+ },
+ {
+ "pLMNId": "310-410",
+ "sNSSAI": {
+ "sNSSAI": "0011-0010",
+ "status": "ACTIVE",
+ "configData": {
+ "maxNumberOfConns": 4500
+ }
+ }
+ }
+ ]
+ },
+ {
+ "cellLocalId": 15548,
+ "pLMNInfoList": [
+ {
+ "pLMNId": "310-410",
+ "sNSSAI": {
+ "sNSSAI": "0010-1110",
+ "status": "ACTIVE",
+ "configData": {
+ "maxNumberOfConns": 6000
+ }
+ }
+ },
+ {
+ "pLMNId": "310-410",
+ "sNSSAI": {
+ "sNSSAI": "0011-0010",
+ "status": "ACTIVE",
+ "configData": {
+ "maxNumberOfConns": 4500
+ }
+ }
+ }
+ ]
+ },
+ {
+ "cellLocalId": 15549,
+ "pLMNInfoList": [
+ {
+ "pLMNId": "310-410",
+ "sNSSAI": {
+ "sNSSAI": "0010-1110",
+ "status": "ACTIVE",
+ "configData": {
+ "maxNumberOfConns": 6000
+ }
+ }
+ },
+ {
+ "pLMNId": "310-410",
+ "sNSSAI": {
+ "sNSSAI": "0011-0010",
+ "status": "ACTIVE",
+ "configData": {
+ "maxNumberOfConns": 4500
+ }
+ }
+ }
+ ]
+ },
+ {
+ "cellLocalId": 14427,
+ "pLMNInfoList": [
+ {
+ "pLMNId": "310-410",
+ "sNSSAI": {
+ "sNSSAI": "0010-1110",
+ "status": "ACTIVE",
+ "configData": {
+ "maxNumberOfConns": 6000
+ }
+ }
+ },
+ {
+ "pLMNId": "310-410",
+ "sNSSAI": {
+ "sNSSAI": "0011-0010",
+ "status": "ACTIVE",
+ "configData": {
+ "maxNumberOfConns": 4500
+ }
+ }
+ }
+ ]
+ }
+ ]
+ }
+]
diff --git a/ransim/docker/config/ransim/gNBCUConfig_1NSSAI.json b/ransim/docker/config/ransim/gNBCUConfig_1NSSAI.json
new file mode 100644
index 0000000..1e38eef
--- /dev/null
+++ b/ransim/docker/config/ransim/gNBCUConfig_1NSSAI.json
@@ -0,0 +1,472 @@
+[
+ {
+ "gNBCUName": "cucpserver1",
+ "gNBId": 98763,
+ "gNBIdLength": 5,
+ "pLMNId": "310-410",
+ "nFType": "CUCP",
+ "nearRTRICId": 11,
+ "cellCUList": [
+ {
+ "cellLocalId": 15289,
+ "pLMNInfoList": [
+ {
+ "pLMNId": "310-410",
+ "sNSSAI": {
+ "sNSSAI": "0010-1110",
+ "status": "ACTIVE",
+ "configData": {
+ "maxNumberOfConns": 6000
+ }
+ }
+ }
+ ]
+ },
+ {
+ "cellLocalId": 15290,
+ "pLMNInfoList": [
+ {
+ "pLMNId": "310-410",
+ "sNSSAI": {
+ "sNSSAI": "0010-1110",
+ "status": "ACTIVE",
+ "configData": {
+ "maxNumberOfConns": 6000
+ }
+ }
+ }
+ ]
+ },
+ {
+ "cellLocalId": 15296,
+ "pLMNInfoList": [
+ {
+ "pLMNId": "310-410",
+ "sNSSAI": {
+ "sNSSAI": "0010-1110",
+ "status": "ACTIVE",
+ "configData": {
+ "maxNumberOfConns": 6000
+ }
+ }
+ }
+ ]
+ },
+ {
+ "cellLocalId": 15687,
+ "pLMNInfoList": [
+ {
+ "pLMNId": "310-410",
+ "sNSSAI": {
+ "sNSSAI": "0010-1110",
+ "status": "ACTIVE",
+ "configData": {
+ "maxNumberOfConns": 6000
+ }
+ }
+ }
+ ]
+ },
+ {
+ "cellLocalId": 15689,
+ "pLMNInfoList": [
+ {
+ "pLMNId": "310-410",
+ "sNSSAI": {
+ "sNSSAI": "0010-1110",
+ "status": "ACTIVE",
+ "configData": {
+ "maxNumberOfConns": 6000
+ }
+ }
+ }
+ ]
+ },
+ {
+ "cellLocalId": 15155,
+ "pLMNInfoList": [
+ {
+ "pLMNId": "310-410",
+ "sNSSAI": {
+ "sNSSAI": "0010-1110",
+ "status": "ACTIVE",
+ "configData": {
+ "maxNumberOfConns": 6000
+ }
+ }
+ }
+ ]
+ },
+ {
+ "cellLocalId": 15174,
+ "pLMNInfoList": [
+ {
+ "pLMNId": "310-410",
+ "sNSSAI": {
+ "sNSSAI": "0010-1110",
+ "status": "ACTIVE",
+ "configData": {
+ "maxNumberOfConns": 6000
+ }
+ }
+ }
+ ]
+ },
+ {
+ "cellLocalId": 15175,
+ "pLMNInfoList": [
+ {
+ "pLMNId": "310-410",
+ "sNSSAI": {
+ "sNSSAI": "0011-0010",
+ "status": "ACTIVE",
+ "configData": {
+ "maxNumberOfConns": 4500
+ }
+ }
+ }
+ ]
+ },
+ {
+ "cellLocalId": 15176,
+ "pLMNInfoList": [
+ {
+ "pLMNId": "310-410",
+ "sNSSAI": {
+ "sNSSAI": "0011-0010",
+ "status": "ACTIVE",
+ "configData": {
+ "maxNumberOfConns": 4500
+ }
+ }
+ }
+ ]
+ },
+ {
+ "cellLocalId": 15825,
+ "pLMNInfoList": [
+ {
+ "pLMNId": "310-410",
+ "sNSSAI": {
+ "sNSSAI": "0011-0010",
+ "status": "ACTIVE",
+ "configData": {
+ "maxNumberOfConns": 4500
+ }
+ }
+ }
+ ]
+ },
+ {
+ "cellLocalId": 15826,
+ "pLMNInfoList": [
+ {
+ "pLMNId": "310-410",
+ "sNSSAI": {
+ "sNSSAI": "0011-0010",
+ "status": "ACTIVE",
+ "configData": {
+ "maxNumberOfConns": 4500
+ }
+ }
+ }
+ ]
+ },
+ {
+ "cellLocalId": 15425,
+ "pLMNInfoList": [
+ {
+ "pLMNId": "310-410",
+ "sNSSAI": {
+ "sNSSAI": "0011-0010",
+ "status": "ACTIVE",
+ "configData": {
+ "maxNumberOfConns": 4500
+ }
+ }
+ }
+ ]
+ },
+ {
+ "cellLocalId": 15426,
+ "pLMNInfoList": [
+ {
+ "pLMNId": "310-410",
+ "sNSSAI": {
+ "sNSSAI": "0011-0010",
+ "status": "ACTIVE",
+ "configData": {
+ "maxNumberOfConns": 4500
+ }
+ }
+ }
+ ]
+ },
+ {
+ "cellLocalId": 13999,
+ "pLMNInfoList": [
+ {
+ "pLMNId": "310-410",
+ "sNSSAI": {
+ "sNSSAI": "0011-0010",
+ "status": "ACTIVE",
+ "configData": {
+ "maxNumberOfConns": 4500
+ }
+ }
+ }
+ ]
+ },
+ {
+ "cellLocalId": 14000,
+ "pLMNInfoList": [
+ {
+ "pLMNId": "310-410",
+ "sNSSAI": {
+ "sNSSAI": "0011-0010",
+ "status": "ACTIVE",
+ "configData": {
+ "maxNumberOfConns": 4500
+ }
+ }
+ }
+ ]
+ }
+ ]
+ },
+ {
+ "gNBCUName": "cucpserver2",
+ "gNBId": 98763,
+ "gNBIdLength": 5,
+ "pLMNId": "310-410",
+ "nFType": "CUCP",
+ "nearRTRICId": 22,
+ "cellCUList": [
+ {
+ "cellLocalId": 11561,
+ "pLMNInfoList": [
+ {
+ "pLMNId": "310-410",
+ "sNSSAI": {
+ "sNSSAI": "0011-0010",
+ "status": "ACTIVE",
+ "configData": {
+ "maxNumberOfConns": 4500
+ }
+ }
+ }
+ ]
+ },
+ {
+ "cellLocalId": 11562,
+ "pLMNInfoList": [
+ {
+ "pLMNId": "310-410",
+ "sNSSAI": {
+ "sNSSAI": "0011-0010",
+ "status": "ACTIVE",
+ "configData": {
+ "maxNumberOfConns": 4500
+ }
+ }
+ }
+ ]
+ },
+ {
+ "cellLocalId": 11568,
+ "pLMNInfoList": [
+ {
+ "pLMNId": "310-410",
+ "sNSSAI": {
+ "sNSSAI": "0011-0010",
+ "status": "ACTIVE",
+ "configData": {
+ "maxNumberOfConns": 4500
+ }
+ }
+ }
+ ]
+ },
+ {
+ "cellLocalId": 11569,
+ "pLMNInfoList": [
+ {
+ "pLMNId": "310-410",
+ "sNSSAI": {
+ "sNSSAI": "0011-0010",
+ "status": "ACTIVE",
+ "configData": {
+ "maxNumberOfConns": 4500
+ }
+ }
+ }
+ ]
+ },
+ {
+ "cellLocalId": 10896,
+ "pLMNInfoList": [
+ {
+ "pLMNId": "310-410",
+ "sNSSAI": {
+ "sNSSAI": "0011-0010",
+ "status": "ACTIVE",
+ "configData": {
+ "maxNumberOfConns": 4500
+ }
+ }
+ }
+ ]
+ },
+ {
+ "cellLocalId": 10897,
+ "pLMNInfoList": [
+ {
+ "pLMNId": "310-410",
+ "sNSSAI": {
+ "sNSSAI": "0011-0010",
+ "status": "ACTIVE",
+ "configData": {
+ "maxNumberOfConns": 4500
+ }
+ }
+ }
+ ]
+ },
+ {
+ "cellLocalId": 14655,
+ "pLMNInfoList": [
+ {
+ "pLMNId": "310-410",
+ "sNSSAI": {
+ "sNSSAI": "0011-0010",
+ "status": "ACTIVE",
+ "configData": {
+ "maxNumberOfConns": 4500
+ }
+ }
+ }
+ ]
+ },
+ {
+ "cellLocalId": 14656,
+ "pLMNInfoList": [
+ {
+ "pLMNId": "310-410",
+ "sNSSAI": {
+ "sNSSAI": "0010-1110",
+ "status": "ACTIVE",
+ "configData": {
+ "maxNumberOfConns": 6000
+ }
+ }
+ }
+ ]
+ },
+ {
+ "cellLocalId": 13905,
+ "pLMNInfoList": [
+ {
+ "pLMNId": "310-410",
+ "sNSSAI": {
+ "sNSSAI": "0010-1110",
+ "status": "ACTIVE",
+ "configData": {
+ "maxNumberOfConns": 6000
+ }
+ }
+ }
+ ]
+ },
+ {
+ "cellLocalId": 13910,
+ "pLMNInfoList": [
+ {
+ "pLMNId": "310-410",
+ "sNSSAI": {
+ "sNSSAI": "0010-1110",
+ "status": "ACTIVE",
+ "configData": {
+ "maxNumberOfConns": 6000
+ }
+ }
+ }
+ ]
+ },
+ {
+ "cellLocalId": 15360,
+ "pLMNInfoList": [
+ {
+ "pLMNId": "310-410",
+ "sNSSAI": {
+ "sNSSAI": "0010-1110",
+ "status": "ACTIVE",
+ "configData": {
+ "maxNumberOfConns": 6000
+ }
+ }
+ }
+ ]
+ },
+ {
+ "cellLocalId": 15361,
+ "pLMNInfoList": [
+ {
+ "pLMNId": "310-410",
+ "sNSSAI": {
+ "sNSSAI": "0010-1110",
+ "status": "ACTIVE",
+ "configData": {
+ "maxNumberOfConns": 6000
+ }
+ }
+ }
+ ]
+ },
+ {
+ "cellLocalId": 15548,
+ "pLMNInfoList": [
+ {
+ "pLMNId": "310-410",
+ "sNSSAI": {
+ "sNSSAI": "0010-1110",
+ "status": "ACTIVE",
+ "configData": {
+ "maxNumberOfConns": 6000
+ }
+ }
+ }
+ ]
+ },
+ {
+ "cellLocalId": 15549,
+ "pLMNInfoList": [
+ {
+ "pLMNId": "310-410",
+ "sNSSAI": {
+ "sNSSAI": "0010-1110",
+ "status": "ACTIVE",
+ "configData": {
+ "maxNumberOfConns": 6000
+ }
+ }
+ }
+ ]
+ },
+ {
+ "cellLocalId": 14427,
+ "pLMNInfoList": [
+ {
+ "pLMNId": "310-410",
+ "sNSSAI": {
+ "sNSSAI": "0010-1110",
+ "status": "ACTIVE",
+ "configData": {
+ "maxNumberOfConns": 6000
+ }
+ }
+ }
+ ]
+ }
+ ]
+ }
+]
diff --git a/ransim/docker/config/ransim/jssecacerts b/ransim/docker/config/ransim/jssecacerts
new file mode 100644
index 0000000..2232b4c
--- /dev/null
+++ b/ransim/docker/config/ransim/jssecacerts
Binary files differ
diff --git a/ransim/docker/config/ransim/ransim.properties b/ransim/docker/config/ransim/ransim.properties
index f6723dc..3be141a 100644
--- a/ransim/docker/config/ransim/ransim.properties
+++ b/ransim/docker/config/ransim/ransim.properties
@@ -4,10 +4,5 @@ numberOfProcessPerMc=25
numberOfMachines=5
GridSize=1
strictValidateRansimAgentsAvailability=false
-sdnrServerIp=10.31.1.79
-sdnrServerPort=30202
-sdnrServerUserid=admin
-sdnrServerPassword=Kp8bJ4SXszM0WXlhak3eHlcse2gAw84vaoGGmJvUy2U
maxPciValueAllowed=503
-dumpFileName=/tmp/ransim-install/config/latestDump.json
diff --git a/ransim/docker/docker-compose.yml b/ransim/docker/docker-compose.yml
index eb9b776..6c5c2ba 100644
--- a/ransim/docker/docker-compose.yml
+++ b/ransim/docker/docker-compose.yml
@@ -3,7 +3,7 @@ networks:
default:
driver: bridge
driver_opts:
- com.docker.network.driver.mtu: ${MTU}
+ com.docker.network.driver.mtu: 1400
services:
mariadb:
image: 'mariadb:10.0.34'
@@ -20,9 +20,15 @@ services:
ransim:
image: 'onap/ransim:1.0.0-SNAPSHOT'
container_name: ransim
- hostname: ransimsvr
+ environment:
+ - SDNR_IP=10.31.4.51
+ - SDNR_PORT=30267
+ - SDNR_USER=admin
+ - SDNR_PASSWORD=Kp8bJ4SXszM0WXlhak3eHlcse2gAw84vaoGGmJvUy2U
+ hostname: ransim
ports:
- '8081:8081'
command: ransim
volumes:
- './config/ransim:/tmp/ransim-install/config'
+ - './config/ransim/jssecacerts:/tmp/cert/jssecacerts'
diff --git a/ransim/docker/ransim-docker/Dockerfile b/ransim/docker/ransim-docker/Dockerfile
index a576c92..b139fef 100644
--- a/ransim/docker/ransim-docker/Dockerfile
+++ b/ransim/docker/ransim-docker/Dockerfile
@@ -1,4 +1,4 @@
-FROM ubuntu:14.04
+FROM ubuntu:18.04
ARG HTTP_PROXY=${HTTP_PROXY}
ARG HTTPS_PROXY=${HTTPS_PROXY}
@@ -7,26 +7,27 @@ ENV http_proxy $HTTP_PROXY
ENV https_proxy $HTTPS_PROXY
RUN \
- apt-get clean && \
- apt-get update && \
- apt-get install -y zip unzip curl wget ssh telnet maven && \
- apt-get install -y software-properties-common && \
- apt-get install -y jq httpie && \
- apt-get install -y python-pip && \
- add-apt-repository ppa:openjdk-r/ppa && \
- apt-get clean && \
- apt-get update && \
- apt-get install -y openjdk-8-jdk
+apt-get clean && \
+apt-get update && \
+apt-get install -y zip unzip curl wget ssh telnet maven && \
+apt-get install -y software-properties-common && \
+apt-get install -y jq httpie && \
+apt-get install -y python-pip && \
+apt-get install -y vim && \
+add-apt-repository ppa:openjdk-r/ppa && \
+apt-get clean && \
+apt-get update && \
+apt-get install -y openjdk-8-jdk
RUN useradd --create-home --shell /bin/bash policy
RUN \
apt-get install -y apt-transport-https && \
- apt-key adv --recv-keys --keyserver hkp://keyserver.ubuntu.com:80 0xcbcb082a1bb943db && \
- add-apt-repository 'deb [arch=amd64,i386,ppc64el] http://ftp.osuosl.org/pub/mariadb/repo/10.0/ubuntu trusty main' && \
- apt-get clean && \
- apt-get update && \
- apt-get install -y mariadb-client
+apt-key adv --recv-keys --keyserver hkp://keyserver.ubuntu.com:80 0xF1656F24C74CD1D8 && \
+add-apt-repository 'deb [arch=amd64,arm64,ppc64el] http://nyc2.mirrors.digitalocean.com/mariadb/repo/10.4/ubuntu bionic main' && \
+apt-get clean && \
+apt-get update && \
+apt-get install -y mariadb-client
RUN mkdir -p /opt/app/policy /tmp/ransim-install && chown policy /opt/app/policy /tmp/ransim-install
@@ -39,3 +40,5 @@ USER policy
ENTRYPOINT [ "bash", "./do-start.sh" ]
+
+
diff --git a/ransim/docker/ransim-docker/do-start.sh b/ransim/docker/ransim-docker/do-start.sh
index ec1f601..ec1f601 100644..100755
--- a/ransim/docker/ransim-docker/do-start.sh
+++ b/ransim/docker/ransim-docker/do-start.sh
diff --git a/ransim/docker/ransim-docker/docker-install.sh b/ransim/docker/ransim-docker/docker-install.sh
index cbfe0b1..cbfe0b1 100644..100755
--- a/ransim/docker/ransim-docker/docker-install.sh
+++ b/ransim/docker/ransim-docker/docker-install.sh
diff --git a/ransim/docker/ransim-docker/wait-for-port.sh b/ransim/docker/ransim-docker/wait-for-port.sh
index 10f08de..10f08de 100644..100755
--- a/ransim/docker/ransim-docker/wait-for-port.sh
+++ b/ransim/docker/ransim-docker/wait-for-port.sh
diff --git a/ransim/pom.xml b/ransim/pom.xml
index 0c7d0cc..e0ebf7b 100644
--- a/ransim/pom.xml
+++ b/ransim/pom.xml
@@ -19,6 +19,11 @@
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
+ <parent>
+ <groupId>org.onap.oparent</groupId>
+ <artifactId>oparent</artifactId>
+ <version>2.1.0</version>
+ </parent>
<groupId>org.onap.ransim</groupId>
<artifactId>ransim</artifactId>
<packaging>pom</packaging>
@@ -32,7 +37,6 @@
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
<onap.nexus.url>https://nexus.onap.org</onap.nexus.url>
-
<java.version>1.8</java.version>
<docker.pull.registry>nexus3.onap.org:10001</docker.pull.registry>
<docker.push.registry>nexus3.onap.org:10003</docker.push.registry>
@@ -242,6 +246,5 @@
</plugins>
</pluginManagement>
</build>
-
</project>
diff --git a/ransim/ransimctrlr/RANSIM-CTRLR/.gitignore b/ransim/ransimctrlr/RANSIM-CTRLR/.gitignore
index b83d222..0f63015 100644
--- a/ransim/ransimctrlr/RANSIM-CTRLR/.gitignore
+++ b/ransim/ransimctrlr/RANSIM-CTRLR/.gitignore
@@ -1 +1,2 @@
/target/
+/bin/
diff --git a/ransim/ransimctrlr/RANSIM-CTRLR/pom.xml b/ransim/ransimctrlr/RANSIM-CTRLR/pom.xml
index cacf31f..5973f1c 100644
--- a/ransim/ransimctrlr/RANSIM-CTRLR/pom.xml
+++ b/ransim/ransimctrlr/RANSIM-CTRLR/pom.xml
@@ -1,5 +1,4 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--
+<?xml version="1.0" encoding="UTF-8"?><!--
============LICENSE_START=======================================================
Ran Simulator Controller
================================================================================
@@ -18,10 +17,8 @@
limitations under the License.
============LICENSE_END=========================================================
-->
-<project xmlns="http://maven.apache.org/POM/4.0.0"
- xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
- xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
-
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<parent>
@@ -30,9 +27,11 @@
<version>1.0.0-SNAPSHOT</version>
</parent>
+
<artifactId>RANSIM-CTRLR</artifactId>
<description>RANSIM CTRLR</description>
<properties>
+ <springboot.version>2.2.4.RELEASE</springboot.version>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<springframework.version>4.3.3.RELEASE</springframework.version>
<eclipselink.version>2.6.0</eclipselink.version>
@@ -96,6 +95,17 @@
</plugins>
</build>
<dependencies>
+ <dependency>
+ <groupId>org.apache.httpcomponents</groupId>
+ <artifactId>httpclient</artifactId>
+ <version>4.5.6</version>
+ <exclusions>
+ <exclusion>
+ <artifactId>commons-logging</artifactId>
+ <groupId>commons-logging</groupId>
+ </exclusion>
+ </exclusions>
+ </dependency>
<dependency>
<groupId>org.eclipse.persistence</groupId>
<artifactId>javax.persistence</artifactId>
@@ -131,12 +141,6 @@
<groupId>commons-logging</groupId>
<artifactId>commons-logging</artifactId>
<version>1.1.3</version>
- <exclusions>
- <exclusion>
- <groupId>javax.servlet</groupId>
- <artifactId>servlet-api</artifactId>
- </exclusion>
- </exclusions>
</dependency>
<dependency>
<groupId>log4j</groupId>
@@ -144,16 +148,6 @@
<version>1.2.17</version>
</dependency>
<dependency>
- <groupId>commons-io</groupId>
- <artifactId>commons-io</artifactId>
- <version>2.4</version>
- </dependency>
- <dependency>
- <groupId>com.google.guava</groupId>
- <artifactId>guava</artifactId>
- <version>19.0</version>
- </dependency>
- <dependency>
<groupId>org.mariadb.jdbc</groupId>
<artifactId>mariadb-java-client</artifactId>
<version>2.1.1</version>
@@ -165,17 +159,6 @@
<scope>test</scope>
</dependency>
<dependency>
- <groupId>org.awaitility</groupId>
- <artifactId>awaitility</artifactId>
- <version>3.0.0</version>
- <scope>test</scope>
- </dependency>
- <dependency>
- <groupId>org.hsqldb</groupId>
- <artifactId>hsqldb</artifactId>
- <version>2.3.2</version>
- </dependency>
- <dependency>
<groupId>com.sun.jersey</groupId>
<artifactId>jersey-client</artifactId>
<version>1.18</version>
@@ -192,12 +175,6 @@
<scope>test</scope>
</dependency>
<dependency>
- <groupId>javax.websocket</groupId>
- <artifactId>javax.websocket-api</artifactId>
- <version>1.1</version>
- <scope>provided</scope>
- </dependency>
- <dependency>
<groupId>org.mockito</groupId>
<artifactId>mockito-core</artifactId>
<version>1.9.5</version>
@@ -221,37 +198,17 @@
<groupId>org.powermock</groupId>
<artifactId>powermock-module-junit4</artifactId>
<version>1.5.6</version>
- </dependency>
- <dependency>
- <groupId>org.springframework</groupId>
- <artifactId>spring-core</artifactId>
- <version>${springframework.version}</version>
- </dependency>
- <dependency>
- <groupId>org.springframework</groupId>
- <artifactId>spring-web</artifactId>
- <version>${springframework.version}</version>
- </dependency>
- <dependency>
- <groupId>org.springframework</groupId>
- <artifactId>spring-webmvc</artifactId>
- <version>${springframework.version}</version>
- </dependency>
- <dependency>
- <groupId>org.hibernate</groupId>
- <artifactId>hibernate-entitymanager</artifactId>
- <version>${version.org.hibernate}</version>
- </dependency>
- <dependency>
- <groupId>org.hibernate</groupId>
- <artifactId>hibernate-testing</artifactId>
- <version>${version.org.hibernate}</version>
- </dependency>
+ </dependency>
<dependency>
<groupId>com.google.code.gson</groupId>
<artifactId>gson</artifactId>
<version>2.6.2</version>
</dependency>
+ <dependency>
+ <groupId>org.onosproject</groupId>
+ <artifactId>jnc</artifactId>
+ <version>1.0</version>
+ </dependency>
<dependency>
<groupId>io.springfox</groupId>
<artifactId>springfox-swagger2</artifactId>
@@ -276,5 +233,65 @@
</exclusion>
</exclusions>
</dependency>
+
+ <dependency>
+ <groupId>org.springframework.boot</groupId>
+ <artifactId>spring-boot-starter-data-jpa</artifactId>
+ <version>${springboot.version}</version>
+
+ <exclusions>
+ <exclusion>
+ <groupId>org.springframework.boot</groupId>
+ <artifactId>spring-boot-starter-logging</artifactId>
+ </exclusion>
+ </exclusions>
+ </dependency>
+ <dependency>
+ <groupId>org.springframework.boot</groupId>
+ <artifactId>spring-boot-starter-web</artifactId>
+ <version>${springboot.version}</version>
+ <exclusions>
+ <exclusion>
+ <groupId>org.springframework.boot</groupId>
+ <artifactId>spring-boot-starter-logging</artifactId>
+ </exclusion>
+ </exclusions>
+ </dependency>
+ <dependency>
+ <groupId>org.springframework.boot</groupId>
+ <artifactId>spring-boot-starter-webflux</artifactId>
+ <version>${springboot.version}</version>
+
+ <exclusions>
+ <exclusion>
+ <groupId>org.springframework.boot</groupId>
+ <artifactId>spring-boot-starter-logging</artifactId>
+ </exclusion>
+ </exclusions>
+ </dependency>
+ <dependency>
+ <groupId>org.modelmapper</groupId>
+ <artifactId>modelmapper</artifactId>
+ <version>2.3.8</version>
+ </dependency>
+<dependency>
+<groupId>com.googlecode.json-simple</groupId>
+<artifactId>json-simple</artifactId>
+<version>1.1.1</version>
+</dependency>
+
</dependencies>
+
+ <dependencyManagement>
+ <dependencies>
+ <dependency>
+ <groupId>org.springframework.boot</groupId>
+ <artifactId>spring-boot-dependencies</artifactId>
+ <version>${springboot.version}</version>
+ <type>pom</type>
+ <scope>import</scope>
+ </dependency>
+ </dependencies>
+ </dependencyManagement>
+
</project>
diff --git a/ransim/ransimctrlr/RANSIM-CTRLR/src/main/java/org/onap/ransim/Application.java b/ransim/ransimctrlr/RANSIM-CTRLR/src/main/java/org/onap/ransim/Application.java
new file mode 100644
index 0000000..4cf6153
--- /dev/null
+++ b/ransim/ransimctrlr/RANSIM-CTRLR/src/main/java/org/onap/ransim/Application.java
@@ -0,0 +1,17 @@
+package org.onap.ransim;
+
+import org.springframework.boot.SpringApplication;
+import org.springframework.boot.autoconfigure.EnableAutoConfiguration;
+import org.springframework.boot.autoconfigure.SpringBootApplication;
+import org.springframework.boot.autoconfigure.jdbc.DataSourceAutoConfiguration;
+import org.springframework.context.annotation.ComponentScan;
+
+@SpringBootApplication
+@EnableAutoConfiguration(exclude = DataSourceAutoConfiguration.class)
+public class Application {
+
+ public static void main(String[] args) {
+ SpringApplication.run(Application.class, args);
+ }
+
+}
diff --git a/ransim/ransimctrlr/RANSIM-CTRLR/src/main/java/org/onap/ransim/RansimDbConfig.java b/ransim/ransimctrlr/RANSIM-CTRLR/src/main/java/org/onap/ransim/RansimDbConfig.java
new file mode 100644
index 0000000..9f853cb
--- /dev/null
+++ b/ransim/ransimctrlr/RANSIM-CTRLR/src/main/java/org/onap/ransim/RansimDbConfig.java
@@ -0,0 +1,74 @@
+package org.onap.ransim;
+
+import java.util.HashMap;
+
+import javax.sql.DataSource;
+
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.context.annotation.Bean;
+import org.springframework.context.annotation.ComponentScan;
+import org.springframework.context.annotation.Configuration;
+import org.springframework.context.annotation.Primary;
+import org.springframework.context.annotation.PropertySource;
+import org.springframework.core.env.Environment;
+import org.springframework.data.jpa.repository.config.EnableJpaRepositories;
+import org.springframework.jdbc.datasource.DriverManagerDataSource;
+import org.springframework.orm.jpa.JpaTransactionManager;
+import org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean;
+import org.springframework.orm.jpa.vendor.HibernateJpaVendorAdapter;
+import org.springframework.transaction.PlatformTransactionManager;
+
+@Configuration
+@PropertySource({"classpath:application.properties"})
+@EnableJpaRepositories(basePackages = "org.onap.ransim.rest.api.repository"
+ + "", entityManagerFactoryRef = "entityManager", transactionManagerRef = "transactionManager")
+@ComponentScan(basePackages = "org.onap.ransim")
+public class RansimDbConfig {
+
+ @Autowired
+ Environment env;
+
+ @Bean
+ @Primary
+ LocalContainerEntityManagerFactoryBean entityManager () {
+ LocalContainerEntityManagerFactoryBean em = new LocalContainerEntityManagerFactoryBean();
+ em.setPackagesToScan("org.onap.ransim.rest.api.models");
+ em.setDataSource(dataSource());
+ HibernateJpaVendorAdapter vendorAdapter = new HibernateJpaVendorAdapter();
+ em.setJpaVendorAdapter(vendorAdapter);
+ HashMap<String, Object> properties = new HashMap<>();
+ properties.put("hibernate.hbm2ddl.auto", env.getProperty("spring.jpa.hibernate.ddl-auto"));
+ properties.put("hibernate.dialect", env.getProperty("hibernate.dialect"));
+ em.setJpaPropertyMap(properties);
+ return em;
+ }
+
+ /**
+ * User data source Bean.
+ */
+ @Primary
+ @Bean
+ public DataSource dataSource() {
+
+ DriverManagerDataSource dataSource = new DriverManagerDataSource();
+ dataSource.setDriverClassName(env.getProperty("spring.datasource.driver-class-name"));
+ dataSource.setUrl(env.getProperty("spring.datasource.url"));
+ dataSource.setUsername(env.getProperty("spring.datasource.username"));
+ dataSource.setPassword(env.getProperty("spring.datasource.password"));
+
+ return dataSource;
+ }
+
+ /**
+ * User Transaction Manager Bean.
+ */
+ @Primary
+ @Bean
+ public PlatformTransactionManager transactionManager() {
+ JpaTransactionManager transactionManager = new JpaTransactionManager();
+ transactionManager.setEntityManagerFactory(entityManager().getObject());
+ return transactionManager;
+ }
+
+
+}
diff --git a/ransim/ransimctrlr/RANSIM-CTRLR/src/main/java/org/onap/ransim/ServletInitializer.java b/ransim/ransimctrlr/RANSIM-CTRLR/src/main/java/org/onap/ransim/ServletInitializer.java
new file mode 100644
index 0000000..a808a3e
--- /dev/null
+++ b/ransim/ransimctrlr/RANSIM-CTRLR/src/main/java/org/onap/ransim/ServletInitializer.java
@@ -0,0 +1,13 @@
+package org.onap.ransim;
+
+import org.springframework.boot.builder.SpringApplicationBuilder;
+import org.springframework.boot.web.servlet.support.SpringBootServletInitializer;
+
+public class ServletInitializer extends SpringBootServletInitializer {
+
+ @Override
+ protected SpringApplicationBuilder configure(SpringApplicationBuilder application) {
+ return application.sources(Application.class);
+ }
+
+}
diff --git a/ransim/ransimctrlr/RANSIM-CTRLR/src/main/java/org/onap/ransim/netconf/NetconfClient.java b/ransim/ransimctrlr/RANSIM-CTRLR/src/main/java/org/onap/ransim/netconf/NetconfClient.java
new file mode 100644
index 0000000..2900265
--- /dev/null
+++ b/ransim/ransimctrlr/RANSIM-CTRLR/src/main/java/org/onap/ransim/netconf/NetconfClient.java
@@ -0,0 +1,226 @@
+package org.onap.ransim.netconf;
+
+import java.io.IOException;
+import java.net.ConnectException;
+import org.apache.log4j.Logger;
+import com.tailf.jnc.Device;
+import com.tailf.jnc.DeviceUser;
+import com.tailf.jnc.Element;
+import com.tailf.jnc.JNCException;
+import com.tailf.jnc.NetconfSession;
+import org.onap.ransim.rest.web.mapper.NearRTRICModel;
+import org.onap.ransim.rest.web.mapper.GNBCUCPModel;
+import org.onap.ransim.rest.web.mapper.GNBCUUPModel;
+import org.onap.ransim.rest.web.mapper.GNBDUModel;
+import org.onap.ransim.rest.web.mapper.NRCellCUModel;
+import org.onap.ransim.rest.web.mapper.NRCellDUModel;
+
+public class NetconfClient {
+
+ static Logger log = Logger.getLogger(NetconfClient.class.getName());
+
+ private String emsUserName;
+ private Device device;
+
+ public NetconfClient(Device device) {
+ this.device = device;
+ }
+
+ public NetconfClient(String emsUserName, String username, String password, String serverName, String ip, int port) {
+ DeviceUser deviceUser = new DeviceUser(emsUserName, username, password);
+ this.emsUserName = emsUserName;
+ this.device = new Device(serverName, deviceUser, ip, port);
+ }
+
+ public Element getInitialNodeSet(NearRTRICModel rtRicModel,String serverId) {
+ try {
+
+ Element ranNetworkElement = Element.create("org:onap:ccsdk:features:sdnr:northbound:ran-network",
+ "/ran-network");
+ Element nearRTRICElement = Element.create("org:onap:ccsdk:features:sdnr:northbound:ran-network",
+ "/NearRTRIC");
+ Element idNearRTRICElement = Element.create("org:onap:ccsdk:features:sdnr:northbound:ran-network",
+ "/idNearRTRIC");
+ idNearRTRICElement.setValue(rtRicModel.getNearRTRICId());
+ Element sapElement = Element.create("org:onap:ccsdk:features:sdnr:northbound:ran-network",
+ "/sAP");
+ Element hostElement = Element.create("org:onap:ccsdk:features:sdnr:northbound:ran-network",
+ "/host");
+ hostElement.setValue("localhost");
+ Element portElement = Element.create("org:onap:ccsdk:features:sdnr:northbound:ran-network",
+ "/port");
+ portElement.setValue("8080");
+ sapElement.addChild(hostElement);
+ sapElement.addChild(portElement);
+
+ for(GNBCUUPModel gNBCUUPModel:rtRicModel.getgNBCUUPList())
+ {
+ if(gNBCUUPModel.getgNBCUUPId().toString().equals(serverId) || rtRicModel.getNearRTRICId().toString().equals(serverId))
+ {
+ Element gNBCUUPFunctionElement = Element.create("org:onap:ccsdk:features:sdnr:northbound:ran-network",
+ "/GNBCUUPFunction");
+ Element idGNBCUUPFunctionElement = Element.create("org:onap:ccsdk:features:sdnr:northbound:ran-network",
+ "/idGNBCUUPFunction");
+ idGNBCUUPFunctionElement.setValue(gNBCUUPModel.getgNBCUUPId().toString());
+ Element attributesElement = Element.create("org:onap:ccsdk:features:sdnr:northbound:ran-network",
+ "/attributes");
+ Element gnBIdElement = Element.create("org:onap:ccsdk:features:sdnr:northbound:ran-network",
+ "/gNBId");
+ gnBIdElement.setValue(gNBCUUPModel.getgNBId());
+ attributesElement.addChild(gnBIdElement);
+ attributesElement.addChild(sapElement);
+ gNBCUUPFunctionElement.addChild(idGNBCUUPFunctionElement);
+ gNBCUUPFunctionElement.addChild(attributesElement);
+ nearRTRICElement.addChild(gNBCUUPFunctionElement);
+ }
+ }
+ for(GNBCUCPModel gNBCUCPModel : rtRicModel.getgNBCUCPList())
+ {
+ if(gNBCUCPModel.getgNBCUName().equals(serverId) || rtRicModel.getNearRTRICId().toString().equals(serverId))
+ {
+ Element gNBCUCPFunctionElement = Element.create("org:onap:ccsdk:features:sdnr:northbound:ran-network",
+ "/GNBCUCPFunction");
+ Element idGNBCUCPFunctionElement = Element.create("org:onap:ccsdk:features:sdnr:northbound:ran-network",
+ "/idGNBCUCPFunction");
+ idGNBCUCPFunctionElement.setValue(gNBCUCPModel.getgNBCUName());
+ Element attributesElement = Element.create("org:onap:ccsdk:features:sdnr:northbound:ran-network",
+ "/attributes");
+ Element gNBCUNameElement = Element.create("org:onap:ccsdk:features:sdnr:northbound:ran-network",
+ "/gNBCUName");
+ gNBCUNameElement.setValue(gNBCUCPModel.getgNBCUName());
+ Element gnBIdElement = Element.create("org:onap:ccsdk:features:sdnr:northbound:ran-network",
+ "/gNBId");
+ gnBIdElement.setValue(gNBCUCPModel.getgNBId());
+ Element gNBIdLengthElement = Element.create("org:onap:ccsdk:features:sdnr:northbound:ran-network",
+ "/gNBIdLength");
+ gNBIdLengthElement.setValue(gNBCUCPModel.getgNBIdLength());
+ attributesElement.addChild(gNBCUNameElement);
+ attributesElement.addChild(gnBIdElement);
+ attributesElement.addChild(gNBIdLengthElement);
+ attributesElement.addChild(sapElement);
+ for(NRCellCUModel nRCellCUModel:gNBCUCPModel.getCellCUList())
+ {
+ Element nRCellCUElement = Element.create("org:onap:ccsdk:features:sdnr:northbound:ran-network",
+ "/NRCellCU");
+ Element idNRCellCUElement = Element.create("org:onap:ccsdk:features:sdnr:northbound:ran-network",
+ "/idNRCellCU");
+ idNRCellCUElement.setValue(nRCellCUModel.getCellLocalId());
+ Element nRCellattributesElement = Element.create("org:onap:ccsdk:features:sdnr:northbound:ran-network",
+ "/attributes");
+ Element cellLocalIdElement = Element.create("org:onap:ccsdk:features:sdnr:northbound:ran-network",
+ "/cellLocalId");
+ cellLocalIdElement.setValue(nRCellCUModel.getCellLocalId());
+ nRCellattributesElement.addChild(cellLocalIdElement);
+ nRCellattributesElement.addChild(sapElement);
+ nRCellCUElement.addChild(idNRCellCUElement);
+ nRCellCUElement.addChild(nRCellattributesElement);
+ gNBCUCPFunctionElement.addChild(nRCellCUElement);
+ }
+ gNBCUCPFunctionElement.addChild(idGNBCUCPFunctionElement);
+ gNBCUCPFunctionElement.addChild(attributesElement);
+ nearRTRICElement.addChild(gNBCUCPFunctionElement);
+ }
+ }
+ for(GNBDUModel gNBDUModel:rtRicModel.getgNBDUList())
+ {
+ if(gNBDUModel.getgNBDUId().toString().equals(serverId) || rtRicModel.getNearRTRICId().toString().equals(serverId))
+ {
+ Element gNBDUFunctionElement = Element.create("org:onap:ccsdk:features:sdnr:northbound:ran-network",
+ "/GNBDUFunction");
+ Element idGNBDUFunctionElement = Element.create("org:onap:ccsdk:features:sdnr:northbound:ran-network",
+ "/idGNBDUFunction");
+ idGNBDUFunctionElement.setValue(gNBDUModel.getgNBDUId());
+ Element attributesElement = Element.create("org:onap:ccsdk:features:sdnr:northbound:ran-network",
+ "/attributes");
+ Element gNBDUNameElement = Element.create("org:onap:ccsdk:features:sdnr:northbound:ran-network",
+ "/gNBDUName");
+ gNBDUNameElement.setValue(gNBDUModel.getgNBDUName());
+ Element gNBIdLengthElement = Element.create("org:onap:ccsdk:features:sdnr:northbound:ran-network",
+ "/gNBIdLength");
+ gNBIdLengthElement.setValue(gNBDUModel.getgNBIdLength());
+ Element gNBDUIdElement = Element.create("org:onap:ccsdk:features:sdnr:northbound:ran-network",
+ "/gNBDUId");
+ gNBDUIdElement.setValue(gNBDUModel.getgNBDUId());
+ attributesElement.addChild(gNBIdLengthElement);
+ attributesElement.addChild(gNBDUNameElement);
+ attributesElement.addChild(gNBDUIdElement);
+ attributesElement.addChild(sapElement);
+ for(NRCellDUModel nRCellDUModel : gNBDUModel.getCellDUList())
+ {
+ Element nRCellDUElement = Element.create("org:onap:ccsdk:features:sdnr:northbound:ran-network",
+ "/NRCellDU");
+ Element idNRCellDUElement = Element.create("org:onap:ccsdk:features:sdnr:northbound:ran-network",
+ "/idNRCellDU");
+ idNRCellDUElement.setValue(nRCellDUModel.getCellLocalId());
+ Element nRCellattributesElement = Element.create("org:onap:ccsdk:features:sdnr:northbound:ran-network",
+ "/attributes");
+ Element cellLocalIdElement = Element.create("org:onap:ccsdk:features:sdnr:northbound:ran-network",
+ "/cellLocalId");
+ cellLocalIdElement.setValue(nRCellDUModel.getCellLocalId());
+ Element nRSectorCarrierRefElement = Element.create("org:onap:ccsdk:features:sdnr:northbound:ran-network",
+ "/nRSectorCarrierRef");
+ nRSectorCarrierRefElement.setValue("OU=Sales");
+ Element administrativeStateElement = Element.create("org:onap:ccsdk:features:sdnr:northbound:ran-network",
+ "/administrativeState");
+ administrativeStateElement.setValue(nRCellDUModel.getAdministrativeState());
+ Element nRPCIElement = Element.create("org:onap:ccsdk:features:sdnr:northbound:ran-network",
+ "/nRPCI");
+ nRPCIElement.setValue(nRCellDUModel.getnRPCI());
+ Element nRTACElement = Element.create("org:onap:ccsdk:features:sdnr:northbound:ran-network",
+ "/nRTAC");
+ nRTACElement.setValue(nRCellDUModel.getnRTAC());
+ nRCellattributesElement.addChild(cellLocalIdElement);
+ nRCellattributesElement.addChild(sapElement);
+ nRCellattributesElement.addChild(nRSectorCarrierRefElement);
+ nRCellattributesElement.addChild(administrativeStateElement);
+ nRCellattributesElement.addChild(nRPCIElement);
+ nRCellattributesElement.addChild(nRTACElement);
+ nRCellDUElement.addChild(idNRCellDUElement);
+ nRCellDUElement.addChild(nRCellattributesElement);
+ gNBDUFunctionElement.addChild(nRCellDUElement);
+ }
+ gNBDUFunctionElement.addChild(idGNBDUFunctionElement);
+ gNBDUFunctionElement.addChild(attributesElement);
+ nearRTRICElement.addChild(gNBDUFunctionElement);
+ }
+ }
+
+ nearRTRICElement.addChild(idNearRTRICElement);
+ ranNetworkElement.addChild(nearRTRICElement);
+
+ return ranNetworkElement;
+
+ } catch (JNCException e) {
+ log.error("Exception occured during NodeSet creation {}", e);
+ return null;
+ }
+
+ }
+
+ public void editConfig(Element initialConfig) {
+ try {
+ Boolean connected = false;
+ while (!connected) {
+ try {
+ Thread.sleep(6000);
+ device.connect(emsUserName);
+ connected = true;
+ } catch (ConnectException e) {
+ log.error("Device is not up yet... retrying after 3s");
+ } catch (InterruptedException ie) {
+ Thread.currentThread().interrupt();
+ }
+
+ }
+
+ device.newSession("cfg");
+ log.info(initialConfig.toXMLString());
+ device.getSession("cfg").editConfig(NetconfSession.CANDIDATE, initialConfig);
+ device.getSession("cfg").commit();
+ log.info("Initial configuration set");
+ } catch (IOException | JNCException e) {
+ log.error("Exception occured during edit config {}", e);
+ }
+ }
+
+}
diff --git a/ransim/ransimctrlr/RANSIM-CTRLR/src/main/java/org/onap/ransim/rest/api/controller/FileController.java b/ransim/ransimctrlr/RANSIM-CTRLR/src/main/java/org/onap/ransim/rest/api/controller/FileController.java
new file mode 100644
index 0000000..5da605c
--- /dev/null
+++ b/ransim/ransimctrlr/RANSIM-CTRLR/src/main/java/org/onap/ransim/rest/api/controller/FileController.java
@@ -0,0 +1,90 @@
+/*-
+ * ============LICENSE_START=======================================================
+ * Ran Simulator Controller
+ * ================================================================================
+ * Copyright (C) 2020 Wipro Limited.
+ * ================================================================================
+ * Licensed 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
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License 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.onap.ransim.rest.api.controller;
+
+import java.io.IOException;
+import java.nio.file.Files;
+import java.nio.file.Path;
+import java.nio.file.Paths;
+import java.nio.file.StandardCopyOption;
+import java.util.ArrayList;
+import java.util.List;
+
+import org.apache.log4j.Logger;
+import org.springframework.beans.factory.annotation.Value;
+import org.springframework.context.annotation.Configuration;
+import org.springframework.context.annotation.PropertySource;
+import org.springframework.http.MediaType;
+import org.springframework.http.ResponseEntity;
+import org.springframework.stereotype.Controller;
+import org.springframework.util.StringUtils;
+import org.springframework.web.bind.annotation.CrossOrigin;
+import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RequestParam;
+import org.springframework.web.multipart.MultipartFile;
+
+@Controller
+@RequestMapping("/file")
+@CrossOrigin(origins = "*")
+@Configuration
+@PropertySource(value = "classpath:dumpfileNames.properties")
+public class FileController {
+
+ static Logger log = Logger.getLogger(FileController.class.getName());
+
+ private static final String fileBasePath = "/tmp/ransim-install/config/";
+
+ @Value("${defaultFiles:}")
+ List<String> fileList = new ArrayList<>();
+
+ /**
+ * Method to upload dump file
+ *
+ * @param file
+ * @return
+ */
+ @PostMapping(value = "/upload", consumes = MediaType.MULTIPART_FORM_DATA_VALUE)
+ public ResponseEntity<String> uploadToLocalFileSystem(@RequestParam("file") MultipartFile file) {
+ String fileName = StringUtils.cleanPath(file.getOriginalFilename());
+ Path path = Paths.get(fileBasePath + fileName);
+ try {
+ Files.copy(file.getInputStream(), path, StandardCopyOption.REPLACE_EXISTING);
+ fileList.add(fileName);
+ log.info("File downloaded in " + fileBasePath + fileName);
+ } catch (IOException e) {
+ log.error(e);
+ }
+ log.info("Copied in path : " + path);
+ return ResponseEntity.ok("Uploaded successfully");
+ }
+
+ /**
+ * Method to retrieve list of available dump files
+ *
+ * @return
+ */
+ @GetMapping(value = "/dumpfiles", produces = MediaType.APPLICATION_JSON_VALUE)
+ public ResponseEntity<List<String>> getFiles() {
+ return ResponseEntity.ok(fileList);
+ }
+
+}
diff --git a/ransim/ransimctrlr/RANSIM-CTRLR/src/main/java/org/onap/ransim/rest/api/controller/RANSliceConfigController.java b/ransim/ransimctrlr/RANSIM-CTRLR/src/main/java/org/onap/ransim/rest/api/controller/RANSliceConfigController.java
new file mode 100644
index 0000000..05de928
--- /dev/null
+++ b/ransim/ransimctrlr/RANSIM-CTRLR/src/main/java/org/onap/ransim/rest/api/controller/RANSliceConfigController.java
@@ -0,0 +1,567 @@
+package org.onap.ransim.rest.api.controller;
+
+import java.util.List;
+import java.util.Map;
+import java.util.stream.Collectors;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.http.HttpStatus;
+import org.springframework.http.ResponseEntity;
+import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.PathVariable;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.RequestBody;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+import org.springframework.web.bind.annotation.CrossOrigin;
+import org.springframework.web.bind.annotation.PatchMapping;
+import org.springframework.web.bind.annotation.PutMapping;
+
+import org.onap.ransim.rest.api.models.NSSAIConfig;
+import org.onap.ransim.rest.api.services.RANSliceConfigService;
+import org.onap.ransim.rest.web.mapper.GNBCUCPModel;
+import org.onap.ransim.rest.web.mapper.GNBCUUPModel;
+import org.onap.ransim.rest.web.mapper.GNBDUModel;
+import org.onap.ransim.rest.web.mapper.NRCellCUModel;
+import org.onap.ransim.rest.web.mapper.NRCellDUModel;
+import org.onap.ransim.rest.web.mapper.NearRTRICModel;
+import org.onap.ransim.rest.web.mapper.RANSliceInfoModel;
+import org.onap.ransim.rest.web.mapper.RRMPolicyRatioModel;
+
+@RestController
+@RequestMapping(path = "/api/ransim-db/v4")
+public class RANSliceConfigController {
+ private static final Logger logger = LoggerFactory.getLogger(RANSliceConfigController.class);
+
+ @Autowired
+ private RANSliceConfigService ranSliceConfigService;
+
+ //SDN-R APIs
+ /**
+ * This method updates the slice details, config details of CUCP
+ *
+ * @param GNBCUCPModel
+ * @return ResponseEntity<GNBCUCPModel>
+ */
+ @PutMapping(path = "/gNBCUCP")
+ public ResponseEntity<GNBCUCPModel> updateGNBCUCPFunction(@RequestBody GNBCUCPModel gNBCUCPModel) {
+ logger.info("Request Received");
+ try {
+ return new ResponseEntity<GNBCUCPModel>(ranSliceConfigService.saveGNBCUCP(gNBCUCPModel), HttpStatus.OK);
+ } catch (Exception e) {
+ logger.error("Error while updating GNBCUCP:" + e.getMessage());
+ return new ResponseEntity<GNBCUCPModel>(HttpStatus.INTERNAL_SERVER_ERROR);
+ }
+ }
+
+ /**
+ * To fetch the CUCP details
+ *
+ * @param gNBCUCPName
+ * @return ResponseEntity<GNBCUCPModel>
+ */
+ @GetMapping(path = "/gNBCUCP/{gNBCUCPName}")
+ public ResponseEntity<GNBCUCPModel> findGNBCUCPFunction(@PathVariable String gNBCUCPName) {
+ logger.info("Request Received");
+ try {
+ if(ranSliceConfigService.fetchGNBCUCPData(gNBCUCPName)!=null) {
+ return new ResponseEntity<GNBCUCPModel>(ranSliceConfigService.fetchGNBCUCPData(gNBCUCPName), HttpStatus.OK);
+ }else {
+ return new ResponseEntity<GNBCUCPModel>(ranSliceConfigService.fetchGNBCUCPData(gNBCUCPName), HttpStatus.NO_CONTENT);
+ }
+ } catch (Exception e) {
+ logger.error("Error while fetching GNBCUCP:" + e.getMessage());
+ return new ResponseEntity<GNBCUCPModel>(HttpStatus.INTERNAL_SERVER_ERROR);
+ }
+ }
+
+ /**
+ * This method updates the slice details, config details of CUUP
+ *
+ * @param GNBCUUPModel
+ * @return ResponseEntity<GNBCUUPModel>
+ */
+ @PutMapping(path = "/gNBCUUP")
+ public ResponseEntity<GNBCUUPModel> updateGNBCUUPFunction(@RequestBody GNBCUUPModel gNBCUUPModel) {
+ logger.info("Request Received");
+ try {
+ return new ResponseEntity<GNBCUUPModel>(ranSliceConfigService.saveGNBCUUP(gNBCUUPModel), HttpStatus.OK);
+ } catch (Exception e) {
+ logger.error("Error while updating GNBCUUP:" + e.getMessage());
+ return new ResponseEntity<GNBCUUPModel>(HttpStatus.INTERNAL_SERVER_ERROR);
+ }
+ }
+
+ /**
+ * To fetch the CUCP details
+ *
+ * @param gNBCUCPName
+ * @return ResponseEntity<GNBCUCPModel>
+ */
+ @GetMapping(path = "/gNBCUUP/{gNBCUUPId}")
+ public ResponseEntity<GNBCUUPModel> findGNBCUUPFunction(@PathVariable Integer gNBCUUPId) {
+ logger.info("Request Received");
+ try {
+ if(ranSliceConfigService.fetchGNBCUUPData(gNBCUUPId)!=null) {
+ return new ResponseEntity<GNBCUUPModel>(ranSliceConfigService.fetchGNBCUUPData(gNBCUUPId), HttpStatus.OK);
+ }else {
+ return new ResponseEntity<GNBCUUPModel>(ranSliceConfigService.fetchGNBCUUPData(gNBCUUPId), HttpStatus.NO_CONTENT);
+ }
+ } catch (Exception e) {
+ logger.error("Error while fetching GNBCUCP:" + e.getMessage());
+ return new ResponseEntity<GNBCUUPModel>(HttpStatus.INTERNAL_SERVER_ERROR);
+ }
+ }
+
+ /**
+ * This method updates the slice details, config details of gNBDU
+ *
+ * @param GNBDUModel
+ * @return ResponseEntity<GNBDUModel>
+ */
+ @PutMapping(path = "/gNBDU")
+ public ResponseEntity<GNBDUModel> updateGNBDUFunction(@RequestBody GNBDUModel gNBDUModel) {
+ logger.info("Request Received");
+ try {
+ return new ResponseEntity<GNBDUModel>(ranSliceConfigService.saveGNBDU(gNBDUModel), HttpStatus.OK);
+ } catch (Exception e) {
+ logger.error("Error while updating GNBDU:" + e.getMessage());
+ return new ResponseEntity<GNBDUModel>(HttpStatus.INTERNAL_SERVER_ERROR);
+ }
+ }
+
+ /**
+ * To fetch the gNBDU details
+ *
+ * @param gNBDUId
+ * @return ResponseEntity<GNBDUModel>
+ */
+ @GetMapping(path = "/gNBDU/{gNBDUId}")
+ public ResponseEntity<GNBDUModel> findGNBDUFunction(@PathVariable Integer gNBDUId) {
+ logger.info("Request Received");
+ try {
+ if(ranSliceConfigService.fetchGNBDUData(gNBDUId)!=null) {
+ return new ResponseEntity<GNBDUModel>(ranSliceConfigService.fetchGNBDUData(gNBDUId), HttpStatus.OK);
+ }else {
+ return new ResponseEntity<GNBDUModel>(ranSliceConfigService.fetchGNBDUData(gNBDUId), HttpStatus.NO_CONTENT);
+ }
+ } catch (Exception e) {
+ logger.error("Error while fetching GNBDU:" + e.getMessage());
+ return new ResponseEntity<GNBDUModel>(HttpStatus.INTERNAL_SERVER_ERROR);
+ }
+ }
+
+ /**
+ * This method updates the NearRTRIC details
+ *
+ * @param nearRTRICModel
+ * @return ResponseEntity<NearRTRICModel>
+ */
+ @PutMapping(path = "/nearRTRIC")
+ public ResponseEntity<NearRTRICModel> updateNearRTRIC(@RequestBody NearRTRICModel nearRTRICModel) {
+ logger.info("Request Received");
+ try {
+ return new ResponseEntity<NearRTRICModel>(ranSliceConfigService.saveNearRTRIC(nearRTRICModel),
+ HttpStatus.OK);
+ } catch (Exception e) {
+ logger.error("Error while updating nearRTRIC:" + e.getMessage());
+ return new ResponseEntity<NearRTRICModel>(HttpStatus.INTERNAL_SERVER_ERROR);
+ }
+ }
+
+ /**
+ * To fetch the nearRTRIC details
+ *
+ * @param nearRTRICId
+ * @return ResponseEntity<GNBDUModel>
+ */
+ @GetMapping(path = "/nearRTRIC/{nearRTRICId}")
+ public ResponseEntity<NearRTRICModel> findNearRTRICFunction(@PathVariable Integer nearRTRICId) {
+ logger.info("Request Received");
+ try {
+ if(ranSliceConfigService.fetchNearRTRICData(nearRTRICId)!=null) {
+ return new ResponseEntity<NearRTRICModel>(ranSliceConfigService.fetchNearRTRICData(nearRTRICId),
+ HttpStatus.OK);
+ }else {
+ return new ResponseEntity<NearRTRICModel>(ranSliceConfigService.fetchNearRTRICData(nearRTRICId),
+ HttpStatus.NO_CONTENT);
+ }
+
+ } catch (Exception e) {
+ logger.error("Error while fetching nearRTRIC:" + e.getMessage());
+ return new ResponseEntity<NearRTRICModel>(HttpStatus.INTERNAL_SERVER_ERROR);
+ }
+ }
+
+ /**
+ * To fetch the RRMPolicy of CU/DU
+ *
+ * @param resourceType
+ * @param resourceId
+ * @return
+ */
+ @GetMapping(path = "/rrmPolicy/{resourceType}/{resourceId}")
+ public ResponseEntity<RRMPolicyRatioModel> findRRMPolicyOfNE(@PathVariable String resourceType,
+ @PathVariable String resourceId) {
+ logger.debug("Request Received");
+ try {
+ if(ranSliceConfigService.fetchRRMPolicyOfNE(resourceType, resourceId)!=null) {
+ return new ResponseEntity<RRMPolicyRatioModel>(
+ ranSliceConfigService.fetchRRMPolicyOfNE(resourceType, resourceId), HttpStatus.OK);
+ }else {
+ return new ResponseEntity<RRMPolicyRatioModel>(
+ ranSliceConfigService.fetchRRMPolicyOfNE(resourceType, resourceId), HttpStatus.NO_CONTENT);
+ }
+ } catch (Exception e) {
+ logger.error("Error while fetching RRMPolicy:" + e.getMessage());
+ return new ResponseEntity<RRMPolicyRatioModel>(HttpStatus.INTERNAL_SERVER_ERROR);
+ }
+ }
+
+ /**
+ * This method updates the RRM policy of a network function
+ *
+ * @param nearRTRICModel
+ * @return ResponseEntity<NearRTRICModel>
+ */
+ @PostMapping(path = "/rrmPolicy")
+ public ResponseEntity<RRMPolicyRatioModel> updateRRMPolicy(@RequestBody RRMPolicyRatioModel rrmPolicy) {
+ logger.info("Request Received");
+ try {
+ return new ResponseEntity<RRMPolicyRatioModel>(ranSliceConfigService.updateRRMPolicy(rrmPolicy), HttpStatus.OK);
+ } catch (Exception e) {
+ logger.error("Error while updating RRM Policy:" + e.getMessage());
+ return new ResponseEntity<RRMPolicyRatioModel>(HttpStatus.INTERNAL_SERVER_ERROR);
+ }
+ }
+
+
+ /**
+ * To find the list of RICs from tracking area
+ * 1. Find Cells from TA
+ * 2. find List of RICs of the cells
+ *
+ * @param trackingArea
+ * @return
+ */
+ @GetMapping(path = "/nearrtric-list/{trackingArea}")
+ public ResponseEntity<List<NearRTRICModel>> findNearRTRICofCellsFromTA(@PathVariable String trackingArea) {
+ logger.info("Request Received");
+ try {
+ List<String> cellIds = this.findListOfCells(trackingArea).getBody();
+ List<Integer> cellIdList =cellIds.stream().map(Integer::parseInt).collect(Collectors.toList());
+ if(ranSliceConfigService.findNearRTRICofCells(cellIdList).size()>0) {
+ return new ResponseEntity<List<NearRTRICModel>>(ranSliceConfigService.findNearRTRICofCells(cellIdList),
+ HttpStatus.OK);
+ }else {
+ return new ResponseEntity<List<NearRTRICModel>>(ranSliceConfigService.findNearRTRICofCells(cellIdList),
+ HttpStatus.NO_CONTENT);
+ }
+ } catch (Exception e) {
+ logger.error("Error while fetching the RICs:" + e.getMessage());
+ return new ResponseEntity<List<NearRTRICModel>>(HttpStatus.INTERNAL_SERVER_ERROR);
+ }
+ }
+
+ /**
+ * To find the list of CUs in a tracking area
+ *
+ * @param trackingArea
+ * @return
+ */
+ @GetMapping(path = "/cell-list/{trackingArea}")
+ public ResponseEntity<List<String>> findListOfCells(@PathVariable String trackingArea) {
+ logger.info("Request Received");
+ try {
+ if(ranSliceConfigService.fetchCellsofTA(trackingArea).size()>0) {
+ return new ResponseEntity<List<String>>(ranSliceConfigService.fetchCellsofTA(trackingArea), HttpStatus.OK);
+ }else {
+ return new ResponseEntity<List<String>>(ranSliceConfigService.fetchCellsofTA(trackingArea), HttpStatus.NO_CONTENT);
+ }
+ } catch (Exception e) {
+ logger.error("Error while fetching the Cells:" + e.getMessage());
+ return new ResponseEntity<List<String>>(HttpStatus.INTERNAL_SERVER_ERROR);
+ }
+ }
+
+ /**
+ * To find the list of CU-Cells
+ *
+ * @param nearRTRICId
+ * @return
+ */
+ @GetMapping(path = "/cu-cell-list/{nearRTRICId}")
+ public ResponseEntity<List<NRCellCUModel>> findCUCellsofRIC(@PathVariable Integer nearRTRICId) {
+ logger.info("Request Received");
+ try {
+ if(ranSliceConfigService.fetchCUCellsofRIC(nearRTRICId).size()>0) {
+ return new ResponseEntity<List<NRCellCUModel>>(ranSliceConfigService.fetchCUCellsofRIC(nearRTRICId), HttpStatus.OK);
+ }else {
+ return new ResponseEntity<List<NRCellCUModel>>(ranSliceConfigService.fetchCUCellsofRIC(nearRTRICId), HttpStatus.NO_CONTENT);
+ }
+ } catch (Exception e) {
+ e.printStackTrace();
+ logger.error("Error while fetching the Cells-CU:" + e.getMessage());
+ return new ResponseEntity<List<NRCellCUModel>>(HttpStatus.INTERNAL_SERVER_ERROR);
+ }
+ }
+
+
+ /**
+ * To find the nearRTRIC of NSSI
+ *
+ * This API can be used in Terminate/activate/deactivate to find the RIC from ranNFNSSIId in SO request
+ *
+ * @param ranNFNSSIId
+ * @return List<NearRTRICModel>
+ */
+ @GetMapping(path = "/nearrtric/{ranNFNSSIId}")
+ public ResponseEntity<List<NearRTRICModel>> findNearRTRICByNSSI(@PathVariable String ranNFNSSIId) {
+ logger.info("Request Received");
+ try {
+ if(ranSliceConfigService.findNearRTRICByNSSI(ranNFNSSIId).size()>0){
+ return new ResponseEntity<List<NearRTRICModel>>(ranSliceConfigService.findNearRTRICByNSSI(ranNFNSSIId), HttpStatus.OK);
+ }else {
+ return new ResponseEntity<List<NearRTRICModel>>(ranSliceConfigService.findNearRTRICByNSSI(ranNFNSSIId), HttpStatus.NO_CONTENT);
+ }
+ } catch (Exception e) {
+ logger.error("Error while fetching the nearRTRIC by RANNFNSSI:" + e.getMessage());
+ return new ResponseEntity<List<NearRTRICModel>>(HttpStatus.INTERNAL_SERVER_ERROR);
+ }
+ }
+
+ /**
+ * To find the list of DU-Cells
+ *
+ * @param nearRTRICId
+ * @return
+ */
+ @GetMapping(path = "/du-cell-list/{sNSSAI}")
+ public ResponseEntity<Map<Integer, List<NRCellDUModel>>> findDUCellsofRIC(@PathVariable String sNSSAI) {
+ logger.info("Request Received");
+ try {
+ if(ranSliceConfigService.fetchDUCellsofRIC(sNSSAI).size()>0) {
+ return new ResponseEntity<Map<Integer, List<NRCellDUModel>>>(ranSliceConfigService.fetchDUCellsofRIC(sNSSAI), HttpStatus.OK);
+ }else {
+ return new ResponseEntity<Map<Integer, List<NRCellDUModel>>>(ranSliceConfigService.fetchDUCellsofRIC(sNSSAI), HttpStatus.NO_CONTENT);
+ }
+ } catch (Exception e) {
+ e.printStackTrace();
+ logger.error("Error while fetching the Cells-DU:" + e.getMessage());
+ return new ResponseEntity<Map<Integer, List<NRCellDUModel>>>(HttpStatus.INTERNAL_SERVER_ERROR);
+ }
+ }
+
+ //Inventory APIs
+ /**
+ * This method updates the RAN slice details
+ *
+ * @param ranSliceInfoModel
+ * @return ResponseEntity<RANSliceInfoModel>
+ */
+ @PutMapping(path = "/ranslice-details")
+ public ResponseEntity<RANSliceInfoModel> updateRANInventory(@RequestBody RANSliceInfoModel ranSliceInfoModel) {
+ logger.info("Request Received");
+ try {
+ return new ResponseEntity<RANSliceInfoModel>(ranSliceConfigService.updateRANInventory(ranSliceInfoModel),
+ HttpStatus.OK);
+ } catch (Exception e) {
+ logger.error("Error while updating RAN Inventory:" + e.getMessage());
+ return new ResponseEntity<RANSliceInfoModel>(HttpStatus.INTERNAL_SERVER_ERROR);
+ }
+ }
+
+ /**
+ * To fetch the RAN slice Details
+ *
+ * @param ranNFNSSIId
+ * @return RANSliceInfoModel
+ */
+ @GetMapping(path = "/ranslice-details/{ranNFNSSIId}")
+ public ResponseEntity<RANSliceInfoModel> findRANSlice(@PathVariable String ranNFNSSIId) {
+ logger.info("Request Received");
+ try {
+ if(ranSliceConfigService.fetchRANSlice(ranNFNSSIId)!=null) {
+ return new ResponseEntity<RANSliceInfoModel>(ranSliceConfigService.fetchRANSlice(ranNFNSSIId), HttpStatus.OK);
+ }else {
+ return new ResponseEntity<RANSliceInfoModel>(ranSliceConfigService.fetchRANSlice(ranNFNSSIId), HttpStatus.NO_CONTENT);
+ }
+ } catch (Exception e) {
+ logger.error("Error while fetching the RAN slice Details:" + e.getMessage());
+ return new ResponseEntity<RANSliceInfoModel>(HttpStatus.INTERNAL_SERVER_ERROR);
+ }
+ }
+
+ //Slice Analysis MS APIs
+ /**
+ * To fetch The NearRTRICs serving the sNSSAI
+ *
+ * @param sNSSAI
+ * @return List<NearRTRICModel>
+ */
+ @GetMapping(path = "/nearrtric/snssai/{sNSSAI}")
+ public ResponseEntity<List<NearRTRICModel>> findRICsofNSSAI(@PathVariable String sNSSAI){
+ logger.info("Request Received");
+ try {
+ if(ranSliceConfigService.findRICsByNSSAI(sNSSAI).size()>0) {
+ return new ResponseEntity<List<NearRTRICModel>>(ranSliceConfigService.findRICsByNSSAI(sNSSAI), HttpStatus.OK);
+ }else {
+ return new ResponseEntity<List<NearRTRICModel>>(ranSliceConfigService.findRICsByNSSAI(sNSSAI), HttpStatus.NO_CONTENT);
+ }
+ } catch (Exception e) {
+ logger.error("Error while fetching the nearRTRIC by sNSSAI:" + e.getMessage());
+ return new ResponseEntity<List<NearRTRICModel>>(HttpStatus.INTERNAL_SERVER_ERROR);
+ }
+ }
+
+ /**
+ * To fetch the configuration requested for a slice
+ *
+ * @param sNSSAI
+ * @return
+ */
+ @GetMapping(path="/profile-config/{sNSSAI}")
+ public ResponseEntity<Map<String,Integer>> fetchSliceProfileConfiguration(@PathVariable String sNSSAI){
+ logger.info("Request Received");
+ try {
+ if(ranSliceConfigService.findSliceProfileconfig(sNSSAI).size()>0) {
+ return new ResponseEntity<Map<String,Integer>>(ranSliceConfigService.findSliceProfileconfig(sNSSAI), HttpStatus.OK);
+ }else {
+ return new ResponseEntity<Map<String,Integer>>(ranSliceConfigService.findSliceProfileconfig(sNSSAI), HttpStatus.NO_CONTENT);
+ }
+ } catch (Exception e) {
+ logger.error("Error while fetching the Requested Configuration:" + e.getMessage());
+ return new ResponseEntity<Map<String,Integer>>(HttpStatus.INTERNAL_SERVER_ERROR);
+ }
+ }
+
+ /**
+ * To fetch the configuration of a slice in RIC
+ *
+ * @param sNSSAI
+ * @return
+ */
+ @GetMapping(path="/slice-config/{sNSSAI}")
+ public ResponseEntity<Map<Integer,NSSAIConfig>> fetchSliceConfiguration(@PathVariable String sNSSAI){
+ logger.info("Request Received");
+ try {
+ if(ranSliceConfigService.findSliceConfig(sNSSAI).size()>0) {
+ return new ResponseEntity<Map<Integer, NSSAIConfig>>(ranSliceConfigService.findSliceConfig(sNSSAI), HttpStatus.OK);
+ }else {
+ return new ResponseEntity<Map<Integer, NSSAIConfig>>(ranSliceConfigService.findSliceConfig(sNSSAI), HttpStatus.NO_CONTENT);
+ }
+ } catch (Exception e) {
+ e.printStackTrace();
+ logger.error("Error while fetching the Configuration of a Slice at RIC:" + e.getMessage());
+ return new ResponseEntity<Map<Integer, NSSAIConfig>>(HttpStatus.INTERNAL_SERVER_ERROR);
+ }
+ }
+
+ /**
+ * To fetch the DU details
+ *
+ * @param
+ * @return List<GNBDUModel>
+ */
+ @GetMapping(path="/du-list/{sNSSAI}")
+ public ResponseEntity<List<GNBDUModel>> fetchDUFunctionsOfNSSAI(@PathVariable String sNSSAI){
+ logger.info("Request Received::"+sNSSAI);
+ try {
+ if(ranSliceConfigService.findDUsofSNssai(sNSSAI).size()>0) {
+ return new ResponseEntity<List<GNBDUModel>>(ranSliceConfigService.findDUsofSNssai(sNSSAI), HttpStatus.OK);
+ }else {
+ return new ResponseEntity<List<GNBDUModel>>(ranSliceConfigService.findDUsofSNssai(sNSSAI), HttpStatus.NO_CONTENT);
+ }
+ } catch (Exception e) {
+ e.printStackTrace();
+ logger.error("Error while fetching the DU details of NSSAI:" + e.getMessage());
+ return new ResponseEntity<List<GNBDUModel>>(HttpStatus.INTERNAL_SERVER_ERROR);
+ }
+ }
+
+ /**
+ * To fetch the DU details
+ *
+ * @param
+ * @return List<GNBDUModel>
+ */
+ @GetMapping(path="/cucp-list/{sNSSAI}")
+ public ResponseEntity<List<GNBCUCPModel>> fetchCUFunctionsOfNSSAI(@PathVariable String sNSSAI){
+ logger.info("Request Received::"+sNSSAI);
+ try {
+ if(ranSliceConfigService.findDUsofSNssai(sNSSAI).size()>0) {
+ return new ResponseEntity<List<GNBCUCPModel>>(ranSliceConfigService.findCUsofSNssai(sNSSAI), HttpStatus.OK);
+ }else {
+ return new ResponseEntity<List<GNBCUCPModel>>(ranSliceConfigService.findCUsofSNssai(sNSSAI), HttpStatus.NO_CONTENT);
+ }
+ } catch (Exception e) {
+ logger.error("Error while fetching the CU details of NSSAI:" + e.getMessage());
+ return new ResponseEntity<List<GNBCUCPModel>>(HttpStatus.INTERNAL_SERVER_ERROR);
+ }
+ }
+
+ /**
+ * To fetch the Customer Details
+ *
+ * @param
+ * @return Map<String, String>
+ */
+ @GetMapping(path="/subscriber-details/{sNSSAI}")
+ public ResponseEntity<Map<String, String>> fetchSubsciberDetailsOfNSSAI(@PathVariable String sNSSAI){
+ logger.info("Request Received::"+sNSSAI);
+ try {
+ if(ranSliceConfigService.getSubscriberDetails(sNSSAI).size()>0) {
+ return new ResponseEntity<Map<String, String>>(ranSliceConfigService.getSubscriberDetails(sNSSAI), HttpStatus.OK);
+ }else {
+ return new ResponseEntity<Map<String, String>>(ranSliceConfigService.getSubscriberDetails(sNSSAI), HttpStatus.NO_CONTENT);
+ }
+ } catch (Exception e) {
+ logger.error("Error while fetching the Customer details of NSSAI:" + e.getMessage());
+ return new ResponseEntity<Map<String, String>>(HttpStatus.INTERNAL_SERVER_ERROR);
+ }
+ }
+
+ /**
+ * To fetch the cu details
+ *
+ * @param
+ * @return List<GNBCUCPModel>
+ */
+ @GetMapping(path="/cucp-list")
+ public ResponseEntity<List<GNBCUCPModel>> fetchCUCPFunctions(){
+ logger.info("Request Received");
+ try {
+ if(ranSliceConfigService.findAllCUCPFunctions().size()>0) {
+ return new ResponseEntity<List<GNBCUCPModel>>(ranSliceConfigService.findAllCUCPFunctions(), HttpStatus.OK);
+ }else {
+ return new ResponseEntity<List<GNBCUCPModel>>(ranSliceConfigService.findAllCUCPFunctions(), HttpStatus.NO_CONTENT);
+ }
+ } catch (Exception e) {
+ logger.error("Error while fetching the CU details:" + e.getMessage());
+ return new ResponseEntity<List<GNBCUCPModel>>(HttpStatus.INTERNAL_SERVER_ERROR);
+ }
+ }
+
+ /**
+ * To fetch the DU details
+ *
+ * @param
+ * @return List<GNBDUModel>
+ */
+ @GetMapping(path="/du-list")
+ public ResponseEntity<List<GNBDUModel>> fetchDUFunctions(){
+ logger.info("Request Received");
+ try {
+ if(ranSliceConfigService.findAllDUFunctions().size()>0) {
+ return new ResponseEntity<List<GNBDUModel>>(ranSliceConfigService.findAllDUFunctions(), HttpStatus.OK);
+ }else {
+ return new ResponseEntity<List<GNBDUModel>>(ranSliceConfigService.findAllDUFunctions(), HttpStatus.NO_CONTENT);
+ }
+ } catch (Exception e) {
+ logger.error("Error while fetching the DU details:" + e.getMessage());
+ return new ResponseEntity<List<GNBDUModel>>(HttpStatus.INTERNAL_SERVER_ERROR);
+ }
+ }
+
+} \ No newline at end of file
diff --git a/ransim/ransimctrlr/RANSIM-CTRLR/src/main/java/org/onap/ransim/rest/api/controller/RansimController.java b/ransim/ransimctrlr/RANSIM-CTRLR/src/main/java/org/onap/ransim/rest/api/controller/RansimController.java
index 9ea789e..5d15e58 100644
--- a/ransim/ransimctrlr/RANSIM-CTRLR/src/main/java/org/onap/ransim/rest/api/controller/RansimController.java
+++ b/ransim/ransimctrlr/RANSIM-CTRLR/src/main/java/org/onap/ransim/rest/api/controller/RansimController.java
@@ -20,1131 +20,742 @@
package org.onap.ransim.rest.api.controller;
-import com.google.gson.Gson;
-
-import java.io.BufferedReader;
-import java.io.File;
-import java.io.FileInputStream;
-import java.io.FileReader;
-import java.io.IOException;
-import java.io.InputStream;
import java.util.ArrayList;
-import java.util.Collections;
-import java.util.HashMap;
-import java.util.HashSet;
-import java.util.Iterator;
+import java.util.Arrays;
import java.util.List;
import java.util.Map;
-import java.util.Properties;
-import java.util.Random;
-import java.util.Set;
-import java.util.UUID;
+import java.util.HashMap;
import java.util.concurrent.ConcurrentHashMap;
-
-import javax.persistence.EntityManager;
-import javax.persistence.EntityManagerFactory;
-import javax.persistence.Persistence;
-import javax.persistence.Query;
-import javax.persistence.TypedQuery;
-import javax.websocket.Session;
+import java.util.concurrent.Executors;
+import java.util.concurrent.ScheduledExecutorService;
+import java.util.concurrent.TimeUnit;
import org.apache.log4j.Logger;
-import org.onap.ransim.websocket.model.*;
-import org.onap.ransim.rest.api.models.CellData;
import org.onap.ransim.rest.api.models.CellDetails;
import org.onap.ransim.rest.api.models.CellNeighbor;
-import org.onap.ransim.rest.api.models.FmAlarmInfo;
+import org.onap.ransim.rest.api.models.DeleteACellReq;
+import org.onap.ransim.rest.api.models.GetACellDetailReq;
import org.onap.ransim.rest.api.models.GetNeighborList;
-import org.onap.ransim.rest.api.models.NbrDump;
+import org.onap.ransim.rest.api.models.GetNeighborListReq;
+import org.onap.ransim.rest.api.models.GetNetconfServerDetailsReq;
+import org.onap.ransim.rest.api.models.GetPmDataReq;
+import org.onap.ransim.rest.api.models.ModifyACellReq;
import org.onap.ransim.rest.api.models.NeighborDetails;
-import org.onap.ransim.rest.api.models.NeighborPmDetails;
import org.onap.ransim.rest.api.models.NeihborId;
import org.onap.ransim.rest.api.models.NetconfServers;
import org.onap.ransim.rest.api.models.OperationLog;
-import org.onap.ransim.rest.api.models.PmDataDump;
-import org.onap.ransim.rest.api.models.PmParameters;
-import org.onap.ransim.rest.api.models.TopologyDump;
-import org.onap.ransim.rest.client.RestClient;
-import org.onap.ransim.websocket.model.FmMessage;
-import org.onap.ransim.websocket.model.ModifyNeighbor;
-import org.onap.ransim.websocket.model.ModifyPci;
-import org.onap.ransim.websocket.model.Neighbor;
-import org.onap.ransim.websocket.model.PmMessage;
-import org.onap.ransim.websocket.model.SetConfigTopology;
-import org.onap.ransim.websocket.model.Topology;
-import org.onap.ransim.websocket.model.UpdateCell;
-import org.onap.ransim.websocket.server.RansimWebSocketServer;
+import org.onap.ransim.rest.api.models.Topology;
+import org.onap.ransim.rest.api.models.TACells;
+import org.onap.ransim.rest.api.services.RansimControllerServices;
+import org.onap.ransim.rest.api.services.RANSliceConfigService;
+import org.onap.ransim.rest.api.services.RansimRepositoryService;
+import org.onap.ransim.rest.api.controller.RANSliceConfigController;
+import org.onap.ransim.rest.api.handler.RansimPciHandler;
+import org.onap.ransim.rest.api.handler.RansimSlicingHandler;
+import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.http.HttpStatus;
import org.springframework.http.ResponseEntity;
+import org.springframework.web.bind.annotation.CrossOrigin;
+import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.RequestBody;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RequestMethod;
+import org.springframework.web.bind.annotation.RestController;
+import com.google.gson.Gson;
+import com.google.gson.GsonBuilder;
+import org.onap.ransim.rest.api.services.SlicingPMDataGenerator;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import io.swagger.annotations.ApiResponse;
+import io.swagger.annotations.ApiResponses;
+
+@RestController
+@Api(value = "Ran Simulator Controller Services")
+@RequestMapping("/api")
+@CrossOrigin(origins = "*")
public class RansimController {
- static Logger log = Logger.getLogger(RansimController.class
- .getName());
-
- private static RansimController rsController = null;
- Properties netconfConstants = new Properties();
- int gridSize = 10;
- boolean collision = false;
- String serverIdPrefix = "";
- static int numberOfCellsPerNcServer = 15;
- int numberOfMachines = 1;
- int numberOfProcessPerMc = 5;
- boolean strictValidateRansimAgentsAvailability = false;
- static public Map<String, Session> webSocketSessions = new ConcurrentHashMap<String, Session>();
- static Map<String, String> serverIdIpPortMapping = new ConcurrentHashMap<String, String>();
-
- static Map<String, String> globalNcServerUuidMap = new ConcurrentHashMap<String, String>();
- static List<String> unassignedServerIds = Collections
- .synchronizedList(new ArrayList<String>());
- static Map<String, List<String>> serverIdIpNodeMapping = new ConcurrentHashMap<String, List<String>>();
- int nextServerIdNumber = 1001;
- String sdnrServerIp = "";
- int sdnrServerPort = 0;
- static String sdnrServerUserid = "";
- static String sdnrServerPassword = "";
- static String dumpFileName = "";
- static long maxPciValueAllowed = 503;
-
- static RansimPciHandler rsPciHdlr = RansimPciHandler.getRansimPciHandler();
-
- private RansimController() {
-
- }
+ static Logger log = Logger.getLogger(RansimController.class.getName());
+
+ private static boolean isPmDataGenerating = false;
+ private static boolean isIntelligentSlicingPmDataGenerating = false;
+
+ ScheduledExecutorService execService = Executors.newScheduledThreadPool(5);
+ ScheduledExecutorService execServiceForIntelligentSlicing = Executors.newScheduledThreadPool(5);
+ ScheduledExecutorService closedLoopExecService;
+
+ @Autowired
+ RansimRepositoryService ransimRepo;
+ @Autowired
+ RansimControllerServices rscServices;
+ @Autowired
+ RansimPciHandler rsPciHdlr;
+ @Autowired
+ RANSliceConfigController ranSliceConfigController;
+ @Autowired
+ RANSliceConfigService ranSliceConfigService;
+ @Autowired
+ RansimSlicingHandler ranSliceHandler;
+ @Autowired
+ SlicingPMDataGenerator pmDataGenerator;
/**
- * To accesss variable of this class from another class.
+ * Start the RAN network simulation.
*
- * @return returns rscontroller constructor
+ * @param req gets the necessary details as a request of class type
+ * StartSimulationReq
+ * @return returns Http status
+ * @throws Exception throws exceptions in the functions
*/
- public static synchronized RansimController getRansimController() {
- if (rsController == null) {
- rsController = new RansimController();
- new KeepWebsockAliveThread(rsController).start();
+ @ApiOperation("Starts the RAN network simulation")
+ @RequestMapping(value = "/StartSimulation", method = RequestMethod.POST)
+ @ApiResponses(value = { @ApiResponse(code = 200, message = "Successful"),
+ @ApiResponse(code = 500, message = "Cannot start the simulation") })
+ public ResponseEntity<String> startSimulation(@RequestBody Map<String,String> dumpfile) throws Exception {
+
+ List<CellDetails> cellList = ransimRepo.getCellDetailsList();
+ if (!cellList.isEmpty()) {
+ return new ResponseEntity<>("Already simulation is running.", HttpStatus.INTERNAL_SERVER_ERROR);
}
- return rsController;
- }
+ try {
+ rscServices.loadProperties();
+ RansimControllerServices.dumpFileName = dumpfile.containsKey("dumpfile") ? dumpfile.get("dumpfile"):null;
+ long startTimeStartSimulation = System.currentTimeMillis();
+ rscServices.generateClusterFromFile();
+ rscServices.sendInitialConfigAll();
+ long endTimeStartSimulation = System.currentTimeMillis();
+ log.info("Time taken for start simulation : " + (endTimeStartSimulation - startTimeStartSimulation));
- private String checkIpPortAlreadyExists(String ipPort,
- Map<String, String> serverIdIpPortMapping) {
- String serverId = null;
- for (String key : serverIdIpPortMapping.keySet()) {
- String value = serverIdIpPortMapping.get(key);
- if (value.equals(ipPort)) {
- serverId = key;
- break;
- }
- }
- return serverId;
- }
+ return new ResponseEntity<String>(HttpStatus.OK);
- /**
- * Add web socket sessions.
- *
- * @param ipPort
- * ip address for the session
- * @param wsSession
- * session details
- */
- public synchronized String addWebSocketSessions(String ipPort,
- Session wsSession) {
- loadProperties();
- if (webSocketSessions.containsKey(ipPort)) {
- log.info("addWebSocketSessions: Client session "
- + wsSession.getId() + " for " + ipPort
- + " already exist. Removing old session.");
- webSocketSessions.remove(ipPort);
+ } catch (Exception eu) {
+ log.info("/StartSimulation ", eu);
+ return new ResponseEntity<String>(HttpStatus.INTERNAL_SERVER_ERROR);
}
- log.info("addWebSocketSessions: Adding Client session "
- + wsSession.getId() + " for " + ipPort);
- webSocketSessions.put(ipPort, wsSession);
- String serverId = null;
- if (!serverIdIpPortMapping.containsValue(ipPort)) {
- if (unassignedServerIds.size() > 0) {
- log.info("addWebSocketSessions: No serverIds pending to assign for "
- + ipPort);
- serverId = checkIpPortAlreadyExists(ipPort,
- serverIdIpPortMapping);
- if (serverId == null) {
- serverId = unassignedServerIds.remove(0);
- } else {
- if (unassignedServerIds.contains(serverId)) {
- unassignedServerIds.remove(serverId);
- }
- }
- log.info("RansCtrller = Available unassigned ServerIds :"
- + unassignedServerIds);
- log.info("RansCtrller = addWebSocketSessions: Adding serverId "
- + serverId + " for " + ipPort);
- serverIdIpPortMapping.put(serverId, ipPort);
- log.debug("RansCtrller = serverIdIpPortMapping >>>> :"
- + serverIdIpPortMapping);
- mapServerIdToNodes(serverId);
- RansimControllerDatabase rsDb = new RansimControllerDatabase();
- try {
-
- NetconfServers server = rsDb.getNetconfServer(serverId);
- if (server != null) {
- server.setIp(ipPort.split(":")[0]);
- server.setNetconfPort(ipPort.split(":")[1]);
- rsDb.mergeNetconfServers(server);
- }
+ }
+
+ @ApiOperation("Starts the RAN network slice simulation")
+ @RequestMapping(value = "/StartRanSliceSimulation", method = RequestMethod.POST)
+ @ApiResponses(value = { @ApiResponse(code = 200, message = "Successful"),
+ @ApiResponse(code = 500, message = "Cannot start the simulation") })
+ public ResponseEntity<String> startRanSliceSimulation() throws Exception {
+ try {
+ rscServices.loadGNBFunctionProperties();
+ long startTimeStartSimulation = System.currentTimeMillis();
+ rscServices.sendRanInitialConfigAll();
+ long endTimeStartSimulation = System.currentTimeMillis();
+ log.info("Time taken for start ran slice simulation : " + (endTimeStartSimulation - startTimeStartSimulation));
+ return new ResponseEntity<>("Simulation started.", HttpStatus.OK);
- } catch (Exception e1) {
- log.info("Exception mapServerIdToNodes :", e1);
- }
- } else {
- log.info("addWebSocketSessions: No serverIds pending to assign for "
- + ipPort);
- }
- } else {
- for (String key : serverIdIpPortMapping.keySet()) {
- if (serverIdIpPortMapping.get(key).equals(ipPort)) {
- log.info("addWebSocketSessions: ServerId " + key + " for "
- + ipPort + " is exist already");
- serverId = key;
- break;
- }
- }
+ } catch (Exception eu) {
+ log.info("/StartRanSliceSimulation ", eu);
+ return new ResponseEntity<String>(HttpStatus.INTERNAL_SERVER_ERROR);
}
- return serverId;
}
/**
- * Map server ID to the cells
+ * The performance Management Data of each cell will be sent to its netconf
+ * agent at a regular interval.
+ *
+ * @param req Contains the details of node ids which will have bad and poor pm
+ * values
+ * @return return HTTP status.
*
- * @param serverId
- * Server ID
*/
- private void mapServerIdToNodes(String serverId) {
- dumpSessionDetails();
- if (serverIdIpNodeMapping.containsKey(serverId)) {
- // already mapped.RansimController Do nothing.
- } else {
- List<String> nodeIds = new ArrayList<String>();
- RansimControllerDatabase rsDb = new RansimControllerDatabase();
- try {
- List<CellDetails> nodes = rsDb.getCellsWithNoServerIds();
- for (CellDetails cell : nodes) {
- cell.setServerId(serverId);
- nodeIds.add(cell.getNodeId());
- rsDb.mergeCellDetails(cell);
- }
- serverIdIpNodeMapping.put(serverId, nodeIds);
- } catch (Exception e1) {
- log.info("Exception mapServerIdToNodes :", e1);
-
- }
- }
- }
+ @ApiOperation("Generate PM data")
+ @RequestMapping(value = "/GeneratePmData", method = RequestMethod.POST)
+ @ApiResponses(value = { @ApiResponse(code = 200, message = "Successful"),
+ @ApiResponse(code = 500, message = "Cannot start the simulation") })
+ public ResponseEntity<String> generatePmData(@RequestBody GetPmDataReq req) throws Exception {
- /**
- * It removes the web socket sessions.
- *
- * @param ipPort
- * ip address of the netconf server
- */
- public synchronized void removeWebSocketSessions(String ipPort) {
- RansimControllerDatabase rsDb = new RansimControllerDatabase();
- log.info("remove websocket session request received for: " + ipPort);
+ log.info("Generate PM Data - nodeId_bad: " + req.getNodeIdBad() + ", nodeId_poor: " + req.getNodeIdPoor());
try {
- if (webSocketSessions.containsKey(ipPort)) {
- String removedServerId = null;
- for (String serverId : serverIdIpPortMapping.keySet()) {
- String ipPortVal = serverIdIpPortMapping.get(serverId);
- if (ipPortVal.equals(ipPort)) {
- if (!unassignedServerIds.contains(serverId)) {
- unassignedServerIds.add(serverId);
- log.info(serverId + "added in unassignedServerIds");
- }
- NetconfServers ns = rsDb.getNetconfServer(serverId);
- ns.setIp(null);
- ns.setNetconfPort(null);
- log.info(serverId + " ip and Port set as null ");
- rsDb.mergeNetconfServers(ns);
- removedServerId = serverId;
- break;
- }
- }
- serverIdIpPortMapping.remove(removedServerId);
+ rsPciHdlr.readPmParameters();
+ execService = Executors.newScheduledThreadPool(5);
+ execService.scheduleAtFixedRate(() -> {
+
+ rsPciHdlr.generatePmData(req.getNodeIdBad(), req.getNodeIdPoor());
+ log.info("execService.isTerminated(): " + execService.isTerminated());
+
+ }, 0, 300, TimeUnit.SECONDS);
+
+ isPmDataGenerating = true;
+
+ return new ResponseEntity<>("Request generated.", HttpStatus.OK);
+
+ } catch (Exception eu) {
+ log.error("Exception: ", eu);
+ return new ResponseEntity<String>(HttpStatus.INTERNAL_SERVER_ERROR);
- Session wsSession = webSocketSessions.remove(ipPort);
- log.info("removeWebSocketSessions: Client session "
- + wsSession.getId() + " for " + ipPort
- + " is removed. Server Id : " + removedServerId);
- } else {
- log.info("addWebSocketSessions: Client session for " + ipPort
- + " not exist");
- }
- } catch (Exception e) {
- log.info("Exception in removeWebSocketSessions. e: " + e);
}
}
/**
- * Checks the number of ransim agents running.
- *
- * @param cellsToBeSimulated
- * number of cells to be simulated
- * @return returns true if there are enough ransim agents running
+ * Terminates the ScheduledExecutorService which sends the PM data at regular
+ * interval.
+ *
+ * @return returns HTTP status
+ *
*/
- public boolean hasEnoughRansimAgentsRunning(int cellsToBeSimulated) {
+ @ApiOperation("stop PM data")
+ @RequestMapping(value = "/stopPmData", method = RequestMethod.GET)
+ @ApiResponses(value = { @ApiResponse(code = 200, message = "Successful"),
+ @ApiResponse(code = 500, message = "Cannot start the simulation") })
+ public ResponseEntity<String> stopPmData() throws Exception {
- log.info("hasEnoughRansimAgentsRunning: numberOfCellsPerNCServer "
- + numberOfCellsPerNcServer + " , webSocketSessions.size:"
- + webSocketSessions.size() + " , cellsToBeSimulated:"
- + cellsToBeSimulated);
- log.info(strictValidateRansimAgentsAvailability);
+ try {
+ log.info("1. execService.isTerminated(): " + execService.isTerminated());
+ if (!execService.isTerminated()) {
+ execService.shutdown();
+ log.info("2. execService.isTerminated(): " + execService.isTerminated());
- if (strictValidateRansimAgentsAvailability) {
- if (numberOfCellsPerNcServer * webSocketSessions.size() < cellsToBeSimulated) {
- return false;
}
+ isPmDataGenerating = false;
+ return new ResponseEntity<>("PM data generated.", HttpStatus.OK);
+
+ } catch (Exception eu) {
+ log.error("Exception: ", eu);
+ return new ResponseEntity<String>(HttpStatus.INTERNAL_SERVER_ERROR);
}
- return true;
+
}
/**
- * It updates the constant values in the properties file.
+ * Get the status of ScheduledExecutorService, whether active or terminated.
+ *
+ * @return return the status
+ *
*/
- public void loadProperties() {
- InputStream input = null;
+ @ApiOperation("get PM data status")
+ @RequestMapping(value = "/GetPmDataStatus", method = RequestMethod.GET)
+ @ApiResponses(value = { @ApiResponse(code = 200, message = "Successful"),
+ @ApiResponse(code = 500, message = "Cannot get information") })
+ public boolean getPmDataStatus() throws Exception {
+
try {
- input = new FileInputStream(
- "/tmp/ransim-install/config/ransim.properties");
- netconfConstants.load(input);
- serverIdPrefix = netconfConstants.getProperty("serverIdPrefix");
- numberOfCellsPerNcServer = Integer.parseInt(netconfConstants
- .getProperty("numberOfCellsPerNCServer"));
- numberOfMachines = Integer.parseInt(netconfConstants
- .getProperty("numberOfMachines"));
- numberOfProcessPerMc = Integer.parseInt(netconfConstants
- .getProperty("numberOfProcessPerMc"));
- strictValidateRansimAgentsAvailability = Boolean
- .parseBoolean(netconfConstants
- .getProperty("strictValidateRansimAgentsAvailability"));
- sdnrServerIp = netconfConstants.getProperty("sdnrServerIp");
- sdnrServerPort = Integer.parseInt(netconfConstants
- .getProperty("sdnrServerPort"));
- sdnrServerUserid = netconfConstants.getProperty("sdnrServerUserid");
- sdnrServerPassword = netconfConstants
- .getProperty("sdnrServerPassword");
- dumpFileName = netconfConstants.getProperty("dumpFileName");
- maxPciValueAllowed = Long.parseLong(netconfConstants
- .getProperty("maxPciValueAllowed"));
-
- } catch (Exception e) {
- log.info("Properties file error", e);
- } finally {
- try {
- if (input != null) {
- input.close();
- }
- } catch (Exception ex) {
- log.info("Properties file error", ex);
- }
+ return isPmDataGenerating;
+ } catch (Exception eu) {
+ log.error("Exception: ", eu);
+ return false;
}
+
}
/**
- * The function adds the cell(with nodeId passed as an argument) to its
- * netconf server list if the netconf server already exists. Else it will
- * create a new netconf server in the NetconfServers Table and the cell into
- * its list.
+ * The function retrieves RAN simulation network topology.
+ *
+ * @return returns Http status
+ * @throws Exception throws exceptions in the functions
*
- * @param nodeId
- * node Id of the cell
*/
- static void setNetconfServers(String nodeId) {
+ @ApiOperation("Retrieves RAN simulation network topology")
+ @RequestMapping(value = "/GetTopology", method = RequestMethod.GET)
+ @ApiResponses(value = { @ApiResponse(code = 200, message = "Successful"),
+ @ApiResponse(code = 500, message = "Cannot retrieve the RAN simulation network topology details") })
+ public ResponseEntity<String> getTopology() throws Exception {
+ log.debug("Inside getTopology...");
+ try {
+ rsPciHdlr.checkCollisionAfterModify();
+ List<CellDetails> cds = ransimRepo.getCellDetailsList();
- RansimControllerDatabase rsDb = new RansimControllerDatabase();
- CellDetails currentCell = rsDb.getCellDetail(nodeId);
+ Topology top = new Topology();
- Set<CellDetails> newList = new HashSet<CellDetails>();
- try {
- if (currentCell != null) {
- NetconfServers server = rsDb.getNetconfServer(currentCell
- .getServerId());
+ if (cds != null && cds.size() > 0) {
+ top.setMinScreenX(cds.get(0).getScreenX());
+ top.setMaxScreenX(cds.get(0).getScreenX());
+ top.setMinScreenY(cds.get(0).getScreenY());
+ top.setMaxScreenY(cds.get(0).getScreenY());
- if (server == null) {
+ for (int i = 0; i < cds.size(); i++) {
+ if (cds.get(i).getScreenX() < top.getMinScreenX()) {
+ top.setMinScreenX(cds.get(i).getScreenX());
+ }
+ if (cds.get(i).getScreenY() < top.getMinScreenY()) {
+ top.setMinScreenY(cds.get(i).getScreenY());
+ }
- server = new NetconfServers();
- server.setServerId(currentCell.getServerId());
- } else {
- newList.addAll(server.getCells());
+ if (cds.get(i).getScreenX() > top.getMaxScreenX()) {
+ top.setMaxScreenX(cds.get(i).getScreenX());
+ }
+ if (cds.get(i).getScreenY() > top.getMaxScreenY()) {
+ top.setMaxScreenY(cds.get(i).getScreenY());
+ }
}
+ top.setCellTopology(cds);
+ }
+ top.setGridSize(rscServices.gridSize);
- newList.add(currentCell);
- server.setCells(newList);
- log.info("setNetconfServers: nodeId: " + nodeId + ", X:"
- + currentCell.getGridX() + ", Y:"
- + currentCell.getGridY() + ", ip: " + server.getIp()
- + ", portNum: " + server.getNetconfPort()
- + ", serverId:" + currentCell.getServerId());
-
- rsDb.mergeNetconfServers(server);
+ Gson gson = new Gson();
+ String jsonStr = gson.toJson(top);
- }
+ return new ResponseEntity<>(jsonStr, HttpStatus.OK);
} catch (Exception eu) {
- log.info("/setNetconfServers Function Error", eu);
-
+ log.error("GetTopology", eu);
+ return new ResponseEntity<>("Failure", HttpStatus.INTERNAL_SERVER_ERROR);
}
}
- private static double degToRadians(double angle) {
- double radians = 57.2957795;
- return (angle / radians);
- }
+ /**
+ * The function retrieves the neighbor list details for the cell with the
+ * mentioned nodeId.
+ *
+ * @param req gets the necessary details as a request of class type
+ * GetNeighborListReq
+ * @return returns Http status
+ * @throws Exception throws exceptions in the functions
+ */
+ @ApiOperation("Retrieves the neighbor list details for the cell with the mentioned nodeId")
+ @RequestMapping(value = "/GetNeighborList", method = RequestMethod.POST)
+ @ApiResponses(value = { @ApiResponse(code = 200, message = "Successful"),
+ @ApiResponse(code = 500, message = "Cannot Insert the given parameters") })
+ public ResponseEntity<String> getNeighborList(@RequestBody GetNeighborListReq req) throws Exception {
+ log.debug("Inside getNeighborList...");
- private static double metersDeglon(double angle) {
+ try {
+ String jsonStr = "";
- double d2r = degToRadians(angle);
- return ((111415.13 * Math.cos(d2r)) - (94.55 * Math.cos(3.0 * d2r)) + (0.12 * Math
- .cos(5.0 * d2r)));
+ GetNeighborList message = rsPciHdlr.generateNeighborList(req.getNodeId());
- }
+ if (message != null) {
- private static double metersDeglat(double angle) {
+ log.info("message.getNodeId(): " + message.getNodeId());
- double d2r = degToRadians(angle);
- return (111132.09 - (566.05 * Math.cos(2.0 * d2r))
- + (1.20 * Math.cos(4.0 * d2r)) - (0.002 * Math.cos(6.0 * d2r)));
+ Gson gson = new Gson();
+ jsonStr = gson.toJson(message);
+ }
+ return new ResponseEntity<>(jsonStr, HttpStatus.OK);
+ } catch (Exception eu) {
+ log.info("/getNeighborList", eu);
+ return new ResponseEntity<>("Failure", HttpStatus.INTERNAL_SERVER_ERROR);
+ }
}
/**
- * generateClusterFromFile()
- *
- * @throws IOException
+ * The function retrieves the neighbor list for the cell with the mentioned
+ * nodeId.
+ *
+ * @param req gets the necessary details as a request of class type
+ * GetNeighborListReq
+ * @return returns Http status
+ * @throws Exception throws exceptions in the functions
*/
- static void generateClusterFromFile() throws IOException {
-
- EntityManagerFactory emfactory = Persistence
- .createEntityManagerFactory("ransimctrlrdb");
- EntityManager entitymanager = emfactory.createEntityManager();
- log.info("Inside generateClusterFromFile");
- File dumpFile = null;
- String cellDetailsString = "";
+ @ApiOperation("Retrieves the neighbor list details for the cell with the mentioned nodeId")
+ @RequestMapping(value = "/GetNeighborBlacklistDetails", method = RequestMethod.POST)
+ @ApiResponses(value = { @ApiResponse(code = 200, message = "Successful"),
+ @ApiResponse(code = 500, message = "Cannot Insert the given parameters") })
+ public ResponseEntity<String> getNeighborBlacklistDetails(@RequestBody GetNeighborListReq req) throws Exception {
+ log.debug("Inside getNeighborList...");
- dumpFile = new File(dumpFileName);
-
- BufferedReader br = null;
try {
- log.info("Reading dump file");
- br = new BufferedReader(new FileReader(dumpFile));
-
- StringBuilder sb = new StringBuilder();
- String line = br.readLine();
- while (line != null) {
- sb.append(line);
- sb.append("\n");
- line = br.readLine();
- }
- cellDetailsString = sb.toString();
-
- TopologyDump dumpTopo = new Gson().fromJson(cellDetailsString,
- TopologyDump.class);
- CellDetails cellsDb = new CellDetails();
-
- log.info("dumpTopo.getCellList().size():"
- + dumpTopo.getCellList().size());
- for (int i = 0; i < dumpTopo.getCellList().size(); i++) {
- Gson g = new Gson();
- String pnt = g.toJson(dumpTopo.getCellList().get(i));
- log.info("Creating Cell:" + pnt);
- log.info("Creating Cell:"
- + dumpTopo.getCellList().get(i).getCell().getNodeId());
-
- cellsDb = new CellDetails();
- entitymanager.getTransaction().begin();
- cellsDb.setNodeId(dumpTopo.getCellList().get(i).getCell()
- .getNodeId());
- cellsDb.setPhysicalCellId(dumpTopo.getCellList().get(i)
- .getCell().getPhysicalCellId());
- cellsDb.setLongitude(dumpTopo.getCellList().get(i).getCell()
- .getLongitude());
- cellsDb.setLatitude(dumpTopo.getCellList().get(i).getCell()
- .getLatitude());
- cellsDb.setServerId(dumpTopo.getCellList().get(i).getCell()
- .getPnfName());
- if (!unassignedServerIds.contains(cellsDb.getServerId())) {
- unassignedServerIds.add(cellsDb.getServerId());
- }
- cellsDb.setNetworkId(dumpTopo.getCellList().get(i).getCell()
- .getNetworkId());
-
- double lon = Float.valueOf(dumpTopo.getCellList().get(i)
- .getCell().getLongitude());
- double lat = Float.valueOf(dumpTopo.getCellList().get(i)
- .getCell().getLatitude());
-
- double xx = (lon - 0) * metersDeglon(0);
- double yy = (lat - 0) * metersDeglat(0);
-
- double rad = Math.sqrt(xx * xx + yy * yy);
+ String jsonStr = "";
- if (rad > 0) {
- double ct = xx / rad;
- double st = yy / rad;
- xx = rad * ((ct * Math.cos(0)) + (st * Math.sin(0)));
- yy = rad * ((st * Math.cos(0)) - (ct * Math.sin(0)));
- }
-
- cellsDb.setScreenX((float) (xx));
- cellsDb.setScreenY((float) (yy));
+ CellNeighbor neighborList = ransimRepo.getCellNeighbor(req.getNodeId());
- List<String> attachedNoeds = serverIdIpNodeMapping.get(cellsDb
- .getServerId());
- log.info("Attaching Cell:"
- + dumpTopo.getCellList().get(i).getCell().getNodeId()
- + " to " + cellsDb.getServerId());
- if (attachedNoeds == null) {
- attachedNoeds = new ArrayList<String>();
- }
- attachedNoeds.add(cellsDb.getNodeId());
- serverIdIpNodeMapping.put(cellsDb.getServerId(), attachedNoeds);
- if (attachedNoeds.size() > numberOfCellsPerNcServer) {
- log.warn("Attaching Cell:"
- + dumpTopo.getCellList().get(i).getCell()
- .getNodeId() + " to "
- + cellsDb.getServerId()
- + ", But it is exceeding numberOfCellsPerNcServer "
- + numberOfCellsPerNcServer);
- }
+ Map<String, String> result = new ConcurrentHashMap<String, String>();
- entitymanager.merge(cellsDb);
- entitymanager.flush();
- entitymanager.getTransaction().commit();
+ for (NeighborDetails nd : neighborList.getNeighborList()) {
- setNetconfServers(cellsDb.getNodeId());
+ result.put(nd.getNeigbor().getNeighborCell(), "" + nd.isBlacklisted());
}
- dumpSessionDetails();
-
- try {
-
- for (int i = 0; i < dumpTopo.getCellList().size(); i++) {
-
- String cellNodeId = dumpTopo.getCellList().get(i).getCell()
- .getNodeId();
- entitymanager.getTransaction().begin();
-
- // neighbor list with the corresponding node id
- CellNeighbor neighborList = entitymanager.find(
- CellNeighbor.class, cellNodeId);
- // cell with the corresponding nodeId
- CellDetails currentCell = entitymanager.find(
- CellDetails.class, cellNodeId);
-
- Set<NeighborDetails> newCell = new HashSet<NeighborDetails>();
-
- if (currentCell != null) {
- if (neighborList == null) {
- neighborList = new CellNeighbor();
- neighborList.setNodeId(cellNodeId);
- }
- List<NbrDump> neighboursFromFile = dumpTopo
- .getCellList().get(i).getNeighbor();
- log.info("Creating Neighbor for Cell :" + cellNodeId);
- for (NbrDump a : neighboursFromFile) {
- String id = a.getNodeId().trim();
- boolean noHo = Boolean.parseBoolean(a
- .getBlacklisted().trim());
- CellDetails neighborCell = entitymanager.find(
- CellDetails.class, id);
- NeighborDetails neighborDetails = new NeighborDetails(
- new NeihborId(currentCell.getNodeId(),
- neighborCell.getNodeId()), noHo);
-
- newCell.add(neighborDetails);
- }
-
- neighborList.setNeighborList(newCell);
- entitymanager.merge(neighborList);
- entitymanager.flush();
-
- entitymanager.getTransaction().commit();
-
- rsPciHdlr.setCollisionConfusionFromFile(cellNodeId);
-
- }
-
- }
-
- } catch (Exception e1) {
- log.info("Exception generateClusterFromFile :", e1);
- if (entitymanager.getTransaction().isActive()) {
- entitymanager.getTransaction().rollback();
- }
+ if (result != null) {
+ Gson gson = new Gson();
+ jsonStr = gson.toJson(result);
}
+ return new ResponseEntity<>(jsonStr, HttpStatus.OK);
- try {
-
- long startTimeSectorNumber = System.currentTimeMillis();
- for (int i = 0; i < dumpTopo.getCellList().size(); i++) {
-
- CellData icellData = dumpTopo.getCellList().get(i);
- CellDetails icell = entitymanager.find(CellDetails.class,
- icellData.getCell().getNodeId());
- int icount = icell.getSectorNumber();
- if (icount == 0) {
- entitymanager.getTransaction().begin();
- log.info("Setting sectorNumber for Cell(i) :"
- + icell.getNodeId());
- int jcount = 0;
- for (int j = (i + 1); j < dumpTopo.getCellList().size(); j++) {
-
- CellData jcellData = dumpTopo.getCellList().get(j);
- if (icellData.getCell().getLatitude()
- .equals(jcellData.getCell().getLatitude())) {
- if (icellData
- .getCell()
- .getLongitude()
- .equals(jcellData.getCell()
- .getLongitude())) {
-
- if (icount == 0) {
- icount++;
- jcount = icount + 1;
- }
-
- CellDetails jcell = entitymanager.find(
- CellDetails.class, dumpTopo
- .getCellList().get(j)
- .getCell().getNodeId());
-
- jcell.setSectorNumber(jcount);
- log.info("Setting sectorNumber for Cell(j) :"
- + jcell.getNodeId()
- + " icell: "
- + icell.getNodeId()
- + " Sector number: " + jcount);
- entitymanager.merge(jcell);
- jcount++;
- if (jcount > 3) {
- break;
- }
- }
- }
- }
- icell.setSectorNumber(icount);
- entitymanager.merge(icell);
- entitymanager.flush();
- entitymanager.getTransaction().commit();
- }
-
- }
-
- long endTimeSectorNumber = System.currentTimeMillis();
- log.info("Time taken for setting sector number: "
- + (endTimeSectorNumber - startTimeSectorNumber));
-
- } catch (Exception e3) {
- log.info("Exception generateClusterFromFile :", e3);
- if (entitymanager.getTransaction().isActive()) {
- entitymanager.getTransaction().rollback();
- }
- }
+ } catch (Exception eu) {
+ log.error("/getNeighborList", eu);
- } catch (Exception e) {
- log.info("Exception generateClusterFromFile :", e);
- if (entitymanager.getTransaction().isActive()) {
- entitymanager.getTransaction().rollback();
- }
- } finally {
- br.close();
- entitymanager.close();
- emfactory.close();
+ return new ResponseEntity<>("Failure", HttpStatus.INTERNAL_SERVER_ERROR);
}
}
/**
- * The function deletes the cell from the database with the nodeId passed in
- * the arguments. It removes the cell from its neighbor's neighbor list and
- * the netconf server list.
+ * Changes the pci number or nbr list for the given cell.
*
- * @param nodeId
- * node Id of the cell to be deleted.
- * @return returns success or failure message
+ * @param req gets the necessary details as a request of class type
+ * ModifyACellReq
+ * @return returns Http status
+ * @throws Exception throws exceptions in the functions
*/
- public static String deleteCellFunction(String nodeId) {
- String result = "failure node dosent exist";
- log.info("deleteCellFunction called with nodeId :" + nodeId);
- RansimControllerDatabase rsDb = new RansimControllerDatabase();
+ @ApiOperation("Changes the pci number or nbr list for the given cell")
+ @RequestMapping(value = "/ModifyACell", method = RequestMethod.POST)
+ @ApiResponses(value = { @ApiResponse(code = 200, message = "Successful"),
+ @ApiResponse(code = 500, message = "Cannot update the PCI for the given cell") })
+ public ResponseEntity<String> modifyACell(@RequestBody ModifyACellReq req) throws Exception {
+ log.debug("Inside ModifyCell...");
try {
- CellDetails deleteCelldetail = rsDb.getCellDetail(nodeId);
-
- CellNeighbor deleteCellNeighbor = rsDb.getCellNeighbor(nodeId);
-
- if (deleteCelldetail != null) {
- if (deleteCellNeighbor != null) {
- List<CellNeighbor> cellNeighborList = rsDb
- .getCellNeighborList();
- for (CellNeighbor cellNeighbors : cellNeighborList) {
- Set<NeighborDetails> currentCellNeighbors = new HashSet<NeighborDetails>(
- cellNeighbors.getNeighborList());
-
- NeihborId deleteNeighborDetail = new NeihborId(
- cellNeighbors.getNodeId(),
- deleteCelldetail.getNodeId());
-
- if (currentCellNeighbors.contains(deleteNeighborDetail)) {
- log.info("Deleted Cell is Neighbor of NodeId : "
- + cellNeighbors.getNodeId());
- currentCellNeighbors.remove(deleteNeighborDetail);
- cellNeighbors.setNeighborList(currentCellNeighbors);
- rsDb.mergeCellNeighbor(cellNeighbors);
- }
- }
+ long startTimemodifyCell = System.currentTimeMillis();
- deleteCellNeighbor.getNeighborList().clear();
- rsDb.deleteCellNeighbor(deleteCellNeighbor);
- }
+ String nbrsStr = req.getNewNbrs();
+ if (req.getNewNbrs() == null) {
+ nbrsStr = "";
+ }
+ String source = "GUI";
+ List<NeighborDetails> nbrsList = new ArrayList<NeighborDetails>();
+ String[] newNbrsArr = nbrsStr.split(",");
- rsDb.deleteCellDetails(deleteCelldetail);
- result = "cell has been deleted from the database";
+ for (int i = 0; i < newNbrsArr.length; i++) {
+ NeighborDetails cell = new NeighborDetails(new NeihborId(req.getNodeId(), newNbrsArr[i].trim()), false);
+ nbrsList.add(cell);
+ }
+
+ int result = rsPciHdlr.modifyCellFunction(req.getNodeId(), req.getNewPhysicalCellId(), nbrsList, source);
+ rscServices.handleModifyPciFromGui(req.getNodeId(), req.getNewPhysicalCellId());
+ long endTimemodifyCell = System.currentTimeMillis();
+ log.info("Time taken to modify cell : " + (endTimemodifyCell - startTimemodifyCell));
+
+ if (result == 200) {
+ return new ResponseEntity<String>(HttpStatus.OK);
+ } else if (result == 400) {
+ return new ResponseEntity<String>(HttpStatus.BAD_REQUEST);
} else {
- log.info("cell id does not exist");
- result = "failure nodeId dosent exist";
- return result;
+ return new ResponseEntity<String>(HttpStatus.INTERNAL_SERVER_ERROR);
}
- } catch (Exception eu) {
- log.info("Exception deleteCellFunction :", eu);
- result = "exception in function";
+ } catch (Exception eu) {
+ log.error("Exception in modifyACell", eu);
+ return new ResponseEntity<>("Cannot update the PCI for the given cell", HttpStatus.INTERNAL_SERVER_ERROR);
}
- return result;
+
}
/**
- * Send configuration details to all the netconf server.
+ * The function changes the PCI number of the cell for the the mentioned nodeId.
+ *
+ * @param req gets the necessary details as a request of class type
+ * GetACellDetailReq
+ * @return returns Http status
+ * @throws Exception throws exceptions in the functions
*/
- public void sendInitialConfigAll() {
- RansimControllerDatabase rsDb = new RansimControllerDatabase();
+ @ApiOperation("Changes the pci number of the cell for the the mentioned nodeId")
+ @PostMapping(value = "/GetACellDetail")
+ @ApiResponses(value = { @ApiResponse(code = 200, message = "Successful"),
+ @ApiResponse(code = 500, message = "Cannot retrive the cell details for the given cell") })
+ public ResponseEntity<String> getACellDetail(@RequestBody GetACellDetailReq req) throws Exception {
+
+ log.debug("Inside GetACellDetailReq...");
try {
- dumpSessionDetails();
- List<NetconfServers> ncServers = rsDb.getNetconfServersList();
- for (NetconfServers netconfServers : ncServers) {
- String ipPortKey = serverIdIpPortMapping.get(netconfServers
- .getServerId());
- if (ipPortKey == null || ipPortKey.trim().equals("")) {
- log.info("No client for " + netconfServers.getServerId());
- for (String ipPortKeyStr : webSocketSessions.keySet()) {
- if (!serverIdIpPortMapping.containsValue(ipPortKeyStr)) {
- serverIdIpPortMapping.put(
- netconfServers.getServerId(), ipPortKeyStr);
- ipPortKey = ipPortKeyStr;
- break;
- }
- }
- }
- if (ipPortKey != null && !ipPortKey.trim().equals("")) {
- Session clSess = webSocketSessions.get(ipPortKey);
- if (clSess != null) {
- sendInitialConfig(netconfServers.getServerId());
- try {
- String[] agentDetails = ipPortKey.split(":");
- new RestClient().sendMountRequestToSdnr(
- netconfServers.getServerId(), sdnrServerIp,
- sdnrServerPort, agentDetails[0],
- agentDetails[1], sdnrServerUserid,
- sdnrServerPassword);
- } catch (Exception ex1) {
- log.info("Ignoring exception", ex1);
- }
-
- } else {
- log.info("No session for " + ipPortKey);
- }
- }
+ String jsonStr = null;
+
+ CellDetails cd = ransimRepo.getCellDetail(req.getNodeId());
+ if (cd != null) {
+ Gson gson = new Gson();
+ jsonStr = gson.toJson(cd);
}
+ return new ResponseEntity<>(jsonStr, HttpStatus.OK);
+
} catch (Exception eu) {
- log.info("Exception:", eu);
+ log.error("Exception in getACellDetail : {} ", eu);
+ return new ResponseEntity<>("Cannot update the PCI for the given cell", HttpStatus.INTERNAL_SERVER_ERROR);
}
}
/**
- * Sends initial configuration details of the cells for a new netconf server
- * that has been started.
+ * The function deletes a cell with the mentioned nodeId.
*
- * @param ipPortKey
- * ip address details of the netconf server
+ * @param req gets the necessary details as a request of class type
+ * DeleteACellReq
+ * @return returns Http status
+ * @throws Exception throws exceptions in the functions
*/
- public void sendInitialConfigForNewAgent(String ipPortKey, String serverId) {
+ @ApiOperation("Deletes a cell with the mentioned nodeId")
+ @RequestMapping(value = "/DeleteACell", method = RequestMethod.POST)
+ @ApiResponses(value = { @ApiResponse(code = 200, message = "Successful"),
+ @ApiResponse(code = 500, message = "Cannot delete the given cell") })
+ public ResponseEntity<String> deleteACell(@RequestBody DeleteACellReq req) throws Exception {
+ log.debug("Inside delete cell...");
+
try {
- dumpSessionDetails();
- if (ipPortKey != null && !ipPortKey.trim().equals("")) {
- if (serverId != null && !serverId.trim().equals("")) {
- Session clSess = webSocketSessions.get(ipPortKey);
- if (clSess != null) {
- String[] agentDetails = ipPortKey.split(":");
- sendInitialConfig(serverId);
- new RestClient().sendMountRequestToSdnr(serverId,
- sdnrServerIp, sdnrServerPort, agentDetails[0],
- agentDetails[1], sdnrServerUserid,
- sdnrServerPassword);
- } else {
- log.info("No session for " + ipPortKey);
- }
- } else {
- log.info("No serverid for " + ipPortKey);
- }
- } else {
- log.info("Invalid ipPortKey " + ipPortKey);
- }
+ long startTimeDeleteCell = System.currentTimeMillis();
+ String result = rscServices.deleteCellFunction(req.getNodeId());
+ long endTimeDeleteCell = System.currentTimeMillis();
+ log.info("Time taken to delete cell : " + (endTimeDeleteCell - startTimeDeleteCell));
+ return new ResponseEntity<String>(HttpStatus.OK);
+
} catch (Exception eu) {
- log.info("Exception:", eu);
+ log.error("Exception in deleteACell", eu);
+ return new ResponseEntity<String>(HttpStatus.INTERNAL_SERVER_ERROR);
}
}
/**
- * To send the initial configration to the netconf server.
+ * The function stops RAN network simulation and deletes all the cell data from
+ * the database.
*
- * @param serverId
- * ip address details of the netconf server
+ * @return returns Http status
+ * @throws Exception throws exceptions in the functions
*/
- public void sendInitialConfig(String serverId) {
+ @ApiOperation("Stops RAN network simulation and deletes all the cell data from the database")
+ @RequestMapping(value = "/StopSimulation", method = RequestMethod.DELETE)
+ @ApiResponses(value = { @ApiResponse(code = 200, message = "Successful"),
+ @ApiResponse(code = 500, message = "Cannot stop simulation") })
+ public ResponseEntity<String> stopSimulation() throws Exception {
+ log.debug("Inside stopSimulation...");
+
+ if (ransimRepo.getCellDetailsList().isEmpty()) {
+ return new ResponseEntity<>("No simulation is running.", HttpStatus.INTERNAL_SERVER_ERROR);
+ }
- RansimControllerDatabase rsDb = new RansimControllerDatabase();
try {
- NetconfServers server = rsDb.getNetconfServer(serverId);
- log.info("sendInitialConfig: serverId:" + serverId + ", server:"
- + server);
- if (server == null) {
- return;
- }
-
- String ipPortKey = serverIdIpPortMapping.get(serverId);
-
- log.info("sendInitialConfig: ipPortKey:" + ipPortKey);
-
- List<CellDetails> cellList = new ArrayList<CellDetails>(
- server.getCells());
-
- List<Topology> config = new ArrayList<Topology>();
-
- for (int i = 0; i < server.getCells().size(); i++) {
- Topology cell = new Topology();
- CellDetails currentCell = rsDb.getCellDetail(cellList.get(i)
- .getNodeId());
- CellNeighbor neighbor = rsDb.getCellNeighbor(cellList.get(i)
- .getNodeId());
-
- cell.setCellId("" + currentCell.getNodeId());
- cell.setPciId(currentCell.getPhysicalCellId());
- cell.setPnfName(serverId);
-
- List<Neighbor> nbrList = new ArrayList<Neighbor>();
- Set<NeighborDetails> nbrsDet = neighbor.getNeighborList();
- for (NeighborDetails cellDetails : nbrsDet) {
- Neighbor nbr = new Neighbor();
- CellDetails nbrCell = rsDb.getCellDetail(cellDetails
- .getNeigbor().getNeighborCell());
- nbr.setNodeId(nbrCell.getNodeId());
- nbr.setPhysicalCellId(nbrCell.getPhysicalCellId());
- nbr.setPnfName(nbrCell.getServerId());
- nbr.setServerId(nbrCell.getServerId());
- nbr.setPlmnId(nbrCell.getNetworkId());
- nbr.setBlacklisted(cellDetails.isBlacklisted());
- nbrList.add(nbr);
- }
- cell.setNeighborList(nbrList);
- config.add(i, cell);
- }
-
- SetConfigTopology topo = new SetConfigTopology();
+ long startTimStopSimulation = System.currentTimeMillis();
+ ransimRepo.deleteNetconfServers();
+ ransimRepo.deleteCellNeighbors();
+ log.info("Stop simulation : " + (startTimStopSimulation));
+ ransimRepo.deleteAllCellDetails();
+ String result = rscServices.stopAllSimulation();
+ log.info("All cell simulation are stopped...." + result);
+ long endTimStopSimulation = System.currentTimeMillis();
+ log.info("Time taken for stopping simulation : " + (endTimStopSimulation - startTimStopSimulation));
+ return new ResponseEntity<>("Success", HttpStatus.OK);
- topo.setServerId(server.getServerId());
- String uuid = globalNcServerUuidMap.get(server.getServerId());
- if (uuid == null) {
- uuid = getUuid();
- globalNcServerUuidMap.put(server.getServerId(), uuid);
- }
- topo.setUuid(uuid);
+ } catch (Exception eu) {
+ log.error("Exception in stopSimulation", eu);
+ return new ResponseEntity<>("Failure", HttpStatus.INTERNAL_SERVER_ERROR);
+ }
- topo.setTopology(config);
+ }
+
+ @ApiOperation("Stops RAN Slicing network simulation and deletes all the data from the database")
+ @RequestMapping(value = "/StopRanSliceSimulation", method = RequestMethod.DELETE)
+ @ApiResponses(value = { @ApiResponse(code = 200, message = "Successful"),
+ @ApiResponse(code = 500, message = "Cannot stop simulation") })
+ public ResponseEntity<String> stopRanSliceSimulation() throws Exception {
+ log.debug("Inside stopSimulation...");
+ if (ransimRepo.getCellDetailsList().isEmpty()) {
+ return new ResponseEntity<>("No simulation is running.", HttpStatus.INTERNAL_SERVER_ERROR);
+ }
- Gson gson = new Gson();
- String jsonStr = gson.toJson(topo);
- log.info("ConfigTopologyMessage: " + jsonStr);
- Session clSess = webSocketSessions.get(ipPortKey);
- RansimWebSocketServer.sendSetConfigTopologyMessage(jsonStr, clSess);
+ try {
+ long startTimStopSimulation = System.currentTimeMillis();
+ ransimRepo.deleteNetconfServers();
+ log.info("Stop simulation : " + (startTimStopSimulation));
+ String result = rscServices.stopAllSimulation();
+ log.info("All cell simulation are stopped...." + result);
+ long endTimStopSimulation = System.currentTimeMillis();
+ log.info("Time taken for stopping simulation : " + (endTimStopSimulation - startTimStopSimulation));
+ return new ResponseEntity<>("Simulation stopped", HttpStatus.OK);
} catch (Exception eu) {
- log.info("Exception:", eu);
+ log.error("Exception in stopRanSliceSimulation", eu);
+ return new ResponseEntity<>("Failure", HttpStatus.INTERNAL_SERVER_ERROR);
}
}
- private static String getUuid() {
- return UUID.randomUUID().toString();
- }
-
/**
- * The function alters the database information based on the modifications
- * made in the SDNR.
+ * The function returns the details of a Netconf server for the mentioned server
+ * id.
*
- * @param message
- * message received from the SDNR
- * @param session
- * sends the session details
- * @param ipPort
- * ip address of the netconf server
+ * @param req gets the necessary details as a request of class type
+ * GetNetconfServerDetailsReq
+ * @return returns Http status
+ * @throws Exception throws exceptions in the functions
*/
- public void handleModifyPciFromSdnr(String message, Session session,
- String ipPort) {
- log.info("handleModifyPciFromSDNR: message:" + message + " session:"
- + session + " ipPort:" + ipPort);
- RansimControllerDatabase rcDb = new RansimControllerDatabase();
- ModifyPci modifyPci = new Gson().fromJson(message, ModifyPci.class);
- log.info("handleModifyPciFromSDNR: modifyPci:" + modifyPci.getCellId()
- + "; pci: " + modifyPci.getPciId());
- String source = "Netconf";
-
- CellDetails cd = rcDb.getCellDetail(modifyPci.getCellId());
- long pci = cd.getPhysicalCellId();
- cd.setPhysicalCellId(modifyPci.getPciId());
- rcDb.mergeCellDetails(cd);
- rsPciHdlr.updatePciOperationsTable(modifyPci.getCellId(), source, pci,
- modifyPci.getPciId());
- }
+ @ApiOperation("Returns the details of a Netconf server for the mentioned server id")
+ @RequestMapping(value = "/GetNetconfServerDetails", method = RequestMethod.POST)
+ @ApiResponses(value = { @ApiResponse(code = 200, message = "Successful"),
+ @ApiResponse(code = 500, message = "Failure in GetNetconfServerDetails API") })
+ public ResponseEntity<String> getNetconfServerDetails(@RequestBody GetNetconfServerDetailsReq req)
+ throws Exception {
- /**
- * The function alters the database information based on the modifications
- * made in the SDNR.
- *
- * @param message
- * message received from the SDNR
- * @param session
- * sends the session details
- * @param ipPort
- * ip address of the netconf server
- */
- public void handleModifyNeighborFromSdnr(String message, Session session,
- String ipPort) {
- log.info("handleModifyAnrFromSDNR: message:" + message + " session:"
- + session + " ipPort:" + ipPort);
- RansimControllerDatabase rsDb = new RansimControllerDatabase();
- ModifyNeighbor modifyNeighbor = new Gson().fromJson(message,
- ModifyNeighbor.class);
- log.info("handleModifyAnrFromSDNR: modifyPci:"
- + modifyNeighbor.getCellId());
- CellDetails currentCell = rsDb
- .getCellDetail(modifyNeighbor.getCellId());
- List<NeighborDetails> neighborList = new ArrayList<NeighborDetails>();
- List<String> cellList = new ArrayList<String>();
- cellList.add(modifyNeighbor.getCellId());
- String nbrsAdd = "";
- String nbrsDel = "";
- String source = "Netconf";
-
- for (int i = 0; i < modifyNeighbor.getNeighborList().size(); i++) {
- if (modifyNeighbor.getNeighborList().get(i).isBlacklisted()) {
- NeighborDetails nd = new NeighborDetails(new NeihborId(
- modifyNeighbor.getCellId(), modifyNeighbor
- .getNeighborList().get(i).getNodeId()), true);
- rsDb.mergeNeighborDetails(nd);
- cellList.add(modifyNeighbor.getNeighborList().get(i)
- .getNodeId());
- if (nbrsAdd.equals("")) {
- nbrsDel = modifyNeighbor.getNeighborList().get(i)
- .getNodeId();
+ try {
+ log.debug("Inside GetNetconfServerDetails API...");
+ String result = "";
+ String input = req.getServerId();
+ if (input.startsWith("Chn")) {
+ CellDetails cds = ransimRepo.getCellDetail(input);
+ if (cds != null) {
+ Gson gson = new Gson();
+ String jsonStr = gson.toJson(cds);
+ result = "{\"serverId\":\"any\",\"cells\":[" + jsonStr + "]}";
} else {
- nbrsDel += ","
- + modifyNeighbor.getNeighborList().get(i)
- .getNodeId();
+ result = ("Cell Id does not exist");
}
} else {
- NeighborDetails nd = new NeighborDetails(new NeihborId(
- modifyNeighbor.getCellId(), modifyNeighbor
- .getNeighborList().get(i).getNodeId()), false);
- rsDb.mergeNeighborDetails(nd);
- cellList.add(modifyNeighbor.getNeighborList().get(i)
- .getNodeId());
- if (nbrsDel.equals("")) {
- nbrsAdd = modifyNeighbor.getNeighborList().get(i)
- .getNodeId();
+ NetconfServers ns = ransimRepo.getNetconfServer(input);
+ if (ns != null) {
+ Gson gson = new Gson();
+ String jsonStr = gson.toJson(ns);
+ result = jsonStr;
} else {
- nbrsAdd += ","
- + modifyNeighbor.getNeighborList().get(i)
- .getNodeId();
+ result = ("Server Id does not exist");
}
}
+ return new ResponseEntity<>(result, HttpStatus.OK);
+ } catch (Exception eu) {
+ log.error("/GetNetconfServers", eu);
+ return new ResponseEntity<>("Failure in GetNetconfServerDetails API", HttpStatus.INTERNAL_SERVER_ERROR);
}
-
- for (String cl : cellList) {
- RansimPciHandler.setCollisionConfusionFromFile(cl);
- }
-
- log.info("neighbor list: " + neighborList);
-
- rsPciHdlr.updateNbrsOperationsTable(modifyNeighbor.getCellId(), source,
- nbrsAdd, nbrsDel);
}
- /**
- * The function sends the modification made in the GUI to the netconf
- * server.
- *
- * @param cellId
- * node Id of the cell which was modified
- * @param pciId
- * PCI number of the cell which was modified
- */
- public void handleModifyPciFromGui(String cellId, long pciId) {
- log.info("handleModifyPciFromGUI: cellId:" + cellId + " pciId:" + pciId);
- RansimControllerDatabase rsDb = new RansimControllerDatabase();
+ @ApiOperation("Returns the connection status of all netconf servers")
+ @RequestMapping(value = "/GetNetconfStatus", method = RequestMethod.GET)
+ @ApiResponses(value = { @ApiResponse(code = 200, message = "Successful"),
+ @ApiResponse(code = 500, message = "Failure in GetNetconfServerDetails API") })
+ public ResponseEntity<String> GetNetconfStatus() throws Exception {
try {
- CellDetails currentCell = rsDb.getCellDetail(cellId);
- CellNeighbor neighborList = rsDb.getCellNeighbor(cellId);
- List<Neighbor> nbrList = new ArrayList<Neighbor>();
- Iterator<NeighborDetails> iter = neighborList.getNeighborList()
- .iterator();
- while (iter.hasNext()) {
- NeighborDetails nbCell = iter.next();
- Neighbor nbr = new Neighbor();
- CellDetails nbrCell = rsDb.getCellDetail(nbCell.getNeigbor()
- .getNeighborCell());
-
- nbr.setNodeId(nbrCell.getNodeId());
- nbr.setPhysicalCellId(nbrCell.getPhysicalCellId());
- nbr.setPnfName(nbrCell.getNodeName());
- nbr.setServerId(nbrCell.getServerId());
- nbr.setPlmnId(nbrCell.getNetworkId());
- nbrList.add(nbr);
+ log.debug("Inside GetNetconfServerDetails API...");
+ String result = "";
+
+ List<NetconfServers> ns = ransimRepo.getNetconfServersList();
+ if (ns != null) {
+ GsonBuilder gsonBuilder = new GsonBuilder();
+ gsonBuilder.serializeNulls();
+ Gson gson = gsonBuilder.create();
+ String jsonStr = gson.toJson(ns);
+ result = jsonStr;
+ } else {
+ result = ("Server Id does not exist");
}
- String pnfName = currentCell.getServerId();
- String ipPort = serverIdIpPortMapping.get(pnfName);
- log.info("handleModifyPciFromGui:ipPort >>>>>>> " + ipPort);
-
- if (ipPort != null && !ipPort.trim().equals("")) {
-
- String[] ipPortArr = ipPort.split(":");
- Topology oneCell = new Topology(pnfName, pciId, cellId, nbrList);
- UpdateCell updatedPci = new UpdateCell(
- currentCell.getServerId(), ipPortArr[0], ipPortArr[1],
- oneCell);
- Gson gson = new Gson();
- String jsonStr = gson.toJson(updatedPci);
- if (ipPort != null && !ipPort.trim().equals("")) {
- Session clSess = webSocketSessions.get(ipPort);
- if (clSess != null) {
- RansimWebSocketServer.sendUpdateCellMessage(jsonStr,
- clSess);
- log.info("handleModifyPciFromGui, message: " + jsonStr);
- } else {
- log.info("No client session for " + ipPort);
- }
- } else {
- log.info("No client for " + currentCell.getServerId());
- }
- }
+ return new ResponseEntity<>(result, HttpStatus.OK);
} catch (Exception eu) {
-
- log.info("Exception:", eu);
+ log.error("/GetNetconfServers", eu);
+ return new ResponseEntity<>("Failure in GetNetconfServerDetails API", HttpStatus.INTERNAL_SERVER_ERROR);
}
}
/**
- * The function unmounts the connection with SDNR.
+ * The function retrieves RAN simulation network topology.
+ *
+ * @return returns Http status
+ * @throws Exception throws exceptions in the functions
*
- * @return returns null value
*/
- public String stopAllCells() {
- RansimControllerDatabase rcDb = new RansimControllerDatabase();
+ @ApiOperation("Retrieves operations log - Modify/Delete operations performed")
+ @GetMapping(value = "/GetOperationLog")
+ @ApiResponses(value = { @ApiResponse(code = 200, message = "Successful"),
+ @ApiResponse(code = 500, message = "Cannot retrieve the Operation Logs") })
+ public ResponseEntity<String> getOperationLog() throws Exception {
+ log.debug("Inside getOperationLog...");
try {
- List<NetconfServers> ncServers = rcDb.getNetconfServersList();
- for (NetconfServers netconfServers : ncServers) {
- try {
- log.info("Unmount " + netconfServers.getServerId());
- new RestClient().sendUnmountRequestToSdnr(
- netconfServers.getServerId(), sdnrServerIp,
- sdnrServerPort, sdnrServerUserid,
- sdnrServerPassword);
- } catch (Exception e) {
- log.info("Ignore Exception:", e);
- }
- serverIdIpNodeMapping.clear();
+ List<OperationLog> ols = ransimRepo.getOperationLogList();
+ if (ols != null && ols.size() > 0) {
+ Gson gson = new Gson();
+ String jsonStr = gson.toJson(ols);
+ return new ResponseEntity<>(jsonStr, HttpStatus.OK);
+ } else {
+ return new ResponseEntity<>("", HttpStatus.OK);
}
- return "Netconf servers unmounted.";
} catch (Exception eu) {
-
- log.info("Exception:", eu);
- return "Error";
- }
-
- }
-
- /**
- * Used to dump session details.
- */
- synchronized public static void dumpSessionDetails() {
-
- try {
-
- log.info("serverIdIpPortMapping.size:"
- + serverIdIpPortMapping.size() + "webSocketSessions.size"
- + webSocketSessions.size());
- for (String key : serverIdIpPortMapping.keySet()) {
- String val = serverIdIpPortMapping.get(key);
- Session sess = webSocketSessions.get(val);
- log.info("ServerId:" + key + " IpPort:" + val + " Session:"
- + sess);
- }
- for (String serverId : unassignedServerIds) {
- log.info("Unassigned ServerId:" + serverId);
- }
- for (String serverId : serverIdIpPortMapping.keySet()) {
- List<String> attachedNoeds = serverIdIpNodeMapping
- .get(serverId);
- if (attachedNoeds != null) {
- log.info("ServerId:" + serverId + " attachedNoeds.size:"
- + attachedNoeds.size() + " nodes:"
- + attachedNoeds.toArray());
- } else {
- log.info("ServerId:" + serverId + " attachedNoeds:" + null);
- }
- }
- } catch (Exception e) {
- log.info("Exception:", e);
+ log.error("/GetOperationLog", eu);
+ return new ResponseEntity<>("Failure", HttpStatus.INTERNAL_SERVER_ERROR);
}
}
-}
-
-class KeepWebsockAliveThread extends Thread {
- static Logger log = Logger
- .getLogger(KeepWebsockAliveThread.class.getName());
- RansimController rsCtrlr = null;
- KeepWebsockAliveThread(RansimController ctrlr) {
- rsCtrlr = ctrlr;
- }
-
- @Override
- public void run() {
- log.info("Inside KeepWebsockAliveThread run method");
- while (true) {
- for (String ipPort : rsCtrlr.webSocketSessions.keySet()) {
- try {
- Session sess = rsCtrlr.webSocketSessions.get(ipPort);
- RansimWebSocketServer.sendPingMessage(sess);
- log.debug("Sent ping message to Client ipPort:" + ipPort);
- } catch (Exception ex1) {
- }
- }
- try {
- Thread.sleep(10000);
- } catch (Exception ex) {
- }
- }
- }
+ @ApiOperation("Generate IntelligentSlicing PM data")
+ @RequestMapping(value = "/GenerateIntelligentSlicingPmData", method = RequestMethod.POST)
+ @ApiResponses(value = { @ApiResponse(code = 200, message = "Successful"),
+ @ApiResponse(code = 500, message = "Cannot t the simulation") })
+ public ResponseEntity<String> generateIntelligentSlicingPmData(){
+ log.info("******************Request to generate***************************");
+
+ try {
+ long startTime = (System.currentTimeMillis());
+ Iterable<TACells> tacellList = ranSliceConfigService.fetchAllTA();
+ HashMap<String,List<String>> taCells = new HashMap<>();
+ for(TACells ta : tacellList)
+ {
+ String[] cells = ta.getCellsList().split(",");
+ List<String> cellList = new ArrayList<String>(Arrays.asList(cells));
+ taCells.put(ta.getTrackingArea(),cellList);
+ }
+ execServiceForIntelligentSlicing = Executors.newScheduledThreadPool(5);
+ execServiceForIntelligentSlicing.scheduleAtFixedRate(
+ () -> {
+
+ ranSliceHandler.generateIntelligentSlicingPmData(startTime,taCells);
+ log.info("execServiceforIntelligentSlicing.isTerminated(): " + execServiceForIntelligentSlicing.isTerminated());
+
+ }, 0, 10, TimeUnit.SECONDS);
+
+ isIntelligentSlicingPmDataGenerating = true;
+
+
+
+ } catch (Exception eu) {
+ log.info("Exception: ", eu);
+ return new ResponseEntity<String>(HttpStatus.INTERNAL_SERVER_ERROR);
+
+ }
+ return new ResponseEntity<>("IntelligentSlicing PM data generated.", HttpStatus.OK);
+ }
+
+ @ApiOperation("Stop IntelligentSlicing PM data")
+ @RequestMapping(value = "/stopIntelligentSlicingPmData", method = RequestMethod.POST)
+ @ApiResponses(value = { @ApiResponse(code = 200, message = "Successful"),
+ @ApiResponse(code = 500, message = "Cannot start the simulation") })
+ public ResponseEntity<String> stopIntelligentSlicingPmData() throws Exception {
+
+ try {
+ log.info("1. execServiceForIntelligentSlicing.isTerminated(): " + execServiceForIntelligentSlicing.isTerminated());
+ if (!execServiceForIntelligentSlicing.isTerminated()) {
+ execServiceForIntelligentSlicing.shutdown();
+ log.info("2. execServiceForIntelligentSlicing.isTerminated(): " + execServiceForIntelligentSlicing.isTerminated());
+
+ }
+ isIntelligentSlicingPmDataGenerating = false;
+ return new ResponseEntity<>("Stopped PM data generation.", HttpStatus.OK);
+
+ } catch (Exception eu) {
+ return new ResponseEntity<String>(HttpStatus.INTERNAL_SERVER_ERROR);
+ }
+
+ }
+
+
+ /*
+ *Generate closed loopPM data for DUs
+ *
+ */
+ @ApiOperation("Generate Closed loop PM data")
+ @RequestMapping(value = "/generateClosedLoopPmData", method = RequestMethod.POST)
+ @ApiResponses(value = { @ApiResponse(code = 200, message = "Successful"),
+ @ApiResponse(code = 500, message = "Problem generating closed loop PM data") })
+ public ResponseEntity<String> generateClosedLoopPmData() {
+ long startTime = (System.currentTimeMillis());
+ log.info("Closed loop PM Data generation started at " + startTime);
+ closedLoopExecService = Executors.newScheduledThreadPool(5);
+ closedLoopExecService.scheduleAtFixedRate(() -> {
+ pmDataGenerator.generateClosedLoopPmData(startTime);
+ log.info("closedLoopexecService.isTerminated(): " + execServiceForIntelligentSlicing.isTerminated());
+
+ }, 0, 10, TimeUnit.SECONDS);
+
+ return new ResponseEntity<>("Generating Closed loop PM data.", HttpStatus.OK);
+ }
+
+ @ApiOperation("Stop Closed loop PM data")
+ @RequestMapping(value = "/stopClosedLoopPmData", method = RequestMethod.GET)
+ @ApiResponses(value = { @ApiResponse(code = 200, message = "Successful"),
+ @ApiResponse(code = 500, message = "Cannot start the simulation") })
+ public ResponseEntity<String> stopClosedLoopPmData() throws Exception {
+
+ try {
+ log.info("1. closedLoopexecService.isTerminated(): " + closedLoopExecService.isTerminated());
+ if (!closedLoopExecService.isTerminated()) {
+ closedLoopExecService.shutdown();
+ log.info("2. closedLoopexecService.isTerminated(): " + closedLoopExecService.isTerminated());
+
+ }
+ return new ResponseEntity<>("Closed loop PM data generated.", HttpStatus.OK);
+
+ } catch (Exception eu) {
+ return new ResponseEntity<String>(HttpStatus.INTERNAL_SERVER_ERROR);
+ }
+
+ }
}
diff --git a/ransim/ransimctrlr/RANSIM-CTRLR/src/main/java/org/onap/ransim/rest/api/controller/RansimControllerDatabase.java b/ransim/ransimctrlr/RANSIM-CTRLR/src/main/java/org/onap/ransim/rest/api/controller/RansimControllerDatabase.java
deleted file mode 100644
index 0d7ea3a..0000000
--- a/ransim/ransimctrlr/RANSIM-CTRLR/src/main/java/org/onap/ransim/rest/api/controller/RansimControllerDatabase.java
+++ /dev/null
@@ -1,409 +0,0 @@
-/*-
- * ============LICENSE_START=======================================================
- * Ran Simulator Controller
- * ================================================================================
- * Copyright (C) 2020 Wipro Limited.
- * ================================================================================
- * Licensed 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
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License 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.onap.ransim.rest.api.controller;
-
-import java.util.ArrayList;
-import java.util.List;
-
-import javax.persistence.EntityManager;
-import javax.persistence.EntityManagerFactory;
-import javax.persistence.Persistence;
-import javax.persistence.Query;
-import javax.persistence.TypedQuery;
-
-import org.apache.log4j.Logger;
-import org.onap.ransim.rest.api.models.CellDetails;
-import org.onap.ransim.rest.api.models.CellNeighbor;
-import org.onap.ransim.rest.api.models.NeighborDetails;
-import org.onap.ransim.rest.api.models.NetconfServers;
-import org.onap.ransim.rest.api.models.OperationLog;
-
-public class RansimControllerDatabase {
-
- static Logger log = Logger.getLogger(RansimControllerDatabase.class
- .getName());
-
- /**
- * Gets the CellDetail from the database.
- *
- * @param nodeId Node Id of the cell(primary key)
- * @return Returns the cell with mentioned node ID.
- */
- CellDetails getCellDetail(String nodeId){
- EntityManagerFactory emfactory = Persistence
- .createEntityManagerFactory("ransimctrlrdb");
- EntityManager entitymanager = emfactory.createEntityManager();
- CellDetails currentCell = null;
-
- try{
- currentCell = entitymanager.find(CellDetails.class, nodeId);
- }catch(Exception e){
- log.info("Exception in getCellDetail: " + e);
- if (entitymanager.getTransaction().isActive()) {
- entitymanager.getTransaction().rollback();
- }
- }
- finally {
- entitymanager.close();
- emfactory.close();
- }
-
- return currentCell;
-
- }
-
- /**
- *
- * @param serverId
- * @return
- */
- static NetconfServers getNetconfServer(String serverId){
- EntityManagerFactory emfactory = Persistence
- .createEntityManagerFactory("ransimctrlrdb");
- EntityManager entitymanager = emfactory.createEntityManager();
- NetconfServers ns = null;
-
- try{
- ns = entitymanager.find(NetconfServers.class, serverId);
- }catch(Exception e){
- log.info("Exception in getCellDetail: " + e);
- if (entitymanager.getTransaction().isActive()) {
- entitymanager.getTransaction().rollback();
- }
- }
- finally {
- entitymanager.close();
- emfactory.close();
- }
-
- return ns;
-
- }
- CellNeighbor getCellNeighbor(String nodeId){
- EntityManagerFactory emfactory = Persistence
- .createEntityManagerFactory("ransimctrlrdb");
- EntityManager entitymanager = emfactory.createEntityManager();
- CellNeighbor ns = null;
-
- try{
- ns = entitymanager.find(CellNeighbor.class, nodeId);
- }catch(Exception e){
- log.info("Exception in getCellDetail: " + e);
- if (entitymanager.getTransaction().isActive()) {
- entitymanager.getTransaction().rollback();
- }
- }
- finally {
- entitymanager.close();
- emfactory.close();
- }
-
- return ns;
-
- }
-
- void deleteCellDetails(CellDetails deleteCelldetail){
- EntityManagerFactory emfactory = Persistence
- .createEntityManagerFactory("ransimctrlrdb");
- EntityManager entitymanager = emfactory.createEntityManager();
-
-
-
- try{
- if (deleteCelldetail.getServerId() != null) {
- entitymanager.getTransaction().begin();
- log.info("inside NetconfServers handling ....");
- NetconfServers ns = entitymanager.find(NetconfServers.class, deleteCelldetail.getServerId());
- ns.getCells().remove(deleteCelldetail);
- entitymanager.merge(ns);
- entitymanager.flush();
- entitymanager.getTransaction().commit();
-
- }
- entitymanager.getTransaction().begin();
- CellDetails cd = entitymanager.find(CellDetails.class, deleteCelldetail.getNodeId());
- entitymanager.remove(cd);
- entitymanager.flush();
- entitymanager.getTransaction().commit();
-
- }catch(Exception e){
- log.info("Exception in getCellDetail: " + e);
- if (entitymanager.getTransaction().isActive()) {
- entitymanager.getTransaction().rollback();
- }
- }
- finally {
- entitymanager.close();
- emfactory.close();
- }
- }
-
- void deleteCellNeighbor(CellNeighbor deleteCellNeighbor){
- EntityManagerFactory emfactory = Persistence
- .createEntityManagerFactory("ransimctrlrdb");
- EntityManager entitymanager = emfactory.createEntityManager();
-
- entitymanager.getTransaction().begin();
-
- try{
- log.info("inside delete cel neighbor");
- CellNeighbor cn = entitymanager.find(CellNeighbor.class, deleteCellNeighbor.getNodeId());
- entitymanager.remove(cn);
- entitymanager.flush();
- entitymanager.getTransaction().commit();
- log.info("removed cell neighbor from database");
-
- }catch(Exception e){
- log.info("Exception in deleteCellNeighbor: " + e);
- if (entitymanager.getTransaction().isActive()) {
- entitymanager.getTransaction().rollback();
- }
- }
- finally {
- entitymanager.close();
- emfactory.close();
- }
- }
-
- static void mergeCellDetails(CellDetails cellDetail){
- EntityManagerFactory emfactory = Persistence.createEntityManagerFactory("ransimctrlrdb");
- EntityManager entitymanager = emfactory.createEntityManager();
- try{
- entitymanager.getTransaction().begin();
- entitymanager.merge(cellDetail);
- log.info("updated in database....");
- entitymanager.flush();
- entitymanager.getTransaction().commit();
- }catch (Exception eu) {
- if (entitymanager.getTransaction().isActive()) {
- entitymanager.getTransaction().rollback();
- }
- log.info("Exception:", eu);
- } finally {
- entitymanager.close();
- emfactory.close();
- }
- }
-
- void mergeNeighborDetails(NeighborDetails neighborDetails){
- EntityManagerFactory emfactory = Persistence.createEntityManagerFactory("ransimctrlrdb");
- EntityManager entitymanager = emfactory.createEntityManager();
- try{
- entitymanager.getTransaction().begin();
- entitymanager.merge(neighborDetails);
- log.info("updated in database....");
- entitymanager.flush();
- entitymanager.getTransaction().commit();
- } catch (Exception eu) {
- if (entitymanager.getTransaction().isActive()) {
- entitymanager.getTransaction().rollback();
- }
- log.info("Exception:", eu);
- } finally {
- entitymanager.close();
- emfactory.close();
- }
- }
-
- void mergeNetconfServers(NetconfServers netconfServers){
- EntityManagerFactory emfactory = Persistence.createEntityManagerFactory("ransimctrlrdb");
- EntityManager entitymanager = emfactory.createEntityManager();
- try{
- entitymanager.getTransaction().begin();
- entitymanager.merge(netconfServers);
- log.info("updated in database....");
- entitymanager.flush();
- entitymanager.getTransaction().commit();
- } catch (Exception eu) {
- if (entitymanager.getTransaction().isActive()) {
- entitymanager.getTransaction().rollback();
- }
- log.info("Exception:", eu);
- } finally {
- entitymanager.close();
- emfactory.close();
- }
- }
-
- void mergeCellNeighbor(CellNeighbor cellNeighbor){
- EntityManagerFactory emfactory = Persistence.createEntityManagerFactory("ransimctrlrdb");
- EntityManager entitymanager = emfactory.createEntityManager();
- try{
- entitymanager.getTransaction().begin();
- log.info("updated in database....");
- entitymanager.merge(cellNeighbor);
- entitymanager.flush();
- entitymanager.getTransaction().commit();
- } catch (Exception eu) {
- if (entitymanager.getTransaction().isActive()) {
- entitymanager.getTransaction().rollback();
- }
- log.info("Exception:", eu);
- } finally {
- entitymanager.close();
- emfactory.close();
- }
- }
-
- List<CellDetails> getCellDetailsList(){
- EntityManagerFactory emfactory = Persistence.createEntityManagerFactory("ransimctrlrdb");
- EntityManager entitymanager = emfactory.createEntityManager();
- List<CellDetails> cds = new ArrayList<CellDetails>();
- try{
- entitymanager.getTransaction().begin();
- log.info("updated in database....");
- Query query = entitymanager.createQuery("from CellDetails cd", CellDetails.class);
- cds = query.getResultList();
- entitymanager.flush();
- entitymanager.getTransaction().commit();
- } catch (Exception eu) {
- if (entitymanager.getTransaction().isActive()) {
- entitymanager.getTransaction().rollback();
- }
- log.info("Exception:", eu);
- } finally {
- entitymanager.close();
- emfactory.close();
- }
-
- return cds;
- }
-
- List<CellDetails> getCellsWithNoServerIds(){
- EntityManagerFactory emfactory = Persistence.createEntityManagerFactory("ransimctrlrdb");
- EntityManager entitymanager = emfactory.createEntityManager();
- List<CellDetails> cds = new ArrayList<CellDetails>();
- try{
- entitymanager.getTransaction().begin();
- log.info("getCellswithNoServerIds: updated in database....");
- TypedQuery<CellDetails> query = entitymanager.createQuery(
- "SELECT n FROM CellDetails WHERE n.serverId is null", CellDetails.class);
- cds = query.getResultList();
- entitymanager.flush();
- entitymanager.getTransaction().commit();
- } catch (Exception eu) {
- if (entitymanager.getTransaction().isActive()) {
- entitymanager.getTransaction().rollback();
- }
- log.info("Exception:", eu);
- } finally {
- entitymanager.close();
- emfactory.close();
- }
-
- return cds;
- }
-
- List<CellDetails> getCellsWithCollisionOrConfusion(){
- EntityManagerFactory emfactory = Persistence.createEntityManagerFactory("ransimctrlrdb");
- EntityManager entitymanager = emfactory.createEntityManager();
- List<CellDetails> cds = new ArrayList<CellDetails>();
- try{
- entitymanager.getTransaction().begin();
- log.info("getCellsWithCollisionOrConfusion: updated in database....");
- Query query = entitymanager
- .createQuery(
- "from CellDetails cd where cd.pciCollisionDetected=true or cd.pciConfusionDetected=true",
- CellDetails.class);
- cds = query.getResultList();
- entitymanager.flush();
- entitymanager.getTransaction().commit();
- } catch (Exception eu) {
- if (entitymanager.getTransaction().isActive()) {
- entitymanager.getTransaction().rollback();
- }
- log.info("Exception:", eu);
- } finally {
- entitymanager.close();
- emfactory.close();
- }
-
- return cds;
- }
-
- List<OperationLog> getOperationLogList(){
- EntityManagerFactory emfactory = Persistence.createEntityManagerFactory("ransimctrlrdb");
- EntityManager entitymanager = emfactory.createEntityManager();
- List<OperationLog> ols = new ArrayList<OperationLog>();
- try{
- entitymanager.getTransaction().begin();
- log.info("updated in database....");
- Query query = entitymanager.createQuery("from OperationLog ol", OperationLog.class);
- ols = query.getResultList();
- entitymanager.flush();
- entitymanager.getTransaction().commit();
- } catch (Exception eu) {
- if (entitymanager.getTransaction().isActive()) {
- entitymanager.getTransaction().rollback();
- }
- log.info("Exception:", eu);
- } finally {
- entitymanager.close();
- emfactory.close();
- }
-
- return ols;
- }
-
- List<NetconfServers> getNetconfServersList(){
- EntityManagerFactory emfactory = Persistence.createEntityManagerFactory("ransimctrlrdb");
- EntityManager entitymanager = emfactory.createEntityManager();
- List<NetconfServers> cnl = new ArrayList<NetconfServers>();
- try{
- log.info("updated in database....");
- Query query = entitymanager.createQuery("from NetconfServers ns", NetconfServers.class);
- cnl = query.getResultList();
- } catch (Exception eu) {
- if (entitymanager.getTransaction().isActive()) {
- entitymanager.getTransaction().rollback();
- }
- log.info("Exception:", eu);
- } finally {
- entitymanager.close();
- emfactory.close();
- }
-
- return cnl;
- }
-
- List<CellNeighbor> getCellNeighborList() {
- EntityManagerFactory emfactory = Persistence.createEntityManagerFactory("ransimctrlrdb");
- EntityManager entitymanager = emfactory.createEntityManager();
- List<CellNeighbor> cellNeighborList = new ArrayList<CellNeighbor>();
- try {
- entitymanager.getTransaction().begin();
- TypedQuery<CellNeighbor> query = entitymanager.createQuery("from CellNeighbor cn", CellNeighbor.class);
- cellNeighborList = query.getResultList();
- entitymanager.flush();
- entitymanager.getTransaction().commit();
- } catch (Exception eu) {
- if (entitymanager.getTransaction().isActive()) {
- entitymanager.getTransaction().rollback();
- }
- log.info("Exception:", eu);
- } finally {
- entitymanager.close();
- emfactory.close();
- }
- return cellNeighborList;
- }
-
-}
diff --git a/ransim/ransimctrlr/RANSIM-CTRLR/src/main/java/org/onap/ransim/rest/api/controller/RansimControllerServices.java b/ransim/ransimctrlr/RANSIM-CTRLR/src/main/java/org/onap/ransim/rest/api/controller/RansimControllerServices.java
deleted file mode 100644
index 9fc130c..0000000
--- a/ransim/ransimctrlr/RANSIM-CTRLR/src/main/java/org/onap/ransim/rest/api/controller/RansimControllerServices.java
+++ /dev/null
@@ -1,730 +0,0 @@
-/*-
- * ============LICENSE_START=======================================================
- * Ran Simulator Controller
- * ================================================================================
- * Copyright (C) 2020 Wipro Limited.
- * ================================================================================
- * Licensed 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
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License 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.onap.ransim.rest.api.controller;
-
-import java.util.ArrayList;
-import java.util.List;
-import java.util.Map;
-import java.util.concurrent.ConcurrentHashMap;
-import java.util.concurrent.Executors;
-import java.util.concurrent.ScheduledExecutorService;
-import java.util.concurrent.TimeUnit;
-
-import javax.persistence.EntityManager;
-import javax.persistence.EntityManagerFactory;
-import javax.persistence.Persistence;
-import javax.persistence.Query;
-
-import org.apache.log4j.Logger;
-import org.onap.ransim.rest.api.models.CellDetails;
-import org.onap.ransim.rest.api.models.CellNeighbor;
-import org.onap.ransim.rest.api.models.DeleteACellReq;
-import org.onap.ransim.rest.api.models.GetACellDetailReq;
-import org.onap.ransim.rest.api.models.GetNeighborList;
-import org.onap.ransim.rest.api.models.GetNeighborListReq;
-import org.onap.ransim.rest.api.models.GetNetconfServerDetailsReq;
-import org.onap.ransim.rest.api.models.GetPmDataReq;
-import org.onap.ransim.rest.api.models.ModifyACellReq;
-import org.onap.ransim.rest.api.models.NeighborDetails;
-import org.onap.ransim.rest.api.models.NeihborId;
-import org.onap.ransim.rest.api.models.NetconfServers;
-import org.onap.ransim.rest.api.models.OperationLog;
-import org.onap.ransim.rest.api.models.Topology;
-import org.springframework.http.HttpStatus;
-import org.springframework.http.ResponseEntity;
-import org.springframework.web.bind.annotation.CrossOrigin;
-import org.springframework.web.bind.annotation.RequestBody;
-import org.springframework.web.bind.annotation.RequestMapping;
-import org.springframework.web.bind.annotation.RequestMethod;
-import org.springframework.web.bind.annotation.RestController;
-
-import com.google.gson.Gson;
-import com.google.gson.GsonBuilder;
-
-import io.swagger.annotations.Api;
-import io.swagger.annotations.ApiOperation;
-import io.swagger.annotations.ApiResponse;
-import io.swagger.annotations.ApiResponses;
-
-@RestController
-@Api(value = "Ran Simulator Controller Services")
-@RequestMapping("/")
-@CrossOrigin(origins = "*")
-public class RansimControllerServices {
-
- static Logger log = Logger.getLogger(RansimControllerServices.class
- .getName());
-
- private static boolean isSimulationStarted = false;
- private static boolean isPmDataGenerating = false;
-
- private static RansimControllerServices rscServices = null;
-
- ScheduledExecutorService execService = Executors.newScheduledThreadPool(5);
-
- private RansimControllerServices() {
-
- }
-
- /**
- * To accesss variable of this class from another class.
- *
- * @return returns rscServices constructor
- */
- public static synchronized RansimControllerServices getRansimControllerServices() {
- if (rscServices == null) {
- rscServices = new RansimControllerServices();
- }
- return rscServices;
- }
-
- RansimController rsCtrlr = RansimController.getRansimController();
- RansimPciHandler rsPciHdlr = RansimPciHandler.getRansimPciHandler();
-
- /**
- * Start the RAN network simulation.
- *
- * @param req
- * gets the necessary details as a request of class type
- * StartSimulationReq
- * @return returns Http status
- * @throws Exception
- * throws exceptions in the functions
- */
- @ApiOperation("Starts the RAN network simulation")
- @RequestMapping(value = "/StartSimulation", method = RequestMethod.POST)
- @ApiResponses(value = { @ApiResponse(code = 200, message = "Successful"),
- @ApiResponse(code = 500, message = "Cannot start the simulation") })
- public ResponseEntity<String> startSimulation() throws Exception {
-
- RansimControllerDatabase rsDb = new RansimControllerDatabase();
-
- List<CellDetails> cellList = rsDb.getCellDetailsList();
- if (!cellList.isEmpty()) {
- return new ResponseEntity<>("Already simulation is running.",
- HttpStatus.INTERNAL_SERVER_ERROR);
- }
-
- try {
- rsCtrlr.loadProperties();
- long startTimeStartSimulation = System.currentTimeMillis();
- rsCtrlr.generateClusterFromFile();
- rsCtrlr.sendInitialConfigAll();
- long endTimeStartSimulation = System.currentTimeMillis();
- log.info("Time taken for start simulation : "
- + (endTimeStartSimulation - startTimeStartSimulation));
-
- return new ResponseEntity<String>(HttpStatus.OK);
-
- } catch (Exception eu) {
- log.info("/StartSimulation ", eu);
- return new ResponseEntity<String>(HttpStatus.INTERNAL_SERVER_ERROR);
- }
-
- }
-
- /**
- * The performance Management Data of each cell will be sent to its netconf
- * agent at a regular interval.
- *
- * @param req
- * Contains the details of node ids which will have bad and poor
- * pm values
- * @return return HTTP status.
- *
- */
- @ApiOperation("Generate PM data")
- @RequestMapping(value = "/GeneratePmData", method = RequestMethod.POST)
- @ApiResponses(value = { @ApiResponse(code = 200, message = "Successful"),
- @ApiResponse(code = 500, message = "Cannot start the simulation") })
- public ResponseEntity<String> generatePmData(@RequestBody GetPmDataReq req)
- throws Exception {
-
- log.info("Inside generatePmData...");
- log.info("nodeId_bad: " + req.getNodeIdBad());
- log.info("nodeId_poor: " + req.getNodeIdPoor());
-
- try {
- rsPciHdlr.readPmParameters();
- execService = Executors.newScheduledThreadPool(5);
- execService.scheduleAtFixedRate(
- () -> {
-
- List<String> resp = rsPciHdlr.generatePmData(
- req.getNodeIdBad(), req.getNodeIdPoor());
- log.info("execService.isTerminated(): "
- + execService.isTerminated());
-
- }, 0, 300, TimeUnit.SECONDS);
-
- isPmDataGenerating = true;
-
- return new ResponseEntity<>("Request generated.", HttpStatus.OK);
-
- } catch (Exception eu) {
- log.info("Exception: ", eu);
- return new ResponseEntity<String>(HttpStatus.INTERNAL_SERVER_ERROR);
-
- }
-
- }
-
- /**
- * Terminates the ScheduledExecutorService which sends the PM data at
- * regular interval.
- *
- * @return returns HTTP status
- *
- */
- @ApiOperation("stop PM data")
- @RequestMapping(value = "/stopPmData", method = RequestMethod.GET)
- @ApiResponses(value = { @ApiResponse(code = 200, message = "Successful"),
- @ApiResponse(code = 500, message = "Cannot start the simulation") })
- public ResponseEntity<String> stopPmData() throws Exception {
-
- long startTime = (System.currentTimeMillis() / 1000);
-
- try {
- log.info("1. execService.isTerminated(): "
- + execService.isTerminated());
- if (!execService.isTerminated()) {
- execService.shutdown();
- log.info("2. execService.isTerminated(): "
- + execService.isTerminated());
-
- }
- isPmDataGenerating = false;
- return new ResponseEntity<>("PM data generated.", HttpStatus.OK);
-
- } catch (Exception eu) {
- return new ResponseEntity<String>(HttpStatus.INTERNAL_SERVER_ERROR);
- }
-
- }
-
- /**
- * Get the status of ScheduledExecutorService, whether active or terminated.
- *
- * @return return the status
- *
- */
- @ApiOperation("get PM data status")
- @RequestMapping(value = "/GetPmDataStatus", method = RequestMethod.GET)
- @ApiResponses(value = { @ApiResponse(code = 200, message = "Successful"),
- @ApiResponse(code = 500, message = "Cannot get information") })
- public boolean getPmDataStatus() throws Exception {
-
- try {
- return isPmDataGenerating;
- } catch (Exception eu) {
- return false;
- }
-
- }
-
- /**
- * The function retrieves RAN simulation network topology.
- *
- * @return returns Http status
- * @throws Exception
- * throws exceptions in the functions
- *
- */
- @ApiOperation("Retrieves RAN simulation network topology")
- @RequestMapping(value = "/GetTopology", method = RequestMethod.GET)
- @ApiResponses(value = {
- @ApiResponse(code = 200, message = "Successful"),
- @ApiResponse(code = 500, message = "Cannot retrieve the RAN simulation network topology details") })
- public ResponseEntity<String> getTopology() throws Exception {
- log.info("Inside getTopology...");
- RansimControllerDatabase rsDb = new RansimControllerDatabase();
- try {
- rsPciHdlr.checkCollisionAfterModify();
- List<CellDetails> cds = rsDb.getCellDetailsList();
-
- Topology top = new Topology();
-
- if (cds != null && cds.size() > 0) {
- top.setMinScreenX(cds.get(0).getScreenX());
- top.setMaxScreenX(cds.get(0).getScreenX());
- top.setMinScreenY(cds.get(0).getScreenY());
- top.setMaxScreenY(cds.get(0).getScreenY());
-
- for (int i = 0; i < cds.size(); i++) {
- if (cds.get(i).getScreenX() < top.getMinScreenX()) {
- top.setMinScreenX(cds.get(i).getScreenX());
- }
- if (cds.get(i).getScreenY() < top.getMinScreenY()) {
- top.setMinScreenY(cds.get(i).getScreenY());
- }
-
- if (cds.get(i).getScreenX() > top.getMaxScreenX()) {
- top.setMaxScreenX(cds.get(i).getScreenX());
- }
- if (cds.get(i).getScreenY() > top.getMaxScreenY()) {
- top.setMaxScreenY(cds.get(i).getScreenY());
- }
- }
- top.setCellTopology(cds);
- }
- top.setGridSize(rsCtrlr.gridSize);
-
- Gson gson = new Gson();
- String jsonStr = gson.toJson(top);
-
- return new ResponseEntity<>(jsonStr, HttpStatus.OK);
-
- } catch (Exception eu) {
- log.info("/GetTopology", eu);
- return new ResponseEntity<>("Failure",
- HttpStatus.INTERNAL_SERVER_ERROR);
- }
- }
-
- /**
- * The function retrieves the neighbor list details for the cell with the
- * mentioned nodeId.
- *
- * @param req
- * gets the necessary details as a request of class type
- * GetNeighborListReq
- * @return returns Http status
- * @throws Exception
- * throws exceptions in the functions
- */
- @ApiOperation("Retrieves the neighbor list details for the cell with the mentioned nodeId")
- @RequestMapping(value = "/GetNeighborList", method = RequestMethod.POST)
- @ApiResponses(value = {
- @ApiResponse(code = 200, message = "Successful"),
- @ApiResponse(code = 500, message = "Cannot Insert the given parameters") })
- public ResponseEntity<String> getNeighborList(
- @RequestBody GetNeighborListReq req) throws Exception {
- log.info("Inside getNeighborList...");
-
- try {
- String jsonStr = "";
-
- GetNeighborList message = rsPciHdlr.generateNeighborList(req
- .getNodeId());
-
- if (message != null) {
-
- log.info("message.getNodeId(): " + message.getNodeId());
-
- Gson gson = new Gson();
- jsonStr = gson.toJson(message);
- }
- return new ResponseEntity<>(jsonStr, HttpStatus.OK);
-
- } catch (Exception eu) {
- log.info("/getNeighborList", eu);
-
- return new ResponseEntity<>("Failure",
- HttpStatus.INTERNAL_SERVER_ERROR);
- }
- }
-
- /**
- * The function retrieves the neighbor list for the cell with the mentioned
- * nodeId.
- *
- * @param req
- * gets the necessary details as a request of class type
- * GetNeighborListReq
- * @return returns Http status
- * @throws Exception
- * throws exceptions in the functions
- */
- @ApiOperation("Retrieves the neighbor list details for the cell with the mentioned nodeId")
- @RequestMapping(value = "/GetNeighborBlacklistDetails", method = RequestMethod.POST)
- @ApiResponses(value = {
- @ApiResponse(code = 200, message = "Successful"),
- @ApiResponse(code = 500, message = "Cannot Insert the given parameters") })
- public ResponseEntity<String> getNeighborBlacklistDetails(
- @RequestBody GetNeighborListReq req) throws Exception {
- log.info("Inside getNeighborList...");
-
- try {
- String jsonStr = "";
-
- RansimControllerDatabase rsDb = new RansimControllerDatabase();
- CellNeighbor neighborList = rsDb.getCellNeighbor(req.getNodeId());
-
- Map<String, String> result = new ConcurrentHashMap<String, String>();
-
- for (NeighborDetails nd : neighborList.getNeighborList()) {
-
- result.put(nd.getNeigbor().getNeighborCell(),
- "" + nd.isBlacklisted());
- }
-
- if (result != null) {
- Gson gson = new Gson();
- jsonStr = gson.toJson(result);
- }
- return new ResponseEntity<>(jsonStr, HttpStatus.OK);
-
- } catch (Exception eu) {
- log.info("/getNeighborList", eu);
-
- return new ResponseEntity<>("Failure",
- HttpStatus.INTERNAL_SERVER_ERROR);
- }
- }
-
- /**
- * Changes the pci number or nbr list for the given cell.
- *
- * @param req
- * gets the necessary details as a request of class type
- * ModifyACellReq
- * @return returns Http status
- * @throws Exception
- * throws exceptions in the functions
- */
- @ApiOperation("Changes the pci number or nbr list for the given cell")
- @RequestMapping(value = "/ModifyACell", method = RequestMethod.POST)
- @ApiResponses(value = {
- @ApiResponse(code = 200, message = "Successful"),
- @ApiResponse(code = 500, message = "Cannot update the PCI for the given cell") })
- public ResponseEntity<String> modifyACell(@RequestBody ModifyACellReq req)
- throws Exception {
- log.info("Inside ModifyCell...");
-
- try {
- long startTimemodifyCell = System.currentTimeMillis();
-
- String nbrsStr = req.getNewNbrs();
- if (req.getNewNbrs() == null) {
- nbrsStr = "";
- }
- String source = "GUI";
- List<NeighborDetails> nbrsList = new ArrayList<NeighborDetails>();
- String[] newNbrsArr = nbrsStr.split(",");
-
- for (int i = 0; i < newNbrsArr.length; i++) {
- NeighborDetails cell = new NeighborDetails(new NeihborId(
- req.getNodeId(), newNbrsArr[i].trim()), false);
- nbrsList.add(cell);
- }
-
- int result = rsPciHdlr.modifyCellFunction(req.getNodeId(),
- req.getNewPhysicalCellId(), nbrsList, source);
- log.info("Inside modify cell : " + (startTimemodifyCell));
- log.info("Result:********************" + result);
- rsCtrlr.handleModifyPciFromGui(req.getNodeId(),
- req.getNewPhysicalCellId());
- long endTimemodifyCell = System.currentTimeMillis();
- log.info("Time taken to modify cell : "
- + (endTimemodifyCell - startTimemodifyCell));
-
- if (result == 200) {
- return new ResponseEntity<String>(HttpStatus.OK);
- } else if (result == 400) {
- return new ResponseEntity<String>(HttpStatus.BAD_REQUEST);
- } else {
- return new ResponseEntity<String>(
- HttpStatus.INTERNAL_SERVER_ERROR);
- }
-
- } catch (Exception eu) {
- log.info("Exception in modifyACell", eu);
-
- return new ResponseEntity<>(
- "Cannot update the PCI for the given cell",
- HttpStatus.INTERNAL_SERVER_ERROR);
- }
-
- }
-
- /**
- * The function changes the PCI number of the cell for the the mentioned
- * nodeId.
- *
- * @param req
- * gets the necessary details as a request of class type
- * GetACellDetailReq
- * @return returns Http status
- * @throws Exception
- * throws exceptions in the functions
- */
- @ApiOperation("Changes the pci number of the cell for the the mentioned nodeId")
- @RequestMapping(value = "/GetACellDetail", method = RequestMethod.POST)
- @ApiResponses(value = {
- @ApiResponse(code = 200, message = "Successful"),
- @ApiResponse(code = 500, message = "Cannot retrive the cell details for the given cell") })
- public ResponseEntity<String> getACellDetail(
- @RequestBody GetACellDetailReq req) throws Exception {
- log.info("Inside GetACellDetailReq...");
- RansimControllerDatabase rsDb = new RansimControllerDatabase();
- try {
- String jsonStr = null;
-
- CellDetails cd = rsDb.getCellDetail(req.getNodeId());
-
- if (cd != null) {
- Gson gson = new Gson();
- jsonStr = gson.toJson(cd);
- }
- return new ResponseEntity<>(jsonStr, HttpStatus.OK);
-
- } catch (Exception eu) {
- log.info("Exception in modifyACell", eu);
- return new ResponseEntity<>(
- "Cannot update the PCI for the given cell",
- HttpStatus.INTERNAL_SERVER_ERROR);
- }
- }
-
- /**
- * The function deletes a cell with the mentioned nodeId.
- *
- * @param req
- * gets the necessary details as a request of class type
- * DeleteACellReq
- * @return returns Http status
- * @throws Exception
- * throws exceptions in the functions
- */
- @ApiOperation("Deletes a cell with the mentioned nodeId")
- @RequestMapping(value = "/DeleteACell", method = RequestMethod.POST)
- @ApiResponses(value = { @ApiResponse(code = 200, message = "Successful"),
- @ApiResponse(code = 500, message = "Cannot delete the given cell") })
- public ResponseEntity<String> deleteACell(@RequestBody DeleteACellReq req)
- throws Exception {
- log.info("Inside delete cell...");
-
- try {
- long startTimeDeleteCell = System.currentTimeMillis();
- String result = rsCtrlr.deleteCellFunction(req.getNodeId());
- log.info("deleted in database...." + result);
- long endTimeDeleteCell = System.currentTimeMillis();
- log.info("Time taken to delete cell : "
- + (endTimeDeleteCell - startTimeDeleteCell));
-
- return new ResponseEntity<String>(HttpStatus.OK);
-
- } catch (Exception eu) {
- log.info("Exception in deleteACell", eu);
- return new ResponseEntity<String>(HttpStatus.INTERNAL_SERVER_ERROR);
- }
- }
-
- /**
- * The function stops RAN network simulation and deletes all the cell data
- * from the database.
- *
- * @return returns Http status
- * @throws Exception
- * throws exceptions in the functions
- */
- @ApiOperation("Stops RAN network simulation and deletes all the cell data from the database")
- @RequestMapping(value = "/StopSimulation", method = RequestMethod.DELETE)
- @ApiResponses(value = { @ApiResponse(code = 200, message = "Successful"),
- @ApiResponse(code = 500, message = "Cannot stop simulation") })
- public ResponseEntity<String> stopSimulation() throws Exception {
- log.info("Inside stopSimulation...");
- EntityManagerFactory emfactory = Persistence
- .createEntityManagerFactory("ransimctrlrdb");
- EntityManager entitymanager = emfactory.createEntityManager();
-
- Query query = entitymanager.createQuery("from CellDetails cd",
- CellDetails.class);
- if (query.getResultList() == null) {
- return new ResponseEntity<>("No simulation is running.",
- HttpStatus.INTERNAL_SERVER_ERROR);
- }
-
- try {
- entitymanager.getTransaction().begin();
- long startTimStopSimulation = System.currentTimeMillis();
- Query q3 = entitymanager
- .createQuery("DELETE FROM NetconfServers ns");
- q3.executeUpdate();
-
- Query q2 = entitymanager.createQuery("DELETE FROM CellNeighbor cn");
- q2.executeUpdate();
-
- Query q4 = entitymanager
- .createQuery("DELETE FROM NeighborDetails cn");
- q4.executeUpdate();
-
- log.info("Stop simulation : " + (startTimStopSimulation));
- Query q1 = entitymanager.createQuery("DELETE FROM CellDetails cd");
- q1.executeUpdate();
-
- String result = rsCtrlr.stopAllCells();
- log.info("All cell simulation are stopped...." + result);
-
- entitymanager.flush();
- entitymanager.getTransaction().commit();
-
- long endTimStopSimulation = System.currentTimeMillis();
- log.info("Time taken for stopping simulation : "
- + (endTimStopSimulation - startTimStopSimulation));
-
- isSimulationStarted = false;
- return new ResponseEntity<>("Success", HttpStatus.OK);
-
- } catch (Exception eu) {
- log.info("Exception in stopSimulation", eu);
- if (entitymanager.getTransaction().isActive()) {
- entitymanager.getTransaction().rollback();
- }
- return new ResponseEntity<>("Failure",
- HttpStatus.INTERNAL_SERVER_ERROR);
- } finally {
- entitymanager.close();
- emfactory.close();
- }
-
- }
-
- /**
- * The function returns the details of a Netconf server for the mentioned
- * server id.
- *
- * @param req
- * gets the necessary details as a request of class type
- * GetNetconfServerDetailsReq
- * @return returns Http status
- * @throws Exception
- * throws exceptions in the functions
- */
- @ApiOperation("Returns the details of a Netconf server for the mentioned server id")
- @RequestMapping(value = "/GetNetconfServerDetails", method = RequestMethod.POST)
- @ApiResponses(value = {
- @ApiResponse(code = 200, message = "Successful"),
- @ApiResponse(code = 500, message = "Failure in GetNetconfServerDetails API") })
- public ResponseEntity<String> getNetconfServerDetails(
- @RequestBody GetNetconfServerDetailsReq req) throws Exception {
-
- EntityManagerFactory emfactory = Persistence
- .createEntityManagerFactory("ransimctrlrdb");
- EntityManager entitymanager = emfactory.createEntityManager();
- try {
- log.info("Inside GetNetconfServerDetails API...");
- String result = "";
- entitymanager.getTransaction().begin();
- String input = req.getServerId();
- if (input.startsWith("Chn")) {
- CellDetails cds = entitymanager.find(CellDetails.class, input);
- if (cds != null) {
- Gson gson = new Gson();
- String jsonStr = gson.toJson(cds);
- result = "{\"serverId\":\"any\",\"cells\":[" + jsonStr
- + "]}";
- } else {
- result = ("Cell Id does not exist");
- }
- } else {
- NetconfServers ns = entitymanager.find(NetconfServers.class,
- req.getServerId());
- if (ns != null) {
- Gson gson = new Gson();
- String jsonStr = gson.toJson(ns);
- result = jsonStr;
- } else {
- result = ("Server Id does not exist");
- }
- }
- return new ResponseEntity<>(result, HttpStatus.OK);
-
- } catch (Exception eu) {
- log.info("/GetNetconfServers", eu);
- if (entitymanager.getTransaction().isActive()) {
- entitymanager.getTransaction().rollback();
- }
- return new ResponseEntity<>(
- "Failure in GetNetconfServerDetails API",
- HttpStatus.INTERNAL_SERVER_ERROR);
- } finally {
- entitymanager.close();
- emfactory.close();
- }
- }
-
- @ApiOperation("Returns the connection status of all netconf servers")
- @RequestMapping(value = "/GetNetconfStatus", method = RequestMethod.GET)
- @ApiResponses(value = {
- @ApiResponse(code = 200, message = "Successful"),
- @ApiResponse(code = 500, message = "Failure in GetNetconfServerDetails API") })
- public ResponseEntity<String> GetNetconfStatus() throws Exception {
-
- RansimControllerDatabase rsDb = new RansimControllerDatabase();
- try {
- log.info("Inside GetNetconfServerDetails API...");
- String result = "";
-
- List<NetconfServers> ns = rsDb.getNetconfServersList();
- if (ns != null) {
- GsonBuilder gsonBuilder = new GsonBuilder();
- gsonBuilder.serializeNulls();
- Gson gson = gsonBuilder.create();
- String jsonStr = gson.toJson(ns);
- result = jsonStr;
- } else {
- result = ("Server Id does not exist");
- }
-
- return new ResponseEntity<>(result, HttpStatus.OK);
-
- } catch (Exception eu) {
- log.info("/GetNetconfServers", eu);
- return new ResponseEntity<>(
- "Failure in GetNetconfServerDetails API",
- HttpStatus.INTERNAL_SERVER_ERROR);
- }
- }
-
- /**
- * The function retrieves RAN simulation network topology.
- *
- * @return returns Http status
- * @throws Exception
- * throws exceptions in the functions
- *
- */
- @ApiOperation("Retrieves operations log - Modify/Delete operations performed")
- @RequestMapping(value = "/GetOperationLog", method = RequestMethod.GET)
- @ApiResponses(value = {
- @ApiResponse(code = 200, message = "Successful"),
- @ApiResponse(code = 500, message = "Cannot retrieve the Operation Logs") })
- public ResponseEntity<String> getOperationLog() throws Exception {
- log.info("Inside getOperationLog...");
- RansimControllerDatabase rsDb = new RansimControllerDatabase();
- try {
- List<OperationLog> ols = rsDb.getOperationLogList();
- if (ols != null && ols.size() > 0) {
- Gson gson = new Gson();
- String jsonStr = gson.toJson(ols);
- return new ResponseEntity<>(jsonStr, HttpStatus.OK);
- } else {
- return new ResponseEntity<>("", HttpStatus.OK);
- }
- } catch (Exception eu) {
- log.info("/GetOperationLog", eu);
- return new ResponseEntity<>("Failure",
- HttpStatus.INTERNAL_SERVER_ERROR);
- }
- }
-
-}
diff --git a/ransim/ransimctrlr/RANSIM-CTRLR/src/main/java/org/onap/ransim/rest/api/exceptions/RansimException.java b/ransim/ransimctrlr/RANSIM-CTRLR/src/main/java/org/onap/ransim/rest/api/exceptions/RansimException.java
new file mode 100644
index 0000000..f2ad4eb
--- /dev/null
+++ b/ransim/ransimctrlr/RANSIM-CTRLR/src/main/java/org/onap/ransim/rest/api/exceptions/RansimException.java
@@ -0,0 +1,27 @@
+package org.onap.ransim.rest.api.exceptions;
+
+public class RansimException extends Throwable {
+
+ public RansimException() {
+ super();
+ }
+
+ public RansimException(String message, Throwable cause, boolean enableSuppression, boolean writableStackTrace) {
+ super(message, cause, enableSuppression, writableStackTrace);
+ }
+
+ public RansimException(String message, Throwable cause) {
+ super(message, cause);
+ }
+
+ public RansimException(String message) {
+ super(message);
+ }
+
+ public RansimException(Throwable cause) {
+ super(cause);
+ }
+
+
+
+}
diff --git a/ransim/ransimctrlr/RANSIM-CTRLR/src/main/java/org/onap/ransim/rest/api/controller/RansimPciHandler.java b/ransim/ransimctrlr/RANSIM-CTRLR/src/main/java/org/onap/ransim/rest/api/handler/RansimPciHandler.java
index e4796e8..2149c4e 100644
--- a/ransim/ransimctrlr/RANSIM-CTRLR/src/main/java/org/onap/ransim/rest/api/controller/RansimPciHandler.java
+++ b/ransim/ransimctrlr/RANSIM-CTRLR/src/main/java/org/onap/ransim/rest/api/handler/RansimPciHandler.java
@@ -1,5 +1,5 @@
/*-
- * ============LICENSE_START=======================================================
+ }* ============LICENSE_START=======================================================
* Ran Simulator Controller
* ================================================================================
* Copyright (C) 2020 Wipro Limited.
@@ -18,7 +18,7 @@
* ============LICENSE_END=========================================================
*/
-package org.onap.ransim.rest.api.controller;
+package org.onap.ransim.rest.api.handler;
import java.io.BufferedReader;
import java.io.File;
@@ -32,10 +32,6 @@ import java.util.Map;
import java.util.Set;
import java.util.UUID;
import java.util.concurrent.ConcurrentHashMap;
-
-import javax.persistence.EntityManager;
-import javax.persistence.EntityManagerFactory;
-import javax.persistence.Persistence;
import javax.websocket.Session;
import org.apache.log4j.Logger;
@@ -48,6 +44,9 @@ import org.onap.ransim.rest.api.models.NetconfServers;
import org.onap.ransim.rest.api.models.OperationLog;
import org.onap.ransim.rest.api.models.PmDataDump;
import org.onap.ransim.rest.api.models.PmParameters;
+import org.onap.ransim.rest.api.services.RANSliceConfigService;
+import org.onap.ransim.rest.api.services.RansimControllerServices;
+import org.onap.ransim.rest.api.services.RansimRepositoryService;
import org.onap.ransim.websocket.model.AdditionalMeasurements;
import org.onap.ransim.websocket.model.CommonEventHeaderFm;
import org.onap.ransim.websocket.model.CommonEventHeaderPm;
@@ -58,34 +57,26 @@ import org.onap.ransim.websocket.model.FmMessage;
import org.onap.ransim.websocket.model.Measurement;
import org.onap.ransim.websocket.model.PmMessage;
import org.onap.ransim.websocket.server.RansimWebSocketServer;
-
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
import com.google.gson.Gson;
+@Service
public class RansimPciHandler {
-
- private static RansimPciHandler rsPciHandler = null;
- private RansimPciHandler() {
-
- }
-
- /**
- * To accesss variable of this class from another class.
- *
- * @return returns rscontroller constructor
- */
- public static synchronized RansimPciHandler getRansimPciHandler() {
- if (rsPciHandler == null) {
- rsPciHandler = new RansimPciHandler();
- }
- return rsPciHandler;
- }
-
static Logger log = Logger.getLogger(RansimPciHandler.class
.getName());
-
- RansimController rsCtrlr = RansimController.getRansimController();
-
+
+ @Autowired
+ RansimRepositoryService ransimRepo ;
+
+ @Autowired
+ RansimControllerServices rscServices;
+
+ @Autowired
+ RANSliceConfigService ranSliceConfigService;
+
static Map<String, String> globalFmCellIdUuidMap = new ConcurrentHashMap<String, String>();
static Map<String, String> globalPmCellIdUuidMap = new ConcurrentHashMap<String, String>();
@@ -94,10 +85,11 @@ public class RansimPciHandler {
List<PmParameters> pmParameters = new ArrayList<PmParameters>();
int next = 0;
- static FmAlarmInfo setCollisionConfusionFromFile(String cellNodeId) {
+
+
+ public FmAlarmInfo setCollisionConfusionFromFile(String cellNodeId) {
FmAlarmInfo result = new FmAlarmInfo();
- RansimControllerDatabase rsDb = new RansimControllerDatabase();
try {
@@ -107,15 +99,14 @@ public class RansimPciHandler {
List<Long> ConfusionPcis = new ArrayList<Long>();
int collisionCount = 0;
int confusionCount = 0;
- CellDetails currentCell = rsDb.getCellDetail(cellNodeId);
-
+ CellDetails currentCell = ransimRepo.getCellDetail(cellNodeId);
log.info("Setting confusion/collision for Cell :" + cellNodeId);
GetNeighborList cellNbrDetails = generateNeighborList(cellNodeId);
for (CellDetails firstLevelNbr : cellNbrDetails.getCellsWithHo()) {
if (nbrPcis
- .contains(new Long(firstLevelNbr.getPhysicalCellId()))) {
+ .contains((Long)firstLevelNbr.getPhysicalCellId())) {
confusionDetected = true;
if (ConfusionPcis.contains(firstLevelNbr
.getPhysicalCellId())) {
@@ -126,7 +117,7 @@ public class RansimPciHandler {
}
} else {
- nbrPcis.add(new Long(firstLevelNbr.getPhysicalCellId()));
+ nbrPcis.add((Long)firstLevelNbr.getPhysicalCellId());
}
if (currentCell.getPhysicalCellId() == firstLevelNbr
@@ -165,7 +156,7 @@ public class RansimPciHandler {
result.setCollisionCount("" + collisionCount);
result.setConfusionCount("" + confusionCount);
- rsDb.mergeCellDetails(currentCell);
+ ransimRepo.mergeCellDetails(currentCell);
return result;
@@ -185,29 +176,26 @@ public class RansimPciHandler {
* Node Id of cell for which the neighbor list is generated
* @return Returns GetNeighborList object
*/
- static GetNeighborList generateNeighborList(String nodeId) {
+ public GetNeighborList generateNeighborList(String nodeId) {
- EntityManagerFactory emfactory = Persistence
- .createEntityManagerFactory("ransimctrlrdb");
- EntityManager entitymanager = emfactory.createEntityManager();
+
try {
log.info("inside generateNeighborList for: " + nodeId);
- RansimControllerDatabase rsDb = new RansimControllerDatabase();
- CellNeighbor neighborList = entitymanager.find(CellNeighbor.class,
- nodeId);
+ CellNeighbor neighborList = ransimRepo.getCellNeighbor(nodeId);
GetNeighborList result = new GetNeighborList();
-
+ neighborList.display();
List<CellDetails> cellsWithNoHO = new ArrayList<CellDetails>();
List<CellDetails> cellsWithHO = new ArrayList<CellDetails>();
- List<NeighborDetails> nbrList = new ArrayList<NeighborDetails>(
- neighborList.getNeighborList());
- long readCellDetail = 0;
- long checkBlacklisted = 0;
+ List<NeighborDetails> nbrList = new ArrayList<>();
+ if(neighborList != null) {
+ nbrList.addAll(
+ neighborList.getNeighborList());
+ }
for (int i = 0; i < nbrList.size(); i++) {
- CellDetails nbr = entitymanager.find(CellDetails.class, nbrList
+ CellDetails nbr = ransimRepo.getCellDetail(nbrList
.get(i).getNeigbor().getNeighborCell());
if (nbrList.get(i).isBlacklisted()) {
@@ -221,26 +209,17 @@ public class RansimPciHandler {
result.setNodeId(nodeId);
result.setCellsWithHo(cellsWithHO);
result.setCellsWithNoHo(cellsWithNoHO);
-
return result;
} catch (Exception eu) {
log.info("/getNeighborList", eu);
- if (entitymanager.getTransaction().isActive()) {
- entitymanager.getTransaction().rollback();
- }
return null;
- } finally {
- entitymanager.close();
- emfactory.close();
}
}
- static void checkCollisionAfterModify() {
- RansimControllerDatabase rsDb = new RansimControllerDatabase();
+ public void checkCollisionAfterModify() {
try {
- List<CellDetails> checkCollisionConfusion = rsDb
- .getCellsWithCollisionOrConfusion();
+ List<CellDetails> checkCollisionConfusion = ransimRepo.getCellsWithCollisionOrConfusion();
for (int i = 0; i < checkCollisionConfusion.size(); i++) {
log.info(checkCollisionConfusion.get(i).getNodeId());
@@ -271,14 +250,13 @@ public class RansimPciHandler {
int result = 111;
- RansimControllerDatabase rsDb = new RansimControllerDatabase();
log.info("modifyCellFunction nodeId:" + nodeId + ", physicalCellId:"
+ physicalCellId);
- CellDetails modifyCell = rsDb.getCellDetail(nodeId);
+ CellDetails modifyCell = ransimRepo.getCellDetail(nodeId);
if (modifyCell != null) {
if (physicalCellId < 0
- || physicalCellId > rsCtrlr.maxPciValueAllowed) {
+ || physicalCellId > RansimControllerServices.maxPciValueAllowed) {
log.info("NewPhysicalCellId is empty or invalid");
result = 400;
} else {
@@ -288,10 +266,10 @@ public class RansimPciHandler {
oldPciId);
modifyCell.setPhysicalCellId(physicalCellId);
- rsDb.mergeCellDetails(modifyCell);
+ ransimRepo.mergeCellDetails(modifyCell);
}
- CellNeighbor neighbors = rsDb.getCellNeighbor(nodeId);
+ CellNeighbor neighbors = ransimRepo.getCellNeighbor(nodeId);
List<NeighborDetails> oldNbrList = new ArrayList<NeighborDetails>(
neighbors.getNeighborList());
List<NeighborDetails> oldNbrListWithHo = new ArrayList<NeighborDetails>();
@@ -367,12 +345,12 @@ public class RansimPciHandler {
for (NeighborDetails cell : deletedNbrs) {
NeighborDetails removeHo = new NeighborDetails(
cell.getNeigbor(), true);
- rsDb.mergeNeighborDetails(removeHo);
+ ransimRepo.mergeNeighborDetails(removeHo);
newNeighborList.add(removeHo);
}
for (NeighborDetails cell : addedNbrs) {
- rsDb.mergeNeighborDetails(cell);
+ ransimRepo.mergeNeighborDetails(cell);
newNeighborList.add(cell);
}
@@ -391,7 +369,7 @@ public class RansimPciHandler {
Set<NeighborDetails> updatedNbrList = new HashSet<NeighborDetails>(
newNeighborList);
neighbors.setNeighborList(updatedNbrList);
- rsDb.mergeCellNeighbor(neighbors);
+ ransimRepo.mergeCellNeighbor(neighbors);
}
generateFmData(source, modifyCell, newNeighborList);
@@ -409,14 +387,11 @@ public class RansimPciHandler {
public void checkCellsWithIssue() {
- EntityManagerFactory emfactory = Persistence
- .createEntityManagerFactory("ransimctrlrdb");
- EntityManager entitymanager = emfactory.createEntityManager();
+
try {
for (String id : cellsWithIssues) {
- CellDetails currentCell = entitymanager.find(CellDetails.class,
- id);
+ CellDetails currentCell = ransimRepo.getCellDetail(id);
FmMessage fmDataMessage = new FmMessage();
List<EventFm> data = new ArrayList<EventFm>();
@@ -463,39 +438,25 @@ public class RansimPciHandler {
}
} catch (Exception eu) {
- if (entitymanager.getTransaction().isActive()) {
- entitymanager.getTransaction().rollback();
- }
- log.info("Exception:", eu);
- } finally {
- entitymanager.close();
- emfactory.close();
- }
-
+ log.error("Exception:", eu);
+ }
}
- void updatePciOperationsTable(String nodeId, String source, long physicalCellId, long oldPciId) {
- EntityManagerFactory emfactory = Persistence.createEntityManagerFactory("ransimctrlrdb");
- EntityManager entitymanager = emfactory.createEntityManager();
+ public void updatePciOperationsTable(String nodeId, String source, long physicalCellId, long oldPciId) {
+
OperationLog operationLog = new OperationLog();
- entitymanager.getTransaction().begin();
operationLog.setNodeId(nodeId);
operationLog.setFieldName("PCID");
operationLog.setOperation("Modify");
operationLog.setSource(source);
operationLog.setTime(System.currentTimeMillis());
operationLog.setMessage("PCID value changed from " + oldPciId + " to " + physicalCellId);
- entitymanager.merge(operationLog);
- entitymanager.flush();
- entitymanager.getTransaction().commit();
+ ransimRepo.mergeOperationLog(operationLog);
}
- void updateNbrsOperationsTable(String nodeId, String source, String addedNbrs, String deletedNbrs) {
+ public void updateNbrsOperationsTable(String nodeId, String source, String addedNbrs, String deletedNbrs) {
- EntityManagerFactory emfactory = Persistence.createEntityManagerFactory("ransimctrlrdb");
- EntityManager entitymanager = emfactory.createEntityManager();
- entitymanager.getTransaction().begin();
OperationLog operationLogNbrChng = new OperationLog();
operationLogNbrChng.setNodeId(nodeId);
operationLogNbrChng.setFieldName("Neighbors");
@@ -515,10 +476,7 @@ public class RansimPciHandler {
operationLogNbrChng.setMessage(message);
operationLogNbrChng.setTime(System.currentTimeMillis());
- entitymanager.merge(operationLogNbrChng);
- entitymanager.flush();
- entitymanager.getTransaction().commit();
-
+ ransimRepo.mergeOperationLog(operationLogNbrChng);
}
/**
@@ -533,14 +491,13 @@ public class RansimPciHandler {
log.info("Sending PM message to netconf agent");
- String ipPort = rsCtrlr.serverIdIpPortMapping.get(serverId);
+ String ipPort = RansimControllerServices.serverIdIpPortMapping.get(serverId);
if (ipPort != null && !ipPort.trim().equals("")) {
- String[] ipPortArr = ipPort.split(":");
if (ipPort != null && !ipPort.trim().equals("")) {
- Session clSess = rsCtrlr.webSocketSessions.get(ipPort);
+ Session clSess = RansimControllerServices.webSocketSessions.get(ipPort);
log.info("PM message. Netconf agent IP:" + ipPort);
if (clSess != null) {
RansimWebSocketServer.sendPmMessage(pmMessage, clSess);
@@ -568,10 +525,8 @@ public class RansimPciHandler {
public void readPmParameters() {
File dumpFile = null;
- String kpiName = "";
PmDataDump pmDump = null;
String jsonString = "";
- int next = 0;
dumpFile = new File("PM_Kpi_Data.json");
BufferedReader br = null;
@@ -613,10 +568,10 @@ public class RansimPciHandler {
* List of node Ids with poor performance values
* @return It returns the pm message
*/
+ @Transactional
public List<String> generatePmData(String nodeIdBad, String nodeIdPoor) {
List<String> result = new ArrayList<>();
- RansimControllerDatabase rcDb = new RansimControllerDatabase();
String parameter1 = "";
String successValue1 = "";
@@ -648,8 +603,8 @@ public class RansimPciHandler {
log.info("Exception: ", e);
}
- List<NetconfServers> cnl = rcDb.getNetconfServersList();
- log.info("obtained data from db");
+ List<NetconfServers> cnl = ransimRepo.getNetconfServersList();
+ log.debug("obtained data from db");
String[] cellIdsBad = null;
String[] cellIdsPoor = null;
Set<String> nodeIdsBad = new HashSet<String>();
@@ -713,7 +668,7 @@ public class RansimPciHandler {
}
long endTimeCheckBadPoor = System.currentTimeMillis();
-
+ log.debug("Time taken CheckBadPoor : " + (endTimeCheckBadPoor - startTimeCheckBadPoor));
List<AdditionalMeasurements> additionalMeasurements = new ArrayList<AdditionalMeasurements>();
if (checkPoor || checkBad) {
@@ -784,6 +739,7 @@ public class RansimPciHandler {
data.add(event);
long endTimeCell = System.currentTimeMillis();
+ log.debug("Time taken to Process Cell list : " + (endTimeCell - startTimeCell));
}
long endTime = System.currentTimeMillis();
@@ -898,9 +854,6 @@ public class RansimPciHandler {
List<EventFm> listCellIssue = new ArrayList<EventFm>();
Set<String> ncs = new HashSet<>();
log.info("Generating Fm data");
-
- RansimControllerDatabase rsDb = new RansimControllerDatabase();
-
FmAlarmInfo op1 = setCollisionConfusionFromFile(cell.getNodeId());
if (source.equals("GUI")) {
@@ -919,7 +872,7 @@ public class RansimPciHandler {
for (NeighborDetails cd : newNeighborList) {
FmAlarmInfo op2 = setCollisionConfusionFromFile(cd.getNeigbor()
.getNeighborCell());
- CellDetails nbrCell = rsDb.getCellDetail(cd.getNeigbor()
+ CellDetails nbrCell = ransimRepo.getCellDetail(cd.getNeigbor()
.getNeighborCell());
if (source.equals("GUI")) {
@@ -985,14 +938,13 @@ public class RansimPciHandler {
log.info("Fm Data jsonStr: " + jsonStr);
- String ipPort = rsCtrlr.serverIdIpPortMapping.get(serverId);
+ String ipPort = RansimControllerServices.serverIdIpPortMapping.get(serverId);
if (ipPort != null && !ipPort.trim().equals("")) {
- String[] ipPortArr = ipPort.split(":");
log.info("Connection estabilished with ip: " + ipPort);
if (ipPort != null && !ipPort.trim().equals("")) {
- Session clSess = rsCtrlr.webSocketSessions.get(ipPort);
+ Session clSess = RansimControllerServices.webSocketSessions.get(ipPort);
if (clSess != null) {
log.info("FM message sent.");
RansimWebSocketServer.sendFmMessage(jsonStr, clSess);
diff --git a/ransim/ransimctrlr/RANSIM-CTRLR/src/main/java/org/onap/ransim/rest/api/handler/RansimSlicingHandler.java b/ransim/ransimctrlr/RANSIM-CTRLR/src/main/java/org/onap/ransim/rest/api/handler/RansimSlicingHandler.java
new file mode 100644
index 0000000..6cb39c1
--- /dev/null
+++ b/ransim/ransimctrlr/RANSIM-CTRLR/src/main/java/org/onap/ransim/rest/api/handler/RansimSlicingHandler.java
@@ -0,0 +1,265 @@
+/*-
+ }* ============LICENSE_START=======================================================
+ * Ran Simulator Controller
+ * ================================================================================
+ * Copyright (C) 2020 Wipro Limited.
+ * ================================================================================
+ * Licensed 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
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License 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.onap.ransim.rest.api.handler;
+
+import java.io.File;
+import java.time.LocalDateTime;
+import java.util.ArrayList;
+import java.util.Collections;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Random;
+import javax.xml.bind.JAXBContext;
+import javax.xml.bind.Marshaller;
+import javax.websocket.Session;
+
+import org.apache.log4j.Logger;
+import org.onap.ransim.rest.api.services.RANSliceConfigService;
+import org.onap.ransim.rest.api.services.RansimControllerServices;
+import org.onap.ransim.rest.api.services.RansimRepositoryService;
+import org.onap.ransim.rest.web.mapper.GNBCUCPModel;
+import org.onap.ransim.rest.web.mapper.NRCellCUModel;
+import org.onap.ransim.rest.web.mapper.PLMNInfoModel;
+import org.onap.ransim.rest.xml.models.*;
+import org.onap.ransim.websocket.server.RansimWebSocketServer;
+import org.onap.ransim.websocket.model.SlicingPmMessage;
+
+import org.springframework.core.ParameterizedTypeReference;
+import org.springframework.http.HttpEntity;
+import org.springframework.http.HttpHeaders;
+import org.springframework.http.HttpMethod;
+import org.springframework.http.HttpStatus;
+import org.springframework.http.MediaType;
+import org.springframework.http.ResponseEntity;
+import org.springframework.web.client.RestTemplate;
+import com.google.gson.Gson;
+import org.springframework.stereotype.Service;
+import org.springframework.beans.factory.annotation.Autowired;
+
+@Service
+public class RansimSlicingHandler {
+
+ static Logger log = Logger.getLogger(RansimSlicingHandler.class
+ .getName());
+
+ @Autowired
+ RansimRepositoryService ransimRepo ;
+
+ @Autowired
+ RansimControllerServices rscServices;
+
+ @Autowired
+ RANSliceConfigService ranSliceConfigService;
+
+
+ public List<String> generateIntelligentSlicingPmData(long startTime, HashMap<String,List<String>> taCells) {
+ List<String> result = new ArrayList<String>();
+ try {
+ String requestUrl = "http://" + "localhost" + ":" + "8081" + "/ransim/api/ransim-db/v4/cucp-list";
+ List<GNBCUCPModel> gnbcucpModelList = sendGetRequestToConfigDb(requestUrl).getBody();
+ long peakEndTime = System.currentTimeMillis() + 360000;
+ for (int i = 0; i < gnbcucpModelList.size(); i++) {
+ String gNBName = gnbcucpModelList.get(i).getgNBCUName();
+ LocalDateTime beginTime = LocalDateTime.now();
+ String beginTimeString = beginTime.toString();
+ SlicingPmMessage pmMessage = new SlicingPmMessage();
+ pmMessage.setStartEpochMicrosec(System.currentTimeMillis() * 1000);
+ pmMessage.setSourceName(gNBName);
+ MeasCollec measCollec = new MeasCollec(beginTimeString);
+ FileSender fileSender = new FileSender(gNBName);
+ FileHeader fileHeader = new FileHeader("Prefix", "Acme Ltd", "32.435 V10.0", measCollec, fileSender);
+ Random r = new Random();
+ int jobId = r.nextInt((9999 - 1000) + 1) + 1000;
+ Job job = new Job(String.valueOf(jobId));
+ ReportingPeriod reportingPeriod = new ReportingPeriod("PT900S");
+ List<MeasType> measTypeList = new ArrayList<MeasType>();
+ int numberOfNssaiType = 1;
+ HashMap<String, Integer> nssaiInfoMap = new HashMap<String, Integer>();
+ for (NRCellCUModel nRCellCUModel : gnbcucpModelList.get(i).getCellCUList()) {
+ for (PLMNInfoModel pLMNInfoModel : nRCellCUModel.getpLMNInfoList()) {
+ if (pLMNInfoModel.getsNSSAI().getStatus().equalsIgnoreCase("active")) {
+ nssaiInfoMap.put(pLMNInfoModel.getsNSSAI().getsNSSAI(),
+ pLMNInfoModel.getsNSSAI().getConfigData().getMaxNumberOfConns());
+ }
+ }
+ }
+ HashMap<String, Integer> nSSAINo = new HashMap<String, Integer>();
+ for (java.util.Map.Entry<String, Integer> map : nssaiInfoMap.entrySet()) {
+ String nssai = map.getKey();
+ MeasType mesType1 = new MeasType("SM.PDUSessionSetupReq." + nssai, numberOfNssaiType++);
+ MeasType mesType2 = new MeasType("SM.PDUSessionSetupSucc." + nssai, numberOfNssaiType++);
+ measTypeList.add(mesType1);
+ measTypeList.add(mesType2);
+ if (numberOfNssaiType == 3) {
+ MeasType mesTypeFail = new MeasType("SM.PDUSessionSetupFail." + "0", 3);
+ measTypeList.add(mesTypeFail);
+ numberOfNssaiType++;
+ }
+ nSSAINo.put(nssai,mesType1.getP());
+ }
+
+ List<MeasValue> measValueList = new ArrayList<MeasValue>();
+
+ for (NRCellCUModel nRCellCUModel : gnbcucpModelList.get(i).getCellCUList()) {
+ List<Result> resultList = new ArrayList<Result>();
+ int noOfRequestedSessions = 0;
+ int successfulSessions = 0;
+ int failedSessions = 0;
+ int configData = 0;
+ double rNumForTotalReq = 0;
+ int numberOfNssaiValue = 1; //change
+ for (PLMNInfoModel pLMNInfoModel : nRCellCUModel.getpLMNInfoList()) {
+ for (java.util.Map.Entry<String, Integer> nssaiMap : nSSAINo.entrySet()) {
+ if(nssaiMap.getKey().equals(pLMNInfoModel.getsNSSAI().getsNSSAI())) {
+ configData = pLMNInfoModel.getsNSSAI().getConfigData().getMaxNumberOfConns();
+ noOfRequestedSessions = 0;
+ successfulSessions = 0;
+ for (java.util.Map.Entry<String, List<String>> taCellMap : taCells.entrySet()) {
+ for(String cell : taCellMap.getValue()) {
+ if(Integer.parseInt(cell) == nRCellCUModel.getCellLocalId().intValue()) {
+ long end = (System.currentTimeMillis());
+ if(peakEndTime>end) {
+ if(taCellMap.getKey().equalsIgnoreCase("TA1") || taCellMap.getKey().equalsIgnoreCase("TA3")) {
+ rNumForTotalReq = 1.4 + (new Random().nextDouble() * (1.0 - 1.4));
+ } else {
+ rNumForTotalReq = 0.6 + (new Random().nextDouble() * (0.3 - 0.6));
+ }
+ }
+ else {
+ rNumForTotalReq = 0.7 + (new Random().nextDouble() * (0.3 - 0.7));
+ }
+ }
+ }
+ }
+
+ double rNumForFs = 0.10 + (new Random().nextDouble() * (0.05 - 0.10));
+ double rNumForSs = 0.75 + (new Random().nextDouble()* (0.75 - 0.90));
+ noOfRequestedSessions = (int) (configData * rNumForTotalReq);
+ successfulSessions = (int) (noOfRequestedSessions * rNumForSs);
+ failedSessions += noOfRequestedSessions - successfulSessions;
+ numberOfNssaiValue = nssaiMap.getValue();
+ Result result1 = new Result(numberOfNssaiValue++, noOfRequestedSessions);
+ Result result2 = new Result(numberOfNssaiValue++, successfulSessions);
+ resultList.add(result1);
+ resultList.add(result2);
+ if (numberOfNssaiValue == 3) {
+ numberOfNssaiValue++;
+ }
+ if(nRCellCUModel.getpLMNInfoList().indexOf(pLMNInfoModel)+1 == nRCellCUModel.getpLMNInfoList().size())
+ {
+ failedSessions -= failedSessions * rNumForFs;
+ Result result3 = new Result(3, failedSessions);
+ resultList.add(result3);
+ }
+ }
+ }
+
+ }
+
+ MeasValue measValue = new MeasValue(nRCellCUModel.getCellLocalId(),
+ resultList, false);
+ measValueList.add(measValue);
+ }
+
+ ManagedElement managedElement = new ManagedElement("r0.1", gNBName);
+ LocalDateTime grabularityEndTime = LocalDateTime.now();
+ String grabularityEndTimeString = grabularityEndTime.toString();
+ GranularityPeriod granularityPeriod = new GranularityPeriod(grabularityEndTimeString, "PT900S");
+ MeasInfo measInfo = new MeasInfo("measInfoIsVal", job, granularityPeriod, reportingPeriod, measTypeList,
+ measValueList);
+ List<MeasInfo> measInfoList = new ArrayList<MeasInfo>();
+ measInfoList.add(measInfo);
+ MeasData measData = new MeasData(managedElement, measInfoList);
+ List<MeasData> measDataList = new ArrayList<MeasData>();
+ measDataList.add(measData);
+ LocalDateTime endTime = LocalDateTime.now();
+ String endTimeString = endTime.toString();
+ pmMessage.setLastEpochMicrosec(System.currentTimeMillis() * 1000);
+ MeasCollecEnd measCollecEnd = new MeasCollecEnd(endTimeString);
+ FileFooter fileFooter = new FileFooter(measCollecEnd);
+ MeasCollecFile measCollecFile = new MeasCollecFile(fileHeader, measDataList, fileFooter,
+ "http://www.3gpp.org/ftp/specs/archive/32_series/32.435#measCollec");
+ String startDate = beginTimeString.replace(':', '-');
+ String endDate = endTimeString.replace(':', '-');
+ String fileName = "A" + startDate + "-"+ endDate + "-" + String.valueOf(jobId) + "-" + gNBName+ ".xml";
+ pmMessage.setFileName(fileName);
+ Gson gson = new Gson();
+ String pmData = gson.toJson(measCollecFile);
+ pmMessage.setPmData(pmData);
+ sendIntelligentSlicingPmData(pmMessage);
+ }
+ }
+ catch (Exception e) {
+ System.out.println("Exception: " + e);
+ }
+ return result;
+}
+
+public static <T> ResponseEntity<List<GNBCUCPModel>> sendGetRequestToConfigDb(String requestUrl) {
+
+ HttpHeaders headers = new HttpHeaders();
+ log.info("sending...");
+ headers.setAccept(Collections.singletonList(MediaType.APPLICATION_JSON));
+ HttpEntity<Void> requestEntity = new HttpEntity<>(headers);
+ try {
+ RestTemplate restTemplate = new RestTemplate();
+ return restTemplate.exchange(requestUrl, HttpMethod.GET, requestEntity,
+ new ParameterizedTypeReference<List<GNBCUCPModel>>() {
+ });
+ }
+ catch (Exception e) {
+ return new ResponseEntity<>(HttpStatus.NOT_FOUND);
+ }
+}
+
+
+public void sendIntelligentSlicingPmData( SlicingPmMessage pmMessage) {
+
+ log.info("inside sendIntelligentSlicingPmData");
+
+ Gson gson = new Gson();
+ String jsonStr = gson.toJson(pmMessage);
+
+ log.info("IntelligentSlicingPmData " + jsonStr);
+
+ String ipPort = RansimControllerServices.serverIdIpPortMapping.get(pmMessage.getSourceName());
+
+ if (ipPort != null && !ipPort.trim().equals("")) {
+
+ log.info("Connection estabilished with ip: " + ipPort);
+ if (ipPort != null && !ipPort.trim().equals("")) {
+ Session clSess = RansimControllerServices.webSocketSessions.get(ipPort);
+ if (clSess != null) {
+ log.info("PM Data message sent.");
+ RansimWebSocketServer.sendIntelligentSlicingPmData(jsonStr, clSess);
+ } else {
+ log.info("No client session for " + ipPort);
+ }
+ } else {
+ log.info("No client for this serverId");
+ }
+ } else {
+ log.info("No client for ");
+ }
+
+ }
+}
+
diff --git a/ransim/ransimctrlr/RANSIM-CTRLR/src/main/java/org/onap/ransim/rest/api/models/CellData.java b/ransim/ransimctrlr/RANSIM-CTRLR/src/main/java/org/onap/ransim/rest/api/models/CellData.java
index 3d9a70c..046d64a 100644
--- a/ransim/ransimctrlr/RANSIM-CTRLR/src/main/java/org/onap/ransim/rest/api/models/CellData.java
+++ b/ransim/ransimctrlr/RANSIM-CTRLR/src/main/java/org/onap/ransim/rest/api/models/CellData.java
@@ -23,42 +23,40 @@ package org.onap.ransim.rest.api.models;
import java.util.List;
public class CellData {
-
- private CellInfo Cell;
- private List<NbrDump> neighbor;
-
- public CellData() {
- super();
- }
-
- /**
- * Constructor with all parameters
- *
- * @param cell
- * Contains cell details.
- * @param neighbor
- * Contains list of neighbor details.
- */
- public CellData(CellInfo cell, List<NbrDump> neighbor) {
- super();
- Cell = cell;
- this.neighbor = neighbor;
- }
-
- public CellInfo getCell() {
- return Cell;
- }
-
- public void setCell(CellInfo cell) {
- Cell = cell;
- }
-
- public List<NbrDump> getNeighbor() {
- return neighbor;
- }
-
- public void setNeighbor(List<NbrDump> neighbor) {
- this.neighbor = neighbor;
- }
-
+
+ private CellInfo Cell;
+ private List<NbrDump> neighbor;
+
+ public CellData() {
+ super();
+ }
+
+ /**
+ * Constructor with all parameters
+ *
+ * @param cell Contains cell details.
+ * @param neighbor Contains list of neighbor details.
+ */
+ public CellData(CellInfo cell, List<NbrDump> neighbor) {
+ super();
+ Cell = cell;
+ this.neighbor = neighbor;
+ }
+
+ public CellInfo getCell() {
+ return Cell;
+ }
+
+ public void setCell(CellInfo cell) {
+ Cell = cell;
+ }
+
+ public List<NbrDump> getNeighbor() {
+ return neighbor;
+ }
+
+ public void setNeighbor(List<NbrDump> neighbor) {
+ this.neighbor = neighbor;
+ }
+
}
diff --git a/ransim/ransimctrlr/RANSIM-CTRLR/src/main/java/org/onap/ransim/rest/api/models/CellDetails.java b/ransim/ransimctrlr/RANSIM-CTRLR/src/main/java/org/onap/ransim/rest/api/models/CellDetails.java
index 697744c..1c393d4 100644
--- a/ransim/ransimctrlr/RANSIM-CTRLR/src/main/java/org/onap/ransim/rest/api/models/CellDetails.java
+++ b/ransim/ransimctrlr/RANSIM-CTRLR/src/main/java/org/onap/ransim/rest/api/models/CellDetails.java
@@ -27,247 +27,226 @@ import javax.persistence.Table;
@Entity
@Table(name = "CellDetails")
-public class CellDetails implements Comparable<CellDetails>{
-
- private String networkId;
- private String nodeId;
- private long physicalCellId;
- private String nodeName;
- private String nodeType;
- private boolean pciCollisionDetected;
- private boolean pciConfusionDetected;
- private float gridX;
- private float gridY;
- private float screenX;
- private float screenY;
- private String latitude;
- private String longitude;
- private String serverId;
- private int sectorNumber = 0;
- private String color;
-
- /**
- * Constructor with cell Id, pci and server Id for test cases.
- *
- * @param nodeId
- * Node Id of Cell
- * @param physicalCellId
- * Pci value of the cell.
- * @param serverId
- * Server Id of the cell.
- */
- public CellDetails(String nodeId, long physicalCellId, String serverId) {
- super();
- this.nodeId = nodeId;
- this.physicalCellId = physicalCellId;
- this.serverId = serverId;
- }
-
- /**
- * A constructor for CellDetails( Database to store cell details).
- *
- * @param networkId
- * network Id of the cell
- * @param nodeId
- * node Id of the cell
- * @param physicalCellId
- * PCI number of the cell
- * @param nodeName
- * node name
- * @param nodeType
- * node type based on the cluster
- * @param pciCollisionDetected
- * Checks if the cell has collision
- * @param pciConfusionDetected
- * Checks if the cell has confusion
- *
- * @param gridX
- * --
- * @param gridY
- * --
- * @param screenX
- * x coordinate of the cell in the GUI
- * @param screenY
- * y coordinate of the cell in the GUI
- * @param latitude
- * latitude of the cell node
- * @param longitude
- * longitude of the cell node
- * @param serverId
- * server Id of the netconf server it belongs to
- * @param sectorNumber
- * sector number of the cell
- * @param color
- * color of the cell in the GUI
- */
- public CellDetails(String networkId, String nodeId, long physicalCellId, String nodeName,
- String nodeType, boolean pciCollisionDetected, boolean pciConfusionDetected,
- float gridX, float gridY, float screenX, float screenY, String latitude,
- String longitude, String serverId, int sectorNumber, String color) {
- super();
- this.networkId = networkId;
- this.nodeId = nodeId;
- this.physicalCellId = physicalCellId;
- this.nodeName = nodeName;
- this.nodeType = nodeType;
- this.pciCollisionDetected = pciCollisionDetected;
- this.pciConfusionDetected = pciConfusionDetected;
-
- this.gridX = gridX;
- this.gridY = gridY;
- this.screenX = screenX;
- this.screenY = screenY;
- this.latitude = latitude;
- this.longitude = longitude;
- this.serverId = serverId;
- this.sectorNumber = sectorNumber;
- this.color = color;
- }
-
- public CellDetails() {
- super();
- }
-
- public String getNetworkId() {
- return networkId;
- }
-
- public void setNetworkId(String networkId) {
- this.networkId = networkId;
- }
-
- @Id
- @Column(name = "nodeId", unique = true, nullable = false, length = 50)
- public String getNodeId() {
- return nodeId;
- }
-
- public void setNodeId(String nodeId) {
- this.nodeId = nodeId;
- }
-
- public long getPhysicalCellId() {
- return physicalCellId;
- }
-
- public void setPhysicalCellId(long physicalCellId) {
- this.physicalCellId = physicalCellId;
- }
-
- public String getNodeName() {
- return nodeName;
- }
-
- public void setNodeName(String nodeName) {
- this.nodeName = nodeName;
- }
-
- public String getNodeType() {
- return nodeType;
- }
-
- public void setNodeType(String nodeType) {
- this.nodeType = nodeType;
- }
-
- public boolean isPciCollisionDetected() {
- return pciCollisionDetected;
- }
-
- public void setPciCollisionDetected(boolean pciCollisionDetected) {
- this.pciCollisionDetected = pciCollisionDetected;
- }
-
- public boolean isPciConfusionDetected() {
- return pciConfusionDetected;
- }
-
- public void setPciConfusionDetected(boolean pciConfusionDetected) {
- this.pciConfusionDetected = pciConfusionDetected;
- }
-
- public float getGridX() {
- return gridX;
- }
-
- public void setGridX(float gridX) {
- this.gridX = gridX;
- }
-
- public float getGridY() {
- return gridY;
- }
-
- public void setGridY(float gridY) {
- this.gridY = gridY;
- }
-
- public float getScreenX() {
- return screenX;
- }
-
- public void setScreenX(float screenX) {
- this.screenX = screenX;
- }
-
- public float getScreenY() {
- return screenY;
- }
-
- public void setScreenY(float screenY) {
- this.screenY = screenY;
- }
-
- public String getServerId() {
- return serverId;
- }
-
- public void setServerId(String serverId) {
- this.serverId = serverId;
- }
-
- public int getSectorNumber() {
- return sectorNumber;
- }
-
- public void setSectorNumber(int sectorNumber) {
- this.sectorNumber = sectorNumber;
- }
-
- public String getColor() {
- return color;
- }
-
- public void setColor(String color) {
- this.color = color;
- }
-
- public String getLatitude() {
- return latitude;
- }
-
- public void setLatitude(String latitude) {
- this.latitude = latitude;
- }
-
- public String getLongitude() {
- return longitude;
- }
-
- public void setLongitude(String longitude) {
- this.longitude = longitude;
- }
-
- @Override
- public String toString() {
- return "Cell Details [networkId=" + networkId + ", nodeId=" + nodeId + ", physicalCellId="
- + physicalCellId + ", nodeName=" + nodeName + ", nodeType=" + nodeType
- + ", pciCollisionDetected=" + pciCollisionDetected + ", pciConfusionDetected="
- + pciConfusionDetected + "]";
- }
-
- @Override
- public int compareTo(CellDetails cd) {
- return this.getNodeId().compareTo(cd.getNodeId());
- }
+public class CellDetails implements Comparable<CellDetails> {
+
+ private String networkId;
+ private String nodeId;
+ private long physicalCellId;
+ private String nodeName;
+ private String nodeType;
+ private boolean pciCollisionDetected;
+ private boolean pciConfusionDetected;
+ private float gridX;
+ private float gridY;
+ private float screenX;
+ private float screenY;
+ private String latitude;
+ private String longitude;
+ private String serverId;
+ private int sectorNumber = 0;
+ private String color;
+
+ /**
+ * Constructor with cell Id, pci and server Id for test cases.
+ *
+ * @param nodeId Node Id of Cell
+ * @param physicalCellId Pci value of the cell.
+ * @param serverId Server Id of the cell.
+ */
+ public CellDetails(String nodeId, long physicalCellId, String serverId) {
+ super();
+ this.nodeId = nodeId;
+ this.physicalCellId = physicalCellId;
+ this.serverId = serverId;
+ }
+
+ /**
+ * A constructor for CellDetails( Database to store cell details).
+ *
+ * @param networkId network Id of the cell
+ * @param nodeId node Id of the cell
+ * @param physicalCellId PCI number of the cell
+ * @param nodeName node name
+ * @param nodeType node type based on the cluster
+ * @param pciCollisionDetected Checks if the cell has collision
+ * @param pciConfusionDetected Checks if the cell has confusion
+ *
+ * @param gridX --
+ * @param gridY --
+ * @param screenX x coordinate of the cell in the GUI
+ * @param screenY y coordinate of the cell in the GUI
+ * @param latitude latitude of the cell node
+ * @param longitude longitude of the cell node
+ * @param serverId server Id of the netconf server it belongs to
+ * @param sectorNumber sector number of the cell
+ * @param color color of the cell in the GUI
+ */
+ public CellDetails(String networkId, String nodeId, long physicalCellId, String nodeName, String nodeType,
+ boolean pciCollisionDetected, boolean pciConfusionDetected, float gridX, float gridY, float screenX,
+ float screenY, String latitude, String longitude, String serverId, int sectorNumber, String color) {
+ super();
+ this.networkId = networkId;
+ this.nodeId = nodeId;
+ this.physicalCellId = physicalCellId;
+ this.nodeName = nodeName;
+ this.nodeType = nodeType;
+ this.pciCollisionDetected = pciCollisionDetected;
+ this.pciConfusionDetected = pciConfusionDetected;
+
+ this.gridX = gridX;
+ this.gridY = gridY;
+ this.screenX = screenX;
+ this.screenY = screenY;
+ this.latitude = latitude;
+ this.longitude = longitude;
+ this.serverId = serverId;
+ this.sectorNumber = sectorNumber;
+ this.color = color;
+ }
+
+ public CellDetails() {
+ super();
+ }
+
+ public String getNetworkId() {
+ return networkId;
+ }
+
+ public void setNetworkId(String networkId) {
+ this.networkId = networkId;
+ }
+
+ @Id
+ @Column(name = "nodeId", unique = true, nullable = false, length = 50)
+ public String getNodeId() {
+ return nodeId;
+ }
+
+ public void setNodeId(String nodeId) {
+ this.nodeId = nodeId;
+ }
+
+ public long getPhysicalCellId() {
+ return physicalCellId;
+ }
+
+ public void setPhysicalCellId(long physicalCellId) {
+ this.physicalCellId = physicalCellId;
+ }
+
+ public String getNodeName() {
+ return nodeName;
+ }
+
+ public void setNodeName(String nodeName) {
+ this.nodeName = nodeName;
+ }
+
+ public String getNodeType() {
+ return nodeType;
+ }
+
+ public void setNodeType(String nodeType) {
+ this.nodeType = nodeType;
+ }
+
+ public boolean isPciCollisionDetected() {
+ return pciCollisionDetected;
+ }
+
+ public void setPciCollisionDetected(boolean pciCollisionDetected) {
+ this.pciCollisionDetected = pciCollisionDetected;
+ }
+
+ public boolean isPciConfusionDetected() {
+ return pciConfusionDetected;
+ }
+
+ public void setPciConfusionDetected(boolean pciConfusionDetected) {
+ this.pciConfusionDetected = pciConfusionDetected;
+ }
+
+ public float getGridX() {
+ return gridX;
+ }
+
+ public void setGridX(float gridX) {
+ this.gridX = gridX;
+ }
+
+ public float getGridY() {
+ return gridY;
+ }
+
+ public void setGridY(float gridY) {
+ this.gridY = gridY;
+ }
+
+ public float getScreenX() {
+ return screenX;
+ }
+
+ public void setScreenX(float screenX) {
+ this.screenX = screenX;
+ }
+
+ public float getScreenY() {
+ return screenY;
+ }
+
+ public void setScreenY(float screenY) {
+ this.screenY = screenY;
+ }
+
+ public String getServerId() {
+ return serverId;
+ }
+
+ public void setServerId(String serverId) {
+ this.serverId = serverId;
+ }
+
+ public int getSectorNumber() {
+ return sectorNumber;
+ }
+
+ public void setSectorNumber(int sectorNumber) {
+ this.sectorNumber = sectorNumber;
+ }
+
+ public String getColor() {
+ return color;
+ }
+
+ public void setColor(String color) {
+ this.color = color;
+ }
+
+ public String getLatitude() {
+ return latitude;
+ }
+
+ public void setLatitude(String latitude) {
+ this.latitude = latitude;
+ }
+
+ public String getLongitude() {
+ return longitude;
+ }
+
+ public void setLongitude(String longitude) {
+ this.longitude = longitude;
+ }
+
+ @Override
+ public String toString() {
+ return "Cell Details [networkId=" + networkId + ", nodeId=" + nodeId + ", physicalCellId=" + physicalCellId
+ + ", nodeName=" + nodeName + ", nodeType=" + nodeType + ", pciCollisionDetected=" + pciCollisionDetected
+ + ", pciConfusionDetected=" + pciConfusionDetected + "]";
+ }
+
+ @Override
+ public int compareTo(CellDetails cd) {
+ return this.getNodeId().compareTo(cd.getNodeId());
+ }
}
diff --git a/ransim/ransimctrlr/RANSIM-CTRLR/src/main/java/org/onap/ransim/rest/api/models/CellInfo.java b/ransim/ransimctrlr/RANSIM-CTRLR/src/main/java/org/onap/ransim/rest/api/models/CellInfo.java
index e9dbbe0..9a1b8da 100644
--- a/ransim/ransimctrlr/RANSIM-CTRLR/src/main/java/org/onap/ransim/rest/api/models/CellInfo.java
+++ b/ransim/ransimctrlr/RANSIM-CTRLR/src/main/java/org/onap/ransim/rest/api/models/CellInfo.java
@@ -21,103 +21,96 @@
package org.onap.ransim.rest.api.models;
public class CellInfo {
-
- private String networkId;
- private String nodeId;
- private long physicalCellId;
- private String pnfName;
- private int sectorNumber;
- private String latitude;
- private String longitude;
-
- /**
- * A constructor for CellInfo.
- *
- * @param networkId
- * network Id of the cell
- * @param nodeId
- * node Id of the cell
- * @param physicalCellId
- * PCI number of the cell
- * @param pnfName
- * netconf server id
- * @param sectorNumber
- * sector number for the cell
- * @param latitude
- * latitude of the node
- * @param longitude
- * longitude of the node
- */
- public CellInfo(String networkId, String nodeId, long physicalCellId,
- String pnfName, int sectorNumber, String latitude, String longitude) {
- super();
- this.networkId = networkId;
- this.nodeId = nodeId;
- this.physicalCellId = physicalCellId;
- this.pnfName = pnfName;
- this.sectorNumber = sectorNumber;
- this.latitude = latitude;
- this.longitude = longitude;
- }
-
- public CellInfo() {
-
- }
-
- public String getNetworkId() {
- return networkId;
- }
-
- public void setNetworkId(String networkId) {
- this.networkId = networkId;
- }
-
- public String getNodeId() {
- return nodeId;
- }
-
- public void setNodeId(String nodeId) {
- this.nodeId = nodeId;
- }
-
- public long getPhysicalCellId() {
- return physicalCellId;
- }
-
- public void setPhysicalCellId(long physicalCellId) {
- this.physicalCellId = physicalCellId;
- }
-
- public String getPnfName() {
- return pnfName;
- }
-
- public void setPnfName(String pnfName) {
- this.pnfName = pnfName;
- }
-
- public int getSectorNumber() {
- return sectorNumber;
- }
-
- public void setSectorNumber(int sectorNumber) {
- this.sectorNumber = sectorNumber;
- }
-
- public String getLatitude() {
- return latitude;
- }
-
- public void setLatitude(String latitude) {
- this.latitude = latitude;
- }
-
- public String getLongitude() {
- return longitude;
- }
-
- public void setLongitude(String longitude) {
- this.longitude = longitude;
- }
-
+
+ private String networkId;
+ private String nodeId;
+ private long physicalCellId;
+ private String pnfName;
+ private int sectorNumber;
+ private String latitude;
+ private String longitude;
+
+ /**
+ * A constructor for CellInfo.
+ *
+ * @param networkId network Id of the cell
+ * @param nodeId node Id of the cell
+ * @param physicalCellId PCI number of the cell
+ * @param pnfName netconf server id
+ * @param sectorNumber sector number for the cell
+ * @param latitude latitude of the node
+ * @param longitude longitude of the node
+ */
+ public CellInfo(String networkId, String nodeId, long physicalCellId, String pnfName, int sectorNumber,
+ String latitude, String longitude) {
+ super();
+ this.networkId = networkId;
+ this.nodeId = nodeId;
+ this.physicalCellId = physicalCellId;
+ this.pnfName = pnfName;
+ this.sectorNumber = sectorNumber;
+ this.latitude = latitude;
+ this.longitude = longitude;
+ }
+
+ public CellInfo() {
+
+ }
+
+ public String getNetworkId() {
+ return networkId;
+ }
+
+ public void setNetworkId(String networkId) {
+ this.networkId = networkId;
+ }
+
+ public String getNodeId() {
+ return nodeId;
+ }
+
+ public void setNodeId(String nodeId) {
+ this.nodeId = nodeId;
+ }
+
+ public long getPhysicalCellId() {
+ return physicalCellId;
+ }
+
+ public void setPhysicalCellId(long physicalCellId) {
+ this.physicalCellId = physicalCellId;
+ }
+
+ public String getPnfName() {
+ return pnfName;
+ }
+
+ public void setPnfName(String pnfName) {
+ this.pnfName = pnfName;
+ }
+
+ public int getSectorNumber() {
+ return sectorNumber;
+ }
+
+ public void setSectorNumber(int sectorNumber) {
+ this.sectorNumber = sectorNumber;
+ }
+
+ public String getLatitude() {
+ return latitude;
+ }
+
+ public void setLatitude(String latitude) {
+ this.latitude = latitude;
+ }
+
+ public String getLongitude() {
+ return longitude;
+ }
+
+ public void setLongitude(String longitude) {
+ this.longitude = longitude;
+ }
+
}
diff --git a/ransim/ransimctrlr/RANSIM-CTRLR/src/main/java/org/onap/ransim/rest/api/models/CellNeighbor.java b/ransim/ransimctrlr/RANSIM-CTRLR/src/main/java/org/onap/ransim/rest/api/models/CellNeighbor.java
index aca96ca..f0b9872 100644
--- a/ransim/ransimctrlr/RANSIM-CTRLR/src/main/java/org/onap/ransim/rest/api/models/CellNeighbor.java
+++ b/ransim/ransimctrlr/RANSIM-CTRLR/src/main/java/org/onap/ransim/rest/api/models/CellNeighbor.java
@@ -24,73 +24,63 @@ import java.util.ArrayList;
import java.util.List;
import java.util.Set;
+import javax.persistence.CascadeType;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.Id;
+import javax.persistence.FetchType;
import javax.persistence.OneToMany;
import javax.persistence.Table;
import org.apache.log4j.Logger;
-import org.onap.ransim.rest.api.controller.RansimControllerServices;
+import org.onap.ransim.rest.api.controller.RansimController;
@Entity
@Table(name = "CellNeighbor")
public class CellNeighbor {
-
- @Id
- @Column(name = "nodeId", unique = true, nullable = false, length = 52)
- private String nodeId;
-
- /*
- * @OneToMany(targetEntity = CellDetails.class) private Set<CellDetails>
- * neighborList;
- */
-
- @OneToMany(targetEntity = NeighborDetails.class)
- private Set<NeighborDetails> neighborList;
-
- public CellNeighbor() {
- super();
- // TODO Auto-generated constructor stub
- }
-
- public CellNeighbor(String nodeId, Set<NeighborDetails> neighborList) {
- super();
- this.nodeId = nodeId;
- this.neighborList = neighborList;
- }
-
- public String getNodeId() {
- return nodeId;
- }
-
- public void setNodeId(String nodeId) {
- this.nodeId = nodeId;
- }
-
- public Set<NeighborDetails> getNeighborList() {
- return neighborList;
- }
-
- public void setNeighborList(Set<NeighborDetails> neighborList) {
- this.neighborList = neighborList;
- }
-
- static Logger log = Logger.getLogger(RansimControllerServices.class.getName());
-
- public void display() {
-
- List<NeighborDetails> iterator = new ArrayList<>(neighborList);
- for (int ii = 0; ii < iterator.size(); ii++) {
- log.info("neighbors NeighborList: "
- + iterator.get(ii).getNeigbor().getSourceCellNodeId() + " "
- + iterator.get(ii).getNeigbor().getNeighborCell() + " "
- + iterator.get(ii).isBlacklisted());
- }
-
- }
- /*
- * public void clearNeighborList() { this.neighborList.; }
- */
-
+
+ @Id
+ @Column(name = "nodeId", unique = true, nullable = false, length = 52)
+ private String nodeId;
+
+ @OneToMany(targetEntity = NeighborDetails.class,fetch = FetchType.EAGER, cascade = CascadeType.ALL)
+ private Set<NeighborDetails> neighborList;
+
+ public CellNeighbor() {
+ super();
+ }
+
+ public CellNeighbor(String nodeId, Set<NeighborDetails> neighborList) {
+ super();
+ this.nodeId = nodeId;
+ this.neighborList = neighborList;
+ }
+
+ public String getNodeId() {
+ return nodeId;
+ }
+
+ public void setNodeId(String nodeId) {
+ this.nodeId = nodeId;
+ }
+
+ public Set<NeighborDetails> getNeighborList() {
+ return neighborList;
+ }
+
+ public void setNeighborList(Set<NeighborDetails> neighborList) {
+ this.neighborList = neighborList;
+ }
+
+ static Logger log = Logger.getLogger(RansimController.class.getName());
+
+ public void display() {
+
+ List<NeighborDetails> iterator = new ArrayList<>(neighborList);
+ for (int ii = 0; ii < iterator.size(); ii++) {
+ log.info("neighbors NeighborList: " + iterator.get(ii).getNeigbor().getSourceCellNodeId() + " "
+ + iterator.get(ii).getNeigbor().getNeighborCell() + " " + iterator.get(ii).isBlacklisted());
+ }
+
+ }
}
diff --git a/ransim/ransimctrlr/RANSIM-CTRLR/src/main/java/org/onap/ransim/rest/api/models/ConfigData.java b/ransim/ransimctrlr/RANSIM-CTRLR/src/main/java/org/onap/ransim/rest/api/models/ConfigData.java
new file mode 100644
index 0000000..c75f3e9
--- /dev/null
+++ b/ransim/ransimctrlr/RANSIM-CTRLR/src/main/java/org/onap/ransim/rest/api/models/ConfigData.java
@@ -0,0 +1,21 @@
+package org.onap.ransim.rest.api.models;
+
+public class ConfigData {
+
+private int maxNumberOfConns;
+
+public ConfigData() {
+}
+public ConfigData(int maxNumberOfConns) {
+super();
+this.maxNumberOfConns = maxNumberOfConns;
+}
+
+public int getMaxNumberOfConns() {
+return maxNumberOfConns;
+}
+
+public void setMaxNumberOfConns(int maxNumberOfConns) {
+this.maxNumberOfConns = maxNumberOfConns;
+}
+}
diff --git a/ransim/ransimctrlr/RANSIM-CTRLR/src/main/java/org/onap/ransim/rest/api/models/CreateACellReq.java b/ransim/ransimctrlr/RANSIM-CTRLR/src/main/java/org/onap/ransim/rest/api/models/CreateACellReq.java
index 34e23a5..618facf 100644
--- a/ransim/ransimctrlr/RANSIM-CTRLR/src/main/java/org/onap/ransim/rest/api/models/CreateACellReq.java
+++ b/ransim/ransimctrlr/RANSIM-CTRLR/src/main/java/org/onap/ransim/rest/api/models/CreateACellReq.java
@@ -23,58 +23,55 @@ package org.onap.ransim.rest.api.models;
import java.io.Serializable;
public class CreateACellReq implements Serializable {
-
- private long physicalCellId;
-
- private int gridX;
- private int gridY;
-
- private static final long serialVersionUID = 3736300675426332512L;
-
- public CreateACellReq() {
- // Default constructor for CreateACellReq
- }
-
- /**
- * A constructor for CreateACellReq.
- *
- * @param physicalCellId
- * PCI number of the new cell
- * @param gridX
- * x coordinate value for the cell
- * @param gridY
- * y coordinate value for the cell
- */
- public CreateACellReq(long physicalCellId, int gridX, int gridY) {
- super();
-
- this.physicalCellId = physicalCellId;
-
- this.gridX = gridX;
- this.gridY = gridY;
- }
-
- public long getPhysicalCellId() {
- return physicalCellId;
- }
-
- public void setPhysicalCellId(long physicalCellId) {
- this.physicalCellId = physicalCellId;
- }
-
- public int getGridX() {
- return gridX;
- }
-
- public void setGridX(int gridX) {
- this.gridX = gridX;
- }
-
- public int getGridY() {
- return gridY;
- }
-
- public void setGridY(int gridY) {
- this.gridY = gridY;
- }
+
+ private long physicalCellId;
+
+ private int gridX;
+ private int gridY;
+
+ private static final long serialVersionUID = 3736300675426332512L;
+
+ public CreateACellReq() {
+ // Default constructor for CreateACellReq
+ }
+
+ /**
+ * A constructor for CreateACellReq.
+ *
+ * @param physicalCellId PCI number of the new cell
+ * @param gridX x coordinate value for the cell
+ * @param gridY y coordinate value for the cell
+ */
+ public CreateACellReq(long physicalCellId, int gridX, int gridY) {
+ super();
+
+ this.physicalCellId = physicalCellId;
+
+ this.gridX = gridX;
+ this.gridY = gridY;
+ }
+
+ public long getPhysicalCellId() {
+ return physicalCellId;
+ }
+
+ public void setPhysicalCellId(long physicalCellId) {
+ this.physicalCellId = physicalCellId;
+ }
+
+ public int getGridX() {
+ return gridX;
+ }
+
+ public void setGridX(int gridX) {
+ this.gridX = gridX;
+ }
+
+ public int getGridY() {
+ return gridY;
+ }
+
+ public void setGridY(int gridY) {
+ this.gridY = gridY;
+ }
}
diff --git a/ransim/ransimctrlr/RANSIM-CTRLR/src/main/java/org/onap/ransim/rest/api/models/DeleteACellReq.java b/ransim/ransimctrlr/RANSIM-CTRLR/src/main/java/org/onap/ransim/rest/api/models/DeleteACellReq.java
index a2a01ac..a6a7baf 100644
--- a/ransim/ransimctrlr/RANSIM-CTRLR/src/main/java/org/onap/ransim/rest/api/models/DeleteACellReq.java
+++ b/ransim/ransimctrlr/RANSIM-CTRLR/src/main/java/org/onap/ransim/rest/api/models/DeleteACellReq.java
@@ -21,30 +21,29 @@
package org.onap.ransim.rest.api.models;
public class DeleteACellReq {
-
- private String nodeId;
-
- /**
- * A constructor for DeleteACellReq.
- *
- * @param nodeId
- * node Id of the cell to be deleted
- */
- public DeleteACellReq(String nodeId) {
- super();
- this.nodeId = nodeId;
- }
-
- public DeleteACellReq() {
-
- }
-
- public String getNodeId() {
- return nodeId;
- }
-
- public void setNodeId(String nodeId) {
- this.nodeId = nodeId;
- }
-
+
+ private String nodeId;
+
+ /**
+ * A constructor for DeleteACellReq.
+ *
+ * @param nodeId node Id of the cell to be deleted
+ */
+ public DeleteACellReq(String nodeId) {
+ super();
+ this.nodeId = nodeId;
+ }
+
+ public DeleteACellReq() {
+
+ }
+
+ public String getNodeId() {
+ return nodeId;
+ }
+
+ public void setNodeId(String nodeId) {
+ this.nodeId = nodeId;
+ }
+
}
diff --git a/ransim/ransimctrlr/RANSIM-CTRLR/src/main/java/org/onap/ransim/rest/api/models/FmAlarmInfo.java b/ransim/ransimctrlr/RANSIM-CTRLR/src/main/java/org/onap/ransim/rest/api/models/FmAlarmInfo.java
index 6a01498..6b00369 100644
--- a/ransim/ransimctrlr/RANSIM-CTRLR/src/main/java/org/onap/ransim/rest/api/models/FmAlarmInfo.java
+++ b/ransim/ransimctrlr/RANSIM-CTRLR/src/main/java/org/onap/ransim/rest/api/models/FmAlarmInfo.java
@@ -21,54 +21,51 @@
package org.onap.ransim.rest.api.models;
public class FmAlarmInfo {
-
- private String problem;
- private String collisionCount;
- private String confusionCount;
-
- public FmAlarmInfo() {
- super();
- }
-
- /**
- * Constructor with all fields.
- *
- * @param problem
- * Collision or Confusion
- * @param collisionCount
- * No of cells that causes collision.
- * @param confusionCount
- * No od cells that causes confusion.
- */
- public FmAlarmInfo(String problem, String collisionCount, String confusionCount) {
- super();
- this.problem = problem;
- this.collisionCount = collisionCount;
- this.confusionCount = confusionCount;
- }
-
- public String getProblem() {
- return problem;
- }
-
- public void setProblem(String problem) {
- this.problem = problem;
- }
-
- public String getCollisionCount() {
- return collisionCount;
- }
-
- public void setCollisionCount(String collisionCount) {
- this.collisionCount = collisionCount;
- }
-
- public String getConfusionCount() {
- return confusionCount;
- }
-
- public void setConfusionCount(String confusionCount) {
- this.confusionCount = confusionCount;
- }
-
+
+ private String problem;
+ private String collisionCount;
+ private String confusionCount;
+
+ public FmAlarmInfo() {
+ super();
+ }
+
+ /**
+ * Constructor with all fields.
+ *
+ * @param problem Collision or Confusion
+ * @param collisionCount No of cells that causes collision.
+ * @param confusionCount No od cells that causes confusion.
+ */
+ public FmAlarmInfo(String problem, String collisionCount, String confusionCount) {
+ super();
+ this.problem = problem;
+ this.collisionCount = collisionCount;
+ this.confusionCount = confusionCount;
+ }
+
+ public String getProblem() {
+ return problem;
+ }
+
+ public void setProblem(String problem) {
+ this.problem = problem;
+ }
+
+ public String getCollisionCount() {
+ return collisionCount;
+ }
+
+ public void setCollisionCount(String collisionCount) {
+ this.collisionCount = collisionCount;
+ }
+
+ public String getConfusionCount() {
+ return confusionCount;
+ }
+
+ public void setConfusionCount(String confusionCount) {
+ this.confusionCount = confusionCount;
+ }
+
}
diff --git a/ransim/ransimctrlr/RANSIM-CTRLR/src/main/java/org/onap/ransim/rest/api/models/GNBCUCPFunction.java b/ransim/ransimctrlr/RANSIM-CTRLR/src/main/java/org/onap/ransim/rest/api/models/GNBCUCPFunction.java
new file mode 100644
index 0000000..4c5f0af
--- /dev/null
+++ b/ransim/ransimctrlr/RANSIM-CTRLR/src/main/java/org/onap/ransim/rest/api/models/GNBCUCPFunction.java
@@ -0,0 +1,79 @@
+package org.onap.ransim.rest.api.models;
+
+import java.io.Serializable;
+import java.util.List;
+
+import javax.persistence.CascadeType;
+import javax.persistence.Column;
+import javax.persistence.Entity;
+import javax.persistence.Id;
+import javax.persistence.JoinColumn;
+import javax.persistence.ManyToOne;
+import javax.persistence.OneToMany;
+import javax.persistence.Table;
+
+@Entity
+@Table(name="GNBCUCPFUNCTION")
+public class GNBCUCPFunction implements Serializable{
+ private static final long serialVersionUID = 1L;
+ @Id
+ @Column(name="GNBCUNAME")
+ private String gNBCUName;
+ @Column(name="GNBID")
+ private Integer gNBId;
+ @Column(name="GNBIDLENGTH")
+ private Integer gNBIdLength;
+ @Column(name="PLMNID")
+ private String pLMNId;
+ @Column(name="NFTYPE")
+ private String nFType;
+ @Column(name="CELLCULIST")
+ @OneToMany(mappedBy = "gNBCUCPFunction", cascade=CascadeType.ALL)
+ private List<NRCellCU> cellCUList;
+ @ManyToOne//(cascade=CascadeType.ALL)
+ @JoinColumn(name = "nearrtricid")
+ private NearRTRIC nearRTRIC;
+ public String getgNBCUName() {
+ return gNBCUName;
+ }
+ public void setgNBCUName(String gNBCUName) {
+ this.gNBCUName = gNBCUName;
+ }
+ public Integer getgNBId() {
+ return gNBId;
+ }
+ public void setgNBId(Integer gNBId) {
+ this.gNBId = gNBId;
+ }
+ public Integer getgNBIdLength() {
+ return gNBIdLength;
+ }
+ public void setgNBIdLength(Integer gNBIdLength) {
+ this.gNBIdLength = gNBIdLength;
+ }
+ public String getpLMNId() {
+ return pLMNId;
+ }
+ public void setpLMNId(String pLMNId) {
+ this.pLMNId = pLMNId;
+ }
+ public List<NRCellCU> getCellCUList() {
+ return cellCUList;
+ }
+ public void setCellCUList(List<NRCellCU> cellCUList) {
+ this.cellCUList = cellCUList;
+ }
+ public NearRTRIC getNearRTRIC() {
+ return nearRTRIC;
+ }
+ public void setNearRTRIC(NearRTRIC nearRTRIC) {
+ this.nearRTRIC = nearRTRIC;
+ }
+ public String getnFType() {
+ return nFType;
+ }
+ public void setnFType(String nFType) {
+ this.nFType = nFType;
+ }
+
+} \ No newline at end of file
diff --git a/ransim/ransimctrlr/RANSIM-CTRLR/src/main/java/org/onap/ransim/rest/api/models/GNBCUUPFunction.java b/ransim/ransimctrlr/RANSIM-CTRLR/src/main/java/org/onap/ransim/rest/api/models/GNBCUUPFunction.java
new file mode 100644
index 0000000..2e5d62b
--- /dev/null
+++ b/ransim/ransimctrlr/RANSIM-CTRLR/src/main/java/org/onap/ransim/rest/api/models/GNBCUUPFunction.java
@@ -0,0 +1,79 @@
+package org.onap.ransim.rest.api.models;
+
+import java.io.Serializable;
+import java.util.List;
+
+import javax.persistence.CascadeType;
+import javax.persistence.CollectionTable;
+import javax.persistence.Column;
+import javax.persistence.ElementCollection;
+import javax.persistence.Entity;
+import javax.persistence.FetchType;
+import javax.persistence.Id;
+import javax.persistence.JoinColumn;
+import javax.persistence.ManyToOne;
+import javax.persistence.Table;
+@Entity
+@Table(name="GNBCUUPFUNCTION")
+public class GNBCUUPFunction implements Serializable{
+ private static final long serialVersionUID = 1L;
+ @Id
+ @Column(name="GNBCUUPID")
+ private Integer gNBCUUPId;
+ @Column(name="GNBID")
+ private Integer gNBId;
+ @Column(name="GNBIDLENGTH")
+ private Integer gNBIdLength;
+ //@Column(name="PLMNINFOLIST")
+ //@OneToMany(mappedBy = "gNBCUUPFunction", cascade={CascadeType.PERSIST,CascadeType.REMOVE})
+ @ElementCollection(fetch = FetchType.EAGER)
+ @CollectionTable(name="PLMNINFO",joinColumns = @JoinColumn(name="gnbcuupid"))
+ private List<PLMNInfo> pLMNInfoList;
+ @Column(name="RESOURCETYPE")
+ private String resourceType;
+ @ManyToOne(cascade=CascadeType.ALL)
+ @JoinColumn(name = "nearrtricid")
+ private NearRTRIC nearRTRIC;
+ public Integer getgNBCUUPId() {
+ return gNBCUUPId;
+ }
+ public void setgNBCUUPId(Integer gNBCUUPId) {
+ this.gNBCUUPId = gNBCUUPId;
+ }
+ public Integer getgNBId() {
+ return gNBId;
+ }
+ public void setgNBId(Integer gNBId) {
+ this.gNBId = gNBId;
+ }
+ public Integer getgNBIdLength() {
+ return gNBIdLength;
+ }
+ public void setgNBIdLength(Integer gNBIdLength) {
+ this.gNBIdLength = gNBIdLength;
+ }
+ public List<PLMNInfo> getpLMNInfoList() {
+ return pLMNInfoList;
+ }
+ public void setpLMNInfoList(List<PLMNInfo> pLMNInfoList) {
+ this.pLMNInfoList = pLMNInfoList;
+ }
+ public NearRTRIC getNearRTRIC() {
+ return nearRTRIC;
+ }
+ public void setNearRTRIC(NearRTRIC nearRTRIC) {
+ this.nearRTRIC = nearRTRIC;
+ }
+ public String getResourceType() {
+ return resourceType;
+ }
+ public void setResourceType(String resourceType) {
+ this.resourceType = resourceType;
+ }
+ @Override
+ public String toString() {
+ return "GNBCUUPFunction [gNBCUUPId=" + gNBCUUPId + ", gNBId=" + gNBId + ", gNBIdLength=" + gNBIdLength
+ + ", pLMNInfoList=" + pLMNInfoList + ", resourceType=" + resourceType + ", nearRTRIC=" + nearRTRIC
+ + "]";
+ }
+}
diff --git a/ransim/ransimctrlr/RANSIM-CTRLR/src/main/java/org/onap/ransim/rest/api/models/GNBDUFunction.java b/ransim/ransimctrlr/RANSIM-CTRLR/src/main/java/org/onap/ransim/rest/api/models/GNBDUFunction.java
new file mode 100644
index 0000000..c64472a
--- /dev/null
+++ b/ransim/ransimctrlr/RANSIM-CTRLR/src/main/java/org/onap/ransim/rest/api/models/GNBDUFunction.java
@@ -0,0 +1,86 @@
+package org.onap.ransim.rest.api.models;
+
+import java.io.Serializable;
+import java.util.List;
+import javax.persistence.CascadeType;
+import javax.persistence.Column;
+import javax.persistence.Entity;
+import javax.persistence.Id;
+import javax.persistence.JoinColumn;
+import javax.persistence.ManyToOne;
+import javax.persistence.OneToMany;
+import javax.persistence.Table;
+
+@Entity
+@Table(name="GNBDUFUNCTION")
+public class GNBDUFunction implements Serializable{
+ private static final long serialVersionUID = 1L;
+ @Id
+ @Column(name="GNBDUID")
+ private Integer gNBDUId;
+ @Column(name="GNBID")
+ private Integer gNBId;
+ @Column(name="GNBIDLENGTH")
+ private Integer gNBIdLength;
+ @Column(name="GNBDUNAME")
+ private String gNBDUName;
+ @Column(name="PLMNID")
+ private String pLMNId;
+ @Column(name="NFTYPE")
+ private String nFType;
+ @Column(name="CELLDULIST")
+ @OneToMany(mappedBy = "gNBDUFunction",cascade=CascadeType.ALL)
+ private List<NRCellDU> cellDUList;
+ @ManyToOne
+ @JoinColumn(name = "nearrtricid")
+ private NearRTRIC nearRTRIC;
+ public Integer getgNBDUId() {
+ return gNBDUId;
+ }
+ public void setgNBDUId(Integer gNBDUId) {
+ this.gNBDUId = gNBDUId;
+ }
+ public Integer getgNBId() {
+ return gNBId;
+ }
+ public void setgNBId(Integer gNBId) {
+ this.gNBId = gNBId;
+ }
+ public Integer getgNBIdLength() {
+ return gNBIdLength;
+ }
+ public void setgNBIdLength(Integer gNBIdLength) {
+ this.gNBIdLength = gNBIdLength;
+ }
+ public String getgNBDUName() {
+ return gNBDUName;
+ }
+ public void setgNBDUName(String gNBDUName) {
+ this.gNBDUName = gNBDUName;
+ }
+ public String getpLMNId() {
+ return pLMNId;
+ }
+ public void setpLMNId(String pLMNId) {
+ this.pLMNId = pLMNId;
+ }
+ public List<NRCellDU> getCellDUList() {
+ return cellDUList;
+ }
+ public void setCellDUList(List<NRCellDU> cellDUList) {
+ this.cellDUList = cellDUList;
+ }
+ public NearRTRIC getNearRTRIC() {
+ return nearRTRIC;
+ }
+ public void setNearRTRIC(NearRTRIC nearRTRIC) {
+ this.nearRTRIC = nearRTRIC;
+ }
+ public String getnFType() {
+ return nFType;
+ }
+ public void setnFType(String nFType) {
+ this.nFType = nFType;
+ }
+
+} \ No newline at end of file
diff --git a/ransim/ransimctrlr/RANSIM-CTRLR/src/main/java/org/onap/ransim/rest/api/models/GetACellDetailReq.java b/ransim/ransimctrlr/RANSIM-CTRLR/src/main/java/org/onap/ransim/rest/api/models/GetACellDetailReq.java
index a8104fe..8d49d1a 100644
--- a/ransim/ransimctrlr/RANSIM-CTRLR/src/main/java/org/onap/ransim/rest/api/models/GetACellDetailReq.java
+++ b/ransim/ransimctrlr/RANSIM-CTRLR/src/main/java/org/onap/ransim/rest/api/models/GetACellDetailReq.java
@@ -21,30 +21,29 @@
package org.onap.ransim.rest.api.models;
public class GetACellDetailReq {
-
- private String nodeId;
-
- /**
- * A constructor for GetACellDetailReq.
- *
- * @param nodeId
- * node id of the cell
- */
- public GetACellDetailReq(String nodeId) {
- super();
- this.nodeId = nodeId;
- }
-
- public GetACellDetailReq() {
-
- }
-
- public String getNodeId() {
- return nodeId;
- }
-
- public void setNodeId(String nodeId) {
- this.nodeId = nodeId;
- }
-
+
+ private String nodeId;
+
+ /**
+ * A constructor for GetACellDetailReq.
+ *
+ * @param nodeId node id of the cell
+ */
+ public GetACellDetailReq(String nodeId) {
+ super();
+ this.nodeId = nodeId;
+ }
+
+ public GetACellDetailReq() {
+
+ }
+
+ public String getNodeId() {
+ return nodeId;
+ }
+
+ public void setNodeId(String nodeId) {
+ this.nodeId = nodeId;
+ }
+
}
diff --git a/ransim/ransimctrlr/RANSIM-CTRLR/src/main/java/org/onap/ransim/rest/api/models/GetNeighborList.java b/ransim/ransimctrlr/RANSIM-CTRLR/src/main/java/org/onap/ransim/rest/api/models/GetNeighborList.java
index 497df10..320db9d 100644
--- a/ransim/ransimctrlr/RANSIM-CTRLR/src/main/java/org/onap/ransim/rest/api/models/GetNeighborList.java
+++ b/ransim/ransimctrlr/RANSIM-CTRLR/src/main/java/org/onap/ransim/rest/api/models/GetNeighborList.java
@@ -22,55 +22,51 @@ package org.onap.ransim.rest.api.models;
import java.util.List;
public class GetNeighborList {
-
- private String nodeId;
- private List<CellDetails> cellsWithNoHo;
- private List<CellDetails> cellsWithHo;
-
- public GetNeighborList() {
- super();
- }
-
- /**
- * Constructor with all fields.
- *
- * @param nodeId
- * Node Id of cell
- * @param cellsWithNoHO
- * List of neighbors with unsuccessful handover.
- * @param cellsWithHO
- * List of neighbors with successful handover.
- */
- public GetNeighborList(String nodeId, List<CellDetails> cellsWithNoHo,
- List<CellDetails> cellsWithHo) {
- super();
- this.nodeId = nodeId;
- this.cellsWithNoHo = cellsWithNoHo;
- this.cellsWithHo = cellsWithHo;
- }
-
- public String getNodeId() {
- return nodeId;
- }
-
- public void setNodeId(String nodeId) {
- this.nodeId = nodeId;
- }
-
- public List<CellDetails> getCellsWithNoHo() {
- return cellsWithNoHo;
- }
-
- public void setCellsWithNoHo(List<CellDetails> cellsWithNoHo) {
- this.cellsWithNoHo = cellsWithNoHo;
- }
-
- public List<CellDetails> getCellsWithHo() {
- return cellsWithHo;
- }
-
- public void setCellsWithHo(List<CellDetails> cellsWithHo) {
- this.cellsWithHo = cellsWithHo;
- }
-
+
+ private String nodeId;
+ private List<CellDetails> cellsWithNoHo;
+ private List<CellDetails> cellsWithHo;
+
+ public GetNeighborList() {
+ super();
+ }
+
+ /**
+ * Constructor with all fields.
+ *
+ * @param nodeId Node Id of cell
+ * @param cellsWithNoHO List of neighbors with unsuccessful handover.
+ * @param cellsWithHO List of neighbors with successful handover.
+ */
+ public GetNeighborList(String nodeId, List<CellDetails> cellsWithNoHo, List<CellDetails> cellsWithHo) {
+ super();
+ this.nodeId = nodeId;
+ this.cellsWithNoHo = cellsWithNoHo;
+ this.cellsWithHo = cellsWithHo;
+ }
+
+ public String getNodeId() {
+ return nodeId;
+ }
+
+ public void setNodeId(String nodeId) {
+ this.nodeId = nodeId;
+ }
+
+ public List<CellDetails> getCellsWithNoHo() {
+ return cellsWithNoHo;
+ }
+
+ public void setCellsWithNoHo(List<CellDetails> cellsWithNoHo) {
+ this.cellsWithNoHo = cellsWithNoHo;
+ }
+
+ public List<CellDetails> getCellsWithHo() {
+ return cellsWithHo;
+ }
+
+ public void setCellsWithHo(List<CellDetails> cellsWithHo) {
+ this.cellsWithHo = cellsWithHo;
+ }
+
}
diff --git a/ransim/ransimctrlr/RANSIM-CTRLR/src/main/java/org/onap/ransim/rest/api/models/GetNeighborListReq.java b/ransim/ransimctrlr/RANSIM-CTRLR/src/main/java/org/onap/ransim/rest/api/models/GetNeighborListReq.java
index 772211c..3ec491c 100644
--- a/ransim/ransimctrlr/RANSIM-CTRLR/src/main/java/org/onap/ransim/rest/api/models/GetNeighborListReq.java
+++ b/ransim/ransimctrlr/RANSIM-CTRLR/src/main/java/org/onap/ransim/rest/api/models/GetNeighborListReq.java
@@ -21,30 +21,29 @@
package org.onap.ransim.rest.api.models;
public class GetNeighborListReq {
-
- private String nodeId;
-
- public GetNeighborListReq() {
-
- }
-
- /**
- * A constructor for GetNeighborListReq.
- *
- * @param nodeId
- * node Id of the cell who's neighbor list is required
- */
- public GetNeighborListReq(String nodeId) {
- super();
- this.nodeId = nodeId;
- }
-
- public String getNodeId() {
- return nodeId;
- }
-
- public void setNodeId(String nodeId) {
- this.nodeId = nodeId;
- }
-
+
+ private String nodeId;
+
+ public GetNeighborListReq() {
+
+ }
+
+ /**
+ * A constructor for GetNeighborListReq.
+ *
+ * @param nodeId node Id of the cell who's neighbor list is required
+ */
+ public GetNeighborListReq(String nodeId) {
+ super();
+ this.nodeId = nodeId;
+ }
+
+ public String getNodeId() {
+ return nodeId;
+ }
+
+ public void setNodeId(String nodeId) {
+ this.nodeId = nodeId;
+ }
+
}
diff --git a/ransim/ransimctrlr/RANSIM-CTRLR/src/main/java/org/onap/ransim/rest/api/models/GetNetconfServerDetailsReq.java b/ransim/ransimctrlr/RANSIM-CTRLR/src/main/java/org/onap/ransim/rest/api/models/GetNetconfServerDetailsReq.java
index baddd09..5349190 100644
--- a/ransim/ransimctrlr/RANSIM-CTRLR/src/main/java/org/onap/ransim/rest/api/models/GetNetconfServerDetailsReq.java
+++ b/ransim/ransimctrlr/RANSIM-CTRLR/src/main/java/org/onap/ransim/rest/api/models/GetNetconfServerDetailsReq.java
@@ -21,31 +21,30 @@
package org.onap.ransim.rest.api.models;
public class GetNetconfServerDetailsReq {
-
- private String serverId;
-
- /**
- * A constructor for GetNetconfServerDetailsReq.
- *
- * @param serverId
- * server Id of the netconf server
- */
- public GetNetconfServerDetailsReq(String serverId) {
- super();
- this.serverId = serverId;
- }
-
- public GetNetconfServerDetailsReq() {
-
- // TODO Auto-generated constructor stub
- }
-
- public String getServerId() {
- return serverId;
- }
-
- public void setServerId(String serverId) {
- this.serverId = serverId;
- }
-
+
+ private String serverId;
+
+ /**
+ * A constructor for GetNetconfServerDetailsReq.
+ *
+ * @param serverId server Id of the netconf server
+ */
+ public GetNetconfServerDetailsReq(String serverId) {
+ super();
+ this.serverId = serverId;
+ }
+
+ public GetNetconfServerDetailsReq() {
+
+ // TODO Auto-generated constructor stub
+ }
+
+ public String getServerId() {
+ return serverId;
+ }
+
+ public void setServerId(String serverId) {
+ this.serverId = serverId;
+ }
+
}
diff --git a/ransim/ransimctrlr/RANSIM-CTRLR/src/main/java/org/onap/ransim/rest/api/models/GetPmDataReq.java b/ransim/ransimctrlr/RANSIM-CTRLR/src/main/java/org/onap/ransim/rest/api/models/GetPmDataReq.java
index 11ec0ca..245dea3 100644
--- a/ransim/ransimctrlr/RANSIM-CTRLR/src/main/java/org/onap/ransim/rest/api/models/GetPmDataReq.java
+++ b/ransim/ransimctrlr/RANSIM-CTRLR/src/main/java/org/onap/ransim/rest/api/models/GetPmDataReq.java
@@ -20,42 +20,40 @@
package org.onap.ransim.rest.api.models;
public class GetPmDataReq {
-
- private String nodeIdBad;
- private String nodeIdPoor;
-
- public GetPmDataReq() {
- super();
- }
-
- /**
- * Constructor with all fields.
- *
- * @param nodeIdBad
- * Cells with bad PM value.
- * @param nodeIdPoor
- * Cells with poor PM value.
- */
- public GetPmDataReq(String nodeIdBad, String nodeIdPoor) {
- super();
- this.nodeIdBad = nodeIdBad;
- this.nodeIdPoor = nodeIdPoor;
- }
-
- public String getNodeIdBad() {
- return nodeIdBad;
- }
-
- public void setNodeIdBad(String nodeIdBad) {
- this.nodeIdBad = nodeIdBad;
- }
-
- public String getNodeIdPoor() {
- return nodeIdPoor;
- }
-
- public void setNodeIdPoor(String nodeIdPoor) {
- this.nodeIdPoor = nodeIdPoor;
- }
-
+
+ private String nodeIdBad;
+ private String nodeIdPoor;
+
+ public GetPmDataReq() {
+ super();
+ }
+
+ /**
+ * Constructor with all fields.
+ *
+ * @param nodeIdBad Cells with bad PM value.
+ * @param nodeIdPoor Cells with poor PM value.
+ */
+ public GetPmDataReq(String nodeIdBad, String nodeIdPoor) {
+ super();
+ this.nodeIdBad = nodeIdBad;
+ this.nodeIdPoor = nodeIdPoor;
+ }
+
+ public String getNodeIdBad() {
+ return nodeIdBad;
+ }
+
+ public void setNodeIdBad(String nodeIdBad) {
+ this.nodeIdBad = nodeIdBad;
+ }
+
+ public String getNodeIdPoor() {
+ return nodeIdPoor;
+ }
+
+ public void setNodeIdPoor(String nodeIdPoor) {
+ this.nodeIdPoor = nodeIdPoor;
+ }
+
}
diff --git a/ransim/ransimctrlr/RANSIM-CTRLR/src/main/java/org/onap/ransim/rest/api/models/GetTopology.java b/ransim/ransimctrlr/RANSIM-CTRLR/src/main/java/org/onap/ransim/rest/api/models/GetTopology.java
index 1769a0c..6b2cf32 100644
--- a/ransim/ransimctrlr/RANSIM-CTRLR/src/main/java/org/onap/ransim/rest/api/models/GetTopology.java
+++ b/ransim/ransimctrlr/RANSIM-CTRLR/src/main/java/org/onap/ransim/rest/api/models/GetTopology.java
@@ -20,79 +20,73 @@
package org.onap.ransim.rest.api.models;
public class GetTopology {
-
- private CellDetails currentCell;
- private int gridX;
- private int gridY;
- private String nodeId;
- private long physicalCellId;
-
- /**
- * A constructor GetTopology.
- *
- * @param currentCell
- * current cell details
- * @param gridX
- * x coordinate value for the cell
- * @param gridY
- * y coordinate value for the cell
- * @param nodeId
- * node id of the cell
- * @param physicalCellId
- * pci value for the cell
- */
- public GetTopology(CellDetails currentCell, int gridX, int gridY,
- String nodeId, long physicalCellId) {
- super();
- this.currentCell = currentCell;
- this.gridX = gridX;
- this.gridY = gridY;
- this.nodeId = nodeId;
- this.physicalCellId = physicalCellId;
- }
-
- public GetTopology() {
-
- }
-
- public CellDetails getCurrentCell() {
- return currentCell;
- }
-
- public void setCurrentCell(CellDetails currentCell) {
- this.currentCell = currentCell;
- }
-
- public int getGridX() {
- return gridX;
- }
-
- public void setGridX(int gridX) {
- this.gridX = gridX;
- }
-
- public int getGridY() {
- return gridY;
- }
-
- public void setGridY(int gridY) {
- this.gridY = gridY;
- }
-
- public String getNodeId() {
- return nodeId;
- }
-
- public void setNodeId(String nodeId) {
- this.nodeId = nodeId;
- }
-
- public long getPhysicalCellId() {
- return physicalCellId;
- }
-
- public void setPhysicalCellId(long physicalCellId) {
- this.physicalCellId = physicalCellId;
- }
-
+
+ private CellDetails currentCell;
+ private int gridX;
+ private int gridY;
+ private String nodeId;
+ private long physicalCellId;
+
+ /**
+ * A constructor GetTopology.
+ *
+ * @param currentCell current cell details
+ * @param gridX x coordinate value for the cell
+ * @param gridY y coordinate value for the cell
+ * @param nodeId node id of the cell
+ * @param physicalCellId pci value for the cell
+ */
+ public GetTopology(CellDetails currentCell, int gridX, int gridY, String nodeId, long physicalCellId) {
+ super();
+ this.currentCell = currentCell;
+ this.gridX = gridX;
+ this.gridY = gridY;
+ this.nodeId = nodeId;
+ this.physicalCellId = physicalCellId;
+ }
+
+ public GetTopology() {
+
+ }
+
+ public CellDetails getCurrentCell() {
+ return currentCell;
+ }
+
+ public void setCurrentCell(CellDetails currentCell) {
+ this.currentCell = currentCell;
+ }
+
+ public int getGridX() {
+ return gridX;
+ }
+
+ public void setGridX(int gridX) {
+ this.gridX = gridX;
+ }
+
+ public int getGridY() {
+ return gridY;
+ }
+
+ public void setGridY(int gridY) {
+ this.gridY = gridY;
+ }
+
+ public String getNodeId() {
+ return nodeId;
+ }
+
+ public void setNodeId(String nodeId) {
+ this.nodeId = nodeId;
+ }
+
+ public long getPhysicalCellId() {
+ return physicalCellId;
+ }
+
+ public void setPhysicalCellId(long physicalCellId) {
+ this.physicalCellId = physicalCellId;
+ }
+
}
diff --git a/ransim/ransimctrlr/RANSIM-CTRLR/src/main/java/org/onap/ransim/rest/api/models/ModifyACellReq.java b/ransim/ransimctrlr/RANSIM-CTRLR/src/main/java/org/onap/ransim/rest/api/models/ModifyACellReq.java
index 5e9dbc5..6d20fcf 100644
--- a/ransim/ransimctrlr/RANSIM-CTRLR/src/main/java/org/onap/ransim/rest/api/models/ModifyACellReq.java
+++ b/ransim/ransimctrlr/RANSIM-CTRLR/src/main/java/org/onap/ransim/rest/api/models/ModifyACellReq.java
@@ -21,56 +21,53 @@
package org.onap.ransim.rest.api.models;
public class ModifyACellReq {
-
- private String nodeId;
- private Long newPhysicalCellId;
- private String newNbrs;
-
- /**
- * A constructor for ModifyACellReq.
- *
- * @param nodeId
- * node Id of the cell which is to be modified
- * @param newPhysicalCellId
- * new PCI number for the cell
- * @param newNbrs
- * new neighbor list for the cell
- */
- public ModifyACellReq(String nodeId, Long newPhysicalCellId, String newNbrs) {
- super();
- this.nodeId = nodeId;
- this.newPhysicalCellId = newPhysicalCellId;
- this.newNbrs = newNbrs;
-
- }
-
- public ModifyACellReq() {
-
- // Default constructor for ModifyCell
- }
-
- public String getNodeId() {
- return nodeId;
- }
-
- public void setNodeId(String nodeId) {
- this.nodeId = nodeId;
- }
-
- public Long getNewPhysicalCellId() {
- return newPhysicalCellId;
- }
-
- public void setNewPhysicalCellId(Long newPhysicalCellId) {
- this.newPhysicalCellId = newPhysicalCellId;
- }
-
- public String getNewNbrs() {
- return newNbrs;
- }
-
- public void setNewNbrs(String newNbrs) {
- this.newNbrs = newNbrs;
- }
-
+
+ private String nodeId;
+ private Long newPhysicalCellId;
+ private String newNbrs;
+
+ /**
+ * A constructor for ModifyACellReq.
+ *
+ * @param nodeId node Id of the cell which is to be modified
+ * @param newPhysicalCellId new PCI number for the cell
+ * @param newNbrs new neighbor list for the cell
+ */
+ public ModifyACellReq(String nodeId, Long newPhysicalCellId, String newNbrs) {
+ super();
+ this.nodeId = nodeId;
+ this.newPhysicalCellId = newPhysicalCellId;
+ this.newNbrs = newNbrs;
+
+ }
+
+ public ModifyACellReq() {
+
+ // Default constructor for ModifyCell
+ }
+
+ public String getNodeId() {
+ return nodeId;
+ }
+
+ public void setNodeId(String nodeId) {
+ this.nodeId = nodeId;
+ }
+
+ public Long getNewPhysicalCellId() {
+ return newPhysicalCellId;
+ }
+
+ public void setNewPhysicalCellId(Long newPhysicalCellId) {
+ this.newPhysicalCellId = newPhysicalCellId;
+ }
+
+ public String getNewNbrs() {
+ return newNbrs;
+ }
+
+ public void setNewNbrs(String newNbrs) {
+ this.newNbrs = newNbrs;
+ }
+
}
diff --git a/ransim/ransimctrlr/RANSIM-CTRLR/src/main/java/org/onap/ransim/rest/api/models/NRCellCU.java b/ransim/ransimctrlr/RANSIM-CTRLR/src/main/java/org/onap/ransim/rest/api/models/NRCellCU.java
new file mode 100644
index 0000000..a00f88e
--- /dev/null
+++ b/ransim/ransimctrlr/RANSIM-CTRLR/src/main/java/org/onap/ransim/rest/api/models/NRCellCU.java
@@ -0,0 +1,58 @@
+package org.onap.ransim.rest.api.models;
+
+import java.io.Serializable;
+import java.util.List;
+import javax.persistence.CascadeType;
+import javax.persistence.CollectionTable;
+import javax.persistence.Column;
+import javax.persistence.ElementCollection;
+import javax.persistence.Entity;
+import javax.persistence.FetchType;
+import javax.persistence.Id;
+import javax.persistence.JoinColumn;
+import javax.persistence.ManyToOne;
+import javax.persistence.OneToMany;
+import javax.persistence.Table;
+
+@Entity
+@Table(name="NRCELLCU")
+public class NRCellCU implements Serializable{
+ private static final long serialVersionUID = 1L;
+ @Id
+ @Column(name="CELLLOCALID")
+ private Integer cellLocalId;
+ @Column(name="RESOURCETYPE")
+ private String resourceType;
+ @ElementCollection(fetch = FetchType.EAGER)
+ @CollectionTable(name="PLMNINFO",joinColumns = @JoinColumn(name="nrcellcu_celllocalid"))
+ private List<PLMNInfo> pLMNInfoList;
+ @ManyToOne
+ @JoinColumn(name = "gnbcuname")
+ private GNBCUCPFunction gNBCUCPFunction;
+
+ public Integer getCellLocalId() {
+ return cellLocalId;
+ }
+ public void setCellLocalId(Integer cellLocalId) {
+ this.cellLocalId = cellLocalId;
+ }
+ public List<PLMNInfo> getpLMNInfoList() {
+ return pLMNInfoList;
+ }
+ public void setpLMNInfoList(List<PLMNInfo> pLMNInfoList) {
+ this.pLMNInfoList = pLMNInfoList;
+ }
+ public GNBCUCPFunction getgNBCUCPFunction() {
+ return gNBCUCPFunction;
+ }
+ public void setgNBCUCPFunction(GNBCUCPFunction gNBCUCPFunction) {
+ this.gNBCUCPFunction = gNBCUCPFunction;
+ }
+ public String getResourceType() {
+ return resourceType;
+ }
+ public void setResourceType(String resourceType) {
+ this.resourceType = resourceType;
+ }
+
+}
diff --git a/ransim/ransimctrlr/RANSIM-CTRLR/src/main/java/org/onap/ransim/rest/api/models/NRCellDU.java b/ransim/ransimctrlr/RANSIM-CTRLR/src/main/java/org/onap/ransim/rest/api/models/NRCellDU.java
new file mode 100644
index 0000000..89ac059
--- /dev/null
+++ b/ransim/ransimctrlr/RANSIM-CTRLR/src/main/java/org/onap/ransim/rest/api/models/NRCellDU.java
@@ -0,0 +1,98 @@
+package org.onap.ransim.rest.api.models;
+
+import java.io.Serializable;
+import java.util.List;
+import javax.persistence.CascadeType;
+import javax.persistence.CollectionTable;
+import javax.persistence.Column;
+import javax.persistence.ElementCollection;
+import javax.persistence.Entity;
+import javax.persistence.FetchType;
+import javax.persistence.Id;
+import javax.persistence.JoinColumn;
+import javax.persistence.ManyToOne;
+import javax.persistence.OneToMany;
+import javax.persistence.Table;
+
+@Entity
+@Table(name="NRCELLDU")
+public class NRCellDU implements Serializable{
+ private static final long serialVersionUID = 1L;
+ @Id
+ @Column(name="CELLLOCALID")
+ private Integer cellLocalId;
+ @Column(name="OPERATIONALSTATE")
+ private String operationalState;
+ @Column(name="ADMINISTRATIVESTATE")
+ private String administrativeState;
+ @Column(name="CELLSTATE")
+ private String cellState;
+ @ElementCollection(fetch = FetchType.EAGER)
+ @CollectionTable(name="PLMNINFO",joinColumns = @JoinColumn(name="nrcelldu_celllocalid"))
+ private List<PLMNInfo> pLMNInfoList;
+ @Column(name="NRPCI")
+ private Integer nRPCI;
+ @Column(name="nRTAC")
+ private Integer nRTAC;
+ @Column(name="RESOURCETYPE")
+ private String resourceType;
+ @ManyToOne
+ @JoinColumn(name = "gnbduid")
+ private GNBDUFunction gNBDUFunction;
+
+ public Integer getCellLocalId() {
+ return cellLocalId;
+ }
+ public void setCellLocalId(Integer cellLocalId) {
+ this.cellLocalId = cellLocalId;
+ }
+ public List<PLMNInfo> getpLMNInfoList() {
+ return pLMNInfoList;
+ }
+ public void setpLMNInfoList(List<PLMNInfo> pLMNInfoList) {
+ this.pLMNInfoList = pLMNInfoList;
+ }
+ public String getOperationalState() {
+ return operationalState;
+ }
+ public void setOperationalState(String operationalState) {
+ this.operationalState = operationalState;
+ }
+ public String getAdministrativeState() {
+ return administrativeState;
+ }
+ public void setAdministrativeState(String administrativeState) {
+ this.administrativeState = administrativeState;
+ }
+ public String getCellState() {
+ return cellState;
+ }
+ public void setCellState(String cellState) {
+ this.cellState = cellState;
+ }
+ public Integer getnRPCI() {
+ return nRPCI;
+ }
+ public void setnRPCI(Integer nRPCI) {
+ this.nRPCI = nRPCI;
+ }
+ public Integer getnRTAC() {
+ return nRTAC;
+ }
+ public void setnRTAC(Integer nRTAC) {
+ this.nRTAC = nRTAC;
+ }
+ public GNBDUFunction getgNBDUFunction() {
+ return gNBDUFunction;
+ }
+ public void setgNBDUFunction(GNBDUFunction gNBDUFunction) {
+ this.gNBDUFunction = gNBDUFunction;
+ }
+ public String getResourceType() {
+ return resourceType;
+ }
+ public void setResourceType(String resourceType) {
+ this.resourceType = resourceType;
+ }
+
+}
diff --git a/ransim/ransimctrlr/RANSIM-CTRLR/src/main/java/org/onap/ransim/rest/api/models/NSSAIConfig.java b/ransim/ransimctrlr/RANSIM-CTRLR/src/main/java/org/onap/ransim/rest/api/models/NSSAIConfig.java
new file mode 100644
index 0000000..d7d6b2b
--- /dev/null
+++ b/ransim/ransimctrlr/RANSIM-CTRLR/src/main/java/org/onap/ransim/rest/api/models/NSSAIConfig.java
@@ -0,0 +1,45 @@
+package org.onap.ransim.rest.api.models;
+
+import java.io.Serializable;
+import javax.persistence.Column;
+import javax.persistence.Embeddable;
+import javax.persistence.Table;
+import java.sql.Timestamp;
+
+@Table(name="NSSAICONFIG")
+@Embeddable
+public class NSSAIConfig implements Serializable{
+ private static final long serialVersionUID = 1L;
+ @Column(name="DLTHPTPERSLICE")
+ private Integer dLThptPerSlice;
+ @Column(name="ULTHPTPERSLICE")
+ private Integer uLThptPerSlice;
+ @Column(name="MAXNUMBEROFCONNS")
+ private Integer maxNumberOfConns;
+ @Column(name="LASTUPDATEDTS")
+ private Timestamp lastUpdatedTS;
+ public Integer getdLThptPerSlice() {
+ return dLThptPerSlice;
+ }
+ public void setdLThptPerSlice(Integer dLThptPerSlice) {
+ this.dLThptPerSlice = dLThptPerSlice;
+ }
+ public Integer getuLThptPerSlice() {
+ return uLThptPerSlice;
+ }
+ public void setuLThptPerSlice(Integer uLThptPerSlice) {
+ this.uLThptPerSlice = uLThptPerSlice;
+ }
+ public Integer getMaxNumberOfConns() {
+ return maxNumberOfConns;
+ }
+ public void setMaxNumberOfConns(Integer maxNumberOfConns) {
+ this.maxNumberOfConns = maxNumberOfConns;
+ }
+ public Timestamp getLastUpdatedTS() {
+ return lastUpdatedTS;
+ }
+ public void setLastUpdatedTS(Timestamp lastUpdatedTS) {
+ this.lastUpdatedTS = lastUpdatedTS;
+ }
+} \ No newline at end of file
diff --git a/ransim/ransimctrlr/RANSIM-CTRLR/src/main/java/org/onap/ransim/rest/api/models/NbrDump.java b/ransim/ransimctrlr/RANSIM-CTRLR/src/main/java/org/onap/ransim/rest/api/models/NbrDump.java
index 8e2ffb9..1033b3b 100644
--- a/ransim/ransimctrlr/RANSIM-CTRLR/src/main/java/org/onap/ransim/rest/api/models/NbrDump.java
+++ b/ransim/ransimctrlr/RANSIM-CTRLR/src/main/java/org/onap/ransim/rest/api/models/NbrDump.java
@@ -20,35 +20,35 @@
package org.onap.ransim.rest.api.models;
public class NbrDump {
-
- private String nodeId;
- private String blacklisted;
-
- public NbrDump() {
- super();
- // TODO Auto-generated constructor stub
- }
-
- public NbrDump(String nodeId, String blacklisted) {
- super();
- this.nodeId = nodeId;
- this.blacklisted = blacklisted;
- }
-
- public String getNodeId() {
- return nodeId;
- }
-
- public void setNodeId(String nodeId) {
- this.nodeId = nodeId;
- }
-
- public String getBlacklisted() {
- return blacklisted;
- }
-
- public void setBlacklisted(String blacklisted) {
- this.blacklisted = blacklisted;
- }
-
+
+ private String nodeId;
+ private String blacklisted;
+
+ public NbrDump() {
+ super();
+ // TODO Auto-generated constructor stub
+ }
+
+ public NbrDump(String nodeId, String blacklisted) {
+ super();
+ this.nodeId = nodeId;
+ this.blacklisted = blacklisted;
+ }
+
+ public String getNodeId() {
+ return nodeId;
+ }
+
+ public void setNodeId(String nodeId) {
+ this.nodeId = nodeId;
+ }
+
+ public String getBlacklisted() {
+ return blacklisted;
+ }
+
+ public void setBlacklisted(String blacklisted) {
+ this.blacklisted = blacklisted;
+ }
+
}
diff --git a/ransim/ransimctrlr/RANSIM-CTRLR/src/main/java/org/onap/ransim/rest/api/models/NearRTRIC.java b/ransim/ransimctrlr/RANSIM-CTRLR/src/main/java/org/onap/ransim/rest/api/models/NearRTRIC.java
new file mode 100644
index 0000000..ff0c516
--- /dev/null
+++ b/ransim/ransimctrlr/RANSIM-CTRLR/src/main/java/org/onap/ransim/rest/api/models/NearRTRIC.java
@@ -0,0 +1,96 @@
+package org.onap.ransim.rest.api.models;
+
+import java.io.Serializable;
+import java.util.List;
+import javax.persistence.CascadeType;
+import javax.persistence.CollectionTable;
+import javax.persistence.Column;
+import javax.persistence.ElementCollection;
+import javax.persistence.Entity;
+import javax.persistence.Id;
+import javax.persistence.JoinColumn;
+import javax.persistence.OneToMany;
+import javax.persistence.Table;
+@Entity
+@Table(name="NEARRTRIC")
+public class NearRTRIC implements Serializable{
+ private static final long serialVersionUID = 1L;
+ @Id
+ @Column(name="NEARRTRICID")
+ private Integer nearRTRICId;
+ @Column(name="GNBID")
+ private Integer gNBId;
+ @ElementCollection(targetClass = String.class)
+ @CollectionTable(name="TRACKINGAREA", joinColumns = @JoinColumn(name="nearrtricid"))
+ private List<String> trackingArea;
+ @Column(name="RESOURCETYPE")
+ private String resourceType;
+ @OneToMany(mappedBy = "nearRTRIC", cascade=CascadeType.ALL)
+ private List<GNBCUCPFunction> gNBCUCPList;
+ @OneToMany(mappedBy = "nearRTRIC", cascade=CascadeType.ALL)
+ private List<GNBCUUPFunction> gNBCUUPList;
+ @OneToMany(mappedBy = "nearRTRIC", cascade=CascadeType.ALL)
+ private List<GNBDUFunction> gNBDUList;
+ @ElementCollection(targetClass = String.class)
+ @CollectionTable(name="RANNFNSSI",joinColumns = @JoinColumn(name="nearrtricid"))
+ private List<String> ranNFNSSIList;
+ @ElementCollection
+ @CollectionTable(name="PLMNINFO",joinColumns = @JoinColumn(name="nearrtricid"))
+ private List<PLMNInfo> pLMNInfoList;
+ public Integer getNearRTRICId() {
+ return nearRTRICId;
+ }
+ public void setNearRTRICId(Integer nearRTRICId) {
+ this.nearRTRICId = nearRTRICId;
+ }
+ public Integer getgNBId() {
+ return gNBId;
+ }
+ public void setgNBId(Integer gNBId) {
+ this.gNBId = gNBId;
+ }
+
+ public List<String> getTrackingArea() {
+ return trackingArea;
+ }
+ public void setTrackingArea(List<String> trackingArea) {
+ this.trackingArea = trackingArea;
+ }
+ public String getResourceType() {
+ return resourceType;
+ }
+ public void setResourceType(String resourceType) {
+ this.resourceType = resourceType;
+ }
+ public List<GNBCUCPFunction> getgNBCUCPList() {
+ return gNBCUCPList;
+ }
+ public void setgNBCUCPList(List<GNBCUCPFunction> gNBCUCPList) {
+ this.gNBCUCPList = gNBCUCPList;
+ }
+ public List<GNBCUUPFunction> getgNBCUUPList() {
+ return gNBCUUPList;
+ }
+ public void setgNBCUUPList(List<GNBCUUPFunction> gNBCUUPList) {
+ this.gNBCUUPList = gNBCUUPList;
+ }
+ public List<GNBDUFunction> getgNBDUList() {
+ return gNBDUList;
+ }
+ public void setgNBDUList(List<GNBDUFunction> gNBDUList) {
+ this.gNBDUList = gNBDUList;
+ }
+ public List<PLMNInfo> getpLMNInfoList() {
+ return pLMNInfoList;
+ }
+ public void setpLMNInfoList(List<PLMNInfo> pLMNInfoList) {
+ this.pLMNInfoList = pLMNInfoList;
+ }
+ public List<String> getRanNFNSSIList() {
+ return ranNFNSSIList;
+ }
+ public void setRanNFNSSIList(List<String> ranNFNSSIList) {
+ this.ranNFNSSIList = ranNFNSSIList;
+ }
+
+} \ No newline at end of file
diff --git a/ransim/ransimctrlr/RANSIM-CTRLR/src/main/java/org/onap/ransim/rest/api/models/NeighborDetails.java b/ransim/ransimctrlr/RANSIM-CTRLR/src/main/java/org/onap/ransim/rest/api/models/NeighborDetails.java
index 92a03f1..4af3166 100644
--- a/ransim/ransimctrlr/RANSIM-CTRLR/src/main/java/org/onap/ransim/rest/api/models/NeighborDetails.java
+++ b/ransim/ransimctrlr/RANSIM-CTRLR/src/main/java/org/onap/ransim/rest/api/models/NeighborDetails.java
@@ -19,47 +19,43 @@
*/
package org.onap.ransim.rest.api.models;
-import javax.persistence.Column;
import javax.persistence.EmbeddedId;
import javax.persistence.Entity;
-import javax.persistence.Id;
import javax.persistence.Table;
@Entity
@Table(name = "NeighborDetails")
public class NeighborDetails {
-
- @EmbeddedId
- private NeihborId neigbor;
-
- private boolean blacklisted;
-
- public NeighborDetails() {
-
- }
- public NeighborDetails(NeihborId neigbor, boolean blacklisted) {
- super();
- this.neigbor = neigbor;
- this.blacklisted = blacklisted;
- }
+ @EmbeddedId
+ private NeihborId neigbor;
+ private boolean blacklisted;
- public NeihborId getNeigbor() {
- return neigbor;
- }
+ public NeighborDetails() {
- public void setNeigbor(NeihborId neigbor) {
- this.neigbor = neigbor;
- }
+ }
- public boolean isBlacklisted() {
- return blacklisted;
- }
+ public NeighborDetails(NeihborId neigbor, boolean blacklisted) {
+ super();
+ this.neigbor = neigbor;
+ this.blacklisted = blacklisted;
+ }
+
+ public NeihborId getNeigbor() {
+ return neigbor;
+ }
+
+ public void setNeigbor(NeihborId neigbor) {
+ this.neigbor = neigbor;
+ }
+
+ public boolean isBlacklisted() {
+ return blacklisted;
+ }
+
+ public void setBlacklisted(boolean blacklisted) {
+ this.blacklisted = blacklisted;
+ }
- public void setBlacklisted(boolean blacklisted) {
- this.blacklisted = blacklisted;
- }
-
-
}
diff --git a/ransim/ransimctrlr/RANSIM-CTRLR/src/main/java/org/onap/ransim/rest/api/models/NeighborPmDetails.java b/ransim/ransimctrlr/RANSIM-CTRLR/src/main/java/org/onap/ransim/rest/api/models/NeighborPmDetails.java
index a5614f1..a18a55b 100644
--- a/ransim/ransimctrlr/RANSIM-CTRLR/src/main/java/org/onap/ransim/rest/api/models/NeighborPmDetails.java
+++ b/ransim/ransimctrlr/RANSIM-CTRLR/src/main/java/org/onap/ransim/rest/api/models/NeighborPmDetails.java
@@ -20,45 +20,45 @@
package org.onap.ransim.rest.api.models;
public class NeighborPmDetails {
-
- private String nbrCellId;
- private String kpiName;
- private int kpiValue;
-
- public NeighborPmDetails(String nbrCellId, String kpiName, int kpiValue) {
- super();
- this.nbrCellId = nbrCellId;
- this.kpiName = kpiName;
- this.kpiValue = kpiValue;
- }
-
- public NeighborPmDetails() {
- super();
- // TODO Auto-generated constructor stub
- }
-
- public String getNbrCellId() {
- return nbrCellId;
- }
-
- public void setNbrCellId(String nbrCellId) {
- this.nbrCellId = nbrCellId;
- }
-
- public String getKpiName() {
- return kpiName;
- }
-
- public void setKpiName(String kpiName) {
- this.kpiName = kpiName;
- }
-
- public int getKpiValue() {
- return kpiValue;
- }
-
- public void setKpiValue(int kpiValue) {
- this.kpiValue = kpiValue;
- }
-
+
+ private String nbrCellId;
+ private String kpiName;
+ private int kpiValue;
+
+ public NeighborPmDetails(String nbrCellId, String kpiName, int kpiValue) {
+ super();
+ this.nbrCellId = nbrCellId;
+ this.kpiName = kpiName;
+ this.kpiValue = kpiValue;
+ }
+
+ public NeighborPmDetails() {
+ super();
+ // TODO Auto-generated constructor stub
+ }
+
+ public String getNbrCellId() {
+ return nbrCellId;
+ }
+
+ public void setNbrCellId(String nbrCellId) {
+ this.nbrCellId = nbrCellId;
+ }
+
+ public String getKpiName() {
+ return kpiName;
+ }
+
+ public void setKpiName(String kpiName) {
+ this.kpiName = kpiName;
+ }
+
+ public int getKpiValue() {
+ return kpiValue;
+ }
+
+ public void setKpiValue(int kpiValue) {
+ this.kpiValue = kpiValue;
+ }
+
}
diff --git a/ransim/ransimctrlr/RANSIM-CTRLR/src/main/java/org/onap/ransim/rest/api/models/NeihborId.java b/ransim/ransimctrlr/RANSIM-CTRLR/src/main/java/org/onap/ransim/rest/api/models/NeihborId.java
index 13bf9b7..3bef66d 100644
--- a/ransim/ransimctrlr/RANSIM-CTRLR/src/main/java/org/onap/ransim/rest/api/models/NeihborId.java
+++ b/ransim/ransimctrlr/RANSIM-CTRLR/src/main/java/org/onap/ransim/rest/api/models/NeihborId.java
@@ -23,71 +23,68 @@ import java.io.Serializable;
import javax.persistence.Column;
import javax.persistence.Embeddable;
-import javax.persistence.JoinColumn;
-import javax.persistence.ManyToOne;
@Embeddable
public class NeihborId implements Serializable {
-
- @Column(name = "sourceCellNodeId")
- private String sourceCellNodeId;
-
- @Column(name = "neighborCellNodeId")
- private String neighborCell;
-
- public NeihborId() {
- }
-
- public NeihborId(String sourceCellNodeId, String neighborCell) {
- this.sourceCellNodeId = sourceCellNodeId;
- this.neighborCell = neighborCell;
- }
-
- public String getSourceCellNodeId() {
- return sourceCellNodeId;
- }
-
- public String getNeighborCell() {
- return neighborCell;
- }
-
- @Override
- public int hashCode() {
- final int prime = 31;
- int result = 1;
- result = prime * result
- + ((neighborCell == null) ? 0 : neighborCell.hashCode());
- result = prime
- * result
- + ((sourceCellNodeId == null) ? 0 : sourceCellNodeId.hashCode());
- return result;
- }
-
- @Override
- public boolean equals(Object obj) {
- if (this == obj) {
- return true;
- }
- if (obj == null) {
- return false;
- }
- if (getClass() != obj.getClass()) {
- return false;
- }
- NeihborId other = (NeihborId) obj;
- if (neighborCell == null) {
- if (other.neighborCell != null) {
- return false;
- }
- } else if (!neighborCell.equals(other.neighborCell))
- return false;
- if (sourceCellNodeId == null) {
- if (other.sourceCellNodeId != null) {
- return false;
- }
- } else if (!sourceCellNodeId.equals(other.sourceCellNodeId)) {
- return false;
- }
- return true;
- }
+
+ private static final long serialVersionUID = 1L;
+
+ @Column(name = "sourceCellNodeId")
+ private String sourceCellNodeId;
+
+ @Column(name = "neighborCellNodeId")
+ private String neighborCell;
+
+ public NeihborId() {
+ }
+
+ public NeihborId(String sourceCellNodeId, String neighborCell) {
+ this.sourceCellNodeId = sourceCellNodeId;
+ this.neighborCell = neighborCell;
+ }
+
+ public String getSourceCellNodeId() {
+ return sourceCellNodeId;
+ }
+
+ public String getNeighborCell() {
+ return neighborCell;
+ }
+
+ @Override
+ public int hashCode() {
+ final int prime = 31;
+ int result = 1;
+ result = prime * result + ((neighborCell == null) ? 0 : neighborCell.hashCode());
+ result = prime * result + ((sourceCellNodeId == null) ? 0 : sourceCellNodeId.hashCode());
+ return result;
+ }
+
+ @Override
+ public boolean equals(Object obj) {
+ if (this == obj) {
+ return true;
+ }
+ if (obj == null) {
+ return false;
+ }
+ if (getClass() != obj.getClass()) {
+ return false;
+ }
+ NeihborId other = (NeihborId) obj;
+ if (neighborCell == null) {
+ if (other.neighborCell != null) {
+ return false;
+ }
+ } else if (!neighborCell.equals(other.neighborCell))
+ return false;
+ if (sourceCellNodeId == null) {
+ if (other.sourceCellNodeId != null) {
+ return false;
+ }
+ } else if (!sourceCellNodeId.equals(other.sourceCellNodeId)) {
+ return false;
+ }
+ return true;
+ }
} \ No newline at end of file
diff --git a/ransim/ransimctrlr/RANSIM-CTRLR/src/main/java/org/onap/ransim/rest/api/models/NetconfServers.java b/ransim/ransimctrlr/RANSIM-CTRLR/src/main/java/org/onap/ransim/rest/api/models/NetconfServers.java
index bf91f7b..e0a1dc9 100644
--- a/ransim/ransimctrlr/RANSIM-CTRLR/src/main/java/org/onap/ransim/rest/api/models/NetconfServers.java
+++ b/ransim/ransimctrlr/RANSIM-CTRLR/src/main/java/org/onap/ransim/rest/api/models/NetconfServers.java
@@ -26,79 +26,74 @@ import javax.persistence.CascadeType;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.Id;
+import javax.persistence.FetchType;
import javax.persistence.OneToMany;
import javax.persistence.Table;
@Entity
@Table(name = "NetconfServers")
public class NetconfServers {
-
- @Id
- @Column(name = "serverId", unique = true, nullable = false, length = 20)
- private String serverId;
-
- private String ip;
- private String netconfPort;
-
- @OneToMany(targetEntity = CellDetails.class, orphanRemoval = true, cascade = { CascadeType.ALL })
- // @OneToMany(targetEntity = CellDetails.class)
- private Set<CellDetails> cells;
-
- public NetconfServers() {
-
- }
-
- /**
- * A constructor for Netconf server table class.
- *
- * @param serverId
- * server Id of the netconf server
- * @param ip
- * ip address of the netconf server
- * @param netconfPort
- * port number of the netconf server
- * @param cells
- * List of cells belonging to the netconf server
- */
- public NetconfServers(String serverId, String ip, String netconfPort,
- Set<CellDetails> cells) {
- super();
- this.serverId = serverId;
- this.ip = ip;
- this.netconfPort = netconfPort;
- this.cells = cells;
- }
-
- public String getServerId() {
- return serverId;
- }
-
- public void setServerId(String serverId) {
- this.serverId = serverId;
- }
-
- public String getIp() {
- return ip;
- }
-
- public void setIp(String ip) {
- this.ip = ip;
- }
-
- public String getNetconfPort() {
- return netconfPort;
- }
-
- public void setNetconfPort(String netconfPort) {
- this.netconfPort = netconfPort;
- }
-
- public Set<CellDetails> getCells() {
- return cells;
- }
-
- public void setCells(Set<CellDetails> cells) {
- this.cells = cells;
- }
-
+
+ @Id
+ @Column(name = "serverId", unique = true, nullable = false, length = 20)
+ private String serverId;
+
+ private String ip;
+ private String netconfPort;
+
+ @OneToMany(targetEntity = CellDetails.class,fetch = FetchType.EAGER, cascade = CascadeType.ALL)
+ private Set<CellDetails> cells;
+
+ public NetconfServers() {
+
+ }
+
+ /**
+ * A constructor for Netconf server table class.
+ *
+ * @param serverId server Id of the netconf server
+ * @param ip ip address of the netconf server
+ * @param netconfPort port number of the netconf server
+ * @param cells List of cells belonging to the netconf server
+ */
+ public NetconfServers(String serverId, String ip, String netconfPort, Set<CellDetails> cells) {
+ super();
+ this.serverId = serverId;
+ this.ip = ip;
+ this.netconfPort = netconfPort;
+ this.cells = cells;
+ }
+
+ public String getServerId() {
+ return serverId;
+ }
+
+ public void setServerId(String serverId) {
+ this.serverId = serverId;
+ }
+
+ public String getIp() {
+ return ip;
+ }
+
+ public void setIp(String ip) {
+ this.ip = ip;
+ }
+
+ public String getNetconfPort() {
+ return netconfPort;
+ }
+
+ public void setNetconfPort(String netconfPort) {
+ this.netconfPort = netconfPort;
+ }
+
+ public Set<CellDetails> getCells() {
+ return cells;
+ }
+
+ public void setCells(Set<CellDetails> cells) {
+ this.cells = cells;
+ }
+
}
diff --git a/ransim/ransimctrlr/RANSIM-CTRLR/src/main/java/org/onap/ransim/rest/api/models/OperationLog.java b/ransim/ransimctrlr/RANSIM-CTRLR/src/main/java/org/onap/ransim/rest/api/models/OperationLog.java
index cfc55ce..5d6e82e 100644
--- a/ransim/ransimctrlr/RANSIM-CTRLR/src/main/java/org/onap/ransim/rest/api/models/OperationLog.java
+++ b/ransim/ransimctrlr/RANSIM-CTRLR/src/main/java/org/onap/ransim/rest/api/models/OperationLog.java
@@ -30,37 +30,32 @@ import javax.persistence.GenerationType;
@Entity
@Table(name = "OperationLog")
public class OperationLog {
-
- @Id
- @GeneratedValue(strategy = GenerationType.AUTO)
- private int rowId;
- private long time;
- private String nodeId;
- private String source;
-
- @Column(name = "message", length = 300)
- private String message;
- private String fieldName;
- private String operation;
- /*private String prevValue;
-
- @Column(name = "currValue", length = 500)
- private String currValue;*/
-
- public int getRowId() {
- return rowId;
- }
-
- public void setRowId(int rowId) {
- this.rowId = rowId;
- }
-
- public long getTime() {
- return time;
- }
-
-
- public String getSource() {
+
+ @Id
+ @GeneratedValue(strategy = GenerationType.AUTO)
+ private int rowId;
+ private long time;
+ private String nodeId;
+ private String source;
+
+ @Column(name = "message", length = 300)
+ private String message;
+ private String fieldName;
+ private String operation;
+
+ public int getRowId() {
+ return rowId;
+ }
+
+ public void setRowId(int rowId) {
+ this.rowId = rowId;
+ }
+
+ public long getTime() {
+ return time;
+ }
+
+ public String getSource() {
return source;
}
@@ -69,40 +64,39 @@ public class OperationLog {
}
public void setTime(long time) {
- this.time = time;
- }
-
- public String getNodeId() {
- return nodeId;
- }
-
- public void setNodeId(String nodeId) {
- this.nodeId = nodeId;
- }
-
- public String getMessage() {
- return message;
- }
-
- public void setMessage(String message) {
- this.message = message;
- }
-
- public String getFieldName() {
- return fieldName;
- }
-
- public void setFieldName(String fieldName) {
- this.fieldName = fieldName;
- }
-
- public String getOperation() {
- return operation;
- }
-
- public void setOperation(String operation) {
- this.operation = operation;
- }
-
-
+ this.time = time;
+ }
+
+ public String getNodeId() {
+ return nodeId;
+ }
+
+ public void setNodeId(String nodeId) {
+ this.nodeId = nodeId;
+ }
+
+ public String getMessage() {
+ return message;
+ }
+
+ public void setMessage(String message) {
+ this.message = message;
+ }
+
+ public String getFieldName() {
+ return fieldName;
+ }
+
+ public void setFieldName(String fieldName) {
+ this.fieldName = fieldName;
+ }
+
+ public String getOperation() {
+ return operation;
+ }
+
+ public void setOperation(String operation) {
+ this.operation = operation;
+ }
+
}
diff --git a/ransim/ransimctrlr/RANSIM-CTRLR/src/main/java/org/onap/ransim/rest/api/models/PLMNInfo.java b/ransim/ransimctrlr/RANSIM-CTRLR/src/main/java/org/onap/ransim/rest/api/models/PLMNInfo.java
new file mode 100644
index 0000000..699c7bd
--- /dev/null
+++ b/ransim/ransimctrlr/RANSIM-CTRLR/src/main/java/org/onap/ransim/rest/api/models/PLMNInfo.java
@@ -0,0 +1,43 @@
+package org.onap.ransim.rest.api.models;
+
+import java.io.Serializable;
+
+import javax.persistence.CascadeType;
+import javax.persistence.Column;
+import javax.persistence.Embeddable;
+import javax.persistence.Embedded;
+import javax.persistence.Entity;
+import javax.persistence.Id;
+import javax.persistence.JoinColumn;
+import javax.persistence.ManyToOne;
+import javax.persistence.OneToMany;
+import javax.persistence.Table;
+
+@Embeddable
+@Table(name = "PLMNINFO")
+public class PLMNInfo implements Serializable {
+ private static final long serialVersionUID = 1L;
+
+ @Column(name = "PLMNID")
+ private String pLMNId;
+
+ @Embedded
+ private SNSSAI sNSSAI;
+ public String getpLMNId() {
+ return pLMNId;
+ }
+
+ public void setpLMNId(String pLMNId) {
+ this.pLMNId = pLMNId;
+ }
+
+
+ public SNSSAI getsNSSAI() {
+ return sNSSAI;
+ }
+
+ public void setsNSSAI(SNSSAI sNSSAI) {
+ this.sNSSAI = sNSSAI;
+ }
+
+} \ No newline at end of file
diff --git a/ransim/ransimctrlr/RANSIM-CTRLR/src/main/java/org/onap/ransim/rest/api/models/PLMNInfoModel.java b/ransim/ransimctrlr/RANSIM-CTRLR/src/main/java/org/onap/ransim/rest/api/models/PLMNInfoModel.java
new file mode 100644
index 0000000..df7b312
--- /dev/null
+++ b/ransim/ransimctrlr/RANSIM-CTRLR/src/main/java/org/onap/ransim/rest/api/models/PLMNInfoModel.java
@@ -0,0 +1,115 @@
+/* ============LICENSE_START=======================================================
+ * Ran Simulator Controller
+ * ================================================================================
+ * Copyright (C) 2020 Wipro Limited.
+ * ================================================================================
+ * Licensed 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
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License 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.onap.ransim.rest.api.models;
+
+public class PLMNInfoModel {
+private String pLMNId;
+private String snssai;
+private String status;
+private String gnbType;
+private int gnbId;
+private int nrCellId;
+private String nearrtricid;
+private long maxNumberOfConns;
+
+public PLMNInfoModel() {
+
+}
+
+
+public PLMNInfoModel(String pLMNId, String snssai, String status, String gnbType, int gnbId, int nrCellId,
+String nearrtricid, long maxNumberOfConns) {
+super();
+this.pLMNId = pLMNId;
+this.snssai = snssai;
+this.status = status;
+this.gnbType = gnbType;
+this.gnbId = gnbId;
+this.nrCellId = nrCellId;
+this.nearrtricid = nearrtricid;
+this.maxNumberOfConns = maxNumberOfConns;
+}
+
+
+public String getpLMNId() {
+return pLMNId;
+}
+
+public void setpLMNId(String pLMNId) {
+this.pLMNId = pLMNId;
+}
+
+public String getSnssai() {
+return snssai;
+}
+
+public void setSnssai(String snssai) {
+this.snssai = snssai;
+}
+
+public String getStatus() {
+return status;
+}
+
+public void setStatus(String status) {
+this.status = status;
+}
+
+public String getGnbType() {
+return gnbType;
+}
+
+public void setGnbType(String gnbType) {
+this.gnbType = gnbType;
+}
+
+public int getGnbId() {
+return gnbId;
+}
+
+public void setGnbId(int gnbId) {
+this.gnbId = gnbId;
+}
+
+
+public int getNrCellId() {
+return nrCellId;
+}
+
+public void setNrCellId(int nrCellId) {
+this.nrCellId = nrCellId;
+}
+public String getNearrtricid() {
+return nearrtricid;
+}
+
+public void setNearrtricid(String nearrtricid) {
+this.nearrtricid = nearrtricid;
+}
+
+public long getMaxNumberOfConns() {
+return maxNumberOfConns;
+}
+
+public void setMaxNumberOfConns(long maxNumberOfConns) {
+this.maxNumberOfConns = maxNumberOfConns;
+}
+}
+
diff --git a/ransim/ransimctrlr/RANSIM-CTRLR/src/main/java/org/onap/ransim/rest/api/models/PmDataDump.java b/ransim/ransimctrlr/RANSIM-CTRLR/src/main/java/org/onap/ransim/rest/api/models/PmDataDump.java
index 745b475..9f0ad6e 100644
--- a/ransim/ransimctrlr/RANSIM-CTRLR/src/main/java/org/onap/ransim/rest/api/models/PmDataDump.java
+++ b/ransim/ransimctrlr/RANSIM-CTRLR/src/main/java/org/onap/ransim/rest/api/models/PmDataDump.java
@@ -23,25 +23,25 @@ package org.onap.ransim.rest.api.models;
import java.util.List;
public class PmDataDump {
-
- private List<PmParameters> kpiDump;
-
- public PmDataDump() {
- super();
- // TODO Auto-generated constructor stub
- }
-
- public PmDataDump(List<PmParameters> kpiDump) {
- super();
- this.kpiDump = kpiDump;
- }
-
- public List<PmParameters> getKpiDump() {
- return kpiDump;
- }
-
- public void setKpiDump(List<PmParameters> kpiDump) {
- this.kpiDump = kpiDump;
- }
-
+
+ private List<PmParameters> kpiDump;
+
+ public PmDataDump() {
+ super();
+ // TODO Auto-generated constructor stub
+ }
+
+ public PmDataDump(List<PmParameters> kpiDump) {
+ super();
+ this.kpiDump = kpiDump;
+ }
+
+ public List<PmParameters> getKpiDump() {
+ return kpiDump;
+ }
+
+ public void setKpiDump(List<PmParameters> kpiDump) {
+ this.kpiDump = kpiDump;
+ }
+
}
diff --git a/ransim/ransimctrlr/RANSIM-CTRLR/src/main/java/org/onap/ransim/rest/api/models/PmParameters.java b/ransim/ransimctrlr/RANSIM-CTRLR/src/main/java/org/onap/ransim/rest/api/models/PmParameters.java
index fc48e02..6ff4721 100644
--- a/ransim/ransimctrlr/RANSIM-CTRLR/src/main/java/org/onap/ransim/rest/api/models/PmParameters.java
+++ b/ransim/ransimctrlr/RANSIM-CTRLR/src/main/java/org/onap/ransim/rest/api/models/PmParameters.java
@@ -21,65 +21,78 @@
package org.onap.ransim.rest.api.models;
public class PmParameters {
-
- private String parameter1;
- private String successValue1;
- private String badValue1;
- private String poorValue1;
- private String parameter2;
- private String successValue2;
- private String badValue2;
- private String poorValue2;
-
- public String getParameter1() {
- return parameter1;
- }
- public void setParameter1(String parameter1) {
- this.parameter1 = parameter1;
- }
- public String getSuccessValue1() {
- return successValue1;
- }
- public void setSuccessValue1(String successValue1) {
- this.successValue1 = successValue1;
- }
- public String getBadValue1() {
- return badValue1;
- }
- public void setBadValue1(String badValue1) {
- this.badValue1 = badValue1;
- }
- public String getPoorValue1() {
- return poorValue1;
- }
- public void setPoorValue1(String poorValue1) {
- this.poorValue1 = poorValue1;
- }
- public String getParameter2() {
- return parameter2;
- }
- public void setParameter2(String parameter2) {
- this.parameter2 = parameter2;
- }
- public String getSuccessValue2() {
- return successValue2;
- }
- public void setSuccessValue2(String successValue2) {
- this.successValue2 = successValue2;
- }
- public String getBadValue2() {
- return badValue2;
- }
- public void setBadValue2(String badValue2) {
- this.badValue2 = badValue2;
- }
- public String getPoorValue2() {
- return poorValue2;
- }
- public void setPoorValue2(String poorValue2) {
- this.poorValue2 = poorValue2;
- }
-
-
-
+
+ private String parameter1;
+ private String successValue1;
+ private String badValue1;
+ private String poorValue1;
+ private String parameter2;
+ private String successValue2;
+ private String badValue2;
+ private String poorValue2;
+
+ public String getParameter1() {
+ return parameter1;
+ }
+
+ public void setParameter1(String parameter1) {
+ this.parameter1 = parameter1;
+ }
+
+ public String getSuccessValue1() {
+ return successValue1;
+ }
+
+ public void setSuccessValue1(String successValue1) {
+ this.successValue1 = successValue1;
+ }
+
+ public String getBadValue1() {
+ return badValue1;
+ }
+
+ public void setBadValue1(String badValue1) {
+ this.badValue1 = badValue1;
+ }
+
+ public String getPoorValue1() {
+ return poorValue1;
+ }
+
+ public void setPoorValue1(String poorValue1) {
+ this.poorValue1 = poorValue1;
+ }
+
+ public String getParameter2() {
+ return parameter2;
+ }
+
+ public void setParameter2(String parameter2) {
+ this.parameter2 = parameter2;
+ }
+
+ public String getSuccessValue2() {
+ return successValue2;
+ }
+
+ public void setSuccessValue2(String successValue2) {
+ this.successValue2 = successValue2;
+ }
+
+ public String getBadValue2() {
+ return badValue2;
+ }
+
+ public void setBadValue2(String badValue2) {
+ this.badValue2 = badValue2;
+ }
+
+ public String getPoorValue2() {
+ return poorValue2;
+ }
+
+ public void setPoorValue2(String poorValue2) {
+ this.poorValue2 = poorValue2;
+ }
+
}
diff --git a/ransim/ransimctrlr/RANSIM-CTRLR/src/main/java/org/onap/ransim/rest/api/models/RANSliceInfo.java b/ransim/ransimctrlr/RANSIM-CTRLR/src/main/java/org/onap/ransim/rest/api/models/RANSliceInfo.java
new file mode 100644
index 0000000..47eb7a1
--- /dev/null
+++ b/ransim/ransimctrlr/RANSIM-CTRLR/src/main/java/org/onap/ransim/rest/api/models/RANSliceInfo.java
@@ -0,0 +1,101 @@
+package org.onap.ransim.rest.api.models;
+
+import java.io.Serializable;
+import java.util.List;
+import javax.persistence.CascadeType;
+import javax.persistence.CollectionTable;
+import javax.persistence.Column;
+import javax.persistence.ElementCollection;
+import javax.persistence.Entity;
+import javax.persistence.Id;
+import javax.persistence.JoinColumn;
+import javax.persistence.OneToMany;
+import javax.persistence.Table;
+
+@Entity(name="RANINVENTORY")
+@Table(name="RANINVENTORY")
+public class RANSliceInfo implements Serializable{
+ private static final long serialVersionUID = 1L;
+ @Id
+ @Column(name="RANNFNSSIID")
+ private String ranNFNSSIId;
+ @ElementCollection
+ @CollectionTable(name="rannssi", joinColumns = @JoinColumn(name="rannfnssiid"))
+ private List<String> ranNSSIList;
+ @ElementCollection
+ @CollectionTable(name="nssai", joinColumns = @JoinColumn(name="rannfnssiid"))
+ private List<String> nSSAIList;
+ @OneToMany(mappedBy = "rANSliceInventory", cascade=CascadeType.ALL)
+ private List<SliceProfile> sliceProfilesList;
+ @Column(name="TALIST")
+ private String trackingAreaList;
+ @Column(name="SUBNETSTATUS")
+ private String subnetStatus;
+ @Column(name="NSSTID")
+ private String nsstId;
+ @Column(name="SLICETYPE")
+ private String sliceType;
+ @Column(name="ISSHAREABLE")
+ private String isShareable;
+ public String getRanNFNSSIId() {
+ return ranNFNSSIId;
+ }
+ public void setRanNFNSSIId(String ranNFNSSIId) {
+ this.ranNFNSSIId = ranNFNSSIId;
+ }
+ public List<String> getRanNSSIList() {
+ return ranNSSIList;
+ }
+ public void setRanNSSIList(List<String> ranNSSIList) {
+ this.ranNSSIList = ranNSSIList;
+ }
+ public List<SliceProfile> getSliceProfilesList() {
+ return sliceProfilesList;
+ }
+ public void setSliceProfilesList(List<SliceProfile> sliceProfilesList) {
+ this.sliceProfilesList = sliceProfilesList;
+ }
+ public String getSubnetStatus() {
+ return subnetStatus;
+ }
+ public void setSubnetStatus(String subnetStatus) {
+ this.subnetStatus = subnetStatus;
+ }
+ public String getNsstId() {
+ return nsstId;
+ }
+ public void setNsstId(String nsstId) {
+ this.nsstId = nsstId;
+ }
+ public String getSliceType() {
+ return sliceType;
+ }
+ public void setSliceType(String sliceType) {
+ this.sliceType = sliceType;
+ }
+ public String getIsShareable() {
+ return isShareable;
+ }
+ public void setIsShareable(String isShareable) {
+ this.isShareable = isShareable;
+ }
+ public List<String> getnSSAIList() {
+ return nSSAIList;
+ }
+ public void setnSSAIList(List<String> nSSAIList) {
+ this.nSSAIList = nSSAIList;
+ }
+ public String getTrackingAreaList() {
+ return trackingAreaList;
+ }
+ public void setTrackingAreaList(String trackingAreaList) {
+ this.trackingAreaList = trackingAreaList;
+ }
+ @Override
+ public String toString() {
+ return "RANSliceInfo [ranNFNSSIId=" + ranNFNSSIId + ", ranNSSIList=" + ranNSSIList + ", nSSAIList=" + nSSAIList
+ + ", sliceProfilesList=" + sliceProfilesList + ", trackingAreaList=" + trackingAreaList
+ + ", subnetStatus=" + subnetStatus + ", nsstId=" + nsstId + ", sliceType=" + sliceType
+ + ", isShareable=" + isShareable + "]";
+ }
+} \ No newline at end of file
diff --git a/ransim/ransimctrlr/RANSIM-CTRLR/src/main/java/org/onap/ransim/rest/api/models/RRMPolicyMember.java b/ransim/ransimctrlr/RANSIM-CTRLR/src/main/java/org/onap/ransim/rest/api/models/RRMPolicyMember.java
new file mode 100644
index 0000000..1b204b3
--- /dev/null
+++ b/ransim/ransimctrlr/RANSIM-CTRLR/src/main/java/org/onap/ransim/rest/api/models/RRMPolicyMember.java
@@ -0,0 +1,41 @@
+package org.onap.ransim.rest.api.models;
+
+import java.io.Serializable;
+import javax.persistence.Column;
+import javax.persistence.Entity;
+import javax.persistence.Id;
+import javax.persistence.ManyToOne;
+import javax.persistence.Table;
+
+@Entity
+@Table(name="RRMPOLICYMEMBER")
+public class RRMPolicyMember implements Serializable{
+ private static final long serialVersionUID = 1L;
+ @Id
+ @Column(name = "PLMNID")
+ private String pLMNId;
+ @Column(name="SNSSAI")
+ private String sNSSAI;
+ @ManyToOne
+ private RRMPolicyRatio rrmPolicy;
+
+ public String getpLMNId() {
+ return pLMNId;
+ }
+ public void setpLMNId(String pLMNId) {
+ this.pLMNId = pLMNId;
+ }
+
+ public String getsNSSAI() {
+ return sNSSAI;
+ }
+ public void setsNSSAI(String sNSSAI) {
+ this.sNSSAI = sNSSAI;
+ }
+ public RRMPolicyRatio getRrmPolicy() {
+ return rrmPolicy;
+ }
+ public void setRrmPolicy(RRMPolicyRatio rrmPolicy) {
+ this.rrmPolicy = rrmPolicy;
+ }
+} \ No newline at end of file
diff --git a/ransim/ransimctrlr/RANSIM-CTRLR/src/main/java/org/onap/ransim/rest/api/models/RRMPolicyRatio.java b/ransim/ransimctrlr/RANSIM-CTRLR/src/main/java/org/onap/ransim/rest/api/models/RRMPolicyRatio.java
new file mode 100644
index 0000000..a662eb2
--- /dev/null
+++ b/ransim/ransimctrlr/RANSIM-CTRLR/src/main/java/org/onap/ransim/rest/api/models/RRMPolicyRatio.java
@@ -0,0 +1,91 @@
+package org.onap.ransim.rest.api.models;
+
+import java.io.Serializable;
+import java.util.List;
+import javax.persistence.CascadeType;
+import javax.persistence.Column;
+import javax.persistence.ElementCollection;
+import javax.persistence.Entity;
+import javax.persistence.Id;
+import javax.persistence.OneToMany;
+import javax.persistence.Table;
+
+@Entity
+@Table(name="RRMPOLICYRATIO")
+public class RRMPolicyRatio implements Serializable{
+ private static final long serialVersionUID = 1L;
+ @Id
+ @Column(name="RRMPOLICYID")
+ private Integer rrmPolicyID;
+ @Column(name="RESOURCEID")
+ private String resourceID;
+ @Column(name="RESOURCETYPE")
+ private String resourceType;
+ @Column(name="SLICETYPE")
+ private String sliceType;
+// @OneToMany(mappedBy = "rrmPolicy", cascade={CascadeType.PERSIST,CascadeType.REMOVE})
+ @OneToMany(mappedBy = "rrmPolicy", cascade = CascadeType.ALL)
+ private List<RRMPolicyMember> rRMPolicyMemberList;
+ @Column(name="QUOTATYPE")
+ private String quotaType;
+ @Column(name="RRMPOLICYMAXRATIO")
+ private Integer rRMPolicyMaxRatio;
+ @Column(name="RRMPOLICYMINRATIO")
+ private Integer rRMPolicyMinRatio;
+ @Column(name="RRMPOLICYDEDICATEDRATIO")
+ private Integer rRMPolicyDedicatedRatio;
+ public Integer getRrmPolicyID() {
+ return rrmPolicyID;
+ }
+ public void setRrmPolicyID(Integer rrmPolicyID) {
+ this.rrmPolicyID = rrmPolicyID;
+ }
+ public String getResourceID() {
+ return resourceID;
+ }
+ public void setResourceID(String resourceID) {
+ this.resourceID = resourceID;
+ }
+ public String getResourceType() {
+ return resourceType;
+ }
+ public void setResourceType(String resourceType) {
+ this.resourceType = resourceType;
+ }
+ public String getSliceType() {
+ return sliceType;
+ }
+ public void setSliceType(String sliceType) {
+ this.sliceType = sliceType;
+ }
+ public List<RRMPolicyMember> getrRMPolicyMemberList() {
+ return rRMPolicyMemberList;
+ }
+ public void setrRMPolicyMemberList(List<RRMPolicyMember> rRMPolicyMemberList) {
+ this.rRMPolicyMemberList = rRMPolicyMemberList;
+ }
+ public String getQuotaType() {
+ return quotaType;
+ }
+ public void setQuotaType(String quotaType) {
+ this.quotaType = quotaType;
+ }
+ public Integer getrRMPolicyMaxRatio() {
+ return rRMPolicyMaxRatio;
+ }
+ public void setrRMPolicyMaxRatio(Integer rRMPolicyMaxRatio) {
+ this.rRMPolicyMaxRatio = rRMPolicyMaxRatio;
+ }
+ public Integer getrRMPolicyMinRatio() {
+ return rRMPolicyMinRatio;
+ }
+ public void setrRMPolicyMinRatio(Integer rRMPolicyMinRatio) {
+ this.rRMPolicyMinRatio = rRMPolicyMinRatio;
+ }
+ public Integer getrRMPolicyDedicatedRatio() {
+ return rRMPolicyDedicatedRatio;
+ }
+ public void setrRMPolicyDedicatedRatio(Integer rRMPolicyDedicatedRatio) {
+ this.rRMPolicyDedicatedRatio = rRMPolicyDedicatedRatio;
+ }
+}
diff --git a/ransim/ransimctrlr/RANSIM-CTRLR/src/main/java/org/onap/ransim/rest/api/models/SNSSAI.java b/ransim/ransimctrlr/RANSIM-CTRLR/src/main/java/org/onap/ransim/rest/api/models/SNSSAI.java
new file mode 100644
index 0000000..db43ce0
--- /dev/null
+++ b/ransim/ransimctrlr/RANSIM-CTRLR/src/main/java/org/onap/ransim/rest/api/models/SNSSAI.java
@@ -0,0 +1,68 @@
+package org.onap.ransim.rest.api.models;
+
+import java.io.Serializable;
+import javax.persistence.Column;
+import javax.persistence.Embeddable;
+import javax.persistence.Embedded;
+import javax.persistence.Id;
+import javax.persistence.JoinColumn;
+import javax.persistence.ManyToOne;
+import javax.persistence.Table;
+
+@Embeddable
+@Table(name = "SNSSAI")
+public class SNSSAI implements Serializable {
+ private static final long serialVersionUID = 1L;
+
+ @Column(name = "sNSSAI")
+ private String sNSSAI;
+ @Column(name = "STATUS")
+ private String status;
+ @Column(name = "GLOBALSUBSCRIBERID")
+ private String globalSubscriberId;
+ @Column(name = "SUBSCRIPTIONSERVICETYPE")
+ private String subscriptionServiceType;
+ @Embedded
+ private NSSAIConfig configData;
+
+ public String getStatus() {
+ return status;
+ }
+
+ public void setStatus(String status) {
+ this.status = status;
+ }
+
+ public String getGlobalSubscriberId() {
+ return globalSubscriberId;
+ }
+
+ public void setGlobalSubscriberId(String globalSubscriberId) {
+ this.globalSubscriberId = globalSubscriberId;
+ }
+
+ public String getSubscriptionServiceType() {
+ return subscriptionServiceType;
+ }
+
+ public void setSubscriptionServiceType(String subscriptionServiceType) {
+ this.subscriptionServiceType = subscriptionServiceType;
+ }
+
+ public NSSAIConfig getConfigData() {
+ return configData;
+ }
+
+ public void setConfigData(NSSAIConfig configData) {
+ this.configData = configData;
+ }
+
+ public String getsNSSAI() {
+ return sNSSAI;
+ }
+
+ public void setsNSSAI(String sNSSAI) {
+ this.sNSSAI = sNSSAI;
+ }
+
+} \ No newline at end of file
diff --git a/ransim/ransimctrlr/RANSIM-CTRLR/src/main/java/org/onap/ransim/rest/api/models/SetCollisionReq.java b/ransim/ransimctrlr/RANSIM-CTRLR/src/main/java/org/onap/ransim/rest/api/models/SetCollisionReq.java
index 2d51c83..1738e65 100644
--- a/ransim/ransimctrlr/RANSIM-CTRLR/src/main/java/org/onap/ransim/rest/api/models/SetCollisionReq.java
+++ b/ransim/ransimctrlr/RANSIM-CTRLR/src/main/java/org/onap/ransim/rest/api/models/SetCollisionReq.java
@@ -22,29 +22,28 @@ package org.onap.ransim.rest.api.models;
public class SetCollisionReq {
- private boolean collision;
-
- /**
- * A constructor for SetCollisionReq.
- *
- * @param collision
- * to set if the new simulation has collision between the cells
- */
- public SetCollisionReq(boolean collision) {
- super();
- this.collision = collision;
- }
-
- public SetCollisionReq() {
-
- }
-
- public boolean isCollision() {
- return collision;
- }
-
- public void setCollision(boolean collision) {
- this.collision = collision;
- }
+ private boolean collision;
+
+ /**
+ * A constructor for SetCollisionReq.
+ *
+ * @param collision to set if the new simulation has collision between the cells
+ */
+ public SetCollisionReq(boolean collision) {
+ super();
+ this.collision = collision;
+ }
+
+ public SetCollisionReq() {
+
+ }
+
+ public boolean isCollision() {
+ return collision;
+ }
+
+ public void setCollision(boolean collision) {
+ this.collision = collision;
+ }
}
diff --git a/ransim/ransimctrlr/RANSIM-CTRLR/src/main/java/org/onap/ransim/rest/api/models/SetConstants.java b/ransim/ransimctrlr/RANSIM-CTRLR/src/main/java/org/onap/ransim/rest/api/models/SetConstants.java
index 1d6d9d5..bd99dee 100644
--- a/ransim/ransimctrlr/RANSIM-CTRLR/src/main/java/org/onap/ransim/rest/api/models/SetConstants.java
+++ b/ransim/ransimctrlr/RANSIM-CTRLR/src/main/java/org/onap/ransim/rest/api/models/SetConstants.java
@@ -22,91 +22,87 @@ package org.onap.ransim.rest.api.models;
public class SetConstants {
- private int gridSize;
- private int gridType;
- private boolean collision;
-
- private int processCapacity;
- private int numberOfMachines;
- private String serverIdPrefix;
-
- public SetConstants() {
-
- }
-
- /**
- * A constructor for SetConstants.
- *
- * @param gridSize
- * grid dimension for the topology (number of cells along the side)
- * @param gridType
- * honeycomb or square grid
- * @param collision
- * to set if the new simulation has collision between the cells
- * @param processCapacity
- * number of netconf servers
- * @param numberOfMachines
- * number of machines running in one netconf server
- * @param serverIdPrefix
- * server id prefix
- */
- public SetConstants(int gridSize, int gridType, boolean collision, int processCapacity, int numberOfMachines,
- String serverIdPrefix) {
- super();
- this.gridSize = gridSize;
- this.gridType = gridType;
- this.collision = collision;
- this.processCapacity = processCapacity;
- this.numberOfMachines = numberOfMachines;
- this.serverIdPrefix = serverIdPrefix;
- }
-
- public int getGridSize() {
- return gridSize;
- }
-
- public void setGridSize(int gridSize) {
- this.gridSize = gridSize;
- }
-
- public int getGridType() {
- return gridType;
- }
-
- public void setGridType(int gridType) {
- this.gridType = gridType;
- }
-
- public boolean isCollision() {
- return collision;
- }
-
- public void setCollision(boolean collision) {
- this.collision = collision;
- }
-
- public int getProcessCapacity() {
- return processCapacity;
- }
-
- public void setProcessCapacity(int processCapacity) {
- this.processCapacity = processCapacity;
- }
-
- public int getNumberOfMachines() {
- return numberOfMachines;
- }
-
- public void setNumberOfMachines(int numberOfMachines) {
- this.numberOfMachines = numberOfMachines;
- }
-
- public String getServerIdPrefix() {
- return serverIdPrefix;
- }
-
- public void setServerIdPrefix(String serverIdPrefix) {
- this.serverIdPrefix = serverIdPrefix;
- }
+ private int gridSize;
+ private int gridType;
+ private boolean collision;
+
+ private int processCapacity;
+ private int numberOfMachines;
+ private String serverIdPrefix;
+
+ public SetConstants() {
+
+ }
+
+ /**
+ * A constructor for SetConstants.
+ *
+ * @param gridSize grid dimension for the topology (number of cells
+ * along the side)
+ * @param gridType honeycomb or square grid
+ * @param collision to set if the new simulation has collision between
+ * the cells
+ * @param processCapacity number of netconf servers
+ * @param numberOfMachines number of machines running in one netconf server
+ * @param serverIdPrefix server id prefix
+ */
+ public SetConstants(int gridSize, int gridType, boolean collision, int processCapacity, int numberOfMachines,
+ String serverIdPrefix) {
+ super();
+ this.gridSize = gridSize;
+ this.gridType = gridType;
+ this.collision = collision;
+ this.processCapacity = processCapacity;
+ this.numberOfMachines = numberOfMachines;
+ this.serverIdPrefix = serverIdPrefix;
+ }
+
+ public int getGridSize() {
+ return gridSize;
+ }
+
+ public void setGridSize(int gridSize) {
+ this.gridSize = gridSize;
+ }
+
+ public int getGridType() {
+ return gridType;
+ }
+
+ public void setGridType(int gridType) {
+ this.gridType = gridType;
+ }
+
+ public boolean isCollision() {
+ return collision;
+ }
+
+ public void setCollision(boolean collision) {
+ this.collision = collision;
+ }
+
+ public int getProcessCapacity() {
+ return processCapacity;
+ }
+
+ public void setProcessCapacity(int processCapacity) {
+ this.processCapacity = processCapacity;
+ }
+
+ public int getNumberOfMachines() {
+ return numberOfMachines;
+ }
+
+ public void setNumberOfMachines(int numberOfMachines) {
+ this.numberOfMachines = numberOfMachines;
+ }
+
+ public String getServerIdPrefix() {
+ return serverIdPrefix;
+ }
+
+ public void setServerIdPrefix(String serverIdPrefix) {
+ this.serverIdPrefix = serverIdPrefix;
+ }
}
diff --git a/ransim/ransimctrlr/RANSIM-CTRLR/src/main/java/org/onap/ransim/rest/api/models/SliceProfile.java b/ransim/ransimctrlr/RANSIM-CTRLR/src/main/java/org/onap/ransim/rest/api/models/SliceProfile.java
new file mode 100644
index 0000000..4705674
--- /dev/null
+++ b/ransim/ransimctrlr/RANSIM-CTRLR/src/main/java/org/onap/ransim/rest/api/models/SliceProfile.java
@@ -0,0 +1,130 @@
+package org.onap.ransim.rest.api.models;
+
+import java.io.Serializable;
+import java.util.List;
+import javax.persistence.CollectionTable;
+import javax.persistence.Column;
+import javax.persistence.ElementCollection;
+import javax.persistence.Entity;
+import javax.persistence.Id;
+import javax.persistence.JoinColumn;
+import javax.persistence.ManyToOne;
+import javax.persistence.Table;
+
+@Entity
+@Table(name="SLICEPROFILE")
+public class SliceProfile implements Serializable{
+ private static final long serialVersionUID = 1L;
+
+ @Id
+ @Column(name="SLICEPROFILEID")
+ private String sliceProfileId;
+ @Column(name="SNSSAI")
+ private String sNSSAI;
+ @Column(name="PLMNIDLIST")
+ private String pLMNIdList;
+ @Column(name="MAXNOOFUES")
+ private Integer maxNumberofUEs;
+ @Column(name="LATENCY")
+ private Integer latency;
+ @Column(name="DLTHPTPERSLICE")
+ private Integer dLThptPerSlice;
+ @Column(name="ULTHPTPERSLICE")
+ private Integer uLThptPerSlice;
+ @Column(name="MAXNUMBEROFCONNS")
+ private Integer maxNumberofConns;
+ public Integer getdLThptPerSlice() {
+ return dLThptPerSlice;
+ }
+ public void setdLThptPerSlice(Integer dLThptPerSlice) {
+ this.dLThptPerSlice = dLThptPerSlice;
+ }
+ public Integer getuLThptPerSlice() {
+ return uLThptPerSlice;
+ }
+ public void setuLThptPerSlice(Integer uLThptPerSlice) {
+ this.uLThptPerSlice = uLThptPerSlice;
+ }
+ public Integer getMaxNumberofConns() {
+ return maxNumberofConns;
+ }
+ public void setMaxNumberofConns(Integer maxNumberofConns) {
+ this.maxNumberofConns = maxNumberofConns;
+ }
+ public String getCoverageAreaList() {
+ return coverageAreaList;
+ }
+
+ /*
+ * @Column(name="EXPDATARATEDL") private Integer expDataRateDL;
+ *
+ * @Column(name="EXPDATARATEUL") private Integer expDataRateUL;
+ *
+ * @Column(name="MAXNUMBEROFPDUSESSIONS") private Integer
+ * maxNumberofPDUSessions;
+ */
+ @Column(name="UEMOBILITYLEVEL")
+ private String uEMobilityLevel;
+ @Column(name="RESOURCESHARINGLEVEL")
+ private String resourceSharingLevel;
+ //@ElementCollection
+ //@CollectionTable(name="coveragearealist", joinColumns = @JoinColumn(name="sliceprofileid"))
+ @Column(name="coveragearealist")
+ private String coverageAreaList;
+ @ManyToOne
+ @JoinColumn(name = "rannfnssiid")
+ private RANSliceInfo rANSliceInventory;
+ public String getSliceProfileId() {
+ return sliceProfileId;
+ }
+ public void setSliceProfileId(String sliceProfileId) {
+ this.sliceProfileId = sliceProfileId;
+ }
+ public String getsNSSAI() {
+ return sNSSAI;
+ }
+ public void setsNSSAI(String sNSSAI) {
+ this.sNSSAI = sNSSAI;
+ }
+ public String getpLMNIdList() {
+ return pLMNIdList;
+ }
+ public void setpLMNIdList(String pLMNIdList) {
+ this.pLMNIdList = pLMNIdList;
+ }
+ public Integer getMaxNumberofUEs() {
+ return maxNumberofUEs;
+ }
+ public void setMaxNumberofUEs(Integer maxNumberofUEs) {
+ this.maxNumberofUEs = maxNumberofUEs;
+ }
+ public Integer getLatency() {
+ return latency;
+ }
+ public void setLatency(Integer latency) {
+ this.latency = latency;
+ }
+ public String getuEMobilityLevel() {
+ return uEMobilityLevel;
+ }
+ public void setuEMobilityLevel(String uEMobilityLevel) {
+ this.uEMobilityLevel = uEMobilityLevel;
+ }
+ public String getResourceSharingLevel() {
+ return resourceSharingLevel;
+ }
+ public void setResourceSharingLevel(String resourceSharingLevel) {
+ this.resourceSharingLevel = resourceSharingLevel;
+ }
+ public RANSliceInfo getrANSliceInventory() {
+ return rANSliceInventory;
+ }
+ public void setrANSliceInventory(RANSliceInfo rANSliceInventory) {
+ this.rANSliceInventory = rANSliceInventory;
+ }
+
+ public void setCoverageAreaList(String coverageAreaList) {
+ this.coverageAreaList = coverageAreaList;
+ }
+
+} \ No newline at end of file
diff --git a/ransim/ransimctrlr/RANSIM-CTRLR/src/main/java/org/onap/ransim/rest/api/models/TACells.java b/ransim/ransimctrlr/RANSIM-CTRLR/src/main/java/org/onap/ransim/rest/api/models/TACells.java
new file mode 100644
index 0000000..b56cf2b
--- /dev/null
+++ b/ransim/ransimctrlr/RANSIM-CTRLR/src/main/java/org/onap/ransim/rest/api/models/TACells.java
@@ -0,0 +1,36 @@
+package org.onap.ransim.rest.api.models;
+
+import java.io.Serializable;
+
+import javax.persistence.Column;
+import javax.persistence.Entity;
+import javax.persistence.Id;
+import javax.persistence.Table;
+
+@Entity
+@Table(name="TACELLS")
+public class TACells implements Serializable{
+ private static final long serialVersionUID = 1L;
+ @Id
+ @Column(name="TRACKINGAREA")
+ private String trackingArea;
+ @Column(name="CELLS")
+ private String cellsList;
+ public String getTrackingArea() {
+ return trackingArea;
+ }
+ public void setTrackingArea(String trackingArea) {
+ this.trackingArea = trackingArea;
+ }
+
+ public String getCellsList() {
+ return cellsList;
+ }
+ public void setCellsList(String cellsList) {
+ this.cellsList = cellsList;
+ }
+ @Override
+ public String toString() {
+ return "TACells [trackingArea=" + trackingArea + ", cellsList=" + cellsList + "]";
+ }
+} \ No newline at end of file
diff --git a/ransim/ransimctrlr/RANSIM-CTRLR/src/main/java/org/onap/ransim/rest/api/models/Topology.java b/ransim/ransimctrlr/RANSIM-CTRLR/src/main/java/org/onap/ransim/rest/api/models/Topology.java
index 87d575e..faf7c54 100644
--- a/ransim/ransimctrlr/RANSIM-CTRLR/src/main/java/org/onap/ransim/rest/api/models/Topology.java
+++ b/ransim/ransimctrlr/RANSIM-CTRLR/src/main/java/org/onap/ransim/rest/api/models/Topology.java
@@ -23,90 +23,84 @@ package org.onap.ransim.rest.api.models;
import java.util.List;
public class Topology {
- int gridSize;
- float minScreenX = 0;
- float minScreenY = 0;
- float maxScreenX = 10;
- float maxScreenY = 10;
- List<CellDetails> cellTopology;
-
- /**
- * A constructor for Topology.
- *
- * @param gridSize
- * grid size
- * @param minScreenX
- * min value of screen X for a cell in the topology
- * @param minScreenY
- * min value of screen Y for a cell in the topology
- * @param maxScreenX
- * max value of screen X for a cell in the topology
- * @param maxScreenY
- * max value of screen Y for a cell in the topology
- * @param cellTopology
- * list of cells within the topology
- */
- public Topology(int gridSize, float minScreenX, float minScreenY, float maxScreenX, float maxScreenY,
- List<CellDetails> cellTopology) {
- super();
- this.gridSize = gridSize;
- this.minScreenX = minScreenX;
- this.minScreenY = minScreenY;
- this.maxScreenX = maxScreenX;
- this.maxScreenY = maxScreenY;
- this.cellTopology = cellTopology;
- }
-
- public Topology() {
-
- }
-
- public int getGridSize() {
- return gridSize;
- }
-
- public void setGridSize(int gridSize) {
- this.gridSize = gridSize;
- }
-
- public float getMinScreenX() {
- return minScreenX;
- }
-
- public void setMinScreenX(float minScreenX) {
- this.minScreenX = minScreenX;
- }
-
- public float getMinScreenY() {
- return minScreenY;
- }
-
- public void setMinScreenY(float minScreenY) {
- this.minScreenY = minScreenY;
- }
-
- public float getMaxScreenX() {
- return maxScreenX;
- }
-
- public void setMaxScreenX(float maxScreenX) {
- this.maxScreenX = maxScreenX;
- }
-
- public float getMaxScreenY() {
- return maxScreenY;
- }
-
- public void setMaxScreenY(float maxScreenY) {
- this.maxScreenY = maxScreenY;
- }
-
- public List<CellDetails> getCellTopology() {
- return cellTopology;
- }
-
- public void setCellTopology(List<CellDetails> cellTopology) {
- this.cellTopology = cellTopology;
- }
+ int gridSize;
+ float minScreenX = 0;
+ float minScreenY = 0;
+ float maxScreenX = 10;
+ float maxScreenY = 10;
+ List<CellDetails> cellTopology;
+
+ /**
+ * A constructor for Topology.
+ *
+ * @param gridSize grid size
+ * @param minScreenX min value of screen X for a cell in the topology
+ * @param minScreenY min value of screen Y for a cell in the topology
+ * @param maxScreenX max value of screen X for a cell in the topology
+ * @param maxScreenY max value of screen Y for a cell in the topology
+ * @param cellTopology list of cells within the topology
+ */
+ public Topology(int gridSize, float minScreenX, float minScreenY, float maxScreenX, float maxScreenY,
+ List<CellDetails> cellTopology) {
+ super();
+ this.gridSize = gridSize;
+ this.minScreenX = minScreenX;
+ this.minScreenY = minScreenY;
+ this.maxScreenX = maxScreenX;
+ this.maxScreenY = maxScreenY;
+ this.cellTopology = cellTopology;
+ }
+
+ public Topology() {
+
+ }
+
+ public int getGridSize() {
+ return gridSize;
+ }
+
+ public void setGridSize(int gridSize) {
+ this.gridSize = gridSize;
+ }
+
+ public float getMinScreenX() {
+ return minScreenX;
+ }
+
+ public void setMinScreenX(float minScreenX) {
+ this.minScreenX = minScreenX;
+ }
+
+ public float getMinScreenY() {
+ return minScreenY;
+ }
+
+ public void setMinScreenY(float minScreenY) {
+ this.minScreenY = minScreenY;
+ }
+
+ public float getMaxScreenX() {
+ return maxScreenX;
+ }
+
+ public void setMaxScreenX(float maxScreenX) {
+ this.maxScreenX = maxScreenX;
+ }
+
+ public float getMaxScreenY() {
+ return maxScreenY;
+ }
+
+ public void setMaxScreenY(float maxScreenY) {
+ this.maxScreenY = maxScreenY;
+ }
+
+ public List<CellDetails> getCellTopology() {
+ return cellTopology;
+ }
+
+ public void setCellTopology(List<CellDetails> cellTopology) {
+ this.cellTopology = cellTopology;
+ }
}
diff --git a/ransim/ransimctrlr/RANSIM-CTRLR/src/main/java/org/onap/ransim/rest/api/models/TopologyDump.java b/ransim/ransimctrlr/RANSIM-CTRLR/src/main/java/org/onap/ransim/rest/api/models/TopologyDump.java
index d7825f9..b2aefec 100644
--- a/ransim/ransimctrlr/RANSIM-CTRLR/src/main/java/org/onap/ransim/rest/api/models/TopologyDump.java
+++ b/ransim/ransimctrlr/RANSIM-CTRLR/src/main/java/org/onap/ransim/rest/api/models/TopologyDump.java
@@ -24,29 +24,28 @@ import java.util.List;
public class TopologyDump {
- private List<CellData> cellList;
+ private List<CellData> cellList;
- /**
- * A constructor for TopologyDump.
- *
- * @param cellList
- * list of cells
- */
- public TopologyDump(List<CellData> cellList) {
+ /**
+ * A constructor for TopologyDump.
+ *
+ * @param cellList list of cells
+ */
+ public TopologyDump(List<CellData> cellList) {
- this.cellList = cellList;
- }
+ this.cellList = cellList;
+ }
- public TopologyDump() {
+ public TopologyDump() {
- }
+ }
- public List<CellData> getCellList() {
- return cellList;
- }
+ public List<CellData> getCellList() {
+ return cellList;
+ }
- public void setCellList(List<CellData> cellList) {
- this.cellList = cellList;
- }
+ public void setCellList(List<CellData> cellList) {
+ this.cellList = cellList;
+ }
}
diff --git a/ransim/ransimctrlr/RANSIM-CTRLR/src/main/java/org/onap/ransim/rest/api/repository/CellDetailsRepo.java b/ransim/ransimctrlr/RANSIM-CTRLR/src/main/java/org/onap/ransim/rest/api/repository/CellDetailsRepo.java
new file mode 100644
index 0000000..48e20bf
--- /dev/null
+++ b/ransim/ransimctrlr/RANSIM-CTRLR/src/main/java/org/onap/ransim/rest/api/repository/CellDetailsRepo.java
@@ -0,0 +1,37 @@
+/*-
+ * ============LICENSE_START=======================================================
+ * Ran Simulator Controller
+ * ================================================================================
+ * Copyright (C) 2020 Wipro Limited.
+ * ================================================================================
+ * Licensed 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
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License 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.onap.ransim.rest.api.repository;
+
+import java.util.List;
+
+import org.onap.ransim.rest.api.models.CellDetails;
+import org.springframework.data.jpa.repository.Query;
+import org.springframework.data.repository.CrudRepository;
+import org.springframework.stereotype.Repository;
+
+@Repository
+public interface CellDetailsRepo extends CrudRepository<CellDetails, String> {
+
+ @Query("SELECT n FROM CellDetails n WHERE n.serverId is null")
+ List<CellDetails> findCellsWithNoServerId();
+
+ @Query("SELECT cd from CellDetails cd where cd.pciCollisionDetected=true or cd.pciConfusionDetected=true")
+ List<CellDetails> getCellsWithCollisionOrConfusion();
+}
diff --git a/ransim/ransimctrlr/RANSIM-CTRLR/src/main/java/org/onap/ransim/rest/api/repository/CellNeighborRepo.java b/ransim/ransimctrlr/RANSIM-CTRLR/src/main/java/org/onap/ransim/rest/api/repository/CellNeighborRepo.java
new file mode 100644
index 0000000..99b620a
--- /dev/null
+++ b/ransim/ransimctrlr/RANSIM-CTRLR/src/main/java/org/onap/ransim/rest/api/repository/CellNeighborRepo.java
@@ -0,0 +1,29 @@
+/*-
+ * ============LICENSE_START=======================================================
+ * Ran Simulator Controller
+ * ================================================================================
+ * Copyright (C) 2020 Wipro Limited.
+ * ================================================================================
+ * Licensed 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
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License 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.onap.ransim.rest.api.repository;
+
+import org.onap.ransim.rest.api.models.CellNeighbor;
+import org.springframework.data.repository.CrudRepository;
+import org.springframework.stereotype.Repository;
+
+@Repository
+public interface CellNeighborRepo extends CrudRepository<CellNeighbor, String> {
+
+}
diff --git a/ransim/ransimctrlr/RANSIM-CTRLR/src/main/java/org/onap/ransim/rest/api/repository/GNBCUCPRepository.java b/ransim/ransimctrlr/RANSIM-CTRLR/src/main/java/org/onap/ransim/rest/api/repository/GNBCUCPRepository.java
new file mode 100644
index 0000000..b591e09
--- /dev/null
+++ b/ransim/ransimctrlr/RANSIM-CTRLR/src/main/java/org/onap/ransim/rest/api/repository/GNBCUCPRepository.java
@@ -0,0 +1,17 @@
+package org.onap.ransim.rest.api.repository;
+
+import java.util.List;
+
+import org.springframework.data.jpa.repository.Query;
+import org.springframework.data.repository.CrudRepository;
+import org.springframework.stereotype.Repository;
+
+import org.onap.ransim.rest.api.models.GNBCUCPFunction;
+
+@Repository
+public interface GNBCUCPRepository extends CrudRepository<GNBCUCPFunction,String>{
+ @Query(nativeQuery=true, value="select distinct(cucp.gnbcuname) from gnbcucpfunction cucp join nrcellcu cellcu where cellcu.celllocalid in (:cellIdList)")
+ public List<String> findCUCPByCellIds(List<Integer> cellIdList);
+ @Query(nativeQuery = true, value = "select * from gnbcucpfunction cucp join plmninfo plmn where plmn.snssai=?1 and plmn.nrcellcu_celllocalid IS NOT NULL")
+ public List<GNBCUCPFunction> findCUCPsByNSSAI(String nSSAI);
+}
diff --git a/ransim/ransimctrlr/RANSIM-CTRLR/src/main/java/org/onap/ransim/rest/api/repository/GNBCUUPRepository.java b/ransim/ransimctrlr/RANSIM-CTRLR/src/main/java/org/onap/ransim/rest/api/repository/GNBCUUPRepository.java
new file mode 100644
index 0000000..8d15deb
--- /dev/null
+++ b/ransim/ransimctrlr/RANSIM-CTRLR/src/main/java/org/onap/ransim/rest/api/repository/GNBCUUPRepository.java
@@ -0,0 +1,10 @@
+package org.onap.ransim.rest.api.repository;
+
+import org.springframework.data.repository.CrudRepository;
+import org.springframework.stereotype.Repository;
+import org.onap.ransim.rest.api.models.GNBCUUPFunction;
+
+@Repository
+public interface GNBCUUPRepository extends CrudRepository<GNBCUUPFunction,Integer>{
+
+}
diff --git a/ransim/ransimctrlr/RANSIM-CTRLR/src/main/java/org/onap/ransim/rest/api/repository/GNBDURepository.java b/ransim/ransimctrlr/RANSIM-CTRLR/src/main/java/org/onap/ransim/rest/api/repository/GNBDURepository.java
new file mode 100644
index 0000000..cbc2182
--- /dev/null
+++ b/ransim/ransimctrlr/RANSIM-CTRLR/src/main/java/org/onap/ransim/rest/api/repository/GNBDURepository.java
@@ -0,0 +1,14 @@
+package org.onap.ransim.rest.api.repository;
+
+import java.util.List;
+import org.springframework.data.jpa.repository.Query;
+import org.springframework.data.repository.CrudRepository;
+import org.springframework.stereotype.Repository;
+import org.onap.ransim.rest.api.models.GNBDUFunction;
+
+@Repository
+public interface GNBDURepository extends CrudRepository<GNBDUFunction,Integer>{
+ @Query(nativeQuery = true, value = "select * from gnbdufunction du join plmninfo plmn where plmn.snssai=?1 and plmn.nrcelldu_celllocalid IS NOT NULL")
+ public List<GNBDUFunction> findDUsByNSSAI(String nSSAI);
+}
+
diff --git a/ransim/ransimctrlr/RANSIM-CTRLR/src/main/java/org/onap/ransim/rest/api/repository/NRCellCURepository.java b/ransim/ransimctrlr/RANSIM-CTRLR/src/main/java/org/onap/ransim/rest/api/repository/NRCellCURepository.java
new file mode 100644
index 0000000..4890343
--- /dev/null
+++ b/ransim/ransimctrlr/RANSIM-CTRLR/src/main/java/org/onap/ransim/rest/api/repository/NRCellCURepository.java
@@ -0,0 +1,10 @@
+package org.onap.ransim.rest.api.repository;
+
+import org.springframework.data.repository.CrudRepository;
+import org.springframework.stereotype.Repository;
+import org.onap.ransim.rest.api.models.NRCellCU;
+
+@Repository
+public interface NRCellCURepository extends CrudRepository<NRCellCU,Integer>{
+
+}
diff --git a/ransim/ransimctrlr/RANSIM-CTRLR/src/main/java/org/onap/ransim/rest/api/repository/NRCellDURepository.java b/ransim/ransimctrlr/RANSIM-CTRLR/src/main/java/org/onap/ransim/rest/api/repository/NRCellDURepository.java
new file mode 100644
index 0000000..b1c123c
--- /dev/null
+++ b/ransim/ransimctrlr/RANSIM-CTRLR/src/main/java/org/onap/ransim/rest/api/repository/NRCellDURepository.java
@@ -0,0 +1,8 @@
+package org.onap.ransim.rest.api.repository;
+
+import org.onap.ransim.rest.api.models.NRCellDU;
+import org.springframework.data.repository.CrudRepository;
+
+public interface NRCellDURepository extends CrudRepository<NRCellDU, Integer> {
+
+}
diff --git a/ransim/ransimctrlr/RANSIM-CTRLR/src/main/java/org/onap/ransim/rest/api/repository/NearRTRICRepository.java b/ransim/ransimctrlr/RANSIM-CTRLR/src/main/java/org/onap/ransim/rest/api/repository/NearRTRICRepository.java
new file mode 100644
index 0000000..2f90fd4
--- /dev/null
+++ b/ransim/ransimctrlr/RANSIM-CTRLR/src/main/java/org/onap/ransim/rest/api/repository/NearRTRICRepository.java
@@ -0,0 +1,24 @@
+package org.onap.ransim.rest.api.repository;
+
+import java.util.List;
+import java.util.Set;
+import org.springframework.data.jpa.repository.Query;
+import org.springframework.data.repository.CrudRepository;
+import org.springframework.stereotype.Repository;
+import org.onap.ransim.rest.api.models.NearRTRIC;
+
+@Repository
+public interface NearRTRICRepository extends CrudRepository<NearRTRIC,Integer>{
+
+ @Query(nativeQuery = true, value = "select * from nearrtric ric join trackingarea ta where tracking_area=?1")
+ public List<NearRTRIC> getListOfRICsInTrackingArea(String trackingArea);
+
+ @Query(nativeQuery=true, value="select * from nearrtric ric join gnbcucpfunction cucp where cucp.gnbcuname=?1")
+ public List<NearRTRIC> findNearRTRICByCUCPName(String cucpNames);
+
+ @Query(nativeQuery = true, value = "select * from nearrtric ric join rannfnssi nssi where nssi.rannfnssilist=?1")
+ public List<NearRTRIC> findNearRTRICByNSSI(String ranNFNSSIId);
+
+ @Query(nativeQuery = true, value = "select * from nearrtric ric join plmninfo plmn where plmn.snssai=?1 and plmn.nearrtricid IS NOT NULL")
+ public Set<NearRTRIC> findNearRTRICByNSSAI(String nSSAI);
+} \ No newline at end of file
diff --git a/ransim/ransimctrlr/RANSIM-CTRLR/src/main/java/org/onap/ransim/rest/api/repository/NeighborDetailsRepo.java b/ransim/ransimctrlr/RANSIM-CTRLR/src/main/java/org/onap/ransim/rest/api/repository/NeighborDetailsRepo.java
new file mode 100644
index 0000000..7209f40
--- /dev/null
+++ b/ransim/ransimctrlr/RANSIM-CTRLR/src/main/java/org/onap/ransim/rest/api/repository/NeighborDetailsRepo.java
@@ -0,0 +1,29 @@
+/*-
+ * ============LICENSE_START=======================================================
+ * Ran Simulator Controller
+ * ================================================================================
+ * Copyright (C) 2020 Wipro Limited.
+ * ================================================================================
+ * Licensed 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
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License 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.onap.ransim.rest.api.repository;
+
+import org.onap.ransim.rest.api.models.NeighborDetails;
+import org.springframework.data.repository.CrudRepository;
+import org.springframework.stereotype.Repository;
+
+@Repository
+public interface NeighborDetailsRepo extends CrudRepository<NeighborDetails, String> {
+
+}
diff --git a/ransim/ransimctrlr/RANSIM-CTRLR/src/main/java/org/onap/ransim/rest/api/repository/NetconfServersRepo.java b/ransim/ransimctrlr/RANSIM-CTRLR/src/main/java/org/onap/ransim/rest/api/repository/NetconfServersRepo.java
new file mode 100644
index 0000000..e0ecc03
--- /dev/null
+++ b/ransim/ransimctrlr/RANSIM-CTRLR/src/main/java/org/onap/ransim/rest/api/repository/NetconfServersRepo.java
@@ -0,0 +1,29 @@
+/*-
+ * ============LICENSE_START=======================================================
+ * Ran Simulator Controller
+ * ================================================================================
+ * Copyright (C) 2020 Wipro Limited.
+ * ================================================================================
+ * Licensed 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
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License 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.onap.ransim.rest.api.repository;
+
+import org.onap.ransim.rest.api.models.NetconfServers;
+import org.springframework.data.repository.CrudRepository;
+import org.springframework.stereotype.Repository;
+
+@Repository
+public interface NetconfServersRepo extends CrudRepository<NetconfServers, String> {
+
+}
diff --git a/ransim/ransimctrlr/RANSIM-CTRLR/src/main/java/org/onap/ransim/rest/api/repository/OperationLogRepo.java b/ransim/ransimctrlr/RANSIM-CTRLR/src/main/java/org/onap/ransim/rest/api/repository/OperationLogRepo.java
new file mode 100644
index 0000000..0541fec
--- /dev/null
+++ b/ransim/ransimctrlr/RANSIM-CTRLR/src/main/java/org/onap/ransim/rest/api/repository/OperationLogRepo.java
@@ -0,0 +1,29 @@
+/*-
+ * ============LICENSE_START=======================================================
+ * Ran Simulator Controller
+ * ================================================================================
+ * Copyright (C) 2020 Wipro Limited.
+ * ================================================================================
+ * Licensed 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
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License 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.onap.ransim.rest.api.repository;
+
+import org.onap.ransim.rest.api.models.OperationLog;
+import org.springframework.data.repository.CrudRepository;
+import org.springframework.stereotype.Repository;
+
+@Repository
+public interface OperationLogRepo extends CrudRepository<OperationLog, String>{
+
+}
diff --git a/ransim/ransimctrlr/RANSIM-CTRLR/src/main/java/org/onap/ransim/rest/api/repository/RANInventoryRepository.java b/ransim/ransimctrlr/RANSIM-CTRLR/src/main/java/org/onap/ransim/rest/api/repository/RANInventoryRepository.java
new file mode 100644
index 0000000..7511a89
--- /dev/null
+++ b/ransim/ransimctrlr/RANSIM-CTRLR/src/main/java/org/onap/ransim/rest/api/repository/RANInventoryRepository.java
@@ -0,0 +1,13 @@
+package org.onap.ransim.rest.api.repository;
+
+import org.springframework.data.jpa.repository.Query;
+import org.springframework.data.repository.CrudRepository;
+import org.springframework.stereotype.Repository;
+
+import org.onap.ransim.rest.api.models.RANSliceInfo;
+
+@Repository
+public interface RANInventoryRepository extends CrudRepository<RANSliceInfo,String>{
+ @Query(nativeQuery = true, value = "select distinct(raninfo.rannfnssiid) from raninventory raninfo join nssai where nssai.nssailist=?1")
+ public String findRANNFNSSIofNSSAI(String sNSSAI);
+} \ No newline at end of file
diff --git a/ransim/ransimctrlr/RANSIM-CTRLR/src/main/java/org/onap/ransim/rest/api/repository/RRMPolicyMemberRepository.java b/ransim/ransimctrlr/RANSIM-CTRLR/src/main/java/org/onap/ransim/rest/api/repository/RRMPolicyMemberRepository.java
new file mode 100644
index 0000000..a6f96d8
--- /dev/null
+++ b/ransim/ransimctrlr/RANSIM-CTRLR/src/main/java/org/onap/ransim/rest/api/repository/RRMPolicyMemberRepository.java
@@ -0,0 +1,31 @@
+/*******************************************************************************
+* ============LICENSE_START=======================================================
+* Config DB
+* ================================================================================
+* Copyright (C) 2020-2021 Wipro Limited.
+* ==============================================================================
+* Licensed 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
+*
+* Unless required by applicable law or agreed to in writing, software
+* distributed under the License 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.onap.ransim.rest.api.repository;
+
+import org.springframework.data.repository.CrudRepository;
+import org.springframework.stereotype.Repository;
+
+import org.onap.ransim.rest.api.models.RRMPolicyMember;
+
+@Repository
+public interface RRMPolicyMemberRepository extends CrudRepository<RRMPolicyMember,Integer>{
+
+}
diff --git a/ransim/ransimctrlr/RANSIM-CTRLR/src/main/java/org/onap/ransim/rest/api/repository/RRMPolicyRepository.java b/ransim/ransimctrlr/RANSIM-CTRLR/src/main/java/org/onap/ransim/rest/api/repository/RRMPolicyRepository.java
new file mode 100644
index 0000000..7a37572
--- /dev/null
+++ b/ransim/ransimctrlr/RANSIM-CTRLR/src/main/java/org/onap/ransim/rest/api/repository/RRMPolicyRepository.java
@@ -0,0 +1,15 @@
+package org.onap.ransim.rest.api.repository;
+
+import org.springframework.data.jpa.repository.Query;
+import org.springframework.data.repository.CrudRepository;
+import org.springframework.stereotype.Repository;
+
+import org.onap.ransim.rest.api.models.RRMPolicyRatio;
+
+@Repository
+public interface RRMPolicyRepository extends CrudRepository<RRMPolicyRatio,Integer>{
+
+ @Query(nativeQuery = true, value="select * from rrmpolicy where resourcetype=?1 and resourceid=?2")
+ public RRMPolicyRatio findByResourceTypeAndId(String resourceType, String resourceId);
+
+}
diff --git a/ransim/ransimctrlr/RANSIM-CTRLR/src/main/java/org/onap/ransim/rest/api/repository/SliceProfileRepository.java b/ransim/ransimctrlr/RANSIM-CTRLR/src/main/java/org/onap/ransim/rest/api/repository/SliceProfileRepository.java
new file mode 100644
index 0000000..717160a
--- /dev/null
+++ b/ransim/ransimctrlr/RANSIM-CTRLR/src/main/java/org/onap/ransim/rest/api/repository/SliceProfileRepository.java
@@ -0,0 +1,9 @@
+package org.onap.ransim.rest.api.repository;
+
+import org.onap.ransim.rest.api.models.SliceProfile;
+import org.springframework.data.repository.CrudRepository;
+
+public interface SliceProfileRepository extends CrudRepository <SliceProfile,String>{
+
+}
+
diff --git a/ransim/ransimctrlr/RANSIM-CTRLR/src/main/java/org/onap/ransim/rest/api/repository/TACellRepository.java b/ransim/ransimctrlr/RANSIM-CTRLR/src/main/java/org/onap/ransim/rest/api/repository/TACellRepository.java
new file mode 100644
index 0000000..6ad6971
--- /dev/null
+++ b/ransim/ransimctrlr/RANSIM-CTRLR/src/main/java/org/onap/ransim/rest/api/repository/TACellRepository.java
@@ -0,0 +1,15 @@
+package org.onap.ransim.rest.api.repository;
+
+import org.springframework.data.repository.CrudRepository;
+import org.springframework.stereotype.Repository;
+
+import org.onap.ransim.rest.api.models.TACells;
+/***
+ *
+ * @author onapadmin
+ *
+ */
+@Repository
+public interface TACellRepository extends CrudRepository <TACells,String> {
+
+}
diff --git a/ransim/ransimctrlr/RANSIM-CTRLR/src/main/java/org/onap/ransim/rest/api/services/RANSliceConfigService.java b/ransim/ransimctrlr/RANSIM-CTRLR/src/main/java/org/onap/ransim/rest/api/services/RANSliceConfigService.java
new file mode 100644
index 0000000..8ecd1f5
--- /dev/null
+++ b/ransim/ransimctrlr/RANSIM-CTRLR/src/main/java/org/onap/ransim/rest/api/services/RANSliceConfigService.java
@@ -0,0 +1,614 @@
+package org.onap.ransim.rest.api.services;
+
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.HashMap;
+import java.util.HashSet;
+import java.util.List;
+import java.util.Map;
+import java.util.Set;
+import java.util.stream.Collectors;
+
+import org.modelmapper.ModelMapper;
+import org.modelmapper.convention.MatchingStrategies;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+
+import org.onap.ransim.rest.api.models.GNBCUCPFunction;
+import org.onap.ransim.rest.api.models.GNBCUUPFunction;
+import org.onap.ransim.rest.api.models.GNBDUFunction;
+import org.onap.ransim.rest.api.models.NRCellCU;
+import org.onap.ransim.rest.api.models.NRCellDU;
+import org.onap.ransim.rest.api.models.NSSAIConfig;
+import org.onap.ransim.rest.api.models.NearRTRIC;
+import org.onap.ransim.rest.api.models.PLMNInfo;
+import org.onap.ransim.rest.api.models.RANSliceInfo;
+import org.onap.ransim.rest.api.models.RRMPolicyRatio;
+import org.onap.ransim.rest.api.models.SliceProfile;
+import org.onap.ransim.rest.api.models.TACells;
+import org.onap.ransim.rest.api.repository.GNBCUCPRepository;
+import org.onap.ransim.rest.api.repository.GNBCUUPRepository;
+import org.onap.ransim.rest.api.repository.GNBDURepository;
+import org.onap.ransim.rest.api.repository.NRCellCURepository;
+import org.onap.ransim.rest.api.repository.NearRTRICRepository;
+import org.onap.ransim.rest.api.repository.RANInventoryRepository;
+import org.onap.ransim.rest.api.repository.RRMPolicyRepository;
+import org.onap.ransim.rest.api.repository.TACellRepository;
+import org.onap.ransim.rest.web.mapper.GNBCUCPModel;
+import org.onap.ransim.rest.web.mapper.GNBCUUPModel;
+import org.onap.ransim.rest.web.mapper.GNBDUModel;
+import org.onap.ransim.rest.web.mapper.NRCellCUModel;
+import org.onap.ransim.rest.web.mapper.NRCellDUModel;
+import org.onap.ransim.rest.web.mapper.NearRTRICModel;
+import org.onap.ransim.rest.web.mapper.RANSliceInfoModel;
+import org.onap.ransim.rest.web.mapper.RRMPolicyRatioModel;
+
+@Service
+public class RANSliceConfigService {
+ private static final Logger logger = LoggerFactory.getLogger(RANSliceConfigService.class);
+ @Autowired
+ private NRCellCURepository nRCellCURepository;
+
+ @Autowired
+ private GNBCUCPRepository gNBCUCPRepository;
+
+ @Autowired
+ private GNBCUUPRepository gNBCUUPRepository;
+
+ @Autowired
+ private GNBDURepository gNBDURepository;
+
+ @Autowired
+ private NearRTRICRepository nearRTRICRepository;
+
+ @Autowired
+ private RRMPolicyRepository rRMPolicyRepository;
+
+ @Autowired
+ private RANInventoryRepository ranInventoryRepo;
+
+ @Autowired
+ private TACellRepository tACellRepository;
+
+ private ModelMapper modelMapper = new ModelMapper();
+
+ /**
+ * To store/update the NRCEllCU details
+ *
+ * @param nRCellCUModel
+ * @return NRCellCUModel
+ */
+ public NRCellCUModel saveNRcellCU(NRCellCUModel nRCellCUModel) {
+ logger.debug("Request received to save NRcellCU: id::"+ nRCellCUModel.getCellLocalId());
+ NRCellCU cellCUEntity = new NRCellCU();
+ modelMapper.map(nRCellCUModel, cellCUEntity);
+ if(!cellCUEntity.getpLMNInfoList().isEmpty()) {
+ for(PLMNInfo plmn:cellCUEntity.getpLMNInfoList()) {
+ //plmn.setnRCellCU(cellCUEntity);
+ }
+ }
+ NRCellCU cellCUEntityResponse = nRCellCURepository.save(cellCUEntity);
+ modelMapper.map(cellCUEntityResponse,nRCellCUModel);
+ return nRCellCUModel;
+ }
+
+ /**
+ * To fetch the NRCellCU details
+ *
+ * @param cellLocalId
+ * @return NRCellCUModel
+ */
+ public NRCellCUModel fetchNRCellCUDetails(Integer cellLocalId) {
+ logger.debug("Request received to fetchNRCellCUDetails: id::"+ cellLocalId);
+ modelMapper.getConfiguration().setMatchingStrategy(MatchingStrategies.STRICT);
+ NRCellCU cellCUEntity = nRCellCURepository.findById(cellLocalId).isPresent()?nRCellCURepository.findById(cellLocalId).get():null;
+ NRCellCUModel nRCellCUModel = new NRCellCUModel();
+ modelMapper.map(cellCUEntity,nRCellCUModel);
+ return nRCellCUModel;
+ }
+
+ /**
+ * To store the slice / config details of GNBCUCPFunction
+ * @param gNBCUCPModel
+ * @return
+ */
+ public GNBCUCPModel saveGNBCUCP(GNBCUCPModel gNBCUCPModel) {
+ logger.debug("Request received to save GNBCUCPModel: id::"+ gNBCUCPModel.getgNBCUName());
+ modelMapper.getConfiguration().setMatchingStrategy(MatchingStrategies.STRICT);
+ GNBCUCPFunction gNBCUCPFunction=new GNBCUCPFunction(); NearRTRIC nearRTRICRef = new NearRTRIC();
+ try {
+ modelMapper.map(gNBCUCPModel, gNBCUCPFunction);
+ if(gNBCUCPModel.getNearRTRICId()!=null && nearRTRICRepository.findById(gNBCUCPModel.getNearRTRICId()).isPresent()) {
+ gNBCUCPFunction.setNearRTRIC(nearRTRICRepository.findById(gNBCUCPModel.getNearRTRICId()).get());
+ }
+ if(gNBCUCPFunction!=null && !gNBCUCPFunction.getCellCUList().isEmpty()) {
+ gNBCUCPFunction.getCellCUList().forEach(cellCU->{
+ cellCU.setgNBCUCPFunction(gNBCUCPFunction);
+ });
+ }
+ GNBCUCPFunction gNBCUCPEntity = gNBCUCPRepository.save(gNBCUCPFunction);
+ modelMapper.map(gNBCUCPEntity,gNBCUCPModel);
+ }catch(Exception e) {
+ logger.debug("Error occured during saveGNBCUCP"+e.getMessage());
+ return null;
+ }
+ return gNBCUCPModel;
+ }
+
+ /**
+ * To fetch the gNBCUCP details
+ *
+ * @param cucpName
+ * @return GNBCUCPModel
+ */
+ public GNBCUCPModel fetchGNBCUCPData(String cucpName) {
+ logger.debug("Request received to fetch GNBCUCPFunction: name::"+ cucpName);
+ modelMapper.getConfiguration().setMatchingStrategy(MatchingStrategies.STRICT);
+ GNBCUCPFunction gNBCUCPEntity = gNBCUCPRepository.findById(cucpName).isPresent()?gNBCUCPRepository.findById(cucpName).get():null;
+ GNBCUCPModel gNBCUCPModel = new GNBCUCPModel();
+ modelMapper.map(gNBCUCPEntity,gNBCUCPModel);
+ return gNBCUCPModel;
+ }
+
+ /**
+ * To store the slice / config details of GNBCUCPFunction
+ * @param gNBCUCPModel
+ * @return
+ */
+ public GNBCUUPModel saveGNBCUUP(GNBCUUPModel gNBCUUPModel) {
+ logger.debug("Request received to save GNBCUUPModel: id::"+ gNBCUUPModel.getgNBCUUPId());
+ modelMapper.getConfiguration().setMatchingStrategy(MatchingStrategies.STRICT);
+ GNBCUUPFunction gNBCUUPFunction=new GNBCUUPFunction();
+ modelMapper.map(gNBCUUPModel, gNBCUUPFunction);
+ if(gNBCUUPModel.getNearRTRICId()!=null && nearRTRICRepository.findById(gNBCUUPModel.getNearRTRICId()).isPresent()) {
+ gNBCUUPFunction.setNearRTRIC(nearRTRICRepository.findById(gNBCUUPModel.getNearRTRICId()).get());
+ }
+ if(gNBCUUPFunction!=null && !gNBCUUPFunction.getpLMNInfoList().isEmpty()) {
+ gNBCUUPFunction.getpLMNInfoList().forEach(plmn->{
+ //plmn.setgNBCUUPFunction(gNBCUUPFunction);
+ });
+ }
+ GNBCUUPFunction gNBCUUPEntity = gNBCUUPRepository.save(gNBCUUPFunction);
+ modelMapper.map(gNBCUUPEntity,gNBCUUPModel);
+ return gNBCUUPModel;
+ }
+
+ /**
+ * To fetch the gNBCUUP details
+ *
+ * @param cucpName
+ * @return GNBCUUPModel
+ */
+ public GNBCUUPModel fetchGNBCUUPData(Integer gNBCUUPId) {
+ logger.debug("Request received to fetch GNBCUUPFunction: id::"+ gNBCUUPId);
+ modelMapper.getConfiguration().setMatchingStrategy(MatchingStrategies.STRICT);
+ GNBCUUPFunction gNBCUUPEntity = gNBCUUPRepository.findById(gNBCUUPId).isPresent()?gNBCUUPRepository.findById(gNBCUUPId).get():null;
+ GNBCUUPModel gNBCUUPModel = new GNBCUUPModel();
+ modelMapper.map(gNBCUUPEntity,gNBCUUPModel);
+ return gNBCUUPModel;
+ }
+
+ /**
+ * To store the slice / config details of GNBDUFunction
+ * @param GNBDUModel
+ * @return
+ */
+ public GNBDUModel saveGNBDU(GNBDUModel gNBDUModel) {
+ logger.debug("Request received to save GNBDUModel: id::"+ gNBDUModel.getgNBDUId());
+ modelMapper.getConfiguration().setMatchingStrategy(MatchingStrategies.STRICT);
+ GNBDUFunction gNBDUFunction=new GNBDUFunction();NearRTRIC nearRTRICRef = new NearRTRIC();
+ modelMapper.map(gNBDUModel, gNBDUFunction);
+ if(gNBDUModel.getNearRTRICId()!=null && nearRTRICRepository.findById(gNBDUModel.getNearRTRICId()).isPresent()) {
+ nearRTRICRef = nearRTRICRepository.findById(gNBDUModel.getNearRTRICId()).get();
+ gNBDUFunction.setNearRTRIC(nearRTRICRef);
+ }
+ NearRTRIC nearRTRICRefNew = nearRTRICRef;
+ nearRTRICRefNew.setNearRTRICId(gNBDUModel.getNearRTRICId());
+ if(gNBDUFunction!=null && !gNBDUFunction.getCellDUList().isEmpty()) {
+ gNBDUFunction.getCellDUList().forEach(cellDU->{
+ cellDU.setgNBDUFunction(gNBDUFunction);
+ });
+ }
+ GNBDUFunction gNBDUEntity = gNBDURepository.save(gNBDUFunction);
+ modelMapper.map(gNBDUEntity,gNBDUModel);
+ return gNBDUModel;
+ }
+
+ /**
+ * To fetch the gNBDU details
+ *
+ * @param gNBDUId
+ * @return GNBDUModel
+ */
+ public GNBDUModel fetchGNBDUData(Integer gNBDUId) {
+ logger.debug("Request received to fetch GNBDUFunction: id::"+ gNBDUId);
+ modelMapper.getConfiguration().setMatchingStrategy(MatchingStrategies.STRICT);
+ GNBDUFunction gNBDUEntity = gNBDURepository.findById(gNBDUId).isPresent()?gNBDURepository.findById(gNBDUId).get():null;
+ GNBDUModel gNBDUModel = new GNBDUModel();
+ modelMapper.map(gNBDUEntity,gNBDUModel);
+ return gNBDUModel;
+ }
+
+ /**
+ * Stored NearRTRIC
+ *
+ * @param nearRTRIC
+ * @return
+ */
+ public NearRTRICModel saveNearRTRIC(NearRTRICModel nearRTRIC) {
+ logger.debug("Request received to store NearRTRIC: id::"+ nearRTRIC.getNearRTRICId());
+ modelMapper.getConfiguration().setMatchingStrategy(MatchingStrategies.STRICT);
+ NearRTRIC nearRTRICEntity = new NearRTRIC();
+ modelMapper.map(nearRTRIC, nearRTRICEntity);
+ NearRTRIC nearRTRICEntityEResponse = nearRTRICRepository.save(nearRTRICEntity);
+ modelMapper.map(nearRTRICEntityEResponse,nearRTRIC);
+ return nearRTRIC;
+ }
+
+ /**
+ * To fetch the nearRTRIC details
+ *
+ * @param nearRTRICId
+ * @return NearRTRICModel
+ */
+ public NearRTRICModel fetchNearRTRICData(Integer nearRTRICId) {
+ logger.debug("Request received to fetch GNBDUFunction: id::"+ nearRTRICId);
+ modelMapper.getConfiguration().setMatchingStrategy(MatchingStrategies.STRICT);
+ NearRTRIC nearRTRICEntity = nearRTRICRepository.findById(nearRTRICId).isPresent()?nearRTRICRepository.findById(nearRTRICId).get():null;
+ NearRTRICModel nearRTRICModel = new NearRTRICModel();
+ modelMapper.map(nearRTRICEntity,nearRTRICModel);
+ return nearRTRICModel;
+ }
+
+ /**
+ * To retrieve the RRMPolicy of a network function
+ *
+ * @param resourceType
+ * @param resourceID
+ * @return
+ */
+ public RRMPolicyRatioModel fetchRRMPolicyOfNE(String resourceType, String resourceID) {
+ logger.debug("Request received to fetch RRMPolicy:"+ resourceType+"--"+resourceID);
+ modelMapper.getConfiguration().setMatchingStrategy(MatchingStrategies.STRICT);
+ RRMPolicyRatioModel rrmPolicyResponse = new RRMPolicyRatioModel();
+ RRMPolicyRatio rrmPolicyEntity = rRMPolicyRepository.findByResourceTypeAndId(resourceType, resourceID);
+ modelMapper.map(rrmPolicyEntity, rrmPolicyResponse);
+ return rrmPolicyResponse;
+ }
+
+ /**
+ * To update RRM policy of NF
+ *
+ * @param rrmPolicy
+ * @return
+ */
+ public RRMPolicyRatioModel updateRRMPolicy(RRMPolicyRatioModel rrmPolicy) {
+ logger.debug("Request received to update RRMPolicy:"+ rrmPolicy.getRrmPolicyID());
+ RRMPolicyRatio rrmPolicyEntity = new RRMPolicyRatio();
+ modelMapper.map(rrmPolicy, rrmPolicyEntity);
+ rrmPolicyEntity = rRMPolicyRepository.save(rrmPolicyEntity);
+ modelMapper.map(rrmPolicyEntity, rrmPolicy);
+ return rrmPolicy;
+ }
+
+ /**
+ * @param trackingArea
+ * @return List<NearRTRICModel>
+ */
+ public List<NearRTRICModel> findRICsInTA(String trackingArea) {
+ logger.debug("Request received to find the NearRTRICs in Tracking Area::"+ trackingArea);
+ modelMapper.getConfiguration().setMatchingStrategy(MatchingStrategies.STRICT);
+ List<NearRTRIC> nearRTRICsList = nearRTRICRepository.getListOfRICsInTrackingArea(trackingArea);
+ List<NearRTRICModel> ricModelList = nearRTRICsList.stream()
+ .map(ricEntity -> modelMapper.map(ricEntity, NearRTRICModel.class)).collect(Collectors.toList());
+ return ricModelList;
+ }
+
+ /**
+ * @param cellsList
+ * @return
+ */
+ public List<NearRTRICModel> findNearRTRICofCells(List<Integer> cellsList){
+ List<NearRTRIC> ricEntitiesList = new ArrayList<>();
+ modelMapper.getConfiguration().setMatchingStrategy(MatchingStrategies.STRICT);
+ List<String> cucpNames = gNBCUCPRepository.findCUCPByCellIds(cellsList);
+ cucpNames.forEach(cucpName -> {
+ List<NearRTRIC> ricEntities = new ArrayList<>();
+ ricEntities = nearRTRICRepository.findNearRTRICByCUCPName(cucpName);
+ ricEntitiesList.addAll(ricEntities);
+ });
+ List<NearRTRICModel> ricModelList = ricEntitiesList.stream()
+ .map(ricEntity -> modelMapper.map(ricEntity, NearRTRICModel.class)).collect(Collectors.toList());
+ return ricModelList;
+ }
+
+
+ /**
+ * To update the RAN Slice details
+ *
+ * @param rANSliceInfoModel
+ * @return RANSliceInfoModel
+ */
+ public RANSliceInfoModel updateRANInventory(RANSliceInfoModel rANSliceInfoModel) {
+ logger.debug("Request received to update inventory for id::"+ rANSliceInfoModel.getRanNFNSSIId());
+ RANSliceInfo rANSliceInfoEntity = new RANSliceInfo();
+ modelMapper.map(rANSliceInfoModel, rANSliceInfoEntity);
+ if(ranInventoryRepo.findById(rANSliceInfoModel.getRanNFNSSIId()).isPresent()) {
+ RANSliceInfo ranInfo = ranInventoryRepo.findById(rANSliceInfoModel.getRanNFNSSIId()).get();
+ List<String> ranNSSIList = ranInfo.getRanNSSIList();
+ ranNSSIList.addAll(rANSliceInfoEntity.getRanNSSIList());
+ rANSliceInfoEntity.setRanNSSIList(ranNSSIList);
+
+ List<String> nSSAIList = ranInfo.getnSSAIList();
+ nSSAIList.addAll(rANSliceInfoEntity.getnSSAIList());
+ rANSliceInfoEntity.setnSSAIList(nSSAIList);
+
+ List<SliceProfile> sliceProfilesList = ranInfo.getSliceProfilesList();
+ sliceProfilesList.addAll(rANSliceInfoEntity.getSliceProfilesList());
+ rANSliceInfoEntity.setSliceProfilesList(sliceProfilesList);
+ }
+ else {
+ if(!rANSliceInfoEntity.getSliceProfilesList().isEmpty()) {
+ for(SliceProfile profile:rANSliceInfoEntity.getSliceProfilesList()) {
+ profile.setrANSliceInventory(rANSliceInfoEntity);
+ }
+ }
+ }
+ rANSliceInfoEntity = ranInventoryRepo.save(rANSliceInfoEntity);
+ modelMapper.map(rANSliceInfoEntity, rANSliceInfoModel);
+ return rANSliceInfoModel;
+ }
+
+ /**
+ * @param ranNFNSSIId
+ * @return RANSliceInfoModel
+ */
+ public RANSliceInfoModel fetchRANSlice(String ranNFNSSIId) {
+ logger.debug("Request received to read inventory details for id::"+ ranNFNSSIId);
+ modelMapper.getConfiguration().setMatchingStrategy(MatchingStrategies.STRICT);
+ RANSliceInfo ranSliceInfo = ranInventoryRepo.findById(ranNFNSSIId).isPresent()?ranInventoryRepo.findById(ranNFNSSIId).get():null;
+ RANSliceInfoModel rANSliceInfoModel = new RANSliceInfoModel();
+ modelMapper.map(ranSliceInfo, rANSliceInfoModel);
+ return rANSliceInfoModel;
+ }
+
+ /**
+ * @param trackingArea
+ * @return List<String>
+ */
+ public List<String> fetchCellsofTA(String trackingArea) {
+ logger.debug("Request recieved to fetch the cell details of TA:"+ trackingArea);
+ modelMapper.getConfiguration().setMatchingStrategy(MatchingStrategies.STRICT);
+ String cells = tACellRepository.findById(trackingArea).isPresent()?tACellRepository.findById(trackingArea).get().getCellsList():null;
+ return cells!=null? Arrays.asList(cells.split(",")):null;
+
+ }
+
+ public Iterable<TACells> fetchAllTA()
+ {
+ logger.info("Request recieved to fetch all TA:");
+ return tACellRepository.findAll();
+ }
+
+ /**
+ * @param nearRTRICId
+ * @return List<NRCellCUModel>
+ */
+ public List<NRCellCUModel> fetchCUCellsofRIC(Integer nearRTRICId) {
+ logger.debug("Request recieved to fetch the cell (CU) details of nearRTRICId:"+ nearRTRICId);
+ modelMapper.getConfiguration().setMatchingStrategy(MatchingStrategies.STRICT);
+ List<NRCellCU> cellCUEntities = new ArrayList<NRCellCU>();
+ NearRTRIC nearRTRIC = nearRTRICRepository.findById(nearRTRICId).isPresent()?nearRTRICRepository.findById(nearRTRICId).get():null;
+ if(nearRTRIC!=null) {
+ List<GNBCUCPFunction> cucpFunctions = nearRTRIC.getgNBCUCPList();
+ cucpFunctions.forEach(cucpFunction->{
+ List<NRCellCU> cellCUList = new ArrayList<NRCellCU>();
+ cellCUList.addAll(cucpFunction.getCellCUList());
+ cellCUEntities.addAll(cellCUList);
+ });
+ List<NRCellCUModel> cuCellModels = cellCUEntities.stream()
+ .map(cellCUEntity -> modelMapper.map(cellCUEntity, NRCellCUModel.class)).collect(Collectors.toList());
+ return cuCellModels;
+ }
+ return new ArrayList<NRCellCUModel>();
+ }
+
+ /**
+ * @param trackingArea
+ * @return List<NRCellDUModel>
+ */
+ public Map<Integer, List<NRCellDUModel>> fetchDUCellsofRIC(String sNSSAI) {
+ logger.debug("Request recieved to fetch the cell (DU) details of sNSSAI:"+ sNSSAI);
+ modelMapper.getConfiguration().setMatchingStrategy(MatchingStrategies.STRICT);
+ Set<NRCellDU> cellDUEntities = new HashSet<NRCellDU>();Set<NRCellDU> cellDUs = new HashSet<NRCellDU>();
+ List<NearRTRICModel> ricModels = findRICsByNSSAI(sNSSAI);
+ Map<Integer, List<NRCellDUModel>> cellsMap = new HashMap<Integer, List<NRCellDUModel>>();
+ List<NearRTRIC> ricEntities = ricModels.stream()
+ .map(ric -> modelMapper.map(ric, NearRTRIC.class)).collect(Collectors.toList());
+ ricEntities.forEach(ricEntity -> {
+ List<GNBDUFunction> duFunctions = ricEntity.getgNBDUList();
+ duFunctions.forEach(duFunction -> {
+ List<NRCellDU> cellDUList =duFunction.getCellDUList();
+ cellDUList.forEach(cellDU->{
+ List<PLMNInfo> plmnList = cellDU.getpLMNInfoList();
+ plmnList.forEach(plmn->{
+ if(sNSSAI.equalsIgnoreCase(plmn.getsNSSAI().getsNSSAI())){
+ cellDUs.add(cellDU);
+ }
+ });
+ });
+ //cellDUList.addAll(duFunction.getCellDUList());
+ cellDUEntities.addAll(cellDUs);
+ });
+ List<NRCellDUModel> duCellModels = cellDUEntities.stream()
+ .map(cellDUEntity -> modelMapper.map(cellDUEntity, NRCellDUModel.class)).collect(Collectors.toList());
+ cellsMap.put(ricEntity.getNearRTRICId(), duCellModels);
+ });
+
+ return cellsMap;
+ }
+
+ /**
+ * @param ranNFNSSIID
+ * @return List<NearRTRICModel>
+ */
+ public List<NearRTRICModel> findNearRTRICByNSSI(String ranNFNSSIID) {
+ logger.debug("Request recieved to fetch nearRTRIC of NSSI:"+ ranNFNSSIID);
+ modelMapper.getConfiguration().setMatchingStrategy(MatchingStrategies.STRICT);
+ List<NearRTRIC> nearRTRICEntities = nearRTRICRepository.findNearRTRICByNSSI(ranNFNSSIID);
+ List<NearRTRICModel> nearRTRICModels = nearRTRICEntities.stream()
+ .map(nearRTRICEntity -> modelMapper.map(nearRTRICEntity, NearRTRICModel.class)).collect(Collectors.toList());
+ return nearRTRICModels;
+ }
+
+ /**
+ * @param sNSSAI
+ * @return List<NearRTRICModel>
+ */
+ public List<NearRTRICModel> findRICsByNSSAI(String sNSSAI){
+ logger.debug("Request recieved to fetch nearRTRIC of NSSAI:"+ sNSSAI);
+ modelMapper.getConfiguration().setMatchingStrategy(MatchingStrategies.STRICT);
+ Set<NearRTRIC> nearRTRICEntities = nearRTRICRepository.findNearRTRICByNSSAI(sNSSAI);
+ List<NearRTRICModel> nearRTRICModels = nearRTRICEntities.stream()
+ .map(nearRTRICEntity -> modelMapper.map(nearRTRICEntity, NearRTRICModel.class))
+ .collect(Collectors.toList());
+ return nearRTRICModels;
+ }
+
+ /**
+ * @param sNSSAI
+ * @return config Details
+ */
+ public Map<String,Integer> findSliceProfileconfig(String sNSSAI){
+ logger.debug("Request recieved to fetch Config requested for a slice:"+ sNSSAI);
+ modelMapper.getConfiguration().setMatchingStrategy(MatchingStrategies.STRICT);
+ Map<String,Integer> configDetails = new HashMap<String, Integer>();
+ String ranNFNSSIId = ranInventoryRepo.findRANNFNSSIofNSSAI(sNSSAI);
+ RANSliceInfo rANSliceInfo = ranInventoryRepo.findById(ranNFNSSIId).isPresent()? ranInventoryRepo.findById(ranNFNSSIId).get():null;
+ if(rANSliceInfo.getSliceProfilesList().size()>0) {
+ rANSliceInfo.getSliceProfilesList().forEach(sliceProfile->{
+ if(sNSSAI.equalsIgnoreCase(sliceProfile.getsNSSAI())){
+ //configDetails.put("maxNoOfConns",sliceProfile.getMaxNumberofConns());
+ configDetails.put("dLThptPerSlice",sliceProfile.getdLThptPerSlice());
+ configDetails.put("uLThptPerSlice",sliceProfile.getuLThptPerSlice());
+ }
+ });
+ }
+ return configDetails;
+ }
+
+ /**
+ * @param sNSSAI
+ * @return RIC Config for a slice
+ */
+ public Map<Integer, NSSAIConfig> findSliceConfig(String sNSSAI){
+ logger.debug("Request recieved to fetch Slice config Details at RICs:"+ sNSSAI);
+ modelMapper.getConfiguration().setMatchingStrategy(MatchingStrategies.STRICT);
+ List<NearRTRICModel> nearRTRICModels = findRICsByNSSAI(sNSSAI);
+ Map<Integer, NSSAIConfig> configMap = new HashMap<Integer, NSSAIConfig>();
+ nearRTRICModels.forEach(nearRTRIC->{
+ nearRTRIC.getpLMNInfoList().forEach(plmn->{
+ if(sNSSAI.equalsIgnoreCase(plmn.getsNSSAI().getsNSSAI())) {
+ configMap.put(nearRTRIC.getNearRTRICId(),plmn.getsNSSAI().getConfigData());
+ }
+ });
+ });
+ return configMap;
+ }
+
+ /**
+ * @param sNSSAI
+ * @return List<GNBDUModel>
+ */
+ public List<GNBDUModel> findDUsofSNssai(String sNSSAI){
+ logger.debug("Request recieved to fetch all DUs of NSSAI");
+ modelMapper.getConfiguration().setMatchingStrategy(MatchingStrategies.STRICT);
+ List<GNBDUFunction> duList = (List<GNBDUFunction>) gNBDURepository.findDUsByNSSAI(sNSSAI);
+ List<GNBDUModel> duModels = duList.stream()
+ .map(duEntity -> modelMapper.map(duEntity, GNBDUModel.class)).collect(Collectors.toList());
+ return duModels;
+ }
+
+ /**
+ * @param sNSSAI
+ * @return List<GNBCUCPModel>
+ */
+ public List<GNBCUCPModel> findCUsofSNssai(String sNSSAI){
+ logger.debug("Request recieved to fetch all CUs of NSSAI");
+ modelMapper.getConfiguration().setMatchingStrategy(MatchingStrategies.STRICT);
+ List<GNBCUCPFunction> cuList = (List<GNBCUCPFunction>) gNBCUCPRepository.findCUCPsByNSSAI(sNSSAI);
+ List<GNBCUCPModel> cuModels = cuList.stream()
+ .map(cuEntity -> modelMapper.map(cuEntity, GNBCUCPModel.class)).collect(Collectors.toList());
+ return cuModels;
+ }
+
+ /**
+ * @param sNSSAI
+ * @return Map<String, String>
+ */
+ public Map<String, String> getSubscriberDetails(String sNSSAI){
+ logger.debug("Request recieved to fetch SubscriberDetails");
+ modelMapper.getConfiguration().setMatchingStrategy(MatchingStrategies.STRICT);
+ Map<String, String> details = new HashMap<String, String>();
+ String ranNFNSSIId = ranInventoryRepo.findRANNFNSSIofNSSAI(sNSSAI);
+ details.put("ranNFNSSIId", ranNFNSSIId);
+ details.put("sNSSAI", sNSSAI);
+ RANSliceInfo rANSliceInfo = ranInventoryRepo.findById(ranNFNSSIId).isPresent()? ranInventoryRepo.findById(ranNFNSSIId).get():null;
+ if(rANSliceInfo.getSliceProfilesList().size()>0) {
+ rANSliceInfo.getSliceProfilesList().forEach(sliceProfile->{
+ if(sNSSAI.equalsIgnoreCase(sliceProfile.getsNSSAI())){
+ details.put("sliceProfileId",sliceProfile.getSliceProfileId());
+ }
+ });
+ }
+ List<NearRTRICModel> nearRTRICModels = findRICsByNSSAI(sNSSAI);
+ nearRTRICModels.forEach(nearRTRIC->{
+ nearRTRIC.getpLMNInfoList().forEach(plmn->{
+ if(sNSSAI.equalsIgnoreCase(plmn.getsNSSAI().getsNSSAI())) {
+ details.put("subscriptionServiceType",plmn.getsNSSAI().getSubscriptionServiceType());
+ details.put("globalSubscriberId",plmn.getsNSSAI().getGlobalSubscriberId());
+ }
+ });
+ });
+
+ return details;
+ }
+
+ // Data required for PM data Simulation
+ /**
+ * @return List<GNBCUCPModel>
+ */
+ public List<GNBCUCPModel> findAllCUCPFunctions(){
+ logger.debug("Request recieved to fetch all CUCPs");
+ modelMapper.getConfiguration().setMatchingStrategy(MatchingStrategies.STRICT);
+ List<GNBCUCPFunction> cucpsList = (List<GNBCUCPFunction>) gNBCUCPRepository.findAll();
+ List<GNBCUCPModel> cucpModels = cucpsList.stream()
+ .map(cucpEntity -> modelMapper.map(cucpEntity, GNBCUCPModel.class)).collect(Collectors.toList());
+ return cucpModels;
+ }
+
+ /**
+ * @return List<GNBDUModel>
+ */
+ public List<GNBDUModel> findAllDUFunctions(){
+ logger.debug("Request recieved to fetch all DUs");
+ modelMapper.getConfiguration().setMatchingStrategy(MatchingStrategies.STRICT);
+ List<GNBDUFunction> duList = (List<GNBDUFunction>) gNBDURepository.findAll();
+ List<GNBDUModel> duModels = duList.stream()
+ .map(duEntity -> modelMapper.map(duEntity, GNBDUModel.class)).collect(Collectors.toList());
+ return duModels;
+ }
+
+ public List<NearRTRICModel> findAllNearRTRIC()
+ {
+ logger.debug("Request received to fetch all NearRTRICModel");
+ modelMapper.getConfiguration().setMatchingStrategy(MatchingStrategies.STRICT);
+ List<NearRTRIC> rtricList = (List<NearRTRIC>) nearRTRICRepository.findAll();
+ List<NearRTRICModel> rtricmodels = rtricList.stream()
+ .map(rtricEntity -> modelMapper.map(rtricEntity, NearRTRICModel.class)).collect(Collectors.toList());
+ return rtricmodels;
+ }
+
+} \ No newline at end of file
diff --git a/ransim/ransimctrlr/RANSIM-CTRLR/src/main/java/org/onap/ransim/rest/api/services/RansimControllerServices.java b/ransim/ransimctrlr/RANSIM-CTRLR/src/main/java/org/onap/ransim/rest/api/services/RansimControllerServices.java
new file mode 100644
index 0000000..a06f3c7
--- /dev/null
+++ b/ransim/ransimctrlr/RANSIM-CTRLR/src/main/java/org/onap/ransim/rest/api/services/RansimControllerServices.java
@@ -0,0 +1,1527 @@
+/*-
+ * ============LICENSE_START=======================================================
+ * Ran Simulator Controller
+ * ================================================================================
+ * Copyright (C) 2020 Wipro Limited.
+ * ================================================================================
+ * Licensed 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
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License 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.onap.ransim.rest.api.services;
+
+import java.io.BufferedReader;
+import java.io.File;
+import java.io.FileInputStream;
+import java.io.FileReader;
+import java.io.IOException;
+import java.io.InputStream;
+import java.util.ArrayList;
+import java.util.Collections;
+import java.util.HashSet;
+import java.util.Iterator;
+import java.util.List;
+import java.util.Map;
+import java.util.Objects;
+import java.util.Properties;
+import java.util.Set;
+import java.util.UUID;
+import java.util.concurrent.ConcurrentHashMap;
+
+import javax.annotation.PostConstruct;
+import javax.websocket.Session;
+
+import org.apache.log4j.Logger;
+import org.onap.ransim.rest.api.handler.RansimPciHandler;
+import org.onap.ransim.rest.api.models.CellData;
+import org.onap.ransim.rest.api.models.CellDetails;
+import org.onap.ransim.rest.api.models.CellNeighbor;
+import org.onap.ransim.rest.api.models.NbrDump;
+import org.onap.ransim.rest.api.models.NeighborDetails;
+import org.onap.ransim.rest.api.models.NeihborId;
+import org.onap.ransim.rest.api.models.NetconfServers;
+import org.onap.ransim.rest.api.models.PLMNInfo;
+import org.onap.ransim.rest.api.models.TopologyDump;
+import org.onap.ransim.rest.api.models.RRMPolicyRatio;
+import org.onap.ransim.rest.api.models.RRMPolicyMember;
+import org.onap.ransim.rest.api.models.SliceProfile;
+import org.onap.ransim.rest.api.repository.GNBCUUPRepository;
+import org.onap.ransim.rest.api.repository.NRCellCURepository;
+import org.onap.ransim.rest.api.repository.NRCellDURepository;
+//import org.onap.ransim.rest.api.repository.PLMNInfoRepo;
+import org.onap.ransim.rest.api.repository.RRMPolicyRepository;
+import org.onap.ransim.rest.api.repository.SliceProfileRepository;
+import org.onap.ransim.rest.client.RestClient;
+import org.onap.ransim.utilities.RansimUtilities;
+import org.onap.ransim.websocket.model.ModifyNeighbor;
+import org.onap.ransim.websocket.model.ModifyPci;
+import org.onap.ransim.websocket.model.Neighbor;
+import org.onap.ransim.websocket.model.SetConfigTopology;
+import org.onap.ransim.websocket.model.Topology;
+import org.onap.ransim.websocket.model.UpdateCell;
+import org.onap.ransim.websocket.model.ConfigPLMNInfo;
+import org.onap.ransim.websocket.model.SNSSAI;
+import org.onap.ransim.websocket.model.ConfigData;
+import org.onap.ransim.websocket.server.RansimWebSocketServer;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+
+import org.onap.ransim.rest.web.mapper.NearRTRICModel;
+import org.onap.ransim.rest.web.mapper.GNBCUCPModel;
+import org.onap.ransim.rest.web.mapper.GNBCUUPModel;
+import org.onap.ransim.rest.web.mapper.GNBDUModel;
+import org.onap.ransim.rest.web.mapper.NRCellDUModel;
+import org.onap.ransim.rest.web.mapper.NRCellCUModel;
+import org.onap.ransim.rest.web.mapper.PLMNInfoModel;
+import org.onap.ransim.rest.web.mapper.RRMPolicyRatioModel;
+import org.onap.ransim.rest.web.mapper.NSSAIData;
+import org.onap.ransim.rest.api.models.NSSAIConfig;
+import org.json.simple.JSONArray;
+import org.json.simple.JSONObject;
+
+import org.springframework.core.ParameterizedTypeReference;
+import org.springframework.http.HttpEntity;
+import org.springframework.http.HttpHeaders;
+import org.springframework.http.HttpMethod;
+import org.springframework.http.MediaType;
+import org.springframework.http.ResponseEntity;
+import org.springframework.web.client.RestTemplate;
+import com.google.gson.Gson;
+import org.onap.ransim.websocket.model.*;
+import org.onap.ransim.netconf.NetconfClient;
+
+
+@Service
+public class RansimControllerServices {
+
+ static Logger log = Logger.getLogger(RansimControllerServices.class.getName());
+
+ Properties netconfConstants = new Properties();
+ public int gridSize = 10;
+ boolean collision = false;
+ String serverIdPrefix = "";
+ public static String useCaseType = "";
+ static int numberOfCellsPerNcServer = 15;
+ int numberOfMachines = 1;
+ int numberOfProcessPerMc = 5;
+ boolean strictValidateRansimAgentsAvailability = false;
+ static public Map<String, Session> webSocketSessions = new ConcurrentHashMap<String, Session>();
+ public static Map<String, String> serverIdIpPortMapping = new ConcurrentHashMap<String, String>();
+
+ static Map<String, String> globalNcServerUuidMap = new ConcurrentHashMap<String, String>();
+ static List<String> unassignedServerIds = Collections.synchronizedList(new ArrayList<String>());
+ static Map<String, List<String>> serverIdIpNodeMapping = new ConcurrentHashMap<String, List<String>>();
+ static Map<String, List<String>> ricIdFunctionMapping = new ConcurrentHashMap<String, List<String>>();
+ static List<String> unassignedgNBIds = Collections.synchronizedList(new ArrayList<String>());
+ static List<String> unassignedrtRicIds = Collections.synchronizedList(new ArrayList<String>());
+ static List<NearRTRICModel> rtricModelList = Collections.synchronizedList(new ArrayList<>());
+ int nextServerIdNumber = 1001;
+ String sdnrServerIp = "";
+ int sdnrServerPort = 0;
+ static String sdnrServerUserid = "";
+ static String sdnrServerPassword = "";
+ private static final String fileBasePath = "/tmp/ransim-install/config/";
+ public static String dumpFileName = "";
+ public static long maxPciValueAllowed = 503;
+
+ @Autowired
+ RansimPciHandler rsPciHdlr;
+
+ @Autowired
+ RansimRepositoryService ransimRepo;
+
+ @Autowired
+ RANSliceConfigService ranSliceConfigService;
+
+ @Autowired
+ RRMPolicyRepository rrmPolicyRepository;
+
+ @Autowired
+ NRCellDURepository nRCellDURepository;
+
+ @Autowired
+ NRCellCURepository nRCellCURepository;
+
+ @Autowired
+ GNBCUUPRepository gNBCUUPRepository;
+/*
+ @Autowired
+ PLMNInfoRepo pLMNInfoRepo;
+
+ */ @Autowired
+ SliceProfileRepository sliceProfileRepository;
+
+ @PostConstruct
+ private void startWSTheread() {
+ new KeepWebsockAliveThread(this).start();
+ }
+
+ private String checkIpPortAlreadyExists(String ipPort, Map<String, String> serverIdIpPortMapping) {
+ String serverId = null;
+ for (String key : serverIdIpPortMapping.keySet()) {
+ String value = serverIdIpPortMapping.get(key);
+ if (value.equals(ipPort)) {
+ serverId = key;
+ break;
+ }
+ }
+ return serverId;
+ }
+
+ /**
+ * Add web socket sessions.
+ * * @param ipPort ip address for the session
+ * @param wsSession session details
+ */
+ public synchronized String addWebSocketSessions(String ipPort, Session wsSession) {
+ loadProperties();
+ if (webSocketSessions.containsKey(ipPort)) {
+ log.info("addWebSocketSessions: Client session " + wsSession.getId() + " for " + ipPort
+ + " already exist. Removing old session.");
+ webSocketSessions.remove(ipPort);
+ }
+
+ log.info("addWebSocketSessions: Adding Client session " + wsSession.getId() + " for " + ipPort);
+ webSocketSessions.put(ipPort, wsSession);
+ String serverId = null;
+ if (!serverIdIpPortMapping.containsValue(ipPort)) {
+ if (unassignedServerIds.size() > 0) {
+ log.info("addWebSocketSessions: No serverIds pending to assign for " + ipPort);
+ serverId = checkIpPortAlreadyExists(ipPort, serverIdIpPortMapping);
+ if (serverId == null) {
+ serverId = unassignedServerIds.remove(0);
+ } else {
+ if (unassignedServerIds.contains(serverId)) {
+ unassignedServerIds.remove(serverId);
+ }
+ }
+ log.info("RanSim Controller - Available unassigned ServerIds :" + unassignedServerIds);
+ log.info("RanSim Controller - addWebSocketSessions: Adding serverId " + serverId + " for " + ipPort);
+ serverIdIpPortMapping.put(serverId, ipPort);
+ log.debug("RanSim Controller - serverIdIpPortMapping >>>> :" + serverIdIpPortMapping);
+ mapServerIdToNodes(serverId);
+ try {
+
+ NetconfServers server = ransimRepo.getNetconfServer(serverId);
+ if (server != null) {
+ server.setIp(ipPort.split(":")[0]);
+ server.setNetconfPort(ipPort.split(":")[1]);
+ ransimRepo.mergeNetconfServers(server);
+ }
+
+ } catch (Exception e1) {
+ log.error("Exception mapServerIdToNodes :", e1);
+ }
+ } else {
+ log.error("addWebSocketSessions: No serverIds pending to assign for " + ipPort);
+ }
+ } else {
+ for (String key : serverIdIpPortMapping.keySet()) {
+ if (serverIdIpPortMapping.get(key).equals(ipPort)) {
+ log.info("addWebSocketSessions: ServerId " + key + " for " + ipPort + " is exist already");
+ serverId = key;
+ break;
+ }
+ }
+ }
+ return serverId;
+ }
+
+ public synchronized String addRanWebSocketSessions(String ipPort, Session wsSession) {
+ if (webSocketSessions.containsKey(ipPort)) {
+ log.info("addWebSocketSessions: Client session " + wsSession.getId() + " for " + ipPort
+ + " already exist. Removing old session.");
+ webSocketSessions.remove(ipPort);
+ }
+
+ log.info("addWebSocketSessions: Adding Client session " + wsSession.getId() + " for " + ipPort);
+ webSocketSessions.put(ipPort, wsSession);
+ String serverId = null;
+ if (!serverIdIpPortMapping.containsValue(ipPort)) {
+ if(!ricIdFunctionMapping.isEmpty()){
+ if (unassignedgNBIds.size() > 0) {
+ log.info("addWebSocketSessions: No serverIds pending to assign for " + ipPort);
+ serverId = checkIpPortAlreadyExists(ipPort, serverIdIpPortMapping);
+ if (serverId == null) {
+ serverId = unassignedgNBIds.remove(0);
+ } else {
+ if (unassignedgNBIds.contains(serverId)) {
+ unassignedgNBIds.remove(serverId);
+ }
+ }
+ log.info("RanSim Controller - Available unassigned ServerIds :" + unassignedgNBIds);
+ log.info("RanSim Controller - addWebSocketSessions: Adding serverId " + serverId + " for " + ipPort);
+ serverIdIpPortMapping.put(serverId, ipPort);
+ log.debug("RanSim Controller - serverIdIpPortMapping >>>> :" + serverIdIpPortMapping);
+ try {
+ NetconfServers server = ransimRepo.getNetconfServer(serverId);
+ if (server != null) {
+ server.setIp(ipPort.split(":")[0]);
+ server.setNetconfPort(ipPort.split(":")[1]);
+ ransimRepo.mergeNetconfServers(server);
+ }
+
+ } catch (Exception e1) {
+ log.error("Exception mapServerIdToNodes :", e1);
+ }
+ } else
+ {
+ if(unassignedrtRicIds.size() > 0)
+ {
+ unassignedgNBIds.addAll(ricIdFunctionMapping.get(unassignedrtRicIds.get(0)));
+ log.info("addWebSocketSessions: No serverIds pending to assign for " + ipPort);
+ serverId = checkIpPortAlreadyExists(ipPort, serverIdIpPortMapping);
+ if (serverId == null) {
+ serverId = unassignedrtRicIds.remove(0);
+ } else {
+ if (unassignedrtRicIds.contains(serverId)) {
+ unassignedrtRicIds.remove(serverId);
+ }
+ }
+ log.info("RanSim Controller - Available unassigned ServerIds :" + unassignedrtRicIds);
+ log.info("RanSim Controller - addWebSocketSessions: Adding serverId " + serverId + " for " + ipPort);
+ serverIdIpPortMapping.put(serverId, ipPort);
+ log.debug("RanSim Controller - serverIdIpPortMapping >>>> :" + serverIdIpPortMapping);
+ try {
+ NetconfServers server = ransimRepo.getNetconfServer(serverId);
+ if (server != null) {
+ server.setIp(ipPort.split(":")[0]);
+ server.setNetconfPort(ipPort.split(":")[1]);
+ ransimRepo.mergeNetconfServers(server);
+ }
+
+ } catch (Exception e1) {
+ log.error("Exception mapServerIdToNodes :", e1);
+ }
+ }
+ else
+ {
+ log.info("addWebSocketSessions: No ric serverIds pending to assign for " + ipPort);
+ }
+ }
+ }
+ else
+ {
+ log.error("addWebSocketSessions: No serverIds pending to assign for " + ipPort);
+ }
+ } else {
+ for (String key : serverIdIpPortMapping.keySet()) {
+ if (serverIdIpPortMapping.get(key).equals(ipPort)) {
+ log.info("addWebSocketSessions: ServerId " + key + " for " + ipPort + " is exist already");
+ serverId = key;
+ break;
+ }
+ }
+ }
+ return serverId;
+ }
+
+ /**
+ * Map server ID to the cells
+ *
+ * @param serverId Server ID
+ */
+ private void mapServerIdToNodes(String serverId) {
+ dumpSessionDetails();
+ // already mapped.RansimController Do nothing.
+ if (!serverIdIpNodeMapping.containsKey(serverId)) {
+ List<String> nodeIds = new ArrayList<String>();
+ try {
+ List<CellDetails> nodes = ransimRepo.getCellsWithNoServerIds();
+ for (CellDetails cell : nodes) {
+ cell.setServerId(serverId);
+ nodeIds.add(cell.getNodeId());
+ ransimRepo.mergeCellDetails(cell);
+ }
+ serverIdIpNodeMapping.put(serverId, nodeIds);
+ } catch (Exception e1) {
+ log.info("Exception mapServerIdToNodes :", e1);
+
+ }
+ }
+ }
+
+ /**
+ * It removes the web socket sessions.
+ *
+ * @param ipPort ip address of the netconf server
+ */
+ public synchronized void removeWebSocketSessions(String ipPort) {
+ log.info("remove websocket session request received for: " + ipPort);
+ try {
+ if (webSocketSessions.containsKey(ipPort)) {
+ String removedServerId = null;
+ for (String serverId : serverIdIpPortMapping.keySet()) {
+ String ipPortVal = serverIdIpPortMapping.get(serverId);
+ if (ipPortVal.equals(ipPort)) {
+ if (!unassignedServerIds.contains(serverId)) {
+ unassignedServerIds.add(serverId);
+ log.info(serverId + "added in unassignedServerIds");
+ }
+ NetconfServers ns = ransimRepo.getNetconfServer(serverId);
+ ns.setIp(null);
+ ns.setNetconfPort(null);
+ log.info(serverId + " ip and Port set as null ");
+ ransimRepo.mergeNetconfServers(ns);
+ removedServerId = serverId;
+ break;
+ }
+ }
+ serverIdIpPortMapping.remove(removedServerId);
+
+ Session wsSession = webSocketSessions.remove(ipPort);
+ log.info("removeWebSocketSessions: Client session " + wsSession.getId() + " for " + ipPort
+ + " is removed. Server Id : " + removedServerId);
+ } else {
+ log.info("addWebSocketSessions: Client session for " + ipPort + " not exist");
+ }
+ } catch (Exception e) {
+ log.error("Exception in removeWebSocketSessions. e: " + e);
+ }
+
+ }
+
+ /**
+ * Checks the number of ransim agents running.
+ *
+ * @param cellsToBeSimulated number of cells to be simulated
+ * @return returns true if there are enough ransim agents running
+ */
+ public boolean hasEnoughRansimAgentsRunning(int cellsToBeSimulated) {
+
+ log.info("hasEnoughRansimAgentsRunning: numberOfCellsPerNCServer " + numberOfCellsPerNcServer
+ + " , webSocketSessions.size:" + webSocketSessions.size() + " , cellsToBeSimulated:"
+ + cellsToBeSimulated);
+ log.info(strictValidateRansimAgentsAvailability);
+
+ if (strictValidateRansimAgentsAvailability) {
+ if (numberOfCellsPerNcServer * webSocketSessions.size() < cellsToBeSimulated) {
+ return false;
+ }
+ }
+ return true;
+ }
+
+ /**
+ * It updates the constant values in the properties file.
+ */
+ public void loadProperties() {
+ InputStream input = null;
+ try {
+
+ input = new FileInputStream("/tmp/ransim-install/config/ransim.properties");
+ netconfConstants.load(input);
+ serverIdPrefix = netconfConstants.getProperty("serverIdPrefix");
+ numberOfCellsPerNcServer = Integer.parseInt(netconfConstants.getProperty("numberOfCellsPerNCServer"));
+ numberOfMachines = Integer.parseInt(netconfConstants.getProperty("numberOfMachines"));
+ numberOfProcessPerMc = Integer.parseInt(netconfConstants.getProperty("numberOfProcessPerMc"));
+ strictValidateRansimAgentsAvailability = Boolean
+ .parseBoolean(netconfConstants.getProperty("strictValidateRansimAgentsAvailability"));
+ maxPciValueAllowed = Long.parseLong(netconfConstants.getProperty("maxPciValueAllowed"));
+ sdnrServerIp = System.getenv("SDNR_IP");
+ sdnrServerPort = Integer.parseInt(System.getenv("SDNR_PORT"));
+ sdnrServerUserid = System.getenv("SDNR_USER");
+ sdnrServerPassword = System.getenv("SDNR_PASSWORD");
+ useCaseType = "sonUsecase";
+
+ } catch (Exception e) {
+ log.error("Properties file error", e);
+ } finally {
+ try {
+ if (input != null) {
+ input.close();
+ }
+ } catch (Exception ex) {
+ log.error("Properties file error", ex);
+ }
+ }
+ }
+
+ public void loadGNBFunctionProperties() {
+ try
+ {
+ sdnrServerIp = System.getenv("SDNR_IP");
+ sdnrServerPort = Integer.parseInt(System.getenv("SDNR_PORT"));
+ sdnrServerUserid = System.getenv("SDNR_USER");
+ sdnrServerPassword = System.getenv("SDNR_PASSWORD");
+ useCaseType = "ranSlicingUsecase";
+ rtricModelList = ranSliceConfigService.findAllNearRTRIC();
+ for(NearRTRICModel rtricModel:rtricModelList)
+ {
+ List<String> gNBList = new ArrayList<>();
+ for(GNBCUCPModel gNBCUCPModel : rtricModel.getgNBCUCPList())
+ {
+ gNBList.add(gNBCUCPModel.getgNBCUName());
+ setRanNetconfServers(gNBCUCPModel.getgNBCUName());
+ for(NRCellCUModel nRCellCUModel : gNBCUCPModel.getCellCUList())
+ {
+ if(nRCellCUModel.getpLMNInfoList().isEmpty())
+ {
+ org.json.simple.parser.JSONParser jsonParser = new org.json.simple.parser.JSONParser();
+ try (FileReader reader = new FileReader("/tmp/ransim-install/config/gNBCUConfig.json")) {
+ // Read JSON file
+ Object obj = jsonParser.parse(reader);
+ JSONArray List = (JSONArray) obj;
+ for (int i = 0; i < List.size(); i++) {
+ JSONObject gNB = (JSONObject) List.get(i);
+ String gNBCUName = (String) gNB.get("gNBCUName");
+ Long gNBId = (Long) gNB.get("gNBId");
+ Long gNBIdLength = (Long) gNB.get("gNBIdLength");
+ String pLMNId = (String) gNB.get("pLMNId");
+ String nFType = (String) gNB.get("nFType");
+ Long nearRTRICId = (Long) gNB.get("nearRTRICId");
+ String cellListVar = (String) gNB.get("cellCUList").toString();
+ Object cellListObj = jsonParser.parse(cellListVar);
+ JSONArray cellList = (JSONArray) cellListObj;
+ List<NRCellCUModel> nRCellCUModelList = new ArrayList<NRCellCUModel>();
+ for (int j = 0; j < cellList.size(); j++) {
+ JSONObject cell = (JSONObject) cellList.get(j);
+ Long cellLocalId = (Long) cell.get("cellLocalId");
+ String plmVar = (String) cell.get("pLMNInfoList").toString();
+ Object pmlVarObj = jsonParser.parse(plmVar);
+ JSONArray pmlList = (JSONArray) pmlVarObj;
+ List<PLMNInfoModel> plmnInfoModelList = new ArrayList<PLMNInfoModel>();
+ for (int k = 0; k < pmlList.size(); k++) {
+ JSONObject pml = (JSONObject) pmlList.get(k);
+ String pLMNid = (String) pml.get("pLMNId");
+ JSONObject sNSSAI = (JSONObject) pml.get("sNSSAI");
+ String sNssai = (String) sNSSAI.get("sNSSAI");
+ String status = (String) sNSSAI.get("status");
+ JSONObject configData = (JSONObject) sNSSAI.get("configData");
+ Long maxNumberOfConns = (Long) configData.get("maxNumberOfConns");
+ NSSAIConfig configDataObj = new NSSAIConfig();
+ configDataObj.setMaxNumberOfConns(maxNumberOfConns.intValue());
+ NSSAIData nssaiData = new NSSAIData();
+ nssaiData.setsNSSAI(sNssai);
+ nssaiData.setStatus(status);
+ nssaiData.setConfigData(configDataObj);
+ PLMNInfoModel plmnInfoModel = new PLMNInfoModel();
+ plmnInfoModel.setpLMNId(pLMNid);
+ plmnInfoModel.setsNSSAI(nssaiData);
+ plmnInfoModelList.add(plmnInfoModel);
+ }
+ NRCellCUModel nrCellCUModel = new NRCellCUModel();
+ nrCellCUModel.setCellLocalId(cellLocalId.intValue());
+ nrCellCUModel.setpLMNInfoList(plmnInfoModelList);
+ nRCellCUModelList.add(nrCellCUModel);
+ }
+ GNBCUCPModel gNBModel = new GNBCUCPModel();
+ gNBModel.setgNBCUName(gNBCUName);
+ gNBModel.setgNBId(gNBId.intValue());
+ gNBModel.setgNBIdLength(gNBIdLength.intValue());
+ gNBModel.setpLMNId(pLMNId);
+ gNBModel.setnFType(nFType);
+ gNBModel.setNearRTRICId(nearRTRICId.intValue());
+ gNBModel.setCellCUList(nRCellCUModelList);
+ ranSliceConfigService.saveGNBCUCP(gNBModel);
+ }
+ } catch (Exception e) {
+ log.error("Properties file error", e);
+ }
+ }
+ }
+ }
+ for(GNBCUUPModel gNBCUUPModel:rtricModel.getgNBCUUPList())
+ {
+ gNBList.add(gNBCUUPModel.getgNBCUUPId().toString());
+ setRanNetconfServers(gNBCUUPModel.getgNBCUUPId().toString());
+ }
+ for(GNBDUModel gNBDUModel:rtricModel.getgNBDUList())
+ {
+ gNBList.add(gNBDUModel.getgNBDUId().toString());
+ setRanNetconfServers(gNBDUModel.getgNBDUId().toString());
+ }
+ unassignedrtRicIds.add(rtricModel.getNearRTRICId().toString());
+ ricIdFunctionMapping.put(rtricModel.getNearRTRICId().toString(),gNBList);
+ setRanNetconfServers(rtricModel.getNearRTRICId().toString());
+ }
+ }
+ catch(Exception e){
+ log.error("Properties file error", e);
+ }
+ }
+
+ public void setRanNetconfServers(String serverId)
+ {
+ try {
+
+ NetconfServers server = ransimRepo.getNetconfServer(serverId);
+ if (server == null) {
+ server = new NetconfServers();
+ server.setServerId(serverId);
+ }
+ ransimRepo.mergeNetconfServers(server);
+
+ } catch (Exception eu) {
+ log.error("setNetconfServers Function Error", eu);
+
+ }
+ }
+
+
+ /**
+ * The function adds the cell(with nodeId passed as an argument) to its netconf
+ * server list if the netconf server already exists. Else it will create a new
+ * netconf server in the NetconfServers Table and the cell into its list.
+ *
+ * @param nodeId node Id of the cell
+ */
+ public void setNetconfServers(String nodeId) {
+
+ CellDetails currentCell = ransimRepo.getCellDetail(nodeId);
+
+ Set<CellDetails> newList = new HashSet<CellDetails>();
+ try {
+ if (currentCell != null) {
+ NetconfServers server = ransimRepo.getNetconfServer(currentCell.getServerId());
+
+ if (server == null) {
+
+ server = new NetconfServers();
+ server.setServerId(currentCell.getServerId());
+ } else {
+ newList.addAll(server.getCells());
+ }
+
+ newList.add(currentCell);
+ server.setCells(newList);
+ log.info("setNetconfServers: nodeId: " + nodeId + ", X:" + currentCell.getGridX() + ", Y:"
+ + currentCell.getGridY() + ", ip: " + server.getIp() + ", portNum: " + server.getNetconfPort()
+ + ", serverId:" + currentCell.getServerId());
+
+ ransimRepo.mergeNetconfServers(server);
+
+ }
+
+ } catch (Exception eu) {
+ log.error("setNetconfServers Function Error", eu);
+
+ }
+ }
+
+ /**
+ * generateClusterFromFile()
+ *
+ * @throws IOException
+ */
+ public void generateClusterFromFile() throws IOException {
+
+ log.debug("Inside generateClusterFromFile");
+ File dumpFile = null;
+ String cellDetailsString = "";
+
+ dumpFile = new File(fileBasePath+dumpFileName);
+
+ BufferedReader br = null;
+ try {
+ log.debug("Reading dump file");
+ br = new BufferedReader(new FileReader(dumpFile));
+
+ StringBuilder sb = new StringBuilder();
+ String line = br.readLine();
+ while (line != null) {
+ sb.append(line);
+ sb.append("\n");
+ line = br.readLine();
+ }
+ cellDetailsString = sb.toString();
+
+ TopologyDump dumpTopo = new Gson().fromJson(cellDetailsString, TopologyDump.class);
+ CellDetails cellsDb = new CellDetails();
+
+ log.info("dumpTopo.getCellList().size():" + dumpTopo.getCellList().size());
+ for (int i = 0; i < dumpTopo.getCellList().size(); i++) {
+ Gson g = new Gson();
+ String pnt = g.toJson(dumpTopo.getCellList().get(i));
+ log.info("Creating Cell:" + pnt);
+ log.info("Creating Cell:" + dumpTopo.getCellList().get(i).getCell().getNodeId());
+
+ cellsDb = new CellDetails();
+ cellsDb.setNodeId(dumpTopo.getCellList().get(i).getCell().getNodeId());
+ cellsDb.setPhysicalCellId(dumpTopo.getCellList().get(i).getCell().getPhysicalCellId());
+ cellsDb.setLongitude(dumpTopo.getCellList().get(i).getCell().getLongitude());
+ cellsDb.setLatitude(dumpTopo.getCellList().get(i).getCell().getLatitude());
+ cellsDb.setServerId(dumpTopo.getCellList().get(i).getCell().getPnfName());
+ if (!unassignedServerIds.contains(cellsDb.getServerId())) {
+ unassignedServerIds.add(cellsDb.getServerId());
+ }
+ cellsDb.setNetworkId(dumpTopo.getCellList().get(i).getCell().getNetworkId());
+
+ double lon = Float.valueOf(dumpTopo.getCellList().get(i).getCell().getLongitude());
+ double lat = Float.valueOf(dumpTopo.getCellList().get(i).getCell().getLatitude());
+
+ double xx = (lon - 0) * RansimUtilities.metersDeglon(0);
+ double yy = (lat - 0) * RansimUtilities.metersDeglat(0);
+
+ double rad = Math.sqrt(xx * xx + yy * yy);
+
+ if (rad > 0) {
+ double ct = xx / rad;
+ double st = yy / rad;
+ xx = rad * ((ct * Math.cos(0)) + (st * Math.sin(0)));
+ yy = rad * ((st * Math.cos(0)) - (ct * Math.sin(0)));
+ }
+
+ cellsDb.setScreenX((float) (xx));
+ cellsDb.setScreenY((float) (yy));
+
+ List<String> attachedNoeds = serverIdIpNodeMapping.get(cellsDb.getServerId());
+ log.info("Attaching Cell:" + dumpTopo.getCellList().get(i).getCell().getNodeId() + " to "
+ + cellsDb.getServerId());
+ if (attachedNoeds == null) {
+ attachedNoeds = new ArrayList<String>();
+ }
+ attachedNoeds.add(cellsDb.getNodeId());
+ serverIdIpNodeMapping.put(cellsDb.getServerId(), attachedNoeds);
+ if (attachedNoeds.size() > numberOfCellsPerNcServer) {
+ log.warn("Attaching Cell:" + dumpTopo.getCellList().get(i).getCell().getNodeId() + " to "
+ + cellsDb.getServerId() + ", But it is exceeding numberOfCellsPerNcServer "
+ + numberOfCellsPerNcServer);
+ }
+ ransimRepo.mergeCellDetails(cellsDb);
+ setNetconfServers(cellsDb.getNodeId());
+ }
+
+ dumpSessionDetails();
+
+ try {
+
+ for (int i = 0; i < dumpTopo.getCellList().size(); i++) {
+
+ String cellNodeId = dumpTopo.getCellList().get(i).getCell().getNodeId();
+
+ // neighbor list with the corresponding node id
+ CellNeighbor neighborList = ransimRepo.getCellNeighbor(cellNodeId);
+ // cell with the corresponding nodeId
+ CellDetails currentCell = ransimRepo.getCellDetail(cellNodeId);
+
+ Set<NeighborDetails> newCell = new HashSet<NeighborDetails>();
+
+ if (currentCell != null) {
+ if (neighborList == null) {
+ neighborList = new CellNeighbor();
+ neighborList.setNodeId(cellNodeId);
+ }
+ List<NbrDump> neighboursFromFile = dumpTopo.getCellList().get(i).getNeighbor();
+ log.info("Creating Neighbor for Cell :" + cellNodeId);
+ for (NbrDump a : neighboursFromFile) {
+ String id = a.getNodeId().trim();
+ boolean noHo = Boolean.parseBoolean(a.getBlacklisted().trim());
+ CellDetails neighborCell = ransimRepo.getCellDetail(id);
+ NeighborDetails neighborDetails = new NeighborDetails(
+ new NeihborId(currentCell.getNodeId(), neighborCell.getNodeId()), noHo);
+
+ newCell.add(neighborDetails);
+ }
+
+ neighborList.setNeighborList(newCell);
+ ransimRepo.mergeCellNeighbor(neighborList);
+ rsPciHdlr.setCollisionConfusionFromFile(cellNodeId);
+
+ }
+
+ }
+
+ } catch (Exception e1) {
+ log.error("Exception generateClusterFromFile :", e1);
+ }
+
+ try {
+
+ long startTimeSectorNumber = System.currentTimeMillis();
+ for (int i = 0; i < dumpTopo.getCellList().size(); i++) {
+
+ CellData icellData = dumpTopo.getCellList().get(i);
+ CellDetails icell = ransimRepo.getCellDetail(icellData.getCell().getNodeId());
+ int icount = icell.getSectorNumber();
+ if (icount == 0) {
+ log.info("Setting sectorNumber for Cell(i) :" + icell.getNodeId());
+ int jcount = 0;
+ for (int j = (i + 1); j < dumpTopo.getCellList().size(); j++) {
+
+ CellData jcellData = dumpTopo.getCellList().get(j);
+ if (icellData.getCell().getLatitude().equals(jcellData.getCell().getLatitude())) {
+ if (icellData.getCell().getLongitude().equals(jcellData.getCell().getLongitude())) {
+
+ if (icount == 0) {
+ icount++;
+ jcount = icount + 1;
+ }
+
+ CellDetails jcell = ransimRepo
+ .getCellDetail(dumpTopo.getCellList().get(j).getCell().getNodeId());
+
+ jcell.setSectorNumber(jcount);
+ log.info("Setting sectorNumber for Cell(j) :" + jcell.getNodeId() + " icell: "
+ + icell.getNodeId() + " Sector number: " + jcount);
+ ransimRepo.mergeCellDetails(jcell);
+ jcount++;
+ if (jcount > 3) {
+ break;
+ }
+ }
+ }
+ }
+ icell.setSectorNumber(icount);
+ ransimRepo.mergeCellDetails(icell);
+ }
+
+ }
+
+ long endTimeSectorNumber = System.currentTimeMillis();
+ log.info("Time taken for setting sector number: " + (endTimeSectorNumber - startTimeSectorNumber));
+
+ } catch (Exception e3) {
+ log.error("Exception generateClusterFromFile :", e3);
+ }
+
+ } catch (Exception e) {
+ log.error("Exception generateClusterFromFile :", e);
+
+ } finally {
+ br.close();
+ }
+ }
+
+ /**
+ * The function deletes the cell from the database with the nodeId passed in the
+ * arguments. It removes the cell from its neighbor's neighbor list and the
+ * netconf server list.
+ *
+ * @param nodeId node Id of the cell to be deleted.
+ * @return returns success or failure message
+ */
+ public String deleteCellFunction(String nodeId) {
+ String result = "failure node dosent exist";
+ log.info("deleteCellFunction called with nodeId :" + nodeId);
+
+ try {
+ CellDetails deleteCelldetail = ransimRepo.getCellDetail(nodeId);
+
+ CellNeighbor deleteCellNeighbor = ransimRepo.getCellNeighbor(nodeId);
+
+ if (deleteCelldetail != null) {
+ if (deleteCellNeighbor != null) {
+ List<CellNeighbor> cellNeighborList = ransimRepo.getCellNeighborList();
+ for (CellNeighbor cellNeighbors : cellNeighborList) {
+ Set<NeighborDetails> currentCellNeighbors = new HashSet<NeighborDetails>(
+ cellNeighbors.getNeighborList());
+
+ NeihborId deleteNeighborDetail = new NeihborId(cellNeighbors.getNodeId(),
+ deleteCelldetail.getNodeId());
+
+ if (currentCellNeighbors.contains(deleteNeighborDetail)) {
+ log.info("Deleted Cell is Neighbor of NodeId : " + cellNeighbors.getNodeId());
+ currentCellNeighbors.remove(deleteNeighborDetail);
+ cellNeighbors.setNeighborList(currentCellNeighbors);
+ ransimRepo.mergeCellNeighbor(cellNeighbors);
+ }
+ }
+
+ deleteCellNeighbor.getNeighborList().clear();
+ ransimRepo.deleteCellNeighbor(deleteCellNeighbor);
+ }
+
+ ransimRepo.deleteCellDetails(deleteCelldetail);
+ result = "cell has been deleted from the database";
+ } else {
+ log.info("cell id does not exist");
+ result = "failure nodeId dosent exist";
+ return result;
+ }
+ } catch (Exception eu) {
+ log.error("Exception deleteCellFunction :", eu);
+ result = "Exception in function";
+ }
+ return result;
+ }
+
+ /**
+ * Send configuration details to all the netconf server.
+ */
+ public void sendInitialConfigAll() {
+ try {
+ dumpSessionDetails();
+ List<NetconfServers> ncServers = ransimRepo.getNetconfServersList();
+ for (NetconfServers netconfServers : ncServers) {
+ String ipPortKey = serverIdIpPortMapping.get(netconfServers.getServerId());
+ if (ipPortKey == null || ipPortKey.trim().equals("")) {
+ log.info("No client for " + netconfServers.getServerId());
+ for (String ipPortKeyStr : webSocketSessions.keySet()) {
+ if (!serverIdIpPortMapping.containsValue(ipPortKeyStr)) {
+ serverIdIpPortMapping.put(netconfServers.getServerId(), ipPortKeyStr);
+ ipPortKey = ipPortKeyStr;
+ break;
+ }
+ }
+ }
+ if (ipPortKey != null && !ipPortKey.trim().equals("")) {
+ Session clSess = webSocketSessions.get(ipPortKey);
+ if (clSess != null) {
+ sendInitialConfig(netconfServers.getServerId());
+ try {
+ String[] agentDetails = ipPortKey.split(":");
+ new RestClient().sendMountRequestToSdnr(netconfServers.getServerId(), sdnrServerIp,
+ sdnrServerPort, agentDetails[0], agentDetails[1], sdnrServerUserid,
+ sdnrServerPassword);
+ } catch (Exception ex1) {
+ log.info("Ignoring exception", ex1);
+ }
+
+ } else {
+ log.info("No session for " + ipPortKey);
+ }
+ }
+ }
+ } catch (Exception eu) {
+ log.error("Exception:", eu);
+ }
+ }
+
+ public void sendRanInitialConfigAll() {
+ try {
+ List<NearRTRICModel> ncServers = ranSliceConfigService.findAllNearRTRIC();
+ for (NearRTRICModel netconfServers : ncServers) {
+ String ipPortKey = serverIdIpPortMapping.get(netconfServers.getNearRTRICId());
+ if (ipPortKey == null || ipPortKey.trim().equals("")) {
+ log.info("No client for " + netconfServers.getNearRTRICId());
+ for (String ipPortKeyStr : webSocketSessions.keySet()) {
+ if (!serverIdIpPortMapping.containsValue(ipPortKeyStr)) {
+ serverIdIpPortMapping.put(netconfServers.getNearRTRICId().toString(), ipPortKeyStr);
+ ipPortKey = ipPortKeyStr;
+ break;
+ }
+ }
+ }
+ if (ipPortKey != null && !ipPortKey.trim().equals("")) {
+ Session clSess = webSocketSessions.get(ipPortKey);
+ if (clSess != null) {
+ sendRanInitialConfig(netconfServers.getNearRTRICId().toString());
+ try {
+ String[] agentDetails = ipPortKey.split(":");
+ new RestClient().sendMountRequestToSdnr(netconfServers.getNearRTRICId().toString(), sdnrServerIp,
+ sdnrServerPort, agentDetails[0], agentDetails[1], sdnrServerUserid,
+ sdnrServerPassword);
+ } catch (Exception ex1) {
+ log.info("Ignoring exception", ex1);
+ }
+
+ } else {
+ log.info("No session for " + ipPortKey);
+ }
+ }
+ }
+ } catch (Exception eu) {
+ log.error("Exception:", eu);
+ }
+ }
+
+
+ /**
+ * Sends initial configuration details of the cells for a new netconf server
+ * that has been started.
+ *
+ * @param ipPortKey ip address details of the netconf server
+ */
+ public void sendInitialConfigForNewAgent(String ipPortKey, String serverId) {
+ try {
+ dumpSessionDetails();
+ if (ipPortKey != null && !ipPortKey.trim().equals("")) {
+ if (serverId != null && !serverId.trim().equals("")) {
+ Session clSess = webSocketSessions.get(ipPortKey);
+ if (clSess != null) {
+ String[] agentDetails = ipPortKey.split(":");
+ sendInitialConfig(serverId);
+ new RestClient().sendMountRequestToSdnr(serverId, sdnrServerIp, sdnrServerPort, agentDetails[0],
+ agentDetails[1], sdnrServerUserid, sdnrServerPassword);
+
+ } else {
+ log.info("No session for " + ipPortKey);
+ }
+ } else {
+ log.info("No serverid for " + ipPortKey);
+ }
+ } else {
+ log.info("Invalid ipPortKey " + ipPortKey);
+ }
+ } catch (Exception eu) {
+ log.info("Exception:", eu);
+ }
+ }
+
+ public void sendRanInitialConfigForNewAgent(String ipPortKey, String serverId) {
+ try {
+ if (ipPortKey != null && !ipPortKey.trim().equals("")) {
+ if (serverId != null && !serverId.trim().equals("")) {
+ Session clSess = webSocketSessions.get(ipPortKey);
+ if (clSess != null) {
+ String[] agentDetails = ipPortKey.split(":");
+ sendRanInitialConfig(serverId);
+ new RestClient().sendMountRequestToSdnr(serverId, sdnrServerIp, sdnrServerPort, agentDetails[0],
+ agentDetails[1], sdnrServerUserid, sdnrServerPassword);
+ } else {
+ log.info("No session for " + ipPortKey);
+ }
+ } else {
+ log.info("No serverid for " + ipPortKey);
+ }
+ } else {
+ log.info("Invalid ipPortKey " + ipPortKey);
+ }
+ } catch (Exception eu) {
+ log.info("Exception:", eu);
+ }
+ }
+
+ public void sendRanInitialConfig(String serverId) {
+
+ try
+ {
+ NetconfServers server = ransimRepo.getNetconfServer(serverId);
+ log.info("sendInitialConfig: serverId:" + serverId + ", server:" + server);
+ if (server == null) {
+ return;
+ }
+
+ for(NearRTRICModel rtRicModel:rtricModelList) {
+ if(rtRicModel.getNearRTRICId().toString().equals(serverId)) {
+ getInitalConfigTree(rtRicModel,serverId);
+ NetconfClient netconfClient = new NetconfClient("ransim", "admin", "admin", server.getServerId(),
+ server.getIp(), Integer.parseInt(server.getNetconfPort()));
+
+ netconfClient.editConfig(netconfClient.getInitialNodeSet(rtRicModel,serverId));
+ }
+ else {
+ for(Map.Entry<String,List<String>> entry : ricIdFunctionMapping.entrySet()) {
+ for(String value : entry.getValue()) {
+ if(value.equals(serverId) && rtRicModel.getNearRTRICId().toString().equals(entry.getKey())) {
+ getInitalConfigTree(rtRicModel,serverId);
+ NetconfClient netconfClient = new NetconfClient("ransim", "admin", "admin", server.getServerId(),
+ server.getIp(), Integer.parseInt(server.getNetconfPort()));
+
+ netconfClient.editConfig(netconfClient.getInitialNodeSet(rtRicModel,serverId));
+ }
+ }
+ }
+ }
+ }
+
+ }
+ catch (Exception eu) {
+ log.info("Exception:", eu);
+ }
+
+ }
+
+ /**
+ * Gets the initial config tree from the database.
+ */
+ private void getInitalConfigTree(NearRTRICModel rtRicModel,String serverId) {
+ RanNetwork ranNetwork = new RanNetwork();
+ List<NearRTRIC> nearRTRICList = new ArrayList<>();
+
+ NearRTRIC nearRTRIC = new NearRTRIC();
+ nearRTRIC.setIdNearRTRIC(rtRicModel.getNearRTRICId().toString());
+ Attributes attributes = new Attributes();
+ attributes.setLocationName("Palmdale");
+ attributes.setgNBId(rtRicModel.getgNBId().toString());
+ nearRTRIC.setAttributes(attributes);
+
+ List<GNBCUUPFunction> gNBCUUPFunctionList = new ArrayList<>();
+ for(GNBCUUPModel gNBCUUPModel:rtRicModel.getgNBCUUPList())
+ {
+ if(gNBCUUPModel.getgNBCUUPId().toString().equals(serverId) || rtRicModel.getNearRTRICId().toString().equals(serverId))
+ {
+ GNBCUUPFunction gNBCUUPFunction = new GNBCUUPFunction();
+ Attributes cUUPattributes = new Attributes();
+ cUUPattributes.setgNBCUUPId(gNBCUUPModel.getgNBCUUPId().toString());
+ gNBCUUPFunction.setAttributes(cUUPattributes);
+ gNBCUUPFunction.setIdGNBCUUPFunction(gNBCUUPModel.getgNBCUUPId().toString());
+ gNBCUUPFunctionList.add(gNBCUUPFunction);
+ }
+ }
+ List<GNBDUFunction> gNBDUFunctionList = new ArrayList<>();
+ for(GNBDUModel gNBDUModel:rtRicModel.getgNBDUList())
+ {
+ if(gNBDUModel.getgNBDUId().toString().equals(serverId) || rtRicModel.getNearRTRICId().toString().equals(serverId))
+ {
+ GNBDUFunction gNBDUFunction= new GNBDUFunction();
+ Attributes dUattributes = new Attributes();
+ dUattributes.setgNBId(gNBDUModel.getgNBId().toString());
+ gNBDUFunction.setAttributes(dUattributes);
+ gNBDUFunction.setIdGNBDUFunction(gNBDUModel.getgNBDUId().toString());
+ List<NRCellDU> nRCellDUList = new ArrayList<>();
+ for(NRCellDUModel nRCellDUModel : gNBDUModel.getCellDUList())
+ {
+ NRCellDU nRCellDU = new NRCellDU();
+ Attributes nRCellDUattributes = new Attributes();
+ nRCellDUattributes.setOperationalState(nRCellDUModel.getOperationalState());
+ nRCellDUattributes.setCellState(nRCellDUModel.getCellState());
+ nRCellDU.setAttributes(nRCellDUattributes);
+ nRCellDU.setIdNRCellDU(nRCellDUModel.getCellLocalId().toString());
+ nRCellDUList.add(nRCellDU);
+ }
+ gNBDUFunction.setnRCellDU(nRCellDUList);
+ gNBDUFunctionList.add(gNBDUFunction);
+ }
+ }
+ nearRTRIC.setgNBDUFunction(gNBDUFunctionList);
+ nearRTRIC.setgNBCUUPFunction(gNBCUUPFunctionList);
+ nearRTRICList.add(nearRTRIC);
+ ranNetwork.setNearRTRIC(nearRTRICList);
+
+ String ipPortKey = serverIdIpPortMapping.get(serverId);
+ log.info("sendInitialConfig: ipPortKey:" + ipPortKey);
+
+ Gson gson = new Gson();
+ String jsonStr = gson.toJson(ranNetwork);
+ log.info("ConfigTopologyMessage: " + jsonStr);
+ Session session = webSocketSessions.get(ipPortKey);
+ RansimWebSocketServer.sendSetConfigTopologyMessage(jsonStr, session);
+ }
+
+
+ /**
+ * To send the initial configration to the netconf server.
+ *
+ * @param serverId ip address details of the netconf server
+ */
+ public void sendInitialConfig(String serverId) {
+
+ try {
+ NetconfServers server = ransimRepo.getNetconfServer(serverId);
+ log.info("sendInitialConfig: serverId:" + serverId + ", server:" + server);
+ if (server == null) {
+ return;
+ }
+
+ String ipPortKey = serverIdIpPortMapping.get(serverId);
+
+ log.info("sendInitialConfig: ipPortKey:" + ipPortKey);
+
+ List<CellDetails> cellList = new ArrayList<CellDetails>(server.getCells());
+
+ List<Topology> config = new ArrayList<Topology>();
+
+ for (int i = 0; i < server.getCells().size(); i++) {
+ Topology cell = new Topology();
+ CellDetails currentCell = ransimRepo.getCellDetail(cellList.get(i).getNodeId());
+ CellNeighbor neighbor = ransimRepo.getCellNeighbor(cellList.get(i).getNodeId());
+
+ cell.setCellId("" + currentCell.getNodeId());
+ cell.setPciId(currentCell.getPhysicalCellId());
+ cell.setPnfName(serverId);
+
+ List<Neighbor> nbrList = new ArrayList<Neighbor>();
+ Set<NeighborDetails> nbrsDet = neighbor.getNeighborList();
+ for (NeighborDetails cellDetails : nbrsDet) {
+ Neighbor nbr = new Neighbor();
+ CellDetails nbrCell = ransimRepo.getCellDetail(cellDetails.getNeigbor().getNeighborCell());
+ nbr.setNodeId(nbrCell.getNodeId());
+ nbr.setPhysicalCellId(nbrCell.getPhysicalCellId());
+ nbr.setPnfName(nbrCell.getServerId());
+ nbr.setServerId(nbrCell.getServerId());
+ nbr.setPlmnId(nbrCell.getNetworkId());
+ nbr.setBlacklisted(cellDetails.isBlacklisted());
+ nbrList.add(nbr);
+ }
+ cell.setNeighborList(nbrList);
+ config.add(i, cell);
+ }
+
+ SetConfigTopology topo = new SetConfigTopology();
+
+ topo.setServerId(server.getServerId());
+ String uuid = globalNcServerUuidMap.get(server.getServerId());
+ if (uuid == null) {
+ uuid = getUuid();
+ globalNcServerUuidMap.put(server.getServerId(), uuid);
+ }
+ topo.setUuid(uuid);
+
+ topo.setTopology(config);
+
+ Gson gson = new Gson();
+ String jsonStr = gson.toJson(topo);
+ log.info("ConfigTopologyMessage: " + jsonStr);
+ Session clSess = webSocketSessions.get(ipPortKey);
+ Thread.sleep(10000);
+ RansimWebSocketServer.sendSetConfigTopologyMessage(jsonStr, clSess);
+
+ } catch (Exception eu) {
+ log.info("Exception:", eu);
+ }
+
+ }
+
+ private static String getUuid() {
+ return UUID.randomUUID().toString();
+ }
+
+ /**
+ * The function alters the database information based on the modifications made
+ * in the SDNR.
+ *
+ * @param message message received from the SDNR
+ * @param session sends the session details
+ * @param ipPort ip address of the netconf server
+ */
+ public void handleModifyPciFromSdnr(String message, Session session, String ipPort) {
+ log.info("handleModifyPciFromSDNR: message:" + message + " session:" + session + " ipPort:" + ipPort);
+ ModifyPci modifyPci = new Gson().fromJson(message, ModifyPci.class);
+ log.info("handleModifyPciFromSDNR: modifyPci:" + modifyPci.getCellId() + "; pci: " + modifyPci.getPciId());
+ String source = "Netconf";
+ CellDetails cd = ransimRepo.getCellDetail(modifyPci.getCellId());
+ long pci = cd.getPhysicalCellId();
+ cd.setPhysicalCellId(modifyPci.getPciId());
+ ransimRepo.mergeCellDetails(cd);
+ rsPciHdlr.updatePciOperationsTable(modifyPci.getCellId(), source, pci, modifyPci.getPciId());
+ }
+
+ public void handleRTRICConfigFromSdnr(String message, Session session, String ipPort) {
+ log.info("handleReconfigureRTRICFromSDNR: message:" + message + " session:" + session + " ipPort:" + ipPort);
+ ConfigPLMNInfo configPLMNInfo = new Gson().fromJson(message, ConfigPLMNInfo.class);
+ log.info("handleReconfigureRTRICFromSDNR:" + configPLMNInfo.getSNSSAI());
+ List<GNBDUModel> gNBDUModelList = new ArrayList<>();
+ HttpHeaders headers = new HttpHeaders();
+ headers.setAccept(Collections.singletonList(MediaType.APPLICATION_JSON));
+ HttpEntity<Void> requestEntity = new HttpEntity<>(headers);
+ try {
+ RestTemplate restTemplate = new RestTemplate();
+ ResponseEntity<List<GNBDUModel>> response = restTemplate.exchange("http://" + "localhost" + ":" + "8081" + "/ransim/api/ransim-db/v4/du-list"+configPLMNInfo.getSNSSAI().get(0), HttpMethod.GET, requestEntity,
+ new ParameterizedTypeReference<List<GNBDUModel>>() {
+ });
+ gNBDUModelList = response.getBody();
+ }
+ catch (Exception e) {
+ log.info("Exception:", e);
+ }
+ for(GNBDUModel gNBDUModel :gNBDUModelList)
+ {
+ String serverId = gNBDUModel.getgNBDUId().toString();
+ int duCellCount = gNBDUModel.getCellDUList().size();
+ for(SNSSAI sNSSAI : configPLMNInfo.getSNSSAI()) {
+ for(ConfigData configData : sNSSAI.getConfigData()) {
+ configData.setConfigValue((configData.getConfigValue())/duCellCount);
+ }
+ }
+ String ipPortKey = serverIdIpPortMapping.get(serverId);
+ log.info("sendConfigRTRICMessage: ipPortKey:" + ipPortKey);
+
+ Gson gson = new Gson();
+ String jsonStr = gson.toJson(configPLMNInfo);
+ log.info("ConfigRTRICMessage: " + jsonStr);
+ Session duSession = webSocketSessions.get(ipPortKey);
+ RansimWebSocketServer.sendSetReconfigureMessage(jsonStr, duSession);
+ }
+ }
+
+ public void handleRRMPolicyRatioUpdateFromSdnr(String message, Session session, String ipPort){
+ log.info("handle RRMPolicy update: " + message );
+ RRMPolicyRatio rRMPolicyRatio = new Gson().fromJson(message, RRMPolicyRatio.class);
+ rrmPolicyRepository.save(rRMPolicyRatio);
+ }
+
+
+ public void handleRRMPolicyRatioDeleteFromSdnr(String message, Session session, String ipPort) {
+ log.info("handle RRMPolicyRatio Delete: " + message);
+ RRMPolicyRatio rRMPolicyRatio = new Gson().fromJson(message, RRMPolicyRatio.class);
+ rrmPolicyRepository.delete(rRMPolicyRatio);
+ }
+
+ public void handlePLMNInfoUpdateFromSdnr(String message, Session session, String ipPort) {
+ log.info("handle PLMNInfo update: "+message);
+ List<PLMNInfo> pLMNInfoList = null;
+ org.onap.ransim.rest.api.models.PLMNInfoModel plmnInfoModel = new Gson().fromJson(message,
+ org.onap.ransim.rest.api.models.PLMNInfoModel.class);
+ PLMNInfo plmnInfo = new PLMNInfo();
+ NSSAIConfig nSSAIConfig = new NSSAIConfig();
+ nSSAIConfig.setMaxNumberOfConns((int) (plmnInfoModel.getMaxNumberOfConns()));
+ org.onap.ransim.rest.api.models.SNSSAI sNSSAI = new org.onap.ransim.rest.api.models.SNSSAI();
+ sNSSAI.setsNSSAI(plmnInfoModel.getSnssai());
+ sNSSAI.setStatus(plmnInfoModel.getStatus());
+ sNSSAI.setConfigData(nSSAIConfig);
+ plmnInfo.setpLMNId(plmnInfoModel.getpLMNId());
+ plmnInfo.setsNSSAI(sNSSAI);
+ try {
+ if (plmnInfoModel.getGnbType().equalsIgnoreCase("gnbdu")) {
+ org.onap.ransim.rest.api.models.NRCellDU nrCellDu = nRCellDURepository
+ .findById(plmnInfoModel.getNrCellId()).get();
+ if (!(Objects.isNull(nrCellDu.getpLMNInfoList()))) {
+ pLMNInfoList = nrCellDu.getpLMNInfoList();
+ } else {
+ pLMNInfoList = new ArrayList<PLMNInfo>();
+ }
+ pLMNInfoList.add(plmnInfo);
+ nrCellDu.setpLMNInfoList(pLMNInfoList);
+ nRCellDURepository.save(nrCellDu);
+ } else if (plmnInfoModel.getGnbType().equalsIgnoreCase("gnbcucp")) {
+ org.onap.ransim.rest.api.models.NRCellCU nrCellCu = nRCellCURepository
+ .findById(plmnInfoModel.getNrCellId()).get();
+ if (!(Objects.isNull(nrCellCu.getpLMNInfoList()))) {
+ pLMNInfoList = nrCellCu.getpLMNInfoList();
+ } else {
+ pLMNInfoList = new ArrayList<PLMNInfo>();
+ }
+ pLMNInfoList.add(plmnInfo);
+ nrCellCu.setpLMNInfoList(pLMNInfoList);
+ nRCellCURepository.save(nrCellCu);
+ } else {
+ org.onap.ransim.rest.api.models.GNBCUUPFunction gNBCUUPFunction = gNBCUUPRepository
+ .findById(plmnInfoModel.getGnbId()).get();
+ if (!(Objects.isNull(gNBCUUPFunction.getpLMNInfoList()))) {
+ pLMNInfoList = gNBCUUPFunction.getpLMNInfoList();
+ } else {
+ pLMNInfoList = new ArrayList<PLMNInfo>();
+ }
+ pLMNInfoList.add(plmnInfo);
+ gNBCUUPFunction.setpLMNInfoList(pLMNInfoList);
+ gNBCUUPRepository.save(gNBCUUPFunction);
+ }
+ } catch (NullPointerException nullPointerException) {
+ log.error("Record does not exist");
+ } catch (Exception e) {
+ log.error("Unexpected error while fetching data from database: " + e);
+ }
+ }
+
+ public void handlePLMNInfoDeleteFromSdnr(String message, Session session, String ipPort) {
+ log.info("handle PLMNInfo Delete: " + message);
+ org.onap.ransim.rest.api.models.PLMNInfoModel plmnInfoModel = new Gson().fromJson(message,
+ org.onap.ransim.rest.api.models.PLMNInfoModel.class);
+ PLMNInfo plmnInfo = new PLMNInfo();
+ NSSAIConfig nSSAIConfig = new NSSAIConfig();
+ nSSAIConfig.setMaxNumberOfConns((int) (plmnInfoModel.getMaxNumberOfConns()));
+ org.onap.ransim.rest.api.models.SNSSAI sNSSAI = new org.onap.ransim.rest.api.models.SNSSAI();
+ sNSSAI.setsNSSAI(plmnInfoModel.getSnssai());
+ sNSSAI.setStatus(plmnInfoModel.getStatus());
+ sNSSAI.setConfigData(nSSAIConfig);
+ plmnInfo.setpLMNId(plmnInfoModel.getpLMNId());
+ plmnInfo.setsNSSAI(sNSSAI);
+ // pLMNInfoRepo.delete(plmnInfo);
+}
+
+ public void handleSliceProfileUpdateFromSdnr(String message, Session session, String ipPort) {
+ log.info("handle SliceProfile update: "+message);
+ SliceProfile sliceProfile = new Gson().fromJson(message, SliceProfile.class);
+ sliceProfileRepository.save(sliceProfile);
+ }
+
+ public void handleSliceProfileDeleteFromSdnr(String message, Session session, String ipPort) {
+ log.info("handle SliceProfile delete: "+message);
+ SliceProfile sliceProfile = new Gson().fromJson(message, SliceProfile.class);
+ sliceProfileRepository.delete(sliceProfile);
+ }
+
+
+ /**
+ * The function alters the database information based on the modifications made
+ * in the SDNR.
+ *
+ * @param message message received from the SDNR
+ * @param session sends the session details
+ * @param ipPort ip address of the netconf server
+ */
+ public void handleModifyNeighborFromSdnr(String message, Session session, String ipPort) {
+ log.info("handleModifyAnrFromSDNR: message:" + message + " session:" + session + " ipPort:" + ipPort);
+ ModifyNeighbor modifyNeighbor = new Gson().fromJson(message, ModifyNeighbor.class);
+ log.info("handleModifyAnrFromSDNR: modifyPci:" + modifyNeighbor.getCellId());
+ List<NeighborDetails> neighborList = new ArrayList<NeighborDetails>();
+ List<String> cellList = new ArrayList<String>();
+ cellList.add(modifyNeighbor.getCellId());
+ String nbrsAdd = "";
+ String nbrsDel = "";
+ String source = "Netconf";
+
+ for (int i = 0; i < modifyNeighbor.getNeighborList().size(); i++) {
+ if (modifyNeighbor.getNeighborList().get(i).isBlacklisted()) {
+ NeighborDetails nd = new NeighborDetails(
+ new NeihborId(modifyNeighbor.getCellId(), modifyNeighbor.getNeighborList().get(i).getNodeId()),
+ true);
+ ransimRepo.mergeNeighborDetails(nd);
+ cellList.add(modifyNeighbor.getNeighborList().get(i).getNodeId());
+ if (nbrsAdd.equals("")) {
+ nbrsDel = modifyNeighbor.getNeighborList().get(i).getNodeId();
+ } else {
+ nbrsDel += "," + modifyNeighbor.getNeighborList().get(i).getNodeId();
+ }
+ } else {
+ NeighborDetails nd = new NeighborDetails(
+ new NeihborId(modifyNeighbor.getCellId(), modifyNeighbor.getNeighborList().get(i).getNodeId()),
+ false);
+ ransimRepo.mergeNeighborDetails(nd);
+ cellList.add(modifyNeighbor.getNeighborList().get(i).getNodeId());
+ if (nbrsDel.equals("")) {
+ nbrsAdd = modifyNeighbor.getNeighborList().get(i).getNodeId();
+ } else {
+ nbrsAdd += "," + modifyNeighbor.getNeighborList().get(i).getNodeId();
+ }
+ }
+
+ }
+
+ for (String cl : cellList) {
+ rsPciHdlr.setCollisionConfusionFromFile(cl);
+ }
+
+ log.info("neighbor list: " + neighborList);
+
+ rsPciHdlr.updateNbrsOperationsTable(modifyNeighbor.getCellId(), source, nbrsAdd, nbrsDel);
+ }
+
+ /**
+ * The function sends the modification made in the GUI to the netconf server.
+ *
+ * @param cellId node Id of the cell which was modified
+ * @param pciId PCI number of the cell which was modified
+ */
+ public void handleModifyPciFromGui(String cellId, long pciId) {
+ log.info("handleModifyPciFromGUI: cellId:" + cellId + " pciId:" + pciId);
+
+ try {
+ CellDetails currentCell = ransimRepo.getCellDetail(cellId);
+ CellNeighbor neighborList = ransimRepo.getCellNeighbor(cellId);
+ List<Neighbor> nbrList = new ArrayList<Neighbor>();
+ Iterator<NeighborDetails> iter = neighborList.getNeighborList().iterator();
+ while (iter.hasNext()) {
+ NeighborDetails nbCell = iter.next();
+ Neighbor nbr = new Neighbor();
+ CellDetails nbrCell = ransimRepo.getCellDetail(nbCell.getNeigbor().getNeighborCell());
+
+ nbr.setNodeId(nbrCell.getNodeId());
+ nbr.setPhysicalCellId(nbrCell.getPhysicalCellId());
+ nbr.setPnfName(nbrCell.getNodeName());
+ nbr.setServerId(nbrCell.getServerId());
+ nbr.setPlmnId(nbrCell.getNetworkId());
+ nbrList.add(nbr);
+ }
+
+ String pnfName = currentCell.getServerId();
+ String ipPort = serverIdIpPortMapping.get(pnfName);
+ log.info("handleModifyPciFromGui:ipPort >>>>>>> " + ipPort);
+
+ if (ipPort != null && !ipPort.trim().equals("")) {
+
+ String[] ipPortArr = ipPort.split(":");
+ Topology oneCell = new Topology(pnfName, pciId, cellId, nbrList);
+ UpdateCell updatedPci = new UpdateCell(currentCell.getServerId(), ipPortArr[0], ipPortArr[1], oneCell);
+ Gson gson = new Gson();
+ String jsonStr = gson.toJson(updatedPci);
+ if (ipPort != null && !ipPort.trim().equals("")) {
+ Session clSess = webSocketSessions.get(ipPort);
+ if (clSess != null) {
+ RansimWebSocketServer.sendUpdateCellMessage(jsonStr, clSess);
+ log.info("handleModifyPciFromGui, message: " + jsonStr);
+ } else {
+ log.info("No client session for " + ipPort);
+ }
+ } else {
+ log.info("No client for " + currentCell.getServerId());
+ }
+ }
+
+ } catch (Exception eu) {
+
+ log.error("Exception:", eu);
+ }
+ }
+
+ /**
+ * The function unmounts the connection with SDNR.
+ *
+ * @return returns null value
+ */
+ public String stopAllSimulation() {
+ try {
+ List<NetconfServers> ncServers = ransimRepo.getNetconfServersList();
+ for (NetconfServers netconfServers : ncServers) {
+ try {
+ log.info("Unmount " + netconfServers.getServerId());
+ new RestClient().sendUnmountRequestToSdnr(netconfServers.getServerId(), sdnrServerIp,
+ sdnrServerPort, sdnrServerUserid, sdnrServerPassword);
+ } catch (Exception e) {
+ log.error("Ignore Exception:", e);
+ }
+ serverIdIpNodeMapping.clear();
+ }
+ return "Netconf servers unmounted.";
+ } catch (Exception eu) {
+
+ log.error("Exception:", eu);
+ return "Error";
+ }
+ }
+
+
+
+ /**
+ * Used to dump session details.
+ */
+ synchronized public static void dumpSessionDetails() {
+
+ try {
+
+ log.info("serverIdIpPortMapping.size:" + serverIdIpPortMapping.size() + "webSocketSessions.size"
+ + webSocketSessions.size());
+ for (String key : serverIdIpPortMapping.keySet()) {
+ String val = serverIdIpPortMapping.get(key);
+ Session sess = webSocketSessions.get(val);
+ log.info("ServerId:" + key + " IpPort:" + val + " Session:" + sess);
+ }
+ for (String serverId : unassignedServerIds) {
+ log.info("Unassigned ServerId:" + serverId);
+ }
+ for (String serverId : serverIdIpPortMapping.keySet()) {
+ List<String> attachedNoeds = serverIdIpNodeMapping.get(serverId);
+ if (attachedNoeds != null) {
+ log.info("ServerId:" + serverId + " attachedNoeds.size:" + attachedNoeds.size() + " nodes:"
+ + attachedNoeds.toArray());
+ } else {
+ log.info("ServerId:" + serverId + " attachedNoeds:" + null);
+ }
+ }
+ } catch (Exception e) {
+ log.info("Exception:", e);
+ }
+ }
+
+}
+
+class KeepWebsockAliveThread extends Thread {
+ static Logger log = Logger.getLogger(KeepWebsockAliveThread.class.getName());
+ RansimControllerServices rsCtrlrServices = null;
+
+ KeepWebsockAliveThread(RansimControllerServices ctrlr) {
+ rsCtrlrServices = ctrlr;
+ }
+
+ @Override
+ public void run() {
+ log.info("Inside KeepWebsockAliveThread run method");
+ while (true) {
+ for (String ipPort : RansimControllerServices.webSocketSessions.keySet()) {
+ try {
+ Session sess = RansimControllerServices.webSocketSessions.get(ipPort);
+ RansimWebSocketServer.sendPingMessage(sess);
+ log.debug("Sent ping message to Client ipPort:" + ipPort);
+ } catch (Exception ex1) {
+ }
+ }
+ try {
+ Thread.sleep(10000);
+ } catch (InterruptedException ex) {
+ log.error("Thread interrupted");
+ }
+ }
+ }
+}
diff --git a/ransim/ransimctrlr/RANSIM-CTRLR/src/main/java/org/onap/ransim/rest/api/services/RansimRepositoryService.java b/ransim/ransimctrlr/RANSIM-CTRLR/src/main/java/org/onap/ransim/rest/api/services/RansimRepositoryService.java
new file mode 100644
index 0000000..2a9a655
--- /dev/null
+++ b/ransim/ransimctrlr/RANSIM-CTRLR/src/main/java/org/onap/ransim/rest/api/services/RansimRepositoryService.java
@@ -0,0 +1,244 @@
+package org.onap.ransim.rest.api.services;
+
+import java.util.ArrayList;
+import java.util.List;
+import java.util.Optional;
+import org.apache.log4j.Logger;
+import org.onap.ransim.rest.api.models.CellDetails;
+import org.onap.ransim.rest.api.models.CellNeighbor;
+import org.onap.ransim.rest.api.models.NeighborDetails;
+import org.onap.ransim.rest.api.models.NetconfServers;
+import org.onap.ransim.rest.api.models.OperationLog;
+import org.onap.ransim.rest.api.repository.CellDetailsRepo;
+import org.onap.ransim.rest.api.repository.CellNeighborRepo;
+import org.onap.ransim.rest.api.repository.NeighborDetailsRepo;
+import org.onap.ransim.rest.api.repository.NetconfServersRepo;
+import org.onap.ransim.rest.api.repository.OperationLogRepo;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+
+@Service
+public class RansimRepositoryService {
+
+ static Logger log = Logger.getLogger(RansimRepositoryService.class.getName());
+
+ @Autowired
+ CellDetailsRepo cellDetailsRepo;
+
+ @Autowired
+ NetconfServersRepo netconfServersRepo;
+
+ @Autowired
+ CellNeighborRepo cellNeighborRepo;
+
+ @Autowired
+ NeighborDetailsRepo neighborDetailsRepo;
+
+ @Autowired
+ OperationLogRepo operationLogRepo;
+
+ /**
+ * Method to retrieve cell details
+ * @param nodeId
+ * @return
+ */
+ public CellDetails getCellDetail(String nodeId) {
+ Optional<CellDetails> cd = cellDetailsRepo.findById(nodeId);
+ CellDetails cellDetails = null;
+ if (cd.isPresent()) {
+ cellDetails = cd.get();
+ }
+ return cellDetails;
+ }
+
+ /**
+ * Method to retrieve netconf server details
+ * @param serverId
+ * @return
+ */
+ public NetconfServers getNetconfServer(String serverId) {
+ Optional<NetconfServers> serverDetails = netconfServersRepo.findById(serverId);
+ NetconfServers server = null;
+ if (serverDetails.isPresent()) {
+ server = serverDetails.get();
+ }
+ return server;
+ }
+
+ /**
+ * Method to retrieve cell neighbors
+ * @param nodeId
+ * @return
+ */
+ public CellNeighbor getCellNeighbor(String nodeId) {
+ Optional<CellNeighbor> cellNeighborDetails = cellNeighborRepo.findById(nodeId);
+ CellNeighbor cellNeighbor = null;
+ if (cellNeighborDetails.isPresent()) {
+ cellNeighbor = cellNeighborDetails.get();
+ }
+ return cellNeighbor;
+ }
+
+ /**
+ * Method to retrieve all cell details
+ * @return
+ */
+ public List<CellDetails> getCellDetailsList() {
+ Iterable<CellDetails> cellsList = cellDetailsRepo.findAll();
+ if (cellsList != null) {
+ return (List<CellDetails>) cellsList;
+ } else {
+ return new ArrayList<>();
+ }
+ }
+
+ /**
+ * Method to retrieve cells with no server ids
+ * @return
+ */
+ public List<CellDetails> getCellsWithNoServerIds() {
+ List<CellDetails> cellsList = cellDetailsRepo.findCellsWithNoServerId();
+ if (cellsList != null) {
+ return cellsList;
+ } else {
+ return new ArrayList<>();
+ }
+ }
+
+ /**
+ * Method to retrieve cell with collision or confusion
+ * @return
+ */
+ public List<CellDetails> getCellsWithCollisionOrConfusion() {
+ List<CellDetails> cellsList = cellDetailsRepo.getCellsWithCollisionOrConfusion();
+ if (cellsList != null) {
+ return cellsList;
+ } else {
+ return new ArrayList<>();
+ }
+ }
+
+ /**
+ * Method to retrieve operation log
+ * @return
+ */
+ public List<OperationLog> getOperationLogList() {
+ Iterable<OperationLog> opLogList = operationLogRepo.findAll();
+ if (opLogList != null) {
+ return (List<OperationLog>) opLogList;
+ } else {
+ return new ArrayList<>();
+ }
+ }
+
+ /**
+ * Method to retrieve all netconf servers
+ * @return
+ */
+ public List<NetconfServers> getNetconfServersList() {
+ Iterable<NetconfServers> serversList = netconfServersRepo.findAll();
+ if (serversList != null) {
+ return (List<NetconfServers>) serversList;
+ } else {
+ return new ArrayList<>();
+ }
+ }
+
+ /**
+ * Method to retrieve all cell neighbors
+ * @return
+ */
+ public List<CellNeighbor> getCellNeighborList() {
+ Iterable<CellNeighbor> cellNeighborList = cellNeighborRepo.findAll();
+ if (cellNeighborList != null) {
+ return (List<CellNeighbor>) cellNeighborList;
+ } else {
+ return new ArrayList<>();
+ }
+ }
+
+ /**
+ * Method to delete specific cells
+ * @param deleteCelldetail
+ */
+ public void deleteCellDetails(CellDetails deleteCelldetail) {
+
+ if (deleteCelldetail.getServerId() != null) {
+ NetconfServers ns = getNetconfServer(deleteCelldetail.getServerId());
+ if (ns != null) {
+ ns.getCells().remove(deleteCelldetail);
+ netconfServersRepo.save(ns);
+ }
+ }
+ cellDetailsRepo.deleteById(deleteCelldetail.getNodeId());
+ }
+
+ /**
+ * Method to delete cell neighbors
+ * @param deleteCellNeighbor
+ */
+ public void deleteCellNeighbor(CellNeighbor deleteCellNeighbor) {
+ cellNeighborRepo.deleteById(deleteCellNeighbor.getNodeId());
+ }
+
+ /**
+ * Method to delete all netconf servers
+ */
+ public void deleteNetconfServers() {
+ netconfServersRepo.deleteAll();
+ }
+
+ /**
+ * Method to delete all cell neighbors
+ */
+ public void deleteCellNeighbors() {
+ cellNeighborRepo.deleteAll();
+ }
+
+ /**
+ * Method to delete all cells
+ */
+ public void deleteAllCellDetails() {
+ cellDetailsRepo.deleteAll();
+ }
+
+ /**
+ * Method to save cells
+ * @param cellDetail
+ */
+ public void mergeCellDetails(CellDetails cellDetail) {
+ cellDetailsRepo.save(cellDetail);
+ }
+
+ /**
+ * Method to save neighbors
+ * @param neighborDetails
+ */
+ public void mergeNeighborDetails(NeighborDetails neighborDetails) {
+ neighborDetailsRepo.save(neighborDetails);
+ }
+
+ /**
+ * Method to save netconf servers
+ * @param netconfServers
+ */
+ public void mergeNetconfServers(NetconfServers netconfServers) {
+ netconfServersRepo.save(netconfServers);
+ }
+
+ /**
+ * Method to save cell neighbors
+ * @param cellNeighbor
+ */
+ public void mergeCellNeighbor(CellNeighbor cellNeighbor) {
+ cellNeighborRepo.save(cellNeighbor);
+ }
+
+ /**
+ * Method to save operation log
+ * @param opLog
+ */
+ public void mergeOperationLog(OperationLog opLog) {
+ operationLogRepo.save(opLog);
+ }
+}
diff --git a/ransim/ransimctrlr/RANSIM-CTRLR/src/main/java/org/onap/ransim/rest/api/services/SlicingPMDataGenerator.java b/ransim/ransimctrlr/RANSIM-CTRLR/src/main/java/org/onap/ransim/rest/api/services/SlicingPMDataGenerator.java
new file mode 100644
index 0000000..3b14100
--- /dev/null
+++ b/ransim/ransimctrlr/RANSIM-CTRLR/src/main/java/org/onap/ransim/rest/api/services/SlicingPMDataGenerator.java
@@ -0,0 +1,282 @@
+package org.onap.ransim.rest.api.services;
+
+import java.io.File;
+import java.time.LocalDateTime;
+import java.util.ArrayList;
+import java.util.Collections;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+import java.util.Random;
+import java.util.concurrent.atomic.AtomicInteger;
+
+import javax.xml.bind.JAXBContext;
+import javax.xml.bind.JAXBException;
+import javax.xml.bind.Marshaller;
+import java.io.ByteArrayOutputStream;
+import javax.xml.bind.annotation.XmlRootElement;
+import javax.xml.stream.XMLOutputFactory;
+import javax.xml.stream.XMLStreamWriter;
+
+
+import org.onap.ransim.rest.api.exceptions.RansimException;
+import org.onap.ransim.rest.api.models.NSSAIConfig;
+import org.onap.ransim.rest.web.mapper.GNBDUModel;
+import org.onap.ransim.rest.web.mapper.NRCellDUModel;
+import org.onap.ransim.rest.web.mapper.NSSAIData;
+import org.onap.ransim.rest.web.mapper.PLMNInfoModel;
+import org.onap.ransim.rest.xml.models.FileFooter;
+import org.onap.ransim.rest.xml.models.FileHeader;
+import org.onap.ransim.rest.xml.models.FileSender;
+import org.onap.ransim.rest.xml.models.GranularityPeriod;
+import org.onap.ransim.rest.xml.models.Job;
+import org.onap.ransim.rest.xml.models.ManagedElement;
+import org.onap.ransim.rest.xml.models.MeasCollec;
+import org.onap.ransim.rest.xml.models.MeasCollecEnd;
+import org.onap.ransim.rest.xml.models.MeasCollecFile;
+import org.onap.ransim.rest.xml.models.MeasData;
+import org.onap.ransim.rest.xml.models.MeasInfo;
+import org.onap.ransim.rest.xml.models.MeasType;
+import org.onap.ransim.rest.xml.models.MeasValue;
+import org.onap.ransim.rest.xml.models.ReportingPeriod;
+import org.onap.ransim.rest.xml.models.Result;
+import org.apache.log4j.Logger;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.core.ParameterizedTypeReference;
+import org.springframework.http.HttpEntity;
+import org.springframework.http.HttpHeaders;
+import org.springframework.http.HttpMethod;
+import org.springframework.http.HttpStatus;
+import org.springframework.http.MediaType;
+import org.springframework.http.ResponseEntity;
+import org.springframework.stereotype.Service;
+import org.springframework.web.client.RestTemplate;
+
+@Service
+public class SlicingPMDataGenerator {
+
+ static Logger logger = Logger.getLogger(SlicingPMDataGenerator.class.getName());
+
+ @Autowired
+ RANSliceConfigService ranSliceConfigService;
+
+ double ricId11MaxVariation = 0.8;
+ double ricId22MaxVariation = 0.2;
+
+ /**
+ * Generates closed loop PM data for all DU functions Generates PRBs for DUs in
+ * the ratio of 80:20 for the same nssai in different RICs
+ *
+ * @throws RansimException
+ */
+ public void generateClosedLoopPmData(long startTime) {
+ try{
+ String requestUrl = "http://" + "localhost" + ":" + "8081" + "/ransim/api/ransim-db/v4/du-list";
+ List<GNBDUModel> duList = sendGetRequestToransimDb(requestUrl).getBody();;
+NSSAIConfig nSSAIConfig = new NSSAIConfig();
+nSSAIConfig.setdLThptPerSlice(27);
+nSSAIConfig.setuLThptPerSlice(30);
+nSSAIConfig.setMaxNumberOfConns(3000);
+
+NSSAIData nSSAIData = new NSSAIData();
+nSSAIData.setsNSSAI("001-010000");
+nSSAIData.setStatus("ACTIVE");
+nSSAIData.setGlobalSubscriberId("Customer-001");
+nSSAIData.setSubscriptionServiceType("Premium");
+nSSAIData.setConfigData(nSSAIConfig);
+NSSAIData nSSAIData2 = new NSSAIData();
+nSSAIData2.setsNSSAI("001-010001");
+nSSAIData2.setStatus("ACTIVE");
+nSSAIData2.setGlobalSubscriberId("Customer-001");
+nSSAIData2.setSubscriptionServiceType("Premium");
+nSSAIData2.setConfigData(nSSAIConfig);
+
+PLMNInfoModel pLMNInfoModel1 = new PLMNInfoModel();
+pLMNInfoModel1.setpLMNId("310-410 ");
+pLMNInfoModel1.setsNSSAI(nSSAIData);
+PLMNInfoModel pLMNInfoModel2 = new PLMNInfoModel();
+pLMNInfoModel2.setpLMNId("310-411 ");
+pLMNInfoModel2.setsNSSAI(nSSAIData2);
+
+List<PLMNInfoModel> myPLMNInfoModelList = new ArrayList<PLMNInfoModel>();
+myPLMNInfoModelList.add(pLMNInfoModel1);
+myPLMNInfoModelList.add(pLMNInfoModel2);
+
+
+ for (GNBDUModel du : duList) {
+ List<NRCellDUModel> duCellList = du.getCellDUList();
+ for (NRCellDUModel cell : duCellList ) {
+ cell.setpLMNInfoList(myPLMNInfoModelList);
+}
+}
+
+duList.forEach(x->logger.debug("DU : " + x));
+ for (GNBDUModel du : duList) {
+ logger.info("Generating PM data for DU : " + du.getgNBDUName()+ " Id :" + du.getgNBDUId());
+
+ Map<String, Integer > myactiveNssai = new HashMap<>();
+Map<String, NSSAIConfig> activeNssaiDetails = new HashMap<String, NSSAIConfig>();
+ List<NRCellDUModel> duCellList = du.getCellDUList();
+logger.debug("duCellList.size : " + duCellList.size());
+ int ricId = du.getNearRTRICId();
+logger.debug("RIC ID : " + ricId);
+ List<PLMNInfoModel> plmnInfoList = new ArrayList<>();
+ duCellList.forEach(cell -> plmnInfoList.addAll(cell.getpLMNInfoList()));
+ List<NSSAIData> nssaiData = new ArrayList<>();
+ plmnInfoList.forEach(plmnInfo -> nssaiData.add(plmnInfo.getsNSSAI()));
+ nssaiData.stream().filter(nssai -> nssai.getStatus().equalsIgnoreCase("active"))
+ .forEach(x -> activeNssaiDetails.put(x.getsNSSAI(), x.getConfigData()));
+logger.debug("Goin to produceMeasurementCollectionFile");
+
+ for (NRCellDUModel cell : duCellList ) {
+ nssaiData.stream().filter(nssai -> nssai.getStatus().equalsIgnoreCase("active"))
+ .forEach(x -> myactiveNssai.put(x.getsNSSAI(), cell.getCellLocalId()));
+ }
+logger.debug("myactiveNssai.size : " + myactiveNssai.size());
+ produceMeasurementCollectionFile(du, activeNssaiDetails, duCellList, ricId);
+ logger.info("PM data generated for DU : "+ du.getgNBDUName() + " Id: " + du.getgNBDUId());
+ }
+}catch(RansimException e){
+ logger.debug("ERROR in closed lopp PM data generation : ");
+logger.debug(e);
+ } catch(Exception er){
+logger.debug(er);
+ }
+}
+ private void produceMeasurementCollectionFile(GNBDUModel du, Map<String, NSSAIConfig> activeNssaiDetails,
+ List<NRCellDUModel> duCellList, int ricId) throws RansimException {
+logger.debug("produceMeasurementCollectionFile");
+ LocalDateTime beginTime = LocalDateTime.now();
+ String beginTimeString = beginTime.toString();
+ MeasCollec measCollec = new MeasCollec(beginTimeString);
+ FileSender fileSender = new FileSender(du.getgNBDUName());
+ FileHeader fileHeader = new FileHeader("Prefix", "Acme Ltd", "32.435 V10.0", measCollec, fileSender);
+ Random r = new Random();
+ int jobId = r.nextInt((9999 - 1000) + 1) + 1000;
+ Job job = new Job(String.valueOf(jobId));
+ ReportingPeriod reportingPeriod = new ReportingPeriod("PT900S");
+
+ List<MeasType> measTypeList = setMeasurementTypes(activeNssaiDetails);
+ List<MeasValue> measValueList = setMeasurementValues(duCellList,getMaxVariation(ricId));
+
+ ManagedElement managedElement = new ManagedElement("r0.1", du.getgNBDUName());
+ LocalDateTime grabularityEndTime = LocalDateTime.now();
+ String grabularityEndTimeString = grabularityEndTime.toString();
+ GranularityPeriod granularityPeriod = new GranularityPeriod(grabularityEndTimeString, "PT900S");
+ MeasInfo measInfo = new MeasInfo("measInfoIsVal", job, granularityPeriod, reportingPeriod, measTypeList,
+ measValueList);
+ List<MeasInfo> measInfoList = new ArrayList<MeasInfo>();
+ measInfoList.add(measInfo);
+ MeasData measData = new MeasData(managedElement, measInfoList);
+ List<MeasData> measDataList = new ArrayList<MeasData>();
+ measDataList.add(measData);
+ LocalDateTime endTime = LocalDateTime.now();
+ String endTimeString = endTime.toString();
+ MeasCollecEnd measCollecEnd = new MeasCollecEnd(endTimeString);
+ FileFooter fileFooter = new FileFooter(measCollecEnd);
+ MeasCollecFile measCollecFile = new MeasCollecFile(fileHeader, measDataList, fileFooter,
+ "http://www.3gpp.org/ftp/specs/archive/32_series/32.435#measCollec");
+
+ JAXBContext jaxbContext;
+ try {
+ jaxbContext = JAXBContext.newInstance(MeasCollecFile.class);
+ Marshaller marshaller = jaxbContext.createMarshaller();
+
+ marshaller.setProperty("jaxb.encoding", "UTF-8");
+ marshaller.setProperty(Marshaller.JAXB_FRAGMENT, true);
+ByteArrayOutputStream baos = new ByteArrayOutputStream();
+ XMLStreamWriter xmlStreamWriter = XMLOutputFactory.newFactory().createXMLStreamWriter(
+ baos, (String) marshaller.getProperty(Marshaller.JAXB_ENCODING));
+ xmlStreamWriter.writeStartDocument(
+ (String) marshaller.getProperty(Marshaller.JAXB_ENCODING), "1.0");
+
+
+ marshaller.setProperty(Marshaller.JAXB_FORMATTED_OUTPUT, true);
+ marshaller.setProperty("com.sun.xml.bind.xmlHeaders",
+ "<?xml version=\"1.0\" encoding=\"UTF-8\"?>");
+ String startDate = beginTimeString.replace(':', '-');
+ String endDate = endTimeString.replace(':', '-');
+ String fileName = "./" + "A" + startDate + "-" + endDate + "-" + String.valueOf(jobId) + "-" + du.getgNBDUName()
+ + ".xml";
+logger.debug("Craeting file");
+ marshaller.marshal(measCollecFile, new File("/tmp/ransim-install/ClosedLoopData/" + fileName));
+ marshaller.marshal(measCollecFile, System.out);
+ marshaller.marshal(measCollecFile, xmlStreamWriter);
+ } catch (JAXBException e) {
+ throw new RansimException(e);
+ }
+catch(Exception er){
+logger.debug(er);
+ }
+
+ logger.info("measCollec: " + measCollecFile.toString());
+ }
+
+ private List<MeasValue> setMeasurementValues(List<NRCellDUModel> duCellList, double ricIdVariation) {
+logger.debug("setMeasurementValues");
+ List<MeasValue> measValueList = new ArrayList<MeasValue>();
+ duCellList.forEach(cell -> {
+ int pvalue = 1;
+ int prbs = cell.getPrbs();
+ int prbsUsedDl = (int) (Math.random() * ricIdVariation * prbs);
+ int prbsUsedUl = (int) (Math.random() * ricIdVariation * prbs);
+ int prbsUsedDl1 = (int) (Math.random() * ricIdVariation * prbs);
+ int prbsUsedUl2 = (int) (Math.random() * ricIdVariation * prbs);
+ List<Result> resultList = new ArrayList<>();
+ Result result1 = new Result(pvalue++, prbsUsedDl);
+ Result result2 = new Result(pvalue++, prbsUsedUl);
+ Result result3 = new Result(pvalue++, prbsUsedDl1);
+ Result result4 = new Result(pvalue++, prbsUsedUl2);
+
+ resultList.add(result1);
+ resultList.add(result2);
+ resultList.add(result3);
+ resultList.add(result4);
+ MeasValue measValue = new MeasValue(cell.getCellLocalId(), resultList, false);
+ measValueList.add(measValue);
+
+ });
+ return measValueList;
+ }
+
+ private double getMaxVariation(int ricId) throws RansimException {
+ switch (ricId) {
+ case 11:
+ // ricId11MaxVariation =
+ // Double.parseDouble(System.getProperty("RIC_11_VARIATION"));
+ return ricId11MaxVariation;
+ case 22:
+ return ricId22MaxVariation;
+ default:
+ throw new RansimException("Invalid RIC ID : valid Ids : [11,22] ");
+ }
+ }
+
+ private List<MeasType> setMeasurementTypes(Map<String, NSSAIConfig> activeNssaiDetails) {
+ List<MeasType> measTypeList = new ArrayList<MeasType>();
+ AtomicInteger pValue = new AtomicInteger(1);
+ activeNssaiDetails.forEach((nssai, configData) -> {
+ MeasType mesType1 = new MeasType("SM.PrbUsedDl." + nssai, pValue.getAndIncrement());
+ MeasType mesType2 = new MeasType("SM.PrbUsedUl." + nssai, pValue.getAndIncrement());
+ measTypeList.add(mesType1);
+ measTypeList.add(mesType2);
+ });
+ return measTypeList;
+ }
+
+ public static <T> ResponseEntity<List<GNBDUModel>> sendGetRequestToransimDb(String requestUrl) {
+ HttpHeaders headers = new HttpHeaders();
+ logger.info("sending request to ransimdb : " + requestUrl);
+ headers.setAccept(Collections.singletonList(MediaType.APPLICATION_JSON));
+ HttpEntity<Void> requestEntity = new HttpEntity<>(headers);
+ try {
+ RestTemplate restTemplate = new RestTemplate();
+ return restTemplate.exchange(requestUrl, HttpMethod.GET, requestEntity,
+ new ParameterizedTypeReference<List<GNBDUModel>>() {
+ });
+ } catch (Exception e) {
+ return new ResponseEntity<>(HttpStatus.NOT_FOUND);
+ }
+ }
+}
+
diff --git a/ransim/ransimctrlr/RANSIM-CTRLR/src/main/java/org/onap/ransim/rest/client/RestClient.java b/ransim/ransimctrlr/RANSIM-CTRLR/src/main/java/org/onap/ransim/rest/client/RestClient.java
index 9e56045..cee94df 100644
--- a/ransim/ransimctrlr/RANSIM-CTRLR/src/main/java/org/onap/ransim/rest/client/RestClient.java
+++ b/ransim/ransimctrlr/RANSIM-CTRLR/src/main/java/org/onap/ransim/rest/client/RestClient.java
@@ -26,16 +26,81 @@ import java.util.Map;
import org.apache.log4j.Logger;
import org.eclipse.persistence.internal.oxm.conversion.Base64;
-import org.onap.ransim.rest.api.controller.RansimControllerServices;
import org.springframework.http.HttpEntity;
import org.springframework.http.HttpHeaders;
import org.springframework.http.HttpMethod;
import org.springframework.http.ResponseEntity;
import org.springframework.web.client.RestTemplate;
+import java.io.BufferedReader;
+import java.io.InputStream;
+import java.io.InputStreamReader;
+import java.io.OutputStreamWriter;
+import javax.net.ssl.HttpsURLConnection;
+import java.net.URL;
+import javax.net.ssl.HostnameVerifier;
+import javax.net.ssl.SSLSession;
+import org.slf4j.LoggerFactory;
+
+import java.security.KeyManagementException;
+import java.security.NoSuchAlgorithmException;
+import java.security.SecureRandom;
+import java.security.cert.X509Certificate;
+import javax.net.ssl.SSLContext;
+import javax.net.ssl.TrustManager;
+import javax.net.ssl.X509TrustManager;
+import javax.net.ssl.*;
+import java.io.*;
+import java.security.KeyStore;
+import java.security.MessageDigest;
+import java.security.cert.CertificateException;
+import org.apache.http.client.HttpClient;
+import org.springframework.http.client.HttpComponentsClientHttpRequestFactory;
+import org.apache.http.client.HttpClient;
+import org.apache.http.conn.ssl.NoopHostnameVerifier;
+import org.apache.http.conn.ssl.SSLConnectionSocketFactory;
+import org.apache.http.conn.ssl.SSLContextBuilder;
+import org.apache.http.conn.ssl.TrustSelfSignedStrategy;
+import org.apache.http.impl.client.HttpClients;
+import org.springframework.http.client.ClientHttpRequestFactory;
+import org.springframework.http.client.HttpComponentsClientHttpRequestFactory;
+import org.apache.http.impl.client.HttpClientBuilder;
+
public class RestClient {
- static Logger log = Logger.getLogger(RansimControllerServices.class.getName());
+private static class NullHostnameVerifier implements HostnameVerifier {
+ public boolean verify(String hostname, SSLSession session) {
+ return true;
+ }
+ }
+ private static class SavingTrustManager implements X509TrustManager {
+
+ private final X509TrustManager tm;
+ private X509Certificate[] chain;
+
+ SavingTrustManager(X509TrustManager tm) {
+ this.tm = tm;
+ }
+
+ public X509Certificate[] getAcceptedIssuers() {
+
+ return new X509Certificate[0];
+
+ }
+
+ public void checkClientTrusted(X509Certificate[] chain, String authType)
+ throws CertificateException {
+ throw new UnsupportedOperationException();
+ }
+
+ public void checkServerTrusted(X509Certificate[] chain, String authType)
+ throws CertificateException {
+ this.chain = chain;
+ tm.checkServerTrusted(chain, authType);
+ }
+ }
+
+ static Logger log = Logger.getLogger(RestClient.class.getName());
HttpHeaders createHeaders(String username, String password) {
return new HttpHeaders() {
@@ -70,26 +135,112 @@ public class RestClient {
* agent password
* @return returns the message to be passed
*/
- public String sendMountRequestToSdnr(String serverId, String ip, int port, String agentIp, String agentPort,
+
+ public String sendMountRequestToSdnr(String serverId, String ip, int port, String agentIp, String agentPort,
String agentUsername, String agentPassword) {
+
+
+ ResponseEntity<String> result=null;
+ try{
String requestBody = "<node xmlns=\"urn:TBD:params:xml:ns:yang:network-topology\"> <node-id> " + serverId + " </node-id> <username xmlns=\"urn:opendaylight:netconf-node-topology\">admin</username> <password xmlns=\"urn:opendaylight:netconf-node-topology\">admin</password> <host xmlns=\"urn:opendaylight:netconf-node-topology\">" + agentIp + "</host> <schema-cache-directory xmlns=\"urn:opendaylight:netconf-node-topology\">" + serverId + "</schema-cache-directory> <port xmlns=\"urn:opendaylight:netconf-node-topology\">" + agentPort + "</port> <tcp-only xmlns=\"urn:opendaylight:netconf-node-topology\">false</tcp-only> <schemaless xmlns=\"urn:opendaylight:netconf-node-topology\">false</schemaless> <max-connection-attempts xmlns=\"urn:opendaylight:netconf-node-topology\">0</max-connection-attempts> <connection-timeout-millis xmlns=\"urn:opendaylight:netconf-node-topology\">20000</connection-timeout-millis> <default-request-timeout-millis xmlns=\"urn:opendaylight:netconf-node-topology\">60000</default-request-timeout-millis> <sleep-factor xmlns=\"urn:opendaylight:netconf-node-topology\">1.1</sleep-factor> <between-attempts-timeout-millis xmlns=\"urn:opendaylight:netconf-node-topology\">2000</between-attempts-timeout-millis> <reconnect-on-changed-schema xmlns=\"urn:opendaylight:netconf-node-topology\">false</reconnect-on-changed-schema> <keepalive-delay xmlns=\"urn:opendaylight:netconf-node-topology\">60</keepalive-delay> <concurrent-rpc-limit xmlns=\"urn:opendaylight:netconf-node-topology\">0</concurrent-rpc-limit> <actor-response-wait-time xmlns=\"urn:opendaylight:netconf-node-topology\">60</actor-response-wait-time></node>";
- HttpHeaders headers = createHeaders(agentUsername, agentPassword);
+
+
+ String response = "";
+ HttpsURLConnection connection = null;
+ BufferedReader br = null;
+ log.info("Change in http to https");
+ char[] passphrase;
+ String p ="changeit";
+ passphrase = p.toCharArray();
+ File file = new File("jssecacerts");
+ if (file.isFile() == false) {
+ char SEP = File.separatorChar;
+ File dir = new File( SEP
+ + "tmp" + SEP +"ransim-install"+ SEP + "config");
+ file = new File(dir, "jssecacerts");
+ }
+ log.info("Loading new KeyStores" + file + "...");
+ InputStream in = new FileInputStream(file);
+ KeyStore ks = KeyStore.getInstance(KeyStore.getDefaultType());
+ ks.load(in, passphrase);
+ in.close();
+ SSLConnectionSocketFactory socketFactory = new SSLConnectionSocketFactory(
+ new SSLContextBuilder()
+ .loadTrustMaterial(null, new TrustSelfSignedStrategy())
+ .loadKeyMaterial(ks, passphrase)
+ .build(),
+ NoopHostnameVerifier.INSTANCE);
+
+ HttpClient httpClient = HttpClients.custom().setSSLSocketFactory(
+ socketFactory).build();
+
+ ClientHttpRequestFactory requestFactory = new HttpComponentsClientHttpRequestFactory(
+ httpClient);
+
+ SSLContext context = SSLContext.getInstance("TLS");
+ TrustManagerFactory tmf =
+ TrustManagerFactory.getInstance(TrustManagerFactory.getDefaultAlgorithm());
+ tmf.init(ks);
+ X509TrustManager defaultTrustManager = (X509TrustManager) tmf.getTrustManagers()[0];
+ SavingTrustManager tm = new SavingTrustManager(defaultTrustManager);
+ context.init(null, new TrustManager[]{tm}, null);
+
+ SSLContext.setDefault(context);
+ SSLSocketFactory factory = context.getSocketFactory();
+
+ log.info("Using Authorization");
+
+ SSLSocket socket = (SSLSocket) factory.createSocket(ip,port);
+ socket.setSoTimeout(10000);
+
+ try{
+ socket.startHandshake();
+ }
+ catch (SSLException e) {
+
+ log.error("Exc insocket handshake", e);
+
+ }
+
+ log.info("Started SSL handshake without hostname verifier...");
+
+ RestTemplate restTemplate = new RestTemplate(requestFactory);
+ HttpClientBuilder httpClientBuilder = HttpClients.custom()
+ .setSSLContext(SSLContext.getDefault())
+ .setSSLHostnameVerifier(NoopHostnameVerifier.INSTANCE)
+ .useSystemProperties();
+
+ restTemplate.setRequestFactory(new HttpComponentsClientHttpRequestFactory(httpClientBuilder.build()));
+
+
+ HttpHeaders headers = createHeaders(agentUsername, agentPassword);
log.info("request : " + requestBody);
log.info("headers : " + headers);
for (Map.Entry<String, List<String>> entry : headers.entrySet()) {
log.info("Key:" + entry.getKey() + " , Value:" + entry.getValue());
}
- RestTemplate restTemplate = new RestTemplate();
- String url = "http://" + ip + ":" + port
+ String url = "https://" + ip + ":" + port
+ "/restconf/config/network-topology:network-topology/topology/topology-netconf/node/" + serverId;
+
HttpEntity<String> entity = new HttpEntity<String>(requestBody, headers);
- ResponseEntity<String> result = restTemplate.exchange(url, HttpMethod.PUT, entity, String.class);
+ result = restTemplate.exchange(url, HttpMethod.PUT, entity, String.class);
- log.info("request sent, result: " + result);
- return result.toString();
+ log.info("Request sent, result: " + result);
+ socket.close();
+ }
+ catch (SSLException e) {
+ System.out.println();
+ e.printStackTrace(System.out);
+ }
+
+ catch (Exception e) {
+
+ log.error("Exc in post {}", e);
+ }
+ return result.toString();
}
/**
diff --git a/ransim/ransimctrlr/RANSIM-CTRLR/src/main/java/org/onap/ransim/rest/config/RansimRestConfig.java b/ransim/ransimctrlr/RANSIM-CTRLR/src/main/java/org/onap/ransim/rest/config/RansimRestConfig.java
index 6e57945..aafb0b3 100644
--- a/ransim/ransimctrlr/RANSIM-CTRLR/src/main/java/org/onap/ransim/rest/config/RansimRestConfig.java
+++ b/ransim/ransimctrlr/RANSIM-CTRLR/src/main/java/org/onap/ransim/rest/config/RansimRestConfig.java
@@ -27,12 +27,10 @@ import java.util.Properties;
import javax.annotation.PostConstruct;
import javax.servlet.MultipartConfigElement;
+import org.apache.log4j.Logger;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.ComponentScan;
import org.springframework.context.annotation.Configuration;
-import org.springframework.web.servlet.config.annotation.EnableWebMvc;
-import org.springframework.web.servlet.config.annotation.ResourceHandlerRegistry;
-import org.springframework.web.servlet.config.annotation.WebMvcConfigurerAdapter;
import springfox.documentation.builders.ApiInfoBuilder;
import springfox.documentation.builders.PathSelectors;
@@ -43,57 +41,51 @@ import springfox.documentation.spring.web.plugins.Docket;
import springfox.documentation.swagger2.annotations.EnableSwagger2;
@Configuration
-@EnableWebMvc
@EnableSwagger2
@ComponentScan(basePackages = { "org.onap.*", "com.*" })
-public class RansimRestConfig extends WebMvcConfigurerAdapter {
+public class RansimRestConfig {
+ private static final Logger log = Logger.getLogger(RansimRestConfig.class);
- /**
- * init.
- */
- @PostConstruct
- public void init() {
- Properties prop = new Properties();
- try (InputStream input = new FileInputStream("rs.properties")) {
- // load a properties file
- prop.load(input);
- } catch (Exception e) {
- System.out.println("Exception Occured while loading properties file" + e);
- }
- }
+ /**
+ * init.
+ */
+ @PostConstruct
+ public void init() {
+ Properties prop = new Properties();
+ try (InputStream input = new FileInputStream("rs.properties")) {
+ // load a properties file
+ prop.load(input);
+ } catch (Exception e) {
+ log.error("Exception Occured while loading properties file : {} ", e);
+ }
+ }
- @Override
- public void addResourceHandlers(ResourceHandlerRegistry registry) {
- registry.addResourceHandler("swagger-ui.html").addResourceLocations("classpath:/META-INF/resources/");
- registry.addResourceHandler("/webjars/**").addResourceLocations("classpath:/META-INF/resources/webjars/");
- }
+ private ApiInfo apiInfo() {
+ return new ApiInfoBuilder().title("Ran Simulator Controller REST API")
+ .description("This API helps to make queries against Ran Simulator Controller").version("3.0").build();
+ }
- private ApiInfo apiInfo() {
- return new ApiInfoBuilder().title("Ran Simulator Controller REST API")
- .description("This API helps to make queries against Ran Simulator Controller").version("3.0").build();
- }
+ /**
+ * ransimappApi .
+ *
+ * @return returns api info
+ */
+ @Bean
+ public Docket ransimappApi() {
+ return new Docket(DocumentationType.SWAGGER_2).select()
+ .apis(RequestHandlerSelectors.basePackage("org.onap.ransim.rest.api")).paths(PathSelectors.any())
+ .build().apiInfo(apiInfo());
+ }
- /**
- * ransimappApi .
- *
- * @return returns api info
- */
- @Bean
- public Docket ransimappApi() {
- return new Docket(DocumentationType.SWAGGER_2).select()
- .apis(RequestHandlerSelectors.basePackage("org.onap.ransim.rest.api")).paths(PathSelectors.any())
- .build().apiInfo(apiInfo());
- }
+ /**
+ * MultipartConfigElement.
+ *
+ * @return returns MultipartConfigElement
+ */
+ @Bean
+ public MultipartConfigElement multipartConfigElement() {
+ String location = System.getProperty("java.io.tmpdir");
+ return new MultipartConfigElement(location);
+ }
- /**
- * MultipartConfigElement.
- *
- * @return returns MultipartConfigElement
- */
- @Bean
- public MultipartConfigElement multipartConfigElement() {
- String location = System.getProperty("java.io.tmpdir");
- MultipartConfigElement mp = new MultipartConfigElement(location);
- return mp;
- }
}
diff --git a/ransim/ransimctrlr/RANSIM-CTRLR/src/main/java/org/onap/ransim/rest/config/RansimRestInitializer.java b/ransim/ransimctrlr/RANSIM-CTRLR/src/main/java/org/onap/ransim/rest/config/RansimRestInitializer.java
deleted file mode 100644
index 427e871..0000000
--- a/ransim/ransimctrlr/RANSIM-CTRLR/src/main/java/org/onap/ransim/rest/config/RansimRestInitializer.java
+++ /dev/null
@@ -1,49 +0,0 @@
-/*-
- * ============LICENSE_START=======================================================
- * Ran Simulator Controller
- * ================================================================================
- * Copyright (C) 2020 Wipro Limited.
- * ================================================================================
- * Licensed 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
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License 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.onap.ransim.rest.config;
-
-import javax.servlet.MultipartConfigElement;
-import javax.servlet.ServletContext;
-import javax.servlet.ServletException;
-import javax.servlet.ServletRegistration;
-
-import org.springframework.web.WebApplicationInitializer;
-import org.springframework.web.context.support.AnnotationConfigWebApplicationContext;
-import org.springframework.web.servlet.DispatcherServlet;
-
-/**
- * REST API configuration initialization.
- *
- * @version 0.1
- */
-public class RansimRestInitializer implements WebApplicationInitializer {
- @Override
- public void onStartup(ServletContext container) throws ServletException {
- AnnotationConfigWebApplicationContext ctx = new AnnotationConfigWebApplicationContext();
- ctx.register(RansimRestConfig.class);
- ctx.setServletContext(container);
- ctx.refresh();
- ServletRegistration.Dynamic servlet = container.addServlet("dispatcher", new DispatcherServlet(ctx));
- servlet.setLoadOnStartup(1);
- servlet.addMapping("/api/*");
- servlet.setMultipartConfig(ctx.getBean(MultipartConfigElement.class));
- }
-}
diff --git a/ransim/ransimctrlr/RANSIM-CTRLR/src/main/java/org/onap/ransim/rest/web/mapper/CellData.java b/ransim/ransimctrlr/RANSIM-CTRLR/src/main/java/org/onap/ransim/rest/web/mapper/CellData.java
new file mode 100644
index 0000000..5f42cb6
--- /dev/null
+++ b/ransim/ransimctrlr/RANSIM-CTRLR/src/main/java/org/onap/ransim/rest/web/mapper/CellData.java
@@ -0,0 +1,101 @@
+package org.onap.ransim.rest.web.mapper;
+
+/**
+ *
+ * Request mapper class
+ *
+ * @author Devendra Chauhan
+ *
+ */
+public class CellData {
+ private String networkId;
+ private String nodeId;
+ private Long physicalCellId;
+ private String pnfId;
+ private String sectorNumber;
+ private String latitude;
+ private String longitude;
+ private String notes;
+
+ public CellData() {
+
+ }
+
+ public CellData(String networkId, String nodeId, Long physicalCellId, String pnfId, String sectorNumber,
+ String latitude, String longitude, String notes) {
+ super();
+ this.networkId = networkId;
+ this.nodeId = nodeId;
+ this.physicalCellId = physicalCellId;
+ this.pnfId = pnfId;
+ this.sectorNumber = sectorNumber;
+ this.latitude = latitude;
+ this.longitude = longitude;
+ this.notes = notes;
+ }
+
+ public String getNetworkId() {
+ return networkId;
+ }
+
+ public void setNetworkId(String networkId) {
+ this.networkId = networkId;
+ }
+
+ public String getNodeId() {
+ return nodeId;
+ }
+
+ public void setNodeId(String nodeId) {
+ this.nodeId = nodeId;
+ }
+
+ public Long getPhysicalCellId() {
+ return physicalCellId;
+ }
+
+ public void setPhysicalCellId(Long physicalCellId) {
+ this.physicalCellId = physicalCellId;
+ }
+
+ public String getPnfId() {
+ return pnfId;
+ }
+
+ public void setPnfId(String pnfId) {
+ this.pnfId = pnfId;
+ }
+
+ public String getSectorNumber() {
+ return sectorNumber;
+ }
+
+ public void setSectorNumber(String sectorNumber) {
+ this.sectorNumber = sectorNumber;
+ }
+
+ public String getLatitude() {
+ return latitude;
+ }
+
+ public void setLatitude(String latitude) {
+ this.latitude = latitude;
+ }
+
+ public String getLongitude() {
+ return longitude;
+ }
+
+ public void setLongitude(String longitude) {
+ this.longitude = longitude;
+ }
+
+ public String getNotes() {
+ return notes;
+ }
+
+ public void setNotes(String notes) {
+ this.notes = notes;
+ }
+
+}
diff --git a/ransim/ransimctrlr/RANSIM-CTRLR/src/main/java/org/onap/ransim/rest/web/mapper/CellInputPayload.java b/ransim/ransimctrlr/RANSIM-CTRLR/src/main/java/org/onap/ransim/rest/web/mapper/CellInputPayload.java
new file mode 100644
index 0000000..26c489f
--- /dev/null
+++ b/ransim/ransimctrlr/RANSIM-CTRLR/src/main/java/org/onap/ransim/rest/web/mapper/CellInputPayload.java
@@ -0,0 +1,24 @@
+package org.onap.ransim.rest.web.mapper;
+
+import java.util.List;
+
+/**
+ * Request Mapper Class for BulkUpoad
+ *
+ * @author Devendra Chauhan
+ *
+ */
+
+public class CellInputPayload {
+
+ List<CellObj> cellList;
+
+ public List<CellObj> getCellList() {
+ return cellList;
+ }
+
+ public void setCellList(List<CellObj> cellList) {
+ this.cellList = cellList;
+ }
+
+}
diff --git a/ransim/ransimctrlr/RANSIM-CTRLR/src/main/java/org/onap/ransim/rest/web/mapper/CellNbrInfoResponse.java b/ransim/ransimctrlr/RANSIM-CTRLR/src/main/java/org/onap/ransim/rest/web/mapper/CellNbrInfoResponse.java
new file mode 100644
index 0000000..0f6ef20
--- /dev/null
+++ b/ransim/ransimctrlr/RANSIM-CTRLR/src/main/java/org/onap/ransim/rest/web/mapper/CellNbrInfoResponse.java
@@ -0,0 +1,57 @@
+package org.onap.ransim.rest.web.mapper;
+
+import javax.persistence.Column;
+
+import com.fasterxml.jackson.annotation.JsonProperty;
+
+public class CellNbrInfoResponse {
+
+
+
+ @JsonProperty("cellId")
+ private String cellId;
+
+
+
+ @JsonProperty("targetCellId")
+ private String targetCellId;
+
+ private boolean ho;
+
+
+ public CellNbrInfoResponse(String cellId,String targetCellId,boolean ho) {
+ this.cellId = cellId;
+ this.targetCellId = targetCellId;
+ this.ho = ho;
+
+
+ }
+
+ public String getCellId() {
+ return cellId;
+ }
+
+ public void setCellId(String cellId) {
+ this.cellId = cellId;
+ }
+
+ public String getTargetCellId() {
+ return targetCellId;
+ }
+
+ public void setTargetCellId(String targetCellId) {
+ this.targetCellId = targetCellId;
+ }
+
+ public boolean isHo() {
+ return ho;
+ }
+
+ public void setHo(boolean ho) {
+ this.ho = ho;
+ }
+
+
+
+
+}
diff --git a/ransim/ransimctrlr/RANSIM-CTRLR/src/main/java/org/onap/ransim/rest/web/mapper/CellObj.java b/ransim/ransimctrlr/RANSIM-CTRLR/src/main/java/org/onap/ransim/rest/web/mapper/CellObj.java
new file mode 100644
index 0000000..f12ec6d
--- /dev/null
+++ b/ransim/ransimctrlr/RANSIM-CTRLR/src/main/java/org/onap/ransim/rest/web/mapper/CellObj.java
@@ -0,0 +1,33 @@
+package org.onap.ransim.rest.web.mapper;
+
+import java.util.List;
+
+import com.fasterxml.jackson.annotation.JsonProperty;
+/**
+ * Request mapper class
+ * @author Devendra
+ *
+ */
+
+public class CellObj {
+
+ @JsonProperty("Cell")
+ private CellData cell;
+
+ private List<String> neighbor;
+
+ public CellData getCell() {
+ return cell;
+ }
+ public void setCell(CellData cell) {
+ this.cell = cell;
+ }
+ public List<String> getNeighbor() {
+ return neighbor;
+ }
+ public void setNeighbor(List<String> neighbor) {
+ this.neighbor = neighbor;
+ }
+
+
+}
diff --git a/ransim/ransimctrlr/RANSIM-CTRLR/src/main/java/org/onap/ransim/rest/web/mapper/CellPciValueObj.java b/ransim/ransimctrlr/RANSIM-CTRLR/src/main/java/org/onap/ransim/rest/web/mapper/CellPciValueObj.java
new file mode 100644
index 0000000..32c2710
--- /dev/null
+++ b/ransim/ransimctrlr/RANSIM-CTRLR/src/main/java/org/onap/ransim/rest/web/mapper/CellPciValueObj.java
@@ -0,0 +1,33 @@
+package org.onap.ransim.rest.web.mapper;
+/**
+ * Request mapper Class
+ * @author Devendra Chauhan
+ *
+ */
+
+public class CellPciValueObj {
+
+ private String cellId;
+ private long pciValue;
+
+
+ public CellPciValueObj(String cellId, long pciValue) {
+ super();
+ this.cellId = cellId;
+ this.pciValue = pciValue;
+ }
+ public String getCellId() {
+ return cellId;
+ }
+ public void setCellId(String cellId) {
+ this.cellId = cellId;
+ }
+ public long getPciValue() {
+ return pciValue;
+ }
+ public void setPciValue(long pciValue) {
+ this.pciValue = pciValue;
+ }
+
+
+}
diff --git a/ransim/ransimctrlr/RANSIM-CTRLR/src/main/java/org/onap/ransim/rest/web/mapper/ErrorData.java b/ransim/ransimctrlr/RANSIM-CTRLR/src/main/java/org/onap/ransim/rest/web/mapper/ErrorData.java
new file mode 100644
index 0000000..49b5979
--- /dev/null
+++ b/ransim/ransimctrlr/RANSIM-CTRLR/src/main/java/org/onap/ransim/rest/web/mapper/ErrorData.java
@@ -0,0 +1,30 @@
+package org.onap.ransim.rest.web.mapper;
+
+public enum ErrorData {
+ NO_DATA_FOUND("404", "No Data Found"),
+ DATA_NOT_STORED("500","Data not Saved"),
+ UNEXPECTED_ERROR("500","Exception Occured during the Operation");
+
+ private String errorCode;
+ private String errorMessage;
+ ErrorData(String errorCode, String errorMessage) {
+ this.errorCode=errorCode;
+ this.errorMessage = errorMessage;
+ }
+ public String getErrorCode() {
+ return errorCode;
+ }
+ public void setErrorCode(String errorCode) {
+ this.errorCode = errorCode;
+ }
+ public String getErrorMessage() {
+ return errorMessage;
+ }
+ public void setErrorMessage(String errorMessage) {
+ this.errorMessage = errorMessage;
+ }
+ @Override
+ public String toString() {
+ return "ErrorData [errorCode=" + errorCode + ", errorMessage=" + errorMessage + "]";
+ }
+}
diff --git a/ransim/ransimctrlr/RANSIM-CTRLR/src/main/java/org/onap/ransim/rest/web/mapper/GNBCUCPModel.java b/ransim/ransimctrlr/RANSIM-CTRLR/src/main/java/org/onap/ransim/rest/web/mapper/GNBCUCPModel.java
new file mode 100644
index 0000000..b7d8bde
--- /dev/null
+++ b/ransim/ransimctrlr/RANSIM-CTRLR/src/main/java/org/onap/ransim/rest/web/mapper/GNBCUCPModel.java
@@ -0,0 +1,62 @@
+package org.onap.ransim.rest.web.mapper;
+
+import java.util.List;
+
+public class GNBCUCPModel{
+ private String gNBCUName;
+ private Integer gNBId;
+ private Integer gNBIdLength;
+ private String pLMNId;
+ private String nFType;
+ private List<NRCellCUModel> cellCUList;
+ private Integer nearRTRICId;
+ public String getgNBCUName() {
+ return gNBCUName;
+ }
+ public void setgNBCUName(String gNBCUName) {
+ this.gNBCUName = gNBCUName;
+ }
+ public Integer getgNBId() {
+ return gNBId;
+ }
+ public void setgNBId(Integer gNBId) {
+ this.gNBId = gNBId;
+ }
+ public Integer getgNBIdLength() {
+ return gNBIdLength;
+ }
+ public void setgNBIdLength(Integer gNBIdLength) {
+ this.gNBIdLength = gNBIdLength;
+ }
+ public String getpLMNId() {
+ return pLMNId;
+ }
+ public void setpLMNId(String pLMNId) {
+ this.pLMNId = pLMNId;
+ }
+ public List<NRCellCUModel> getCellCUList() {
+ return cellCUList;
+ }
+ public void setCellCUList(List<NRCellCUModel> cellCUList) {
+ this.cellCUList = cellCUList;
+ }
+ public Integer getNearRTRICId() {
+ return nearRTRICId;
+ }
+ public void setNearRTRICId(Integer nearRTRICId) {
+ this.nearRTRICId = nearRTRICId;
+ }
+ public String getnFType() {
+ return nFType;
+ }
+ public void setnFType(String nFType) {
+ this.nFType = nFType;
+ }
+ @Override
+ public String toString() {
+ return "GNBCUCPModel [gNBCUName=" + gNBCUName + ", gNBId=" + gNBId + ", gNBIdLength=" + gNBIdLength
+ + ", pLMNId=" + pLMNId + ", nFType=" + nFType + ", cellCUList=" + cellCUList + ", nearRTRICId="
+ + nearRTRICId + "]";
+ }
+
+}
diff --git a/ransim/ransimctrlr/RANSIM-CTRLR/src/main/java/org/onap/ransim/rest/web/mapper/GNBCUUPModel.java b/ransim/ransimctrlr/RANSIM-CTRLR/src/main/java/org/onap/ransim/rest/web/mapper/GNBCUUPModel.java
new file mode 100644
index 0000000..46a3e7c
--- /dev/null
+++ b/ransim/ransimctrlr/RANSIM-CTRLR/src/main/java/org/onap/ransim/rest/web/mapper/GNBCUUPModel.java
@@ -0,0 +1,72 @@
+package org.onap.ransim.rest.web.mapper;
+
+import java.util.List;
+
+import org.onap.ransim.rest.api.models.NearRTRIC;
+import org.onap.ransim.rest.api.models.PLMNInfo;
+
+public class GNBCUUPModel{
+ private Integer gNBCUUPId;
+ private Integer gNBId;
+ private Integer gNBIdLength;
+ private List<PLMNInfoModel> pLMNInfoList;
+ private String resourceType;
+ private String metricKey;
+ private Integer metricValue;
+ private Integer nearRTRICId;
+ public Integer getgNBCUUPId() {
+ return gNBCUUPId;
+ }
+ public void setgNBCUUPId(Integer gNBCUUPId) {
+ this.gNBCUUPId = gNBCUUPId;
+ }
+ public Integer getgNBId() {
+ return gNBId;
+ }
+ public void setgNBId(Integer gNBId) {
+ this.gNBId = gNBId;
+ }
+ public Integer getgNBIdLength() {
+ return gNBIdLength;
+ }
+ public void setgNBIdLength(Integer gNBIdLength) {
+ this.gNBIdLength = gNBIdLength;
+ }
+ public String getResourceType() {
+ return resourceType;
+ }
+ public void setResourceType(String resourceType) {
+ this.resourceType = resourceType;
+ }
+ public String getMetricKey() {
+ return metricKey;
+ }
+ public void setMetricKey(String metricKey) {
+ this.metricKey = metricKey;
+ }
+ public Integer getMetricValue() {
+ return metricValue;
+ }
+ public void setMetricValue(Integer metricValue) {
+ this.metricValue = metricValue;
+ }
+ public List<PLMNInfoModel> getpLMNInfoList() {
+ return pLMNInfoList;
+ }
+ public void setpLMNInfoList(List<PLMNInfoModel> pLMNInfoList) {
+ this.pLMNInfoList = pLMNInfoList;
+ }
+ public Integer getNearRTRICId() {
+ return nearRTRICId;
+ }
+ public void setNearRTRICId(Integer nearRTRICId) {
+ this.nearRTRICId = nearRTRICId;
+ }
+ @Override
+ public String toString() {
+ return "GNBCUUPModel [gNBCUUPId=" + gNBCUUPId + ", gNBId=" + gNBId + ", gNBIdLength=" + gNBIdLength
+ + ", pLMNInfoList=" + pLMNInfoList + ", resourceType=" + resourceType + ", metricKey=" + metricKey
+ + ", metricValue=" + metricValue + ", nearRTRICId=" + nearRTRICId + "]";
+ }
+
+}
diff --git a/ransim/ransimctrlr/RANSIM-CTRLR/src/main/java/org/onap/ransim/rest/web/mapper/GNBDUModel.java b/ransim/ransimctrlr/RANSIM-CTRLR/src/main/java/org/onap/ransim/rest/web/mapper/GNBDUModel.java
new file mode 100644
index 0000000..095d109
--- /dev/null
+++ b/ransim/ransimctrlr/RANSIM-CTRLR/src/main/java/org/onap/ransim/rest/web/mapper/GNBDUModel.java
@@ -0,0 +1,70 @@
+package org.onap.ransim.rest.web.mapper;
+
+import java.util.List;
+
+public class GNBDUModel{
+ private Integer gNBDUId;
+ private Integer gNBId;
+ private Integer gNBIdLength;
+ private String gNBDUName;
+ private String pLMNId;
+ private String nFType;
+ private List<NRCellDUModel> cellDUList;
+ private Integer nearRTRICId;
+ public Integer getgNBDUId() {
+ return gNBDUId;
+ }
+ public void setgNBDUId(Integer gNBDUId) {
+ this.gNBDUId = gNBDUId;
+ }
+ public Integer getgNBId() {
+ return gNBId;
+ }
+ public void setgNBId(Integer gNBId) {
+ this.gNBId = gNBId;
+ }
+ public Integer getgNBIdLength() {
+ return gNBIdLength;
+ }
+ public void setgNBIdLength(Integer gNBIdLength) {
+ this.gNBIdLength = gNBIdLength;
+ }
+ public String getgNBDUName() {
+ return gNBDUName;
+ }
+ public void setgNBDUName(String gNBDUName) {
+ this.gNBDUName = gNBDUName;
+ }
+ public String getpLMNId() {
+ return pLMNId;
+ }
+ public void setpLMNId(String pLMNId) {
+ this.pLMNId = pLMNId;
+ }
+
+ public List<NRCellDUModel> getCellDUList() {
+ return cellDUList;
+ }
+ public void setCellDUList(List<NRCellDUModel> cellDUList) {
+ this.cellDUList = cellDUList;
+ }
+
+ public Integer getNearRTRICId() {
+ return nearRTRICId;
+ }
+ public void setNearRTRICId(Integer nearRTRICId) {
+ this.nearRTRICId = nearRTRICId;
+ }
+ public String getnFType() {
+ return nFType;
+ }
+ public void setnFType(String nFType) {
+ this.nFType = nFType;
+ }
+ @Override
+ public String toString() {
+ return "GNBDUModel [gNBDUId=" + gNBDUId + ", gNBId=" + gNBId + ", gNBIdLength=" + gNBIdLength + ", gNBDUName="
+ + gNBDUName + ", pLMNId=" + pLMNId + ", nFType=" + nFType + ", cellDUList=" + cellDUList
+ + ", nearRTRICId=" + nearRTRICId + "]";
+ }
+}
diff --git a/ransim/ransimctrlr/RANSIM-CTRLR/src/main/java/org/onap/ransim/rest/web/mapper/NRCellCUModel.java b/ransim/ransimctrlr/RANSIM-CTRLR/src/main/java/org/onap/ransim/rest/web/mapper/NRCellCUModel.java
new file mode 100644
index 0000000..25ebeb9
--- /dev/null
+++ b/ransim/ransimctrlr/RANSIM-CTRLR/src/main/java/org/onap/ransim/rest/web/mapper/NRCellCUModel.java
@@ -0,0 +1,32 @@
+package org.onap.ransim.rest.web.mapper;
+
+import java.util.List;
+
+public class NRCellCUModel{
+ private Integer cellLocalId;
+ private List<PLMNInfoModel> pLMNInfoList;
+ private String resourceType;
+ public Integer getCellLocalId() {
+ return cellLocalId;
+ }
+ public void setCellLocalId(Integer cellLocalId) {
+ this.cellLocalId = cellLocalId;
+ }
+ public List<PLMNInfoModel> getpLMNInfoList() {
+ return pLMNInfoList;
+ }
+ public void setpLMNInfoList(List<PLMNInfoModel> pLMNInfoList) {
+ this.pLMNInfoList = pLMNInfoList;
+ }
+ public String getResourceType() {
+ return resourceType;
+ }
+ public void setResourceType(String resourceType) {
+ this.resourceType = resourceType;
+ }
+ @Override
+ public String toString() {
+ return "NRCellCUModel [cellLocalId=" + cellLocalId + ", pLMNInfoList=" + pLMNInfoList + ", resourceType="
+ + resourceType + "]";
+ }
+}
diff --git a/ransim/ransimctrlr/RANSIM-CTRLR/src/main/java/org/onap/ransim/rest/web/mapper/NRCellDUModel.java b/ransim/ransimctrlr/RANSIM-CTRLR/src/main/java/org/onap/ransim/rest/web/mapper/NRCellDUModel.java
new file mode 100644
index 0000000..bc79608
--- /dev/null
+++ b/ransim/ransimctrlr/RANSIM-CTRLR/src/main/java/org/onap/ransim/rest/web/mapper/NRCellDUModel.java
@@ -0,0 +1,83 @@
+package org.onap.ransim.rest.web.mapper;
+
+import java.util.List;
+
+import javax.persistence.Column;
+
+public class NRCellDUModel{
+ private Integer cellLocalId;
+ private String operationalState;
+ private String administrativeState;
+ private String cellState;
+ private List<PLMNInfoModel> pLMNInfoList;
+ private Integer nRPCI;
+ private Integer nRTAC;
+ private String resourceType;
+ private Integer prbs;
+
+ public Integer getCellLocalId() {
+ return cellLocalId;
+ }
+ public void setCellLocalId(Integer cellLocalId) {
+ this.cellLocalId = cellLocalId;
+ }
+ public List<PLMNInfoModel> getpLMNInfoList() {
+ return pLMNInfoList;
+ }
+ public void setpLMNInfoList(List<PLMNInfoModel> pLMNInfoList) {
+ this.pLMNInfoList = pLMNInfoList;
+ }
+ public String getOperationalState() {
+ return operationalState;
+ }
+ public void setOperationalState(String operationalState) {
+ this.operationalState = operationalState;
+ }
+ public String getAdministrativeState() {
+ return administrativeState;
+ }
+ public void setAdministrativeState(String administrativeState) {
+ this.administrativeState = administrativeState;
+ }
+ public String getCellState() {
+ return cellState;
+ }
+ public void setCellState(String cellState) {
+ this.cellState = cellState;
+ }
+ public Integer getnRPCI() {
+ return nRPCI;
+ }
+ public void setnRPCI(Integer nRPCI) {
+ this.nRPCI = nRPCI;
+ }
+ public Integer getnRTAC() {
+ return nRTAC;
+ }
+ public void setnRTAC(Integer nRTAC) {
+ this.nRTAC = nRTAC;
+ }
+ public String getResourceType() {
+ return resourceType;
+ }
+ public void setResourceType(String resourceType) {
+ this.resourceType = resourceType;
+ }
+
+ public Integer getPrbs() {
+ return prbs;
+ }
+ public void setPrbs(Integer prbs) {
+ this.prbs = prbs;
+ }
+
+ @Override
+ public String toString() {
+ return "NRCellDUModel [cellLocalId=" + cellLocalId + ", operationalState=" + operationalState
+ + ", administrativeState=" + administrativeState + ", cellState=" + cellState + ", pLMNInfoList="
+ + pLMNInfoList + ", nRPCI=" + nRPCI + ", nRTAC=" + nRTAC + ", resourceType=" + resourceType + ", prbs="
+ + prbs + "]";
+ }
+
+
+ }
diff --git a/ransim/ransimctrlr/RANSIM-CTRLR/src/main/java/org/onap/ransim/rest/web/mapper/NSSAIConfigData.java b/ransim/ransimctrlr/RANSIM-CTRLR/src/main/java/org/onap/ransim/rest/web/mapper/NSSAIConfigData.java
new file mode 100644
index 0000000..f8e11d9
--- /dev/null
+++ b/ransim/ransimctrlr/RANSIM-CTRLR/src/main/java/org/onap/ransim/rest/web/mapper/NSSAIConfigData.java
@@ -0,0 +1,37 @@
+package org.onap.ransim.rest.web.mapper;
+
+public class NSSAIConfigData{
+ private Integer dLThptPerSlice;
+ private Integer uLThptPerSlice;
+ private Integer maxNumberOfConns;
+ private String lastUpdatedTS;
+ public Integer getdLThptPerSlice() {
+ return dLThptPerSlice;
+ }
+ public void setdLThptPerSlice(Integer dLThptPerSlice) {
+ this.dLThptPerSlice = dLThptPerSlice;
+ }
+ public Integer getuLThptPerSlice() {
+ return uLThptPerSlice;
+ }
+ public void setuLThptPerSlice(Integer uLThptPerSlice) {
+ this.uLThptPerSlice = uLThptPerSlice;
+ }
+ public Integer getMaxNumberOfConns() {
+ return maxNumberOfConns;
+ }
+ public void setMaxNumberOfConns(Integer maxNumberOfConns) {
+ this.maxNumberOfConns = maxNumberOfConns;
+ }
+ public String getLastUpdatedTS() {
+ return lastUpdatedTS;
+ }
+ public void setLastUpdatedTS(String lastUpdatedTS) {
+ this.lastUpdatedTS = lastUpdatedTS;
+ }
+ @Override
+ public String toString() {
+ return "NSSAIConfigData [dLThptPerSlice=" + dLThptPerSlice + ", uLThptPerSlice=" + uLThptPerSlice
+ + ", maxNumberOfConns=" + maxNumberOfConns + ", lastUpdatedTS=" + lastUpdatedTS + "]";
+ }
+} \ No newline at end of file
diff --git a/ransim/ransimctrlr/RANSIM-CTRLR/src/main/java/org/onap/ransim/rest/web/mapper/NSSAIData.java b/ransim/ransimctrlr/RANSIM-CTRLR/src/main/java/org/onap/ransim/rest/web/mapper/NSSAIData.java
new file mode 100644
index 0000000..a88beeb
--- /dev/null
+++ b/ransim/ransimctrlr/RANSIM-CTRLR/src/main/java/org/onap/ransim/rest/web/mapper/NSSAIData.java
@@ -0,0 +1,43 @@
+package org.onap.ransim.rest.web.mapper;
+
+
+import org.onap.ransim.rest.api.models.NSSAIConfig;
+
+public class NSSAIData{
+ private String sNSSAI;
+ private String status;
+ private String globalSubscriberId;
+ private String subscriptionServiceType;
+ //private Map<String, Integer> configData;
+ private NSSAIConfig configData;
+ public String getsNSSAI() {
+ return sNSSAI;
+ }
+ public void setsNSSAI(String sNSSAI) {
+ this.sNSSAI = sNSSAI;
+ }
+ public String getStatus() {
+ return status;
+ }
+ public void setStatus(String status) {
+ this.status = status;
+ }
+ public String getGlobalSubscriberId() {
+ return globalSubscriberId;
+ }
+ public void setGlobalSubscriberId(String globalSubscriberId) {
+ this.globalSubscriberId = globalSubscriberId;
+ }
+ public String getSubscriptionServiceType() {
+ return subscriptionServiceType;
+ }
+ public void setSubscriptionServiceType(String subscriptionServiceType) {
+ this.subscriptionServiceType = subscriptionServiceType;
+ }
+ public NSSAIConfig getConfigData() {
+ return configData;
+ }
+ public void setConfigData(NSSAIConfig configData) {
+ this.configData = configData;
+ }
+} \ No newline at end of file
diff --git a/ransim/ransimctrlr/RANSIM-CTRLR/src/main/java/org/onap/ransim/rest/web/mapper/NbrCellsNetwork.java b/ransim/ransimctrlr/RANSIM-CTRLR/src/main/java/org/onap/ransim/rest/web/mapper/NbrCellsNetwork.java
new file mode 100644
index 0000000..87b8cd3
--- /dev/null
+++ b/ransim/ransimctrlr/RANSIM-CTRLR/src/main/java/org/onap/ransim/rest/web/mapper/NbrCellsNetwork.java
@@ -0,0 +1,38 @@
+package org.onap.ransim.rest.web.mapper;
+
+import java.util.List;
+/**
+ * Request mapper Class for NbrCellNetwork
+ * @author Devendra Chauhan
+ *
+ */
+public class NbrCellsNetwork {
+ //param
+
+ private String targetCellId;
+ private long pciValue;
+ private boolean ho;
+
+
+ public String getTargetCellId() {
+ return targetCellId;
+ }
+ public void setTargetCellId(String targetCellId) {
+ this.targetCellId = targetCellId;
+ }
+ public long getPciValue() {
+ return pciValue;
+ }
+ public void setPciValue(long pciValue) {
+ this.pciValue = pciValue;
+ }
+ public boolean isHo() {
+ return ho;
+ }
+ public void setHo(boolean ho) {
+ this.ho = ho;
+ }
+
+
+
+}
diff --git a/ransim/ransimctrlr/RANSIM-CTRLR/src/main/java/org/onap/ransim/rest/web/mapper/NbrCellsNetworkResponse.java b/ransim/ransimctrlr/RANSIM-CTRLR/src/main/java/org/onap/ransim/rest/web/mapper/NbrCellsNetworkResponse.java
new file mode 100644
index 0000000..20697c9
--- /dev/null
+++ b/ransim/ransimctrlr/RANSIM-CTRLR/src/main/java/org/onap/ransim/rest/web/mapper/NbrCellsNetworkResponse.java
@@ -0,0 +1,41 @@
+package org.onap.ransim.rest.web.mapper;
+
+import java.util.List;
+
+import com.fasterxml.jackson.annotation.JsonProperty;
+/**
+ * Response Mapper for NbrCellsNetwork
+ * @author Devendra Chauhan
+ *
+ */
+public class NbrCellsNetworkResponse {
+
+ private String networkId;
+ //private List<NbrCellsNetwork> NbrCellsNetworkObjList;
+ @JsonProperty("cellsNbrList")
+ private List<NbrListResponse> cellsNbrList;
+ public String getNetworkId() {
+ return networkId;
+ }
+ public void setNetworkId(String networkId) {
+ this.networkId = networkId;
+ }
+ public List<NbrListResponse> getCellsNbrList() {
+ return cellsNbrList;
+ }
+ public void setCellsNbrList(List<NbrListResponse> cellsNbrList) {
+ this.cellsNbrList = cellsNbrList;
+ }
+
+
+
+ /*public List<NbrCellsNetwork> getNbrCellsNetworkObjList() {
+ return NbrCellsNetworkObjList;
+ }
+ public void setNbrCellsNetworkObjList(List<NbrCellsNetwork> nbrCellsNetworkObjList) {
+ NbrCellsNetworkObjList = nbrCellsNetworkObjList;
+ }*/
+
+
+
+}
diff --git a/ransim/ransimctrlr/RANSIM-CTRLR/src/main/java/org/onap/ransim/rest/web/mapper/NbrList.java b/ransim/ransimctrlr/RANSIM-CTRLR/src/main/java/org/onap/ransim/rest/web/mapper/NbrList.java
new file mode 100644
index 0000000..828c4c8
--- /dev/null
+++ b/ransim/ransimctrlr/RANSIM-CTRLR/src/main/java/org/onap/ransim/rest/web/mapper/NbrList.java
@@ -0,0 +1,38 @@
+package org.onap.ransim.rest.web.mapper;
+
+import java.util.List;
+/**
+ * Mapper Class for NbrList
+ * @author Devendra Chauhan
+ *
+ */
+public class NbrList {
+ //param
+
+ private String targetCellId;
+ private long pciValue;
+ private boolean ho;
+
+
+ public String getTargetCellId() {
+ return targetCellId;
+ }
+ public void setTargetCellId(String targetCellId) {
+ this.targetCellId = targetCellId;
+ }
+ public long getPciValue() {
+ return pciValue;
+ }
+ public void setPciValue(long pciValue) {
+ this.pciValue = pciValue;
+ }
+ public boolean isHo() {
+ return ho;
+ }
+ public void setHo(boolean ho) {
+ this.ho = ho;
+ }
+
+
+
+}
diff --git a/ransim/ransimctrlr/RANSIM-CTRLR/src/main/java/org/onap/ransim/rest/web/mapper/NbrListResponse.java b/ransim/ransimctrlr/RANSIM-CTRLR/src/main/java/org/onap/ransim/rest/web/mapper/NbrListResponse.java
new file mode 100644
index 0000000..7fa6b0e
--- /dev/null
+++ b/ransim/ransimctrlr/RANSIM-CTRLR/src/main/java/org/onap/ransim/rest/web/mapper/NbrListResponse.java
@@ -0,0 +1,29 @@
+package org.onap.ransim.rest.web.mapper;
+
+import java.util.List;
+/**
+ *
+ * Response Mapper class for NbrList
+ * @author Devendra Chauhan
+ *
+ */
+public class NbrListResponse {
+
+ private String cellId;
+ private List<NbrList> nbrList;
+ public String getCellId() {
+ return cellId;
+ }
+ public void setCellId(String cellId) {
+ this.cellId = cellId;
+ }
+ public List<NbrList> getNbrList() {
+ return nbrList;
+ }
+ public void setNbrList(List<NbrList> nbrList) {
+ this.nbrList = nbrList;
+ }
+
+
+
+}
diff --git a/ransim/ransimctrlr/RANSIM-CTRLR/src/main/java/org/onap/ransim/rest/web/mapper/NbrObj.java b/ransim/ransimctrlr/RANSIM-CTRLR/src/main/java/org/onap/ransim/rest/web/mapper/NbrObj.java
new file mode 100644
index 0000000..06e1edf
--- /dev/null
+++ b/ransim/ransimctrlr/RANSIM-CTRLR/src/main/java/org/onap/ransim/rest/web/mapper/NbrObj.java
@@ -0,0 +1,27 @@
+package org.onap.ransim.rest.web.mapper;
+
+/**
+ * Mapper class for nbrObj
+ * @author Devendra Chauhan
+ *
+ */
+public class NbrObj {
+ private String targetCellId;
+ private boolean ho;
+
+ public String getTargetCellId() {
+ return targetCellId;
+ }
+ public void setTargetCellId(String targetCellId) {
+ this.targetCellId = targetCellId;
+ }
+ public boolean isHo() {
+ return ho;
+ }
+ public void setHo(boolean ho) {
+ this.ho = ho;
+ }
+
+
+
+}
diff --git a/ransim/ransimctrlr/RANSIM-CTRLR/src/main/java/org/onap/ransim/rest/web/mapper/NearRTRICModel.java b/ransim/ransimctrlr/RANSIM-CTRLR/src/main/java/org/onap/ransim/rest/web/mapper/NearRTRICModel.java
new file mode 100644
index 0000000..4ed839e
--- /dev/null
+++ b/ransim/ransimctrlr/RANSIM-CTRLR/src/main/java/org/onap/ransim/rest/web/mapper/NearRTRICModel.java
@@ -0,0 +1,77 @@
+package org.onap.ransim.rest.web.mapper;
+
+import java.util.List;
+
+public class NearRTRICModel{
+ private Integer nearRTRICId;
+ private Integer gNBId;
+ private List<String> trackingArea;
+ private String resourceType;
+ private List<GNBCUCPModel> gNBCUCPList;
+ private List<GNBCUUPModel> gNBCUUPList;
+ private List<GNBDUModel> gNBDUList;
+ private List<String> ranNFNSSIList;
+ private List<PLMNInfoModel> pLMNInfoList;
+ public Integer getNearRTRICId() {
+ return nearRTRICId;
+ }
+ public void setNearRTRICId(Integer nearRTRICId) {
+ this.nearRTRICId = nearRTRICId;
+ }
+ public Integer getgNBId() {
+ return gNBId;
+ }
+ public void setgNBId(Integer gNBId) {
+ this.gNBId = gNBId;
+ }
+ public List<String> getTrackingArea() {
+ return trackingArea;
+ }
+ public void setTrackingArea(List<String> trackingArea) {
+ this.trackingArea = trackingArea;
+ }
+ public String getResourceType() {
+ return resourceType;
+ }
+ public void setResourceType(String resourceType) {
+ this.resourceType = resourceType;
+ }
+
+ public List<String> getRanNFNSSIList() {
+ return ranNFNSSIList;
+ }
+ public void setRanNFNSSIList(List<String> ranNFNSSIList) {
+ this.ranNFNSSIList = ranNFNSSIList;
+ }
+ public List<GNBCUCPModel> getgNBCUCPList() {
+ return gNBCUCPList;
+ }
+ public void setgNBCUCPList(List<GNBCUCPModel> gNBCUCPList) {
+ this.gNBCUCPList = gNBCUCPList;
+ }
+ public List<GNBCUUPModel> getgNBCUUPList() {
+ return gNBCUUPList;
+ }
+ public void setgNBCUUPList(List<GNBCUUPModel> gNBCUUPList) {
+ this.gNBCUUPList = gNBCUUPList;
+ }
+ public List<GNBDUModel> getgNBDUList() {
+ return gNBDUList;
+ }
+ public void setgNBDUList(List<GNBDUModel> gNBDUList) {
+ this.gNBDUList = gNBDUList;
+ }
+ public List<PLMNInfoModel> getpLMNInfoList() {
+ return pLMNInfoList;
+ }
+ public void setpLMNInfoList(List<PLMNInfoModel> pLMNInfoList) {
+ this.pLMNInfoList = pLMNInfoList;
+ }
+ @Override
+ public String toString() {
+ return "NearRTRICModel [nearRTRICId=" + nearRTRICId + ", gNBId=" + gNBId + ", trackingArea=" + trackingArea
+ + ", resourceType=" + resourceType + ", gNBCUCPList=" + gNBCUCPList + ", gNBCUUPList=" + gNBCUUPList
+ + ", gNBDUList=" + gNBDUList + ", ranNFNSSIList=" + ranNFNSSIList + ", pLMNInfoList=" + pLMNInfoList
+ + "]";
+ }
+}
diff --git a/ransim/ransimctrlr/RANSIM-CTRLR/src/main/java/org/onap/ransim/rest/web/mapper/PLMNInfoModel.java b/ransim/ransimctrlr/RANSIM-CTRLR/src/main/java/org/onap/ransim/rest/web/mapper/PLMNInfoModel.java
new file mode 100644
index 0000000..19c9fcd
--- /dev/null
+++ b/ransim/ransimctrlr/RANSIM-CTRLR/src/main/java/org/onap/ransim/rest/web/mapper/PLMNInfoModel.java
@@ -0,0 +1,24 @@
+package org.onap.ransim.rest.web.mapper;
+
+public class PLMNInfoModel{
+ private String pLMNId;
+ private NSSAIData sNSSAI;
+
+ public String getpLMNId() {
+ return pLMNId;
+ }
+ public void setpLMNId(String pLMNId) {
+ this.pLMNId = pLMNId;
+ }
+ public NSSAIData getsNSSAI() {
+ return sNSSAI;
+ }
+ public void setsNSSAI(NSSAIData sNSSAI) {
+ this.sNSSAI = sNSSAI;
+ }
+ @Override
+ public String toString() {
+ return "PLMNInfoModel [pLMNId=" + pLMNId + ", sNSSAI=" + sNSSAI + "]";
+ }
+
+}
diff --git a/ransim/ransimctrlr/RANSIM-CTRLR/src/main/java/org/onap/ransim/rest/web/mapper/RANSliceInfoModel.java b/ransim/ransimctrlr/RANSIM-CTRLR/src/main/java/org/onap/ransim/rest/web/mapper/RANSliceInfoModel.java
new file mode 100644
index 0000000..d37912b
--- /dev/null
+++ b/ransim/ransimctrlr/RANSIM-CTRLR/src/main/java/org/onap/ransim/rest/web/mapper/RANSliceInfoModel.java
@@ -0,0 +1,79 @@
+package org.onap.ransim.rest.web.mapper;
+
+import java.io.Serializable;
+import java.util.List;
+
+public class RANSliceInfoModel implements Serializable{
+ private static final long serialVersionUID = 1L;
+ private String ranNFNSSIId;
+ private List<String> ranNSSIList;
+ private List<String> nSSAIList;
+ private List<SliceProfileModel> sliceProfilesList;
+ private String trackingAreaList;
+ private String subnetStatus;
+ private String nsstId;
+ private String sliceType;
+ private String isShareable;
+ public String getRanNFNSSIId() {
+ return ranNFNSSIId;
+ }
+ public void setRanNFNSSIId(String ranNFNSSIId) {
+ this.ranNFNSSIId = ranNFNSSIId;
+ }
+ public List<String> getRanNSSIList() {
+ return ranNSSIList;
+ }
+ public void setRanNSSIList(List<String> ranNSSIList) {
+ this.ranNSSIList = ranNSSIList;
+ }
+
+ public String getTrackingAreaList() {
+ return trackingAreaList;
+ }
+ public void setTrackingAreaList(String trackingAreaList) {
+ this.trackingAreaList = trackingAreaList;
+ }
+ public String getSubnetStatus() {
+ return subnetStatus;
+ }
+ public void setSubnetStatus(String subnetStatus) {
+ this.subnetStatus = subnetStatus;
+ }
+ public String getNsstId() {
+ return nsstId;
+ }
+ public void setNsstId(String nsstId) {
+ this.nsstId = nsstId;
+ }
+ public String getSliceType() {
+ return sliceType;
+ }
+ public void setSliceType(String sliceType) {
+ this.sliceType = sliceType;
+ }
+ public String getIsShareable() {
+ return isShareable;
+ }
+ public List<String> getnSSAIList() {
+ return nSSAIList;
+ }
+ public void setnSSAIList(List<String> nSSAIList) {
+ this.nSSAIList = nSSAIList;
+ }
+ public List<SliceProfileModel> getSliceProfilesList() {
+ return sliceProfilesList;
+ }
+ public void setSliceProfilesList(List<SliceProfileModel> sliceProfilesList) {
+ this.sliceProfilesList = sliceProfilesList;
+ }
+ public void setIsShareable(String isShareable) {
+ this.isShareable = isShareable;
+ }
+ @Override
+ public String toString() {
+ return "RANSliceInfoModel [ranNFNSSIId=" + ranNFNSSIId + ", ranNSSIList=" + ranNSSIList + ", nSSAIList=" + nSSAIList + ", sliceProfilesList=" + sliceProfilesList + ", trackingAreaList="
+ + trackingAreaList + ", subnetStatus=" + subnetStatus + ", nsstId=" + nsstId + ", sliceType="
+ + sliceType + ", isShareable=" + isShareable + "]";
+ }
+
+}
diff --git a/ransim/ransimctrlr/RANSIM-CTRLR/src/main/java/org/onap/ransim/rest/web/mapper/RRMPolicyMemberModel.java b/ransim/ransimctrlr/RANSIM-CTRLR/src/main/java/org/onap/ransim/rest/web/mapper/RRMPolicyMemberModel.java
new file mode 100644
index 0000000..268576b
--- /dev/null
+++ b/ransim/ransimctrlr/RANSIM-CTRLR/src/main/java/org/onap/ransim/rest/web/mapper/RRMPolicyMemberModel.java
@@ -0,0 +1,23 @@
+package org.onap.ransim.rest.web.mapper;
+
+public class RRMPolicyMemberModel{
+ private String pLMNId;
+ private NSSAIData sNSSAI;
+
+ public String getpLMNId() {
+ return pLMNId;
+ }
+ public void setpLMNId(String pLMNId) {
+ this.pLMNId = pLMNId;
+ }
+ public NSSAIData getsNSSAI() {
+ return sNSSAI;
+ }
+ public void setsNSSAI(NSSAIData sNSSAI) {
+ this.sNSSAI = sNSSAI;
+ }
+ @Override
+ public String toString() {
+ return "RRMPolicyMemberModel [pLMNId=" + pLMNId + ", sNSSAI=" + sNSSAI + "]";
+ }
+}
diff --git a/ransim/ransimctrlr/RANSIM-CTRLR/src/main/java/org/onap/ransim/rest/web/mapper/RRMPolicyRatioModel.java b/ransim/ransimctrlr/RANSIM-CTRLR/src/main/java/org/onap/ransim/rest/web/mapper/RRMPolicyRatioModel.java
new file mode 100644
index 0000000..4ef2597
--- /dev/null
+++ b/ransim/ransimctrlr/RANSIM-CTRLR/src/main/java/org/onap/ransim/rest/web/mapper/RRMPolicyRatioModel.java
@@ -0,0 +1,77 @@
+package org.onap.ransim.rest.web.mapper;
+
+import java.util.List;
+
+public class RRMPolicyRatioModel{
+ private Integer rrmPolicyID;
+ private String resourceID;
+ private String resourceType;
+ private String sliceType;
+ private List<RRMPolicyMemberModel> rRMPolicyMemberList;
+ private String quotaType;
+ private Integer rRMPolicyMaxRatio;
+ private Integer rRMPolicyMinRatio;
+ private Integer rRMPolicyDedicatedRatio;
+ public Integer getRrmPolicyID() {
+ return rrmPolicyID;
+ }
+ public void setRrmPolicyID(Integer rrmPolicyID) {
+ this.rrmPolicyID = rrmPolicyID;
+ }
+ public String getResourceID() {
+ return resourceID;
+ }
+ public void setResourceID(String resourceID) {
+ this.resourceID = resourceID;
+ }
+ public String getResourceType() {
+ return resourceType;
+ }
+ public void setResourceType(String resourceType) {
+ this.resourceType = resourceType;
+ }
+ public String getSliceType() {
+ return sliceType;
+ }
+ public void setSliceType(String sliceType) {
+ this.sliceType = sliceType;
+ }
+ public List<RRMPolicyMemberModel> getrRMPolicyMemberList() {
+ return rRMPolicyMemberList;
+ }
+ public void setrRMPolicyMemberList(List<RRMPolicyMemberModel> rRMPolicyMemberList) {
+ this.rRMPolicyMemberList = rRMPolicyMemberList;
+ }
+ public String getQuotaType() {
+ return quotaType;
+ }
+ public void setQuotaType(String quotaType) {
+ this.quotaType = quotaType;
+ }
+ public Integer getrRMPolicyMaxRatio() {
+ return rRMPolicyMaxRatio;
+ }
+ public void setrRMPolicyMaxRatio(Integer rRMPolicyMaxRatio) {
+ this.rRMPolicyMaxRatio = rRMPolicyMaxRatio;
+ }
+ public Integer getrRMPolicyMinRatio() {
+ return rRMPolicyMinRatio;
+ }
+ public void setrRMPolicyMinRatio(Integer rRMPolicyMinRatio) {
+ this.rRMPolicyMinRatio = rRMPolicyMinRatio;
+ }
+ public Integer getrRMPolicyDedicatedRatio() {
+ return rRMPolicyDedicatedRatio;
+ }
+ public void setrRMPolicyDedicatedRatio(Integer rRMPolicyDedicatedRatio) {
+ this.rRMPolicyDedicatedRatio = rRMPolicyDedicatedRatio;
+ }
+ @Override
+ public String toString() {
+ return "RRMPolicyRatioModel [rrmPolicyID=" + rrmPolicyID + ", resourceID=" + resourceID + ", resourceType="
+ + resourceType + ", sliceType=" + sliceType + ", rRMPolicyMemberList=" + rRMPolicyMemberList
+ + ", quotaType=" + quotaType + ", rRMPolicyMaxRatio=" + rRMPolicyMaxRatio + ", rRMPolicyMinRatio="
+ + rRMPolicyMinRatio + ", rRMPolicyDedicatedRatio=" + rRMPolicyDedicatedRatio + "]";
+ }
+
+}
diff --git a/ransim/ransimctrlr/RANSIM-CTRLR/src/main/java/org/onap/ransim/rest/web/mapper/Result.java b/ransim/ransimctrlr/RANSIM-CTRLR/src/main/java/org/onap/ransim/rest/web/mapper/Result.java
new file mode 100644
index 0000000..8a6b789
--- /dev/null
+++ b/ransim/ransimctrlr/RANSIM-CTRLR/src/main/java/org/onap/ransim/rest/web/mapper/Result.java
@@ -0,0 +1,40 @@
+package org.onap.ransim.rest.web.mapper;
+
+import com.fasterxml.jackson.annotation.JsonProperty;
+
+/**
+ * Mapper Class for Result
+ *
+ * @author Devendra Chauhan
+ *
+ */
+public class Result {
+ // param
+ @JsonProperty("attribute-name")
+ private String attributeName;
+ @JsonProperty("value")
+ private String value;
+
+ public Result(String atributeName, String value) {
+ super();
+ this.attributeName = atributeName;
+ this.value = value;
+ }
+
+ public String getAttributeName() {
+ return attributeName;
+ }
+
+ public void setAttributeName(String attributeName) {
+ this.attributeName = attributeName;
+ }
+
+ public String getValue() {
+ return value;
+ }
+
+ public void setValue(String value) {
+ this.value = value;
+ }
+
+}
diff --git a/ransim/ransimctrlr/RANSIM-CTRLR/src/main/java/org/onap/ransim/rest/web/mapper/SliceProfileModel.java b/ransim/ransimctrlr/RANSIM-CTRLR/src/main/java/org/onap/ransim/rest/web/mapper/SliceProfileModel.java
new file mode 100644
index 0000000..f08ce64
--- /dev/null
+++ b/ransim/ransimctrlr/RANSIM-CTRLR/src/main/java/org/onap/ransim/rest/web/mapper/SliceProfileModel.java
@@ -0,0 +1,92 @@
+package org.onap.ransim.rest.web.mapper;
+
+import java.util.List;
+
+public class SliceProfileModel{
+ private String sliceProfileId;
+ private String sNSSAI;
+ private String pLMNIdList;
+ private Integer maxNumberofUEs;
+ private Integer latency;
+ private Integer dLThptPerSlice;
+ private Integer uLThptPerSlice;
+ private Integer maxNumberofConns;
+ private String uEMobilityLevel;
+ private String resourceSharingLevel;
+ private List<String> coverageAreaList;
+
+ public String getSliceProfileId() {
+ return sliceProfileId;
+ }
+ public void setSliceProfileId(String sliceProfileId) {
+ this.sliceProfileId = sliceProfileId;
+ }
+ public String getsNSSAI() {
+ return sNSSAI;
+ }
+ public void setsNSSAI(String sNSSAI) {
+ this.sNSSAI = sNSSAI;
+ }
+ public String getpLMNIdList() {
+ return pLMNIdList;
+ }
+ public void setpLMNIdList(String pLMNIdList) {
+ this.pLMNIdList = pLMNIdList;
+ }
+ public Integer getMaxNumberofUEs() {
+ return maxNumberofUEs;
+ }
+ public void setMaxNumberofUEs(Integer maxNumberofUEs) {
+ this.maxNumberofUEs = maxNumberofUEs;
+ }
+ public Integer getLatency() {
+ return latency;
+ }
+ public void setLatency(Integer latency) {
+ this.latency = latency;
+ }
+ public Integer getdLThptPerSlice() {
+ return dLThptPerSlice;
+ }
+ public void setdLThptPerSlice(Integer dLThptPerSlice) {
+ this.dLThptPerSlice = dLThptPerSlice;
+ }
+ public Integer getuLThptPerSlice() {
+ return uLThptPerSlice;
+ }
+ public void setuLThptPerSlice(Integer uLThptPerSlice) {
+ this.uLThptPerSlice = uLThptPerSlice;
+ }
+ public Integer getMaxNumberofConns() {
+ return maxNumberofConns;
+ }
+ public void setMaxNumberofConns(Integer maxNumberofConns) {
+ this.maxNumberofConns = maxNumberofConns;
+ }
+ public String getuEMobilityLevel() {
+ return uEMobilityLevel;
+ }
+ public void setuEMobilityLevel(String uEMobilityLevel) {
+ this.uEMobilityLevel = uEMobilityLevel;
+ }
+ public String getResourceSharingLevel() {
+ return resourceSharingLevel;
+ }
+ public void setResourceSharingLevel(String resourceSharingLevel) {
+ this.resourceSharingLevel = resourceSharingLevel;
+ }
+ public List<String> getCoverageAreaList() {
+ return coverageAreaList;
+ }
+ public void setCoverageAreaList(List<String> coverageAreaList) {
+ this.coverageAreaList = coverageAreaList;
+ }
+ @Override
+ public String toString() {
+ return "SliceProfileModel [sliceProfileId=" + sliceProfileId + ", sNSSAI=" + sNSSAI + ", pLMNIdList="
+ + pLMNIdList + ", maxNumberofUEs=" + maxNumberofUEs + ", latency=" + latency + ", dLThptPerSlice="
+ + dLThptPerSlice + ", uLThptPerSlice=" + uLThptPerSlice + ", maxNumberofConns=" + maxNumberofConns
+ + ", uEMobilityLevel=" + uEMobilityLevel + ", resourceSharingLevel=" + resourceSharingLevel
+ + ", coverageAreaList=" + coverageAreaList + "]";
+ }
+}
diff --git a/ransim/ransimctrlr/RANSIM-CTRLR/src/main/java/org/onap/ransim/rest/xml/models/FileFooter.java b/ransim/ransimctrlr/RANSIM-CTRLR/src/main/java/org/onap/ransim/rest/xml/models/FileFooter.java
new file mode 100644
index 0000000..20171bc
--- /dev/null
+++ b/ransim/ransimctrlr/RANSIM-CTRLR/src/main/java/org/onap/ransim/rest/xml/models/FileFooter.java
@@ -0,0 +1,42 @@
+/*
+ * Copyright (C) 2018 Wipro Limited.
+ *
+ * Licensed 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
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License 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.
+ */
+
+package org.onap.ransim.rest.xml.models;
+
+import javax.xml.bind.annotation.XmlRootElement;
+
+@XmlRootElement
+public class FileFooter {
+private MeasCollecEnd measCollec;
+public FileFooter() {
+
+}
+public FileFooter(MeasCollecEnd measCollec) {
+super();
+this.measCollec = measCollec;
+}
+public MeasCollecEnd getMeasCollec() {
+return measCollec;
+}
+public void setMeasCollec(MeasCollecEnd measCollec) {
+this.measCollec = measCollec;
+}
+@Override
+public String toString() {
+return "FileFooter [measCollec=" + measCollec + "]";
+}
+}
+
diff --git a/ransim/ransimctrlr/RANSIM-CTRLR/src/main/java/org/onap/ransim/rest/xml/models/FileHeader.java b/ransim/ransimctrlr/RANSIM-CTRLR/src/main/java/org/onap/ransim/rest/xml/models/FileHeader.java
new file mode 100644
index 0000000..61cc6bf
--- /dev/null
+++ b/ransim/ransimctrlr/RANSIM-CTRLR/src/main/java/org/onap/ransim/rest/xml/models/FileHeader.java
@@ -0,0 +1,79 @@
+/*
+ * Copyright (C) 2018 Wipro Limited.
+ *
+ * Licensed 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
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License 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.
+ */
+
+package org.onap.ransim.rest.xml.models;
+
+import javax.xml.bind.annotation.XmlAttribute;
+import javax.xml.bind.annotation.XmlRootElement;
+
+@XmlRootElement
+public class FileHeader {
+private String dnPrefix;
+private String vendorName;
+private String fileFormatVersion;
+private MeasCollec measCollec;
+private FileSender fileSender;
+public FileHeader() {
+
+}
+public FileHeader(String dnPrefix, String vendorName, String fileFormatVersion, MeasCollec measCollec,
+FileSender fileSender) {
+super();
+this.dnPrefix = dnPrefix;
+this.vendorName = vendorName;
+this.fileFormatVersion = fileFormatVersion;
+this.measCollec = measCollec;
+this.fileSender = fileSender;
+}
+public MeasCollec getMeasCollec() {
+return measCollec;
+}
+public void setMeasCollec(MeasCollec measCollec) {
+this.measCollec = measCollec;
+}
+@XmlAttribute
+public String getDnPrefix() {
+return dnPrefix;
+}
+public void setDnPrefix(String dnPrefix) {
+this.dnPrefix = dnPrefix;
+}
+@XmlAttribute
+public String getVendorName() {
+return vendorName;
+}
+public void setVendorName(String vendorName) {
+this.vendorName = vendorName;
+}
+@XmlAttribute
+public String getFileFormatVersion() {
+return fileFormatVersion;
+}
+public void setFileFormatVersion(String fileFormatVersion) {
+this.fileFormatVersion = fileFormatVersion;
+}
+public FileSender getFileSender() {
+return fileSender;
+}
+public void setFileSender(FileSender fileSender) {
+this.fileSender = fileSender;
+}
+@Override
+public String toString() {
+return "FileHeader [dnPrefix=" + dnPrefix + ", vendorName=" + vendorName + ", fileFormatVersion="
++ fileFormatVersion + ", measCollec=" + measCollec + ", fileSender=" + fileSender + "]";
+}
+}
diff --git a/ransim/ransimctrlr/RANSIM-CTRLR/src/main/java/org/onap/ransim/rest/xml/models/FileSender.java b/ransim/ransimctrlr/RANSIM-CTRLR/src/main/java/org/onap/ransim/rest/xml/models/FileSender.java
new file mode 100644
index 0000000..ddf0b1f
--- /dev/null
+++ b/ransim/ransimctrlr/RANSIM-CTRLR/src/main/java/org/onap/ransim/rest/xml/models/FileSender.java
@@ -0,0 +1,53 @@
+/*
+ * Copyright (C) 2018 Wipro Limited.
+ *
+ * Licensed 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
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License 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.
+ */
+
+package org.onap.ransim.rest.xml.models;
+
+import javax.xml.bind.annotation.XmlAttribute;
+import javax.xml.bind.annotation.XmlRootElement;
+
+@XmlRootElement
+public class FileSender {
+private String localDn;
+//private String elementType;
+public FileSender() {
+
+}
+public FileSender(String localDn) {
+super();
+this.localDn = localDn;
+}
+@XmlAttribute
+public String getLocalDn() {
+return localDn;
+}
+public void setLocalDn(String localDn) {
+this.localDn = localDn;
+}
+/*@XmlAttribute
+public String getElementType() {
+return elementType;
+}
+public void setElementType(String elementType) {
+this.elementType = elementType;
+}*/
+@Override
+public String toString() {
+return "FileSender [localDn=" + localDn + "]";
+}
+}
+
+
diff --git a/ransim/ransimctrlr/RANSIM-CTRLR/src/main/java/org/onap/ransim/rest/xml/models/GranularityPeriod.java b/ransim/ransimctrlr/RANSIM-CTRLR/src/main/java/org/onap/ransim/rest/xml/models/GranularityPeriod.java
new file mode 100644
index 0000000..ef9be95
--- /dev/null
+++ b/ransim/ransimctrlr/RANSIM-CTRLR/src/main/java/org/onap/ransim/rest/xml/models/GranularityPeriod.java
@@ -0,0 +1,56 @@
+/*
+ * Copyright (C) 2018 Wipro Limited.
+ *
+ * Licensed 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
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License 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.
+ */
+
+package org.onap.ransim.rest.xml.models;
+
+import javax.xml.bind.annotation.XmlAttribute;
+import javax.xml.bind.annotation.XmlRootElement;
+
+@XmlRootElement
+public class GranularityPeriod {
+ private String endTime;
+ private String duration;
+
+ public GranularityPeriod() {
+
+}
+
+ public GranularityPeriod(String endTime, String duration) {
+super();
+this.endTime = endTime;
+this.duration = duration;
+}
+@XmlAttribute
+public String getEndTime() {
+return endTime;
+}
+public void setEndTime(String endTime) {
+this.endTime = endTime;
+}
+@XmlAttribute
+public String getDuration() {
+return duration;
+}
+public void setDuration(String duration) {
+this.duration = duration;
+}
+@Override
+public String toString() {
+return "GranularityPeriod [endTime=" + endTime + ", duration=" + duration + "]";
+}
+}
+
+
diff --git a/ransim/ransimctrlr/RANSIM-CTRLR/src/main/java/org/onap/ransim/rest/xml/models/Job.java b/ransim/ransimctrlr/RANSIM-CTRLR/src/main/java/org/onap/ransim/rest/xml/models/Job.java
new file mode 100644
index 0000000..ec38194
--- /dev/null
+++ b/ransim/ransimctrlr/RANSIM-CTRLR/src/main/java/org/onap/ransim/rest/xml/models/Job.java
@@ -0,0 +1,49 @@
+/*
+ * Copyright (C) 2018 Wipro Limited.
+ *
+ * Licensed 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
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License 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.
+ */
+
+package org.onap.ransim.rest.xml.models;
+
+import javax.xml.bind.annotation.XmlAttribute;
+import javax.xml.bind.annotation.XmlRootElement;
+
+@XmlRootElement
+public class Job {
+private String jobId;
+public Job() {
+
+}
+
+public Job(String jobId) {
+super();
+this.jobId = jobId;
+}
+
+@XmlAttribute
+public String getJobId() {
+return jobId;
+}
+
+public void setJobId(String jobId) {
+this.jobId = jobId;
+}
+
+@Override
+public String toString() {
+return "Job [jobId=" + jobId + "]";
+}
+
+}
+
diff --git a/ransim/ransimctrlr/RANSIM-CTRLR/src/main/java/org/onap/ransim/rest/xml/models/ManagedElement.java b/ransim/ransimctrlr/RANSIM-CTRLR/src/main/java/org/onap/ransim/rest/xml/models/ManagedElement.java
new file mode 100644
index 0000000..67da4da
--- /dev/null
+++ b/ransim/ransimctrlr/RANSIM-CTRLR/src/main/java/org/onap/ransim/rest/xml/models/ManagedElement.java
@@ -0,0 +1,65 @@
+/*
+ * Copyright (C) 2018 Wipro Limited.
+ *
+ * Licensed 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
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License 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.
+ */
+
+package org.onap.ransim.rest.xml.models;
+
+import javax.xml.bind.annotation.XmlAttribute;
+import javax.xml.bind.annotation.XmlRootElement;
+
+@XmlRootElement
+public class ManagedElement {
+ private String swVersion;
+ private String localDn;
+// private String userLabel;
+
+ public ManagedElement() {
+
+}
+ public ManagedElement(String swVersion, String localDn) {
+super();
+this.swVersion = swVersion;
+this.localDn = localDn;
+//this.userLabel = userLabel;
+}
+@XmlAttribute
+public String getSwVersion() {
+return swVersion;
+}
+public void setSwVersion(String swVersion) {
+this.swVersion = swVersion;
+}
+@XmlAttribute
+public String getLocalDn() {
+return localDn;
+}
+public void setLocalDn(String localDn) {
+this.localDn = localDn;
+}
+/*
+@XmlAttribute
+public String getUserLabel() {
+return userLabel;
+}
+public void setUserLabel(String userLabel) {
+this.userLabel = userLabel;
+}*/
+@Override
+public String toString() {
+return "ManagedElement [swVersion=" + swVersion + ", localDn=" + localDn + "]";
+}
+
+}
+
diff --git a/ransim/ransimctrlr/RANSIM-CTRLR/src/main/java/org/onap/ransim/rest/xml/models/MeasCollec.java b/ransim/ransimctrlr/RANSIM-CTRLR/src/main/java/org/onap/ransim/rest/xml/models/MeasCollec.java
new file mode 100644
index 0000000..d9256b6
--- /dev/null
+++ b/ransim/ransimctrlr/RANSIM-CTRLR/src/main/java/org/onap/ransim/rest/xml/models/MeasCollec.java
@@ -0,0 +1,46 @@
+/*
+ * Copyright (C) 2018 Wipro Limited.
+ *
+ * Licensed 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
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License 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.
+ */
+
+package org.onap.ransim.rest.xml.models;
+
+import javax.xml.bind.annotation.XmlAttribute;
+import javax.xml.bind.annotation.XmlRootElement;
+
+@XmlRootElement
+public class MeasCollec {
+private String beginTime;
+
+public MeasCollec() {
+
+}
+public MeasCollec(String beginTime) {
+super();
+this.beginTime = beginTime;
+}
+@XmlAttribute
+public String getBeginTime() {
+return beginTime;
+}
+public void setBeginTime(String beginTime) {
+this.beginTime = beginTime;
+}
+
+@Override
+public String toString() {
+return "MeasCollec [beginTime=" + beginTime + "]";
+}
+}
+
diff --git a/ransim/ransimctrlr/RANSIM-CTRLR/src/main/java/org/onap/ransim/rest/xml/models/MeasCollecEnd.java b/ransim/ransimctrlr/RANSIM-CTRLR/src/main/java/org/onap/ransim/rest/xml/models/MeasCollecEnd.java
new file mode 100644
index 0000000..57e84de
--- /dev/null
+++ b/ransim/ransimctrlr/RANSIM-CTRLR/src/main/java/org/onap/ransim/rest/xml/models/MeasCollecEnd.java
@@ -0,0 +1,19 @@
+package org.onap.ransim.rest.xml.models;
+
+import javax.xml.bind.annotation.XmlAttribute;
+import javax.xml.bind.annotation.XmlRootElement;
+
+@XmlRootElement
+public class MeasCollecEnd {
+@XmlAttribute
+private String endTime;
+public MeasCollecEnd() {
+
+}
+
+public MeasCollecEnd(String endTime) {
+super();
+this.endTime = endTime;
+}
+}
+
diff --git a/ransim/ransimctrlr/RANSIM-CTRLR/src/main/java/org/onap/ransim/rest/xml/models/MeasCollecFile.java b/ransim/ransimctrlr/RANSIM-CTRLR/src/main/java/org/onap/ransim/rest/xml/models/MeasCollecFile.java
new file mode 100644
index 0000000..8150144
--- /dev/null
+++ b/ransim/ransimctrlr/RANSIM-CTRLR/src/main/java/org/onap/ransim/rest/xml/models/MeasCollecFile.java
@@ -0,0 +1,68 @@
+/*
+ * Copyright (C) 2018 Wipro Limited.
+ *
+ * Licensed 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
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License 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.
+ */
+
+package org.onap.ransim.rest.xml.models;
+
+import java.util.List;
+
+import javax.xml.bind.annotation.XmlAttribute;
+import javax.xml.bind.annotation.XmlElement;
+import javax.xml.bind.annotation.XmlRootElement;
+
+@XmlRootElement
+public class MeasCollecFile {
+@XmlAttribute
+private String xmlns;
+ @XmlElement
+private FileHeader fileHeader;
+ @XmlElement
+private List<MeasData> measData;
+ @XmlElement
+private FileFooter fileFooter;
+public MeasCollecFile() {
+
+}
+public MeasCollecFile(FileHeader fileHeader, List<MeasData> measData, FileFooter fileFooter,String xmlns) {
+super();
+this.fileHeader = fileHeader;
+this.measData = measData;
+this.fileFooter = fileFooter;
+this.xmlns = xmlns;
+}
+// public FileHeader getFileHeader() {
+// return fileHeader;
+// }
+// public void setFileHeader(FileHeader fileHeader) {
+// this.fileHeader = fileHeader;
+// }
+// public List<MeasData> getMeasData() {
+// return measData;
+// }
+// public void setMeasData(List<MeasData> measData) {
+// this.measData = measData;
+// }
+// public FileFooter getFileFooter() {
+// return fileFooter;
+// }
+// public void setFileFooter(FileFooter fileFooter) {
+// this.fileFooter = fileFooter;
+// }
+@Override
+public String toString() {
+return "MeasCollecFile [fileHeader=" + fileHeader + ", measData=" + measData + ", fileFooter=" + fileFooter
++ "]";
+}
+}
diff --git a/ransim/ransimctrlr/RANSIM-CTRLR/src/main/java/org/onap/ransim/rest/xml/models/MeasData.java b/ransim/ransimctrlr/RANSIM-CTRLR/src/main/java/org/onap/ransim/rest/xml/models/MeasData.java
new file mode 100644
index 0000000..70ccd95
--- /dev/null
+++ b/ransim/ransimctrlr/RANSIM-CTRLR/src/main/java/org/onap/ransim/rest/xml/models/MeasData.java
@@ -0,0 +1,51 @@
+/*
+ * Copyright (C) 2018 Wipro Limited.
+ *
+ * Licensed 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
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License 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.
+ */
+package org.onap.ransim.rest.xml.models;
+
+import java.util.List;
+
+import javax.xml.bind.annotation.XmlElementWrapper;
+import javax.xml.bind.annotation.XmlRootElement;
+@XmlRootElement
+public class MeasData {
+private ManagedElement managedElement;
+private List<MeasInfo> measInfo;
+public MeasData() {
+}
+public MeasData(ManagedElement managedElement, List<MeasInfo> measInfo) {
+super();
+this.managedElement = managedElement;
+this.measInfo = measInfo;
+}
+public ManagedElement getManagedElement() {
+return managedElement;
+}
+public void setManagedElement(ManagedElement managedElement) {
+this.managedElement = managedElement;
+}
+public List<MeasInfo> getMeasInfo() {
+return measInfo;
+}
+public void setMeasInfo(List<MeasInfo> measInfo) {
+this.measInfo = measInfo;
+}
+@Override
+public String toString() {
+return "MeasData [managedElement=" + managedElement + ", measInfo=" + measInfo + "]";
+}
+
+}
+
diff --git a/ransim/ransimctrlr/RANSIM-CTRLR/src/main/java/org/onap/ransim/rest/xml/models/MeasInfo.java b/ransim/ransimctrlr/RANSIM-CTRLR/src/main/java/org/onap/ransim/rest/xml/models/MeasInfo.java
new file mode 100644
index 0000000..3e50945
--- /dev/null
+++ b/ransim/ransimctrlr/RANSIM-CTRLR/src/main/java/org/onap/ransim/rest/xml/models/MeasInfo.java
@@ -0,0 +1,112 @@
+/*
+ * Copyright (C) 2018 Wipro Limited.
+ *
+ * Licensed 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
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License 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.
+ */
+
+package org.onap.ransim.rest.xml.models;
+
+import java.util.List;
+
+import javax.xml.bind.annotation.XmlAttribute;
+import javax.xml.bind.annotation.XmlRootElement;
+import javax.xml.bind.annotation.XmlType;
+@XmlRootElement
+@XmlType(propOrder={"measInfoId","job","granPeriod","repPeriod","measType","measValue"})
+public class MeasInfo {
+ private String measInfoId;
+ private Job job;
+ private GranularityPeriod granPeriod;
+ private ReportingPeriod repPeriod;
+ private List<MeasType> measType;
+ private List<MeasValue> measValue;
+
+
+ public MeasInfo(String measInfoId, Job job, GranularityPeriod granPeriod, ReportingPeriod repPeriod,
+List<MeasType> measType, List<MeasValue> measValue) {
+super();
+this.measInfoId = measInfoId;
+this.job = job;
+this.granPeriod = granPeriod;
+this.repPeriod = repPeriod;
+this.measType = measType;
+this.measValue = measValue;
+}
+
+
+public MeasInfo() {
+}
+
+
+@XmlAttribute
+public String getMeasInfoId() {
+return measInfoId;
+}
+
+public void setMeasInfoId(String measInfoId) {
+this.measInfoId = measInfoId;
+}
+
+
+public Job getJob() {
+return job;
+}
+
+
+public void setJob(Job job) {
+this.job = job;
+}
+
+
+public GranularityPeriod getGranPeriod() {
+return granPeriod;
+}
+
+
+public void setGranPeriod(GranularityPeriod granPeriod) {
+this.granPeriod = granPeriod;
+}
+
+
+public ReportingPeriod getRepPeriod() {
+return repPeriod;
+}
+
+
+public void setRepPeriod(ReportingPeriod repPeriod) {
+this.repPeriod = repPeriod;
+}
+
+public List<MeasType> getMeasType() {
+return measType;
+}
+
+public void setMeasType(List<MeasType> measType) {
+this.measType = measType;
+}
+
+public List<MeasValue> getMeasValue() {
+return measValue;
+}
+
+public void setMeasValue(List<MeasValue> measValue) {
+this.measValue = measValue;
+}
+
+@Override
+public String toString() {
+return "MeasInfo [measInfoId=" + measInfoId + ", job=" + job + ", granPeriod=" + granPeriod + ", repPeriod="
++ repPeriod + ", measType=" + measType + ", measValue=" + measValue + "]";
+}
+}
+
diff --git a/ransim/ransimctrlr/RANSIM-CTRLR/src/main/java/org/onap/ransim/rest/xml/models/MeasResult.java b/ransim/ransimctrlr/RANSIM-CTRLR/src/main/java/org/onap/ransim/rest/xml/models/MeasResult.java
new file mode 100644
index 0000000..b86e620
--- /dev/null
+++ b/ransim/ransimctrlr/RANSIM-CTRLR/src/main/java/org/onap/ransim/rest/xml/models/MeasResult.java
@@ -0,0 +1,34 @@
+/*
+ * Copyright (C) 2018 Wipro Limited.
+ *
+ * Licensed 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
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License 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.
+ */
+
+package org.onap.ransim.rest.xml.models;
+
+import java.util.List;
+
+public class MeasResult {
+private String position;
+private String result;
+public MeasResult(String position, String result) {
+super();
+this.position = position;
+this.result = result;
+}
+public MeasResult() {
+}
+
+
+}
+
diff --git a/ransim/ransimctrlr/RANSIM-CTRLR/src/main/java/org/onap/ransim/rest/xml/models/MeasType.java b/ransim/ransimctrlr/RANSIM-CTRLR/src/main/java/org/onap/ransim/rest/xml/models/MeasType.java
new file mode 100644
index 0000000..411e218
--- /dev/null
+++ b/ransim/ransimctrlr/RANSIM-CTRLR/src/main/java/org/onap/ransim/rest/xml/models/MeasType.java
@@ -0,0 +1,55 @@
+/*
+ * Copyright (C) 2018 Wipro Limited.
+ *
+ * Licensed 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
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License 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.
+ */
+
+package org.onap.ransim.rest.xml.models;
+
+import javax.xml.bind.annotation.XmlAttribute;
+import javax.xml.bind.annotation.XmlRootElement;
+import javax.xml.bind.annotation.XmlValue;
+@XmlRootElement
+public class MeasType {
+
+private String measType;
+private int p;
+public MeasType(String measType, int p) {
+super();
+this.measType = measType;
+this.p = p;
+}
+public MeasType() {
+}
+
+@XmlValue
+public String getMeasType() {
+return measType;
+}
+public void setMeasType(String measType) {
+this.measType = measType;
+}
+@XmlAttribute
+public int getP() {
+return p;
+}
+public void setP(int p) {
+this.p = p;
+}
+@Override
+public String toString() {
+return "MeasType [measType=" + measType + ", p=" + p + "]";
+}
+
+}
+
diff --git a/ransim/ransimctrlr/RANSIM-CTRLR/src/main/java/org/onap/ransim/rest/xml/models/MeasValue.java b/ransim/ransimctrlr/RANSIM-CTRLR/src/main/java/org/onap/ransim/rest/xml/models/MeasValue.java
new file mode 100644
index 0000000..3eea932
--- /dev/null
+++ b/ransim/ransimctrlr/RANSIM-CTRLR/src/main/java/org/onap/ransim/rest/xml/models/MeasValue.java
@@ -0,0 +1,63 @@
+/*
+ * Copyright (C) 2018 Wipro Limited.
+ *
+ * Licensed 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
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License 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.
+ */
+
+package org.onap.ransim.rest.xml.models;
+
+import java.util.List;
+
+import javax.xml.bind.annotation.XmlAttribute;
+import javax.xml.bind.annotation.XmlRootElement;
+@XmlRootElement
+public class MeasValue {
+private Integer measObjLdn;
+private List<Result> r;
+public MeasValue() {
+
+}
+public MeasValue(Integer measObjLdn, List<Result> r, boolean suspect) {
+super();
+this.measObjLdn = measObjLdn;
+this.r = r;
+this.suspect = suspect;
+}
+private boolean suspect;
+@XmlAttribute
+public Integer getMeasObjLdn() {
+return measObjLdn;
+}
+public void setMeasObjLdn(Integer measObjLdn) {
+this.measObjLdn = measObjLdn;
+}
+public List<Result> getR() {
+return r;
+}
+public void setR(List<Result> r) {
+this.r = r;
+}
+public boolean isSuspect() {
+return suspect;
+}
+public void setSuspect(boolean suspect) {
+this.suspect = suspect;
+}
+@Override
+public String toString() {
+return "MeasValue [measObjLdn=" + measObjLdn + ", r=" + r + ", suspect=" + suspect + "]";
+}
+
+}
+
+
diff --git a/ransim/ransimctrlr/RANSIM-CTRLR/src/main/java/org/onap/ransim/rest/xml/models/ReportingPeriod.java b/ransim/ransimctrlr/RANSIM-CTRLR/src/main/java/org/onap/ransim/rest/xml/models/ReportingPeriod.java
new file mode 100644
index 0000000..493f5b9
--- /dev/null
+++ b/ransim/ransimctrlr/RANSIM-CTRLR/src/main/java/org/onap/ransim/rest/xml/models/ReportingPeriod.java
@@ -0,0 +1,47 @@
+/*
+ * Copyright (C) 2018 Wipro Limited.
+ *
+ * Licensed 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
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License 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.
+ */
+
+package org.onap.ransim.rest.xml.models;
+
+import javax.xml.bind.annotation.XmlAttribute;
+
+public class ReportingPeriod {
+@XmlAttribute
+ public String getDuration() {
+return duration;
+}
+
+public void setDuration(String duration) {
+this.duration = duration;
+}
+
+private String duration;
+public ReportingPeriod() {
+}
+
+public ReportingPeriod(String duration) {
+super();
+this.duration = duration;
+}
+
+@Override
+public String toString() {
+return "ReportingPeriod [duration=" + duration + "]";
+}
+
+
+}
+
diff --git a/ransim/ransimctrlr/RANSIM-CTRLR/src/main/java/org/onap/ransim/rest/xml/models/Result.java b/ransim/ransimctrlr/RANSIM-CTRLR/src/main/java/org/onap/ransim/rest/xml/models/Result.java
new file mode 100644
index 0000000..f7ff0a0
--- /dev/null
+++ b/ransim/ransimctrlr/RANSIM-CTRLR/src/main/java/org/onap/ransim/rest/xml/models/Result.java
@@ -0,0 +1,54 @@
+/*
+ * Copyright (C) 2018 Wipro Limited.
+ *
+ * Licensed 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
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License 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.
+ */
+
+package org.onap.ransim.rest.xml.models;
+
+import javax.xml.bind.annotation.XmlAttribute;
+import javax.xml.bind.annotation.XmlRootElement;
+import javax.xml.bind.annotation.XmlValue;
+@XmlRootElement
+public class Result {
+private int p;
+private int measValue;
+public Result() {
+}
+public Result(int p, int measValue) {
+super();
+this.p = p;
+this.measValue = measValue;
+}
+@XmlAttribute
+public int getP() {
+return p;
+}
+public void setP(int p) {
+this.p = p;
+}
+@XmlValue
+public double getMeasValue() {
+return measValue;
+}
+public void setMeasValue(int measValue) {
+this.measValue = measValue;
+}
+@Override
+public String toString() {
+return "Result [p=" + p + ", measValue=" + measValue + "]";
+}
+
+}
+
+
diff --git a/ransim/ransimctrlr/RANSIM-CTRLR/src/main/java/org/onap/ransim/utilities/RansimUtilities.java b/ransim/ransimctrlr/RANSIM-CTRLR/src/main/java/org/onap/ransim/utilities/RansimUtilities.java
new file mode 100644
index 0000000..a4546bc
--- /dev/null
+++ b/ransim/ransimctrlr/RANSIM-CTRLR/src/main/java/org/onap/ransim/utilities/RansimUtilities.java
@@ -0,0 +1,55 @@
+/*-
+ * ============LICENSE_START=======================================================
+ * Ran Simulator Controller
+ * ================================================================================
+ * Copyright (C) 2020 Wipro Limited.
+ * ================================================================================
+ * Licensed 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
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License 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.onap.ransim.utilities;
+
+/**
+ *
+ * Class with Utilities used across ransim
+ */
+public class RansimUtilities {
+
+ /**
+ * @param angle
+ * @return
+ */
+ public static double degToRadians(double angle) {
+ double radians = 57.2957795;
+ return (angle / radians);
+ }
+
+ /**
+ * @param angle
+ * @return
+ */
+ public static double metersDeglon(double angle) {
+ double d2r = degToRadians(angle);
+ return ((111415.13 * Math.cos(d2r)) - (94.55 * Math.cos(3.0 * d2r)) + (0.12 * Math.cos(5.0 * d2r)));
+ }
+
+ /**
+ * @param angle
+ * @return
+ */
+ public static double metersDeglat(double angle) {
+ double d2r = degToRadians(angle);
+ return (111132.09 - (566.05 * Math.cos(2.0 * d2r)) + (1.20 * Math.cos(4.0 * d2r))
+ - (0.002 * Math.cos(6.0 * d2r)));
+ }
+}
diff --git a/ransim/ransimctrlr/RANSIM-CTRLR/src/main/java/org/onap/ransim/websocket/model/AdditionalMeasurements.java b/ransim/ransimctrlr/RANSIM-CTRLR/src/main/java/org/onap/ransim/websocket/model/AdditionalMeasurements.java
index 650bfa8..a822385 100644
--- a/ransim/ransimctrlr/RANSIM-CTRLR/src/main/java/org/onap/ransim/websocket/model/AdditionalMeasurements.java
+++ b/ransim/ransimctrlr/RANSIM-CTRLR/src/main/java/org/onap/ransim/websocket/model/AdditionalMeasurements.java
@@ -20,31 +20,28 @@
package org.onap.ransim.websocket.model;
-import java.util.ArrayList;
import java.util.HashMap;
-import java.util.List;
import java.util.Map;
public class AdditionalMeasurements {
-
- private String name;
- private Map<String, String> hashMap = new HashMap<String, String>();
-
- public String getName() {
- return name;
- }
-
- public void setName(String name) {
- this.name = name;
- }
-
- public Map<String, String> getHashMap() {
- return hashMap;
- }
-
- public void setHashMap(Map<String, String> hashMap) {
- this.hashMap = hashMap;
- }
-
-
+
+ private String name;
+ private Map<String, String> hashMap = new HashMap<String, String>();
+
+ public String getName() {
+ return name;
+ }
+
+ public void setName(String name) {
+ this.name = name;
+ }
+
+ public Map<String, String> getHashMap() {
+ return hashMap;
+ }
+
+ public void setHashMap(Map<String, String> hashMap) {
+ this.hashMap = hashMap;
+ }
+
}
diff --git a/ransim/ransimctrlr/RANSIM-CTRLR/src/main/java/org/onap/ransim/websocket/model/Attributes.java b/ransim/ransimctrlr/RANSIM-CTRLR/src/main/java/org/onap/ransim/websocket/model/Attributes.java
new file mode 100644
index 0000000..38d896f
--- /dev/null
+++ b/ransim/ransimctrlr/RANSIM-CTRLR/src/main/java/org/onap/ransim/websocket/model/Attributes.java
@@ -0,0 +1,46 @@
+package org.onap.ransim.websocket.model;
+
+import com.fasterxml.jackson.annotation.JsonProperty;
+import com.fasterxml.jackson.annotation.JsonInclude;
+
+@JsonInclude(JsonInclude.Include.NON_NULL)
+public class Attributes {
+
+ private String locationName;
+ private String gNBId;
+ private String operationalState;
+ private String cellState;
+ private String gNBCUUPId;
+
+ public String getLocationName() {
+ return locationName;
+ }
+ public void setLocationName(String locationName) {
+ this.locationName = locationName;
+ }
+ public String getgNBId() {
+ return gNBId;
+ }
+ public void setgNBId(String gNBId) {
+ this.gNBId = gNBId;
+ }
+ public String getOperationalState() {
+ return operationalState;
+ }
+ public void setOperationalState(String operationalState) {
+ this.operationalState = operationalState;
+ }
+ public String getCellState() {
+ return cellState;
+ }
+ public void setCellState(String cellState) {
+ this.cellState = cellState;
+ }
+ public String getgNBCUUPId() {
+ return gNBCUUPId;
+ }
+ public void setgNBCUUPId(String gNBCUUPId) {
+ this.gNBCUUPId = gNBCUUPId;
+ }
+}
+
diff --git a/ransim/ransimctrlr/RANSIM-CTRLR/src/main/java/org/onap/ransim/websocket/model/CommonEventHeaderFm.java b/ransim/ransimctrlr/RANSIM-CTRLR/src/main/java/org/onap/ransim/websocket/model/CommonEventHeaderFm.java
index aa75009..c6bf224 100644
--- a/ransim/ransimctrlr/RANSIM-CTRLR/src/main/java/org/onap/ransim/websocket/model/CommonEventHeaderFm.java
+++ b/ransim/ransimctrlr/RANSIM-CTRLR/src/main/java/org/onap/ransim/websocket/model/CommonEventHeaderFm.java
@@ -21,66 +21,66 @@
package org.onap.ransim.websocket.model;
public class CommonEventHeaderFm {
-
- private String sourceName;
- private String sourceUuid;
- private String reportingEntityName;
- private long startEpochMicrosec;
- private long lastEpochMicrosec;
-
- public CommonEventHeaderFm() {
- super();
- // TODO Auto-generated constructor stub
- }
-
- public CommonEventHeaderFm(String sourceName, String sourceUuid, String reportingEntityName,
- long startEpochMicrosec, long lastEpochMicrosec) {
- super();
- this.sourceName = sourceName;
- this.sourceUuid = sourceUuid;
- this.reportingEntityName = reportingEntityName;
- this.startEpochMicrosec = startEpochMicrosec;
- this.lastEpochMicrosec = lastEpochMicrosec;
- }
-
- public String getSourceName() {
- return sourceName;
- }
-
- public void setSourceName(String sourceName) {
- this.sourceName = sourceName;
- }
-
- public String getSourceUuid() {
- return sourceUuid;
- }
-
- public void setSourceUuid(String sourceUuid) {
- this.sourceUuid = sourceUuid;
- }
-
- public long getStartEpochMicrosec() {
- return startEpochMicrosec;
- }
-
- public void setStartEpochMicrosec(long startEpochMicrosec) {
- this.startEpochMicrosec = startEpochMicrosec;
- }
-
- public long getLastEpochMicrosec() {
- return lastEpochMicrosec;
- }
-
- public void setLastEpochMicrosec(long lastEpochMicrosec) {
- this.lastEpochMicrosec = lastEpochMicrosec;
- }
-
- public String getReportingEntityName() {
- return reportingEntityName;
- }
-
- public void setReportingEntityName(String reportingEntityName) {
- this.reportingEntityName = reportingEntityName;
- }
-
+
+ private String sourceName;
+ private String sourceUuid;
+ private String reportingEntityName;
+ private long startEpochMicrosec;
+ private long lastEpochMicrosec;
+
+ public CommonEventHeaderFm() {
+ super();
+ // TODO Auto-generated constructor stub
+ }
+
+ public CommonEventHeaderFm(String sourceName, String sourceUuid, String reportingEntityName,
+ long startEpochMicrosec, long lastEpochMicrosec) {
+ super();
+ this.sourceName = sourceName;
+ this.sourceUuid = sourceUuid;
+ this.reportingEntityName = reportingEntityName;
+ this.startEpochMicrosec = startEpochMicrosec;
+ this.lastEpochMicrosec = lastEpochMicrosec;
+ }
+
+ public String getSourceName() {
+ return sourceName;
+ }
+
+ public void setSourceName(String sourceName) {
+ this.sourceName = sourceName;
+ }
+
+ public String getSourceUuid() {
+ return sourceUuid;
+ }
+
+ public void setSourceUuid(String sourceUuid) {
+ this.sourceUuid = sourceUuid;
+ }
+
+ public long getStartEpochMicrosec() {
+ return startEpochMicrosec;
+ }
+
+ public void setStartEpochMicrosec(long startEpochMicrosec) {
+ this.startEpochMicrosec = startEpochMicrosec;
+ }
+
+ public long getLastEpochMicrosec() {
+ return lastEpochMicrosec;
+ }
+
+ public void setLastEpochMicrosec(long lastEpochMicrosec) {
+ this.lastEpochMicrosec = lastEpochMicrosec;
+ }
+
+ public String getReportingEntityName() {
+ return reportingEntityName;
+ }
+
+ public void setReportingEntityName(String reportingEntityName) {
+ this.reportingEntityName = reportingEntityName;
+ }
+
}
diff --git a/ransim/ransimctrlr/RANSIM-CTRLR/src/main/java/org/onap/ransim/websocket/model/CommonEventHeaderPm.java b/ransim/ransimctrlr/RANSIM-CTRLR/src/main/java/org/onap/ransim/websocket/model/CommonEventHeaderPm.java
index 9f87529..dc87d50 100644
--- a/ransim/ransimctrlr/RANSIM-CTRLR/src/main/java/org/onap/ransim/websocket/model/CommonEventHeaderPm.java
+++ b/ransim/ransimctrlr/RANSIM-CTRLR/src/main/java/org/onap/ransim/websocket/model/CommonEventHeaderPm.java
@@ -21,42 +21,42 @@
package org.onap.ransim.websocket.model;
public class CommonEventHeaderPm {
-
- private String sourceName;
- private String sourceUuid;
- private long startEpochMicrosec;
- private long lastEpochMicrosec;
-
- public String getSourceName() {
- return sourceName;
- }
-
- public void setSourceName(String sourceName) {
- this.sourceName = sourceName;
- }
-
- public String getSourceUuid() {
- return sourceUuid;
- }
-
- public void setSourceUuid(String sourceUuid) {
- this.sourceUuid = sourceUuid;
- }
-
- public long getStartEpochMicrosec() {
- return startEpochMicrosec;
- }
-
- public void setStartEpochMicrosec(long startEpochMicrosec) {
- this.startEpochMicrosec = startEpochMicrosec;
- }
-
- public long getLastEpochMicrosec() {
- return lastEpochMicrosec;
- }
-
- public void setLastEpochMicrosec(long lastEpochMicrosec) {
- this.lastEpochMicrosec = lastEpochMicrosec;
- }
-
+
+ private String sourceName;
+ private String sourceUuid;
+ private long startEpochMicrosec;
+ private long lastEpochMicrosec;
+
+ public String getSourceName() {
+ return sourceName;
+ }
+
+ public void setSourceName(String sourceName) {
+ this.sourceName = sourceName;
+ }
+
+ public String getSourceUuid() {
+ return sourceUuid;
+ }
+
+ public void setSourceUuid(String sourceUuid) {
+ this.sourceUuid = sourceUuid;
+ }
+
+ public long getStartEpochMicrosec() {
+ return startEpochMicrosec;
+ }
+
+ public void setStartEpochMicrosec(long startEpochMicrosec) {
+ this.startEpochMicrosec = startEpochMicrosec;
+ }
+
+ public long getLastEpochMicrosec() {
+ return lastEpochMicrosec;
+ }
+
+ public void setLastEpochMicrosec(long lastEpochMicrosec) {
+ this.lastEpochMicrosec = lastEpochMicrosec;
+ }
+
}
diff --git a/ransim/ransimctrlr/RANSIM-CTRLR/src/main/java/org/onap/ransim/websocket/model/ConfigData.java b/ransim/ransimctrlr/RANSIM-CTRLR/src/main/java/org/onap/ransim/websocket/model/ConfigData.java
new file mode 100644
index 0000000..ed6cfab
--- /dev/null
+++ b/ransim/ransimctrlr/RANSIM-CTRLR/src/main/java/org/onap/ransim/websocket/model/ConfigData.java
@@ -0,0 +1,33 @@
+package org.onap.ransim.websocket.model;
+
+public class ConfigData {
+
+ private String configParameter;
+
+ private int configValue;
+
+ public String getConfigParameter() {
+ return configParameter;
+ }
+
+ public void setConfigParameter(String configParameter) {
+ this.configParameter = configParameter;
+ }
+
+ public int getConfigValue() {
+ return configValue;
+ }
+
+ public void setConfigValue(int configValue) {
+ this.configValue = configValue;
+ }
+
+ public ConfigData() {
+
+ }
+
+ public ConfigData(String configParameter, int configValue) {
+ this.configParameter= configParameter;
+ this.configValue = configValue;
+ }
+}
diff --git a/ransim/ransimctrlr/RANSIM-CTRLR/src/main/java/org/onap/ransim/websocket/model/ConfigPLMNInfo.java b/ransim/ransimctrlr/RANSIM-CTRLR/src/main/java/org/onap/ransim/websocket/model/ConfigPLMNInfo.java
new file mode 100644
index 0000000..227fd8a
--- /dev/null
+++ b/ransim/ransimctrlr/RANSIM-CTRLR/src/main/java/org/onap/ransim/websocket/model/ConfigPLMNInfo.java
@@ -0,0 +1,38 @@
+package org.onap.ransim.websocket.model;
+
+import java.util.*;
+
+public class ConfigPLMNInfo {
+
+ private String mcc;
+ private String mnc;
+ private List<SNSSAI> sNSSAI;
+
+ public String getMcc() {
+ return mcc;
+ }
+
+ public void setMcc(String mcc) {
+ this.mcc = mcc;
+ }
+
+ public String getMnc() {
+ return mnc;
+ }
+
+ public void setMnc(String mnc) {
+ this.mnc = mnc;
+ }
+
+ public List<SNSSAI> getSNSSAI() {
+ return sNSSAI;
+ }
+
+ public void setSNSSAI(List<SNSSAI> sNSSAI) {
+ this.sNSSAI = sNSSAI;
+ }
+
+ public ConfigPLMNInfo() {
+
+ }
+}
diff --git a/ransim/ransimctrlr/RANSIM-CTRLR/src/main/java/org/onap/ransim/websocket/model/DeviceData.java b/ransim/ransimctrlr/RANSIM-CTRLR/src/main/java/org/onap/ransim/websocket/model/DeviceData.java
index 5954408..de3c9d8 100644
--- a/ransim/ransimctrlr/RANSIM-CTRLR/src/main/java/org/onap/ransim/websocket/model/DeviceData.java
+++ b/ransim/ransimctrlr/RANSIM-CTRLR/src/main/java/org/onap/ransim/websocket/model/DeviceData.java
@@ -23,25 +23,25 @@ package org.onap.ransim.websocket.model;
import java.io.Serializable;
public class DeviceData implements Serializable {
-
- private static final long serialVersionUID = 4388248209444904611L;
-
- private String type;
- private String message;
-
- public void setType(String type) {
- this.type = type;
- }
-
- public String getType() {
- return type;
- }
-
- public void setMessage(String message) {
- this.message = message;
- }
-
- public String getMessage() {
- return message;
- }
+
+ private static final long serialVersionUID = 4388248209444904611L;
+
+ private String type;
+ private String message;
+
+ public void setType(String type) {
+ this.type = type;
+ }
+
+ public String getType() {
+ return type;
+ }
+
+ public void setMessage(String message) {
+ this.message = message;
+ }
+
+ public String getMessage() {
+ return message;
+ }
} \ No newline at end of file
diff --git a/ransim/ransimctrlr/RANSIM-CTRLR/src/main/java/org/onap/ransim/websocket/model/DeviceDataDecoder.java b/ransim/ransimctrlr/RANSIM-CTRLR/src/main/java/org/onap/ransim/websocket/model/DeviceDataDecoder.java
index caddc59..084a01b 100644
--- a/ransim/ransimctrlr/RANSIM-CTRLR/src/main/java/org/onap/ransim/websocket/model/DeviceDataDecoder.java
+++ b/ransim/ransimctrlr/RANSIM-CTRLR/src/main/java/org/onap/ransim/websocket/model/DeviceDataDecoder.java
@@ -25,33 +25,31 @@ import javax.websocket.Decoder;
import javax.websocket.EndpointConfig;
public class DeviceDataDecoder implements Decoder.Text<DeviceData> {
-
- // public class DeviceDataDecoder implements Decoder.Text<DeviceData>
- @Override
- public void destroy() {
- }
-
- @Override
- public void init(EndpointConfig arg0) {
- }
-
- @Override
- public DeviceData decode(String msgInfo) throws DecodeException {
- DeviceData data = new DeviceData();
- String[] strInfo = msgInfo.split(":", 2);
- if (strInfo.length < 2) {
- data.setMessage("");
- } else {
- data.setMessage(strInfo[1]);
- }
- data.setType(strInfo[0]);
- return data;
- }
-
- @Override
- public boolean willDecode(String arg0) {
- // TODO Auto-generated method stub
- return true;
- }
-
+
+ @Override
+ public void destroy() {
+ }
+
+ @Override
+ public void init(EndpointConfig arg0) {
+ }
+
+ @Override
+ public DeviceData decode(String msgInfo) throws DecodeException {
+ DeviceData data = new DeviceData();
+ String[] strInfo = msgInfo.split(":", 2);
+ if (strInfo.length < 2) {
+ data.setMessage("");
+ } else {
+ data.setMessage(strInfo[1]);
+ }
+ data.setType(strInfo[0]);
+ return data;
+ }
+
+ @Override
+ public boolean willDecode(String arg0) {
+ return true;
+ }
+
}
diff --git a/ransim/ransimctrlr/RANSIM-CTRLR/src/main/java/org/onap/ransim/websocket/model/DeviceDataEncoder.java b/ransim/ransimctrlr/RANSIM-CTRLR/src/main/java/org/onap/ransim/websocket/model/DeviceDataEncoder.java
index 6c29929..c3f1ff0 100644
--- a/ransim/ransimctrlr/RANSIM-CTRLR/src/main/java/org/onap/ransim/websocket/model/DeviceDataEncoder.java
+++ b/ransim/ransimctrlr/RANSIM-CTRLR/src/main/java/org/onap/ransim/websocket/model/DeviceDataEncoder.java
@@ -25,23 +25,23 @@ import javax.websocket.Encoder;
import javax.websocket.EndpointConfig;
public class DeviceDataEncoder implements Encoder.Text<DeviceData> {
-
- @Override
- public void destroy() {
- // TODO Auto-generated method stub
-
- }
-
- @Override
- public void init(EndpointConfig arg0) {
- // TODO Auto-generated method stub
-
- }
-
- @Override
- public String encode(DeviceData msg) throws EncodeException {
- String result = msg.getType() + ":" + msg.getMessage();
- return result;
- }
-
+
+ @Override
+ public void destroy() {
+ // TODO Auto-generated method stub
+
+ }
+
+ @Override
+ public void init(EndpointConfig arg0) {
+ // TODO Auto-generated method stub
+
+ }
+
+ @Override
+ public String encode(DeviceData msg) throws EncodeException {
+ String result = msg.getType() + ":" + msg.getMessage();
+ return result;
+ }
+
}
diff --git a/ransim/ransimctrlr/RANSIM-CTRLR/src/main/java/org/onap/ransim/websocket/model/EventFm.java b/ransim/ransimctrlr/RANSIM-CTRLR/src/main/java/org/onap/ransim/websocket/model/EventFm.java
index ec340f5..b89f967 100644
--- a/ransim/ransimctrlr/RANSIM-CTRLR/src/main/java/org/onap/ransim/websocket/model/EventFm.java
+++ b/ransim/ransimctrlr/RANSIM-CTRLR/src/main/java/org/onap/ransim/websocket/model/EventFm.java
@@ -21,35 +21,35 @@
package org.onap.ransim.websocket.model;
public class EventFm {
-
- private CommonEventHeaderFm commonEventHeader;
- private FaultFields faultFields;
-
- public EventFm(CommonEventHeaderFm commonEventHeader, FaultFields faultFields) {
- super();
- this.commonEventHeader = commonEventHeader;
- this.faultFields = faultFields;
- }
-
- public EventFm() {
- super();
- // TODO Auto-generated constructor stub
- }
-
- public CommonEventHeaderFm getCommonEventHeader() {
- return commonEventHeader;
- }
-
- public void setCommonEventHeader(CommonEventHeaderFm commonEventHeader) {
- this.commonEventHeader = commonEventHeader;
- }
-
- public FaultFields getFaultFields() {
- return faultFields;
- }
-
- public void setFaultFields(FaultFields faultFields) {
- this.faultFields = faultFields;
- }
-
+
+ private CommonEventHeaderFm commonEventHeader;
+ private FaultFields faultFields;
+
+ public EventFm(CommonEventHeaderFm commonEventHeader, FaultFields faultFields) {
+ super();
+ this.commonEventHeader = commonEventHeader;
+ this.faultFields = faultFields;
+ }
+
+ public EventFm() {
+ super();
+ // TODO Auto-generated constructor stub
+ }
+
+ public CommonEventHeaderFm getCommonEventHeader() {
+ return commonEventHeader;
+ }
+
+ public void setCommonEventHeader(CommonEventHeaderFm commonEventHeader) {
+ this.commonEventHeader = commonEventHeader;
+ }
+
+ public FaultFields getFaultFields() {
+ return faultFields;
+ }
+
+ public void setFaultFields(FaultFields faultFields) {
+ this.faultFields = faultFields;
+ }
+
}
diff --git a/ransim/ransimctrlr/RANSIM-CTRLR/src/main/java/org/onap/ransim/websocket/model/EventPm.java b/ransim/ransimctrlr/RANSIM-CTRLR/src/main/java/org/onap/ransim/websocket/model/EventPm.java
index f6dbb63..f9e2f8b 100644
--- a/ransim/ransimctrlr/RANSIM-CTRLR/src/main/java/org/onap/ransim/websocket/model/EventPm.java
+++ b/ransim/ransimctrlr/RANSIM-CTRLR/src/main/java/org/onap/ransim/websocket/model/EventPm.java
@@ -21,24 +21,24 @@
package org.onap.ransim.websocket.model;
public class EventPm {
-
- private CommonEventHeaderPm commonEventHeader;
- private Measurement measurement;
-
- public CommonEventHeaderPm getCommonEventHeader() {
- return commonEventHeader;
- }
-
- public void setCommonEventHeader(CommonEventHeaderPm commonEventHeader) {
- this.commonEventHeader = commonEventHeader;
- }
-
- public Measurement getMeasurement() {
- return measurement;
- }
-
- public void setMeasurement(Measurement measurement) {
- this.measurement = measurement;
- }
-
+
+ private CommonEventHeaderPm commonEventHeader;
+ private Measurement measurement;
+
+ public CommonEventHeaderPm getCommonEventHeader() {
+ return commonEventHeader;
+ }
+
+ public void setCommonEventHeader(CommonEventHeaderPm commonEventHeader) {
+ this.commonEventHeader = commonEventHeader;
+ }
+
+ public Measurement getMeasurement() {
+ return measurement;
+ }
+
+ public void setMeasurement(Measurement measurement) {
+ this.measurement = measurement;
+ }
+
}
diff --git a/ransim/ransimctrlr/RANSIM-CTRLR/src/main/java/org/onap/ransim/websocket/model/FaultFields.java b/ransim/ransimctrlr/RANSIM-CTRLR/src/main/java/org/onap/ransim/websocket/model/FaultFields.java
index ebf31f7..4d9b1e8 100644
--- a/ransim/ransimctrlr/RANSIM-CTRLR/src/main/java/org/onap/ransim/websocket/model/FaultFields.java
+++ b/ransim/ransimctrlr/RANSIM-CTRLR/src/main/java/org/onap/ransim/websocket/model/FaultFields.java
@@ -23,66 +23,65 @@ package org.onap.ransim.websocket.model;
import java.util.Map;
public class FaultFields {
-
- private String alarmCondition;
- private String eventSourceType;
- private String specificProblem;
- private String eventSeverity;
- private Map<String, String> alarmAdditionalInformation;
-
- public FaultFields() {
- super();
- // TODO Auto-generated constructor stub
- }
-
- public FaultFields(String alarmCondition, String eventSourceType, String specificProblem,
- String eventSeverity, Map<String, String> alarmAdditionalInformation) {
- super();
- this.alarmCondition = alarmCondition;
- this.eventSourceType = eventSourceType;
- this.specificProblem = specificProblem;
- this.eventSeverity = eventSeverity;
- this.alarmAdditionalInformation = alarmAdditionalInformation;
- }
-
- public String getAlarmCondition() {
- return alarmCondition;
- }
-
- public void setAlarmCondition(String alarmCondition) {
- this.alarmCondition = alarmCondition;
- }
-
- public String getEventSourceType() {
- return eventSourceType;
- }
-
- public void setEventSourceType(String eventSourceType) {
- this.eventSourceType = eventSourceType;
- }
-
- public String getSpecificProblem() {
- return specificProblem;
- }
-
- public void setSpecificProblem(String specificProblem) {
- this.specificProblem = specificProblem;
- }
-
- public String getEventSeverity() {
- return eventSeverity;
- }
-
- public void setEventSeverity(String eventSeverity) {
- this.eventSeverity = eventSeverity;
- }
-
- public Map<String, String> getAlarmAdditionalInformation() {
- return alarmAdditionalInformation;
- }
-
- public void setAlarmAdditionalInformation(Map<String, String> alarmAdditionalInformation) {
- this.alarmAdditionalInformation = alarmAdditionalInformation;
- }
-
+
+ private String alarmCondition;
+ private String eventSourceType;
+ private String specificProblem;
+ private String eventSeverity;
+ private Map<String, String> alarmAdditionalInformation;
+
+ public FaultFields() {
+ super();
+ }
+
+ public FaultFields(String alarmCondition, String eventSourceType, String specificProblem, String eventSeverity,
+ Map<String, String> alarmAdditionalInformation) {
+ super();
+ this.alarmCondition = alarmCondition;
+ this.eventSourceType = eventSourceType;
+ this.specificProblem = specificProblem;
+ this.eventSeverity = eventSeverity;
+ this.alarmAdditionalInformation = alarmAdditionalInformation;
+ }
+
+ public String getAlarmCondition() {
+ return alarmCondition;
+ }
+
+ public void setAlarmCondition(String alarmCondition) {
+ this.alarmCondition = alarmCondition;
+ }
+
+ public String getEventSourceType() {
+ return eventSourceType;
+ }
+
+ public void setEventSourceType(String eventSourceType) {
+ this.eventSourceType = eventSourceType;
+ }
+
+ public String getSpecificProblem() {
+ return specificProblem;
+ }
+
+ public void setSpecificProblem(String specificProblem) {
+ this.specificProblem = specificProblem;
+ }
+
+ public String getEventSeverity() {
+ return eventSeverity;
+ }
+
+ public void setEventSeverity(String eventSeverity) {
+ this.eventSeverity = eventSeverity;
+ }
+
+ public Map<String, String> getAlarmAdditionalInformation() {
+ return alarmAdditionalInformation;
+ }
+
+ public void setAlarmAdditionalInformation(Map<String, String> alarmAdditionalInformation) {
+ this.alarmAdditionalInformation = alarmAdditionalInformation;
+ }
+
}
diff --git a/ransim/ransimctrlr/RANSIM-CTRLR/src/main/java/org/onap/ransim/websocket/model/FmMessage.java b/ransim/ransimctrlr/RANSIM-CTRLR/src/main/java/org/onap/ransim/websocket/model/FmMessage.java
index c11ab64..ceb5922 100644
--- a/ransim/ransimctrlr/RANSIM-CTRLR/src/main/java/org/onap/ransim/websocket/model/FmMessage.java
+++ b/ransim/ransimctrlr/RANSIM-CTRLR/src/main/java/org/onap/ransim/websocket/model/FmMessage.java
@@ -24,14 +24,14 @@ import java.util.List;
public class FmMessage {
- List<EventFm> fmEventList;
-
- public void setFmEventList(List<EventFm> data) {
- this.fmEventList = data;
- }
+ List<EventFm> fmEventList;
+
+ public void setFmEventList(List<EventFm> data) {
+ this.fmEventList = data;
+ }
+
+ public List<EventFm> getFmEventList() {
+ return fmEventList;
+ }
- public List<EventFm> getFmEventList() {
- return fmEventList;
- }
-
}
diff --git a/ransim/ransimctrlr/RANSIM-CTRLR/src/main/java/org/onap/ransim/websocket/model/GNBCUUPFunction.java b/ransim/ransimctrlr/RANSIM-CTRLR/src/main/java/org/onap/ransim/websocket/model/GNBCUUPFunction.java
new file mode 100644
index 0000000..6c48c4f
--- /dev/null
+++ b/ransim/ransimctrlr/RANSIM-CTRLR/src/main/java/org/onap/ransim/websocket/model/GNBCUUPFunction.java
@@ -0,0 +1,31 @@
+package org.onap.ransim.websocket.model;
+
+import com.fasterxml.jackson.annotation.JsonInclude;
+
+@JsonInclude(JsonInclude.Include.NON_NULL)
+public class GNBCUUPFunction {
+
+ private String idGNBCUUPFunction;
+
+ private Attributes attributes;
+
+ public String getIdGNBCUUPFunction() {
+ return idGNBCUUPFunction;
+ }
+ public void setIdGNBCUUPFunction(String idGNBCUUPFunction) {
+ this.idGNBCUUPFunction = idGNBCUUPFunction;
+ }
+ public Attributes getAttributes() {
+ return attributes;
+ }
+ public void setAttributes(Attributes attributes) {
+ this.attributes = attributes;
+ }
+
+ public GNBCUUPFunction()
+ {
+
+ }
+
+}
+
diff --git a/ransim/ransimctrlr/RANSIM-CTRLR/src/main/java/org/onap/ransim/websocket/model/GNBDUFunction.java b/ransim/ransimctrlr/RANSIM-CTRLR/src/main/java/org/onap/ransim/websocket/model/GNBDUFunction.java
new file mode 100644
index 0000000..985a399
--- /dev/null
+++ b/ransim/ransimctrlr/RANSIM-CTRLR/src/main/java/org/onap/ransim/websocket/model/GNBDUFunction.java
@@ -0,0 +1,40 @@
+package org.onap.ransim.websocket.model;
+
+import java.util.List;
+import com.fasterxml.jackson.annotation.JsonProperty;
+import com.fasterxml.jackson.annotation.JsonInclude;
+
+@JsonInclude(JsonInclude.Include.NON_NULL)
+public class GNBDUFunction {
+
+ private String idGNBDUFunction;
+
+ private Attributes attributes;
+
+ @JsonProperty("NRCellDU")
+ public List<NRCellDU> nRCellDU;
+
+ public String getIdGNBDUFunction() {
+ return idGNBDUFunction;
+ }
+ public void setIdGNBDUFunction(String idGNBDUFunction) {
+ this.idGNBDUFunction = idGNBDUFunction;
+ }
+ public Attributes getAttributes() {
+ return attributes;
+ }
+ public void setAttributes(Attributes attributes) {
+ this.attributes = attributes;
+ }
+ public List<NRCellDU> getnRCellDU() {
+ return nRCellDU;
+ }
+ public void setnRCellDU(List<NRCellDU> nRCellDU) {
+ this.nRCellDU = nRCellDU;
+ }
+ public GNBDUFunction()
+ {
+
+ }
+}
+
diff --git a/ransim/ransimctrlr/RANSIM-CTRLR/src/main/java/org/onap/ransim/websocket/model/Measurement.java b/ransim/ransimctrlr/RANSIM-CTRLR/src/main/java/org/onap/ransim/websocket/model/Measurement.java
index 8f9de10..0417d81 100644
--- a/ransim/ransimctrlr/RANSIM-CTRLR/src/main/java/org/onap/ransim/websocket/model/Measurement.java
+++ b/ransim/ransimctrlr/RANSIM-CTRLR/src/main/java/org/onap/ransim/websocket/model/Measurement.java
@@ -22,25 +22,24 @@ package org.onap.ransim.websocket.model;
import java.util.List;
public class Measurement {
-
- private int measurementInterval;
- private List<AdditionalMeasurements> additionalMeasurements;
-
- public int getMeasurementInterval() {
- return measurementInterval;
- }
-
- public void setMeasurementInterval(int measurementInterval) {
- this.measurementInterval = measurementInterval;
- }
-
- public List<AdditionalMeasurements> getAdditionalMeasurements() {
- return additionalMeasurements;
- }
-
- public void setAdditionalMeasurements(
- List<AdditionalMeasurements> additionalMeasurements) {
- this.additionalMeasurements = additionalMeasurements;
- }
-
+
+ private int measurementInterval;
+ private List<AdditionalMeasurements> additionalMeasurements;
+
+ public int getMeasurementInterval() {
+ return measurementInterval;
+ }
+
+ public void setMeasurementInterval(int measurementInterval) {
+ this.measurementInterval = measurementInterval;
+ }
+
+ public List<AdditionalMeasurements> getAdditionalMeasurements() {
+ return additionalMeasurements;
+ }
+
+ public void setAdditionalMeasurements(List<AdditionalMeasurements> additionalMeasurements) {
+ this.additionalMeasurements = additionalMeasurements;
+ }
+
}
diff --git a/ransim/ransimctrlr/RANSIM-CTRLR/src/main/java/org/onap/ransim/websocket/model/MessageTypes.java b/ransim/ransimctrlr/RANSIM-CTRLR/src/main/java/org/onap/ransim/websocket/model/MessageTypes.java
index da4bf92..295b3bf 100644
--- a/ransim/ransimctrlr/RANSIM-CTRLR/src/main/java/org/onap/ransim/websocket/model/MessageTypes.java
+++ b/ransim/ransimctrlr/RANSIM-CTRLR/src/main/java/org/onap/ransim/websocket/model/MessageTypes.java
@@ -21,13 +21,19 @@
package org.onap.ransim.websocket.model;
public class MessageTypes {
- public final static String RC_TO_HC_FMDATA = "FmData";
- public final static String RC_TO_HC_PMDATA = "PmData";
- public final static String RC_TO_HC_SETCONFIGTOPO = "SetConfigTopology";
- public final static String RC_TO_HC_UPDCELL = "UpdateCell";
- public final static String RC_TO_HC_PING = "ping";
-
- public final static String HC_TO_RC_MODPCI = "ModifyPci";
- public final static String HC_TO_RC_MODANR = "ModifyAnr";
-
+ public final static String RC_TO_HC_FMDATA = "FmData";
+ public final static String RC_TO_HC_PMDATA = "PmData";
+ public final static String RC_TO_HC_SETCONFIGTOPO = "INITIAL_CONFIG";
+ public final static String RC_TO_HC_UPDCELL = "UpdateCell";
+ public final static String RC_TO_HC_PING = "PING";
+ public final static String RC_TO_HC_PMFILEDATA = "RC_TO_HC_PMFILEDATA";
+ public final static String HC_TO_RC_MODPCI = "ModifyPci";
+ public final static String HC_TO_RC_MODANR = "ModifyAnr";
+ public final static String HC_TO_RC_RTRIC = "RTRIC_CONFIG";
+ public final static String HC_TO_RC_RRM_POLICY = "HC_TO_RC_RRM_POLICY";
+ public final static String HC_TO_RC_PLMN = "HC_TO_RC_PLMN";
+ public final static String HC_TO_RC_SLICE_PROFILE = "HC_TO_RC_SLICE_PROFILE";
+ public final static String HC_TO_RC_RRM_POLICY_DEL = "HC_TO_RC_RRM_POLICY_DEL";
+ public final static String HC_TO_RC_PLMN_DEL = "HC_TO_RC_PLMN_DEL";
+ public final static String HC_TO_RC_SLICE_PROFILE_DEL = "HC_TO_RC_SLICE_PROFILE_DEL";
}
diff --git a/ransim/ransimctrlr/RANSIM-CTRLR/src/main/java/org/onap/ransim/websocket/model/ModifyNeighbor.java b/ransim/ransimctrlr/RANSIM-CTRLR/src/main/java/org/onap/ransim/websocket/model/ModifyNeighbor.java
index 30ec5d0..209c5fd 100644
--- a/ransim/ransimctrlr/RANSIM-CTRLR/src/main/java/org/onap/ransim/websocket/model/ModifyNeighbor.java
+++ b/ransim/ransimctrlr/RANSIM-CTRLR/src/main/java/org/onap/ransim/websocket/model/ModifyNeighbor.java
@@ -23,33 +23,33 @@ package org.onap.ransim.websocket.model;
import java.util.List;
public class ModifyNeighbor {
-
- private String pnfName;
- private String cellId;
- private List<NeighborHo> neighborList;
-
- public String getPnfName() {
- return pnfName;
- }
-
- public void setPnfName(String pnfName) {
- this.pnfName = pnfName;
- }
-
- public String getCellId() {
- return cellId;
- }
-
- public void setCellId(String cellId) {
- this.cellId = cellId;
- }
-
- public List<NeighborHo> getNeighborList() {
- return neighborList;
- }
-
- public void setNeighborList(List<NeighborHo> neighborList) {
- this.neighborList = neighborList;
- }
-
+
+ private String pnfName;
+ private String cellId;
+ private List<NeighborHo> neighborList;
+
+ public String getPnfName() {
+ return pnfName;
+ }
+
+ public void setPnfName(String pnfName) {
+ this.pnfName = pnfName;
+ }
+
+ public String getCellId() {
+ return cellId;
+ }
+
+ public void setCellId(String cellId) {
+ this.cellId = cellId;
+ }
+
+ public List<NeighborHo> getNeighborList() {
+ return neighborList;
+ }
+
+ public void setNeighborList(List<NeighborHo> neighborList) {
+ this.neighborList = neighborList;
+ }
+
}
diff --git a/ransim/ransimctrlr/RANSIM-CTRLR/src/main/java/org/onap/ransim/websocket/model/ModifyPci.java b/ransim/ransimctrlr/RANSIM-CTRLR/src/main/java/org/onap/ransim/websocket/model/ModifyPci.java
index 6a52624..7214ae8 100644
--- a/ransim/ransimctrlr/RANSIM-CTRLR/src/main/java/org/onap/ransim/websocket/model/ModifyPci.java
+++ b/ransim/ransimctrlr/RANSIM-CTRLR/src/main/java/org/onap/ransim/websocket/model/ModifyPci.java
@@ -24,89 +24,84 @@ import java.util.List;
public class ModifyPci {
- private String pnfName;
-
- private long pciId;
-
- private String cellId;
-
- private List<Neighbor> neighborList;
-
- public long getPciId() {
- return pciId;
- }
-
- public void setPciId(long pciId) {
- this.pciId = pciId;
- }
-
- public String getCellId() {
- return cellId;
- }
-
- public void setCellId(String cellId) {
- this.cellId = cellId;
- }
-
- @Override
- public String toString() {
- return "ModifyPci [PnfName = " + pnfName + ", PciId = " + pciId + ", cellId = " + cellId + "neighborList:"
- + neighborList + "]";
- }
-
- public ModifyPci() {
- // TODO Auto-generated constructor stub
- }
-
- /**
- * Modify Pci value from sdnr.
- *
- * @param pnfName
- * server id name
- * @param pciId
- * pci number
- * @param cellId
- * node id for the cell
- * @param neighborList
- * neighbor list for the cell
- */
- public ModifyPci(String pnfName, long pciId, String cellId, List<Neighbor> neighborList) {
- super();
- this.pnfName = pnfName;
- this.pciId = pciId;
- this.cellId = cellId;
- this.neighborList = neighborList;
- }
-
- public String getPnfName() {
- return pnfName;
- }
-
- public void setPnfName(String pnfName) {
- this.pnfName = pnfName;
- }
-
- public List<Neighbor> getNeighborList() {
- return neighborList;
- }
-
- public void setNeighborList(List<Neighbor> neighborList) {
- this.neighborList = neighborList;
- }
-
- /**
- * Checks if all the parameters are set correctly .
- *
- * @return returns true if the parameter are set correctly
- */
- public boolean isAllSet() {
- if (pnfName == null || pnfName.trim().equals("")) {
- return false;
- }
- if (cellId == null || cellId.trim().equals("")) {
- return false;
- }
- return true;
- }
+ private String pnfName;
+
+ private long pciId;
+
+ private String cellId;
+
+ private List<Neighbor> neighborList;
+
+ public long getPciId() {
+ return pciId;
+ }
+
+ public void setPciId(long pciId) {
+ this.pciId = pciId;
+ }
+
+ public String getCellId() {
+ return cellId;
+ }
+
+ public void setCellId(String cellId) {
+ this.cellId = cellId;
+ }
+
+ @Override
+ public String toString() {
+ return "ModifyPci [PnfName = " + pnfName + ", PciId = " + pciId + ", cellId = " + cellId + "neighborList:"
+ + neighborList + "]";
+ }
+
+ public ModifyPci() {
+ }
+
+ /**
+ * Modify Pci value from sdnr.
+ *
+ * @param pnfName server id name
+ * @param pciId pci number
+ * @param cellId node id for the cell
+ * @param neighborList neighbor list for the cell
+ */
+ public ModifyPci(String pnfName, long pciId, String cellId, List<Neighbor> neighborList) {
+ super();
+ this.pnfName = pnfName;
+ this.pciId = pciId;
+ this.cellId = cellId;
+ this.neighborList = neighborList;
+ }
+
+ public String getPnfName() {
+ return pnfName;
+ }
+
+ public void setPnfName(String pnfName) {
+ this.pnfName = pnfName;
+ }
+
+ public List<Neighbor> getNeighborList() {
+ return neighborList;
+ }
+
+ public void setNeighborList(List<Neighbor> neighborList) {
+ this.neighborList = neighborList;
+ }
+
+ /**
+ * Checks if all the parameters are set correctly .
+ *
+ * @return returns true if the parameter are set correctly
+ */
+ public boolean isAllSet() {
+ if (pnfName == null || pnfName.trim().equals("")) {
+ return false;
+ }
+ if (cellId == null || cellId.trim().equals("")) {
+ return false;
+ }
+ return true;
+ }
}
diff --git a/ransim/ransimctrlr/RANSIM-CTRLR/src/main/java/org/onap/ransim/websocket/model/NRCellDU.java b/ransim/ransimctrlr/RANSIM-CTRLR/src/main/java/org/onap/ransim/websocket/model/NRCellDU.java
new file mode 100644
index 0000000..01d51e9
--- /dev/null
+++ b/ransim/ransimctrlr/RANSIM-CTRLR/src/main/java/org/onap/ransim/websocket/model/NRCellDU.java
@@ -0,0 +1,32 @@
+package org.onap.ransim.websocket.model;
+import com.fasterxml.jackson.annotation.JsonInclude;
+
+@JsonInclude(JsonInclude.Include.NON_NULL)
+public class NRCellDU {
+
+ private String idNRCellDU;
+
+ private Attributes attributes;
+
+ public String getIdNRCellDU() {
+ return idNRCellDU;
+ }
+ public void setIdNRCellDU(String idNRCellDU) {
+ this.idNRCellDU = idNRCellDU;
+ }
+ public Attributes getAttributes() {
+ return attributes;
+ }
+ public void setAttributes(Attributes attributes) {
+ this.attributes = attributes;
+ }
+ public NRCellDU(Attributes attributes) {
+ super();
+ this.attributes = attributes;
+ }
+ public NRCellDU()
+ {
+
+ }
+}
+
diff --git a/ransim/ransimctrlr/RANSIM-CTRLR/src/main/java/org/onap/ransim/websocket/model/NearRTRIC.java b/ransim/ransimctrlr/RANSIM-CTRLR/src/main/java/org/onap/ransim/websocket/model/NearRTRIC.java
new file mode 100644
index 0000000..47e1ef8
--- /dev/null
+++ b/ransim/ransimctrlr/RANSIM-CTRLR/src/main/java/org/onap/ransim/websocket/model/NearRTRIC.java
@@ -0,0 +1,48 @@
+package org.onap.ransim.websocket.model;
+
+import java.util.List;
+import com.fasterxml.jackson.annotation.JsonProperty;
+import com.fasterxml.jackson.annotation.JsonInclude;
+
+@JsonInclude(JsonInclude.Include.NON_NULL)
+public class NearRTRIC {
+
+ private String idNearRTRIC;
+
+ private Attributes attributes;
+
+ @JsonProperty("GNBDUFunction")
+ private List<GNBDUFunction> gNBDUFunction;
+
+ @JsonProperty("GNBCUUPFunction")
+ private List<GNBCUUPFunction> gNBCUUPFunction;
+
+ public String getIdNearRTRIC () {
+ return idNearRTRIC;
+ }
+ public void setIdNearRTRIC(String idNearRTRIC) {
+ this.idNearRTRIC = idNearRTRIC;
+ }
+ public Attributes getAttributes() {
+ return attributes;
+ }
+ public void setAttributes(Attributes attributes) {
+ this.attributes = attributes;
+ }
+ public List<GNBDUFunction> getgNBDUFunction() {
+ return gNBDUFunction;
+ }
+ public void setgNBDUFunction(List<GNBDUFunction> gNBDUFunction) {
+ this.gNBDUFunction = gNBDUFunction;
+ }
+ public List<GNBCUUPFunction> getgNBCUUPFunction() {
+ return gNBCUUPFunction;
+ }
+ public void setgNBCUUPFunction(List<GNBCUUPFunction> gNBCUUPFunction) {
+ this.gNBCUUPFunction = gNBCUUPFunction;
+ }
+ public NearRTRIC()
+ {
+
+ }
+} \ No newline at end of file
diff --git a/ransim/ransimctrlr/RANSIM-CTRLR/src/main/java/org/onap/ransim/websocket/model/Neighbor.java b/ransim/ransimctrlr/RANSIM-CTRLR/src/main/java/org/onap/ransim/websocket/model/Neighbor.java
index 65c6940..59d9659 100644
--- a/ransim/ransimctrlr/RANSIM-CTRLR/src/main/java/org/onap/ransim/websocket/model/Neighbor.java
+++ b/ransim/ransimctrlr/RANSIM-CTRLR/src/main/java/org/onap/ransim/websocket/model/Neighbor.java
@@ -22,67 +22,68 @@ package org.onap.ransim.websocket.model;
public class Neighbor {
- private String plmnId;
- private String nodeId;
- private long physicalCellId;
- private String serverId;
- private String pnfName;
- private boolean blacklisted;
-
- public String getPlmnId() {
- return plmnId;
- }
-
- public void setPlmnId(String plmnId) {
- this.plmnId = plmnId;
- }
-
- public String getNodeId() {
- return nodeId;
- }
-
- public void setNodeId(String nodeId) {
- this.nodeId = nodeId;
- }
-
- public long getPhysicalCellId() {
- return physicalCellId;
- }
-
- public void setPhysicalCellId(long physicalCellId) {
- this.physicalCellId = physicalCellId;
- }
-
- public String getServerId() {
- return serverId;
- }
-
- public void setServerId(String serverId) {
- this.serverId = serverId;
- }
-
- public String getPnfName() {
- return pnfName;
- }
-
- public void setPnfName(String pnfName) {
- this.pnfName = pnfName;
- }
-
- public Neighbor() {
- // TODO Auto-generated constructor stub
- }
-
- public boolean isBlacklisted() {
- return blacklisted;
- }
-
- public void setBlacklisted(boolean blacklisted) {
- this.blacklisted = blacklisted;
- }
- @Override
- public String toString() {
- return "Neighbor [nodeId=" + nodeId + ", physicalCellId=" + physicalCellId + ", serverId=" + serverId
- + ", pnfName=" + pnfName + "]";
- }
+ private String plmnId;
+ private String nodeId;
+ private long physicalCellId;
+ private String serverId;
+ private String pnfName;
+ private boolean blacklisted;
+
+ public String getPlmnId() {
+ return plmnId;
+ }
+
+ public void setPlmnId(String plmnId) {
+ this.plmnId = plmnId;
+ }
+
+ public String getNodeId() {
+ return nodeId;
+ }
+
+ public void setNodeId(String nodeId) {
+ this.nodeId = nodeId;
+ }
+
+ public long getPhysicalCellId() {
+ return physicalCellId;
+ }
+
+ public void setPhysicalCellId(long physicalCellId) {
+ this.physicalCellId = physicalCellId;
+ }
+
+ public String getServerId() {
+ return serverId;
+ }
+
+ public void setServerId(String serverId) {
+ this.serverId = serverId;
+ }
+
+ public String getPnfName() {
+ return pnfName;
+ }
+
+ public void setPnfName(String pnfName) {
+ this.pnfName = pnfName;
+ }
+
+ public Neighbor() {
+ // TODO Auto-generated constructor stub
+ }
+
+ public boolean isBlacklisted() {
+ return blacklisted;
+ }
+
+ public void setBlacklisted(boolean blacklisted) {
+ this.blacklisted = blacklisted;
+ }
+
+ @Override
+ public String toString() {
+ return "Neighbor [nodeId=" + nodeId + ", physicalCellId=" + physicalCellId + ", serverId=" + serverId
+ + ", pnfName=" + pnfName + "]";
+ }
}
diff --git a/ransim/ransimctrlr/RANSIM-CTRLR/src/main/java/org/onap/ransim/websocket/model/NeighborHo.java b/ransim/ransimctrlr/RANSIM-CTRLR/src/main/java/org/onap/ransim/websocket/model/NeighborHo.java
index 5b7f41a..4bccb6d 100644
--- a/ransim/ransimctrlr/RANSIM-CTRLR/src/main/java/org/onap/ransim/websocket/model/NeighborHo.java
+++ b/ransim/ransimctrlr/RANSIM-CTRLR/src/main/java/org/onap/ransim/websocket/model/NeighborHo.java
@@ -21,31 +21,33 @@
package org.onap.ransim.websocket.model;
public class NeighborHo {
-
- private String nodeId;
- private long pciId;
- private boolean blacklisted;
-
- public String getNodeId() {
- return nodeId;
- }
- public void setNodeId(String nodeId) {
- this.nodeId = nodeId;
- }
-
- public long getPciId() {
- return pciId;
- }
- public void setPciId(long pciId) {
- this.pciId = pciId;
- }
- public boolean isBlacklisted() {
- return blacklisted;
- }
- public void setBlacklisted(boolean blacklisted) {
- this.blacklisted = blacklisted;
- }
-
-
-
+
+ private String nodeId;
+ private long pciId;
+ private boolean blacklisted;
+
+ public String getNodeId() {
+ return nodeId;
+ }
+
+ public void setNodeId(String nodeId) {
+ this.nodeId = nodeId;
+ }
+
+ public long getPciId() {
+ return pciId;
+ }
+
+ public void setPciId(long pciId) {
+ this.pciId = pciId;
+ }
+
+ public boolean isBlacklisted() {
+ return blacklisted;
+ }
+
+ public void setBlacklisted(boolean blacklisted) {
+ this.blacklisted = blacklisted;
+ }
+
}
diff --git a/ransim/ransimctrlr/RANSIM-CTRLR/src/main/java/org/onap/ransim/websocket/model/PmMessage.java b/ransim/ransimctrlr/RANSIM-CTRLR/src/main/java/org/onap/ransim/websocket/model/PmMessage.java
index 3fb63b7..9bdf27a 100644
--- a/ransim/ransimctrlr/RANSIM-CTRLR/src/main/java/org/onap/ransim/websocket/model/PmMessage.java
+++ b/ransim/ransimctrlr/RANSIM-CTRLR/src/main/java/org/onap/ransim/websocket/model/PmMessage.java
@@ -24,14 +24,14 @@ import java.util.List;
public class PmMessage {
- List<EventPm> eventPmList;
-
- public void setEventPmList(List<EventPm> data) {
- this.eventPmList = data;
- }
+ List<EventPm> eventPmList;
+
+ public void setEventPmList(List<EventPm> data) {
+ this.eventPmList = data;
+ }
+
+ public List<EventPm> getEventPmList() {
+ return eventPmList;
+ }
- public List<EventPm> getEventPmList() {
- return eventPmList;
- }
-
}
diff --git a/ransim/ransimctrlr/RANSIM-CTRLR/src/main/java/org/onap/ransim/websocket/model/RanNetwork.java b/ransim/ransimctrlr/RANSIM-CTRLR/src/main/java/org/onap/ransim/websocket/model/RanNetwork.java
new file mode 100644
index 0000000..e03f9f3
--- /dev/null
+++ b/ransim/ransimctrlr/RANSIM-CTRLR/src/main/java/org/onap/ransim/websocket/model/RanNetwork.java
@@ -0,0 +1,47 @@
+/*-
+ * ============LICENSE_START=======================================================
+ * Ran Simulator Controller
+ * ================================================================================
+ * Copyright (C) 2020 Wipro Limited.
+ * ================================================================================
+ * Licensed 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
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License 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.onap.ransim.websocket.model;
+
+import java.util.List;
+import com.fasterxml.jackson.annotation.JsonProperty;
+import com.fasterxml.jackson.annotation.JsonInclude;
+
+@JsonInclude(JsonInclude.Include.NON_NULL)
+public class RanNetwork {
+
+ @JsonProperty("NearRTRIC")
+ private List<NearRTRIC> nearRTRIC;
+
+ public List<NearRTRIC> getNearRTRIC() {
+ return nearRTRIC;
+ }
+
+ public void setNearRTRIC(List<NearRTRIC> nearRTRIC) {
+ this.nearRTRIC = nearRTRIC;
+ }
+
+ public RanNetwork()
+ {
+
+ }
+
+}
+
diff --git a/ransim/ransimctrlr/RANSIM-CTRLR/src/main/java/org/onap/ransim/websocket/model/SNSSAI.java b/ransim/ransimctrlr/RANSIM-CTRLR/src/main/java/org/onap/ransim/websocket/model/SNSSAI.java
new file mode 100644
index 0000000..5deddc0
--- /dev/null
+++ b/ransim/ransimctrlr/RANSIM-CTRLR/src/main/java/org/onap/ransim/websocket/model/SNSSAI.java
@@ -0,0 +1,31 @@
+package org.onap.ransim.websocket.model;
+
+import java.util.*;
+
+public class SNSSAI {
+
+ private String sNssai;
+
+ private List<ConfigData> configData;
+
+ public String getSNssai() {
+ return sNssai;
+ }
+
+ public void setSNssai(String sNssai) {
+ this.sNssai = sNssai;
+ }
+
+ public List<ConfigData> getConfigData() {
+ return configData;
+ }
+
+ public void setConfigData(List<ConfigData> configData) {
+ this.configData = configData;
+ }
+
+ public SNSSAI() {
+
+ }
+
+} \ No newline at end of file
diff --git a/ransim/ransimctrlr/RANSIM-CTRLR/src/main/java/org/onap/ransim/websocket/model/SetConfigTopology.java b/ransim/ransimctrlr/RANSIM-CTRLR/src/main/java/org/onap/ransim/websocket/model/SetConfigTopology.java
index 9b22ebd..d61e5c3 100644
--- a/ransim/ransimctrlr/RANSIM-CTRLR/src/main/java/org/onap/ransim/websocket/model/SetConfigTopology.java
+++ b/ransim/ransimctrlr/RANSIM-CTRLR/src/main/java/org/onap/ransim/websocket/model/SetConfigTopology.java
@@ -24,74 +24,70 @@ import java.util.List;
public class SetConfigTopology {
- private String serverId;
- private String uuid;
- private String ip;
- private String netconfPort;
- private List<Topology> topology;
-
- public SetConfigTopology() {
-
- }
-
- /**
- * Cell details for the given netconf server.
- *
- * @param serverId
- * netconf server id
- * @param ip
- * ip address
- * @param netconfPort
- * port number
- * @param topology
- * cell topology for given server id
- */
- public SetConfigTopology(String serverId, String ip, String netconfPort, List<Topology> topology) {
- super();
- this.serverId = serverId;
- this.ip = ip;
- this.netconfPort = netconfPort;
- this.topology = topology;
- }
-
- public String getServerId() {
- return serverId;
- }
-
- public void setServerId(String serverId) {
- this.serverId = serverId;
- }
-
- public String getUuid() {
- return uuid;
- }
-
- public void setUuid(String uuid) {
- this.uuid = uuid;
- }
-
- public String getIp() {
- return ip;
- }
-
- public void setIp(String ip) {
- this.ip = ip;
- }
-
- public String getNetconfPort() {
- return netconfPort;
- }
-
- public void setNetconfPort(String netconfPort) {
- this.netconfPort = netconfPort;
- }
-
- public List<Topology> getTopology() {
- return topology;
- }
-
- public void setTopology(List<Topology> topology) {
- this.topology = topology;
- }
+ private String serverId;
+ private String uuid;
+ private String ip;
+ private String netconfPort;
+ private List<Topology> topology;
+
+ public SetConfigTopology() {
+
+ }
+
+ /**
+ * Cell details for the given netconf server.
+ *
+ * @param serverId netconf server id
+ * @param ip ip address
+ * @param netconfPort port number
+ * @param topology cell topology for given server id
+ */
+ public SetConfigTopology(String serverId, String ip, String netconfPort, List<Topology> topology) {
+ super();
+ this.serverId = serverId;
+ this.ip = ip;
+ this.netconfPort = netconfPort;
+ this.topology = topology;
+ }
+
+ public String getServerId() {
+ return serverId;
+ }
+
+ public void setServerId(String serverId) {
+ this.serverId = serverId;
+ }
+
+ public String getUuid() {
+ return uuid;
+ }
+
+ public void setUuid(String uuid) {
+ this.uuid = uuid;
+ }
+
+ public String getIp() {
+ return ip;
+ }
+
+ public void setIp(String ip) {
+ this.ip = ip;
+ }
+
+ public String getNetconfPort() {
+ return netconfPort;
+ }
+
+ public void setNetconfPort(String netconfPort) {
+ this.netconfPort = netconfPort;
+ }
+
+ public List<Topology> getTopology() {
+ return topology;
+ }
+
+ public void setTopology(List<Topology> topology) {
+ this.topology = topology;
+ }
}
diff --git a/ransim/ransimctrlr/RANSIM-CTRLR/src/main/java/org/onap/ransim/websocket/model/SlicingPmMessage.java b/ransim/ransimctrlr/RANSIM-CTRLR/src/main/java/org/onap/ransim/websocket/model/SlicingPmMessage.java
new file mode 100644
index 0000000..13a6b4d
--- /dev/null
+++ b/ransim/ransimctrlr/RANSIM-CTRLR/src/main/java/org/onap/ransim/websocket/model/SlicingPmMessage.java
@@ -0,0 +1,83 @@
+/*-
+ * ============LICENSE_START=======================================================
+ * Ran Simulator Controller
+ * ================================================================================
+ * Copyright (C) 2020 Wipro Limited.
+ * ================================================================================
+ * Licensed 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
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License 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.onap.ransim.websocket.model;
+
+public class SlicingPmMessage {
+
+ private String sourceName;
+ private String fileName;
+ private double startEpochMicrosec;
+ private double lastEpochMicrosec;
+ private String pmData;
+
+ public String getSourceName() {
+ return sourceName;
+ }
+
+ public void setSourceName(String sourceName) {
+ this.sourceName = sourceName;
+ }
+
+ public String getFileName() {
+ return fileName;
+ }
+
+ public void setFileName(String fileName) {
+ this.fileName = fileName;
+ }
+
+ public double getStartEpochMicrosec() {
+ return startEpochMicrosec;
+ }
+
+ public void setStartEpochMicrosec(double startEpochMicrosec) {
+ this.startEpochMicrosec = startEpochMicrosec;
+ }
+
+ public double getLastEpochMicrosec() {
+ return lastEpochMicrosec;
+ }
+
+ public void setLastEpochMicrosec(double lastEpochMicrosec) {
+ this.lastEpochMicrosec = lastEpochMicrosec;
+ }
+
+ public String getPmData() {
+ return pmData;
+ }
+
+ public void setPmData(String pmData) {
+ this.pmData = pmData;
+ }
+
+ public SlicingPmMessage(String sourceName, String fileName, double startEpochMicrosec, double lastEpochMicrosec, String pmData) {
+ this.sourceName = sourceName;
+ this.fileName = fileName;
+ this.startEpochMicrosec = startEpochMicrosec;
+ this.lastEpochMicrosec = lastEpochMicrosec;
+ this.pmData = pmData;
+ }
+
+ public SlicingPmMessage() {
+
+ }
+
+}
diff --git a/ransim/ransimctrlr/RANSIM-CTRLR/src/main/java/org/onap/ransim/websocket/model/Topology.java b/ransim/ransimctrlr/RANSIM-CTRLR/src/main/java/org/onap/ransim/websocket/model/Topology.java
index b99f64a..9869ea4 100644
--- a/ransim/ransimctrlr/RANSIM-CTRLR/src/main/java/org/onap/ransim/websocket/model/Topology.java
+++ b/ransim/ransimctrlr/RANSIM-CTRLR/src/main/java/org/onap/ransim/websocket/model/Topology.java
@@ -24,73 +24,69 @@ import java.util.List;
public class Topology {
- private String pnfName;
-
- private long pciId;
-
- private String cellId;
-
- private List<Neighbor> neighborList;
-
- public long getPciId() {
- return pciId;
- }
-
- public void setPciId(long pciId) {
- this.pciId = pciId;
- }
-
- public String getCellId() {
- return cellId;
- }
-
- public void setCellId(String cellId) {
- this.cellId = cellId;
- }
-
- public List<Neighbor> getNeighborList() {
- return neighborList;
- }
-
- public void setNeighborList(List<Neighbor> neighborList) {
- this.neighborList = neighborList;
- }
-
- @Override
- public String toString() {
- return "Topology [PnfName = " + pnfName + ", PciId = " + pciId + ", cellId = " + cellId + ", neighborList = "
- + neighborList + "]";
- }
-
- /**
- * Contails the necessary cell details.
- *
- * @param pnfName
- * server id name
- * @param pciId
- * pci number
- * @param cellId
- * node id for the cel
- * @param neighborList
- * neighbor list for the cell
- */
- public Topology(String pnfName, long pciId, String cellId, List<Neighbor> neighborList) {
- super();
- this.pnfName = pnfName;
- this.pciId = pciId;
- this.cellId = cellId;
- this.neighborList = neighborList;
- }
-
- public Topology() {
- }
-
- public String getPnfName() {
- return pnfName;
- }
-
- public void setPnfName(String pnfName) {
- this.pnfName = pnfName;
- }
+ private String pnfName;
+
+ private long pciId;
+
+ private String cellId;
+
+ private List<Neighbor> neighborList;
+
+ public long getPciId() {
+ return pciId;
+ }
+
+ public void setPciId(long pciId) {
+ this.pciId = pciId;
+ }
+
+ public String getCellId() {
+ return cellId;
+ }
+
+ public void setCellId(String cellId) {
+ this.cellId = cellId;
+ }
+
+ public List<Neighbor> getNeighborList() {
+ return neighborList;
+ }
+
+ public void setNeighborList(List<Neighbor> neighborList) {
+ this.neighborList = neighborList;
+ }
+
+ @Override
+ public String toString() {
+ return "Topology [PnfName = " + pnfName + ", PciId = " + pciId + ", cellId = " + cellId + ", neighborList = "
+ + neighborList + "]";
+ }
+
+ /**
+ * Contails the necessary cell details.
+ *
+ * @param pnfName server id name
+ * @param pciId pci number
+ * @param cellId node id for the cel
+ * @param neighborList neighbor list for the cell
+ */
+ public Topology(String pnfName, long pciId, String cellId, List<Neighbor> neighborList) {
+ super();
+ this.pnfName = pnfName;
+ this.pciId = pciId;
+ this.cellId = cellId;
+ this.neighborList = neighborList;
+ }
+
+ public Topology() {
+ }
+
+ public String getPnfName() {
+ return pnfName;
+ }
+
+ public void setPnfName(String pnfName) {
+ this.pnfName = pnfName;
+ }
}
diff --git a/ransim/ransimctrlr/RANSIM-CTRLR/src/main/java/org/onap/ransim/websocket/model/UpdateCell.java b/ransim/ransimctrlr/RANSIM-CTRLR/src/main/java/org/onap/ransim/websocket/model/UpdateCell.java
index 5794fb1..e515172 100644
--- a/ransim/ransimctrlr/RANSIM-CTRLR/src/main/java/org/onap/ransim/websocket/model/UpdateCell.java
+++ b/ransim/ransimctrlr/RANSIM-CTRLR/src/main/java/org/onap/ransim/websocket/model/UpdateCell.java
@@ -22,64 +22,60 @@ package org.onap.ransim.websocket.model;
public class UpdateCell {
- private String serverId;
- private String ip;
- private String netconfPort;
- Topology oneCell;
+ private String serverId;
+ private String ip;
+ private String netconfPort;
+ Topology oneCell;
- public UpdateCell() {
- }
+ public UpdateCell() {
+ }
- public String getServerId() {
- return serverId;
- }
+ public String getServerId() {
+ return serverId;
+ }
- public void setServerId(String serverId) {
- this.serverId = serverId;
- }
+ public void setServerId(String serverId) {
+ this.serverId = serverId;
+ }
- public String getIp() {
- return ip;
- }
+ public String getIp() {
+ return ip;
+ }
- public void setIp(String ip) {
- this.ip = ip;
- }
+ public void setIp(String ip) {
+ this.ip = ip;
+ }
- public String getNetconfPort() {
- return netconfPort;
- }
+ public String getNetconfPort() {
+ return netconfPort;
+ }
- public void setNetconfPort(String netconfPort) {
- this.netconfPort = netconfPort;
- }
+ public void setNetconfPort(String netconfPort) {
+ this.netconfPort = netconfPort;
+ }
- public Topology getOneCell() {
- return oneCell;
- }
+ public Topology getOneCell() {
+ return oneCell;
+ }
- public void setOneCell(Topology oneCell) {
- this.oneCell = oneCell;
- }
+ public void setOneCell(Topology oneCell) {
+ this.oneCell = oneCell;
+ }
- /**
- * Update cell details based on input.
- *
- * @param serverId
- * netconf server id
- * @param ip
- * ip address
- * @param netconfPort
- * port number
- * @param oneCell
- * topology details
- */
- public UpdateCell(String serverId, String ip, String netconfPort, Topology oneCell) {
- super();
- this.serverId = serverId;
- this.ip = ip;
- this.netconfPort = netconfPort;
- this.oneCell = oneCell;
- }
+ /**
+ * Update cell details based on input.
+ *
+ * @param serverId netconf server id
+ * @param ip ip address
+ * @param netconfPort port number
+ * @param oneCell topology details
+ */
+ public UpdateCell(String serverId, String ip, String netconfPort, Topology oneCell) {
+ super();
+ this.serverId = serverId;
+ this.ip = ip;
+ this.netconfPort = netconfPort;
+ this.oneCell = oneCell;
+ }
}
diff --git a/ransim/ransimctrlr/RANSIM-CTRLR/src/main/java/org/onap/ransim/websocket/server/RansimWebSocketServer.java b/ransim/ransimctrlr/RANSIM-CTRLR/src/main/java/org/onap/ransim/websocket/server/RansimWebSocketServer.java
index db94bfd..c58feeb 100644
--- a/ransim/ransimctrlr/RANSIM-CTRLR/src/main/java/org/onap/ransim/websocket/server/RansimWebSocketServer.java
+++ b/ransim/ransimctrlr/RANSIM-CTRLR/src/main/java/org/onap/ransim/websocket/server/RansimWebSocketServer.java
@@ -32,191 +32,223 @@ import javax.websocket.server.ServerEndpoint;
import javax.websocket.EncodeException;
import org.apache.log4j.Logger;
-import org.onap.ransim.rest.api.controller.RansimController;
+import org.onap.ransim.rest.api.services.RansimControllerServices;
import org.onap.ransim.websocket.model.DeviceData;
import org.onap.ransim.websocket.model.DeviceDataDecoder;
import org.onap.ransim.websocket.model.DeviceDataEncoder;
import org.onap.ransim.websocket.model.MessageTypes;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Controller;
-@ServerEndpoint(value = "/RansimAgent/{IpPort}", encoders = { DeviceDataEncoder.class }, decoders = { DeviceDataDecoder.class })
+@Controller
+@ServerEndpoint(value = "/RansimAgent/{IpPort}", encoders = { DeviceDataEncoder.class }, decoders = {
+ DeviceDataDecoder.class })
public class RansimWebSocketServer {
-
- static Logger log = Logger.getLogger(RansimWebSocketServer.class.getName());
-
- /**
- * Set of actions to be done when connection is opened.
- *
- * @param session
- * Session details
- * @param ipPort
- * ip address of the agent
- */
- @OnOpen
- public void onOpen(Session session, @PathParam("IpPort") String ipPort) {
- log.info("WSS Ransim client(" + ipPort + ") opened a connection with id " + session.getId());
- try {
- String serverId = RansimController.getRansimController().addWebSocketSessions(ipPort,
- session);
- if (serverId != null) {
- log.info("New websocket session added for " + serverId);
- RansimController.getRansimController().sendInitialConfigForNewAgent(ipPort,
- serverId);
- } else {
- log.info("RansimWebSocketServer: No assigned ServerId found - No intial configuration sent to New Agent "
- + ipPort);
- }
- } catch (Exception e) {
- log.info("Exception in onOpen:", e);
- }
- }
-
- /*
- @OnMessage
- public void onMessage(String messageStr, Session session, @PathParam("IpPort") String ipPort) {
- log.info("WSS Str Message received from client(" + ipPort + ") with id " + session.getId());
- try {
- if (messageStr != null) {
- DeviceData message = new DeviceDataDecoder().decode(messageStr);
- if (message.getMessage() == null || message.getMessage().trim().equals("")) {
- log.debug("Periodic ping message.... ignore");
- return;
- } else {
-
- if (message.getType().equals(MessageTypes.HC_TO_RC_MODPCI)) {
- RansimController.getRansimController().handleModifyPciFromSdnr(
- message.getMessage(), session, ipPort);
- } else if (message.getType().equals(MessageTypes.HC_TO_RC_MODANR)) {
- RansimController.getRansimController().handleModifyNeighborFromSdnr(
- message.getMessage(), session, ipPort);
- }
- }
- }
- } catch (Exception e) {
- log.info("Exception in onMessage:", e);
- }
- }
- */
-
-
- /**
- * Handles the message sent from the agent.
- *
- * @param message
- * message sent from the agent
- * @param session
- * session details
- * @param ipPort
- * ip address
- * public void onMessage(DeviceData message, Session session, @PathParam("IpPort") String ipPort) {
- */
- @OnMessage
- public void onMessage(final DeviceData message, final Session session, @PathParam("IpPort") String ipPort)
- throws IOException, EncodeException {
- log.info("WSS Obj Message received from client(" + ipPort + ") with id " + session.getId());
- try {
- if (message != null) {
- if (message.getMessage() == null || message.getMessage().trim().equals("")) {
- log.debug("Periodic ping message.... ignore");
- return;
- } else {
-
- if (message.getType().equals(MessageTypes.HC_TO_RC_MODPCI)) {
- log.info("Modify pci message received");
- RansimController.getRansimController().handleModifyPciFromSdnr(
- message.getMessage(), session, ipPort);
- } else if (message.getType().equals(MessageTypes.HC_TO_RC_MODANR)) {
- log.info("Modify anr message received");
- RansimController.getRansimController().handleModifyNeighborFromSdnr(
- message.getMessage(), session, ipPort);
- }
- }
- }
- } catch (Exception e) {
- log.info("Exception in onMessage:", e);
- }
- }
-
- /**
- * Set of actions to be done when connection is closed.
- *
- * @param reason
- * reason the session was closed
- * @param session
- * session details
- * @param ipPort
- * ip address
- */
- @OnClose
- public void onClose(CloseReason reason, Session session, @PathParam("IpPort") String ipPort) {
- try {
- log.info("WSS Closing client(" + ipPort + ") cxn with id " + session.getId() + "due to " + reason.getReasonPhrase());
- RansimController.getRansimController().removeWebSocketSessions(ipPort);
- } catch (Exception e) {
- log.info("Exception in onClose:", e);
- }
- }
-
- public static void sendUpdateCellMessage(String str, Session session) {
- DeviceData data = new DeviceData();
- data.setType(MessageTypes.RC_TO_HC_UPDCELL);
- data.setMessage(str);
- try {
- sendMessage(data, session);
- } catch (Exception e) {
- e.printStackTrace();
- }
- }
-
- public static void sendPmMessage(String str, Session session) {
- DeviceData data = new DeviceData();
- data.setType(MessageTypes.RC_TO_HC_PMDATA);
- data.setMessage(str);
- log.info("data.setMessage: " + data.getMessage());
- try {
- sendMessage(data, session);
- } catch (Exception e) {
- e.printStackTrace();
- }
- }
-
- public static void sendFmMessage(String str, Session session) {
- DeviceData data = new DeviceData();
- data.setType(MessageTypes.RC_TO_HC_FMDATA);
- data.setMessage(str);
- try {
- sendMessage(data, session);
- } catch (Exception e) {
- e.printStackTrace();
- }
- }
-
- public static void sendSetConfigTopologyMessage(String str, Session session) {
- DeviceData data = new DeviceData();
- data.setType(MessageTypes.RC_TO_HC_SETCONFIGTOPO);
+
+ static Logger log = Logger.getLogger(RansimWebSocketServer.class.getName());
+
+ private static RansimControllerServices rscServices;
+
+ @Autowired
+ public void setRscServices(RansimControllerServices service){
+ this.rscServices=service;
+ }
+ /**
+ * Set of actions to be done when connection is opened.
+ *
+ * @param session Session details
+ * @param ipPort ip address of the agent
+ */
+ @OnOpen
+ public void onOpen(Session session, @PathParam("IpPort") String ipPort) {
+ try {
+ String useCaseType = RansimControllerServices.useCaseType;
+ switch(useCaseType) {
+ case "sonUsecase":
+ log.info("RansimWebSocketServer : Assign serverId wrt SlicingUsecase");
+ String serverId = rscServices.addWebSocketSessions(ipPort, session);
+ if (serverId != null) {
+ log.info("New websocket session added for " + serverId);
+ rscServices.sendInitialConfigForNewAgent(ipPort, serverId);
+ } else {
+ log.info("RansimWebSocketServer: No assigned ServerId found - No intial configuration sent to New Agent " + ipPort);
+ }
+ break;
+ case "ranSlicingUsecase":
+ log.info("RansimWebSocketServer : Assign serverId wrt RANSlicingUsecase");
+ String ranServerId = rscServices.addRanWebSocketSessions(ipPort, session);
+ if (ranServerId != null) {
+ log.info("New websocket session added for " + ranServerId);
+ rscServices.sendRanInitialConfigForNewAgent(ipPort, ranServerId);
+ } else {
+ log.info("RansimWebSocketServer: No assigned ServerId found - No intial configuration sent to New Agent " + ipPort);
+ }
+ break;
+ default:
+ log.info("RansimWebSocketServer: No assigned ServerId found");
+ }
+ } catch (Exception e) {
+ log.info("Exception in onOpen:", e);
+ }
+ }
+
+ /**
+ * Handles the message sent from the agent.
+ *
+ * @param message message sent from the agent
+ * @param session session details
+ * @param ipPort ip address public void onMessage(DeviceData message, Session
+ * session, @PathParam("IpPort") String ipPort) {
+ */
+ @OnMessage
+ public void onMessage(final DeviceData message, final Session session, @PathParam("IpPort") String ipPort)
+ throws IOException, EncodeException {
+ log.info("WSS Obj Message received from client(" + ipPort + ") with id " + session.getId());
+ try {
+ if (message != null) {
+ if (message.getMessage() == null || message.getMessage().trim().equals("")) {
+ log.debug("Periodic ping message.... ignore");
+ return;
+ } else {
+
+ if (message.getType().equals(MessageTypes.HC_TO_RC_MODPCI)) {
+ log.info("Modify pci message received");
+ rscServices.handleModifyPciFromSdnr(message.getMessage(), session, ipPort);
+ } else if (message.getType().equals(MessageTypes.HC_TO_RC_MODANR)) {
+ log.info("Modify anr message received");
+ rscServices.handleModifyNeighborFromSdnr(message.getMessage(), session, ipPort);
+ } else if (message.getType().equals(MessageTypes.HC_TO_RC_RTRIC)) {
+ log.info("Distribute RTRIC Config message received");
+ rscServices.handleRTRICConfigFromSdnr(message.getMessage(), session, ipPort);
+ } else if(message.getType().equals(MessageTypes.HC_TO_RC_RRM_POLICY)){
+ log.info("Add RRMPolicyRatio message received");
+ rscServices.handleRRMPolicyRatioUpdateFromSdnr(message.getMessage(), session, ipPort);
+ } else if(message.getType().equals(MessageTypes.HC_TO_RC_PLMN)){
+ log.info("Add PLMNInfo message received");
+ rscServices.handlePLMNInfoUpdateFromSdnr(message.getMessage(), session, ipPort);
+ } else if(message.getType().equals(MessageTypes.HC_TO_RC_SLICE_PROFILE)){
+ log.info("Add SliceProfile message received");
+ rscServices.handleSliceProfileUpdateFromSdnr(message.getMessage(), session, ipPort);
+ } else if(message.getType().equals(MessageTypes.HC_TO_RC_RRM_POLICY_DEL)){
+ log.info("Delete RRMPolicyRatio message received");
+ rscServices.handleRRMPolicyRatioDeleteFromSdnr(message.getMessage(), session, ipPort);
+ } else if(message.getType().equals(MessageTypes.HC_TO_RC_PLMN_DEL)){
+ log.info("Delete PLMNInfo message received");
+ rscServices.handlePLMNInfoDeleteFromSdnr(message.getMessage(), session, ipPort);
+ } else if(message.getType().equals(MessageTypes.HC_TO_RC_SLICE_PROFILE_DEL)){
+ log.info("Delete SliceProfile message received");
+ rscServices.handleSliceProfileDeleteFromSdnr(message.getMessage(), session, ipPort);
+ }
+
+ }
+ }
+ } catch (Exception e) {
+ log.info("Exception in onMessage:", e);
+ }
+ }
+
+ /**
+ * Set of actions to be done when connection is closed.
+ *
+ * @param reason reason the session was closed
+ * @param session session details
+ * @param ipPort ip address
+ */
+ @OnClose
+ public void onClose(CloseReason reason, Session session, @PathParam("IpPort") String ipPort) {
+ try {
+ log.info("WSS Closing client(" + ipPort + ") cxn with id " + session.getId() + "due to "
+ + reason.getReasonPhrase());
+ rscServices.removeWebSocketSessions(ipPort);
+ } catch (Exception e) {
+ log.info("Exception in onClose:", e);
+ }
+ }
+
+ public static void sendUpdateCellMessage(String str, Session session) {
+ DeviceData data = new DeviceData();
+ data.setType(MessageTypes.RC_TO_HC_UPDCELL);
+ data.setMessage(str);
+ try {
+ sendMessage(data, session);
+ } catch (Exception e) {
+ e.printStackTrace();
+ }
+ }
+
+ public static void sendPmMessage(String str, Session session) {
+ DeviceData data = new DeviceData();
+ data.setType(MessageTypes.RC_TO_HC_PMDATA);
+ data.setMessage(str);
+ log.info("data.setMessage: " + data.getMessage());
+ try {
+ sendMessage(data, session);
+ } catch (Exception e) {
+ e.printStackTrace();
+ }
+ }
+
+ public static void sendIntelligentSlicingPmData(String str, Session session) {
+ DeviceData data = new DeviceData();
+ data.setType(MessageTypes.RC_TO_HC_PMFILEDATA);
data.setMessage(str);
- try {
- sendMessage(data, session);
- } catch (Exception e) {
- e.printStackTrace();
- }
- }
-
- public static void sendPingMessage(Session session) {
- DeviceData data = new DeviceData();
- data.setType(MessageTypes.RC_TO_HC_PING);
- data.setMessage("");
- try {
- sendMessage(data, session);
- } catch (Exception e) {
- e.printStackTrace();
- }
- }
-
- private static void sendMessage(DeviceData data, Session session) {
- try {
- session.getBasicRemote().sendObject(data);
- } catch (Exception e) {
- log.info("Exception in sendMessage:", e);
- }
- }
+ log.info("data.setMessage: " + data.getMessage());
+ try {
+ sendMessage(data, session);
+ } catch (Exception e) {
+ e.printStackTrace();
+ }
+ }
+
+ public static void sendFmMessage(String str, Session session) {
+ DeviceData data = new DeviceData();
+ data.setType(MessageTypes.RC_TO_HC_FMDATA);
+ data.setMessage(str);
+ try {
+ sendMessage(data, session);
+ } catch (Exception e) {
+ e.printStackTrace();
+ }
+ }
+
+ public static void sendSetConfigTopologyMessage(String str, Session session) {
+ DeviceData data = new DeviceData();
+ data.setType(MessageTypes.RC_TO_HC_SETCONFIGTOPO);
+ data.setMessage(str);
+ try {
+ sendMessage(data, session);
+ } catch (Exception e) {
+ e.printStackTrace();
+ }
+ }
+
+ public static void sendSetReconfigureMessage(String str, Session session) {
+ DeviceData data = new DeviceData();
+ data.setType(MessageTypes.HC_TO_RC_RTRIC);
+ data.setMessage(str);
+ try {
+ sendMessage(data, session);
+ } catch (Exception e) {
+ e.printStackTrace();
+ }
+ }
+
+ public static void sendPingMessage(Session session) {
+ DeviceData data = new DeviceData();
+ data.setType(MessageTypes.RC_TO_HC_PING);
+ data.setMessage("");
+ try {
+ sendMessage(data, session);
+ } catch (Exception e) {
+ e.printStackTrace();
+ }
+ }
+
+ private static void sendMessage(DeviceData data, Session session) {
+ try {
+ session.getBasicRemote().sendObject(data);
+ } catch (Exception e) {
+ log.info("Exception in sendMessage:", e);
+ }
+ }
}
diff --git a/ransim/ransimctrlr/RANSIM-CTRLR/src/main/resources/META-INF/persistence.xml b/ransim/ransimctrlr/RANSIM-CTRLR/src/main/resources/META-INF/persistence.xml
deleted file mode 100644
index bbfb0f3..0000000
--- a/ransim/ransimctrlr/RANSIM-CTRLR/src/main/resources/META-INF/persistence.xml
+++ /dev/null
@@ -1,43 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--
- ============LICENSE_START=======================================================
- ONAP-PAP-REST
- ================================================================================
- Copyright (C) 2017 AT&T Intellectual Property. All rights reserved.
- ================================================================================
- Licensed 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
-
- Unless required by applicable law or agreed to in writing, software
- distributed under the License 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=========================================================
- -->
-<persistence xmlns="http://java.sun.com/xml/ns/persistence"
- xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
- xsi:schemaLocation="http://java.sun.com/xml/ns/persistence http://java.sun.com/xml/ns/persistence/persistence_2_0.xsd"
- version="2.0">
- <persistence-unit name="ransimctrlrdb" transaction-type="RESOURCE_LOCAL">
- <provider>org.eclipse.persistence.jpa.PersistenceProvider</provider>
- <class>org.onap.ransim.rest.api.models.CellDetails</class>
- <class>org.onap.ransim.rest.api.models.CellNeighbor</class>
- <class>org.onap.ransim.rest.api.models.NetconfServers</class>
- <class>org.onap.ransim.rest.api.models.OperationLog</class>
- <class>org.onap.ransim.rest.api.models.NeighborDetails</class>
-
- <properties>
- <property name="javax.persistence.jdbc.driver" value="org.mariadb.jdbc.Driver" />
- <property name="javax.persistence.jdbc.url" value="jdbc:mariadb://mariadb:3306/ransim_db"/>
- <property name="javax.persistence.jdbc.user" value="root"/>
- <property name="javax.persistence.jdbc.password" value="secret"/>
- <property name="eclipselink.target-database" value="MySQL"/>
- <property name="eclipselink.ddl-generation" value="create-or-extend-tables"/>
- <property name="eclipselink.logging.level" value="FINEST"/>
- </properties>
- </persistence-unit>
-</persistence>
diff --git a/ransim/ransimctrlr/RANSIM-CTRLR/src/main/resources/application.properties b/ransim/ransimctrlr/RANSIM-CTRLR/src/main/resources/application.properties
new file mode 100644
index 0000000..02a81ec
--- /dev/null
+++ b/ransim/ransimctrlr/RANSIM-CTRLR/src/main/resources/application.properties
@@ -0,0 +1,8 @@
+spring.datasource.username=root
+spring.datasource.password=secret
+spring.datasource.driver-class-name=org.mariadb.jdbc.Driver
+spring.jpa.hibernate.ddl-auto=update
+spring.datasource.url=jdbc:mariadb://mariadb:3306/ransim_db
+hibernate.dialect=org.hibernate.dialect.MariaDBDialect
+spring.config.location=/tmp/ransim-install/config/
+spring.config.name=ransim
diff --git a/ransim/ransimctrlr/RANSIM-CTRLR/src/main/resources/dumpfileNames.properties b/ransim/ransimctrlr/RANSIM-CTRLR/src/main/resources/dumpfileNames.properties
new file mode 100644
index 0000000..4f9be36
--- /dev/null
+++ b/ransim/ransimctrlr/RANSIM-CTRLR/src/main/resources/dumpfileNames.properties
@@ -0,0 +1 @@
+defaultFiles=latestDump.json,1050cells.json,sample.json \ No newline at end of file
diff --git a/ransim/ransimctrlr/RANSIM-CTRLR/src/test/java/org/onap/ransim/rest/api/controller/TestRansimController.java b/ransim/ransimctrlr/RANSIM-CTRLR/src/test/java/org/onap/ransim/rest/api/controller/TestRansimController.java
index ff88afa..89cfb86 100644
--- a/ransim/ransimctrlr/RANSIM-CTRLR/src/test/java/org/onap/ransim/rest/api/controller/TestRansimController.java
+++ b/ransim/ransimctrlr/RANSIM-CTRLR/src/test/java/org/onap/ransim/rest/api/controller/TestRansimController.java
@@ -32,26 +32,26 @@ import java.util.Set;
import mockit.Mock;
import mockit.MockUp;
-
import org.junit.Test;
import org.junit.runner.RunWith;
-//import org.mockito.Mock;
import org.mockito.Mockito;
+import static org.mockito.Mockito.when;
import org.mockito.runners.MockitoJUnitRunner;
import org.onap.ransim.rest.api.models.CellDetails;
import org.onap.ransim.rest.api.models.CellNeighbor;
import org.onap.ransim.rest.api.models.FmAlarmInfo;
-import org.onap.ransim.rest.api.models.GetNeighborList;
import org.onap.ransim.rest.api.models.NeighborDetails;
import org.onap.ransim.rest.api.models.NeihborId;
import org.onap.ransim.rest.api.models.NetconfServers;
+import org.onap.ransim.rest.api.services.RansimControllerServices;
+import org.onap.ransim.rest.api.services.RansimRepositoryService;
import org.onap.ransim.rest.client.RestClient;
import org.onap.ransim.websocket.model.CommonEventHeaderFm;
import org.onap.ransim.websocket.model.EventFm;
import org.onap.ransim.websocket.model.FaultFields;
import org.springframework.context.annotation.PropertySource;
-
-import com.google.gson.Gson;
+import org.springframework.http.HttpStatus;
+import org.springframework.http.ResponseEntity;
/**
* @author ubuntu16
@@ -60,17 +60,17 @@ import com.google.gson.Gson;
@RunWith(MockitoJUnitRunner.class)
@PropertySource("classpath:ransim.properties")
public class TestRansimController {
+
@Test
public void testGetRansimController() {
-
- RansimController rc = RansimController.getRansimController();
- assertNotNull(rc);
- }
-
+ RansimControllerServices rc = Mockito.mock(RansimControllerServices.class);
+ assertNotNull(rc);
+ }
+
@Test
public void testsetNetconfServers() {
// fail("Not yet implemented");
- RansimController rscontroller = Mockito.mock(RansimController.class);
+ RansimControllerServices rscontroller = Mockito.mock(RansimControllerServices.class);
CellDetails cell1 = new CellDetails("Chn01", 1, "nc1");
CellDetails cell2 = new CellDetails("Chn02", 2, "nc1");
CellDetails cell3 = new CellDetails("Chn03", 3, "nc1");
@@ -80,24 +80,25 @@ public class TestRansimController {
cells.add(cell1);
cells.add(cell2);
cells.add(cell3);
+ cells.add(cell4);
NetconfServers server = new NetconfServers("nc1", null, null, cells);
- new MockUp<RansimControllerDatabase>() {
+ new MockUp<RansimRepositoryService>() {
@Mock
NetconfServers getNetconfServer(String serverId) {
return server;
}
};
- new MockUp<RansimControllerDatabase>() {
+ new MockUp<RansimRepositoryService>() {
@Mock
CellDetails getCellDetail(String nodeId) {
return cell4;
}
};
- new MockUp<RansimControllerDatabase>() {
+ new MockUp<RansimRepositoryService>() {
@Mock
void mergeNetconfServers(NetconfServers netconfServers) {
@@ -115,7 +116,7 @@ public class TestRansimController {
@Test
public void testGenerateNeighborList() {
// fail("Not yet implemented");
- RansimController rscontroller = Mockito.mock(RansimController.class);
+ RansimControllerServices rscontroller = Mockito.mock(RansimControllerServices.class);
Set<NeighborDetails> neighborList = new HashSet<NeighborDetails>();
NeighborDetails nbr1 = new NeighborDetails(new NeihborId("Chn00", "Chn01"), false);
NeighborDetails nbr2 = new NeighborDetails(new NeihborId("Chn00", "Chn02"), false);
@@ -134,7 +135,7 @@ public class TestRansimController {
cellNbr.setNodeId("Chn00");
cellNbr.setNeighborList(neighborList);
- new MockUp<RansimControllerDatabase>() {
+ new MockUp<RansimRepositoryService>() {
@Mock
CellNeighbor getCellNeighbor(String nodeId) {
if (nodeId.equals("Chn00")) {
@@ -146,7 +147,7 @@ public class TestRansimController {
}
};
- new MockUp<RansimControllerDatabase>() {
+ new MockUp<RansimRepositoryService>() {
@Mock
CellDetails getCellDetail(String nodeId) {
if (nodeId.equals("Chn00")) {
@@ -181,7 +182,7 @@ public class TestRansimController {
@Test
public void testSetEventFm() {
// fail("Not yet implemented");
- RansimController rscontroller = Mockito.mock(RansimController.class);
+ RansimControllerServices rscontroller = Mockito.mock(RansimControllerServices.class);
Map<String, String> alarmAdditionalInformation = new HashMap<String, String>();
alarmAdditionalInformation.put("networkId", "abc");
alarmAdditionalInformation.put("collisions", "1");
@@ -191,7 +192,7 @@ public class TestRansimController {
alarmAdditionalInformation);
EventFm checkObj = new EventFm(commonEventHeader, faultFields);
- new MockUp<RansimController>() {
+ new MockUp<RansimControllerServices>() {
@Mock
String getUuid() {
return "";
@@ -230,9 +231,9 @@ public class TestRansimController {
//@Test
public void testStopAllCells() {
- RansimController rscontroller = Mockito.mock(RansimController.class);
+ RansimControllerServices rscontroller = Mockito.mock(RansimControllerServices.class);
- new MockUp<RansimControllerDatabase>() {
+ new MockUp<RansimRepositoryService>() {
@Mock
List<NetconfServers> getNetconfServersList() {
System.out.println("getNetconfServersList");
@@ -254,9 +255,58 @@ public class TestRansimController {
}
};
- String result = rscontroller.stopAllCells();
+ String result = rscontroller.stopAllSimulation();
System.out.println("testStopAllCells: " + result);
assertEquals("Netconf servers unmounted.", result);
}
-} \ No newline at end of file
+ @Test
+ public void testStartRanSimulation() throws Exception {
+
+ ResponseEntity<String> rsEntity = new ResponseEntity<>("Simulation started", HttpStatus.OK);
+ RansimController rscontroller = Mockito.mock(RansimController.class);
+ when(rscontroller.startRanSliceSimulation()).thenReturn(rsEntity);
+ assertEquals(rscontroller.startRanSliceSimulation(), rsEntity);
+
+ }
+
+ @Test
+ public void testFailureStartRanSimulation() throws Exception {
+
+ RansimController rscontroller = new RansimController();
+ ResponseEntity<String> result = rscontroller.startRanSliceSimulation();
+ assertEquals(result.getStatusCode(), HttpStatus.INTERNAL_SERVER_ERROR);
+
+ }
+
+ @Test
+ public void testStopRanSimulation() throws Exception {
+
+ ResponseEntity<String> rsEntity = new ResponseEntity<>("Simulation stopped", HttpStatus.OK);
+ RansimController rscontroller = Mockito.mock(RansimController.class);
+ when(rscontroller.stopRanSliceSimulation()).thenReturn(rsEntity);
+ assertEquals(rscontroller.stopRanSliceSimulation(), rsEntity);
+
+ }
+
+ @Test
+ public void testGenerateIntelligentSlicingPmData() throws Exception {
+
+ ResponseEntity<String> rsEntity = new ResponseEntity<>("IntelligentSlicing PM data generated", HttpStatus.OK);
+ RansimController rscontroller = Mockito.mock(RansimController.class);
+ when(rscontroller.generateIntelligentSlicingPmData()).thenReturn(rsEntity);
+ assertEquals(rscontroller.generateIntelligentSlicingPmData(), rsEntity);
+
+ }
+
+ @Test
+ public void testStopIntelligentSlicingPmData() throws Exception {
+
+ ResponseEntity<String> rsEntity = new ResponseEntity<>("Stopped PM data generation.", HttpStatus.OK);
+ RansimController rscontroller = Mockito.mock(RansimController.class);
+ when(rscontroller.stopIntelligentSlicingPmData()).thenReturn(rsEntity);
+ assertEquals(rscontroller.stopIntelligentSlicingPmData(), rsEntity);
+
+ }
+
+}
diff --git a/ransim/ransimctrlr/RANSIM-CTRLR/src/test/java/org/onap/ransim/rest/api/services/TestRANSliceConfigServices.java b/ransim/ransimctrlr/RANSIM-CTRLR/src/test/java/org/onap/ransim/rest/api/services/TestRANSliceConfigServices.java
new file mode 100644
index 0000000..91c348c
--- /dev/null
+++ b/ransim/ransimctrlr/RANSIM-CTRLR/src/test/java/org/onap/ransim/rest/api/services/TestRANSliceConfigServices.java
@@ -0,0 +1,316 @@
+package org.onap.ransim.rest.api.services;
+
+import static org.junit.Assert.assertEquals;
+
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+
+import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.mockito.Mock;
+import org.mockito.Mockito;
+import org.mockito.runners.MockitoJUnitRunner;
+import org.onap.ransim.rest.api.models.NSSAIConfig;
+import org.onap.ransim.rest.api.services.RANSliceConfigService;
+import org.onap.ransim.rest.web.mapper.GNBCUCPModel;
+import org.onap.ransim.rest.web.mapper.GNBCUUPModel;
+import org.onap.ransim.rest.web.mapper.GNBDUModel;
+import org.onap.ransim.rest.web.mapper.NRCellCUModel;
+import org.onap.ransim.rest.web.mapper.NRCellDUModel;
+import org.onap.ransim.rest.web.mapper.NearRTRICModel;
+import org.onap.ransim.rest.web.mapper.RANSliceInfoModel;
+import org.springframework.context.annotation.PropertySource;
+
+import com.fasterxml.jackson.databind.ObjectMapper;
+
+@RunWith(MockitoJUnitRunner.class)
+@PropertySource("classpath:ransim.properties")
+public class TestRANSliceConfigServices {
+
+ @Mock
+ RANSliceConfigService rANSliceConfigService;
+
+ ObjectMapper objectMapper = new ObjectMapper();
+
+ @Test
+ public void testSaveGNBCUCP() {
+ String input = "{\"gNBCUName\":\"cucpserver1\",\"gNBId\":98763,\"gNBIdLength\":5,\"pLMNId\":\"310-410\",\"nFType\":\"CUCP\",\"nearRTRICId\":11,\"cellCUList\":[{\"cellLocalId\":103594000,\"pLMNInfoList\":[{\"pLMNId\":\"310-410\",\"sNSSAI\":{\"sNSSAI\":\"001-093\",\"status\":\"ACTIVE\",\"configData\":{\"maxNumberOfConns\":3000}}}]}]}";
+ GNBCUCPModel gNBCUCPModel = new GNBCUCPModel();
+ try {
+ gNBCUCPModel = objectMapper.readValue(input, GNBCUCPModel.class);
+ }catch (Exception e) {
+ // TODO Auto-generated catch block
+ e.printStackTrace();
+ }
+
+ Mockito.doReturn(gNBCUCPModel).when(rANSliceConfigService).saveGNBCUCP(gNBCUCPModel);
+ assertEquals(gNBCUCPModel, rANSliceConfigService.saveGNBCUCP(gNBCUCPModel));
+ }
+
+ @Test
+ public void testFetchGNBCUCPData() {
+ String cuCPName = "cucpserver1";
+ GNBCUCPModel gNBCUCPModel = new GNBCUCPModel();
+ Mockito.doReturn(gNBCUCPModel).when(rANSliceConfigService).fetchGNBCUCPData(cuCPName);
+ assertEquals(gNBCUCPModel, rANSliceConfigService.fetchGNBCUCPData(cuCPName));
+ }
+
+ @Test
+ public void testSaveGNBDU() {
+ String input="{\"gNBDUId\":1,\"gNBId\":98763,\"gNBIdLength\":5,\"pLMNId\":\"310-410\",\"gNBDUName\":\"gnduserver1\",\"nFType\":\"DU\",\"nearRTRICId\":11,\"cellDUList\":[{\"cellLocalId\":103593999,\"operationalState\":\"ENABLED\",\"administrativeState\":\"UNLOCKED\",\"cellState\":\"ACTIVE\",\"nRPCI\":12,\"nRTAC\":310,\"resourceType\":\"PRB\",\"pLMNInfoList\":[{\"pLMNId\":\"310-410\",\"sNSSAI\":{\"sNSSAI\":\"001-003\",\"status\":\"ACTIVE\",\"configData\":{\"dLThptPerSlice\":50,\"uLThptPerSlice\":40}}}]}]}";
+ GNBDUModel gNBDUModel = new GNBDUModel();
+ try {
+ gNBDUModel = objectMapper.readValue(input, GNBDUModel.class);
+ } catch (Exception e) {
+ // TODO Auto-generated catch block
+ e.printStackTrace();
+ }
+ Mockito.doReturn(gNBDUModel).when(rANSliceConfigService).saveGNBDU(gNBDUModel);
+ assertEquals(gNBDUModel, rANSliceConfigService.saveGNBDU(gNBDUModel));
+ }
+
+ @Test
+ public void testFetchGNBDUData() {
+ int gNBDUId=1;
+ GNBDUModel gNBDUModel = new GNBDUModel();
+ Mockito.doReturn(gNBDUModel).when(rANSliceConfigService).fetchGNBDUData(gNBDUId);
+ assertEquals(gNBDUModel, rANSliceConfigService.fetchGNBDUData(gNBDUId));
+ }
+
+ @Test
+ public void testSaveGNBCUUP() {
+ String input = "{\"gNBCUUPId\":1111,\"gNBId\":98763,\"gNBIdLength\":2,\"resourceType\":\"DRB\",\"nearRTRICId\":11,\"pLMNInfoList\":[{\"pLMNId\":\"310-410\",\"sNSSAI\":{\"sNSSAI\":\"001-003\",\"status\":\"ACTIVE\",\"configData\":{\"maxNumberOfConns\":3000}}}]}";
+ GNBCUUPModel gNBCUUPModel = new GNBCUUPModel();
+ try {
+ gNBCUUPModel=objectMapper.readValue(input, GNBCUUPModel.class);
+ } catch (Exception e) {
+ // TODO Auto-generated catch block
+ e.printStackTrace();
+ }
+ Mockito.doReturn(gNBCUUPModel).when(rANSliceConfigService).saveGNBCUUP(gNBCUUPModel);
+ assertEquals(gNBCUUPModel, rANSliceConfigService.saveGNBCUUP(gNBCUUPModel));
+ }
+
+ @Test
+ public void testFetchGNBCUUPData() {
+ Integer gNBCUUPId = 1111;
+ String response = "{\"gNBCUUPId\":1111,\"gNBId\":98763,\"gNBIdLength\":2,\"resourceType\":\"DRB\",\"nearRTRICId\":11,\"pLMNInfoList\":[{\"pLMNId\":\"310-410\",\"sNSSAI\":{\"sNSSAI\":\"001-003\",\"status\":\"ACTIVE\",\"configData\":{\"maxNumberOfConns\":3000}}}]}";
+ GNBCUUPModel gNBCUUPModel = new GNBCUUPModel();
+ try {
+ gNBCUUPModel=objectMapper.readValue(response, GNBCUUPModel.class);
+ } catch (Exception e) {
+ // TODO Auto-generated catch block
+ e.printStackTrace();
+ }
+ Mockito.doReturn(gNBCUUPModel).when(rANSliceConfigService).fetchGNBCUUPData(gNBCUUPId);
+ assertEquals(gNBCUUPModel, rANSliceConfigService.fetchGNBCUUPData(gNBCUUPId));
+
+ }
+
+ @Test
+ public void testSaveNearRTRIC() {
+ NearRTRICModel nearRTRIC = new NearRTRICModel();
+ String input = "{\"nearRTRICId\":11,\"gNBId\":98763,\"trackingArea\":[\"Kingston\"],\"resourceType\":\"NearRTRIC\",\"ranNFNSSIList\":[\"11\",\"22\"],\"pLMNInfoList\":[{\"pLMNId\":\"310-410\",\"sNSSAI\":{\"sNSSAI\":\"001-003\",\"status\":\"ACTIVE\",\"configData\":{\"dLThptPerSlice\":55,\"uLThptPerSlice\":40}}}]}";
+ try {
+ nearRTRIC=objectMapper.readValue(input, NearRTRICModel.class);
+ } catch (Exception e) {
+ // TODO Auto-generated catch block
+ e.printStackTrace();
+ }
+ Mockito.doReturn(nearRTRIC).when(rANSliceConfigService).saveNearRTRIC(nearRTRIC);
+ assertEquals(nearRTRIC, rANSliceConfigService.saveNearRTRIC(nearRTRIC));
+ }
+
+ @Test
+ public void testFetchNearRTRICData() {
+ int nearRTRICId = 11;
+ String response = "{\"nearRTRICId\":11,\"gNBId\":98763,\"trackingArea\":[\"Kingston\"],\"resourceType\":\"NearRTRIC\",\"ranNFNSSIList\":[\"11\",\"22\"],\"pLMNInfoList\":[{\"pLMNId\":\"310-410\",\"sNSSAI\":{\"sNSSAI\":\"001-003\",\"status\":\"ACTIVE\",\"configData\":{\"dLThptPerSlice\":55,\"uLThptPerSlice\":40}}}]}";
+ NearRTRICModel nearRTRIC = new NearRTRICModel();
+ try {
+ nearRTRIC=objectMapper.readValue(response, NearRTRICModel.class);
+ } catch (Exception e) {
+ // TODO Auto-generated catch block
+ e.printStackTrace();
+ }
+ Mockito.doReturn(nearRTRIC).when(rANSliceConfigService).fetchNearRTRICData(nearRTRICId);
+ assertEquals(nearRTRIC, rANSliceConfigService.fetchNearRTRICData(nearRTRICId));
+ }
+
+ @Test
+ public void testFindRICsInTA() {
+ String nSSAI="01-000100";
+ List<NearRTRICModel> ricsList = new ArrayList<>();
+ String ricModel = "{\"nearRTRICId\":11,\"gNBId\":98763,\"trackingArea\":[\"Kingston\"],\"resourceType\":\"NearRTRIC\",\"ranNFNSSIList\":[\"11\",\"22\"],\"pLMNInfoList\":[{\"pLMNId\":\"310-410\",\"sNSSAI\":{\"sNSSAI\":\"001-003\",\"status\":\"ACTIVE\",\"configData\":{\"dLThptPerSlice\":55,\"uLThptPerSlice\":40}}}]}";
+ NearRTRICModel nearRTRIC = new NearRTRICModel();
+ try {
+ nearRTRIC=objectMapper.readValue(ricModel, NearRTRICModel.class);
+ } catch (Exception e) {
+ // TODO Auto-generated catch block
+ e.printStackTrace();
+ }
+ ricsList.add(nearRTRIC);
+ Mockito.doReturn(ricsList).when(rANSliceConfigService).findRICsInTA(Mockito.anyString());
+ assertEquals(ricsList, rANSliceConfigService.findRICsInTA(nSSAI));
+ }
+
+ @Test
+ public void testfindNearRTRICofCells() {
+ List<Integer> cellIds=new ArrayList<Integer>();cellIds.add(23456);cellIds.add(45785);
+ List<NearRTRICModel> ricsList = new ArrayList<>();
+ String ricModel = "{\"nearRTRICId\":11,\"gNBId\":98763,\"trackingArea\":[\"Kingston\"],\"resourceType\":\"NearRTRIC\",\"ranNFNSSIList\":[\"11\",\"22\"],\"pLMNInfoList\":[{\"pLMNId\":\"310-410\",\"sNSSAI\":{\"sNSSAI\":\"001-003\",\"status\":\"ACTIVE\",\"configData\":{\"dLThptPerSlice\":55,\"uLThptPerSlice\":40}}}]}";
+ NearRTRICModel nearRTRIC = new NearRTRICModel();
+ try {
+ nearRTRIC=objectMapper.readValue(ricModel, NearRTRICModel.class);
+ } catch (Exception e) {
+ // TODO Auto-generated catch block
+ e.printStackTrace();
+ }
+ ricsList.add(nearRTRIC);
+ Mockito.doReturn(ricsList).when(rANSliceConfigService).findNearRTRICofCells(Mockito.anyList());
+ assertEquals(ricsList, rANSliceConfigService.findNearRTRICofCells(cellIds));
+ }
+
+ @Test
+ public void testUpdateRANInventory() {
+ String input = "{\"ranNFNSSIId\":\"11\",\"ranNSSIList\":[\"ran3\"],\"nSSAIList\":[\"001-003\",\"001-001\"],\"sliceProfilesList\":[{\"sliceProfileId\":12,\"dLThptPerSlice\":1,\"uLThptPerSlice\":2,\"maxNumberofConns\":3,\"sNSSAI\":\"001-003\"}],\"trackingAreaList\":\"Chennai\",\"subnetStatus\":\"ACTIVE\",\"nsstId\":\"NSSTID1\",\"sliceType\":\"eMBB\",\"isShareable\":\"true\"}";
+ RANSliceInfoModel inventorynfo = new RANSliceInfoModel();
+ try {
+ inventorynfo=objectMapper.readValue(input, RANSliceInfoModel.class);
+ } catch (Exception e) {
+ // TODO Auto-generated catch block
+ e.printStackTrace();
+ }
+ Mockito.doReturn(inventorynfo).when(rANSliceConfigService).updateRANInventory(Mockito.anyObject());
+ assertEquals(inventorynfo, rANSliceConfigService.updateRANInventory(inventorynfo));
+ }
+
+ @Test
+ public void testFetchRANSlice() {
+ String ranNFNSSIId="11";
+ String input = "{\"ranNFNSSIId\":\"11\",\"ranNSSIList\":[\"ran3\"],\"nSSAIList\":[\"001-003\",\"001-001\"],\"sliceProfilesList\":[{\"sliceProfileId\":12,\"dLThptPerSlice\":1,\"uLThptPerSlice\":2,\"maxNumberofConns\":3,\"sNSSAI\":\"001-003\"}],\"trackingAreaList\":\"Chennai\",\"subnetStatus\":\"ACTIVE\",\"nsstId\":\"NSSTID1\",\"sliceType\":\"eMBB\",\"isShareable\":\"true\"}";
+ RANSliceInfoModel inventorynfo = new RANSliceInfoModel();
+ try {
+ inventorynfo=objectMapper.readValue(input, RANSliceInfoModel.class);
+ } catch (Exception e) {
+ // TODO Auto-generated catch block
+ e.printStackTrace();
+ }
+ Mockito.doReturn(inventorynfo).when(rANSliceConfigService).fetchRANSlice(ranNFNSSIId);
+ assertEquals(inventorynfo, rANSliceConfigService.fetchRANSlice(ranNFNSSIId));
+ }
+
+ @Test
+ public void testFetchCellsofTA() {
+ String trackingArea = "Kingston";
+ List<String> cellIds=new ArrayList<String>();cellIds.add("23456");cellIds.add("45785");
+ Mockito.doReturn(cellIds).when(rANSliceConfigService).fetchCellsofTA(Mockito.anyString());
+ assertEquals(cellIds, rANSliceConfigService.fetchCellsofTA(trackingArea));
+ }
+
+ @Test
+ public void testFetchCUCellsofRIC() {
+ Integer nearRTRICId=1;
+ List<NRCellCUModel> cellCUList= new ArrayList<>();
+ Mockito.doReturn(cellCUList).when(rANSliceConfigService).fetchCUCellsofRIC(Mockito.anyInt());
+ assertEquals(cellCUList, rANSliceConfigService.fetchCUCellsofRIC(nearRTRICId));;
+ }
+
+ @Test
+ public void testFetchDUCellsofRIC() {
+ String sNSSAI = "001-00001";
+ Map<Integer, List<NRCellDUModel>> cellsMap = new HashMap<Integer, List<NRCellDUModel>>();
+ Mockito.doReturn(cellsMap).when(rANSliceConfigService).fetchDUCellsofRIC(Mockito.anyString());
+ assertEquals(cellsMap, rANSliceConfigService.fetchDUCellsofRIC(sNSSAI));;
+ }
+
+ @Test
+ public void testFindNearRTRICByNSSI() {
+ String ranNFNSSIID="11";
+ List<NearRTRICModel> ricsList = new ArrayList<>();
+ String ricModel = "{\"nearRTRICId\":11,\"gNBId\":98763,\"trackingArea\":[\"Kingston\"],\"resourceType\":\"NearRTRIC\",\"ranNFNSSIList\":[\"11\",\"22\"],\"pLMNInfoList\":[{\"pLMNId\":\"310-410\",\"sNSSAI\":{\"sNSSAI\":\"001-003\",\"status\":\"ACTIVE\",\"configData\":{\"dLThptPerSlice\":55,\"uLThptPerSlice\":40}}}]}";
+ NearRTRICModel nearRTRIC = new NearRTRICModel();
+ try {
+ nearRTRIC=objectMapper.readValue(ricModel, NearRTRICModel.class);
+ } catch (Exception e) {
+ // TODO Auto-generated catch block
+ e.printStackTrace();
+ }
+ ricsList.add(nearRTRIC);
+ Mockito.doReturn(ricsList).when(rANSliceConfigService).findNearRTRICByNSSI(Mockito.anyString());
+ assertEquals(ricsList, rANSliceConfigService.findNearRTRICByNSSI(ranNFNSSIID));
+ }
+
+ @Test
+ public void testFindRICsByNSSAI() {
+ String sNSSAI = "001-00001";
+ List<NearRTRICModel> ricsList = new ArrayList<>();
+ String ricModel = "{\"nearRTRICId\":11,\"gNBId\":98763,\"trackingArea\":[\"Kingston\"],\"resourceType\":\"NearRTRIC\",\"ranNFNSSIList\":[\"11\",\"22\"],\"pLMNInfoList\":[{\"pLMNId\":\"310-410\",\"sNSSAI\":{\"sNSSAI\":\"001-003\",\"status\":\"ACTIVE\",\"configData\":{\"dLThptPerSlice\":55,\"uLThptPerSlice\":40}}}]}";
+ NearRTRICModel nearRTRIC = new NearRTRICModel();
+ try {
+ nearRTRIC=objectMapper.readValue(ricModel, NearRTRICModel.class);
+ } catch (Exception e) {
+ // TODO Auto-generated catch block
+ e.printStackTrace();
+ }
+ ricsList.add(nearRTRIC);
+ Mockito.doReturn(ricsList).when(rANSliceConfigService).findRICsByNSSAI(Mockito.anyString());
+ assertEquals(ricsList, rANSliceConfigService.findRICsByNSSAI(sNSSAI));
+ }
+
+ @Test
+ public void testFindSliceProfileconfig() {
+ String sNSSAI = "001-00001";
+ Map<String,Integer> configDetails = new HashMap<String, Integer>();
+ configDetails.put("dLThptPerSlice",40);
+ configDetails.put("uLThptPerSlice",50);
+ Mockito.doReturn(configDetails).when(rANSliceConfigService).findSliceProfileconfig(Mockito.anyString());
+ assertEquals(configDetails, rANSliceConfigService.findSliceProfileconfig(sNSSAI));
+ }
+ @Test
+ public void testFindSliceeconfig() {
+ String sNSSAI = "001-00001";Map<Integer, NSSAIConfig> configMap = new HashMap<Integer, NSSAIConfig>();
+ Mockito.doReturn(configMap).when(rANSliceConfigService).findSliceConfig(Mockito.anyString());
+ assertEquals(configMap, rANSliceConfigService.findSliceConfig(sNSSAI));
+ }
+
+ @Test
+ public void testFindDUsofSNssai() {
+ String sNSSAI = "001-00001";
+ List<GNBDUModel> duModels = new ArrayList<GNBDUModel>();
+ Mockito.doReturn(duModels).when(rANSliceConfigService).findDUsofSNssai(Mockito.anyString());
+ assertEquals(duModels, rANSliceConfigService.findDUsofSNssai(sNSSAI));
+ }
+
+ @Test
+ public void testFindCUsofSNssai() {
+ String sNSSAI = "001-00001";
+ List<GNBCUCPModel> cuModels = new ArrayList<GNBCUCPModel>();
+ Mockito.doReturn(cuModels).when(rANSliceConfigService).findCUsofSNssai(Mockito.anyString());
+ assertEquals(cuModels, rANSliceConfigService.findCUsofSNssai(sNSSAI));
+ }
+
+ @Test
+ public void testGetSubscriberDetails() {
+ String sNSSAI = "001-00001";
+ Map<String, String> details = new HashMap<String, String>();
+ Mockito.doReturn(details).when(rANSliceConfigService).getSubscriberDetails(Mockito.anyString());
+ assertEquals(details, rANSliceConfigService.getSubscriberDetails(sNSSAI));
+ }
+
+ @Test
+ public void testFindAllCUCPFunctions() {
+ List<GNBCUCPModel> cucpModels = new ArrayList<GNBCUCPModel>();
+ Mockito.doReturn(cucpModels).when(rANSliceConfigService).findAllCUCPFunctions();
+ assertEquals(cucpModels, rANSliceConfigService.findAllCUCPFunctions());
+ }
+
+ @Test
+ public void testFindAllDUFunctions() {
+ List<GNBDUModel> duModels = new ArrayList<GNBDUModel>();
+ Mockito.doReturn(duModels).when(rANSliceConfigService).findAllDUFunctions();
+ assertEquals(duModels, rANSliceConfigService.findAllDUFunctions());
+ }
+
+}
diff --git a/ransim/ransimctrlr/RANSIM-CTRLR/src/test/resources/hibernate.properties b/ransim/ransimctrlr/RANSIM-CTRLR/src/test/resources/hibernate.properties
index 7d6e456..9b7d955 100644
--- a/ransim/ransimctrlr/RANSIM-CTRLR/src/test/resources/hibernate.properties
+++ b/ransim/ransimctrlr/RANSIM-CTRLR/src/test/resources/hibernate.properties
@@ -1,5 +1,13 @@
+#
+# Hibernate, Relational Persistence for Idiomatic Java
+#
+# License: GNU Lesser General Public License (LGPL), version 2.1 or later.
+# See the lgpl.txt file in the root directory or <http://www.gnu.org/licenses/lgpl-2.1.html>.
+#
+
hibernate.dialect org.hibernate.dialect.H2Dialect
hibernate.connection.driver_class org.h2.Driver
+#hibernate.connection.url jdbc:h2:mem:db1;DB_CLOSE_DELAY=-1;MVCC=TRUE
hibernate.connection.url jdbc:h2:mem:db1;DB_CLOSE_DELAY=-1
hibernate.connection.username sa
@@ -13,8 +21,9 @@ hibernate.max_fetch_depth 5
hibernate.cache.region_prefix hibernate.test
hibernate.cache.region.factory_class org.hibernate.testing.cache.CachingRegionFactory
+# NOTE: hibernate.jdbc.batch_versioned_data should be set to false when testing with Oracle
hibernate.jdbc.batch_versioned_data true
javax.persistence.validation.mode=NONE
hibernate.service.allow_crawling=false
-hibernate.session.events.log=true
+hibernate.session.events.log=true \ No newline at end of file
diff --git a/ransim/ransimctrlr/RANSIM-GUI/src/main/webapp/AdditionalFeature.html b/ransim/ransimctrlr/RANSIM-GUI/src/main/webapp/AdditionalFeature.html
index aba0ad6..ec9bc60 100644
--- a/ransim/ransimctrlr/RANSIM-GUI/src/main/webapp/AdditionalFeature.html
+++ b/ransim/ransimctrlr/RANSIM-GUI/src/main/webapp/AdditionalFeature.html
@@ -21,7 +21,7 @@
<!DOCTYPE html>
<html>
<head>
-<title>Cell Operations History</title>
+<title>Netconf server details</title>
<style>
table, td, th {
border: solid 1px #DDD;
@@ -45,7 +45,7 @@ table, td, th {
</head>
<body onload="getOperationLogs()">
<center>
- <h3>Cell Operations History</h3>
+ <h3>Netconf server details</h3>
</center>
<br>
<p id="showData"></p>
@@ -54,94 +54,83 @@ table, td, th {
</body>
<script>
- function getOperationLogs() {
- var xmlhttp = new XMLHttpRequest();
- xmlhttp.onreadystatechange = function() {
- if (this.readyState == 4 && this.status == 200) {
- var logs = JSON.parse(this.responseText);
- var myJSON = JSON.stringify(logs);
- console.log(myJSON);
- drawTable(logs);
- }
- };
- xmlhttp.open("GET","/ransim/api/GetNetconfStatus",
- true);
- xmlhttp.send();
- }
+ function getOperationLogs() {
+ var xmlhttp = new XMLHttpRequest();
+ xmlhttp.onreadystatechange = function() {
+ if (this.readyState == 4 && this.status == 200) {
+ var logs = JSON.parse(this.responseText);
+ var myJSON = JSON.stringify(logs);
+ console.log(myJSON);
+ drawTable(logs);
+ }
+ };
+ xmlhttp.open("GET", "/ransim/api/GetNetconfStatus", true);
+ xmlhttp.send();
+ }
- function drawTable(myBooks) {
- // EXTRACT VALUE FOR HTML HEADER.
- var col = [];
- for (var i = 0; i < myBooks.length; i++) {
- console.log(myBooks[i]);
- for (var key in myBooks[i]) {
- if (col.indexOf(key) === -1) {
- col.push(key);
- }
- }
- }
-
- console.log(col);
+ function drawTable(data) {
+ // EXTRACT VALUE FOR HTML HEADER.
+ var col = [];
+ for (var i = 0; i < data.length; i++) {
+ console.log(data[i]);
+ for ( var key in data[i]) {
+ if (col.indexOf(key) === -1) {
+ col.push(key);
+ }
+ }
+ }
- // CREATE DYNAMIC TABLE.
- var table = document.createElement("table");
+ console.log(col);
- // CREATE HTML TABLE HEADER ROW USING THE EXTRACTED HEADERS ABOVE.
+ // CREATE DYNAMIC TABLE.
+ var table = document.createElement("table");
- var tr = table.insertRow(-1); // TABLE ROW.
+ // CREATE HTML TABLE HEADER ROW USING THE EXTRACTED HEADERS ABOVE.
- //for (var i = 0; i < 4; i++) {
- for (var i = 0; i < col.length; i++) {
-
- // if (i == 0) continue;
- var th = document.createElement("th"); // TABLE HEADER.
- if(i==2)
- th.innerHTML = "PORT";
- else
- th.innerHTML = col[i].toUpperCase();
- //console.log("th.style " + th.style);
- tr.appendChild(th);
- }
+ var tr = table.insertRow(-1); // TABLE ROW.
- // ADD JSON DATA TO THE TABLE AS ROWS.
- for (var i = 0; i < myBooks.length; i++) {
+ for (var i = 0; i < col.length; i++) {
- tr = table.insertRow(-1);
- //manipulate rows
- if(i % 2 == 0){
- tr.className = "even";
- }else{
- tr.className = "odd";
- }
+ var th = document.createElement("th"); // TABLE HEADER.
+ if (i == 2)
+ th.innerHTML = "PORT";
+ else
+ th.innerHTML = col[i].toUpperCase();
+ tr.appendChild(th);
+ }
- //for (var j = 0; j < 4; j++) {
- for (var j = 0; j < col.length; j++) {
-
- //if (j == 0) continue;
- var tabCell = tr.insertCell(-1);
- //tabCell.style.setWidth("25%");
- //console.log("tabCell.style " + tabCell.style);
- if(j==3)
- {
- var arr = "";
- for(var k = 0;k<myBooks[i][col[j]].length;k++)
- {
- console.log("nodeId" + myBooks[i][col[j]][k]["nodeId"]);
- arr = arr + " " + myBooks[i][col[j]][k]["nodeId"];
- }
- tabCell.innerHTML = arr;
- tabCell.className = "WID";
- console.log("arr" + arr);
- }
- else
- tabCell.innerHTML = myBooks[i][col[j]];
- console.log("checking my books , j " + j + " " + myBooks[i][col[j]]);
- }
- }
- // FINALLY ADD THE NEWLY CREATED TABLE WITH JSON DATA TO A CONTAINER.
- var divContainer = document.getElementById("showData");
- divContainer.innerHTML = "";
- divContainer.appendChild(table);
- }
+ // ADD JSON DATA TO THE TABLE AS ROWS.
+ for (var i = 0; i < data.length; i++) {
+
+ tr = table.insertRow(-1);
+ //manipulate rows
+ if (i % 2 == 0) {
+ tr.className = "even";
+ } else {
+ tr.className = "odd";
+ }
+
+ for (var j = 0; j < col.length; j++) {
+
+ var tabCell = tr.insertCell(-1);
+ if (j == 3) {
+ var arr = "";
+ for (var k = 0; k < data[i][col[j]].length; k++) {
+ console.log("nodeId" + data[i][col[j]][k]["nodeId"]);
+ arr = arr + " " + data[i][col[j]][k]["nodeId"];
+ }
+ tabCell.innerHTML = arr;
+ tabCell.className = "WID";
+ console.log("arr" + arr);
+ } else
+ tabCell.innerHTML = data[i][col[j]];
+ console.log("checking data , j " + j + " " + data[i][col[j]]);
+ }
+ }
+ // FINALLY ADD THE NEWLY CREATED TABLE WITH JSON DATA TO A CONTAINER.
+ var divContainer = document.getElementById("showData");
+ divContainer.innerHTML = "";
+ divContainer.appendChild(table);
+ }
</script>
</html>
diff --git a/ransim/ransimctrlr/RANSIM-GUI/src/main/webapp/SimulationStop.html b/ransim/ransimctrlr/RANSIM-GUI/src/main/webapp/SimulationStop.html
index 3284ee2..edbf382 100644
--- a/ransim/ransimctrlr/RANSIM-GUI/src/main/webapp/SimulationStop.html
+++ b/ransim/ransimctrlr/RANSIM-GUI/src/main/webapp/SimulationStop.html
@@ -20,46 +20,46 @@
-->
<html>
- <head>
- <title>Simulator Configuration</title>
- <script src="angular.min.js"></script>
- <style>
- table, th , td {
- border: 1px solid grey;
- border-collapse: collapse;
- padding: 5px;
- }
-
- table tr:nth-child(odd) {
- background-color: #f2f2f2;
- }
-
- table tr:nth-child(even) {
- background-color: #ffffff;
- }
- </style>
- </head>
- <body>
- <center>
- <h2>Simulator Configuration</h2>
- <div data-ng-init="onloadFun()" ng-app = "mainApp" ng-controller = "configController">
- <form name = "configForm" novalidate>
- <table border = "0" align=center>
- <tr>
- <td>
- Do you really want to stop the Simulation and clear the Simulated data?
- </td>
- </tr>
- <tr>
- <td align=right>
- <button ng-click="stopSimulation()">Yes</button>
- <button ng-click = "close()">No</button>
- </td>
- </tr>
- </table>
- </form>
- </div>
- <script>
+<head>
+<title>Simulator Configuration</title>
+<script src="angular.min.js"></script>
+<style>
+table, th, td {
+ border: 1px solid grey;
+ border-collapse: collapse;
+ padding: 5px;
+}
+
+table tr:nth-child(odd) {
+ background-color: #f2f2f2;
+}
+
+table tr:nth-child(even) {
+ background-color: #ffffff;
+}
+</style>
+</head>
+<body>
+ <center>
+ <h2>Simulator Configuration</h2>
+ <div data-ng-init="onloadFun()" ng-app="mainApp"
+ ng-controller="configController">
+ <form name="configForm" novalidate>
+ <table border="0" align=center>
+ <tr>
+ <td>Do you really want to stop the Simulation and clear the
+ Simulated data?</td>
+ </tr>
+ <tr>
+ <td align=right>
+ <button ng-click="stopSimulation()">Yes</button>
+ <button ng-click="close()">No</button>
+ </td>
+ </tr>
+ </table>
+ </form>
+ </div>
+ <script>
var mainApp = angular.module("mainApp", []);
mainApp.controller('configController',['$scope', '$http', function($scope, $http) {
$scope.stopSimulation = function(){
@@ -85,6 +85,7 @@
window.close();
}
}]);
- </script>
- <center></body>
+ </script>
+ <center>
+</body>
</html>
diff --git a/ransim/ransimctrlr/RANSIM-GUI/src/main/webapp/SimulationTrigger.html b/ransim/ransimctrlr/RANSIM-GUI/src/main/webapp/SimulationTrigger.html
index 1193a7c..6fb1299 100644
--- a/ransim/ransimctrlr/RANSIM-GUI/src/main/webapp/SimulationTrigger.html
+++ b/ransim/ransimctrlr/RANSIM-GUI/src/main/webapp/SimulationTrigger.html
@@ -20,66 +20,76 @@
-->
<html>
- <head>
- <title>Simulator Configuration</title>
- <script src="angular.min.js"></script>
- <style>
- table, th , td {
- border: 1px solid grey;
- border-collapse: collapse;
- padding: 5px;
- }
-
- table tr:nth-child(odd) {
- background-color: #f2f2f2;
- }
-
- table tr:nth-child(even) {
- background-color: #ffffff;
- }
- </style>
- </head>
- <body><center>
- <h2>Simulator Configuration</h2>
- <div align="center" ng-app = "mainApp" ng-controller = "configController">
- <form name = "configForm" novalidate >
- <table border = "0" align=center>
- <tr>
- <td>Cluster Level::</td>
- <td><input name = "clusterLevel" type = "number" ng-model = "configui.clusterLevel" required>
- <br><span style = "color:red" ng-show = "configForm.clusterLevel.$dirty && configForm.clusterLevel.$invalid">
- <span ng-show = "configForm.clusterLevel.$error.required">Cluster Level is mandatory.</span>
- </span>
- </td>
- </tr>
- <tr>
- <td>Grid Size:</td>
- <td><input name = "gridSize" type = "number" ng-model = "configui.gridSize" required>
- <br><span style = "color:red" ng-show = "configForm.gridSize.$dirty && configForm.gridSize.$invalid">
- <span ng-show = "configForm.gridSize.$error.required">Grid Size is mandatory.</span>
- </span>
- </td>
- </tr>
- <tr>
- <td>No. of Clusters: </td><td><input name = "numberOfClusters" type = "number" ng-model = "configui.numberOfClusters" required>
- <br><span style = "color:red" ng-show = "configForm.numberOfClusters.$dirty && configForm.numberOfClusters.$invalid">
- <span ng-show = "configForm.numberOfClusters.$error.required">No. of Clusters is mandatory.</span>
- </span>
- </td>
- </tr>
- <tr>
- <td colspan=2 align=right>
- <button ng-model = "configure" ng-disabled = "configForm.clusterLevel.$dirty &&
+<head>
+<title>Simulator Configuration</title>
+<script src="angular.min.js"></script>
+<style>
+table, th, td {
+ border: 1px solid grey;
+ border-collapse: collapse;
+ padding: 5px;
+}
+
+table tr:nth-child(odd) {
+ background-color: #f2f2f2;
+}
+
+table tr:nth-child(even) {
+ background-color: #ffffff;
+}
+</style>
+</head>
+<body>
+ <center>
+ <h2>Simulator Configuration</h2>
+ <div align="center" ng-app="mainApp" ng-controller="configController">
+ <form name="configForm" novalidate>
+ <table border="0" align=center>
+ <tr>
+ <td>Cluster Level::</td>
+ <td><input name="clusterLevel" type="number"
+ ng-model="configui.clusterLevel" required> <br>
+ <span style="color: red"
+ ng-show="configForm.clusterLevel.$dirty && configForm.clusterLevel.$invalid">
+ <span ng-show="configForm.clusterLevel.$error.required">Cluster
+ Level is mandatory.</span>
+ </span></td>
+ </tr>
+ <tr>
+ <td>Grid Size:</td>
+ <td><input name="gridSize" type="number"
+ ng-model="configui.gridSize" required> <br>
+ <span style="color: red"
+ ng-show="configForm.gridSize.$dirty && configForm.gridSize.$invalid">
+ <span ng-show="configForm.gridSize.$error.required">Grid
+ Size is mandatory.</span>
+ </span></td>
+ </tr>
+ <tr>
+ <td>No. of Clusters:</td>
+ <td><input name="numberOfClusters" type="number"
+ ng-model="configui.numberOfClusters" required> <br>
+ <span style="color: red"
+ ng-show="configForm.numberOfClusters.$dirty && configForm.numberOfClusters.$invalid">
+ <span ng-show="configForm.numberOfClusters.$error.required">No.
+ of Clusters is mandatory.</span>
+ </span></td>
+ </tr>
+ <tr>
+ <td colspan=2 align=right>
+ <button ng-model="configure"
+ ng-disabled="configForm.clusterLevel.$dirty &&
configForm.clusterLevel.$invalid || configForm.gridSize.$dirty &&
configForm.gridSize.$invalid || configForm.numberOfClusters.$dirty &&
- configForm.configui.numberOfClusters.$invalid" ng-click="triggerSimulatorConfig()">Configure</button>
- <button ng-model = "close" ng-click = "close()">Close</button>
- </td>
- </tr>
- </table>
- </form>
- </div>
- <script>
+ configForm.configui.numberOfClusters.$invalid"
+ ng-click="triggerSimulatorConfig()">Configure</button>
+ <button ng-model="close" ng-click="close()">Close</button>
+ </td>
+ </tr>
+ </table>
+ </form>
+ </div>
+ <script>
var mainApp = angular.module("mainApp", []);
mainApp.controller('configController',['$scope', '$http', function($scope, $http) {
$scope.triggerSimulatorConfig = function(){
@@ -104,6 +114,7 @@
window.close();
}
}]);
- </script>
- <center></body>
+ </script>
+ <center>
+</body>
</html>
diff --git a/ransim/ransimctrlr/RANSIM-GUI/src/main/webapp/SimulationTriggerFile.html b/ransim/ransimctrlr/RANSIM-GUI/src/main/webapp/SimulationTriggerFile.html
index 6a55bcf..e3872a8 100644
--- a/ransim/ransimctrlr/RANSIM-GUI/src/main/webapp/SimulationTriggerFile.html
+++ b/ransim/ransimctrlr/RANSIM-GUI/src/main/webapp/SimulationTriggerFile.html
@@ -20,47 +20,53 @@
-->
<html>
- <head>
- <title>Simulator Configuration</title>
- <script src="angular.min.js"></script>
- <style>
- table, th , td {
- border: 1px solid grey;
- border-collapse: collapse;
- padding: 5px;
- }
-
- table tr:nth-child(odd) {
- background-color: #f2f2f2;
- }
-
- table tr:nth-child(even) {
- background-color: #ffffff;
- }
- </style>
- </head>
- <body><center>
- <h2>Simulator Configuration</h2>
- <div align="center" ng-app = "mainApp" ng-controller = "configController">
- <form name = "configForm" novalidate >
- Using dump file to load simulation data.
- <br>
- <table border = "0" align=center>
- <tr>
- <td colspan=2 align=right>
- <button ng-model = "configure" ng-click="triggerSimulatorConfig()">Configure</button>
- <button ng-model = "close" ng-click = "close()">Close</button>
- </td>
- </tr>
- </table>
- </form>
- </div>
- <script>
+<head>
+<title>Simulator Configuration</title>
+<script src="angular.min.js"></script>
+<style>
+table, th, td {
+ border: 1px solid grey;
+ border-collapse: collapse;
+ padding: 5px;
+}
+
+table tr:nth-child(odd) {
+ background-color: #f2f2f2;
+}
+
+table tr:nth-child(even) {
+ background-color: #ffffff;
+}
+</style>
+</head>
+<body>
+ <center>
+ <h2>Simulator Configuration</h2>
+ <div align="center" data-ng-init="onloadFun()" ng-app="mainApp" ng-controller="configController">
+ <form name="configForm" novalidate>
+ Using dump file to load simulation data. <br><br>
+ <select ng-required="required" ng-model="dumpfile" ng-options="x for x in files" required="required">
+ <option value="" selected="selected" disabled="disabled">select dump file</option>
+ </select>
+ <br>
+ <br>
+ <table border="0" align=center>
+ <tr>
+ <td colspan=2 align=right>
+ <button ng-model="configure" ng-click="triggerSimulatorConfig()">Configure</button>
+ <button ng-model="close" ng-click="close()">Close</button>
+ </td>
+ </tr>
+ </table>
+ </form>
+ </div>
+ <script>
var mainApp = angular.module("mainApp", []);
mainApp.controller('configController',['$scope', '$http', function($scope, $http) {
$scope.triggerSimulatorConfig = function(){
-
- var res = $http.post('/ransim/api/StartSimulation')
+ var files = { "dumpfile" :$scope.dumpfile}
+ var obj= JSON.stringify(files);;
+ var res = $http.post('/ransim/api/StartSimulation',obj)
.then(function successCallback(response){
alert( "Simulation successfully triggered");
window.close();
@@ -69,11 +75,24 @@
window.close();
});
- };
+ };
+
+ $scope.onloadFun=function() {
+ var xmlhttp = new XMLHttpRequest();
+ xmlhttp.onreadystatechange = function() {
+ if (this.readyState == 4 && this.status == 200) {
+ var files = JSON.parse(this.responseText);
+ $scope.files =files;
+ }
+ };
+ xmlhttp.open("GET", "/ransim/file/dumpfiles", false);
+ xmlhttp.send();
+ };
$scope.close = function(){
window.close();
}
}]);
- </script>
- <center></body>
+ </script>
+ <center>
+</body>
</html>
diff --git a/ransim/ransimctrlr/RANSIM-GUI/src/main/webapp/controlpanel.html b/ransim/ransimctrlr/RANSIM-GUI/src/main/webapp/controlpanel.html
index a2cfabe..2f34b67 100644
--- a/ransim/ransimctrlr/RANSIM-GUI/src/main/webapp/controlpanel.html
+++ b/ransim/ransimctrlr/RANSIM-GUI/src/main/webapp/controlpanel.html
@@ -21,19 +21,16 @@
<!DOCTYPE html>
<html ng-app="myApp" ng-controller="myCtrl">
- <head>
- <script src="angular.min.js"></script>
- <style>
- .can {
- padding-top:40px;
- }
- </style>
- <script>
+<head>
+<script src="angular.min.js"></script>
+<style>
+.can {
+ padding-top: 40px;
+}
+</style>
+<script>
var app = angular.module('myApp', []);
app.controller('myCtrl', function($scope, $window) {
- /*$scope.startSimulator = function() {
- $window.open('SimulationTrigger.html', '','menubar=no, locationbar=no, toolbar=no, width=600px, height=250px');
- };*/
$scope.startSimulatorFile = function() {
document.getElementById("stopSimulator").disabled = false;
document.getElementById("startSimulator").disabled = true;
@@ -56,25 +53,6 @@
document.getElementById("stopPm").disabled = false;
document.getElementById("startPm").disabled = true;
$window.open('startsPm.html', '','menubar=no, locationbar=no, toolbar=no, width=600px, height=400px');
- /*
- var status;
- var xmlhttp = new XMLHttpRequest();
- xmlhttp.onreadystatechange = function() {
- if (this.readyState == 4 && this.status == 200) {
- status = JSON.parse(this.responseText);
- console.log(status);
- console.log("status");
- }
- };
- xmlhttp.open("GET", "/ransim/api/GetPmDataStatus",
- true);
- xmlhttp.send();
-
- if(status == true){
- document.getElementById("stopPm").disabled = false;
- document.getElementById("startPm").disabled = true;
- }*/
-
};
$scope.stopPm = function() {
document.getElementById("stopPm").disabled = true;
@@ -82,36 +60,36 @@
$window.open('stopPm.html', '','menubar=no, locationbar=no, toolbar=no, width=600px, height=250px');
};
-
+ $scope.uploadFile = function() {
+ $window.open('uploadFile.html', '','menubar=no, locationbar=no, toolbar=no, width=600px, height=250px');
+ }
});
</script>
- </head>
- <body>
+</head>
+<body>
<div id="controlpanel" class="absolute">
- RAN Simulation
- <br>
+ RAN Simulation <br>
<!-- button ng-click="startSimulator()">StartHoneycomb</button-->
<button id="startSimulator" ng-click="startSimulatorFile()">Start</button>
- <button id="stopSimulator" ng-click="stopSimulator()" disabled>Stop</button><br>
- <br>
- <div id="operupdate" name="operuodate">Click view to check details of the updated cells</div>
+ <button id="stopSimulator" ng-click="stopSimulator()" disabled>Stop</button>
+ <br> <br>
+ <button id="uploadFile" ng-click="uploadFile()">Upload Dump File</button>
+ <br><br>
+ <div id="operupdate" name="operuodate">Click view to check
+ details of the updated cells</div>
<button ng-click="showOperationTable()">View</button>
- <br>
- <br>
+ <br> <br>
<button ng-click="showNetconfServerDetails()">Netconf Details</button>
- <br>
- <br>
+ <br> <br>
<div>PM data</div>
<button id="startPm" ng-click="startPm()">Start</button>
<button id="stopPm" ng-click="stopPm()" disabled>Stop</button>
- <br>
- <br>
-
+ <br> <br>
</div>
- <p></p>
- <canvas id="Canvas2" class="can" width="4000" height="10000"></canvas>
- </body>
+ <p></p>
+ <canvas id="Canvas2" class="can" width="4000" height="10000"></canvas>
+</body>
<script>
var canvas = document.getElementById('Canvas2');
var ctx = canvas.getContext('2d');
diff --git a/ransim/ransimctrlr/RANSIM-GUI/src/main/webapp/deleteCell.html b/ransim/ransimctrlr/RANSIM-GUI/src/main/webapp/deleteCell.html
index 1d0406c..7860485 100644
--- a/ransim/ransimctrlr/RANSIM-GUI/src/main/webapp/deleteCell.html
+++ b/ransim/ransimctrlr/RANSIM-GUI/src/main/webapp/deleteCell.html
@@ -21,91 +21,69 @@
<html>
<head>
- <title>Delete Cell Configuration</title>
- <script src="angular.min.js"></script>
- <style>
- table,
- th,
- td {
- border: 1px solid grey;
- border-collapse: collapse;
- padding: 5px;
- }
-
- table tr:nth-child(odd) {
- background-color: #f2f2f2;
- }
-
- table tr:nth-child(even) {
- background-color: #ffffff;
- }
- </style>
+<title>Delete Cell Configuration</title>
+<script src="angular.min.js"></script>
+<style>
+table, th, td {
+ border: 1px solid grey;
+ border-collapse: collapse;
+ padding: 5px;
+}
+
+table tr:nth-child(odd) {
+ background-color: #f2f2f2;
+}
+
+table tr:nth-child(even) {
+ background-color: #ffffff;
+}
+</style>
</head>
<body>
- <center>
- <h2>Delete Cell Configuration</h2>
- <div data-ng-init="onloadFun()" ng-app="mainApp" ng-controller="configController">
- <form name="configForm" novalidate>
- <table border="0" align=center>
- <tr>
- <td>
- <input name="nodeId" type="hidden" ng-model="nodeId" required disabled> Do you really want to delete the Cell {{nodeId}}?
- </td>
- </tr>
- <tr>
- <td align=right>
- <button ng-disabled="configForm.nodeId.$dirty &&
- configForm.nodeId.$invalid" ng-click="deleteCell()">Delete</button>
- <button ng-click="close()">Cancel</button>
- </td>
- </tr>
- </table>
- </form>
- </div>
- <script>
+ <center>
+ <h2>Delete Cell Configuration</h2>
+ <div data-ng-init="onloadFun()" ng-app="mainApp"
+ ng-controller="configController">
+ <form name="configForm" novalidate>
+ <table border="0" align=center>
+ <tr>
+ <td><input name="nodeId" type="hidden" ng-model="nodeId"
+ required disabled> Do you really want to delete the Cell
+ {{nodeId}}?</td>
+ </tr>
+ <tr>
+ <td align=right>
+ <button
+ ng-disabled="configForm.nodeId.$dirty &&
+ configForm.nodeId.$invalid"
+ ng-click="deleteCell()">Delete</button>
+ <button ng-click="close()">Cancel</button>
+ </td>
+ </tr>
+ </table>
+ </form>
+ </div>
+ <script>
var mainApp = angular.module("mainApp", []);
mainApp.controller('configController', ['$scope', '$http', '$location',
function($scope, $http, $location) {
$scope.deleteCell = function() {
- //alert($scope.nodeId);
var formVal = {
"nodeId": $scope.nodeId
}
var dataObj = JSON.stringify(formVal);
- //alert("Delete DataObj : " + dataObj);
var res = $http.post(
'/ransim/api/DeleteACell', dataObj
)
.then(function successCallback(response) {
- //alert("Success message: " + JSON.stringify(response));
alert("Delete Successful");
window.close();
}, function errorCallback(response) {
- //alert("Failure message: " + JSON.stringify(response));
alert("Delete Failed");
window.close();
});
-
- /*var xmlhttp = new XMLHttpRequest();
- xmlhttp.onreadystatechange = function() {
- if (this.readyState == 4 && this.status == 200) {
- alert( "Success message: "+JSON.stringify(this.responseText));
- alert("deleted Successfully");
- window.close();
- } else if (this.readyState == 4 && this.status > 200) {
- alert( "Failure message: "+JSON.stringify(this.responseText));
- alert("delete Failed");
- window.close();
- }
- xmlhttp.open("POST",
- "/ransim/api/DeleteACell", true);
- xmlhttp.setRequestHeader('Content-Type', 'application/json')
- xmlhttp.send(dataObj);
- };
- */
-
};
$scope.close = function() {
window.close();
@@ -117,8 +95,7 @@
absUrl = $location.absUrl(),
// extract and parse url
elements = absUrl.split("?");
-
- // parse quesry string
+ // parse query string
parts["queryString"] = elements[1];
if (elements[1]) {
parts["hashString"] = (parts["queryString"].split("#"))[1];
@@ -129,7 +106,6 @@
var __variable = queryStringVariable.split("=");
parts.queryvars[__variable[0]] = __variable[1];
});
- //alert("Parts : "+JSON.stringify(parts));
if (parts.queryvars["cid"] !== "undefined") {
alert("CID : " + parts.queryvars["cid"]);
$scope.nodeId = parts.queryvars["cid"];
@@ -139,7 +115,7 @@
}
]);
</script>
- <center>
+ <center>
</body>
</html>
diff --git a/ransim/ransimctrlr/RANSIM-GUI/src/main/webapp/displayCellDetails.html b/ransim/ransimctrlr/RANSIM-GUI/src/main/webapp/displayCellDetails.html
index 9c8ab7b..9e52eb2 100644
--- a/ransim/ransimctrlr/RANSIM-GUI/src/main/webapp/displayCellDetails.html
+++ b/ransim/ransimctrlr/RANSIM-GUI/src/main/webapp/displayCellDetails.html
@@ -20,82 +20,57 @@
-->
<html>
- <head>
- <title>Display Cell Details</title>
- <script src="angular.min.js"></script>
- <style>
- table, th , td {
- border: 1px solid grey;
- border-collapse: collapse;
- padding: 5px;
- }
-
- table tr:nth-child(odd) {
- background-color: #f2f2f2;
- }
-
- table tr:nth-child(even) {
- background-color: #ffffff;
- }
- </style>
- </head>
- <body><center>
- <h2>Cell Details</h2>
- <div data-ng-init="onloadFun()" ng-app = "mainApp" ng-controller = "configController">
- <form name = "configForm" novalidate>
- <table border = "0" align=center>
- <tr>
- <td>Node Id:</td>
- <td><input name = "nodeId" type = "string" ng-model = "nodeId" required disabled>
- <br><span style = "color:red" ng-show = "configForm.nodeId.$dirty && configForm.nodeId.$invalid">
- <span ng-show = "configForm.nodeId.$error.required">Node Id is mandatory.</span>
- </span>
- </td>
- </tr>
- <tr>
- <td>Physical Cell Id:</td>
- <td><input name = "oldPhysicalCellId" type = "number" ng-model = "oldPhysicalCellId" required disabled>
- <br>
- </td>
- </tr>
- <tr>
- <td>Pnf Name:</td>
- <td><input name = "pnfName" type = "string" ng-model = "pnfName" required disabled>
- <br>
- </td>
- </tr>
- <!-- tr>
- <td>New Physical Cell Id:</td>
- <td><input name = "newPhysicalCellId" type = "number" ng-model = "newPhysicalCellId" required>
- <br><span style = "color:red" ng-show = "configForm.newPhysicalCellId.$dirty && configForm.newPhysicalCellId.$invalid">
- <span ng-show = "configForm.newPhysicalCellId.$error.required">New Physical Cell Id is mandatory.</span>
- </span>
- </td>
- </tr -->
- <!-- tr>
- <td>Neighbors:</td>
- <td><textarea name = "existingNbrs" rows="8" cols="31" type = "string" ng-model = "existingNbrs" disabled></textarea>
- <br>
- </td>
- </tr -->
- <!-- tr>
- <td>New Neighbors:</td>
- <td><textarea name = "newNbrs" rows="8" cols="31" type = "string" ng-model = "newNbrs"></textarea>
- <br>
- </td>
- </tr -->
- <!-- tr>
- <td colspan=2 align=right>
- <button ng-disabled = "configForm.newPhysicalCellId.$dirty &&
- configForm.newPhysicalCellId.$invalid || configForm.nodeId.$dirty &&
- configForm.nodeId.$invalid" ng-click="modifyCell()">Modify</button>
- <button ng-click = "close()">Cancel</button>
- </td>
- </tr -->
- </table>
- </form>
- </div>
- <script>
+<head>
+<title>Display Cell Details</title>
+<script src="angular.min.js"></script>
+<style>
+table, th, td {
+ border: 1px solid grey;
+ border-collapse: collapse;
+ padding: 5px;
+}
+
+table tr:nth-child(odd) {
+ background-color: #f2f2f2;
+}
+
+table tr:nth-child(even) {
+ background-color: #ffffff;
+}
+</style>
+</head>
+<body>
+ <center>
+ <h2>Cell Details</h2>
+ <div data-ng-init="onloadFun()" ng-app="mainApp"
+ ng-controller="configController">
+ <form name="configForm" novalidate>
+ <table border="0" align=center>
+ <tr>
+ <td>Node Id:</td>
+ <td><input name="nodeId" type="string" ng-model="nodeId"
+ required disabled> <br>
+ <span style="color: red"
+ ng-show="configForm.nodeId.$dirty && configForm.nodeId.$invalid">
+ <span ng-show="configForm.nodeId.$error.required">Node Id
+ is mandatory.</span>
+ </span></td>
+ </tr>
+ <tr>
+ <td>Physical Cell Id:</td>
+ <td><input name="oldPhysicalCellId" type="number"
+ ng-model="oldPhysicalCellId" required disabled> <br>
+ </td>
+ </tr>
+ <tr>
+ <td>Pnf Name:</td>
+ <td><input name="pnfName" type="string" ng-model="pnfName"
+ required disabled> <br></td>
+ </tr>
+ </table>
+ </form>
+ </div>
+ <script>
var mainApp = angular.module("mainApp", []);
mainApp.controller('configController',['$scope', '$http', '$location', function($scope, $http, $location) {
$scope.modifyCell = function() {
@@ -120,27 +95,22 @@
var __variable = queryStringVariable.split("=");
parts.queryvars[__variable[0]] = __variable[1];
});
- //alert("Parts : "+JSON.stringify(parts));
if (parts.queryvars["cid"] !== "undefined") {
//alert("CID : "+parts.queryvars["cid"]);
$scope.nodeId = parts.queryvars["cid"];
}
if (parts.queryvars["pcid"] !== "undefined") {
- //alert("PC Id : "+parts.queryvars["pcid"]);
$scope.newPhysicalCellId = parseInt(parts.queryvars["pcid"]);
$scope.oldPhysicalCellId = parseInt(parts.queryvars["pcid"]);
}
if (parts.queryvars["pnf"] !== "undefined") {
- //alert("CID : "+parts.queryvars["cid"]);
$scope.pnfName = parts.queryvars["pnf"];
}
- //neighbrList
- //neighbrList=Chn204%2CChn203%2CChn403%2CChn302%2CChn304%2CChn202
-
}
}
}]);
- </script>
- <center></body>
+ </script>
+ <center>
+</body>
</html>
diff --git a/ransim/ransimctrlr/RANSIM-GUI/src/main/webapp/getdump.html b/ransim/ransimctrlr/RANSIM-GUI/src/main/webapp/getdump.html
index b878d65..86eae42 100644
--- a/ransim/ransimctrlr/RANSIM-GUI/src/main/webapp/getdump.html
+++ b/ransim/ransimctrlr/RANSIM-GUI/src/main/webapp/getdump.html
@@ -23,49 +23,59 @@
<html>
<head>
- <script src="angular.min.js"></script>
- <style>
- .show {
- z-index: 1000;
- position: absolute;
- padding: 2px;
- display: block;
- margin: 0;
- list-style-type: none;
- list-style: none;
- }
-
- .hide {
- display: none;
- }
-
- .btn-group .button {
- background-color: LightGrey;
- color: black;
- border: 1px solid Black;
- text-align: center;
- text-decoration: none;
- display: inline-block;
- font-size: 16px;
- cursor: pointer;
- width: 100px;
- display: block;
- }
-
- .btn-group .button:not (:last-child) {
- border-bottom:
-
- none;
-
+<script src="angular.min.js"></script>
+<style>
+.show {
+ z-index: 1000;
+ position: absolute;
+ padding: 2px;
+ display: block;
+ margin: 0;
+ list-style-type: none;
+ list-style: none;
+}
+
+.hide {
+ display: none;
+}
+
+.btn-group .button {
+ background-color: LightGrey;
+ color: black;
+ border: 1px solid Black;
+ text-align: center;
+ text-decoration: none;
+ display: inline-block;
+ font-size: 16px;
+ cursor: pointer;
+ width: 100px;
+ display: block;
+}
+
+.btn-group
+
+.button
+:not
+
+(
+:last-child
+
+)
+{
+border-bottom
+:
+
+none
+;
- }
- .btn-group .button:hover {
- background-color: lightblue;
- color: white;
- }
- </style>
- <script>
+}
+.btn-group .button:hover {
+ background-color: lightblue;
+ color: white;
+}
+</style>
+<script>
function init() {
getCellTopology();
}
@@ -75,13 +85,11 @@
"nodeId": nodeId
}
var dataObj = JSON.stringify(formVal);
- //console.log("Delete DataObj : " + dataObj);
var xmlhttp = new XMLHttpRequest();
var toBeContinued = true;
var nbrsStr = '';
xmlhttp.onreadystatechange = function() {
if (this.readyState == 4 && this.status == 200) {
- //console.log("Response DataObj : " + this.responseText);
var nbrs = JSON.parse(this.responseText);
for( i in nbrs.cellsWithHO ) {
var nodeId = nbrs.cellsWithHO[i].nodeId;
@@ -89,7 +97,6 @@
nbrsStr += ', ';
nbrsStr += '{"nodeId":'+'"'+nodeId+'"'+',"blacklisted":"false"}' ;
}
- //console.log("Response nbrsStr : " + nbrsStr);
toBeContinued = false;
} else if (this.readyState == 4 && this.status >= 200) {
toBeContinued = false;
@@ -144,81 +151,6 @@
var aColors = "#32CD32";
var aColorsLength = 1;
var arr = new Array();
- /* for (var x = 0; x < gridSize; x++) {
- arr[x] = new Array();
- for (var y = 0; y < gridSize; y++) {
-
- context.fillStyle = "#D3D3D3";
-
- context.beginPath();
-
- context.lineWidth = 5;
- var a = 1.5 * rad;
- var b = 0.86 * rad;
- if (x % 2 == 0) {
- context.moveTo((x + 1) * a + rad, (2 * y + 1) * b);
- var s = 6;
- for (var p = 1; p < s; p++) {
- context.lineTo(((x + 1) * a) + (rad * Math.cos(p *
- 2 * Math.PI / s)), (2 * y + 1) * b + (
- rad * Math.sin(p * 2 * Math.PI / s)));
- }
- } else {
-
- context.moveTo((x + 1) * a + rad, (2 * y + 2) * b);
- var s = 6;
- for (var p = 1; p < s; p++) {
- context.lineTo(((x + 1) * a) + (rad * Math.cos(p *
- 2 * Math.PI / s)), ((2 * y + 2) * b) +
- (
- rad * Math.sin(p * 2 * Math.PI / s)));
- }
- }
- context.strokeStyle = "black";
- context.stroke();
-
- context.closePath();
- context.fill();
- arr[x][y] = (x + 1) + ":" + (y + 1);
- }
- } */
-
- /* myCanvas.addEventListener('contextmenu', (e) => {
- const pos = {
- x: e.clientX,
- y: e.clientY
- };
- for (var x = 0; x < gridSize; x++) {
- for (var y = 0; y < gridSize; y++) {
- if (isIntersectDefault(pos, x, y, rad, gaps)) {
- var val = arr[x][y];
- document.getElementById("rmenu").className =
- "show";
- document.getElementById('rmenu').style.top =
- pos.y + "px"; //or whatever
- document.getElementById('rmenu').style.left =
- pos.x + "px"; // or whatever
-
- var htmlText1 = '<div class="btn-group">';
- htmlText1 +=
- '<button class="button" id="createNode">Create</button>';
- htmlText1 += '</div>';
- document.getElementById("rmenu").innerHTML =
- htmlText1;
-
- document.getElementById("createNode").addEventListener(
- "click",
- function() {
- createNode(val);
- });
- e.preventDefault();
- return;
- }
- }
- }
- e.preventDefault();
- }); */
-
console.log('{ "cellList" :[');
var index = 0;
var pnfNum = 1000;
@@ -233,8 +165,6 @@
var row = i/45;
var col = i%45;
-
-
//function point2LatLng(row, col, map);
//console.log( translate_coordinates(row, row));
@@ -259,8 +189,6 @@
if (typeof topoObj.cellTopology[i].color != 'undefined') {
confuColor = topoObj.cellTopology[i].color;
}
- //alert(nodeId+" "+physicalCellId+" "+col+" "+row+" "+confusion+" "+confuColor+" ");
-
if (collision) {
if (confusion) {
context.fillStyle = "#FF0000";
@@ -298,14 +226,12 @@
}
context.strokeStyle = "black";
context.stroke();
- //alert(nodeId+" Circle X " + (rad+gaps*col) + " Y: "+ (rad+gaps*row));
context.closePath();
context.fill();
context.font = "12px Comic Sans MS";
context.fillStyle = "white";
context.textAlign = "center";
- //fillMultiLineText(context,"cid:"+nodeId+"\npcid:"+physicalCellId, rad+gaps*col,rad+ gaps*row);
if (col % 2 == 0) {
context.fillText("" + nodeId + "," + physicalCellId, (col +1) * a, rad + (2 * row + 1) * b);
@@ -313,20 +239,12 @@
var xy2ll = translate_xyToLatLng( (col +1) * a, (2 * row +1) * b);
var slat=xy2ll.slat;
var slon=xy2ll.slon;
- //cellStr += ' "latitude" : "' + slat + '", ';
- //cellStr += ' "longitude" : "' + slon + '" ';
-
- //cellStr += ' "screenX" : "' + ((col + 1) * a) + '", ';
- //cellStr += ' "screenY" : "' + (rad + (2 * row) * b) + '" ';
+
} else {
context.fillText("" + nodeId + "," + physicalCellId, (col +1) * a, (2 * row + 2) * b);
var xy2ll = translate_xyToLatLng( (col +1) * a, (2 * row + 2) * b);
var slat=xy2ll.slat;
var slon=xy2ll.slon;
- //cellStr += ' "latitude" : "' + slat + '", ';
- //cellStr += ' "longitude" : "' + slon + '" ';
- //cellStr += ' "screenX" : "' + ((col + 1) * a) + '", ';
- //cellStr += ' "screenY" : "' + ((2 * row + 2) * b) + '" ';
}
var neighborStr = getNeighborDumb(nodeId);
@@ -375,8 +293,6 @@
gaps)) {
var nodeVal = topoObj.cellTopology[i].nodeId;
var cellVal = topoObj.cellTopology[i].physicalCellId;
- //alert('click on circle: ' + topoObj.cellTopology[i].nodeId);
- //alert(pos.x + " "+pos.y);
document.getElementById("rmenu").className =
"show";
document.getElementById('rmenu').style.top =
@@ -439,13 +355,6 @@
var xx,yy,r,ct,st,angle;
angle = 0;
-
-
- /* X,Y to Lat/Lon Coordinate Translation */
- //pxpos_mtrs = porg.x;
- //pypos_mtrs = porg.y;
- //xx = x;
- // yy = y;
r = Math.sqrt(xx*xx + yy*yy);
if(r)
@@ -475,9 +384,6 @@
r = Math.sqrt(xx*xx + yy*yy);
- /* alert('LL_TO_XY: xx=' + xx + ' yy=' + yy + ' r=' + r);
- return false;*/
-
if(r)
{
ct = xx/r;
@@ -485,9 +391,6 @@
xx = r * ( (ct * Math.cos(0)) + (st * Math.sin(0)) );
yy = r * ( (st * Math.cos(0)) - (ct * Math.sin(0)) );
}
- //pxpos_mtrs = xx + porg.xoffset_mtrs;
- //pypos_mtrs = yy + porg.yoffset_mtrs;
-
var sxy={};
sxy={x:xx, y:yy};
@@ -498,7 +401,6 @@
var point = cellInfo.split(":");
var gridX = point[0];
var gridY = point[1];
- //alert("Cell X : "+gridX+" Y: "+ gridY);
window.childWin = window.open('createCell.html?gridX=' + gridX +
'&gridY=' + gridY, '',
'menubar=no, locationbar=no, toolbar=no, width=600px, height=250px'
@@ -518,7 +420,6 @@
}
function deleteNode(cid, pcid) {
- //alert("Delete CID "+cid + " PCID " + pcid);
window.childWin = window.open('deleteCell.html?cid=' + cid +
'&pcid=' + pcid, '',
'menubar=no, locationbar=no, toolbar=no, width=600px, height=250px'
@@ -591,8 +492,8 @@
</head>
<body onLoad="init();" style="margin: 0px">
- <div class="hide" id="rmenu"></div>
- <canvas id="myCanvas" />
+ <div class="hide" id="rmenu"></div>
+ <canvas id="myCanvas" />
</body>
</html>
diff --git a/ransim/ransimctrlr/RANSIM-GUI/src/main/webapp/honeycomb.html b/ransim/ransimctrlr/RANSIM-GUI/src/main/webapp/honeycomb.html
index e40a722..e89fa9f 100644
--- a/ransim/ransimctrlr/RANSIM-GUI/src/main/webapp/honeycomb.html
+++ b/ransim/ransimctrlr/RANSIM-GUI/src/main/webapp/honeycomb.html
@@ -23,49 +23,45 @@
<html>
<head>
- <script src="angular.min.js"></script>
- <style>
- .show {
- z-index: 1000;
- position: absolute;
- padding: 2px;
- display: block;
- margin: 0;
- list-style-type: none;
- list-style: none;
- }
-
- .hide {
- display: none;
- }
-
- .btn-group .button {
- background-color: LightGrey;
- color: black;
- border: 1px solid Black;
- text-align: center;
- text-decoration: none;
- display: inline-block;
- font-size: 16px;
- cursor: pointer;
- width: 100px;
- display: block;
- }
-
- .btn-group .button:not (:last-child) {
- border-bottom:
-
- none;
-
-
- }
-
- .btn-group .button:hover {
- background-color: lightblue;
- color: white;
- }
- </style>
- <script>
+<script src="angular.min.js"></script>
+<style>
+.show {
+ z-index: 1000;
+ position: absolute;
+ padding: 2px;
+ display: block;
+ margin: 0;
+ list-style-type: none;
+ list-style: none;
+}
+
+.hide {
+ display: none;
+}
+
+.btn-group .button {
+ background-color: LightGrey;
+ color: black;
+ border: 1px solid Black;
+ text-align: center;
+ text-decoration: none;
+ display: inline-block;
+ font-size: 16px;
+ cursor: pointer;
+ width: 100px;
+ display: block;
+}
+
+.btn-group .button:not (:last-child ) {
+ border-bottom: none;
+}
+
+.btn-group .button:hover {
+ background-color: lightblue;
+ color: white;
+}
+</style>
+<script>
document.body.addEventListener("wheel", e=>{
if(e.ctrlKey)
event.preventDefault();//prevent zoom
@@ -202,8 +198,6 @@
if (typeof topoObj.cellTopology[i].color != 'undefined') {
confuColor = topoObj.cellTopology[i].color;
}
- //alert(nodeId+" "+physicalCellId+" "+col+" "+row+" "+confusion+" "+confuColor+" ");
-
if (collision) {
if (confusion) {
context.fillStyle = "#FF0000";
@@ -240,14 +234,12 @@
}
context.strokeStyle = "black";
context.stroke();
- //alert(nodeId+" Circle X " + (rad+gaps*col) + " Y: "+ (rad+gaps*row));
context.closePath();
context.fill();
context.font = "12px Comic Sans MS";
context.fillStyle = "white";
context.textAlign = "center";
- //fillMultiLineText(context,"cid:"+nodeId+"\npcid:"+physicalCellId, rad+gaps*col,rad+ gaps*row);
if (col % 2 == 0) {
context.fillText("" + nodeId + "," + physicalCellId, (col +
@@ -292,8 +284,6 @@
gaps)) {
var nodeVal = topoObj.cellTopology[i].nodeId;
var cellVal = topoObj.cellTopology[i].physicalCellId;
- //alert('click on circle: ' + topoObj.cellTopology[i].nodeId);
- //alert(pos.x + " "+pos.y);
document.getElementById("rmenu").className =
"show";
document.getElementById('rmenu').style.top =
@@ -332,7 +322,6 @@
var point = cellInfo.split(":");
var gridX = point[0];
var gridY = point[1];
- //alert("Cell X : "+gridX+" Y: "+ gridY);
window.childWin = window.open('createCell.html?gridX=' + gridX +
'&gridY=' + gridY, '',
'menubar=no, locationbar=no, toolbar=no, width=600px, height=250px'
@@ -342,7 +331,6 @@
}
function modifyNode(cid, pcid) {
- //alert("Modify CID "+cid + " PCID " + pcid);
window.childWin = window.open('modifyCell.html?cid=' + cid +
'&pcid=' + pcid, '',
'menubar=no, locationbar=no, toolbar=no, width=600px, height=250px'
@@ -352,7 +340,6 @@
}
function deleteNode(cid, pcid) {
- //alert("Delete CID "+cid + " PCID " + pcid);
window.childWin = window.open('deleteCell.html?cid=' + cid +
'&pcid=' + pcid, '',
'menubar=no, locationbar=no, toolbar=no, width=600px, height=250px'
@@ -425,8 +412,8 @@
</head>
<body onLoad="init();" style="margin: 0px">
- <div class="hide" id="rmenu"></div>
- <canvas id="myCanvas" />
+ <div class="hide" id="rmenu"></div>
+ <canvas id="myCanvas" />
</body>
</html>
diff --git a/ransim/ransimctrlr/RANSIM-GUI/src/main/webapp/modifyCell.html b/ransim/ransimctrlr/RANSIM-GUI/src/main/webapp/modifyCell.html
index 4862475..c64de04 100644
--- a/ransim/ransimctrlr/RANSIM-GUI/src/main/webapp/modifyCell.html
+++ b/ransim/ransimctrlr/RANSIM-GUI/src/main/webapp/modifyCell.html
@@ -20,76 +20,73 @@
-->
<html>
- <head>
- <title>Modify Cell Configuration</title>
- <script src="angular.min.js"></script>
- <style>
- table, th , td {
- border: 1px solid grey;
- border-collapse: collapse;
- padding: 5px;
- }
-
- table tr:nth-child(odd) {
- background-color: #f2f2f2;
- }
-
- table tr:nth-child(even) {
- background-color: #ffffff;
- }
- </style>
- </head>
- <body><center>
- <h2>Modify Cell Configuration</h2>
- <div data-ng-init="onloadFun()" ng-app = "mainApp" ng-controller = "configController">
- <form name = "configForm" novalidate>
- <table border = "0" align=center>
- <tr>
- <td>Node Id:</td>
- <td><input name = "nodeId" type = "string" ng-model = "nodeId" required disabled>
- <br><span style = "color:red" ng-show = "configForm.nodeId.$dirty && configForm.nodeId.$invalid">
- <span ng-show = "configForm.nodeId.$error.required">Node Id is mandatory.</span>
- </span>
- </td>
- </tr>
- <tr>
- <td>Physical Cell Id:</td>
- <td><input name = "oldPhysicalCellId" type = "number" ng-model = "oldPhysicalCellId" required disabled>
- <br>
- </td>
- </tr>
- <!-- tr>
- <td>New Physical Cell Id:</td>
- <td><input name = "newPhysicalCellId" type = "number" ng-model = "newPhysicalCellId" required>
- <br><span style = "color:red" ng-show = "configForm.newPhysicalCellId.$dirty && configForm.newPhysicalCellId.$invalid">
- <span ng-show = "configForm.newPhysicalCellId.$error.required">New Physical Cell Id is mandatory.</span>
- </span>
- </td>
- </tr -->
- <tr>
- <td>Existing Neighbors:</td>
- <td><textarea name = "existingNbrs" rows="8" cols="31" type = "string" ng-model = "existingNbrs" disabled></textarea>
- <br>
- </td>
- </tr>
- <tr>
- <td>New Neighbors:</td>
- <td><textarea name = "newNbrs" rows="8" cols="31" type = "string" ng-model = "newNbrs"></textarea>
- <br>
- </td>
- </tr>
- <tr>
- <td colspan=2 align=right>
- <button ng-disabled = "configForm.newPhysicalCellId.$dirty &&
+<head>
+<title>Modify Cell Configuration</title>
+<script src="angular.min.js"></script>
+<style>
+table, th, td {
+ border: 1px solid grey;
+ border-collapse: collapse;
+ padding: 5px;
+}
+
+table tr:nth-child(odd) {
+ background-color: #f2f2f2;
+}
+
+table tr:nth-child(even) {
+ background-color: #ffffff;
+}
+</style>
+</head>
+<body>
+ <center>
+ <h2>Modify Cell Configuration</h2>
+ <div data-ng-init="onloadFun()" ng-app="mainApp"
+ ng-controller="configController">
+ <form name="configForm" novalidate>
+ <table border="0" align=center>
+ <tr>
+ <td>Node Id:</td>
+ <td><input name="nodeId" type="string" ng-model="nodeId"
+ required disabled> <br>
+ <span style="color: red"
+ ng-show="configForm.nodeId.$dirty && configForm.nodeId.$invalid">
+ <span ng-show="configForm.nodeId.$error.required">Node Id
+ is mandatory.</span>
+ </span></td>
+ </tr>
+ <tr>
+ <td>Physical Cell Id:</td>
+ <td><input name="oldPhysicalCellId" type="number"
+ ng-model="oldPhysicalCellId" required disabled> <br>
+ </td>
+ </tr>
+ <tr>
+ <td>Existing Neighbors:</td>
+ <td><textarea name="existingNbrs" rows="8" cols="31"
+ type="string" ng-model="existingNbrs" disabled></textarea> <br>
+ </td>
+ </tr>
+ <tr>
+ <td>New Neighbors:</td>
+ <td><textarea name="newNbrs" rows="8" cols="31" type="string"
+ ng-model="newNbrs"></textarea> <br></td>
+ </tr>
+ <tr>
+ <td colspan=2 align=right>
+ <button
+ ng-disabled="configForm.newPhysicalCellId.$dirty &&
configForm.newPhysicalCellId.$invalid || configForm.nodeId.$dirty &&
- configForm.nodeId.$invalid" ng-click="modifyCell()">Modify</button>
- <button ng-click = "close()">Cancel</button>
- </td>
- </tr>
- </table>
- </form>
- </div>
- <script>
+ configForm.nodeId.$invalid"
+ ng-click="modifyCell()">Modify</button>
+ <button ng-click="close()">Cancel</button>
+ </td>
+ </tr>
+ </table>
+ </form>
+ </div>
+ <script>
var mainApp = angular.module("mainApp", []);
mainApp.controller('configController',['$scope', '$http', '$location', function($scope, $http, $location) {
$scope.modifyCell = function() {
@@ -132,13 +129,10 @@
var __variable = queryStringVariable.split("=");
parts.queryvars[__variable[0]] = __variable[1];
});
- //alert("Parts : "+JSON.stringify(parts));
if (parts.queryvars["cid"] !== "undefined") {
- //alert("CID : "+parts.queryvars["cid"]);
$scope.nodeId = parts.queryvars["cid"];
}
if (parts.queryvars["pcid"] !== "undefined") {
- //alert("PC Id : "+parts.queryvars["pcid"]);
$scope.newPhysicalCellId = parseInt(parts.queryvars["pcid"]);
$scope.oldPhysicalCellId = parseInt(parts.queryvars["pcid"]);
}
@@ -152,6 +146,7 @@
}
}
}]);
- </script>
- <center></body>
+ </script>
+ <center>
+</body>
</html>
diff --git a/ransim/ransimctrlr/RANSIM-GUI/src/main/webapp/modifyCellPci.html b/ransim/ransimctrlr/RANSIM-GUI/src/main/webapp/modifyCellPci.html
index 41b61ca..1e93a99 100644
--- a/ransim/ransimctrlr/RANSIM-GUI/src/main/webapp/modifyCellPci.html
+++ b/ransim/ransimctrlr/RANSIM-GUI/src/main/webapp/modifyCellPci.html
@@ -20,76 +20,78 @@
-->
<html>
- <head>
- <title>Modify Cell Configuration</title>
- <script src="angular.min.js"></script>
- <style>
- table, th , td {
- border: 1px solid grey;
- border-collapse: collapse;
- padding: 5px;
- }
-
- table tr:nth-child(odd) {
- background-color: #f2f2f2;
- }
-
- table tr:nth-child(even) {
- background-color: #ffffff;
- }
- </style>
- </head>
- <body><center>
- <h2>Modify Cell Configuration</h2>
- <div data-ng-init="onloadFun()" ng-app = "mainApp" ng-controller = "configController">
- <form name = "configForm" novalidate>
- <table border = "0" align=center>
- <tr>
- <td>Node Id:</td>
- <td><input name = "nodeId" type = "string" ng-model = "nodeId" required disabled>
- <br><span style = "color:red" ng-show = "configForm.nodeId.$dirty && configForm.nodeId.$invalid">
- <span ng-show = "configForm.nodeId.$error.required">Node Id is mandatory.</span>
- </span>
- </td>
- </tr>
- <tr>
- <td>Physical Cell Id:</td>
- <td><input name = "oldPhysicalCellId" type = "number" ng-model = "oldPhysicalCellId" required disabled>
- <br>
- </td>
- </tr>
- <tr>
- <td>New Physical Cell Id:</td>
- <td><input name = "newPhysicalCellId" type = "number" ng-model = "newPhysicalCellId" required>
- <br><span style = "color:red" ng-show = "configForm.newPhysicalCellId.$dirty && configForm.newPhysicalCellId.$invalid">
- <span ng-show = "configForm.newPhysicalCellId.$error.required">New Physical Cell Id is mandatory.</span>
- </span>
- </td>
- </tr>
- <tr>
- <td>Existing Neighbors:</td>
- <td><textarea name = "existingNbrs" rows="8" cols="31" type = "string" ng-model = "existingNbrs" disabled></textarea>
- <br>
- </td>
- </tr>
- <!-- tr>
- <td>New Neighbors:</td>
- <td><textarea name = "newNbrs" rows="8" cols="31" type = "string" ng-model = "newNbrs"></textarea>
- <br>
- </td>
- </tr -->
- <tr>
- <td colspan=2 align=right>
- <button ng-disabled = "configForm.newPhysicalCellId.$dirty &&
+<head>
+<title>Modify Cell Configuration</title>
+<script src="angular.min.js"></script>
+<style>
+table, th, td {
+ border: 1px solid grey;
+ border-collapse: collapse;
+ padding: 5px;
+}
+
+table tr:nth-child(odd) {
+ background-color: #f2f2f2;
+}
+
+table tr:nth-child(even) {
+ background-color: #ffffff;
+}
+</style>
+</head>
+<body>
+ <center>
+ <h2>Modify Cell Configuration</h2>
+ <div data-ng-init="onloadFun()" ng-app="mainApp"
+ ng-controller="configController">
+ <form name="configForm" novalidate>
+ <table border="0" align=center>
+ <tr>
+ <td>Node Id:</td>
+ <td><input name="nodeId" type="string" ng-model="nodeId"
+ required disabled> <br>
+ <span style="color: red"
+ ng-show="configForm.nodeId.$dirty && configForm.nodeId.$invalid">
+ <span ng-show="configForm.nodeId.$error.required">Node Id
+ is mandatory.</span>
+ </span></td>
+ </tr>
+ <tr>
+ <td>Physical Cell Id:</td>
+ <td><input name="oldPhysicalCellId" type="number"
+ ng-model="oldPhysicalCellId" required disabled> <br>
+ </td>
+ </tr>
+ <tr>
+ <td>New Physical Cell Id:</td>
+ <td><input name="newPhysicalCellId" type="number"
+ ng-model="newPhysicalCellId" required> <br>
+ <span style="color: red"
+ ng-show="configForm.newPhysicalCellId.$dirty && configForm.newPhysicalCellId.$invalid">
+ <span ng-show="configForm.newPhysicalCellId.$error.required">New
+ Physical Cell Id is mandatory.</span>
+ </span></td>
+ </tr>
+ <tr>
+ <td>Existing Neighbors:</td>
+ <td><textarea name="existingNbrs" rows="8" cols="31"
+ type="string" ng-model="existingNbrs" disabled></textarea> <br>
+ </td>
+ </tr>
+ <tr>
+ <td colspan=2 align=right>
+ <button
+ ng-disabled="configForm.newPhysicalCellId.$dirty &&
configForm.newPhysicalCellId.$invalid || configForm.nodeId.$dirty &&
- configForm.nodeId.$invalid" ng-click="modifyCell()">Modify</button>
- <button ng-click = "close()">Cancel</button>
- </td>
- </tr>
- </table>
- </form>
- </div>
- <script>
+ configForm.nodeId.$invalid"
+ ng-click="modifyCell()">Modify</button>
+ <button ng-click="close()">Cancel</button>
+ </td>
+ </tr>
+ </table>
+ </form>
+ </div>
+ <script>
var mainApp = angular.module("mainApp", []);
mainApp.controller('configController',['$scope', '$http', '$location', function($scope, $http, $location) {
$scope.modifyCell = function() {
@@ -132,13 +134,10 @@
var __variable = queryStringVariable.split("=");
parts.queryvars[__variable[0]] = __variable[1];
});
- //alert("Parts : "+JSON.stringify(parts));
if (parts.queryvars["cid"] !== "undefined") {
- //alert("CID : "+parts.queryvars["cid"]);
$scope.nodeId = parts.queryvars["cid"];
}
if (parts.queryvars["pcid"] !== "undefined") {
- //alert("PC Id : "+parts.queryvars["pcid"]);
$scope.newPhysicalCellId = parseInt(parts.queryvars["pcid"]);
$scope.oldPhysicalCellId = parseInt(parts.queryvars["pcid"]);
}
@@ -152,6 +151,7 @@
}
}
}]);
- </script>
- <center></body>
+ </script>
+ <center>
+</body>
</html>
diff --git a/ransim/ransimctrlr/RANSIM-GUI/src/main/webapp/newmodify.html b/ransim/ransimctrlr/RANSIM-GUI/src/main/webapp/newmodify.html
index 4862475..e2b2fac 100644
--- a/ransim/ransimctrlr/RANSIM-GUI/src/main/webapp/newmodify.html
+++ b/ransim/ransimctrlr/RANSIM-GUI/src/main/webapp/newmodify.html
@@ -20,76 +20,73 @@
-->
<html>
- <head>
- <title>Modify Cell Configuration</title>
- <script src="angular.min.js"></script>
- <style>
- table, th , td {
- border: 1px solid grey;
- border-collapse: collapse;
- padding: 5px;
- }
-
- table tr:nth-child(odd) {
- background-color: #f2f2f2;
- }
-
- table tr:nth-child(even) {
- background-color: #ffffff;
- }
- </style>
- </head>
- <body><center>
- <h2>Modify Cell Configuration</h2>
- <div data-ng-init="onloadFun()" ng-app = "mainApp" ng-controller = "configController">
- <form name = "configForm" novalidate>
- <table border = "0" align=center>
- <tr>
- <td>Node Id:</td>
- <td><input name = "nodeId" type = "string" ng-model = "nodeId" required disabled>
- <br><span style = "color:red" ng-show = "configForm.nodeId.$dirty && configForm.nodeId.$invalid">
- <span ng-show = "configForm.nodeId.$error.required">Node Id is mandatory.</span>
- </span>
- </td>
- </tr>
- <tr>
- <td>Physical Cell Id:</td>
- <td><input name = "oldPhysicalCellId" type = "number" ng-model = "oldPhysicalCellId" required disabled>
- <br>
- </td>
- </tr>
- <!-- tr>
- <td>New Physical Cell Id:</td>
- <td><input name = "newPhysicalCellId" type = "number" ng-model = "newPhysicalCellId" required>
- <br><span style = "color:red" ng-show = "configForm.newPhysicalCellId.$dirty && configForm.newPhysicalCellId.$invalid">
- <span ng-show = "configForm.newPhysicalCellId.$error.required">New Physical Cell Id is mandatory.</span>
- </span>
- </td>
- </tr -->
- <tr>
- <td>Existing Neighbors:</td>
- <td><textarea name = "existingNbrs" rows="8" cols="31" type = "string" ng-model = "existingNbrs" disabled></textarea>
- <br>
- </td>
- </tr>
- <tr>
- <td>New Neighbors:</td>
- <td><textarea name = "newNbrs" rows="8" cols="31" type = "string" ng-model = "newNbrs"></textarea>
- <br>
- </td>
- </tr>
- <tr>
- <td colspan=2 align=right>
- <button ng-disabled = "configForm.newPhysicalCellId.$dirty &&
+<head>
+<title>Modify Cell Configuration</title>
+<script src="angular.min.js"></script>
+<style>
+table, th, td {
+ border: 1px solid grey;
+ border-collapse: collapse;
+ padding: 5px;
+}
+
+table tr:nth-child(odd) {
+ background-color: #f2f2f2;
+}
+
+table tr:nth-child(even) {
+ background-color: #ffffff;
+}
+</style>
+</head>
+<body>
+ <center>
+ <h2>Modify Cell Configuration</h2>
+ <div data-ng-init="onloadFun()" ng-app="mainApp"
+ ng-controller="configController">
+ <form name="configForm" novalidate>
+ <table border="0" align=center>
+ <tr>
+ <td>Node Id:</td>
+ <td><input name="nodeId" type="string" ng-model="nodeId"
+ required disabled> <br>
+ <span style="color: red"
+ ng-show="configForm.nodeId.$dirty && configForm.nodeId.$invalid">
+ <span ng-show="configForm.nodeId.$error.required">Node Id
+ is mandatory.</span>
+ </span></td>
+ </tr>
+ <tr>
+ <td>Physical Cell Id:</td>
+ <td><input name="oldPhysicalCellId" type="number"
+ ng-model="oldPhysicalCellId" required disabled> <br>
+ </td>
+ </tr>
+ <tr>
+ <td>Existing Neighbors:</td>
+ <td><textarea name="existingNbrs" rows="8" cols="31"
+ type="string" ng-model="existingNbrs" disabled></textarea> <br>
+ </td>
+ </tr>
+ <tr>
+ <td>New Neighbors:</td>
+ <td><textarea name="newNbrs" rows="8" cols="31" type="string"
+ ng-model="newNbrs"></textarea> <br></td>
+ </tr>
+ <tr>
+ <td colspan=2 align=right>
+ <button
+ ng-disabled="configForm.newPhysicalCellId.$dirty &&
configForm.newPhysicalCellId.$invalid || configForm.nodeId.$dirty &&
- configForm.nodeId.$invalid" ng-click="modifyCell()">Modify</button>
- <button ng-click = "close()">Cancel</button>
- </td>
- </tr>
- </table>
- </form>
- </div>
- <script>
+ configForm.nodeId.$invalid"
+ ng-click="modifyCell()">Modify</button>
+ <button ng-click="close()">Cancel</button>
+ </td>
+ </tr>
+ </table>
+ </form>
+ </div>
+ <script>
var mainApp = angular.module("mainApp", []);
mainApp.controller('configController',['$scope', '$http', '$location', function($scope, $http, $location) {
$scope.modifyCell = function() {
@@ -104,11 +101,9 @@
var res = $http.post('/ransim/api/ModifyACell', dataObj)
.then(function successCallback(response){
-
alert("Modified Successfully");
window.close();
}, function errorCallback(response){
-
alert("Modify Failed");
window.close();
});
@@ -132,13 +127,10 @@
var __variable = queryStringVariable.split("=");
parts.queryvars[__variable[0]] = __variable[1];
});
- //alert("Parts : "+JSON.stringify(parts));
if (parts.queryvars["cid"] !== "undefined") {
- //alert("CID : "+parts.queryvars["cid"]);
$scope.nodeId = parts.queryvars["cid"];
}
if (parts.queryvars["pcid"] !== "undefined") {
- //alert("PC Id : "+parts.queryvars["pcid"]);
$scope.newPhysicalCellId = parseInt(parts.queryvars["pcid"]);
$scope.oldPhysicalCellId = parseInt(parts.queryvars["pcid"]);
}
@@ -152,6 +144,7 @@
}
}
}]);
- </script>
- <center></body>
+ </script>
+ <center>
+</body>
</html>
diff --git a/ransim/ransimctrlr/RANSIM-GUI/src/main/webapp/operationhistory.html b/ransim/ransimctrlr/RANSIM-GUI/src/main/webapp/operationhistory.html
index 3b6ed37..8af0f8b 100644
--- a/ransim/ransimctrlr/RANSIM-GUI/src/main/webapp/operationhistory.html
+++ b/ransim/ransimctrlr/RANSIM-GUI/src/main/webapp/operationhistory.html
@@ -21,29 +21,40 @@
<!DOCTYPE html>
<html>
<head>
- <title>Cell Operations History</title>
- <style>
- th, td, p, input {
- font:14px Verdana;
- }
- table, th, td
- {
- border: solid 1px #DDD;
- border-collapse: collapse;
- padding: 2px 3px;
- text-align: center;
- }
- th {
- font-weight:bold;
- }
- .odd{background-color: white;}
- .even{background-color: gray;}
- </style>
+<title>Cell Operations History</title>
+<style>
+th, td, p, input {
+ font: 14px Verdana;
+}
+
+table, th, td {
+ border: solid 1px #DDD;
+ border-collapse: collapse;
+ padding: 2px 3px;
+ text-align: center;
+}
+
+th {
+ font-weight: bold;
+}
+
+.odd {
+ background-color: white;
+}
+
+.even {
+ background-color: gray;
+}
+</style>
</head>
<body onload="getOperationLogs()">
- <center><h3>Cell Operations History</h3></center><br>
- <p id="showData"></p>
- <input align=right type=button name=close value="Close" onclick="window.close();">
+ <center>
+ <h3>Cell Operations History</h3>
+ </center>
+ <br>
+ <p id="showData"></p>
+ <input align=right type=button name=close value="Close"
+ onclick="window.close();">
</body>
<script>
@@ -62,13 +73,11 @@
xmlhttp.send();
}
- function drawTable(myBooks) {
+ function drawTable(data) {
// EXTRACT VALUE FOR HTML HEADER.
- // ('Book ID', 'Book Name', 'Category' and 'Price')
- //alert("Draw Table");
var col = [];
- for (var i = 0; i < myBooks.length; i++) {
- for (var key in myBooks[i]) {
+ for (var i = 0; i < data.length; i++) {
+ for (var key in data[i]) {
if (col.indexOf(key) === -1) {
col.push(key);
}
@@ -92,7 +101,7 @@
}
// ADD JSON DATA TO THE TABLE AS ROWS.
- for (var i = 0; i < myBooks.length; i++) {
+ for (var i = 0; i < data.length; i++) {
tr = table.insertRow(-1);
//manipulate rows
@@ -108,10 +117,10 @@
if (j == 0) continue;
var tabCell = tr.insertCell(-1);
if (j==1) {
- var d = new Date(myBooks[i][col[j]] + 19800000);
+ var d = new Date(data[i][col[j]] + 19800000);
tabCell.innerHTML = d;
} else {
- tabCell.innerHTML = myBooks[i][col[j]];
+ tabCell.innerHTML = data[i][col[j]];
}
}
}
diff --git a/ransim/ransimctrlr/RANSIM-GUI/src/main/webapp/ransim.html b/ransim/ransimctrlr/RANSIM-GUI/src/main/webapp/ransim.html
index ddb3b8b..27abcbe 100644
--- a/ransim/ransimctrlr/RANSIM-GUI/src/main/webapp/ransim.html
+++ b/ransim/ransimctrlr/RANSIM-GUI/src/main/webapp/ransim.html
@@ -23,56 +23,58 @@
<html>
<head>
- <meta name="viewport" content="initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0,target-densitydpi=device-dpi, user-scalable=no" />
- <style>
- .show {
- z-index: 1000;
- position: absolute;
- padding: 2px;
- display: block;
- margin: 0;
- list-style-type: none;
- list-style: none;
- }
-
- .hide {
- display: none;
- }
-
- .btn-group .button {
- background-color: LightGrey;
- color: black;
- border: 1px solid Black;
- text-align: center;
- text-decoration: none;
- display: inline-block;
- font-size: 16px;
- cursor: pointer;
- width: 100px;
- display: block;
- }
-
- .btn-group .button:not (:last-child) {
- border-bottom: none;
- }
-
- .btn-group .button:hover {
- background-color: lightblue;
- color: white;
- }
- .button {
- background-color: #4CAF50; /* Green */
- border: none;
- color: white;
- text-align: center;
- text-decoration: none;
- display: inline-block;
- font-size: 16px;
- margin: 4px 2px;
- cursor: pointer;
- }
- </style>
- <script>
+<meta name="viewport"
+ content="initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0,target-densitydpi=device-dpi, user-scalable=no" />
+<style>
+.show {
+ z-index: 1000;
+ position: absolute;
+ padding: 2px;
+ display: block;
+ margin: 0;
+ list-style-type: none;
+ list-style: none;
+}
+
+.hide {
+ display: none;
+}
+
+.btn-group .button {
+ background-color: LightGrey;
+ color: black;
+ border: 1px solid Black;
+ text-align: center;
+ text-decoration: none;
+ display: inline-block;
+ font-size: 16px;
+ cursor: pointer;
+ width: 100px;
+ display: block;
+}
+
+.btn-group .button:not (:last-child ) {
+ border-bottom: none;
+}
+
+.btn-group .button:hover {
+ background-color: lightblue;
+ color: white;
+}
+
+.button {
+ background-color: #4CAF50; /* Green */
+ border: none;
+ color: white;
+ text-align: center;
+ text-decoration: none;
+ display: inline-block;
+ font-size: 16px;
+ margin: 4px 2px;
+ cursor: pointer;
+}
+</style>
+<script>
var childWindow;
var ScreenConfig;
@@ -138,11 +140,7 @@
var physicalCellId = topoObj.cellTopology[i].physicalCellId;
var serverId = topoObj.cellTopology[i].serverId;
var confColor = noProblemColor;
- /*if (typeof topoObj.cellTopology[i].color != 'undefined') {
- confColor = topoObj.cellTopology[i].color;
- console.log("topoObj.cellTopology[i].color:");
- console.log(topoObj.cellTopology[i].color);
- }*/
+
confColor = topoObj.cellTopology[i].color;
console.log("topoObj.cellTopology[i].color:");
console.log(topoObj.cellTopology[i].color);
@@ -249,7 +247,6 @@
'menubar=no, locationbar=no, toolbar=no, width=500px, height=300px'
);
- //alert("Cell Id:" + nodeVal + "\nPhysical Cell Id:" + cellVal + "\nPnf Name:" + pnfName);
});
document.getElementById("showNeighbours").addEventListener("click",
function() {
@@ -301,35 +298,6 @@
ScreenConfig, topoObj) {
document.getElementById("modified").innerHTML = 'b';
- /* for (i in topoObj.cellTopology) {
- var n = topoObj.cellTopology[i].nodeId;
- var p = topoObj.cellTopology[i].physicalCellId;
- if (typeof topoObj.cellTopology[i].color != 'undefined') {
- confColor = topoObj.cellTopology[i].color;
- }
- var x = (topoObj.cellTopology[i].screenX - topoObj.minScreenX ) * ScreenConfig.xScaleUnit + 20;
- var y = (topoObj.cellTopology[i].screenY - topoObj.minScreenY ) * ScreenConfig.yScaleUnit + 20;
-
- if (topoObj.cellTopology[i].sectorNumber == 1) {
- x -= RADIUS;
- } else if (topoObj.cellTopology[i].sectorNumber == 2) {
- x += RADIUS;
- } else if (topoObj.cellTopology[i].sectorNumber == 3) {
- y += 1.8 * RADIUS;
- }
-
- ScreenConfig.context.fillStyle = "#BFBFBF";
- ScreenConfig.context.beginPath();
- ScreenConfig.context.arc(x, y, RADIUS, 0, Math.PI * 2, true);
- ScreenConfig.context.strokeStyle = "black";
- ScreenConfig.context.stroke();
- ScreenConfig.context.closePath();
- ScreenConfig.context.fill();
- ScreenConfig.context.font = "bold 11px Comic Sans MS";
- ScreenConfig.context.fillStyle = "black";
- ScreenConfig.context.textAlign = "center";
- fillMultiLineText(ScreenConfig.context, p, x, y);
- } */
for (i in neighbour.cellsWithHo) {
var neighbourNodeId = neighbour.cellsWithHo[i].nodeId;
@@ -392,9 +360,6 @@
ScreenConfig.context.lineTo(nbrCellX-headlen*Math.cos(angle+Math.PI/6),nbrCellY-headlen*Math.sin(angle+Math.PI/6));
ScreenConfig.context.stroke();
ScreenConfig.context.closePath();
-
-
-
ScreenConfig.context.fillStyle = confuColor;
ScreenConfig.context.beginPath();
ScreenConfig.context.arc(nbrCellX, nbrCellY, RADIUS, 0, Math.PI * 2, true);
@@ -495,7 +460,6 @@
"nodeId": cid
}
var dataObj = JSON.stringify(formVal);
- //var dataObj = JSON.stringify(formVal);
var xmlhttp = new XMLHttpRequest();
xmlhttp.onreadystatechange = function() {
if (this.readyState == 4 && this.status == 200) {
@@ -529,7 +493,6 @@
"nodeId": cid
}
var dataObj = JSON.stringify(formVal);
- //var dataObj = JSON.stringify(formVal);
var xmlhttp = new XMLHttpRequest();
xmlhttp.onreadystatechange = function() {
if (this.readyState == 4 && this.status == 200) {
@@ -541,12 +504,7 @@
else
neighbourNodeIds += ',' + neighbour.cellsWithHo[i].nodeId;
}
- /*for (i in neighbour.cellsWithNoHo) {
- if (neighbourNodeIds.length == 0)
- neighbourNodeIds += neighbour.cellsWithNoHo[i].nodeId;
- else
- neighbourNodeIds += ',' + neighbour.cellsWithNoHo[i].nodeId;
- }*/
+
var neighbrList = escape(neighbourNodeIds);
childWindow = window.open('modifyCellPci.html?cid=' + cid +
'&pcid=' + pcid + '&neighbrList=' + neighbrList, '',
@@ -585,8 +543,6 @@
}
function isIntersect(point, currCell, cellX, cellY, ScreenConfig) {
- //var cellX = currCell.screenX * ScreenConfig.xScaleUnit;
- //var cellY = currCell.screenY * ScreenConfig.yScaleUnit;
if (currCell.sectorNumber == 1) {
cellX -= ScreenConfig.RADIUS;
@@ -616,7 +572,6 @@
}
function searchCell(){
- //alert("enter netconf server id");
var serverId = document.getElementById("myText").value;;
netconfServerUserInput = serverId;
console.log("netconfServerUserInput");
@@ -677,15 +632,16 @@
</head>
<body onLoad="init();" style="margin: 0px">
- <div class="hide" id="rmenu"></div>
- <div class="hide" id="modified"></div>
- <div id="ransim" class="absolute">
- PNF/Cell name: <input type="text" id="myText" size="9" value="ncserver00">
+ <div class="hide" id="rmenu"></div>
+ <div class="hide" id="modified"></div>
+ <div id="ransim" class="absolute">
+ PNF/Cell name: <input type="text" id="myText" size="9"
+ value="ncserver00">
<button onclick="searchCell()">Search</button>
<br>
-
+
</div>
- <canvas id="myCanvas" width="500000" height="500000"></canvas>
+ <canvas id="myCanvas" width="500000" height="500000"></canvas>
</body>
</html>
diff --git a/ransim/ransimctrlr/RANSIM-GUI/src/main/webapp/ransimgrid.html b/ransim/ransimctrlr/RANSIM-GUI/src/main/webapp/ransimgrid.html
index bf097fd..f2ca56c 100644
--- a/ransim/ransimctrlr/RANSIM-GUI/src/main/webapp/ransimgrid.html
+++ b/ransim/ransimctrlr/RANSIM-GUI/src/main/webapp/ransimgrid.html
@@ -51,22 +51,34 @@
}
.btn-group
+
+
.button
+
+
:not
+
+
(
:last-child
+
+
)
{
border-bottom
+
+
:
+
+
none
-;
+;
}
.btn-group .button:hover {
background-color: lightblue;
@@ -91,59 +103,10 @@ function getCellTopology() {
};
xmlhttp.open("GET", "http://ransimsvr:8081/ransim/api/GetTopology", true);
xmlhttp.send();
- /*
- var topologyJson = {
- "gridSize": 10,
- "cellTopology": [
- {"nodeId":55, "physicalCellId":"70", "gridX":1, "gridY":1, "confusion":true, "color":"#FF0000" },
- {"nodeId":58, "physicalCellId":"72", "gridX":1, "gridY":4 },
- {"nodeId":57, "physicalCellId":"73", "gridX":1, "gridY":3 },
- {"nodeId":56, "physicalCellId":"71", "gridX":1, "gridY":2 },
- {"nodeId":65, "physicalCellId":"70", "gridX":3, "gridY":2, "confusion":true, "color":"#FF0000" }
- ]}
- drawTopology(topologyJson);
- */
- /* var topologyJson = {"gridSize":10,
- "cellTopology":[
- {"nodeId":51,"physicalCellId":20,"pciCollisionDetected":false,"pciConfusionDetected":false,"gridX":5,"gridY":1,"serverId":"ncserver1003"},
- {"nodeId":52,"physicalCellId":4,"pciCollisionDetected":false,"pciConfusionDetected":false,"gridX":5,"gridY":2,"serverId":"ncserver1003"},
- {"nodeId":61,"physicalCellId":10,"pciCollisionDetected":true,"pciConfusionDetected":false,"gridX":6,"gridY":1,"serverId":"ncserver1004"},
- {"nodeId":62,"physicalCellId":5,"pciCollisionDetected":false,"pciConfusionDetected":false,"gridX":6,"gridY":2,"serverId":"ncserver1004"},
- {"nodeId":63,"physicalCellId":6,"pciCollisionDetected":false,"pciConfusionDetected":false,"gridX":6,"gridY":3,"serverId":"ncserver1004"},
- {"nodeId":68,"physicalCellId":9,"pciCollisionDetected":false,"pciConfusionDetected":false,"gridX":6,"gridY":8,"serverId":"ncserver1004"},
- {"nodeId":71,"physicalCellId":2,"pciCollisionDetected":true,"pciConfusionDetected":false,"gridX":7,"gridY":1,"serverId":"ncserver1005"},
- {"nodeId":72,"physicalCellId":8,"pciCollisionDetected":false,"pciConfusionDetected":false,"gridX":7,"gridY":2,"serverId":"ncserver1005"},
- {"nodeId":73,"physicalCellId":1,"pciCollisionDetected":false,"pciConfusionDetected":false,"gridX":7,"gridY":3,"serverId":"ncserver1005"},
- {"nodeId":76,"physicalCellId":2,"pciCollisionDetected":false,"pciConfusionDetected":false,"gridX":7,"gridY":6,"serverId":"ncserver1005"},
- {"nodeId":77,"physicalCellId":5,"pciCollisionDetected":false,"pciConfusionDetected":false,"gridX":7,"gridY":7,"serverId":"ncserver1005"},
- {"nodeId":78,"physicalCellId":3,"pciCollisionDetected":false,"pciConfusionDetected":true,"gridX":7,"gridY":8,"serverId":"ncserver1005"},
- {"nodeId":79,"physicalCellId":4,"pciCollisionDetected":true,"pciConfusionDetected":false,"gridX":7,"gridY":9,"serverId":"ncserver1005"},
- {"nodeId":80,"physicalCellId":15,"pciCollisionDetected":false,"pciConfusionDetected":false,"gridX":7,"gridY":10,"serverId":"ncserver1005"},
- {"nodeId":81,"physicalCellId":13,"pciCollisionDetected":false,"pciConfusionDetected":false,"gridX":8,"gridY":1,"serverId":"ncserver1005"},
- {"nodeId":82,"physicalCellId":14,"pciCollisionDetected":false,"pciConfusionDetected":false,"gridX":8,"gridY":2,"serverId":"ncserver1005"},
- {"nodeId":83,"physicalCellId":3,"pciCollisionDetected":false,"pciConfusionDetected":false,"gridX":8,"gridY":3,"serverId":"ncserver1005"},
- {"nodeId":86,"physicalCellId":6,"pciCollisionDetected":true,"pciConfusionDetected":true,"gridX":8,"gridY":6,"serverId":"ncserver1006"},
- {"nodeId":87,"physicalCellId":4,"pciCollisionDetected":false,"pciConfusionDetected":true,"gridX":8,"gridY":7,"serverId":"ncserver1006"},
- {"nodeId":88,"physicalCellId":0,"pciCollisionDetected":false,"pciConfusionDetected":true,"gridX":8,"gridY":8,"serverId":"ncserver1006"},
- {"nodeId":89,"physicalCellId":1,"pciCollisionDetected":false,"pciConfusionDetected":true,"gridX":8,"gridY":9,"serverId":"ncserver1006"},
- {"nodeId":90,"physicalCellId":7,"pciCollisionDetected":false,"pciConfusionDetected":true,"gridX":8,"gridY":10,"serverId":"ncserver1006"},
- {"nodeId":91,"physicalCellId":11,"pciCollisionDetected":false,"pciConfusionDetected":false,"gridX":9,"gridY":1,"serverId":"ncserver1006"},
- {"nodeId":96,"physicalCellId":5,"pciCollisionDetected":false,"pciConfusionDetected":false,"gridX":9,"gridY":6,"serverId":"ncserver1006"},
- {"nodeId":97,"physicalCellId":1,"pciCollisionDetected":true,"pciConfusionDetected":false,"gridX":9,"gridY":7,"serverId":"ncserver1006"},
- {"nodeId":98,"physicalCellId":2,"pciCollisionDetected":false,"pciConfusionDetected":true,"gridX":9,"gridY":8,"serverId":"ncserver1006"},
- {"nodeId":99,"physicalCellId":3,"pciCollisionDetected":false,"pciConfusionDetected":true,"gridX":9,"gridY":9,"serverId":"ncserver1006"},
- {"nodeId":100,"physicalCellId":4,"pciCollisionDetected":false,"pciConfusionDetected":true,"gridX":9,"gridY":10,"serverId":"ncserver1007"},
- {"nodeId":107,"physicalCellId":8,"pciCollisionDetected":false,"pciConfusionDetected":false,"gridX":10,"gridY":7,"serverId":"ncserver1007"},
- {"nodeId":108,"physicalCellId":9,"pciCollisionDetected":true,"pciConfusionDetected":true,"gridX":10,"gridY":8,"serverId":"ncserver1007"},
- {"nodeId":109,"physicalCellId":1,"pciCollisionDetected":false,"pciConfusionDetected":false,"gridX":10,"gridY":9,"serverId":"ncserver1007"}
- ]}
- drawTopology(topologyJson); */
-
}
function drawTopology(topoObj){
- //alert("topoObj");
var width = window.innerHeight;
var height = window.innerHeight;//100;
var myCanvas = document.getElementById("myCanvas");
@@ -155,41 +118,18 @@ function drawTopology(topoObj){
context.fillStyle = "#FFFFFF";
context.fillRect(0,0,width,height);
- //var gridSize = 15;
var gridSize = topoObj.gridSize;
var rad=height/(2 * gridSize);//10;
var gaps= rad*2;
- // alert(rad);
var widthCount = parseInt(width/gaps);
var heightCount = parseInt(height/gaps);
- //var aColors=["#43A9D1","#EFA63B","#EF7625","#5E4130","#EEE","#DDD"];
var aColors="#32CD32";
var aColorsLength = 1;
var arr = new Array();
var a=1.5*rad;
var b=0.86*rad;
-
-
- /* for(var x=0; x<gridSize;x++) {
- arr[x]=new Array();
- for(var y=0; y<gridSize;y++) {
- context.fillStyle = "#D3D3D3";
- context.beginPath();
-
- context.arc(rad+gaps*x,rad+ gaps*y, rad, 0, Math.PI*2, true);
- context.closePath();
- context.fill();
- arr[x][y] = (x+1) + ":" + (y+1);
-
- context.font = "12px Comic Sans MS";
- context.fillStyle = "white";
- context.textAlign = "center";
- fillMultiLineText(context,"X:"+y+"\nY:"+x, rad+gaps*x,rad+ gaps*y);
-
- }
- } */
-
+
myCanvas.addEventListener('contextmenu', (e) => {
const pos = {
x: e.clientX,
@@ -237,20 +177,7 @@ function drawTopology(topoObj){
if (typeof topoObj.cellTopology[i].color != 'undefined') {
confuColor = topoObj.cellTopology[i].color;
}
- //alert(nodeId+" "+physicalCellId+" "+col+" "+row+" "+confusion+" "+confuColor+" ");
-
- /*if (collision) {
- if (confusion) {
- context.fillStyle = "#FF1493";
- } else {
- context.fillStyle = "#FF0000";
- }
-
- } else if (confusion){
- context.fillStyle = "#CCCC00";
- } else {
- context.fillStyle = "#32CD32";
- }*/
+
if (confusion) {
context.fillStyle = confuColor;
} else {
@@ -259,24 +186,17 @@ function drawTopology(topoObj){
context.beginPath();
context.arc(rad+gaps*col,rad+gaps*row, rad/2, 0, Math.PI*2, true);
- //alert(nodeId+" Circle X " + (rad+gaps*col) + " Y: "+ (rad+gaps*row));
context.strokeStyle = "black";
context.stroke();
context.closePath();
context.fill();
- /* context.beginPath();
- context.moveTo(rad+gaps*col, rad+gaps*row);
- context.lineTo(rad+gaps*col,rad+gaps*row - rad/2);
- context.strokeStyle = "black";
- context.stroke();
- context.closePath(); */
+
context.font = "12px Comic Sans MS";
context.fillStyle = "white";
context.textAlign = "center";
context.fillText(physicalCellId, rad+gaps*col,rad+ gaps*row );
- //fillMultiLineText(context,nodeId, rad+gaps*col,rad+ gaps*row);
}
myCanvas.addEventListener('contextmenu', (e) => {
@@ -293,23 +213,17 @@ function drawTopology(topoObj){
--row;
var col = topoObj.cellTopology[i].gridY;
--col;
- //alert('click on circle: ' + topoObj.cellTopology[i].nodeId);
- //alert(pos.x + " "+pos.y);
document.getElementById("rmenu").className = "show";
document.getElementById('rmenu').style.top = pos.y+"px"; //or whatever
document.getElementById('rmenu').style.left = pos.x+"px"; // or whatever
var htmlText1 = '<div class="btn-group">';
htmlText1 += '<button class="button" id="showNeighbours">showNeighbours</button>';
- //htmlText1 += '<button class="button" id="deleteNode">Delete</button>';
htmlText1 += '</div>';
document.getElementById("rmenu").innerHTML = htmlText1;
document.getElementById("showNeighbours").addEventListener("click", function(){
alert(topoObj.cellTopology[i].nodeId);
- //alert(col);
- //alert(i);
- //change(topoObj,row,col);
var formVal = {
"nodeId": nodeVal
}
@@ -327,9 +241,7 @@ function drawTopology(topoObj){
xmlhttp.setRequestHeader('Content-Type', 'application/json')
xmlhttp.send(dataObj);
});
- /* document.getElementById("deleteNode").addEventListener("click", function(){
- deleteNode(nodeVal, cellVal);
- }); */
+
}
}
e.preventDefault();
@@ -350,9 +262,7 @@ function drawTopology(topoObj){
context.fillStyle = "#FFFFFF";
context.fillRect(0,0,width,height);
- //var gridSize = 15;
var gridSize = topoObj.gridSize;
- //alert(gridSize);
var rad=height/(2 * gridSize);//10;
var gaps= rad*2;
@@ -372,11 +282,6 @@ function drawTopology(topoObj){
context.textAlign = "center";
context.fillText(cellPhysicalCellId, rad+gaps*col,rad+ gaps*row );
-
-
- /* var res = $http.post('http://ransimsvr:8081/ransim/api/GetNeighborList', dataObj)
- var neighbour = JSON.parse(res); */
-
for (i in neighbour.neighborList) {
var neighbourNodeId = neighbour.neighborList[i].nodeId;
@@ -394,12 +299,7 @@ function drawTopology(topoObj){
confusion = neighbour.neighborList[i].pciConfusionDetected;
}
- /* var confuColor = aColors;
- if (typeof neighbour.neighborList[i].color != 'undefined') {
- confuColor = neighbour.neighborList[i].color;
- } */
- //alert(nodeId+" "+physicalCellId+" "+col+" "+row+" "+confusion+" "+confuColor+" ");
-
+
if (collision) {
if (confusion) {
context.fillStyle = "#FF1493";
@@ -415,7 +315,6 @@ function drawTopology(topoObj){
context.beginPath();
context.arc(rad+gaps*col,rad+gaps*row, rad/2, 0, Math.PI*2, true);
- //alert(nodeId+" Circle X " + (rad+gaps*col) + " Y: "+ (rad+gaps*row));
context.strokeStyle = "black";
context.stroke();
context.closePath();
@@ -433,7 +332,6 @@ function drawTopology(topoObj){
context.fillStyle = "white";
context.textAlign = "center";
context.fillText(neighbourPhysicalCellId, rad+gaps*col,rad+ gaps*row );
- //fillMultiLineText(context,nodeId, rad+gaps*col,rad+ gaps*row);
}
@@ -454,24 +352,12 @@ function drawTopology(topoObj){
context.fillStyle = "#FFFFFF";
context.fillRect(0,0,width,height);
- //var gridSize = 15;
var gridSize = topoObj.gridSize;
- //alert(gridSize);
var rad=height/(2 * gridSize);//10;
var gaps= rad*2;
- // alert(rad);
-
- //var row = topoObj.cellTopology[i].gridX;
- //--row;
- //alert(topoObj.cellTopology[i].nodeId);
- //var col = topoObj.cellTopology[i].gridY;
- //--col;
- //alert(col);
- //alert(i);
- //context.arc(rad+gaps*col,rad+ gaps*row, rad/2, 0, Math.PI*2, true);
- //alert(rad+ gaps*row);
+
context.fillStyle = "#D3D3D3";
context.beginPath();
@@ -535,11 +421,7 @@ function drawTopology(topoObj){
document.getElementById("rmenu").className = "hide";
});
- /*
- $(document).bind("click", function(event) {
- document.getElementById("rmenu").className = "hide";
- });
- */
+
function isIntersectDefault(point, row, col, rad, gaps) {
var x = (rad+gaps*col);
diff --git a/ransim/ransimctrlr/RANSIM-GUI/src/main/webapp/startPm.html b/ransim/ransimctrlr/RANSIM-GUI/src/main/webapp/startPm.html
index 1426e54..c5a82d7 100644
--- a/ransim/ransimctrlr/RANSIM-GUI/src/main/webapp/startPm.html
+++ b/ransim/ransimctrlr/RANSIM-GUI/src/main/webapp/startPm.html
@@ -20,59 +20,62 @@
-->
<html>
- <head>
- <title>PM</title>
- <script src="angular.min.js"></script>
- <style>
- table, th , td {
- border: 1px solid grey;
- border-collapse: collapse;
- padding: 5px;
- }
-
- table tr:nth-child(odd) {
- background-color: #f2f2f2;
- }
-
- table tr:nth-child(even) {
- background-color: #ffffff;
- }
- </style>
- </head>
- <body>
- <center>
- <h2>Enter the cells with Hand-off Failures</h2>
- <div data-ng-init="onloadFun()" ng-app = "mainApp" ng-controller = "configController">
- <form name = "configForm" novalidate>
- <table border = "0" align=center>
- <tr>
- <td>Node Id(bad value):</td>
- <td><input name = "nodeIdBad" type = "string" ng-model = "nodeIdBad">
- <br>
- </td>
- </tr>
- <tr>
- <td colspan=2> Bad Value: A Cell for which 20% of its neighbors will have very high percentage of Hand-Off failure. The Cell-Neighbor pair should be blackisted.</td>
- </tr>
- <tr>
- <td>Node Id(poor value):</td>
- <td><input name = "nodeIdPoor" type = "string" ng-model = "nodeIdPoor">
- <br>
- </td>
- </tr>
- <tr>
- <td colspan=2> Poor Value: A Cell for which 20% of its neighbors will have a considerable percentage of Hand-Off failure.</td>
- </tr>
- <tr>
- <td colspan=2 align=center>
- <button ng-click="startPm()">Start</button>
- <button ng-click = "close()">Close</button>
- </td>
- </tr>
- </table>
- </form>
- </div>
- <script>
+<head>
+<title>PM</title>
+<script src="angular.min.js"></script>
+<style>
+table, th, td {
+ border: 1px solid grey;
+ border-collapse: collapse;
+ padding: 5px;
+}
+
+table tr:nth-child(odd) {
+ background-color: #f2f2f2;
+}
+
+table tr:nth-child(even) {
+ background-color: #ffffff;
+}
+</style>
+</head>
+<body>
+ <center>
+ <h2>Enter the cells with Hand-off Failures</h2>
+ <div data-ng-init="onloadFun()" ng-app="mainApp"
+ ng-controller="configController">
+ <form name="configForm" novalidate>
+ <table border="0" align=center>
+ <tr>
+ <td>Node Id(bad value):</td>
+ <td><input name="nodeIdBad" type="string"
+ ng-model="nodeIdBad"> <br></td>
+ </tr>
+ <tr>
+ <td colspan=2>Bad Value: A Cell for which 20% of its
+ neighbors will have very high percentage of Hand-Off failure. The
+ Cell-Neighbor pair should be blackisted.</td>
+ </tr>
+ <tr>
+ <td>Node Id(poor value):</td>
+ <td><input name="nodeIdPoor" type="string"
+ ng-model="nodeIdPoor"> <br></td>
+ </tr>
+ <tr>
+ <td colspan=2>Poor Value: A Cell for which 20% of its
+ neighbors will have a considerable percentage of Hand-Off
+ failure.</td>
+ </tr>
+ <tr>
+ <td colspan=2 align=center>
+ <button ng-click="startPm()">Start</button>
+ <button ng-click="close()">Close</button>
+ </td>
+ </tr>
+ </table>
+ </form>
+ </div>
+ <script>
var mainApp = angular.module("mainApp", []);
mainApp.controller('configController',['$scope', '$http', function($scope, $http) {
$scope.startPm = function(){
@@ -88,11 +91,9 @@
var res = $http.post('/ransim/api/GeneratePmData', dataObj)
.then(function successCallback(response){
- //alert("Request sent Successfully");
window.close();
}, function errorCallback(response){
- //alert("Request Failed");
window.close();
});
@@ -101,6 +102,7 @@
window.close();
}
}]);
- </script>
- <center></body>
+ </script>
+ <center>
+</body>
</html>
diff --git a/ransim/ransimctrlr/RANSIM-GUI/src/main/webapp/startsPm.html b/ransim/ransimctrlr/RANSIM-GUI/src/main/webapp/startsPm.html
index e44243b..59d78bd 100644
--- a/ransim/ransimctrlr/RANSIM-GUI/src/main/webapp/startsPm.html
+++ b/ransim/ransimctrlr/RANSIM-GUI/src/main/webapp/startsPm.html
@@ -20,59 +20,60 @@
-->
<html>
- <head>
- <title>PM</title>
- <script src="angular.min.js"></script>
- <style>
- table, th , td {
- border: 1px solid grey;
- border-collapse: collapse;
- padding: 5px;
- }
-
- table tr:nth-child(odd) {
- background-color: #f2f2f2;
- }
-
- table tr:nth-child(even) {
- background-color: #ffffff;
- }
- </style>
- </head>
- <body>
- <center>
- <h2>Enter the cells with Hand-off Failures</h2>
- <div data-ng-init="onloadFun()" ng-app = "mainApp" ng-controller = "configController">
- <form name = "configForm" novalidate>
- <table border = "0" align=center>
- <tr>
- <td>Node Id(bad value):</td>
- <td><input name = "nodeIdBad" type = "string" ng-model = "nodeIdBad">
- <br>
- </td>
- </tr>
- <tr>
- <td colspan=2> Bad Value: Enter the ids of the cell(s) for which the HO to a few neighbors will have less than 25% success.</td>
- </tr>
- <tr>
- <td>Node Id(poor value):</td>
- <td><input name = "nodeIdPoor" type = "string" ng-model = "nodeIdPoor">
- <br>
- </td>
- </tr>
- <tr>
- <td colspan=2> Poor Value: Enter the ids of the cell(s) for which the HO to a few neighbors will have 25%-50% success.</td>
- </tr>
- <tr>
- <td colspan=2 align=center>
- <button ng-click="startPm()">Start</button>
- <button ng-click = "close()">Close</button>
- </td>
- </tr>
- </table>
- </form>
- </div>
- <script>
+<head>
+<title>PM</title>
+<script src="angular.min.js"></script>
+<style>
+table, th, td {
+ border: 1px solid grey;
+ border-collapse: collapse;
+ padding: 5px;
+}
+
+table tr:nth-child(odd) {
+ background-color: #f2f2f2;
+}
+
+table tr:nth-child(even) {
+ background-color: #ffffff;
+}
+</style>
+</head>
+<body>
+ <center>
+ <h2>Enter the cells with Hand-off Failures</h2>
+ <div data-ng-init="onloadFun()" ng-app="mainApp"
+ ng-controller="configController">
+ <form name="configForm" novalidate>
+ <table border="0" align=center>
+ <tr>
+ <td>Node Id(bad value):</td>
+ <td><input name="nodeIdBad" type="string"
+ ng-model="nodeIdBad"> <br></td>
+ </tr>
+ <tr>
+ <td colspan=2>Bad Value: Enter the ids of the cell(s) for
+ which the HO to a few neighbors will have less than 25% success.</td>
+ </tr>
+ <tr>
+ <td>Node Id(poor value):</td>
+ <td><input name="nodeIdPoor" type="string"
+ ng-model="nodeIdPoor"> <br></td>
+ </tr>
+ <tr>
+ <td colspan=2>Poor Value: Enter the ids of the cell(s) for
+ which the HO to a few neighbors will have 25%-50% success.</td>
+ </tr>
+ <tr>
+ <td colspan=2 align=center>
+ <button ng-click="startPm()">Start</button>
+ <button ng-click="close()">Close</button>
+ </td>
+ </tr>
+ </table>
+ </form>
+ </div>
+ <script>
var mainApp = angular.module("mainApp", []);
mainApp.controller('configController',['$scope', '$http', function($scope, $http) {
$scope.startPm = function(){
@@ -101,6 +102,7 @@
window.close();
}
}]);
- </script>
- <center></body>
+ </script>
+ <center>
+</body>
</html>
diff --git a/ransim/ransimctrlr/RANSIM-GUI/src/main/webapp/stopPm.html b/ransim/ransimctrlr/RANSIM-GUI/src/main/webapp/stopPm.html
index c43e890..d511864 100644
--- a/ransim/ransimctrlr/RANSIM-GUI/src/main/webapp/stopPm.html
+++ b/ransim/ransimctrlr/RANSIM-GUI/src/main/webapp/stopPm.html
@@ -20,46 +20,45 @@
-->
<html>
- <head>
- <title>Performance Management</title>
- <script src="angular.min.js"></script>
- <style>
- table, th , td {
- border: 1px solid grey;
- border-collapse: collapse;
- padding: 5px;
- }
-
- table tr:nth-child(odd) {
- background-color: #f2f2f2;
- }
-
- table tr:nth-child(even) {
- background-color: #ffffff;
- }
- </style>
- </head>
- <body>
- <center>
- <h2>Performance Management(PM)</h2>
- <div data-ng-init="onloadFun()" ng-app = "mainApp" ng-controller = "configController">
- <form name = "configForm" novalidate>
- <table border = "0" align=center>
- <tr>
- <td>
- Stop generating PM data
- </td>
- </tr>
- <tr>
- <td align=right>
- <button ng-click="stopPm()">Yes</button>
- <button ng-click = "close()">No</button>
- </td>
- </tr>
- </table>
- </form>
- </div>
- <script>
+<head>
+<title>Performance Management</title>
+<script src="angular.min.js"></script>
+<style>
+table, th, td {
+ border: 1px solid grey;
+ border-collapse: collapse;
+ padding: 5px;
+}
+
+table tr:nth-child(odd) {
+ background-color: #f2f2f2;
+}
+
+table tr:nth-child(even) {
+ background-color: #ffffff;
+}
+</style>
+</head>
+<body>
+ <center>
+ <h2>Performance Management(PM)</h2>
+ <div data-ng-init="onloadFun()" ng-app="mainApp"
+ ng-controller="configController">
+ <form name="configForm" novalidate>
+ <table border="0" align=center>
+ <tr>
+ <td>Stop generating PM data</td>
+ </tr>
+ <tr>
+ <td align=right>
+ <button ng-click="stopPm()">Yes</button>
+ <button ng-click="close()">No</button>
+ </td>
+ </tr>
+ </table>
+ </form>
+ </div>
+ <script>
var mainApp = angular.module("mainApp", []);
mainApp.controller('configController',['$scope', '$http', function($scope, $http) {
$scope.stopPm = function(){
@@ -89,6 +88,7 @@
window.close();
}
}]);
- </script>
- <center></body>
+ </script>
+ <center>
+</body>
</html>
diff --git a/ransim/ransimctrlr/RANSIM-GUI/src/main/webapp/uploadFile.html b/ransim/ransimctrlr/RANSIM-GUI/src/main/webapp/uploadFile.html
new file mode 100644
index 0000000..fd55dee
--- /dev/null
+++ b/ransim/ransimctrlr/RANSIM-GUI/src/main/webapp/uploadFile.html
@@ -0,0 +1,13 @@
+<!DOCTYPE html>
+<html xmlns:th="http://www.thymeleaf.org">
+<body>
+
+<h1>Spring Boot file upload example</h1>
+
+<form method="POST" action="/ransim/file/upload" enctype="multipart/form-data">
+ <input type="file" name="file" /><br/><br/>
+ <input type="submit" value="Submit" />
+</form>
+
+</body>
+</html> \ No newline at end of file
diff --git a/ransim/ransimctrlr/packages/base/src/files/install/servers/common/tomcat/init.d/tomcatd b/ransim/ransimctrlr/packages/base/src/files/install/servers/common/tomcat/init.d/tomcatd
index df20485..df20485 100644..100755
--- a/ransim/ransimctrlr/packages/base/src/files/install/servers/common/tomcat/init.d/tomcatd
+++ b/ransim/ransimctrlr/packages/base/src/files/install/servers/common/tomcat/init.d/tomcatd
diff --git a/ransim/ransimctrlr/pom.xml b/ransim/ransimctrlr/pom.xml
index ffe6ef5..8c98d49 100644
--- a/ransim/ransimctrlr/pom.xml
+++ b/ransim/ransimctrlr/pom.xml
@@ -64,49 +64,6 @@
<module>RANSIM-GUI</module>
<module>packages</module>
</modules>
-
- <distributionManagement>
- <repository>
- <id>ecomp-releases</id>
- <name>ONAP Release Repository</name>
- <url>${nexusproxy}/${releases.path}</url>
- </repository>
- <snapshotRepository>
- <id>ecomp-snapshots</id>
- <name>ONAP Snapshot Repository</name>
- <url>${nexusproxy}/${snapshots.path}</url>
- </snapshotRepository>
- <site>
- <id>ecomp-site</id>
- <url>dav:${nexusproxy}${sitePath}</url>
- </site>
- </distributionManagement>
-
- <repositories>
- <!-- LF repositories -->
- <repository>
- <id>ecomp-releases</id>
- <name>Release Repository</name>
- <url>${nexusproxy}/content/repositories/releases/</url>
- </repository>
- <repository>
- <id>ecomp-staging</id>
- <name>Staging Repository</name>
- <url>${nexusproxy}/content/repositories/staging/</url>
- </repository>
- <repository>
- <id>ecomp-snapshots</id>
- <name>Snapshots Repository</name>
- <url>${nexusproxy}/content/repositories/snapshots/</url>
- </repository>
- <repository>
- <id>ecomp-public</id>
- <name>Public Repository</name>
- <url>${nexusproxy}/content/repositories/public/</url>
- </repository>
- <!-- LF repositories END -->
- </repositories>
-
<reporting>
<plugins>
<plugin>
@@ -138,22 +95,6 @@
</dependency>
</dependencies>
</dependencyManagement>
-
- <dependencies>
-
- <dependency>
- <groupId>javax.servlet</groupId>
- <artifactId>javax.servlet-api</artifactId>
- <version>3.1.0</version>
- </dependency>
- <dependency>
- <!-- org.w3c.dom dependencies -->
- <groupId>xml-apis</groupId>
- <artifactId>xml-apis</artifactId>
- <version>1.3.03</version>
- </dependency>
- </dependencies>
-
<build>
<plugins>
<plugin>