+ private static void handleResponseForPost(final @NotNull ResponseEntity<String> responseEntity) {
+ if (responseEntity.getStatusCode() != HttpStatus.OK) {
+ throw new NcmpException("Not able to create resource data.",
+ "DMI status code: " + responseEntity.getStatusCodeValue()
+ + ", DMI response body: " + responseEntity.getBody());
+ }
+ }
+
+ private String getGenericRequestBody(final DataNode cmHandleDataNode) {
+ final Collection<DataNode> cmHandlePropertiesList = cmHandleDataNode.getChildDataNodes();
+ final Map<String, String> cmHandlePropertiesMap = getCmHandlePropertiesAsMap(cmHandlePropertiesList);
+ final var requetBodyObject = GenericRequestBody.builder()
+ .operation(GenericRequestBody.OperationEnum.READ)
+ .cmHandleProperties(cmHandlePropertiesMap)
+ .build();
+ return prepareOperationBody(requetBodyObject);
+ }
+
+ private void parseAndUpdateCmHandlesInDmiRegistration(final DmiPluginRegistration dmiPluginRegistration) {
+ try {
+ final PersistenceCmHandlesList persistenceCmHandlesList = new PersistenceCmHandlesList();
+
+ for (final CmHandle cmHandle : dmiPluginRegistration.getUpdatedCmHandles()) {
+ final PersistenceCmHandle persistenceCmHandle =
+ toPersistenceCmHandle(dmiPluginRegistration.getDmiPlugin(), cmHandle);
+ persistenceCmHandlesList.add(persistenceCmHandle);
+ }
+ final String cmHandlesJsonData = objectMapper.writeValueAsString(persistenceCmHandlesList);
+ cpsDataService.updateNodeLeavesAndExistingDescendantLeaves(NCMP_DATASPACE_NAME, NCMP_DMI_REGISTRY_ANCHOR,
+ "/dmi-registry", cmHandlesJsonData, NO_TIMESTAMP);
+ } catch (final JsonProcessingException e) {
+ log.error("Parsing error occurred while converting Object to JSON DMI Registry.");
+ throw new DataValidationException(
+ "Parsing error occurred while processing DMI Plugin Registration" + dmiPluginRegistration, e
+ .getMessage(), e);
+ }
+ }
+
+ private void parseAndCreateCmHandlesInDmiRegistrationAndSyncModule(
+ final DmiPluginRegistration dmiPluginRegistration) {
+ try {
+ final var persistenceCmHandlesList = new PersistenceCmHandlesList();
+ for (final CmHandle cmHandle : dmiPluginRegistration.getCreatedCmHandles()) {
+ final PersistenceCmHandle persistenceCmHandle =
+ toPersistenceCmHandle(dmiPluginRegistration.getDmiPlugin(), cmHandle);
+ persistenceCmHandlesList.add(persistenceCmHandle);
+ }
+ final String cmHandleJsonData = objectMapper.writeValueAsString(persistenceCmHandlesList);
+
+ registerAndSyncNode(dmiPluginRegistration, persistenceCmHandlesList, cmHandleJsonData);
+ } catch (final JsonProcessingException e) {
+ log.error("Parsing error occurred while converting Object to JSON for DMI Registry.");
+ throw new DataValidationException(
+ "Parsing error occurred while processing DMI Plugin Registration" + dmiPluginRegistration, e
+ .getMessage(), e);
+ }
+ }
+
+ private void registerAndSyncNode(final DmiPluginRegistration dmiPluginRegistration,
+ final PersistenceCmHandlesList persistenceCmHandlesList,
+ final String cmHandleJsonData) {
+ cpsDataService.saveListNodeData(NCMP_DATASPACE_NAME, NCMP_DMI_REGISTRY_ANCHOR, "/dmi-registry",
+ cmHandleJsonData, NO_TIMESTAMP);
+
+ for (final PersistenceCmHandle persistenceCmHandle : persistenceCmHandlesList.getPersistenceCmHandles()) {
+ createAnchorAndSyncModel(persistenceCmHandle);
+ }
+ }
+
+ private static PersistenceCmHandle toPersistenceCmHandle(final String dmiPluginService,
+ final CmHandle cmHandle) {
+ final PersistenceCmHandle persistenceCmHandle = new PersistenceCmHandle();
+ persistenceCmHandle.setDmiServiceName(dmiPluginService);
+ persistenceCmHandle.setId(cmHandle.getCmHandleID());
+ if (cmHandle.getCmHandleProperties() == null) {
+ persistenceCmHandle.setAdditionalProperties(Collections.emptyMap());
+ } else {
+ persistenceCmHandle.setAdditionalProperties(cmHandle.getCmHandleProperties());
+ }
+ return persistenceCmHandle;
+ }
+
+ private void parseAndRemoveCmHandlesInDmiRegistration(final DmiPluginRegistration dmiPluginRegistration) {
+ for (final String cmHandle : dmiPluginRegistration.getRemovedCmHandles()) {
+ try {
+ cpsDataService.deleteListNodeData(NCMP_DATASPACE_NAME, NCMP_DMI_REGISTRY_ANCHOR,
+ "/dmi-registry/cm-handles[@id='" + cmHandle + "']", NO_TIMESTAMP);
+ } catch (final DataNodeNotFoundException e) {
+ log.warn("Datanode {} not deleted message {}", cmHandle, e.getMessage());
+ }
+ }
+ }
+
+ protected void createAnchorAndSyncModel(final PersistenceCmHandle cmHandle) {
+ final var modulesForCmHandle =
+ dmiOperations.getResourceFromDmi(cmHandle.getDmiServiceName(), cmHandle.getId(), "modules");
+ final List<ModuleReference> moduleReferencesFromDmiForCmHandle =
+ getModuleReferences(modulesForCmHandle);
+ final var knownModuleReferencesInCps =
+ cpsModuleService.getYangResourceModuleReferences(NF_PROXY_DATASPACE_NAME);
+ final List<ModuleReference> existingModuleReferences = new ArrayList<>();
+
+ final List<ModuleReference> unknownModuleReferences = new ArrayList<>();
+ for (final ModuleReference moduleReferenceFromDmiForCmHandle : moduleReferencesFromDmiForCmHandle) {
+ if (knownModuleReferencesInCps.contains(moduleReferenceFromDmiForCmHandle)) {
+ existingModuleReferences.add(moduleReferenceFromDmiForCmHandle);
+ } else {
+ unknownModuleReferences.add(moduleReferenceFromDmiForCmHandle);
+ }
+ }
+
+ final JsonObject requestBodyAsJson = getRequestBodyAsJson(unknownModuleReferences);
+
+ final Map<String, String> newYangResourcesModuleNameToContentMap =
+ getNewYangResources(cmHandle, requestBodyAsJson.toString());