summaryrefslogtreecommitdiffstats
path: root/src/main/java/org/onap/cps/ncmp/dmi/service/DmiServiceImpl.java
diff options
context:
space:
mode:
Diffstat (limited to 'src/main/java/org/onap/cps/ncmp/dmi/service/DmiServiceImpl.java')
-rw-r--r--src/main/java/org/onap/cps/ncmp/dmi/service/DmiServiceImpl.java56
1 files changed, 46 insertions, 10 deletions
diff --git a/src/main/java/org/onap/cps/ncmp/dmi/service/DmiServiceImpl.java b/src/main/java/org/onap/cps/ncmp/dmi/service/DmiServiceImpl.java
index 990a421e..bf0689ca 100644
--- a/src/main/java/org/onap/cps/ncmp/dmi/service/DmiServiceImpl.java
+++ b/src/main/java/org/onap/cps/ncmp/dmi/service/DmiServiceImpl.java
@@ -23,15 +23,19 @@ package org.onap.cps.ncmp.dmi.service;
import com.fasterxml.jackson.core.JsonProcessingException;
import com.fasterxml.jackson.databind.ObjectMapper;
import java.util.ArrayList;
+import java.util.LinkedHashMap;
import java.util.List;
import lombok.extern.slf4j.Slf4j;
+import net.minidev.json.JSONArray;
import org.apache.groovy.parser.antlr4.util.StringUtils;
import org.onap.cps.ncmp.dmi.config.DmiPluginConfig.DmiPluginProperties;
import org.onap.cps.ncmp.dmi.exception.CmHandleRegistrationException;
import org.onap.cps.ncmp.dmi.exception.DmiException;
+import org.onap.cps.ncmp.dmi.exception.ModuleResourceNotFoundException;
import org.onap.cps.ncmp.dmi.exception.ModulesNotFoundException;
import org.onap.cps.ncmp.dmi.model.CmHandleOperation;
import org.onap.cps.ncmp.dmi.model.CreatedCmHandle;
+import org.onap.cps.ncmp.dmi.model.ModuleReference;
import org.onap.cps.ncmp.dmi.service.client.NcmpRestClient;
import org.onap.cps.ncmp.dmi.service.operation.SdncOperations;
import org.springframework.beans.factory.annotation.Autowired;
@@ -39,7 +43,6 @@ import org.springframework.http.HttpStatus;
import org.springframework.http.ResponseEntity;
import org.springframework.stereotype.Service;
-
@Service
@Slf4j
public class DmiServiceImpl implements DmiService {
@@ -53,19 +56,19 @@ public class DmiServiceImpl implements DmiService {
* Constructor.
*
* @param dmiPluginProperties dmiPluginProperties
- * @param ncmpRestClient ncmpRestClient
- * @param objectMapper objectMapper
- * @param sdncOperations sdncOperations
+ * @param ncmpRestClient ncmpRestClient
+ * @param sdncOperations sdncOperations
+ * @param objectMapper objectMapper
*/
@Autowired
public DmiServiceImpl(final DmiPluginProperties dmiPluginProperties,
- final NcmpRestClient ncmpRestClient,
- final ObjectMapper objectMapper,
- final SdncOperations sdncOperations) {
+ final NcmpRestClient ncmpRestClient,
+ final SdncOperations sdncOperations, final ObjectMapper objectMapper) {
this.dmiPluginProperties = dmiPluginProperties;
this.ncmpRestClient = ncmpRestClient;
this.objectMapper = objectMapper;
this.sdncOperations = sdncOperations;
+ this.objectMapper = objectMapper;
}
@Override
@@ -79,16 +82,33 @@ public class DmiServiceImpl implements DmiService {
return responseBody;
} else {
throw new DmiException("SDNC is not able to process request.",
- "response code : " + responseEntity.getStatusCode() + " message : " + responseEntity.getBody());
+ "response code : " + responseEntity.getStatusCode() + " message : " + responseEntity.getBody());
}
}
@Override
+ public String getModuleResources(final String cmHandle, final List<ModuleReference> moduleReferences) {
+ final JSONArray getModuleResponses = new JSONArray();
+ for (final var moduleReference : moduleReferences) {
+ final var moduleRequest = createModuleRequest(moduleReference);
+ final var responseEntity = sdncOperations.getModuleResource(cmHandle, moduleRequest);
+ if (responseEntity.getStatusCode() == HttpStatus.OK) {
+ getModuleResponses.add(responseEntity.getBody());
+ } else {
+ log.error("SDNC did not return a module resource for the given cmHandle {}", cmHandle);
+ throw new ModuleResourceNotFoundException(cmHandle,
+ "SDNC did not return a module resource for the given cmHandle.");
+ }
+ }
+ return getModuleResponses.toJSONString();
+ }
+
+ @Override
public void registerCmHandles(final List<String> cmHandles) {
final CmHandleOperation cmHandleOperation = new CmHandleOperation();
cmHandleOperation.setDmiPlugin(dmiPluginProperties.getDmiServiceName());
final List<CreatedCmHandle> createdCmHandleList = new ArrayList<>();
- for (final String cmHandle: cmHandles) {
+ for (final String cmHandle : cmHandles) {
final CreatedCmHandle createdCmHandle = new CreatedCmHandle();
createdCmHandle.setCmHandle(cmHandle);
createdCmHandleList.add(createdCmHandle);
@@ -100,7 +120,7 @@ public class DmiServiceImpl implements DmiService {
} catch (final JsonProcessingException e) {
log.error("Parsing error occurred while converting cm-handles to JSON {}", cmHandles);
throw new DmiException("Internal Server Error.",
- "Parsing error occurred while converting given cm-handles object list to JSON ");
+ "Parsing error occurred while converting given cm-handles object list to JSON ");
}
final ResponseEntity<String> responseEntity = ncmpRestClient.registerCmHandlesWithNcmp(cmHandlesJson);
if (!(responseEntity.getStatusCode() == HttpStatus.CREATED)) {
@@ -108,4 +128,20 @@ public class DmiServiceImpl implements DmiService {
}
}
+ private String createModuleRequest(final ModuleReference moduleReference) {
+ final var ietfNetconfModuleReferences = new LinkedHashMap<>();
+ ietfNetconfModuleReferences.put("ietf-netconf-monitoring:identifier", moduleReference.getName());
+ ietfNetconfModuleReferences.put("ietf-netconf-monitoring:version", moduleReference.getRevision());
+ final var writer = objectMapper.writer().withRootName("ietf-netconf-monitoring:input");
+ final String moduleRequest;
+ try {
+ moduleRequest = writer.writeValueAsString(ietfNetconfModuleReferences);
+ } catch (final JsonProcessingException e) {
+ log.error("JSON exception occurred when creating the module request for the given module reference {}",
+ moduleReference.getName());
+ throw new DmiException("Unable to process JSON.",
+ "JSON exception occurred when creating the module request.", e);
+ }
+ return moduleRequest;
+ }
}