summaryrefslogtreecommitdiffstats
path: root/dcaedt_be/src/main/java/org/onap/sdc/dcae/composition/impl/ReferenceBusinessLogic.java
diff options
context:
space:
mode:
Diffstat (limited to 'dcaedt_be/src/main/java/org/onap/sdc/dcae/composition/impl/ReferenceBusinessLogic.java')
-rw-r--r--dcaedt_be/src/main/java/org/onap/sdc/dcae/composition/impl/ReferenceBusinessLogic.java63
1 files changed, 58 insertions, 5 deletions
diff --git a/dcaedt_be/src/main/java/org/onap/sdc/dcae/composition/impl/ReferenceBusinessLogic.java b/dcaedt_be/src/main/java/org/onap/sdc/dcae/composition/impl/ReferenceBusinessLogic.java
index 224fc24..522b866 100644
--- a/dcaedt_be/src/main/java/org/onap/sdc/dcae/composition/impl/ReferenceBusinessLogic.java
+++ b/dcaedt_be/src/main/java/org/onap/sdc/dcae/composition/impl/ReferenceBusinessLogic.java
@@ -18,6 +18,8 @@ import org.springframework.stereotype.Component;
import org.springframework.util.StringUtils;
import java.util.*;
+import java.util.function.Function;
+import java.util.stream.Collectors;
import static org.springframework.util.CollectionUtils.isEmpty;
@@ -52,25 +54,31 @@ public class ReferenceBusinessLogic extends BaseBusinessLogic {
debugLogger.log(LogLevel.DEBUG, this.getClass().getName(), "Finished to delete vfcmt reference. serviceUuid {}, vfcmtUuid {}", serviceUuid, vfcmtUuid);
}
+ // 1810 US436244 MC table functionality
+ public void deleteVfcmtReference(String userId, String context, String serviceUuid, String vfiName, String vfcmtUuid, String revertedUuid, String requestId) {
+ deleteVfcmtReference(userId, context, serviceUuid, vfiName, vfcmtUuid, requestId);
+ deleteVfcmtReference(userId, context, serviceUuid, vfiName, revertedUuid.concat(REVERTED_REF), requestId);
+ }
+
// 1806 US381853 Return a list of monitoring components by external reference id. Support partial success
- public Map<String, List<MonitoringComponent>> fetchMonitoringComponents(ExternalReferencesMap mcRefs, String requestId) {
+ // 1810 US436244 Return a list of monitoring components by external reference id - group latest version (x.y) with submitted version (x.0)
+ public Map<String, Collection<MonitoringComponent>> fetchMonitoringComponents(ExternalReferencesMap mcRefs, String requestId) {
debugLogger.log(LogLevel.DEBUG, this.getClass().getName(), "Going to fetch monitoring components metadata for vfis {}", mcRefs.keySet());
- Map<String, List<MonitoringComponent>> result = new LinkedHashMap<>();
+ Map<String, Collection<MonitoringComponent>> result = new LinkedHashMap<>();
List<MonitoringComponent> monitoringComponents = Collections.synchronizedList(new ArrayList<>());
List<MonitoringComponent> unavailable = Collections.synchronizedList(new ArrayList<>());
mcRefs.entrySet().parallelStream().forEach(entry ->
entry.getValue().parallelStream().forEach(id -> {
try{
- monitoringComponents.add(new MonitoringComponent(getSdcRestClient().getResource(id, requestId), entry.getKey()));
+ monitoringComponents.add(new MonitoringComponent(getSdcRestClient().getResource(id.replace(REVERTED_REF, ""), requestId), entry.getKey()));
} catch (Exception e) {
debugLogger.log(LogLevel.DEBUG, this.getClass().getName(),"Failed to fetch monitoring component with uuid {}. message: {} ", id, e);
unavailable.add(new MonitoringComponent(id, entry.getKey(), "unavailable"));
}
-
})
);
- result.put("monitoringComponents", monitoringComponents);
+ result.put("monitoringComponents", groupMonitoringComponentsForRepresentation(mcRefs.values().stream().flatMap(List::stream).collect(Collectors.toList()), monitoringComponents));
if(!isEmpty(unavailable)) {
result.put("unavailable", unavailable);
}
@@ -100,4 +108,49 @@ public class ReferenceBusinessLogic extends BaseBusinessLogic {
}
}
+ public ResponseEntity checkoutAndUndoRevertMC(String userId, String contextType, String serviceUuid, String vfiName, String vfcmtUuid, String revertedUuid, String requestId) {
+ try {
+ cloneArtifactsToRevertedMC(userId, vfcmtUuid, revertedUuid, requestId, true);
+ ResourceDetailed vfcmt = sdcRestClient.getResource(revertedUuid, requestId);
+ undoRevert(userId, contextType, serviceUuid, vfiName, revertedUuid, requestId);
+ return new ResponseEntity<>(new VfcmtData(vfcmt), HttpStatus.OK);
+ } catch (Exception e) {
+ errLogger.log(LogLevel.ERROR, this.getClass().getName(), "clone action failed: {}", e);
+ return ErrConfMgr.INSTANCE.handleException(e, ErrConfMgr.ApiType.CLONE_VFCMT);
+ }
+ }
+
+ public MonitoringComponent revertToSubmittedMC(String userId, String contextType, String serviceUuid, String vfiName, String vfcmtUuid, String submittedUuid, String requestId) {
+ //TODO validations
+ MonitoringComponent res = new MonitoringComponent(sdcRestClient.getResource(submittedUuid, requestId), vfiName);
+ // this should always be the case
+ if (!submittedUuid.equals(vfcmtUuid)) {
+ sdcRestClient.updateExternalMonitoringReference(userId, contextType, serviceUuid, vfiName, vfcmtUuid, new ReferenceUUID(vfcmtUuid.concat(REVERTED_REF)), requestId);
+ res.setUuid(submittedUuid.concat("/").concat(vfcmtUuid));
+ }
+ return res;
+ }
+
+
+ private Collection<MonitoringComponent> groupMonitoringComponentsForRepresentation(List<String> mcRefs, List<MonitoringComponent> components) {
+ return components.stream().collect(Collectors.toMap(MonitoringComponent::getInvariantUUID, Function.identity(),
+ (mc1, mc2) -> mergeMcInfo(mc1, mc2, !mcRefs.contains(mc1.getUuid()) || !mcRefs.contains(mc2.getUuid())))).values();
+ }
+
+ private MonitoringComponent mergeMcInfo(MonitoringComponent mc1, MonitoringComponent mc2, boolean reverted) {
+ MonitoringComponent submittedVersion = mc1;
+ MonitoringComponent latestVersion = mc2;
+ if("Submitted".equals(mc2.getStatus())) {
+ submittedVersion = mc2;
+ latestVersion = mc1;
+ }
+ if(reverted) {
+ submittedVersion.setUuid(submittedVersion.getUuid().concat("/").concat(latestVersion.getUuid()));
+ return submittedVersion;
+ }
+ latestVersion.setSubmittedUuid(submittedVersion.getUuid());
+ latestVersion.setStatus(submittedVersion.getStatus());
+ return latestVersion;
+ }
+
}