From e3f8c6d9b3ff4b9c9b82c795a791ea9b5a014c98 Mon Sep 17 00:00:00 2001 From: golabek Date: Mon, 11 Feb 2019 16:36:49 +0100 Subject: Introduced mocked SO workflows in VID FE Mocked SO workflows joined with list of workflows from VIDs DB. (Contains: Mocked BE service to return workflow list) Change-Id: I10336238cfeb8819e0a2b3e88cd86c338cab86fa Issue-ID: VID-399 Signed-off-by: Tomasz Golabek --- .../java/org/onap/vid/controller/MsoConfig.java | 6 +++ .../onap/vid/controller/WorkflowsController.java | 31 ++++++++++++++ .../main/java/org/onap/vid/model/SOWorkflows.kt | 13 ++++++ .../java/org/onap/vid/mso/MsoResponseWrapper2.java | 32 +++++++-------- .../vid/mso/rest/MockedWorkflowsRestClient.java | 33 +++++++++++++++ .../org/onap/vid/services/ExtWorkflowsService.java | 8 ++++ .../onap/vid/services/ExtWorkflowsServiceImpl.java | 47 ++++++++++++++++++++++ 7 files changed, 154 insertions(+), 16 deletions(-) create mode 100644 vid-app-common/src/main/java/org/onap/vid/controller/WorkflowsController.java create mode 100644 vid-app-common/src/main/java/org/onap/vid/model/SOWorkflows.kt create mode 100644 vid-app-common/src/main/java/org/onap/vid/mso/rest/MockedWorkflowsRestClient.java create mode 100644 vid-app-common/src/main/java/org/onap/vid/services/ExtWorkflowsService.java create mode 100644 vid-app-common/src/main/java/org/onap/vid/services/ExtWorkflowsServiceImpl.java (limited to 'vid-app-common/src/main/java/org') diff --git a/vid-app-common/src/main/java/org/onap/vid/controller/MsoConfig.java b/vid-app-common/src/main/java/org/onap/vid/controller/MsoConfig.java index 7f90d6a43..efe6c206a 100644 --- a/vid-app-common/src/main/java/org/onap/vid/controller/MsoConfig.java +++ b/vid-app-common/src/main/java/org/onap/vid/controller/MsoConfig.java @@ -29,6 +29,7 @@ import org.onap.vid.mso.MsoBusinessLogic; import org.onap.vid.mso.MsoBusinessLogicImpl; import org.onap.vid.mso.MsoInterface; import org.onap.vid.mso.MsoProperties; +import org.onap.vid.mso.rest.MockedWorkflowsRestClient; import org.onap.vid.mso.rest.MsoRestClientNew; import org.onap.vid.services.CloudOwnerService; import org.onap.vid.services.CloudOwnerServiceImpl; @@ -52,6 +53,11 @@ public class MsoConfig { MsoProperties.MSO_SERVER_URL)); } + @Bean + public MockedWorkflowsRestClient mockedWorkflowsClient(ObjectMapper unirestObjectMapper){ + return new MockedWorkflowsRestClient(new SyncRestClient(unirestObjectMapper), "http://vid-simulator:1080/"); + } + @Bean public MsoBusinessLogic getMsoBusinessLogic(MsoInterface msoClient, FeatureManager featureManager){ return new MsoBusinessLogicImpl(msoClient, featureManager); diff --git a/vid-app-common/src/main/java/org/onap/vid/controller/WorkflowsController.java b/vid-app-common/src/main/java/org/onap/vid/controller/WorkflowsController.java new file mode 100644 index 000000000..be1976a48 --- /dev/null +++ b/vid-app-common/src/main/java/org/onap/vid/controller/WorkflowsController.java @@ -0,0 +1,31 @@ +package org.onap.vid.controller; + +import java.util.List; +import org.onap.portalsdk.core.controller.RestrictedBaseController; +import org.onap.vid.model.SOWorkflow; +import org.onap.vid.services.ExtWorkflowsService; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RequestMethod; +import org.springframework.web.bind.annotation.RequestParam; +import org.springframework.web.bind.annotation.RestController; + +@RestController +@RequestMapping(WorkflowsController.WORKFLOWS_MANAGEMENT) +public class WorkflowsController extends RestrictedBaseController { + static final String WORKFLOWS_MANAGEMENT = "workflows-management"; + + private ExtWorkflowsService extWorkflowsService; + + @Autowired + public WorkflowsController(ExtWorkflowsService extWorkflowsService) { + this.extWorkflowsService = extWorkflowsService; + } + + @RequestMapping(value = "workflows", method = RequestMethod.GET) + public List getWorkflows(@RequestParam(value = "vnfName") String vnfName){ + return extWorkflowsService.getWorkflows(vnfName); + } + +} + diff --git a/vid-app-common/src/main/java/org/onap/vid/model/SOWorkflows.kt b/vid-app-common/src/main/java/org/onap/vid/model/SOWorkflows.kt new file mode 100644 index 000000000..c85bfd7d4 --- /dev/null +++ b/vid-app-common/src/main/java/org/onap/vid/model/SOWorkflows.kt @@ -0,0 +1,13 @@ +package org.onap.vid.model + +data class SOWorkflow @JvmOverloads constructor(var id: Long? = null, var name: String? = null) { + fun clone(): SOWorkflow { + return copy() + } +} + +data class SOWorkflows @JvmOverloads constructor(var workflows: List? = emptyList()) { + fun clone(): SOWorkflows { + return copy(workflows?.toMutableList()) + } +} \ No newline at end of file diff --git a/vid-app-common/src/main/java/org/onap/vid/mso/MsoResponseWrapper2.java b/vid-app-common/src/main/java/org/onap/vid/mso/MsoResponseWrapper2.java index fff14ebc3..3bda76406 100644 --- a/vid-app-common/src/main/java/org/onap/vid/mso/MsoResponseWrapper2.java +++ b/vid-app-common/src/main/java/org/onap/vid/mso/MsoResponseWrapper2.java @@ -28,8 +28,8 @@ import com.fasterxml.jackson.databind.ObjectMapper; import io.joshworks.restclient.http.HttpResponse; @JsonPropertyOrder({ - "status", - "entity" + "status", + "entity" }) /* @@ -41,8 +41,8 @@ public class MsoResponseWrapper2 implements MsoResponseWrapperInterface { static final ObjectMapper objectMapper = new ObjectMapper(); - private final int status; - private final T entity; + private final int status; + private T entity; private final String raw; public MsoResponseWrapper2(RestObject msoResponse) { @@ -51,23 +51,23 @@ public class MsoResponseWrapper2 implements MsoResponseWrapperInterface { this.raw = msoResponse.getRaw(); } - public MsoResponseWrapper2(HttpResponse msoResponse) { - this.status = msoResponse.getStatus(); - this.entity = msoResponse.getBody(); - this.raw = msoResponse.getBody().toString(); - } + public MsoResponseWrapper2(HttpResponse msoResponse) { + this.status = msoResponse.getStatus(); + this.entity = msoResponse.getBody(); + this.raw = msoResponse.getBody().toString(); + } public MsoResponseWrapper2( - @JsonProperty(value = "status", required = true) int status, - @JsonProperty(value = "entity", required = true) T entity) { + @JsonProperty(value = "status", required = true) int status, + @JsonProperty(value = "entity", required = true) T entity) { this.status = status; this.entity = entity; this.raw = null; } public int getStatus() { - return status; - } + return status; + } @Override @JsonIgnore @@ -80,8 +80,8 @@ public class MsoResponseWrapper2 implements MsoResponseWrapperInterface { } @JsonProperty - public Object getEntity() { - return entity != null ? entity : raw; - } + public Object getEntity() { + return entity != null ? entity : raw; + } } diff --git a/vid-app-common/src/main/java/org/onap/vid/mso/rest/MockedWorkflowsRestClient.java b/vid-app-common/src/main/java/org/onap/vid/mso/rest/MockedWorkflowsRestClient.java new file mode 100644 index 000000000..313710ebd --- /dev/null +++ b/vid-app-common/src/main/java/org/onap/vid/mso/rest/MockedWorkflowsRestClient.java @@ -0,0 +1,33 @@ +package org.onap.vid.mso.rest; + +import java.util.Collections; +import org.jetbrains.annotations.NotNull; +import org.onap.vid.client.SyncRestClient; +import org.onap.vid.model.SOWorkflows; +import org.onap.vid.mso.MsoResponseWrapper2; + +public class MockedWorkflowsRestClient { + + private SyncRestClient syncRestClient; + private String baseUrl; + + public MockedWorkflowsRestClient(SyncRestClient syncRestClient, String baseUrl) { + this.syncRestClient = syncRestClient; + this.baseUrl = baseUrl; + } + + public MsoResponseWrapper2 getWorkflows(String vnfName) { + // Temporary skip vnfName and call mocked service + return new MsoResponseWrapper2<>(syncRestClient + .get(getWorkflowsUrl(), + Collections.emptyMap(), + Collections.emptyMap(), + SOWorkflows.class)); + } + + @NotNull + private String getWorkflowsUrl() { + return baseUrl + "so/workflows"; + } + +} diff --git a/vid-app-common/src/main/java/org/onap/vid/services/ExtWorkflowsService.java b/vid-app-common/src/main/java/org/onap/vid/services/ExtWorkflowsService.java new file mode 100644 index 000000000..4ed26a14a --- /dev/null +++ b/vid-app-common/src/main/java/org/onap/vid/services/ExtWorkflowsService.java @@ -0,0 +1,8 @@ +package org.onap.vid.services; + +import java.util.List; +import org.onap.vid.model.SOWorkflow; + +public interface ExtWorkflowsService { + List getWorkflows(String vnfName); +} diff --git a/vid-app-common/src/main/java/org/onap/vid/services/ExtWorkflowsServiceImpl.java b/vid-app-common/src/main/java/org/onap/vid/services/ExtWorkflowsServiceImpl.java new file mode 100644 index 000000000..d5170b6e5 --- /dev/null +++ b/vid-app-common/src/main/java/org/onap/vid/services/ExtWorkflowsServiceImpl.java @@ -0,0 +1,47 @@ +package org.onap.vid.services; + +import java.util.List; +import org.onap.vid.model.SOWorkflow; +import org.onap.vid.model.SOWorkflows; +import org.onap.vid.mso.MsoResponseWrapper2; +import org.onap.vid.mso.rest.MockedWorkflowsRestClient; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + +@Service +public class ExtWorkflowsServiceImpl implements ExtWorkflowsService { + + private MockedWorkflowsRestClient mockedWorkflowsRestClient; + + @Autowired + public ExtWorkflowsServiceImpl(MockedWorkflowsRestClient mockedWorkflowsRestClient) { + this.mockedWorkflowsRestClient = mockedWorkflowsRestClient; + } + + @Override + public List getWorkflows(String vnfName) { + MsoResponseWrapper2 msoResponse = mockedWorkflowsRestClient.getWorkflows(vnfName); + if (msoResponse.getStatus() >= 400 || msoResponse.getEntity() == null) { + throw new BadResponseFromMso(msoResponse); + } + return convertMsoResponseToWorkflowList(msoResponse); + } + + private List convertMsoResponseToWorkflowList(MsoResponseWrapper2 msoResponse) { + SOWorkflows soWorkflows = (SOWorkflows) msoResponse.getEntity(); + return soWorkflows.getWorkflows(); + } + + public static class BadResponseFromMso extends RuntimeException { + private final MsoResponseWrapper2 msoResponse; + + public BadResponseFromMso(MsoResponseWrapper2 msoResponse) { + this.msoResponse = msoResponse; + } + + public MsoResponseWrapper2 getMsoResponse() { + return msoResponse; + } + } + +} -- cgit 1.2.3-korg