- private void fetchAndSyncModules(final PersistenceCmHandle persistenceCmHandle) {
- final Map<String, String> cmHandlePropertiesAsMap = getCmHandlePropertiesAsMap(
- persistenceCmHandle.getAdditionalProperties());
-
- final List<ModuleReference> moduleReferencesFromCmHandle =
- fetchModuleReferencesFromDmi(persistenceCmHandle, cmHandlePropertiesAsMap);
- final List<ModuleReference> existingModuleReferences = new ArrayList<>();
- final List<ModuleReference> unknownModuleReferences = new ArrayList<>();
- prepareModuleSubsets(moduleReferencesFromCmHandle, existingModuleReferences, unknownModuleReferences);
-
- final Map<String, String> newYangResourcesModuleNameToContentMap;
- if (unknownModuleReferences.size() > 0) {
- newYangResourcesModuleNameToContentMap = getNewYangResourcesFromDmi(persistenceCmHandle,
- unknownModuleReferences, cmHandlePropertiesAsMap);
- } else {
- newYangResourcesModuleNameToContentMap = new HashMap<>();
- }
- cpsModuleService.createSchemaSetFromModules(NF_PROXY_DATASPACE_NAME, persistenceCmHandle.getId(),
- newYangResourcesModuleNameToContentMap, existingModuleReferences);
- }
-
- private void prepareModuleSubsets(final List<ModuleReference> moduleReferencesFromCmHandle,
- final List<ModuleReference> existingModuleReferences,
- final List<ModuleReference> unknownModuleReferences) {
-
- final Collection<ModuleReference> knownModuleReferencesInCps =
- cpsModuleService.getYangResourceModuleReferences(NF_PROXY_DATASPACE_NAME);
-
- for (final ModuleReference moduleReferenceFromDmiForCmHandle : moduleReferencesFromCmHandle) {
- if (knownModuleReferencesInCps.contains(moduleReferenceFromDmiForCmHandle)) {
- existingModuleReferences.add(moduleReferenceFromDmiForCmHandle);
- } else {
- unknownModuleReferences.add(moduleReferenceFromDmiForCmHandle);
- }
- }
- }
-
- private List<ModuleReference> fetchModuleReferencesFromDmi(final PersistenceCmHandle persistenceCmHandle,
- final Map<String, String> cmHandlePropertiesAsMap) {
- final GenericRequestBody genericRequestBody = GenericRequestBody.builder()
- .cmHandleProperties(cmHandlePropertiesAsMap)
- .build();
- final String jsonBodyWithOnlyCmHandleProperties = prepareOperationBody(genericRequestBody);
- final ResponseEntity<String> dmiFetchModulesResponseEntity =
- dmiOperations.getResourceFromDmiWithJsonData(persistenceCmHandle.getDmiServiceName(),
- jsonBodyWithOnlyCmHandleProperties, persistenceCmHandle.getId(), "modules");
- return toModuleReferences(dmiFetchModulesResponseEntity);
- }
-
- private void createAnchor(final PersistenceCmHandle persistenceCmHandle) {
- cpsAdminService.createAnchor(NF_PROXY_DATASPACE_NAME, persistenceCmHandle.getId(), persistenceCmHandle.getId());
- }
-
- private String getRequestBodyToFetchYangResourceFromDmi(final List<ModuleReference> unknownModuleReferences,
- final Map<String, String> cmHandlePropertiesAsMap) {
- final JsonArray moduleReferencesAsJson = getModuleReferencesAsJson(unknownModuleReferences);
- final JsonObject data = new JsonObject();
- data.add("modules", moduleReferencesAsJson);
- final JsonObject jsonRequestObject = new JsonObject();
- jsonRequestObject.add("data", data);
- final Gson gson = new Gson();
- jsonRequestObject.add("cmHandleProperties", gson.toJsonTree(cmHandlePropertiesAsMap));
- return jsonRequestObject.toString();
- }
-
- private static JsonArray getModuleReferencesAsJson(final List<ModuleReference> unknownModuleReferences) {
- final JsonArray moduleReferences = new JsonArray();
-
- for (final ModuleReference moduleReference : unknownModuleReferences) {
- final JsonObject moduleReferenceAsJson = new JsonObject();
- moduleReferenceAsJson.addProperty("name", moduleReference.getModuleName());
- moduleReferenceAsJson.addProperty(REVISION, moduleReference.getRevision());
- moduleReferences.add(moduleReferenceAsJson);
- }
- return moduleReferences;
- }
-
- private Map<String, String> getNewYangResourcesFromDmi(final PersistenceCmHandle persistenceCmHandle,
- final List<ModuleReference> unknownModuleReferences,
- final Map<String, String> cmHandlePropertiesAsMap) {
- final String jsonDataWithDataAndCmHandleProperties = getRequestBodyToFetchYangResourceFromDmi(
- unknownModuleReferences, cmHandlePropertiesAsMap);
-
- final ResponseEntity<String> moduleResourcesAsJsonString = dmiOperations.getResourceFromDmiWithJsonData(
- persistenceCmHandle.getDmiServiceName(),
- jsonDataWithDataAndCmHandleProperties,
- persistenceCmHandle.getId(),
- "moduleResources");
-
- final JsonArray moduleResources = new Gson().fromJson(moduleResourcesAsJsonString.getBody(),
- JsonArray.class);
- final Map<String, String> newYangResourcesModuleNameToContentMap = new HashMap<>();
-
- for (final JsonElement moduleResource : moduleResources) {
- final YangResource yangResource = toYangResource((JsonObject) moduleResource);
- newYangResourcesModuleNameToContentMap.put(yangResource.getModuleName(), yangResource.getYangSource());