X-Git-Url: https://gerrit.onap.org/r/gitweb?a=blobdiff_plain;f=plans%2Fso%2Fintegration-etsi-testing%2Fso-simulators%2Fmulticloud-simulator%2Fsrc%2Fmain%2Fjava%2Forg%2Fonap%2Fso%2Fmulticloudsimulator%2Fcontroller%2FMultiCloudController.java;h=c99e246e7e4bb0ea2e60c420b216e56d6a3ca17a;hb=cfa8b96c1b28a7dc4f846bb74dc68d036ec431cb;hp=b0e13362edb676889944bb668d6ce494e5e70925;hpb=7b4a3af0a9e4a0046b303e532640bc3e4a3420e5;p=integration%2Fcsit.git diff --git a/plans/so/integration-etsi-testing/so-simulators/multicloud-simulator/src/main/java/org/onap/so/multicloudsimulator/controller/MultiCloudController.java b/plans/so/integration-etsi-testing/so-simulators/multicloud-simulator/src/main/java/org/onap/so/multicloudsimulator/controller/MultiCloudController.java index b0e13362..c99e246e 100644 --- a/plans/so/integration-etsi-testing/so-simulators/multicloud-simulator/src/main/java/org/onap/so/multicloudsimulator/controller/MultiCloudController.java +++ b/plans/so/integration-etsi-testing/so-simulators/multicloud-simulator/src/main/java/org/onap/so/multicloudsimulator/controller/MultiCloudController.java @@ -1,171 +1,128 @@ +/*- + * ============LICENSE_START======================================================= + * Copyright 2021 Huawei Technologies Co., Ltd. + * ================================================================================ + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * ============LICENSE_END========================================================= + */ package org.onap.so.multicloudsimulator.controller; import javax.servlet.http.HttpServletRequest; import javax.ws.rs.core.MediaType; - -import com.fasterxml.jackson.databind.JsonNode; -import com.fasterxml.jackson.databind.ObjectMapper; -import org.json.simple.JSONArray; -import org.json.simple.JSONObject; -import org.onap.so.multicloudsimulator.beans.InstanceResponse; -import org.onap.so.multicloudsimulator.beans.MulticloudInstanceRequest; +import org.apache.commons.io.IOUtils; +import org.onap.so.multicloudsimulator.beans.InstanceOutput; import org.onap.so.multicloudsimulator.beans.MulticloudCreateResponse; +import org.onap.so.multicloudsimulator.beans.MulticloudInstanceRequest; +import org.onap.so.multicloudsimulator.beans.InstanceResponse; +import org.onap.so.multicloudsimulator.beans.InstanceNameOutput; import org.onap.so.multicloudsimulator.beans.MulticloudRequest; -import org.onap.so.openstack.beans.HeatStatus; import org.springframework.http.ResponseEntity; - -import org.springframework.web.bind.annotation.*; - import org.slf4j.Logger; import org.slf4j.LoggerFactory; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.PathVariable; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.RequestBody; +import org.springframework.web.bind.annotation.RequestHeader; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RequestParam; +import org.springframework.web.bind.annotation.RestController; import java.io.IOException; -import java.net.URI; +import java.io.InputStream; import static org.onap.so.multicloudsimulator.utils.Constants.BASE_URL; + @RestController @RequestMapping(path = BASE_URL) public class MultiCloudController { - public static final String X_HTTP_METHOD_OVERRIDE = "X-HTTP-Method-Override"; - private static final Logger LOGGER = LoggerFactory.getLogger(MultiCloudController.class); - public MulticloudCreateResponse multicloudCreateResponse = new MulticloudCreateResponse(); - - @PostMapping(value="/v1/instance") - public ResponseEntity createInstance(@RequestBody MulticloudInstanceRequest req){ - System.out.println("MultiCloud createInstance "); - InstanceResponse InstanceResponse = new InstanceResponse(); - - return ResponseEntity.ok(InstanceResponse); - } - - @GetMapping(value = "/{cloud-owner}/{cloud-region-id}/infra_workload", produces = { - MediaType.APPLICATION_JSON }) - public ResponseEntity getInstance( - @PathVariable("cloud-owner") String cloudOwner, @PathVariable("cloud-region-id") String cloudRegionId, - @RequestParam(value = "depth", required = false, defaultValue = "0") Integer depth, - @RequestParam(name = "format", required = false) final String name, final HttpServletRequest request) throws IOException { - - LOGGER.info("found CloudOwner {} in cache", cloudOwner); - LOGGER.info("found cloudRegionId {} in cache", cloudRegionId); - LOGGER.info("found name {} in cache", name); - JSONObject json = new JSONObject(); - - json.put("template_type", "heat"); - json.put("workload_id", ""); - json.put("workload_status", "GET_COMPLETE"); - JSONObject workload = new JSONObject(); - workload.put("stacks", HeatStatus.NOTFOUND); - json.put("workload_status_reason", workload); - - return ResponseEntity.ok(json); - } - - @PostMapping(value = "/{cloud-owner}/{cloud-region-id}/infra_workload", - consumes = {MediaType.APPLICATION_JSON, MediaType.APPLICATION_XML}, - produces = {MediaType.APPLICATION_JSON, MediaType.APPLICATION_XML}) - public ResponseEntity postCreateInstance( - @RequestBody final MulticloudRequest inputRequest, @PathVariable("cloud-owner") final String cloudOwner, - @PathVariable("cloud-region-id") final String cloudRegionId, - @RequestHeader(value = X_HTTP_METHOD_OVERRIDE, required = false) final String xHttpHeaderOverride, - final HttpServletRequest request) throws IOException { - - LOGGER.info("input request {}: ",inputRequest.toString()); - String input = "{\n" + - " \"template_type\": \"heat\",\n" + - " \"workload_id\": \"sad_sammet\",\n" + - " \"template_response\": [\n" + - " {\n" + - " \"GVK\": {\n" + - " \"Group\": \"k8s.plugin.opnfv.org\",\n" + - " \"Version\": \"v1alpha1\",\n" + - " \"Kind\": \"Network\"\n" + - " },\n" + - " \"Name\": \"k8s-region-2-onap-nf-20210120t221126760z-management-network\"\n" + - " },\n" + - " {\n" + - " \"GVK\": {\n" + - " \"Group\": \"k8s.plugin.opnfv.org\",\n" + - " \"Version\": \"v1alpha1\",\n" + - " \"Kind\": \"Network\"\n" + - " },\n" + - " \"Name\": \"k8s-region-2-onap-nf-20210120t221126760z-protected-network\"\n" + - " },\n" + - " {\n" + - " \"GVK\": {\n" + - " \"Group\": \"k8s.plugin.opnfv.org\",\n" + - " \"Version\": \"v1alpha1\",\n" + - " \"Kind\": \"Network\"\n" + - " },\n" + - " \"Name\": \"k8s-region-2-onap-nf-20210120t221126760z-unprotected-network\"\n" + - " },\n" + - " {\n" + - " \"GVK\": {\n" + - " \"Group\": \"k8s.cni.cncf.io\",\n" + - " \"Version\": \"v1\",\n" + - " \"Kind\": \"NetworkAttachmentDefinition\"\n" + - " },\n" + - " \"Name\": \"k8s-region-2-onap-nf-20210120t221126760z-ovn-nat\"\n" + - " }\n" + - " ],\n" + - " \"workload_status\": \"CREATE_COMPLETE\",\n" + - " \"workload_status_reason\": \"test\"\n" + - "}"; - - ObjectMapper objectMapper = new ObjectMapper(); - JSONObject workload = new JSONObject(); - - workload.put("stack",true); - - JsonNode jsonNode = objectMapper.readTree(workload.toJSONString()); - MulticloudCreateResponse multiResponse = objectMapper.readValue(input, MulticloudCreateResponse.class); - multiResponse.setWorkloadStatusReason(null); - - LOGGER.info("workload reason: {}",multiResponse.getWorkloadStatusReason()); - multiResponse.setWorkloadId("sad_sammet"); - multiResponse.setTemplateType("heat"); - multiResponse.setWorkloadStatus("CREATE_COMPLETE"); - - return ResponseEntity.status(201).body(multiResponse); - } - - @GetMapping(value = "/{cloud-owner}/{cloud-region-id}/infra_workload/{workload-id}", produces = { - MediaType.APPLICATION_JSON }) - public ResponseEntity getInstanceName( - @PathVariable("cloud-owner") String cloudOwner, @PathVariable("cloud-region-id") String cloudRegionId, - @PathVariable("workload-id") String workloadId, - @RequestParam(value = "depth", required = false, defaultValue = "0") Integer depth, - @RequestParam(name = "format", required = false) final String name, final HttpServletRequest request) throws IOException { - - LOGGER.info("Calling getInstanceName"); - LOGGER.info("found CloudOwner {} in cache", cloudOwner); - LOGGER.info("found cloudRegionId {} in cache", cloudRegionId); - LOGGER.info("found name {} in cache", name); - JSONObject json = new JSONObject(); - - json.put("template_type", "heat"); - json.put("workload_id", "sad_sammet"); - json.put("workload_status", "CREATE_COMPLETE"); - JSONObject workload = new JSONObject(); - workload.put("stacks", true); - json.put("workload_status_reason", null); - - return ResponseEntity.ok(json); - } - - @PostMapping(value = "/{cloud-owner}/{cloud-region-id}/infra_workload/{workload-id}", - consumes = {MediaType.APPLICATION_JSON, MediaType.APPLICATION_XML}, - produces = {MediaType.APPLICATION_JSON, MediaType.APPLICATION_XML}) - public ResponseEntity postCreateInstanceName( - @RequestBody final MulticloudRequest inputRequest, @PathVariable("cloud-owner") final String cloudOwner, - @PathVariable("workload-id") String workloadId, - @PathVariable("cloud-region-id") final String cloudRegionId, - @RequestHeader(value = X_HTTP_METHOD_OVERRIDE, required = false) final String xHttpHeaderOverride, - final HttpServletRequest request) throws IOException { - - LOGGER.info("Calling postCreateInstanceName"); - - return ResponseEntity.status(405).build(); - } -} + public static final String X_HTTP_METHOD_OVERRIDE = "X-HTTP-Method-Override"; + private static final Logger LOGGER = LoggerFactory.getLogger(MultiCloudController.class); + + @PostMapping(value = "/v1/instance") + public ResponseEntity createInstance(@RequestBody MulticloudInstanceRequest req) { + System.out.println("MultiCloud createInstance "); + final InstanceResponse InstanceResponse = new InstanceResponse(); + + LOGGER.info("Calling createInstance"); + return ResponseEntity.ok(InstanceResponse); + } + + @GetMapping(value = "/{cloud-owner}/{cloud-region-id}/infra_workload", produces = { MediaType.APPLICATION_JSON }) + public ResponseEntity getInstance(@PathVariable("cloud-owner") String cloudOwner, + @PathVariable("cloud-region-id") String cloudRegionId, + @RequestParam(value = "depth", required = false, defaultValue = "0") Integer depth, + @RequestParam(name = "format", required = false) final String name, final HttpServletRequest request) + throws Exception { + + LOGGER.info("found CloudOwner {}", cloudOwner); + LOGGER.info("found cloudRegionId {}", cloudRegionId); + LOGGER.info("found name {}", name); + final InputStream instanceOutput = InstanceOutput.getInstance(); + final String output = IOUtils.toString(instanceOutput, "utf-8"); + + return ResponseEntity.ok(output); + } + + @PostMapping(value = "/{cloud-owner}/{cloud-region-id}/infra_workload", consumes = { MediaType.APPLICATION_JSON, + MediaType.APPLICATION_XML }, produces = { MediaType.APPLICATION_JSON, MediaType.APPLICATION_XML }) + public ResponseEntity postCreateInstance(@RequestBody final MulticloudCreateResponse inputRequest, + @PathVariable("cloud-owner") final String cloudOwner, + @PathVariable("cloud-region-id") final String cloudRegionId, + @RequestHeader(value = X_HTTP_METHOD_OVERRIDE, required = false) final String xHttpHeaderOverride, + final HttpServletRequest request) throws IOException { + + LOGGER.info("Calling postCreateInstance"); + inputRequest.setWorkloadStatusReason(null); + + inputRequest.setWorkloadId("sad_sammet"); + inputRequest.setTemplateType("heat"); + inputRequest.setWorkloadStatus("CREATE_COMPLETE"); + + return ResponseEntity.status(201).body(inputRequest); + } + + @GetMapping(value = "/{cloud-owner}/{cloud-region-id}/infra_workload/{workload-id}", produces = { + MediaType.APPLICATION_JSON }) + public ResponseEntity getInstanceName(@PathVariable("cloud-owner") final String cloudOwner, + @PathVariable("cloud-region-id") final String cloudRegionId, @PathVariable("workload-id") final String workloadId, + @RequestParam(value = "depth", required = false, defaultValue = "0") final Integer depth, + @RequestParam(name = "format", required = false) final String name, final HttpServletRequest request) + throws Exception { + + LOGGER.info("Calling getInstanceName"); + LOGGER.info("found CloudOwner {}", cloudOwner); + LOGGER.info("found cloudRegionId {}", cloudRegionId); + LOGGER.info("found name {}", name); + final InputStream instanceNameOutput = InstanceNameOutput.getInstanceName(); + final String output = IOUtils.toString(instanceNameOutput, "utf-8"); + + return ResponseEntity.ok(output); + } + + @PostMapping(value = "/{cloud-owner}/{cloud-region-id}/infra_workload/{workload-id}", consumes = { + MediaType.APPLICATION_JSON, + MediaType.APPLICATION_XML }, produces = { MediaType.APPLICATION_JSON, MediaType.APPLICATION_XML }) + public ResponseEntity postCreateInstanceName(@RequestBody final MulticloudRequest inputRequest, + @PathVariable("cloud-owner") final String cloudOwner, @PathVariable("workload-id") String workloadId, + @PathVariable("cloud-region-id") final String cloudRegionId, + @RequestHeader(value = X_HTTP_METHOD_OVERRIDE, required = false) final String xHttpHeaderOverride, + final HttpServletRequest request) throws IOException { + + LOGGER.info("Calling postCreateInstanceName"); + + return ResponseEntity.status(405).build(); + } +} \ No newline at end of file