diff options
Diffstat (limited to 'plans/so/integration-etsi-testing/so-simulators/multicloud-simulator/src/main/java/org/onap/so/multicloudsimulator/controller/MultiCloudController.java')
-rw-r--r-- | plans/so/integration-etsi-testing/so-simulators/multicloud-simulator/src/main/java/org/onap/so/multicloudsimulator/controller/MultiCloudController.java | 171 |
1 files changed, 171 insertions, 0 deletions
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 new file mode 100644 index 00000000..b0e13362 --- /dev/null +++ b/plans/so/integration-etsi-testing/so-simulators/multicloud-simulator/src/main/java/org/onap/so/multicloudsimulator/controller/MultiCloudController.java @@ -0,0 +1,171 @@ +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.onap.so.multicloudsimulator.beans.MulticloudCreateResponse; +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 java.io.IOException; +import java.net.URI; + +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(); + } +} |