From 6ad41e3ccd398a2721f41ad61c80b7bb03f7d127 Mon Sep 17 00:00:00 2001 From: Ittay Stern Date: Mon, 31 Dec 2018 17:21:27 +0200 Subject: Merge from ECOMP's repository Main Features -------------- - Async-Instantiation jobs mechanism major update; still WIP (package `org.onap.vid.job`) - New features in View/Edit: Activate fabric configuration; show related networks; soft delete - Support AAI service-tree traversal (`AAIServiceTree`) - In-memory cache for SDC models and certain A&AI queries (`CacheProviderWithLoadingCache`) - Upgrade TOSCA Parser and add parsing options; fix malformed TOSCA models - Resolve Cloud-Owner values for MSO - Pass X-ONAP headers to MSO Infrastructure -------------- - Remove codehaus' jackson mapper; use soley fasterxml 2.9.7 - Surefire invokes both TestNG and JUnit tests - Support Kotlin source files - AaiController2 which handles errors in a "Spring manner" - Inline generated-sources and remove jsonschema2pojo Quality -------- - Cumulative bug fixes (A&AI API, UI timeouts, and many more) - Many Sonar issues cleaned-up - Some unused classes removed - Minor changes in vid-automation project, allowing some API verification to run Hard Merges ------------ - HTTP Clients (MSO, A&AI, WebConfig, OutgoingRequestHeadersTest) - Moved `package org.onap.vid.controllers` to `controller`, without plural -- just to keep semantic sync with ECOMP. Reference commit in ECOMP: 3d1141625 Issue-ID: VID-378 Change-Id: I9c8d1e74caa41815891d441fc0760bb5f29c5788 Signed-off-by: Ittay Stern --- .../job/command/ResourceInstantiationCommand.java | 87 ++++++++++++++++++++++ 1 file changed, 87 insertions(+) create mode 100644 vid-app-common/src/main/java/org/onap/vid/job/command/ResourceInstantiationCommand.java (limited to 'vid-app-common/src/main/java/org/onap/vid/job/command/ResourceInstantiationCommand.java') diff --git a/vid-app-common/src/main/java/org/onap/vid/job/command/ResourceInstantiationCommand.java b/vid-app-common/src/main/java/org/onap/vid/job/command/ResourceInstantiationCommand.java new file mode 100644 index 000000000..c86c6f1be --- /dev/null +++ b/vid-app-common/src/main/java/org/onap/vid/job/command/ResourceInstantiationCommand.java @@ -0,0 +1,87 @@ +package org.onap.vid.job.command; + +import org.onap.vid.changeManagement.RequestDetailsWrapper; +import org.onap.vid.job.Job; +import org.onap.vid.job.JobAdapter; +import org.onap.vid.job.JobCommand; +import org.onap.vid.job.NextCommand; +import org.onap.vid.job.impl.JobSharedData; +import org.onap.vid.model.RequestReferencesContainer; +import org.onap.vid.mso.RestMsoImplementation; +import org.onap.vid.mso.RestObject; +import org.onap.vid.mso.model.BaseResourceInstantiationRequestDetails; +import org.onap.vid.services.AsyncInstantiationBusinessLogic; +import org.onap.vid.services.AuditService; +import org.springframework.beans.factory.config.ConfigurableBeanFactory; +import org.springframework.context.annotation.Scope; +import org.springframework.stereotype.Component; + +import javax.inject.Inject; +import java.util.Map; + + +@Component +@Scope(ConfigurableBeanFactory.SCOPE_PROTOTYPE) +public abstract class ResourceInstantiationCommand extends BaseInstantiationCommand implements JobCommand { + + + @Inject + protected RestMsoImplementation restMso; + + @Inject + private AsyncInstantiationBusinessLogic asyncInstantiationBL; + + @Inject + private AuditService auditService; + + @Override + public ResourceInstantiationCommand init(JobSharedData sharedData, Map commandData) { + super.init(sharedData, commandData); + return this; + } + + @Override + public Map getData() { + return commandParentData.getParentData(); + } + + @Override + public NextCommand call() { + if (!shouldInstantiateMyself()) { + return new NextCommand(Job.JobStatus.COMPLETED_WITH_NO_ACTION); + } + + RequestDetailsWrapper requestDetailsWrapper = generateMSORequest( + getSharedData().getRequest(), + getSharedData().getUserId() + ); + String instantiatePath = getRequestPath(); + + RestObject msoResponse = restMso.PostForObject(requestDetailsWrapper, + instantiatePath, RequestReferencesContainer.class); + + if (msoResponse.getStatusCode() >= 200 && msoResponse.getStatusCode() < 400) { + String requestId = msoResponse.get().getRequestReferences().getRequestId(); + String instanceId = msoResponse.get().getRequestReferences().getInstanceId(); + asyncInstantiationBL.auditMsoStatus(getSharedData().getRootJobId(), getJobAuditMSOStatus(), requestId, null); + return getNextCommand(requestId, instanceId); + } + else { + auditService.setFailedAuditStatusFromMso(getSharedData().getRootJobId(), null, msoResponse.getStatusCode(), msoResponse.getRaw()); + return new NextCommand(Job.JobStatus.FAILED); + } + } + protected NextCommand getNextCommand(String requestId, String instanceId){ + return new NextCommand(Job.JobStatus.RESOURCE_IN_PROGRESS, new ResourceInProgressStatusCommand(getSharedData(), requestId, instanceId)); + } + + protected boolean shouldInstantiateMyself() { + return true; + } + + protected abstract String getRequestPath(); + protected abstract RequestDetailsWrapper generateMSORequest(JobAdapter.AsyncJobRequest request, String userId); + protected abstract String getJobAuditMSOStatus(); +} + + -- cgit 1.2.3-korg