aboutsummaryrefslogtreecommitdiffstats
path: root/plans/so/integration-etsi-testing/so-simulators/multicloud-simulator/src/main
diff options
context:
space:
mode:
Diffstat (limited to 'plans/so/integration-etsi-testing/so-simulators/multicloud-simulator/src/main')
-rw-r--r--plans/so/integration-etsi-testing/so-simulators/multicloud-simulator/src/main/java/org/onap/so/multicloudsimulator/MultiCloudSimulatorApplication.java35
-rw-r--r--plans/so/integration-etsi-testing/so-simulators/multicloud-simulator/src/main/java/org/onap/so/multicloudsimulator/beans/InstanceNameOutput.java77
-rw-r--r--plans/so/integration-etsi-testing/so-simulators/multicloud-simulator/src/main/java/org/onap/so/multicloudsimulator/beans/InstanceOutput.java79
-rw-r--r--plans/so/integration-etsi-testing/so-simulators/multicloud-simulator/src/main/java/org/onap/so/multicloudsimulator/beans/InstanceResponse.java81
-rw-r--r--plans/so/integration-etsi-testing/so-simulators/multicloud-simulator/src/main/java/org/onap/so/multicloudsimulator/beans/MulticloudCreateResponse.java106
-rw-r--r--plans/so/integration-etsi-testing/so-simulators/multicloud-simulator/src/main/java/org/onap/so/multicloudsimulator/beans/MulticloudInstanceRequest.java104
-rw-r--r--plans/so/integration-etsi-testing/so-simulators/multicloud-simulator/src/main/java/org/onap/so/multicloudsimulator/beans/MulticloudRequest.java158
-rw-r--r--plans/so/integration-etsi-testing/so-simulators/multicloud-simulator/src/main/java/org/onap/so/multicloudsimulator/beans/Resource.java51
-rw-r--r--plans/so/integration-etsi-testing/so-simulators/multicloud-simulator/src/main/java/org/onap/so/multicloudsimulator/beans/Response.java40
-rw-r--r--plans/so/integration-etsi-testing/so-simulators/multicloud-simulator/src/main/java/org/onap/so/multicloudsimulator/configuration/ApplicationConfiguration.java42
-rw-r--r--plans/so/integration-etsi-testing/so-simulators/multicloud-simulator/src/main/java/org/onap/so/multicloudsimulator/configuration/WebSecurityConfigImpl.java43
-rw-r--r--plans/so/integration-etsi-testing/so-simulators/multicloud-simulator/src/main/java/org/onap/so/multicloudsimulator/controller/MultiCloudController.java128
-rw-r--r--plans/so/integration-etsi-testing/so-simulators/multicloud-simulator/src/main/java/org/onap/so/multicloudsimulator/utils/Constants.java30
-rw-r--r--plans/so/integration-etsi-testing/so-simulators/multicloud-simulator/src/main/resources/application.properties1
-rw-r--r--plans/so/integration-etsi-testing/so-simulators/multicloud-simulator/src/main/resources/application.yaml16
-rw-r--r--plans/so/integration-etsi-testing/so-simulators/multicloud-simulator/src/main/resources/data/InstanceNameOutput.json6
-rw-r--r--plans/so/integration-etsi-testing/so-simulators/multicloud-simulator/src/main/resources/data/InstanceOutput.json8
17 files changed, 1005 insertions, 0 deletions
diff --git a/plans/so/integration-etsi-testing/so-simulators/multicloud-simulator/src/main/java/org/onap/so/multicloudsimulator/MultiCloudSimulatorApplication.java b/plans/so/integration-etsi-testing/so-simulators/multicloud-simulator/src/main/java/org/onap/so/multicloudsimulator/MultiCloudSimulatorApplication.java
new file mode 100644
index 00000000..479c4810
--- /dev/null
+++ b/plans/so/integration-etsi-testing/so-simulators/multicloud-simulator/src/main/java/org/onap/so/multicloudsimulator/MultiCloudSimulatorApplication.java
@@ -0,0 +1,35 @@
+/*-
+ * ============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;
+
+import org.springframework.boot.SpringApplication;
+import org.springframework.boot.autoconfigure.SpringBootApplication;
+
+/**
+ * @author Md Irshad Sheikh (md.irshad.sheikh@huawei.com)
+ *
+ */
+@SpringBootApplication(scanBasePackages = { "org.onap" })
+public class MultiCloudSimulatorApplication {
+
+ public static void main(String[] args) {
+ SpringApplication.run(MultiCloudSimulatorApplication.class, args);
+
+ }
+
+} \ No newline at end of file
diff --git a/plans/so/integration-etsi-testing/so-simulators/multicloud-simulator/src/main/java/org/onap/so/multicloudsimulator/beans/InstanceNameOutput.java b/plans/so/integration-etsi-testing/so-simulators/multicloud-simulator/src/main/java/org/onap/so/multicloudsimulator/beans/InstanceNameOutput.java
new file mode 100644
index 00000000..1bf902a2
--- /dev/null
+++ b/plans/so/integration-etsi-testing/so-simulators/multicloud-simulator/src/main/java/org/onap/so/multicloudsimulator/beans/InstanceNameOutput.java
@@ -0,0 +1,77 @@
+/*-
+ * ============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.beans;
+
+import com.fasterxml.jackson.databind.JsonNode;
+import org.springframework.boot.context.properties.ConfigurationProperties;
+import org.springframework.context.annotation.PropertySource;
+import org.springframework.core.io.ClassPathResource;
+import org.springframework.stereotype.Component;
+import java.io.IOException;
+import java.io.InputStream;
+
+@Component
+@PropertySource(value = "data/InstanceNameOutput.json")
+@ConfigurationProperties
+public class InstanceNameOutput {
+ private String template_type;
+ private String workload_id;
+ private String workload_status;
+ public JsonNode workload_status_reason;
+
+ public String getTemplate_type() {
+ return template_type;
+ }
+
+ public void setTemplate_type(final String template_type) {
+ this.template_type = template_type;
+ }
+
+ public String getWorkload_id() {
+ return workload_id;
+ }
+
+ public void setWorkload_id(final String workload_id) {
+ this.workload_id = workload_id;
+ }
+
+ public String getWorkload_status() {
+ return workload_status;
+ }
+
+ public void setWorkload_status(final String workload_status) {
+ this.workload_status = workload_status;
+ }
+
+ public JsonNode getWorkload_status_reason() {
+ return workload_status_reason;
+ }
+
+ public void setWorkload_status_reason(final JsonNode workload_status_reason) {
+ this.workload_status_reason = workload_status_reason;
+ }
+
+ public final static InputStream getFile(final String file) throws IOException {
+ return new ClassPathResource(file).getInputStream();
+ }
+
+ public final static InputStream getInstanceName() throws Exception, IOException {
+ return getFile("data/InstanceNameOutput.json");
+ }
+}
diff --git a/plans/so/integration-etsi-testing/so-simulators/multicloud-simulator/src/main/java/org/onap/so/multicloudsimulator/beans/InstanceOutput.java b/plans/so/integration-etsi-testing/so-simulators/multicloud-simulator/src/main/java/org/onap/so/multicloudsimulator/beans/InstanceOutput.java
new file mode 100644
index 00000000..2cb1fcac
--- /dev/null
+++ b/plans/so/integration-etsi-testing/so-simulators/multicloud-simulator/src/main/java/org/onap/so/multicloudsimulator/beans/InstanceOutput.java
@@ -0,0 +1,79 @@
+/*-
+ * ============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.beans;
+
+import com.fasterxml.jackson.databind.JsonNode;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.boot.context.properties.ConfigurationProperties;
+import org.springframework.context.annotation.PropertySource;
+import org.springframework.core.io.ClassPathResource;
+import org.springframework.stereotype.Component;
+import java.io.IOException;
+import java.io.InputStream;
+
+@Component
+@PropertySource(value = "data/InstanceOutput.json")
+@ConfigurationProperties
+public class InstanceOutput {
+ private static final Logger LOGGER = LoggerFactory.getLogger(InstanceOutput.class);
+ private String template_type;
+ private String workload_id;
+ private String workload_status;
+ public JsonNode workload_status_reason;
+
+ public JsonNode getWorkload_status_reason() {
+ return workload_status_reason;
+ }
+
+ public void setWorkload_status_reason(final JsonNode workload_status_reason) {
+ this.workload_status_reason = workload_status_reason;
+ }
+
+ public String getTemplate_type() {
+ return template_type;
+ }
+
+ public void setTemplate_type(final String template_type) {
+ this.template_type = template_type;
+ }
+
+ public String getWorkload_id() {
+ return workload_id;
+ }
+
+ public void setWorkload_id(final String workload_id) {
+ this.workload_id = workload_id;
+ }
+
+ public String getWorkload_status() {
+ return workload_status;
+ }
+
+ public void setWorkload_status(final String workload_status) {
+ this.workload_status = workload_status;
+ }
+
+ public static InputStream getFile(final String file) throws IOException {
+ return new ClassPathResource(file).getInputStream();
+ }
+
+ public static InputStream getInstance() throws Exception, IOException {
+ return getFile("data/InstanceOutput.json");
+ }
+}
diff --git a/plans/so/integration-etsi-testing/so-simulators/multicloud-simulator/src/main/java/org/onap/so/multicloudsimulator/beans/InstanceResponse.java b/plans/so/integration-etsi-testing/so-simulators/multicloud-simulator/src/main/java/org/onap/so/multicloudsimulator/beans/InstanceResponse.java
new file mode 100644
index 00000000..c8a58210
--- /dev/null
+++ b/plans/so/integration-etsi-testing/so-simulators/multicloud-simulator/src/main/java/org/onap/so/multicloudsimulator/beans/InstanceResponse.java
@@ -0,0 +1,81 @@
+/*-
+ * ============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.beans;
+
+import java.util.List;
+
+import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
+import com.fasterxml.jackson.annotation.JsonInclude;
+import com.fasterxml.jackson.annotation.JsonProperty;
+import com.fasterxml.jackson.annotation.JsonPropertyOrder;
+
+@JsonInclude(JsonInclude.Include.NON_NULL)
+@JsonPropertyOrder({ "id", "request", "namespace", "resources" })
+@JsonIgnoreProperties(value = "true")
+public class InstanceResponse extends Response {
+
+ @JsonProperty("id")
+ private String id;
+ @JsonProperty("request")
+ private MulticloudInstanceRequest request;
+ @JsonProperty("namespace")
+ private String namespace;
+ @JsonProperty("resources")
+ private List<Resource> resources = null;
+
+ public InstanceResponse(final String errorMsg) {
+ super(errorMsg);
+ }
+
+ public InstanceResponse() {
+ super("");
+ }
+
+ public String getId() {
+ return id;
+ }
+
+ public void setId(final String id) {
+ this.id = id;
+ }
+
+ public MulticloudInstanceRequest getRequest() {
+ return request;
+ }
+
+ public void setRequest(final MulticloudInstanceRequest request) {
+ this.request = request;
+ }
+
+ public String getNamespace() {
+ return namespace;
+ }
+
+ public void setNamespace(final String namespace) {
+ this.namespace = namespace;
+ }
+
+ public List<Resource> getResources() {
+ return resources;
+ }
+
+ public void setResources(final List<Resource> resources) {
+ this.resources = resources;
+ }
+
+}
diff --git a/plans/so/integration-etsi-testing/so-simulators/multicloud-simulator/src/main/java/org/onap/so/multicloudsimulator/beans/MulticloudCreateResponse.java b/plans/so/integration-etsi-testing/so-simulators/multicloud-simulator/src/main/java/org/onap/so/multicloudsimulator/beans/MulticloudCreateResponse.java
new file mode 100644
index 00000000..0182fd55
--- /dev/null
+++ b/plans/so/integration-etsi-testing/so-simulators/multicloud-simulator/src/main/java/org/onap/so/multicloudsimulator/beans/MulticloudCreateResponse.java
@@ -0,0 +1,106 @@
+/*-
+ * ============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.beans;
+
+import java.io.Serializable;
+import org.apache.commons.lang3.builder.ToStringBuilder;
+import com.fasterxml.jackson.annotation.JsonCreator;
+import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
+import com.fasterxml.jackson.annotation.JsonInclude;
+import com.fasterxml.jackson.annotation.JsonProperty;
+import com.fasterxml.jackson.annotation.JsonPropertyOrder;
+import com.fasterxml.jackson.databind.JsonNode;
+
+@JsonInclude(JsonInclude.Include.NON_NULL)
+@JsonIgnoreProperties(ignoreUnknown = true)
+@JsonPropertyOrder({ "template_type", "workload_id", "template_response", "workload_status_reason", "workload_status" })
+public class MulticloudCreateResponse implements Serializable {
+ private static final long serialVersionUID = -5215028275577848311L;
+
+ @JsonProperty("template_type")
+ private String templateType;
+ @JsonProperty("workload_id")
+ private String workloadId;
+ @JsonProperty("template_response")
+ private JsonNode templateResponse;
+ @JsonProperty("workload_status_reason")
+ private JsonNode workloadStatusReason;
+ @JsonProperty("workload_status")
+ private String workloadStatus;
+
+ @JsonCreator
+ public MulticloudCreateResponse(@JsonProperty("template_type") String templateType,
+ @JsonProperty("workload_id") String workloadId,
+ @JsonProperty("template_response") JsonNode templateResponse) {
+ this.templateType = templateType;
+ this.workloadId = workloadId;
+ this.templateResponse = templateResponse;
+ }
+
+ public MulticloudCreateResponse() {
+
+ }
+
+ public String getTemplateType() {
+ return templateType;
+ }
+
+ public void setTemplateType(final String templateType) {
+ this.templateType = templateType;
+ }
+
+ public String getWorkloadId() {
+ return workloadId;
+ }
+
+ public void setWorkloadId(final String workloadId) {
+ this.workloadId = workloadId;
+ }
+
+ public void setTemplateResponse(final JsonNode templateResponse) {
+ this.templateResponse = templateResponse;
+ }
+
+ public JsonNode getTemplateResponse() {
+ return templateResponse;
+ }
+
+ public void setWorkloadStatusReason(final JsonNode workloadStatusReason) {
+ this.workloadStatusReason = workloadStatusReason;
+ }
+
+ public JsonNode getWorkloadStatusReason() {
+ return workloadStatusReason;
+ }
+
+ public String getWorkloadSstatus() {
+ return workloadStatus;
+ }
+
+ public void setWorkloadStatus(final String workloadStatus) {
+ this.workloadStatus = workloadStatus;
+ }
+
+ @Override
+ public String toString() {
+ return new ToStringBuilder(this).append("templateType", templateType).append("workloadId", workloadId)
+ .append("templateResponse", templateResponse)
+ .append("workload_status_reason", workloadStatusReason.toString())
+ .append("workload_status", workloadStatus).toString();
+ }
+}
diff --git a/plans/so/integration-etsi-testing/so-simulators/multicloud-simulator/src/main/java/org/onap/so/multicloudsimulator/beans/MulticloudInstanceRequest.java b/plans/so/integration-etsi-testing/so-simulators/multicloud-simulator/src/main/java/org/onap/so/multicloudsimulator/beans/MulticloudInstanceRequest.java
new file mode 100644
index 00000000..b645b9bf
--- /dev/null
+++ b/plans/so/integration-etsi-testing/so-simulators/multicloud-simulator/src/main/java/org/onap/so/multicloudsimulator/beans/MulticloudInstanceRequest.java
@@ -0,0 +1,104 @@
+/*-
+ * ============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.beans;
+
+import java.util.Map;
+import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
+import com.fasterxml.jackson.annotation.JsonProperty;
+
+@JsonIgnoreProperties(value = "true")
+public class MulticloudInstanceRequest {
+
+ @JsonProperty(value = "cloud-region")
+ private String cloudRegion;
+
+ @JsonProperty(value = "rb-name")
+ private String rbName;
+
+ @JsonProperty(value = "rb-version")
+ private String rbVersion;
+
+ @JsonProperty(value = "profile-name")
+ private String profileName;
+
+ @JsonProperty(value = "labels")
+ private Map<String, String> labels;
+
+ @JsonProperty(value = "override-values")
+ private Map<String, String> overrideValues;
+
+ @JsonProperty(value = "release-name")
+ private String vfModuleUuid;
+
+ public String getCloudRegion() {
+ return cloudRegion;
+ }
+
+ public void setCloudRegion(final String cloudRegion) {
+ this.cloudRegion = cloudRegion;
+ }
+
+ public String getRbName() {
+ return rbName;
+ }
+
+ public void setRbName(final String rbName) {
+ this.rbName = rbName;
+ }
+
+ public String getRbVersion() {
+ return rbVersion;
+ }
+
+ public void setRbVersion(final String rbVersion) {
+ this.rbVersion = rbVersion;
+ }
+
+ public String getProfileName() {
+ return profileName;
+ }
+
+ public void setProfileName(final String profileName) {
+ this.profileName = profileName;
+ }
+
+ public Map<String, String> getLabels() {
+ return labels;
+ }
+
+ public void setLabels(Map<String, String> labels) {
+ this.labels = labels;
+ }
+
+ public Map<String, String> getOverrideValues() {
+ return overrideValues;
+ }
+
+ public void setOverrideValues(Map<String, String> overrideValues) {
+ this.overrideValues = overrideValues;
+ }
+
+ public String getVfModuleUuid() {
+ return vfModuleUuid;
+ }
+
+ public void setVfModuleUuid(final String vfModuleUuid) {
+ this.vfModuleUuid = vfModuleUuid;
+ }
+
+}
diff --git a/plans/so/integration-etsi-testing/so-simulators/multicloud-simulator/src/main/java/org/onap/so/multicloudsimulator/beans/MulticloudRequest.java b/plans/so/integration-etsi-testing/so-simulators/multicloud-simulator/src/main/java/org/onap/so/multicloudsimulator/beans/MulticloudRequest.java
new file mode 100644
index 00000000..baeebded
--- /dev/null
+++ b/plans/so/integration-etsi-testing/so-simulators/multicloud-simulator/src/main/java/org/onap/so/multicloudsimulator/beans/MulticloudRequest.java
@@ -0,0 +1,158 @@
+/*-
+ * ============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.beans;
+
+import java.io.Serializable;
+import org.apache.commons.lang3.builder.ToStringBuilder;
+import com.fasterxml.jackson.annotation.JsonInclude;
+import com.fasterxml.jackson.annotation.JsonProperty;
+import com.fasterxml.jackson.annotation.JsonPropertyOrder;
+import com.fasterxml.jackson.databind.JsonNode;
+import com.woorea.openstack.heat.model.CreateStackParam;
+
+@JsonInclude(JsonInclude.Include.NON_NULL)
+@JsonPropertyOrder({ "generic-vnf-id", "vf-module-id", "vf-module-model-invariant-id", "vf-module-model-version-id",
+ "vf-module-model-customization-id", "oof_directives", "sdnc_directives", "user_directives", "template_type",
+ "template_data" })
+public class MulticloudRequest implements Serializable {
+ private static final long serialVersionUID = -5215028275577848311L;
+
+ @JsonProperty("generic-vnf-id")
+ private String genericVnfId;
+
+ @JsonProperty("vf-module-id")
+ private String vfModuleId;
+
+ @JsonProperty("vf-module-model-invariant-id")
+ private String vfModuleModelInvariantId;
+
+ @JsonProperty("vf-module-model-version-id")
+ private String vfModuleModelVersionId;
+
+ @JsonProperty("vf-module-model-customization-id")
+ private String vfModuleModelCustomizationId;
+
+ @JsonProperty("oof_directives")
+ private JsonNode oofDirectives;
+
+ @JsonProperty("sdnc_directives")
+ private JsonNode sdncDirectives;
+
+ @JsonProperty("user_directives")
+ private JsonNode userDirectives;
+
+ @JsonProperty("template_type")
+ private String templateType;
+
+ @JsonProperty("template_data")
+ private CreateStackParam templateData;
+
+ public String getGenericVnfId() {
+ return genericVnfId;
+ }
+
+ public void setGenericVnfId(final String genericVnfId) {
+ this.genericVnfId = genericVnfId;
+ }
+
+ public String getVfModuleId() {
+ return vfModuleId;
+ }
+
+ public void setVfModuleId(final String vfModuleId) {
+ this.vfModuleId = vfModuleId;
+ }
+
+ public String getVfModuleModelInvariantId() {
+ return vfModuleModelInvariantId;
+ }
+
+ public void setVfModuleModelInvariantId(final String vfModuleModelInvariantId) {
+ this.vfModuleModelInvariantId = vfModuleModelInvariantId;
+ }
+
+ public String getVfModuleModelVersionId() {
+ return vfModuleModelVersionId;
+ }
+
+ public void setVfModuleModelVersionId(final String vfModuleModelVersionId) {
+ this.vfModuleModelVersionId = vfModuleModelVersionId;
+ }
+
+ public String getVfModuleModelCustomizationId() {
+ return vfModuleModelCustomizationId;
+ }
+
+ @JsonProperty("vf-module-model-customization-id")
+ public void setVfModuleModelCustomizationId(final String vfModuleModelCustomizationId) {
+ this.vfModuleModelCustomizationId = vfModuleModelCustomizationId;
+ }
+
+ public JsonNode getOofDirectives() {
+ return oofDirectives;
+ }
+
+ public void setOofDirectives(final JsonNode oofDirectives) {
+ this.oofDirectives = oofDirectives;
+ }
+
+ public JsonNode getSdncDirectives() {
+ return sdncDirectives;
+ }
+
+ public void setSdncDirectives(final JsonNode sdncDirectives) {
+ this.sdncDirectives = sdncDirectives;
+ }
+
+ public JsonNode getUserDirectives() {
+ return userDirectives;
+ }
+
+ public void setUserDirectives(final JsonNode userDirectives) {
+ this.userDirectives = userDirectives;
+ }
+
+ public String getTemplateType() {
+ return templateType;
+ }
+
+ public void setTemplateType(final String templateType) {
+ this.templateType = templateType;
+ }
+
+ public CreateStackParam getTemplateData() {
+ return templateData;
+ }
+
+ public void setTemplateData(CreateStackParam templateData) {
+ this.templateData = templateData;
+ }
+
+ @Override
+ public String toString() {
+ return new ToStringBuilder(this).append("genericVnfId", genericVnfId).append("vfModuleId", vfModuleId)
+ .append("vfModuleModelInvariantId", vfModuleModelInvariantId)
+ .append("vfModuleModelVersionId", vfModuleModelVersionId)
+ .append("vfModuleModelCustomizationId", vfModuleModelCustomizationId)
+ .append("oofDirectives", oofDirectives).append("sdncDirectives", sdncDirectives)
+ .append("userDirectives", userDirectives).append("templateType", templateType)
+ .append("templateData", templateData).toString();
+ }
+
+}
diff --git a/plans/so/integration-etsi-testing/so-simulators/multicloud-simulator/src/main/java/org/onap/so/multicloudsimulator/beans/Resource.java b/plans/so/integration-etsi-testing/so-simulators/multicloud-simulator/src/main/java/org/onap/so/multicloudsimulator/beans/Resource.java
new file mode 100644
index 00000000..666cbe03
--- /dev/null
+++ b/plans/so/integration-etsi-testing/so-simulators/multicloud-simulator/src/main/java/org/onap/so/multicloudsimulator/beans/Resource.java
@@ -0,0 +1,51 @@
+/*-
+ * ============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.beans;
+
+import com.fasterxml.jackson.annotation.JsonInclude;
+import com.fasterxml.jackson.annotation.JsonProperty;
+import com.fasterxml.jackson.annotation.JsonPropertyOrder;
+
+@JsonInclude(JsonInclude.Include.NON_NULL)
+@JsonPropertyOrder({ "resource-type", "resource-link" })
+public class Resource {
+
+ @JsonProperty("resource-type")
+ private String resourceType;
+
+ @JsonProperty("resource-link")
+ private String resourceLink;
+
+ @JsonProperty("resource-type")
+ public String getResourceType() {
+ return resourceType;
+ }
+
+ public void setResourceType(final String resourceType) {
+ this.resourceType = resourceType;
+ }
+
+ public String getResourceLink() {
+ return resourceLink;
+ }
+
+ public void setResourceLink(final String resourceLink) {
+ this.resourceLink = resourceLink;
+ }
+
+}
diff --git a/plans/so/integration-etsi-testing/so-simulators/multicloud-simulator/src/main/java/org/onap/so/multicloudsimulator/beans/Response.java b/plans/so/integration-etsi-testing/so-simulators/multicloud-simulator/src/main/java/org/onap/so/multicloudsimulator/beans/Response.java
new file mode 100644
index 00000000..8f0713ea
--- /dev/null
+++ b/plans/so/integration-etsi-testing/so-simulators/multicloud-simulator/src/main/java/org/onap/so/multicloudsimulator/beans/Response.java
@@ -0,0 +1,40 @@
+/*-
+ * ============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.beans;
+
+public class Response {
+
+ private String errorMsg;
+
+ public Response(final String errorMsg) {
+ this.errorMsg = errorMsg;
+ }
+
+ public Response() {
+ }
+
+ public String getErrorMsg() {
+ return errorMsg;
+ }
+
+ public void setErrorMsg(final String errorMsg) {
+ this.errorMsg = errorMsg;
+ }
+
+}
diff --git a/plans/so/integration-etsi-testing/so-simulators/multicloud-simulator/src/main/java/org/onap/so/multicloudsimulator/configuration/ApplicationConfiguration.java b/plans/so/integration-etsi-testing/so-simulators/multicloud-simulator/src/main/java/org/onap/so/multicloudsimulator/configuration/ApplicationConfiguration.java
new file mode 100644
index 00000000..365710e3
--- /dev/null
+++ b/plans/so/integration-etsi-testing/so-simulators/multicloud-simulator/src/main/java/org/onap/so/multicloudsimulator/configuration/ApplicationConfiguration.java
@@ -0,0 +1,42 @@
+/*-
+ * ============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.configuration;
+
+import static org.onap.so.multicloudsimulator.utils.Constants.MULTICLOUD_CACHE;
+import java.util.Arrays;
+import org.springframework.cache.Cache;
+import org.springframework.cache.CacheManager;
+import org.springframework.cache.concurrent.ConcurrentMapCache;
+import org.springframework.cache.support.SimpleCacheManager;
+import org.springframework.context.annotation.Bean;
+import org.springframework.context.annotation.Configuration;
+
+@Configuration
+public class ApplicationConfiguration {
+
+ @Bean
+ public CacheManager cacheManager() {
+ final SimpleCacheManager manager = new SimpleCacheManager();
+ manager.setCaches(Arrays.asList(getCache(MULTICLOUD_CACHE)));
+ return manager;
+ }
+
+ private Cache getCache(final String name) {
+ return new ConcurrentMapCache(name);
+ }
+}
diff --git a/plans/so/integration-etsi-testing/so-simulators/multicloud-simulator/src/main/java/org/onap/so/multicloudsimulator/configuration/WebSecurityConfigImpl.java b/plans/so/integration-etsi-testing/so-simulators/multicloud-simulator/src/main/java/org/onap/so/multicloudsimulator/configuration/WebSecurityConfigImpl.java
new file mode 100644
index 00000000..b1d0984a
--- /dev/null
+++ b/plans/so/integration-etsi-testing/so-simulators/multicloud-simulator/src/main/java/org/onap/so/multicloudsimulator/configuration/WebSecurityConfigImpl.java
@@ -0,0 +1,43 @@
+/*-
+ * ============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.configuration;
+
+import static org.onap.so.multicloudsimulator.utils.Constants.OPERATIONS_URL;
+import org.onap.so.simulator.configuration.SimulatorSecurityConfigurer;
+import org.onap.so.simulator.model.UserCredentials;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.context.annotation.Configuration;
+import org.springframework.security.config.annotation.web.builders.HttpSecurity;
+import org.springframework.security.config.annotation.web.configuration.EnableWebSecurity;
+
+@Configuration
+@EnableWebSecurity
+public class WebSecurityConfigImpl extends SimulatorSecurityConfigurer {
+
+ @Autowired
+ public WebSecurityConfigImpl(final UserCredentials userCredentials) {
+ super(userCredentials.getUsers());
+ }
+
+ @Override
+ protected void configure(final HttpSecurity http) throws Exception {
+ http.csrf().disable().authorizeRequests().antMatchers(OPERATIONS_URL + "/**/**").authenticated().and()
+ .httpBasic();
+ }
+
+}
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..c99e246e
--- /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,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 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.springframework.http.ResponseEntity;
+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.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);
+
+ @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
diff --git a/plans/so/integration-etsi-testing/so-simulators/multicloud-simulator/src/main/java/org/onap/so/multicloudsimulator/utils/Constants.java b/plans/so/integration-etsi-testing/so-simulators/multicloud-simulator/src/main/java/org/onap/so/multicloudsimulator/utils/Constants.java
new file mode 100644
index 00000000..e104d235
--- /dev/null
+++ b/plans/so/integration-etsi-testing/so-simulators/multicloud-simulator/src/main/java/org/onap/so/multicloudsimulator/utils/Constants.java
@@ -0,0 +1,30 @@
+/*-
+ * ============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.utils;
+
+public class Constants {
+
+ public static final String BASE_URL = "/api/multicloud/v1";
+
+ public static final String OPERATIONS_URL = BASE_URL + "/operations";
+
+ public static final String MULTICLOUD_CACHE = "multicloud-cache";
+
+ private Constants() {
+ }
+}
diff --git a/plans/so/integration-etsi-testing/so-simulators/multicloud-simulator/src/main/resources/application.properties b/plans/so/integration-etsi-testing/so-simulators/multicloud-simulator/src/main/resources/application.properties
new file mode 100644
index 00000000..e507a12f
--- /dev/null
+++ b/plans/so/integration-etsi-testing/so-simulators/multicloud-simulator/src/main/resources/application.properties
@@ -0,0 +1 @@
+security.ignored=/**
diff --git a/plans/so/integration-etsi-testing/so-simulators/multicloud-simulator/src/main/resources/application.yaml b/plans/so/integration-etsi-testing/so-simulators/multicloud-simulator/src/main/resources/application.yaml
new file mode 100644
index 00000000..393d1b7b
--- /dev/null
+++ b/plans/so/integration-etsi-testing/so-simulators/multicloud-simulator/src/main/resources/application.yaml
@@ -0,0 +1,16 @@
+server:
+ port: 9996
+ tomcat:
+ max-threads: 4
+ssl-enable: false
+spring:
+ security:
+ users:
+ - username: mso
+ password: $2a$04$f8SB6cW/VI26QvYM6z.GXu7hlEmwnFtePenD8zF18mS3Atu3QNqr2
+ role: VID
+ - username: admin
+ password: $2a$04$f8SB6cW/VI26QvYM6z.GXu7hlEmwnFtePenD8zF18mS3Atu3QNqr2
+ role: VID
+ main:
+ allow-bean-definition-overriding: true \ No newline at end of file
diff --git a/plans/so/integration-etsi-testing/so-simulators/multicloud-simulator/src/main/resources/data/InstanceNameOutput.json b/plans/so/integration-etsi-testing/so-simulators/multicloud-simulator/src/main/resources/data/InstanceNameOutput.json
new file mode 100644
index 00000000..8c0e88f4
--- /dev/null
+++ b/plans/so/integration-etsi-testing/so-simulators/multicloud-simulator/src/main/resources/data/InstanceNameOutput.json
@@ -0,0 +1,6 @@
+{
+ "workload_status_reason": null,
+ "template_type": "heat",
+ "workload_id": "sad_sammet",
+ "workload_status": "CREATE_COMPLETE"
+} \ No newline at end of file
diff --git a/plans/so/integration-etsi-testing/so-simulators/multicloud-simulator/src/main/resources/data/InstanceOutput.json b/plans/so/integration-etsi-testing/so-simulators/multicloud-simulator/src/main/resources/data/InstanceOutput.json
new file mode 100644
index 00000000..e47ffb43
--- /dev/null
+++ b/plans/so/integration-etsi-testing/so-simulators/multicloud-simulator/src/main/resources/data/InstanceOutput.json
@@ -0,0 +1,8 @@
+{
+ "workload_status_reason": {
+ "stacks": "NOTFOUND"
+ },
+ "template_type": "heat",
+ "workload_id": "",
+ "workload_status": "GET_COMPLETE"
+}