summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--adapters/mso-adapter-utils/src/main/java/org/onap/so/cloudify/beans/DeploymentInfo.java220
-rw-r--r--adapters/mso-adapter-utils/src/main/java/org/onap/so/cloudify/beans/DeploymentInfoBuilder.java118
-rw-r--r--adapters/mso-adapter-utils/src/main/java/org/onap/so/cloudify/utils/MsoCloudifyUtils.java60
-rw-r--r--adapters/mso-adapter-utils/src/main/java/org/onap/so/openstack/utils/MsoHeatUtils.java3
-rw-r--r--adapters/mso-adapter-utils/src/main/java/org/onap/so/openstack/utils/MsoMulticloudParam.java110
-rw-r--r--adapters/mso-adapter-utils/src/main/java/org/onap/so/openstack/utils/MsoMulticloudUtils.java266
-rw-r--r--adapters/mso-adapter-utils/src/main/java/org/onap/so/openstack/utils/MulticloudCreateHeatResponse.java77
-rw-r--r--adapters/mso-adapter-utils/src/main/java/org/onap/so/openstack/utils/MulticloudCreateLinkResponse.java76
-rw-r--r--adapters/mso-adapter-utils/src/main/java/org/onap/so/openstack/utils/MulticloudCreateResponse.java90
-rw-r--r--adapters/mso-adapter-utils/src/main/java/org/onap/so/openstack/utils/MulticloudCreateStackResponse.java60
-rw-r--r--adapters/mso-adapter-utils/src/main/java/org/onap/so/openstack/utils/MulticloudQueryResponse.java90
-rw-r--r--adapters/mso-adapter-utils/src/main/java/org/onap/so/openstack/utils/MulticloudRequest.java120
-rw-r--r--adapters/mso-adapter-utils/src/test/java/org/onap/so/cloudify/beans/DeploymentInfoBuilderTest.java168
-rw-r--r--adapters/mso-adapter-utils/src/test/java/org/onap/so/cloudify/beans/DeploymentInfoTest.java76
-rw-r--r--adapters/mso-adapter-utils/src/test/java/org/onap/so/cloudify/utils/MsoCloudifyUtilsTest2.java60
-rw-r--r--adapters/mso-catalog-db-adapter/src/main/resources/db/migration/V1.1__Initial_Recipe_Setup.sql4
-rw-r--r--adapters/mso-catalog-db-adapter/src/test/java/org/onap/so/db/catalog/client/CatalogDbClientPortChanger.java9
-rw-r--r--adapters/mso-catalog-db-adapter/src/test/java/org/onap/so/db/catalog/client/CatalogDbClientTest.java42
-rw-r--r--adapters/mso-catalog-db-adapter/src/test/resources/application-test.yaml6
-rw-r--r--adapters/mso-openstack-adapters/src/main/java/org/onap/so/adapters/vnf/MsoVnfPluginAdapterImpl.java49
-rw-r--r--adapters/mso-openstack-adapters/src/main/java/org/onap/so/adapters/vnf/VnfAdapterRestUtils.java19
-rw-r--r--adapters/mso-openstack-adapters/src/test/java/org/onap/so/adapters/vnf/BaseRestTestUtils.java16
-rw-r--r--adapters/mso-openstack-adapters/src/test/java/org/onap/so/adapters/vnf/MsoVnfMulticloudAdapterImplTest.java123
-rw-r--r--adapters/mso-openstack-adapters/src/test/java/org/onap/so/adapters/vnf/MsoVnfPluginAdapterImplTest.java102
-rw-r--r--adapters/mso-openstack-adapters/src/test/resources/__files/MulticloudResponse_Stack.json5
-rw-r--r--adapters/mso-openstack-adapters/src/test/resources/__files/MulticloudResponse_Stack_Create.json16
-rw-r--r--adapters/mso-openstack-adapters/src/test/resources/data.sql2
-rw-r--r--asdc-controller/src/main/java/org/onap/so/asdc/client/ASDCController.java10
-rw-r--r--bpmn/so-bpmn-infrastructure-common/src/main/groovy/org/onap/so/bpmn/infrastructure/scripts/ActivateSDNCNetworkResource.groovy17
-rw-r--r--bpmn/so-bpmn-infrastructure-common/src/main/groovy/org/onap/so/bpmn/infrastructure/scripts/CreateSDNCNetworkResource.groovy41
-rw-r--r--bpmn/so-bpmn-infrastructure-common/src/main/groovy/org/onap/so/bpmn/infrastructure/scripts/DeActivateSDNCNetworkResource.groovy20
-rw-r--r--bpmn/so-bpmn-infrastructure-common/src/main/groovy/org/onap/so/bpmn/infrastructure/scripts/DeleteSDNCNetworkResource.groovy30
-rw-r--r--bpmn/so-bpmn-infrastructure-common/src/main/groovy/org/onap/so/bpmn/infrastructure/scripts/DoCreateVfModule.groovy2
-rw-r--r--common/src/main/java/org/onap/so/utils/TargetEntity.java3
-rw-r--r--docs/api/SO_Interface.rst26
-rw-r--r--docs/api/offered_consumed_apis.rst25
-rw-r--r--docs/api/swagger.json2302
-rw-r--r--docs/architecture/architecture.rst8
-rw-r--r--docs/developer_info/developer_information.rst18
-rw-r--r--docs/release_notes/release-notes.rst6
-rw-r--r--mso-api-handlers/mso-requests-db-repositories/src/test/java/org/onap/so/TestApplication.java6
-rw-r--r--mso-api-handlers/mso-requests-db/src/main/java/org/onap/so/db/request/client/RequestsDbClient.java29
-rw-r--r--mso-catalog-db/src/main/java/org/onap/so/db/catalog/beans/CloudSite.java21
-rw-r--r--mso-catalog-db/src/main/java/org/onap/so/db/catalog/client/CatalogDbClient.java51
-rw-r--r--packages/docker/pom.xml2
-rw-r--r--pom.xml1
-rw-r--r--so-monitoring/so-monitoring-handler/src/main/java/org/onap/so/montoring/configuration/rest/RestTemplateConfigration.java1
47 files changed, 3853 insertions, 753 deletions
diff --git a/adapters/mso-adapter-utils/src/main/java/org/onap/so/cloudify/beans/DeploymentInfo.java b/adapters/mso-adapter-utils/src/main/java/org/onap/so/cloudify/beans/DeploymentInfo.java
index c6e29d05d7..d2b3334c8c 100644
--- a/adapters/mso-adapter-utils/src/main/java/org/onap/so/cloudify/beans/DeploymentInfo.java
+++ b/adapters/mso-adapter-utils/src/main/java/org/onap/so/cloudify/beans/DeploymentInfo.java
@@ -4,12 +4,14 @@
* ================================================================================
* Copyright (C) 2017 AT&T Intellectual Property. All rights reserved.
* ================================================================================
+ * Copyright (C) 2018 Nokia.
+ * ================================================================================
* 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.
@@ -20,166 +22,78 @@
package org.onap.so.cloudify.beans;
-import java.util.HashMap;
import java.util.Map;
-import org.onap.so.cloudify.v3.model.Deployment;
-import org.onap.so.cloudify.v3.model.DeploymentOutputs;
-import org.onap.so.cloudify.v3.model.Execution;
-
/*
* This Java bean class relays Heat stack status information to ActiveVOS processes.
- *
+ *
* This bean is returned by all Heat-specific adapter operations (create, query, delete)
*/
-public class DeploymentInfo {
- // Set defaults for everything
- private String id = "";
- private DeploymentStatus status = DeploymentStatus.NOTFOUND;
- private Map<String,Object> outputs = new HashMap<String,Object>();
- private Map<String,Object> inputs = new HashMap<String,Object>();
- private String lastAction;
- private String actionStatus;
- private String errorMessage;
-
- public DeploymentInfo () {
- }
-
- public DeploymentInfo (String id, Map<String,Object> outputs) {
- this.id = id;
- if (outputs != null) this.outputs = outputs;
- }
-
- public DeploymentInfo (String id) {
- this.id = id;
- }
-
- public DeploymentInfo (String id, DeploymentStatus status) {
- this.id = id;
- this.status = status;
- }
-
- public DeploymentInfo (Deployment deployment) {
- this(deployment, null, null);
- }
-
- /**
- * Construct a DeploymentInfo object from a deployment and the latest Execution action
- * @param deployment
- * @param execution
- */
- public DeploymentInfo (Deployment deployment, DeploymentOutputs outputs, Execution execution)
- {
- if (deployment == null) {
- this.id = null;
- return;
- }
-
- this.id = deployment.getId();
-
- if (outputs != null)
- this.outputs = outputs.getOutputs();
-
- if (deployment.getInputs() != null)
- this.inputs = deployment.getInputs();
-
- if (execution != null) {
- this.lastAction = execution.getWorkflowId();
- this.actionStatus = execution.getStatus();
- this.errorMessage = execution.getError();
-
- // Compute the status based on the last workflow
- if (lastAction.equals("install")) {
- if (actionStatus.equals("terminated"))
- this.status = DeploymentStatus.INSTALLED;
- else if (actionStatus.equals("failed"))
- this.status = DeploymentStatus.FAILED;
- else if (actionStatus.equals("started") || actionStatus.equals("pending"))
- this.status = DeploymentStatus.INSTALLING;
- else
- this.status = DeploymentStatus.UNKNOWN;
- }
- else if (lastAction.equals("uninstall")) {
- if (actionStatus.equals("terminated"))
- this.status = DeploymentStatus.CREATED;
- else if (actionStatus.equals("failed"))
- this.status = DeploymentStatus.FAILED;
- else if (actionStatus.equals("started") || actionStatus.equals("pending"))
- this.status = DeploymentStatus.UNINSTALLING;
- else
- this.status = DeploymentStatus.UNKNOWN;
- }
- else {
- // Could have more cases in the future for different actions.
- this.status = DeploymentStatus.UNKNOWN;
- }
- }
- else {
- this.status = DeploymentStatus.CREATED;
- }
- }
-
- public String getId() {
- return id;
- }
-
- public void setId (String id) {
- this.id = id;
- }
-
- public DeploymentStatus getStatus() {
- return status;
- }
-
- public void setStatus (DeploymentStatus status) {
- this.status = status;
- }
-
- public Map<String,Object> getOutputs () {
- return outputs;
- }
-
- public void setOutputs (Map<String,Object> outputs) {
- this.outputs = outputs;
- }
-
- public Map<String,Object> getInputs () {
- return inputs;
- }
-
- public void setInputs (Map<String,Object> inputs) {
- this.inputs = inputs;
- }
-
- public String getLastAction() {
- return lastAction;
- }
-
- public String getActionStatus() {
- return actionStatus;
- }
-
- public String getErrorMessage() {
- return errorMessage;
- }
-
- public void saveExecutionStatus (Execution execution) {
- this.lastAction = execution.getWorkflowId();
- this.actionStatus = execution.getStatus();
- this.errorMessage = execution.getError();
- }
-
- @Override
+public final class DeploymentInfo {
+
+ private final String id;
+ private final DeploymentStatus status;
+ private final Map<String, Object> outputs;
+ private final Map<String, Object> inputs;
+ private final String lastAction;
+ private final String actionStatus;
+ private final String errorMessage;
+
+ DeploymentInfo(String id, DeploymentStatus deploymentStatus,
+ Map<String, Object> deploymentOutputs,
+ Map<String, Object> deploymentInputs,
+ String lastAction,
+ String actionStatus,
+ String errorMessage) {
+
+ this.id = id;
+ this.status = deploymentStatus;
+ this.outputs = deploymentOutputs;
+ this.inputs = deploymentInputs;
+ this.lastAction = lastAction;
+ this.actionStatus = actionStatus;
+ this.errorMessage = errorMessage;
+ }
+
+ public String getId() {
+ return id;
+ }
+
+ public DeploymentStatus getStatus() {
+ return status;
+ }
+
+ public Map<String, Object> getOutputs() {
+ return outputs;
+ }
+
+ public Map<String, Object> getInputs() {
+ return inputs;
+ }
+
+ public String getLastAction() {
+ return lastAction;
+ }
+
+ public String getActionStatus() {
+ return actionStatus;
+ }
+
+ public String getErrorMessage() {
+ return errorMessage;
+ }
+
+ @Override
public String toString() {
return "DeploymentInfo {" +
- "id='" + id + '\'' +
- ", inputs='" + inputs + '\'' +
- ", outputs='" + outputs + '\'' +
- ", lastAction='" + lastAction + '\'' +
- ", status='" + status + '\'' +
- ", errorMessage='" + errorMessage + '\'' +
- '}';
+ "id='" + id + '\'' +
+ ", inputs='" + inputs + '\'' +
+ ", outputs='" + outputs + '\'' +
+ ", lastAction='" + lastAction + '\'' +
+ ", status='" + status + '\'' +
+ ", errorMessage='" + errorMessage + '\'' +
+ '}';
}
}
diff --git a/adapters/mso-adapter-utils/src/main/java/org/onap/so/cloudify/beans/DeploymentInfoBuilder.java b/adapters/mso-adapter-utils/src/main/java/org/onap/so/cloudify/beans/DeploymentInfoBuilder.java
new file mode 100644
index 0000000000..2e12869c95
--- /dev/null
+++ b/adapters/mso-adapter-utils/src/main/java/org/onap/so/cloudify/beans/DeploymentInfoBuilder.java
@@ -0,0 +1,118 @@
+/*
+ * ============LICENSE_START=======================================================
+ * ONAP : SO
+ * ================================================================================
+ * Copyright (C) 2018 Nokia.
+ * =============================================================================
+ * 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.cloudify.beans;
+
+import java.util.HashMap;
+import java.util.Map;
+import org.onap.so.cloudify.v3.model.Execution;
+
+public final class DeploymentInfoBuilder {
+
+ private String id = "";
+ private DeploymentStatus deploymentStatus = DeploymentStatus.NOTFOUND;
+ private Map<String, Object> deploymentOutputs = new HashMap<>();
+ private Map<String, Object> deploymentInputs = new HashMap<>();
+ private String lastAction;
+ private String actionStatus;
+ private String errorMessage;
+
+ public DeploymentInfoBuilder withId(String id) {
+ this.id = id;
+ return this;
+ }
+
+ public DeploymentInfoBuilder withStatus(DeploymentStatus deploymentStatus) {
+ this.deploymentStatus = deploymentStatus;
+ return this;
+ }
+
+ public DeploymentInfoBuilder withDeploymentOutputs(Map<String, Object> deploymentOutputs) {
+ this.deploymentOutputs = deploymentOutputs;
+ return this;
+ }
+
+ public DeploymentInfoBuilder withDeploymentInputs(Map<String, Object> deploymentInputs) {
+ this.deploymentInputs = deploymentInputs;
+ return this;
+ }
+
+ public DeploymentInfoBuilder withLastAction(String lastAction) {
+ this.lastAction = lastAction;
+ return this;
+ }
+
+ public DeploymentInfoBuilder withActionStatus(String actionStatus) {
+ this.actionStatus = actionStatus;
+ return this;
+ }
+
+ public DeploymentInfoBuilder withErrorMessage(String errorMessage) {
+ this.errorMessage = errorMessage;
+ return this;
+ }
+
+ public DeploymentInfoBuilder fromExecution(Execution execution) {
+ if (execution != null) {
+ this.lastAction = execution.getWorkflowId();
+ this.actionStatus = execution.getStatus();
+ this.errorMessage = execution.getError();
+
+ // Compute the status based on the last workflow
+ if (lastAction.equals("install")) {
+ if (actionStatus.equals("terminated")) {
+ this.deploymentStatus = DeploymentStatus.INSTALLED;
+ } else if (actionStatus.equals("failed")) {
+ this.deploymentStatus = DeploymentStatus.FAILED;
+ } else if (actionStatus.equals("started") || actionStatus.equals("pending")) {
+ this.deploymentStatus = DeploymentStatus.INSTALLING;
+ } else {
+ this.deploymentStatus = DeploymentStatus.UNKNOWN;
+ }
+ } else if (lastAction.equals("uninstall")) {
+ if (actionStatus.equals("terminated")) {
+ this.deploymentStatus = DeploymentStatus.CREATED;
+ } else if (actionStatus.equals("failed")) {
+ this.deploymentStatus = DeploymentStatus.FAILED;
+ } else if (actionStatus.equals("started") || actionStatus.equals("pending")) {
+ this.deploymentStatus = DeploymentStatus.UNINSTALLING;
+ } else {
+ this.deploymentStatus = DeploymentStatus.UNKNOWN;
+ }
+ } else {
+ // Could have more cases in the future for different actions.
+ this.deploymentStatus = DeploymentStatus.UNKNOWN;
+ }
+ } else {
+ this.deploymentStatus = DeploymentStatus.CREATED;
+ }
+
+ return this;
+ }
+
+ public DeploymentInfo build() {
+ return new DeploymentInfo(id,
+ deploymentStatus,
+ deploymentOutputs,
+ deploymentInputs,
+ lastAction,
+ actionStatus,
+ errorMessage);
+ }
+}
diff --git a/adapters/mso-adapter-utils/src/main/java/org/onap/so/cloudify/utils/MsoCloudifyUtils.java b/adapters/mso-adapter-utils/src/main/java/org/onap/so/cloudify/utils/MsoCloudifyUtils.java
index 677f6395ff..85abf9403c 100644
--- a/adapters/mso-adapter-utils/src/main/java/org/onap/so/cloudify/utils/MsoCloudifyUtils.java
+++ b/adapters/mso-adapter-utils/src/main/java/org/onap/so/cloudify/utils/MsoCloudifyUtils.java
@@ -4,6 +4,8 @@
* ================================================================================
* Copyright (C) 2017 AT&T Intellectual Property. All rights reserved.
* ================================================================================
+ * Copyright (C) 2018 Nokia.
+ * ================================================================================
* 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
@@ -20,6 +22,9 @@
package org.onap.so.cloudify.utils;
+import com.fasterxml.jackson.core.JsonParseException;
+import com.fasterxml.jackson.databind.JsonNode;
+import com.fasterxml.jackson.databind.ObjectMapper;
import java.io.ByteArrayInputStream;
import java.io.ByteArrayOutputStream;
import java.io.IOException;
@@ -30,7 +35,6 @@ import java.util.Map;
import java.util.Optional;
import java.util.zip.ZipEntry;
import java.util.zip.ZipOutputStream;
-
import org.onap.so.adapters.vdu.CloudInfo;
import org.onap.so.adapters.vdu.PluginAction;
import org.onap.so.adapters.vdu.VduArtifact;
@@ -42,14 +46,13 @@ import org.onap.so.adapters.vdu.VduPlugin;
import org.onap.so.adapters.vdu.VduStateType;
import org.onap.so.adapters.vdu.VduStatus;
import org.onap.so.cloud.CloudConfig;
-import org.onap.so.db.catalog.beans.CloudSite;
-import org.onap.so.db.catalog.beans.CloudifyManager;
import org.onap.so.cloudify.base.client.CloudifyBaseException;
import org.onap.so.cloudify.base.client.CloudifyClientTokenProvider;
import org.onap.so.cloudify.base.client.CloudifyConnectException;
import org.onap.so.cloudify.base.client.CloudifyRequest;
import org.onap.so.cloudify.base.client.CloudifyResponseException;
import org.onap.so.cloudify.beans.DeploymentInfo;
+import org.onap.so.cloudify.beans.DeploymentInfoBuilder;
import org.onap.so.cloudify.beans.DeploymentStatus;
import org.onap.so.cloudify.exceptions.MsoCloudifyException;
import org.onap.so.cloudify.exceptions.MsoCloudifyManagerNotFound;
@@ -77,6 +80,8 @@ import org.onap.so.cloudify.v3.model.Executions;
import org.onap.so.cloudify.v3.model.OpenstackConfig;
import org.onap.so.cloudify.v3.model.StartExecutionParams;
import org.onap.so.config.beans.PoConfig;
+import org.onap.so.db.catalog.beans.CloudSite;
+import org.onap.so.db.catalog.beans.CloudifyManager;
import org.onap.so.db.catalog.beans.HeatTemplateParam;
import org.onap.so.logger.MessageEnum;
import org.onap.so.logger.MsoAlarmLogger;
@@ -93,10 +98,6 @@ import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.core.env.Environment;
import org.springframework.stereotype.Component;
-import com.fasterxml.jackson.core.JsonParseException;
-import com.fasterxml.jackson.databind.JsonNode;
-import com.fasterxml.jackson.databind.ObjectMapper;
-
@Component
public class MsoCloudifyUtils extends MsoCommonUtils implements VduPlugin{
@@ -155,7 +156,6 @@ public class MsoCloudifyUtils extends MsoCommonUtils implements VduPlugin{
* @param inputs A map of key/value inputs
* @param pollForCompletion Indicator that polling should be handled in Java vs. in the client
* @param timeoutMinutes Timeout after which the "install" will be cancelled
- * @param environment An optional yaml-format string to specify environmental parameters
* @param backout Flag to delete deployment on install Failure - defaulted to True
* @return A DeploymentInfo object
* @throws MsoCloudifyException Thrown if the Cloudify API call returns an exception.
@@ -256,7 +256,12 @@ public class MsoCloudifyUtils extends MsoCommonUtils implements VduPlugin{
// Success!
// Create and return a DeploymentInfo structure. Include the Runtime outputs
DeploymentOutputs outputs = getDeploymentOutputs (cloudify, deploymentId);
- return new DeploymentInfo (deployment, outputs, installWorkflow);
+ return new DeploymentInfoBuilder()
+ .withId(deployment.getId())
+ .withDeploymentInputs(deployment.getInputs())
+ .withDeploymentOutputs(outputs.getOutputs())
+ .fromExecution(installWorkflow)
+ .build();
}
else {
// The workflow completed with errors. Must try to back it out.
@@ -538,7 +543,6 @@ public class MsoCloudifyUtils extends MsoCommonUtils implements VduPlugin{
*
* @param tenantId The Openstack ID of the tenant in which to query
* @param cloudSiteId The cloud identifier (may be a region) in which to query
- * @param stackName The name of the stack to query (may be simple or canonical)
* @return A StackInfo object
* @throws MsoOpenstackException Thrown if the Openstack API call returns an exception.
*/
@@ -556,7 +560,7 @@ public class MsoCloudifyUtils extends MsoCommonUtils implements VduPlugin{
Cloudify cloudify = getCloudifyClient (cloudSite.get());
// Build and send the Cloudify request
- Deployment deployment = null;
+ Deployment deployment = new Deployment();
DeploymentOutputs outputs = null;
try {
GetDeployment queryDeployment = cloudify.deployments().byId(deploymentId);
@@ -573,10 +577,18 @@ public class MsoCloudifyUtils extends MsoCommonUtils implements VduPlugin{
// If no executions, does this give NOT_FOUND or empty set?
if (executions.getItems().isEmpty()) {
- return new DeploymentInfo (deployment);
+ return new DeploymentInfoBuilder()
+ .withId(deployment.getId())
+ .withDeploymentInputs(deployment.getInputs())
+ .build();
}
else {
- return new DeploymentInfo (deployment, outputs, executions.getItems().get(0));
+ return new DeploymentInfoBuilder()
+ .withId(deployment.getId())
+ .withDeploymentInputs(deployment.getInputs())
+ .withDeploymentOutputs(outputs.getOutputs())
+ .fromExecution(executions.getItems().get(0))
+ .build();
}
}
catch (CloudifyConnectException ce) {
@@ -589,10 +601,14 @@ public class MsoCloudifyUtils extends MsoCommonUtils implements VduPlugin{
// Got a NOT FOUND error. React differently based on deployment vs. execution
if (deployment != null) {
// Got NOT_FOUND on the executions. Assume this is a valid "empty" set
- return new DeploymentInfo (deployment, outputs, null);
+ return new DeploymentInfoBuilder()
+ .withId(deployment.getId())
+ .withDeploymentInputs(deployment.getInputs())
+ .withDeploymentOutputs(outputs.getOutputs())
+ .build();
} else {
// Deployment not found. Default status of a DeploymentInfo object is NOTFOUND
- return new DeploymentInfo (deploymentId);
+ return new DeploymentInfoBuilder().withId(deploymentId).build();
}
}
throw new MsoCloudifyException (re.getStatus(), re.getMessage(), re.getLocalizedMessage(), re);
@@ -615,8 +631,6 @@ public class MsoCloudifyUtils extends MsoCommonUtils implements VduPlugin{
*
* @param tenantId The Openstack ID of the tenant in which to perform the delete
* @param cloudSiteId The cloud identifier (may be a region) from which to delete the stack.
- * @param stackName The name/id of the stack to delete. May be simple or canonical
- * @param pollForCompletion Indicator that polling should be handled in Java vs. in the client
* @return A StackInfo object
* @throws MsoOpenstackException Thrown if the Openstack API call returns an exception.
* @throws MsoCloudSiteNotFound
@@ -651,7 +665,10 @@ public class MsoCloudifyUtils extends MsoCommonUtils implements VduPlugin{
// Deployment doesn't exist. Return a "NOTFOUND" DeploymentInfo object
// TODO: Should return NULL?
LOGGER.debug("Deployment requested for deletion does not exist: " + deploymentId);
- return new DeploymentInfo (deploymentId, DeploymentStatus.NOTFOUND);
+ return new DeploymentInfoBuilder()
+ .withId(deploymentId)
+ .withStatus(DeploymentStatus.NOTFOUND)
+ .build();
} else {
// Convert the CloudifyResponseException to an MsoOpenstackException
LOGGER.debug("ERROR STATUS = " + e.getStatus() + ",\n" + e.getMessage() + "\n" + e.getLocalizedMessage());
@@ -741,7 +758,12 @@ public class MsoCloudifyUtils extends MsoCommonUtils implements VduPlugin{
}
// Return the deleted deployment info (with runtime outputs) along with the completed uninstall workflow status
- return new DeploymentInfo (deployment, outputs, uninstallWorkflow);
+ return new DeploymentInfoBuilder()
+ .withId(deployment.getId())
+ .withDeploymentInputs(deployment.getInputs())
+ .withDeploymentOutputs(outputs.getOutputs())
+ .fromExecution(uninstallWorkflow)
+ .build();
}
diff --git a/adapters/mso-adapter-utils/src/main/java/org/onap/so/openstack/utils/MsoHeatUtils.java b/adapters/mso-adapter-utils/src/main/java/org/onap/so/openstack/utils/MsoHeatUtils.java
index 15f84890b7..476bff3692 100644
--- a/adapters/mso-adapter-utils/src/main/java/org/onap/so/openstack/utils/MsoHeatUtils.java
+++ b/adapters/mso-adapter-utils/src/main/java/org/onap/so/openstack/utils/MsoHeatUtils.java
@@ -277,8 +277,7 @@ public class MsoHeatUtils extends MsoCommonUtils implements VduPlugin{
boolean backout) throws MsoException {
// Take out the multicloud inputs, if present.
- String[] directives = { "oof_directives", "sdnc_directives", "generic_vnf_id", "vf_module_id" };
- for (String key : directives) {
+ for (String key : MsoMulticloudUtils.MULTICLOUD_INPUTS) {
if (stackInputs.containsKey(key)) {
stackInputs.remove(key);
if (stackInputs.isEmpty()) {
diff --git a/adapters/mso-adapter-utils/src/main/java/org/onap/so/openstack/utils/MsoMulticloudParam.java b/adapters/mso-adapter-utils/src/main/java/org/onap/so/openstack/utils/MsoMulticloudParam.java
deleted file mode 100644
index 9b2475a1c4..0000000000
--- a/adapters/mso-adapter-utils/src/main/java/org/onap/so/openstack/utils/MsoMulticloudParam.java
+++ /dev/null
@@ -1,110 +0,0 @@
-/*-
- * ============LICENSE_START=======================================================
- * ONAP - SO
- * ================================================================================
- * Copyright (C) 2018 Intel Corp. All rights reserved.
- * ================================================================================
- * 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.openstack.utils;
-
-import com.fasterxml.jackson.annotation.JsonProperty;
-
-public class MsoMulticloudParam {
-
- @JsonProperty("generic-vnf-id")
- private String genericVnfId;
-
- @JsonProperty("vf-module-id")
- private String vfModuleId;
-
- @JsonProperty("oof_directives")
- private String oofDirectives;
-
- @JsonProperty("sdnc_directives")
- private String sdncDirectives;
-
- @JsonProperty("template_type")
- private String templateType;
-
- @JsonProperty("template_data")
- private String templateData;
-
- public void setGenericVnfId(String genericVnfId){
- this.genericVnfId = genericVnfId;
- }
-
- public String getGenericVnfId(){
- return this.genericVnfId;
- }
-
- public void setVfModuleId(String vfModuleId){
- this.vfModuleId = vfModuleId;
- }
-
- public String getVfModuleId(){
- return this.vfModuleId;
- }
-
- public void setOofDirectives(String oofDirectives){
- this.oofDirectives = oofDirectives;
- }
-
- public String getOofDirectives(){
- return this.oofDirectives;
- }
-
- public void setSdncDirectives(String sdncDirectives){
- this.sdncDirectives = sdncDirectives;
- }
-
- public String getSdncDirectives(){
- return this.sdncDirectives;
- }
-
- public void setTemplateType(String templateType){
- this.templateType = templateType;
- }
-
- public String TemplateType(){
- return this.templateType;
- }
-
- public void setTemplateData(String templateData){
- this.templateData = templateData;
- }
-
- public String getTemplateData(){
- return this.templateData;
- }
-
- @Override
- public String toString() {
- return String.format("MulticloudParam{"
- + "genericVnfId='%s',"
- + " vfModuleId='%s',"
- + " oofDirectives='%s',"
- + " sdncDirectives='%s',"
- + " templateType='%s',"
- + " templateData='%s'"
- + "}",
- genericVnfId,
- vfModuleId,
- oofDirectives,
- sdncDirectives,
- templateType,
- templateData);
- }
-}
diff --git a/adapters/mso-adapter-utils/src/main/java/org/onap/so/openstack/utils/MsoMulticloudUtils.java b/adapters/mso-adapter-utils/src/main/java/org/onap/so/openstack/utils/MsoMulticloudUtils.java
index 4ed35a4d28..306de05eea 100644
--- a/adapters/mso-adapter-utils/src/main/java/org/onap/so/openstack/utils/MsoMulticloudUtils.java
+++ b/adapters/mso-adapter-utils/src/main/java/org/onap/so/openstack/utils/MsoMulticloudUtils.java
@@ -21,13 +21,21 @@
package org.onap.so.openstack.utils;
import java.net.MalformedURLException;
+import java.util.ArrayList;
+import java.util.Arrays;
import java.util.HashMap;
+import java.util.List;
import java.util.Map;
+import java.util.Scanner;
import javax.ws.rs.core.UriBuilder;
import javax.ws.rs.core.UriBuilderException;
+import javax.ws.rs.core.Response.StatusType;
import javax.ws.rs.core.Response;
+import org.apache.http.HttpStatus;
+import org.onap.so.db.catalog.beans.CloudIdentity;
+import org.onap.so.utils.CryptoUtils;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.onap.so.adapters.vdu.CloudInfo;
@@ -48,24 +56,27 @@ import org.onap.so.openstack.exceptions.MsoOpenstackException;
import org.onap.so.openstack.mappers.StackInfoMapper;
import org.onap.so.client.HttpClient;
import org.onap.so.client.RestClient;
-import org.onap.so.cloud.CloudConfig;
import org.onap.so.db.catalog.beans.CloudSite;
import org.onap.so.utils.TargetEntity;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.core.env.Environment;
+import org.springframework.http.HttpEntity;
+import org.springframework.http.HttpHeaders;
+import org.springframework.http.MediaType;
import org.springframework.stereotype.Component;
+import com.fasterxml.jackson.databind.ObjectMapper;
import com.woorea.openstack.heat.model.CreateStackParam;
import com.woorea.openstack.heat.model.Stack;
@Component
public class MsoMulticloudUtils extends MsoHeatUtils implements VduPlugin{
- @Autowired
- protected CloudConfig cloudConfig;
-
- @Autowired
- private Environment env;
+ public static final String OOF_DIRECTIVES = "oof_directives";
+ public static final String SDNC_DIRECTIVES = "sdnc_directives";
+ public static final String GENERIC_VNF_ID = "generic_vnf_id";
+ public static final String VF_MODULE_ID = "vf_module_id";
+ public static final String TEMPLATE_TYPE = "template_type";
+ public static final List<String> MULTICLOUD_INPUTS =
+ Arrays.asList(OOF_DIRECTIVES, SDNC_DIRECTIVES, GENERIC_VNF_ID, VF_MODULE_ID, TEMPLATE_TYPE);
private static final String ONAP_IP = "ONAP_IP";
@@ -75,6 +86,8 @@ public class MsoMulticloudUtils extends MsoHeatUtils implements VduPlugin{
private static final Logger logger = LoggerFactory.getLogger(MsoMulticloudUtils.class);
+ private static final ObjectMapper JSON_MAPPER = new ObjectMapper();
+
/******************************************************************************
*
* Methods (and associated utilities) to implement the VduPlugin interface
@@ -135,59 +148,90 @@ public class MsoMulticloudUtils extends MsoHeatUtils implements VduPlugin{
Map <String, Object> heatFiles,
boolean backout) throws MsoException {
- // Get the directives, if present.
- String oofDirectives = null;
- String sdncDirectives = null;
- String genericVnfId = null;
- String vfModuleId = null;
+ logger.trace("Started MsoMulticloudUtils.createStack");
- String key = "oof_directives";
- if (!stackInputs.isEmpty() && stackInputs.containsKey(key)) {
- oofDirectives = (String) stackInputs.get(key);
- stackInputs.remove(key);
- }
- key = "sdnc_directives";
- if (!stackInputs.isEmpty() && stackInputs.containsKey(key)) {
- sdncDirectives = (String) stackInputs.get(key);
- stackInputs.remove(key);
- }
- key = "generic_vnf_id";
- if (!stackInputs.isEmpty() && stackInputs.containsKey(key)) {
- genericVnfId = (String) stackInputs.get(key);
- stackInputs.remove(key);
- }
- key = "vf_module_id";
- if (!stackInputs.isEmpty() && stackInputs.containsKey(key)) {
- vfModuleId = (String) stackInputs.get(key);
- stackInputs.remove(key);
+ // Get the directives, if present.
+ String oofDirectives = "";
+ String sdncDirectives = "";
+ String genericVnfId = "";
+ String vfModuleId = "";
+ String templateType = "";
+
+ for (String key: MULTICLOUD_INPUTS) {
+ if (!stackInputs.isEmpty() && stackInputs.containsKey(key)) {
+ if ( key == OOF_DIRECTIVES) {oofDirectives = (String) stackInputs.get(key);}
+ if ( key == SDNC_DIRECTIVES) {sdncDirectives = (String) stackInputs.get(key);}
+ if ( key == GENERIC_VNF_ID) {genericVnfId = (String) stackInputs.get(key);}
+ if ( key == VF_MODULE_ID) {vfModuleId = (String) stackInputs.get(key);}
+ if ( key == TEMPLATE_TYPE) {templateType = (String) stackInputs.get(key);}
+ if (logger.isDebugEnabled()) {
+ logger.debug(String.format("Found %s: %s", key, stackInputs.get(key)));
+ }
+ stackInputs.remove(key);
+ }
}
// create the multicloud payload
CreateStackParam stack = createStackParam(stackName, heatTemplate, stackInputs, timeoutMinutes, environment, files, heatFiles);
- MsoMulticloudParam multicloudParam = new MsoMulticloudParam();
- multicloudParam.setGenericVnfId(genericVnfId);
- multicloudParam.setVfModuleId(vfModuleId);
- multicloudParam.setOofDirectives(oofDirectives);
- multicloudParam.setSdncDirectives(sdncDirectives);
- multicloudParam.setTemplateType("heat");
- multicloudParam.setTemplateData(stack.toString());
+ MulticloudRequest multicloudRequest= new MulticloudRequest();
+ HttpEntity<MulticloudRequest> request = null;
+ try {
+ multicloudRequest.setGenericVnfId(genericVnfId);
+ multicloudRequest.setVfModuleId(vfModuleId);
+ multicloudRequest.setOofDirectives(oofDirectives);
+ multicloudRequest.setSdncDirectives(sdncDirectives);
+ multicloudRequest.setTemplateType(templateType);
+ if (logger.isDebugEnabled()) {
+ logger.debug(String.format("Stack Template Data is: %s", stack.toString().substring(16)));
+ }
+ multicloudRequest.setTemplateData(JSON_MAPPER.writeValueAsString(stack));
+ if (logger.isDebugEnabled()) {
+ logger.debug(String.format("Multicloud Request is: %s", multicloudRequest.toString()));
+ }
+ CloudSite cloudSite = cloudConfig.getCloudSite(cloudSiteId).orElseThrow(() ->
+ new MsoCloudSiteNotFound(cloudSiteId));
+ CloudIdentity cloudIdentity = cloudSite.getIdentityService();
+ HttpHeaders headers = new HttpHeaders();
+ headers.set ("X-Auth-User", cloudIdentity.getMsoId ());
+ headers.set ("X-Auth-Key", CryptoUtils.decryptCloudConfigPassword(cloudIdentity.getMsoPass ()));
+ headers.set(HttpHeaders.ACCEPT, MediaType.APPLICATION_JSON.toString());
+ headers.set(HttpHeaders.CONTENT_TYPE, MediaType.APPLICATION_JSON.toString());
+
+ if (logger.isDebugEnabled()) {
+ logger.debug(String.format("Multicloud Request Headers: %s", headers.toString()));
+ }
+ request = new HttpEntity<>(multicloudRequest, headers);
+ } catch (Exception e) {
+ logger.debug("ERROR making multicloud JSON body ", e);
+ }
String multicloudEndpoint = getMulticloudEndpoint(cloudSiteId, null);
+ if (logger.isDebugEnabled()) {
+ logger.debug(String.format("Multicloud Endpoint is: %s", multicloudEndpoint));
+ }
RestClient multicloudClient = getMulticloudClient(multicloudEndpoint);
- if (multicloudClient != null) {
- Response res = multicloudClient.post(multicloudParam);
- logger.debug("Multicloud Post response is: " + res);
- }
+ Response response = multicloudClient.post(request);
- Stack responseStack = new Stack();
- responseStack.setStackStatus(HeatStatus.CREATED.toString());
+ StackInfo responseStackInfo = new StackInfo();
+ responseStackInfo.setName(stackName);
+ responseStackInfo.setStatus(mapResponseToHeatStatus(response));
- return new StackInfoMapper(responseStack).map();
+ MulticloudCreateResponse multicloudResponseBody = null;
+ if (response.getStatus() == Response.Status.CREATED.getStatusCode() && response.hasEntity()) {
+ multicloudResponseBody = getCreateBody((java.io.InputStream)response.getEntity());
+ responseStackInfo.setCanonicalName(multicloudResponseBody.getWorkloadId());
+ if (logger.isDebugEnabled()) {
+ logger.debug("Multicloud Create Response Body: " + multicloudResponseBody);
+ }
+ }
+
+ return responseStackInfo;
}
+ @Override
public Map<String, Object> queryStackForOutputs(String cloudSiteId,
String tenantId, String stackName) throws MsoException {
logger.debug("MsoHeatUtils.queryStackForOutputs)");
@@ -211,64 +255,129 @@ public class MsoMulticloudUtils extends MsoHeatUtils implements VduPlugin{
*/
@Override
public StackInfo queryStack (String cloudSiteId, String tenantId, String stackName) throws MsoException {
- logger.debug ("Query multicloud HEAT stack: " + stackName + " in tenant " + tenantId);
+ if (logger.isDebugEnabled()) {
+ logger.debug (String.format("Query multicloud HEAT stack: %s in tenant %s", stackName, tenantId));
+ }
- String multicloudEndpoint = getMulticloudEndpoint(cloudSiteId, stackName);
+ StackInfo returnInfo = new StackInfo();
+ returnInfo.setName(stackName);
+ String multicloudEndpoint = getMulticloudEndpoint(cloudSiteId, stackName);
RestClient multicloudClient = getMulticloudClient(multicloudEndpoint);
if (multicloudClient != null) {
Response response = multicloudClient.get();
- logger.debug("Multicloud Get response is: " + response);
+ if (logger.isDebugEnabled()) {
+ logger.debug (String.format("Mulicloud GET Response: %s", response.toString()));
+ }
+
+ returnInfo.setStatus(mapResponseToHeatStatus(response));
- return new StackInfo (stackName, HeatStatus.CREATED);
+ MulticloudQueryResponse multicloudQueryBody = null;
+ if (response.getStatus() == Response.Status.OK.getStatusCode() && response.hasEntity()) {
+ multicloudQueryBody = getQueryBody((java.io.InputStream)response.getEntity());
+ returnInfo.setCanonicalName(multicloudQueryBody.getWorkloadId());
+ if (logger.isDebugEnabled()) {
+ logger.debug("Multicloud Create Response Body: " + multicloudQueryBody.toString());
+ }
+ }
}
- return new StackInfo (stackName, HeatStatus.NOTFOUND);
+ return returnInfo;
+
}
public StackInfo deleteStack (String cloudSiteId, String tenantId, String stackName) throws MsoException {
- logger.debug ("Delete multicloud HEAT stack: " + stackName + " in tenant " + tenantId);
+ if (logger.isDebugEnabled()) {
+ logger.debug (String.format("Delete multicloud HEAT stack: %s in tenant %s", stackName, tenantId));
+ }
+ StackInfo returnInfo = new StackInfo();
+ returnInfo.setName(stackName);
+ Response response = null;
String multicloudEndpoint = getMulticloudEndpoint(cloudSiteId, stackName);
-
RestClient multicloudClient = getMulticloudClient(multicloudEndpoint);
if (multicloudClient != null) {
- Response response = multicloudClient.delete();
- logger.debug("Multicloud Get response is: " + response);
-
- return new StackInfo (stackName, HeatStatus.DELETING);
+ response = multicloudClient.delete();
+ if (logger.isDebugEnabled()) {
+ logger.debug(String.format("Multicloud Delete response is: %s", response.getEntity().toString()));
+ }
}
-
- return new StackInfo (stackName, HeatStatus.FAILED);
+ returnInfo.setStatus(mapResponseToHeatStatus(response));
+ return returnInfo;
}
// ---------------------------------------------------------------
// PRIVATE FUNCTIONS FOR USE WITHIN THIS CLASS
+ private HeatStatus mapResponseToHeatStatus(Response response) {
+ if (response.getStatusInfo().getStatusCode() == Response.Status.OK.getStatusCode()) {
+ return HeatStatus.CREATED;
+ } else if (response.getStatusInfo().getStatusCode() == Response.Status.CREATED.getStatusCode()) {
+ return HeatStatus.CREATED;
+ } else if (response.getStatusInfo().getStatusCode() == Response.Status.NO_CONTENT.getStatusCode()) {
+ return HeatStatus.CREATED;
+ } else if (response.getStatusInfo().getStatusCode() == Response.Status.BAD_REQUEST.getStatusCode()) {
+ return HeatStatus.FAILED;
+ } else if (response.getStatusInfo().getStatusCode() == Response.Status.UNAUTHORIZED.getStatusCode()) {
+ return HeatStatus.FAILED;
+ } else if (response.getStatusInfo().getStatusCode() == Response.Status.NOT_FOUND.getStatusCode()) {
+ return HeatStatus.NOTFOUND;
+ } else if (response.getStatusInfo().getStatusCode() == Response.Status.INTERNAL_SERVER_ERROR.getStatusCode()) {
+ return HeatStatus.FAILED;
+ } else {
+ return HeatStatus.UNKNOWN;
+ }
+ }
+ private MulticloudCreateResponse getCreateBody(java.io.InputStream in) {
+ Scanner scanner = new Scanner(in);
+ scanner.useDelimiter("\\Z");
+ String body = "";
+ if (scanner.hasNext()) {
+ body = scanner.next();
+ }
+ scanner.close();
- private String getMsbHost() {
- // MSB_IP will be set as ONAP_IP environment parameter in install flow.
- String msbIp = System.getenv().get(ONAP_IP);
+ try {
+ return new ObjectMapper().readerFor(MulticloudCreateResponse.class).readValue(body);
+ } catch (Exception e) {
+ logger.debug("Exception retrieving multicloud vfModule POST response body " + e);
+ }
+ return null;
+ }
- // if ONAP IP is not set. get it from config file.
- if (null == msbIp || msbIp.isEmpty()) {
- msbIp = env.getProperty("mso.msb-ip", DEFAULT_MSB_IP);
+ private MulticloudQueryResponse getQueryBody(java.io.InputStream in) {
+ Scanner scanner = new Scanner(in);
+ scanner.useDelimiter("\\Z");
+ String body = "";
+ if (scanner.hasNext()) {
+ body = scanner.next();
}
- Integer msbPort = env.getProperty("mso.msb-port", Integer.class, DEFAULT_MSB_PORT);
+ scanner.close();
- return UriBuilder.fromPath("").host(msbIp).port(msbPort).scheme("http").build().toString();
+ try {
+ return new ObjectMapper().readerFor(MulticloudQueryResponse.class).readValue(body);
+ } catch (Exception e) {
+ logger.debug("Exception retrieving multicloud workload query response body " + e);
+ }
+ return null;
}
private String getMulticloudEndpoint(String cloudSiteId, String workloadId) throws MsoCloudSiteNotFound {
CloudSite cloudSite = cloudConfig.getCloudSite(cloudSiteId).orElseThrow(() -> new MsoCloudSiteNotFound(cloudSiteId));
- String endpoint = getMsbHost() + cloudSite.getIdentityService().getIdentityUrl();
+ String endpoint = cloudSite.getIdentityService().getIdentityUrl();
if (workloadId != null) {
- return endpoint + workloadId;
+ if (logger.isDebugEnabled()) {
+ logger.debug(String.format("Multicloud Endpoint is: %s/%s", endpoint, workloadId));
+ }
+ return String.format("%s/%s", endpoint, workloadId);
} else {
+ if (logger.isDebugEnabled()) {
+ logger.debug(String.format("Multicloud Endpoint is: %s", endpoint));
+ }
return endpoint;
}
}
@@ -277,13 +386,13 @@ public class MsoMulticloudUtils extends MsoHeatUtils implements VduPlugin{
RestClient client = null;
try {
client= new HttpClient(UriBuilder.fromUri(endpoint).build().toURL(),
- "application/json", TargetEntity.OPENSTACK_ADAPTER);
+ MediaType.APPLICATION_JSON.toString(), TargetEntity.MULTICLOUD);
} catch (MalformedURLException e) {
- logger.debug("Encountered malformed URL error getting multicloud rest client " + e.getMessage());
+ logger.debug(String.format("Encountered malformed URL error getting multicloud rest client %s", e.getMessage()));
} catch (IllegalArgumentException e) {
- logger.debug("Encountered illegal argument getting multicloud rest client " + e.getMessage());
+ logger.debug(String.format("Encountered illegal argument getting multicloud rest client %s",e.getMessage()));
} catch (UriBuilderException e) {
- logger.debug("Encountered URI builder error getting multicloud rest client " + e.getMessage());
+ logger.debug(String.format("Encountered URI builder error getting multicloud rest client %s", e.getMessage()));
}
return client;
}
@@ -382,7 +491,7 @@ public class MsoMulticloudUtils extends MsoHeatUtils implements VduPlugin{
try {
// Delete the Multicloud stack
- StackInfo stackInfo = deleteStack (tenantId, cloudSiteId, instanceId, true);
+ StackInfo stackInfo = deleteStack (tenantId, cloudSiteId, instanceId);
// Populate a VduInstance based on the deleted Cloudify Deployment object
VduInstance vduInstance = stackInfoToVduInstance(stackInfo);
@@ -425,6 +534,9 @@ public class MsoMulticloudUtils extends MsoHeatUtils implements VduPlugin{
{
VduInstance vduInstance = new VduInstance();
+ if (logger.isDebugEnabled()) {
+ logger.debug(String.format("StackInfo to convert: %s", stackInfo.getParameters().toString()));
+ }
// The full canonical name as the instance UUID
vduInstance.setVduInstanceId(stackInfo.getCanonicalName());
vduInstance.setVduInstanceName(stackInfo.getName());
@@ -447,6 +559,12 @@ public class MsoMulticloudUtils extends MsoHeatUtils implements VduPlugin{
// There are lots of HeatStatus values, so this is a bit long...
HeatStatus heatStatus = stackInfo.getStatus();
String statusMessage = stackInfo.getStatusMessage();
+ logger.debug("HeatStatus = " + heatStatus + " msg = " + statusMessage);
+
+ if (logger.isDebugEnabled()) {
+ logger.debug(String.format("Stack Status: %s", heatStatus.toString()));
+ logger.debug(String.format("Stack Status Message: %s", statusMessage));
+ }
if (heatStatus == HeatStatus.INIT || heatStatus == HeatStatus.BUILDING) {
vduStatus.setState(VduStateType.INSTANTIATING);
diff --git a/adapters/mso-adapter-utils/src/main/java/org/onap/so/openstack/utils/MulticloudCreateHeatResponse.java b/adapters/mso-adapter-utils/src/main/java/org/onap/so/openstack/utils/MulticloudCreateHeatResponse.java
new file mode 100644
index 0000000000..543ad07d52
--- /dev/null
+++ b/adapters/mso-adapter-utils/src/main/java/org/onap/so/openstack/utils/MulticloudCreateHeatResponse.java
@@ -0,0 +1,77 @@
+/*-
+ * ============LICENSE_START=======================================================
+ * ONAP - SO
+ * ================================================================================
+ * Copyright (C) 2018 Intel Corp. All rights reserved.
+ * ================================================================================
+ * 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.openstack.utils;
+
+import java.io.Serializable;
+import java.util.List;
+
+import com.fasterxml.jackson.annotation.JsonCreator;
+import com.fasterxml.jackson.annotation.JsonInclude;
+import com.fasterxml.jackson.annotation.JsonProperty;
+import com.fasterxml.jackson.annotation.JsonPropertyOrder;
+import org.apache.commons.lang.builder.ToStringBuilder;
+
+@JsonInclude(JsonInclude.Include.NON_NULL)
+@JsonPropertyOrder({
+ "id",
+ "links"
+})
+public class MulticloudCreateHeatResponse implements Serializable {
+ private final static long serialVersionUID = -5215028275577848311L;
+
+ @JsonProperty("id")
+ private String id;
+ @JsonProperty("links")
+ private List<MulticloudCreateLinkResponse> links;
+
+ @JsonCreator
+ public MulticloudCreateHeatResponse(
+ @JsonProperty("id") String id,
+ @JsonProperty("links") List<MulticloudCreateLinkResponse> links) {
+ this.id = id;
+ this.links = links;
+ }
+
+ @JsonProperty("id")
+ public String getId() {
+ return id;
+ }
+
+ @JsonProperty("id")
+ public void setId(String id) {
+ this.id = id;
+ }
+
+ @JsonProperty("links")
+ public List<MulticloudCreateLinkResponse> getLinks() {
+ return links;
+ }
+
+ @JsonProperty("links")
+ public void setLinks(List<MulticloudCreateLinkResponse> links) {
+ this.links = links;
+ }
+
+ @Override
+ public String toString() {
+ return new ToStringBuilder(this).append("id", id).append("links", links).toString();
+ }
+}
diff --git a/adapters/mso-adapter-utils/src/main/java/org/onap/so/openstack/utils/MulticloudCreateLinkResponse.java b/adapters/mso-adapter-utils/src/main/java/org/onap/so/openstack/utils/MulticloudCreateLinkResponse.java
new file mode 100644
index 0000000000..b609ac96c4
--- /dev/null
+++ b/adapters/mso-adapter-utils/src/main/java/org/onap/so/openstack/utils/MulticloudCreateLinkResponse.java
@@ -0,0 +1,76 @@
+/*-
+ * ============LICENSE_START=======================================================
+ * ONAP - SO
+ * ================================================================================
+ * Copyright (C) 2018 Intel Corp. All rights reserved.
+ * ================================================================================
+ * 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.openstack.utils;
+
+import java.io.Serializable;
+import com.fasterxml.jackson.annotation.JsonCreator;
+import com.fasterxml.jackson.annotation.JsonInclude;
+import com.fasterxml.jackson.annotation.JsonProperty;
+import com.fasterxml.jackson.annotation.JsonPropertyOrder;
+import org.apache.commons.lang.builder.ToStringBuilder;
+
+
+@JsonInclude(JsonInclude.Include.NON_NULL)
+@JsonPropertyOrder({
+ "href",
+ "rel"
+})
+public class MulticloudCreateLinkResponse implements Serializable {
+ private final static long serialVersionUID = -5215028275577848311L;
+
+ @JsonProperty("href")
+ private String href;
+ @JsonProperty("rel")
+ private String rel;
+
+ @JsonCreator
+ public MulticloudCreateLinkResponse(
+ @JsonProperty("href") String href,
+ @JsonProperty("rel") String rel) {
+ this.href = href;
+ this.rel = rel;
+ }
+
+ @JsonProperty("href")
+ public String getHref() {
+ return href;
+ }
+
+ @JsonProperty("href")
+ public void setHref(String href) {
+ this.href = href;
+ }
+
+ @JsonProperty("rel")
+ public String getRel() {
+ return rel;
+ }
+
+ @JsonProperty("rel")
+ public void setRel(String rel) {
+ this.rel = rel;
+ }
+
+ @Override
+ public String toString() {
+ return new ToStringBuilder(this).append("href", href).append("rel", rel).toString();
+ }
+}
diff --git a/adapters/mso-adapter-utils/src/main/java/org/onap/so/openstack/utils/MulticloudCreateResponse.java b/adapters/mso-adapter-utils/src/main/java/org/onap/so/openstack/utils/MulticloudCreateResponse.java
new file mode 100644
index 0000000000..fafd4a074d
--- /dev/null
+++ b/adapters/mso-adapter-utils/src/main/java/org/onap/so/openstack/utils/MulticloudCreateResponse.java
@@ -0,0 +1,90 @@
+/*-
+ * ============LICENSE_START=======================================================
+ * ONAP - SO
+ * ================================================================================
+ * Copyright (C) 2018 Intel Corp. All rights reserved.
+ * ================================================================================
+ * 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.openstack.utils;
+
+import java.io.Serializable;
+import com.fasterxml.jackson.annotation.JsonCreator;
+import com.fasterxml.jackson.annotation.JsonInclude;
+import com.fasterxml.jackson.annotation.JsonProperty;
+import com.fasterxml.jackson.annotation.JsonPropertyOrder;
+import org.apache.commons.lang.builder.ToStringBuilder;
+
+@JsonInclude(JsonInclude.Include.NON_NULL)
+@JsonPropertyOrder({
+ "template_type",
+ "workload_id",
+ "template_response"
+})
+public class MulticloudCreateResponse implements Serializable {
+ private final static long serialVersionUID = -5215028275577848311L;
+
+ @JsonProperty("template_type")
+ private String templateType;
+ @JsonProperty("workload_id")
+ private String workloadId;
+ @JsonProperty("template_response")
+ private MulticloudCreateStackResponse templateResponse;
+
+ @JsonCreator
+ public MulticloudCreateResponse(
+ @JsonProperty("template_type") String templateType,
+ @JsonProperty("workload_id") String workloadId,
+ @JsonProperty("template_response") MulticloudCreateStackResponse templateResponse) {
+ this.templateType = templateType;
+ this.workloadId = workloadId;
+ this.templateResponse = templateResponse;
+ }
+
+ @JsonProperty("template_type")
+ public String getTemplateType() {
+ return templateType;
+ }
+
+ @JsonProperty("template_type")
+ public void setTemplateType(String templateType) {
+ this.templateType = templateType;
+ }
+
+ @JsonProperty("workload_id")
+ public String getWorkloadId() {
+ return workloadId;
+ }
+
+ @JsonProperty("workload_id")
+ public void setWorkloadId(String workloadId) {
+ this.workloadId = workloadId;
+ }
+
+ @JsonProperty("template_response")
+ public void setTemplateResponse(MulticloudCreateStackResponse templateResponse) {
+ this.templateResponse = templateResponse;
+ }
+
+ @JsonProperty("template_response")
+ public MulticloudCreateStackResponse getTemplateResponse() {
+ return templateResponse;
+ }
+
+ @Override
+ public String toString() {
+ return new ToStringBuilder(this).append("templateType", templateType).append("workloadId", workloadId).append("templateResponse", templateResponse).toString();
+ }
+}
diff --git a/adapters/mso-adapter-utils/src/main/java/org/onap/so/openstack/utils/MulticloudCreateStackResponse.java b/adapters/mso-adapter-utils/src/main/java/org/onap/so/openstack/utils/MulticloudCreateStackResponse.java
new file mode 100644
index 0000000000..f1d44a8814
--- /dev/null
+++ b/adapters/mso-adapter-utils/src/main/java/org/onap/so/openstack/utils/MulticloudCreateStackResponse.java
@@ -0,0 +1,60 @@
+/*-
+ * ============LICENSE_START=======================================================
+ * ONAP - SO
+ * ================================================================================
+ * Copyright (C) 2018 Intel Corp. All rights reserved.
+ * ================================================================================
+ * 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.openstack.utils;
+
+import java.io.Serializable;
+import com.fasterxml.jackson.annotation.JsonCreator;
+import com.fasterxml.jackson.annotation.JsonInclude;
+import com.fasterxml.jackson.annotation.JsonProperty;
+import com.fasterxml.jackson.annotation.JsonPropertyOrder;
+import org.apache.commons.lang.builder.ToStringBuilder;
+
+@JsonInclude(JsonInclude.Include.NON_NULL)
+@JsonPropertyOrder({
+ "stack"
+})
+public class MulticloudCreateStackResponse implements Serializable {
+ private final static long serialVersionUID = -5215028275577848311L;
+
+ @JsonProperty("stack")
+ private MulticloudCreateHeatResponse stack;
+
+ @JsonCreator
+ public MulticloudCreateStackResponse(
+ @JsonProperty("stack") MulticloudCreateHeatResponse stack) {
+ this.stack = stack;
+ }
+
+ @JsonProperty("stack")
+ public MulticloudCreateHeatResponse getStack() {
+ return stack;
+ }
+
+ @JsonProperty("stack")
+ public void setStack(MulticloudCreateHeatResponse stack) {
+ this.stack = stack;
+ }
+
+ @Override
+ public String toString() {
+ return new ToStringBuilder(this).append("stack", stack).toString();
+ }
+}
diff --git a/adapters/mso-adapter-utils/src/main/java/org/onap/so/openstack/utils/MulticloudQueryResponse.java b/adapters/mso-adapter-utils/src/main/java/org/onap/so/openstack/utils/MulticloudQueryResponse.java
new file mode 100644
index 0000000000..b22e9dc03e
--- /dev/null
+++ b/adapters/mso-adapter-utils/src/main/java/org/onap/so/openstack/utils/MulticloudQueryResponse.java
@@ -0,0 +1,90 @@
+/*-
+ * ============LICENSE_START=======================================================
+ * ONAP - SO
+ * ================================================================================
+ * Copyright (C) 2018 Intel Corp. All rights reserved.
+ * ================================================================================
+ * 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.openstack.utils;
+
+import java.io.Serializable;
+import com.fasterxml.jackson.annotation.JsonCreator;
+import com.fasterxml.jackson.annotation.JsonInclude;
+import com.fasterxml.jackson.annotation.JsonProperty;
+import com.fasterxml.jackson.annotation.JsonPropertyOrder;
+import org.apache.commons.lang.builder.ToStringBuilder;
+
+@JsonInclude(JsonInclude.Include.NON_NULL)
+@JsonPropertyOrder({
+ "template_type",
+ "workload_id",
+ "workload_status"
+})
+public class MulticloudQueryResponse implements Serializable {
+ private final static long serialVersionUID = -5215028275577848311L;
+
+ @JsonProperty("template_type")
+ private String templateType;
+ @JsonProperty("workload_id")
+ private String workloadId;
+ @JsonProperty("workload_status")
+ private String workloadStatus;
+
+ @JsonCreator
+ public MulticloudQueryResponse(
+ @JsonProperty("template_type") String templateType,
+ @JsonProperty("workload_id") String workloadId,
+ @JsonProperty("workload_status") String workloadStatus) {
+ this.templateType = templateType;
+ this.workloadId = workloadId;
+ this.workloadStatus = workloadStatus;
+ }
+
+ @JsonProperty("template_type")
+ public String getTemplateType() {
+ return templateType;
+ }
+
+ @JsonProperty("template_type")
+ public void setTemplateType(String templateType) {
+ this.templateType = templateType;
+ }
+
+ @JsonProperty("workload_id")
+ public String getWorkloadId() {
+ return workloadId;
+ }
+
+ @JsonProperty("workload_id")
+ public void setWorkloadId(String workloadId) {
+ this.workloadId = workloadId;
+ }
+
+ @JsonProperty("workload_status")
+ public String getWorkloadStatus() {
+ return workloadStatus;
+ }
+
+ @JsonProperty("workload_status")
+ public void setWorkloadStatus(String workloadStatus) {
+ this.workloadStatus = workloadStatus;
+ }
+
+ @Override
+ public String toString() {
+ return new ToStringBuilder(this).append("templateType", templateType).append("workloadId", workloadId).append("workloadStatus", workloadStatus).toString();
+ }
+}
diff --git a/adapters/mso-adapter-utils/src/main/java/org/onap/so/openstack/utils/MulticloudRequest.java b/adapters/mso-adapter-utils/src/main/java/org/onap/so/openstack/utils/MulticloudRequest.java
new file mode 100644
index 0000000000..fefc0951f6
--- /dev/null
+++ b/adapters/mso-adapter-utils/src/main/java/org/onap/so/openstack/utils/MulticloudRequest.java
@@ -0,0 +1,120 @@
+/*-
+ * ============LICENSE_START=======================================================
+ * ONAP - SO
+ * ================================================================================
+ * Copyright (C) 2018 Intel Corp. All rights reserved.
+ * ================================================================================
+ * 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.openstack.utils;
+
+import java.io.Serializable;
+import com.fasterxml.jackson.annotation.JsonInclude;
+import com.fasterxml.jackson.annotation.JsonProperty;
+import com.fasterxml.jackson.annotation.JsonPropertyOrder;
+import org.apache.commons.lang.builder.ToStringBuilder;
+
+@JsonInclude(JsonInclude.Include.NON_NULL)
+@JsonPropertyOrder({
+ "generic-vnf-id",
+ "vf-module-id",
+ "oof_directives",
+ "sdnc_directives",
+ "template_type",
+ "template_data"
+})
+public class MulticloudRequest implements Serializable {
+ private final static long serialVersionUID = -5215028275577848311L;
+
+ @JsonProperty("generic-vnf-id")
+ private String genericVnfId;
+ @JsonProperty("vf-module-id")
+ private String vfModuleId;
+ @JsonProperty("oof_directives")
+ private String oofDirectives;
+ @JsonProperty("sdnc_directives")
+ private String sdncDirectives;
+ @JsonProperty("template_type")
+ private String templateType;
+ @JsonProperty("template_data")
+ private String templateData;
+
+
+ @JsonProperty("generic-vnf-id")
+ public String getGenericVnfId() {
+ return genericVnfId;
+ }
+
+ @JsonProperty("generic-vnf-id")
+ public void setGenericVnfId(String genericVnfId) {
+ this.genericVnfId = genericVnfId;
+ }
+
+ @JsonProperty("vf-module-id")
+ public String getVfModuleId() {
+ return vfModuleId;
+ }
+
+ @JsonProperty("vf-module-id")
+ public void setVfModuleId(String vfModuleId) {
+ this.vfModuleId = vfModuleId;
+ }
+
+ @JsonProperty("oof_directives")
+ public String getOofDirectives() {
+ return oofDirectives;
+ }
+
+ @JsonProperty("oof_directives")
+ public void setOofDirectives(String oofDirectives) {
+ this.oofDirectives = oofDirectives;
+ }
+
+ @JsonProperty("sdnc_directives")
+ public String getSdncDirectives() {
+ return sdncDirectives;
+ }
+
+ @JsonProperty("sdnc_directives")
+ public void setSdncDirectives(String sdncDirectives) {
+ this.sdncDirectives = sdncDirectives;
+ }
+
+ @JsonProperty("template_type")
+ public String getTemplateType() {
+ return templateType;
+ }
+
+ @JsonProperty("template_type")
+ public void setTemplateType(String templateType) {
+ this.templateType = templateType;
+ }
+
+ @JsonProperty("template_data")
+ public String getTemplateData() {
+ return templateData;
+ }
+
+ @JsonProperty("template_data")
+ public void setTemplateData(String templateData) {
+ this.templateData = templateData;
+ }
+
+ @Override
+ public String toString() {
+ return new ToStringBuilder(this).append("genericVnfId", genericVnfId).append("vfModuleId", vfModuleId).append("oofDirectives", oofDirectives).append("sdncDirectives", sdncDirectives).append("templateType", templateType).append("templateData", templateData).toString();
+ }
+
+}
diff --git a/adapters/mso-adapter-utils/src/test/java/org/onap/so/cloudify/beans/DeploymentInfoBuilderTest.java b/adapters/mso-adapter-utils/src/test/java/org/onap/so/cloudify/beans/DeploymentInfoBuilderTest.java
new file mode 100644
index 0000000000..8f172b79ca
--- /dev/null
+++ b/adapters/mso-adapter-utils/src/test/java/org/onap/so/cloudify/beans/DeploymentInfoBuilderTest.java
@@ -0,0 +1,168 @@
+/*
+ * ============LICENSE_START=======================================================
+ * ONAP : SO
+ * ================================================================================
+ * Copyright (C) 2018 Nokia.
+ * =============================================================================
+ * 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.cloudify.beans;
+
+import static org.assertj.core.api.Assertions.assertThat;
+
+import com.google.common.collect.ImmutableMap;
+import org.junit.Test;
+import org.onap.so.cloudify.v3.model.Execution;
+
+public class DeploymentInfoBuilderTest {
+
+ private static final String ERROR_MESSAGE = "something went wrong";
+ private static final String INSTALL_WORKFLOW_ID = "install";
+ private static final String UNINSTALL_WORKFLOW_ID = "uninstall";
+
+ @Test
+ public void shouldConstructDeploymentInfo_withBasicValues() {
+ DeploymentInfo deploymentInfo = new DeploymentInfoBuilder()
+ .withId("id")
+ .withStatus(DeploymentStatus.CREATED)
+ .withDeploymentOutputs(ImmutableMap.of())
+ .withDeploymentInputs(ImmutableMap.of())
+ .withActionStatus("started")
+ .withLastAction(INSTALL_WORKFLOW_ID)
+ .withErrorMessage(ERROR_MESSAGE)
+ .build();
+
+ assertThat(deploymentInfo.getId()).isEqualTo("id");
+ assertThat(deploymentInfo.getStatus()).isEqualTo(DeploymentStatus.CREATED);
+ assertThat(deploymentInfo.getOutputs()).isEqualTo(ImmutableMap.of());
+ assertThat(deploymentInfo.getInputs()).isEqualTo(ImmutableMap.of());
+ assertThat(deploymentInfo.getActionStatus()).isEqualTo("started");
+ assertThat(deploymentInfo.getLastAction()).isEqualTo(INSTALL_WORKFLOW_ID);
+ assertThat(deploymentInfo.getErrorMessage()).isEqualTo(ERROR_MESSAGE);
+ }
+
+ @Test
+ public void shouldConstructDeploymentInfo_withCreateDeploymentStatus_fromNullExecution() {
+ DeploymentInfo deploymentInfo = new DeploymentInfoBuilder()
+ .fromExecution(null)
+ .build();
+
+ assertThat(deploymentInfo.getStatus()).isEqualTo(DeploymentStatus.CREATED);
+ }
+
+ @Test
+ public void shouldConstructDeploymentInfo_withInstalledDeploymentStatus_fromTerminatedExecution() {
+ String workflowIdLastAction = INSTALL_WORKFLOW_ID;
+ String status = "terminated";
+ DeploymentStatus expectedDeploymentStatus = DeploymentStatus.INSTALLED;
+ verifyDeploymentInfoConstruction(workflowIdLastAction, status, expectedDeploymentStatus);
+ }
+
+ @Test
+ public void shouldConstructDeploymentInfo_withFailedDeploymentStatus_fromFailedInstallExecution() {
+ String workflowIdLastAction = INSTALL_WORKFLOW_ID;
+ String status = "failed";
+ DeploymentStatus expectedDeploymentStatus = DeploymentStatus.FAILED;
+ verifyDeploymentInfoConstruction(workflowIdLastAction, status, expectedDeploymentStatus);
+ }
+
+ @Test
+ public void shouldConstructDeploymentInfo_withInstallingDeploymentStatus_fromStartedExecution() {
+ String workflowIdLastAction = INSTALL_WORKFLOW_ID;
+ String status = "started";
+ DeploymentStatus expectedDeploymentStatus = DeploymentStatus.INSTALLING;
+ verifyDeploymentInfoConstruction(workflowIdLastAction, status, expectedDeploymentStatus);
+ }
+
+ @Test
+ public void shouldConstructDeploymentInfo_withInstallingDeploymentStatus_fromPendingExecution() {
+ String workflowIdLastAction = INSTALL_WORKFLOW_ID;
+ String status = "pending";
+ DeploymentStatus expectedDeploymentStatus = DeploymentStatus.INSTALLING;
+ verifyDeploymentInfoConstruction(workflowIdLastAction, status, expectedDeploymentStatus);
+ }
+
+ @Test
+ public void shouldConstructDeploymentInfo_withUnknownDeploymentStatus_fromUnmappableExecution() {
+ String workflowIdLastAction = INSTALL_WORKFLOW_ID;
+ String status = "strangeStatus";
+ DeploymentStatus expectedDeploymentStatus = DeploymentStatus.UNKNOWN;
+ verifyDeploymentInfoConstruction(workflowIdLastAction, status, expectedDeploymentStatus);
+ }
+
+ @Test
+ public void shouldConstructDeploymentInfo_withCreatedDeploymentStatus_fromTerminatedExecution() {
+ String workflowIdLastAction = UNINSTALL_WORKFLOW_ID;
+ String status = "terminated";
+ DeploymentStatus expectedDeploymentStatus = DeploymentStatus.CREATED;
+ verifyDeploymentInfoConstruction(workflowIdLastAction, status, expectedDeploymentStatus);
+ }
+
+ @Test
+ public void shouldConstructDeploymentInfo_withFailedDeploymentStatus_fromFailedUninstallExecution() {
+ String workflowIdLastAction = UNINSTALL_WORKFLOW_ID;
+ String status = "failed";
+ DeploymentStatus expectedDeploymentStatus = DeploymentStatus.FAILED;
+ verifyDeploymentInfoConstruction(workflowIdLastAction, status, expectedDeploymentStatus);
+ }
+
+ @Test
+ public void shouldConstructDeploymentInfo_withUninstallingDeploymentStatus_fromStartedUninstallExecution() {
+ String workflowIdLastAction = UNINSTALL_WORKFLOW_ID;
+ String status = "started";
+ DeploymentStatus expectedDeploymentStatus = DeploymentStatus.UNINSTALLING;
+ verifyDeploymentInfoConstruction(workflowIdLastAction, status, expectedDeploymentStatus);
+ }
+
+ @Test
+ public void shouldConstructDeploymentInfo_withUninstallingDeploymentStatus_fromPendingUninstallExecution() {
+ String workflowIdLastAction = UNINSTALL_WORKFLOW_ID;
+ String status = "pending";
+ DeploymentStatus expectedDeploymentStatus = DeploymentStatus.UNINSTALLING;
+ verifyDeploymentInfoConstruction(workflowIdLastAction, status, expectedDeploymentStatus);
+ }
+
+ @Test
+ public void shouldConstructDeploymentInfo_withUnknownDeploymentStatus_fromUnmappableUninstallExecution() {
+ String workflowIdLastAction = UNINSTALL_WORKFLOW_ID;
+ String status = "strangeStatus";
+ DeploymentStatus expectedDeploymentStatus = DeploymentStatus.UNKNOWN;
+ verifyDeploymentInfoConstruction(workflowIdLastAction, status, expectedDeploymentStatus);
+ }
+
+ @Test
+ public void shouldConstructDeploymentInfo_withUnknownDeploymentStatus_forUnknownExecutionWorkflowId() {
+ String workflowIdLastAction = "strangeWorkflowIdLastAction";
+ String status = "strangeStatus";
+ DeploymentStatus expectedDeploymentStatus = DeploymentStatus.UNKNOWN;
+ verifyDeploymentInfoConstruction(workflowIdLastAction, status, expectedDeploymentStatus);
+ }
+
+ private void verifyDeploymentInfoConstruction(String workflowIdLastAction, String actionStatus,
+ DeploymentStatus expectedDeploymentStatus) {
+
+ Execution execution = new Execution();
+ execution.setWorkflowId(workflowIdLastAction);
+ execution.setStatus(actionStatus);
+ execution.setError(ERROR_MESSAGE);
+ DeploymentInfo deploymentInfo = new DeploymentInfoBuilder()
+ .fromExecution(execution)
+ .build();
+
+ assertThat(deploymentInfo.getLastAction()).isEqualTo(workflowIdLastAction);
+ assertThat(deploymentInfo.getActionStatus()).isEqualTo(actionStatus);
+ assertThat(deploymentInfo.getErrorMessage()).isEqualTo(ERROR_MESSAGE);
+ assertThat(deploymentInfo.getStatus()).isEqualTo(expectedDeploymentStatus);
+ }
+} \ No newline at end of file
diff --git a/adapters/mso-adapter-utils/src/test/java/org/onap/so/cloudify/beans/DeploymentInfoTest.java b/adapters/mso-adapter-utils/src/test/java/org/onap/so/cloudify/beans/DeploymentInfoTest.java
deleted file mode 100644
index e200f9aa96..0000000000
--- a/adapters/mso-adapter-utils/src/test/java/org/onap/so/cloudify/beans/DeploymentInfoTest.java
+++ /dev/null
@@ -1,76 +0,0 @@
-/*
-* ============LICENSE_START=======================================================
- * ONAP : SO
- * ================================================================================
- * Copyright (C) 2018 TechMahindra
- * ================================================================================
- * 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.cloudify.beans;
-
-import static org.mockito.Mockito.mock;
-import java.util.HashMap;
-import java.util.Map;
-import org.junit.Test;
-import org.mockito.Mock;
-import org.onap.so.cloudify.v3.model.Deployment;
-import org.onap.so.cloudify.v3.model.DeploymentOutputs;
-import org.onap.so.cloudify.v3.model.Execution;
-import org.powermock.api.mockito.PowerMockito;
-
-public class DeploymentInfoTest {
-
- @Mock
- DeploymentStatus status;
-
- @Mock
- DeploymentOutputs out;
-
- @Mock
- Execution execution;
-
- @Mock
- Deployment deployment;
-
- @Test
- public void test() {
- Deployment deployment=mock(Deployment.class);
- Map<String,Object> dep=new HashMap();
- Map<String,Object> outputs = new HashMap<String,Object>();
- Map<String,Object> inputs = new HashMap<String,Object>();
- inputs.put("id",dep);
- status=DeploymentStatus.CREATED;
- outputs.put("id", out);
- dep.put("id", outputs);
- DeploymentInfo dinfo=new DeploymentInfo(deployment);
- DeploymentInfo dinfi=new DeploymentInfo("id");
- DeploymentInfo din=new DeploymentInfo("id",outputs);
- DeploymentInfo dfo=new DeploymentInfo("id", status);
- DeploymentInfo dfoi=new DeploymentInfo(deployment, out, execution);
- dinfo=PowerMockito.spy(new DeploymentInfo());
- dinfo.setId("id");
- dinfi.setInputs(inputs);
- din.setStatus(status);
- din.setOutputs(outputs);
- assert(din.toString()!=null);
- assert(din.getOutputs().equals(outputs));
- assert(din.getId().equals("id"));
- assert(din.getStatus().equals(status));
- din.getLastAction();
- din.getErrorMessage();
- din.getActionStatus();
- }
-
-}
diff --git a/adapters/mso-adapter-utils/src/test/java/org/onap/so/cloudify/utils/MsoCloudifyUtilsTest2.java b/adapters/mso-adapter-utils/src/test/java/org/onap/so/cloudify/utils/MsoCloudifyUtilsTest2.java
index 96202c5122..c7aecd90be 100644
--- a/adapters/mso-adapter-utils/src/test/java/org/onap/so/cloudify/utils/MsoCloudifyUtilsTest2.java
+++ b/adapters/mso-adapter-utils/src/test/java/org/onap/so/cloudify/utils/MsoCloudifyUtilsTest2.java
@@ -2,14 +2,16 @@
* ============LICENSE_START=======================================================
* ONAP - SO
* ================================================================================
- * Copyright (C) 2018 AT&T Intellectual Property. All rights reserved.
+ * Copyright (C) 2017 AT&T Intellectual Property. All rights reserved.
+ * ================================================================================
+ * Copyright (C) 2018 Nokia.
* ================================================================================
* 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.
@@ -17,7 +19,6 @@
* limitations under the License.
* ============LICENSE_END=========================================================
*/
-
package org.onap.so.cloudify.utils;
import static com.shazam.shazamcrest.MatcherAssert.assertThat;
@@ -42,6 +43,7 @@ import org.onap.so.adapters.vdu.VduModelInfo;
import org.onap.so.adapters.vdu.VduStateType;
import org.onap.so.adapters.vdu.VduStatus;
import org.onap.so.cloud.CloudConfig;
+import org.onap.so.cloudify.beans.DeploymentInfoBuilder;
import org.onap.so.db.catalog.beans.CloudIdentity;
import org.onap.so.db.catalog.beans.CloudSite;
import org.onap.so.cloudify.beans.DeploymentInfo;
@@ -82,9 +84,10 @@ public class MsoCloudifyUtilsTest2 {
List<VduArtifact> artifacts = new ArrayList<>();
artifacts.add(artifact);
vduModel.setArtifacts(artifacts);
- DeploymentInfo deployment = new DeploymentInfo();
- deployment.setId("id");
- deployment.setStatus(DeploymentStatus.INSTALLED);
+ DeploymentInfo deployment = new DeploymentInfoBuilder()
+ .withId("id")
+ .withStatus(DeploymentStatus.INSTALLED)
+ .build();
Map<String, byte[]> blueprintFiles = new HashMap<>();
blueprintFiles.put(artifact.getName(), artifact.getContent());
String instanceName = "instanceName";
@@ -118,9 +121,10 @@ public class MsoCloudifyUtilsTest2 {
CloudInfo cloudInfo = new CloudInfo();
cloudInfo.setCloudSiteId("cloudSiteId");
cloudInfo.setTenantId("tenantId");
- DeploymentInfo deployment = new DeploymentInfo();
- deployment.setId("id");
- deployment.setStatus(DeploymentStatus.INSTALLED);
+ DeploymentInfo deployment = new DeploymentInfoBuilder()
+ .withId("id")
+ .withStatus(DeploymentStatus.INSTALLED)
+ .build();
String instanceId = "instanceId";
MsoCloudifyUtils cloudify = Mockito.spy(MsoCloudifyUtils.class);
@@ -148,14 +152,12 @@ public class MsoCloudifyUtilsTest2 {
cloudInfo.setTenantId("tenantId");
String instanceId = "instanceId";
int timeoutMinutes = 1;
- DeploymentInfo deployment = Mockito.mock(DeploymentInfo.class);
- deployment.setId("id");
- deployment.setStatus(DeploymentStatus.CREATED);
- when(deployment.getId()).thenReturn("id");
- when(deployment.getStatus()).thenReturn(DeploymentStatus.CREATED);
- when(deployment.getLastAction()).thenReturn("deleting");
+ DeploymentInfo deploymentInfo = new DeploymentInfoBuilder()
+ .withId("id")
+ .withStatus(DeploymentStatus.CREATED)
+ .withLastAction("deleting").build();
MsoCloudifyUtils cloudify = Mockito.spy(MsoCloudifyUtils.class);
- doReturn(deployment).when(cloudify).uninstallAndDeleteDeployment(cloudInfo.getCloudSiteId(),
+ doReturn(deploymentInfo).when(cloudify).uninstallAndDeleteDeployment(cloudInfo.getCloudSiteId(),
cloudInfo.getTenantId(), instanceId, timeoutMinutes);
VduInstance actual = cloudify.deleteVdu(cloudInfo, instanceId, timeoutMinutes);
@@ -173,16 +175,14 @@ public class MsoCloudifyUtilsTest2 {
status.setLastAction(new PluginAction("deleting", null, null));
expected.setStatus(status);
- DeploymentInfo deployment = Mockito.mock(DeploymentInfo.class);
- deployment.setId("id");
- deployment.setStatus(DeploymentStatus.CREATED);
- when(deployment.getId()).thenReturn("id");
- when(deployment.getStatus()).thenReturn(DeploymentStatus.CREATED);
- when(deployment.getLastAction()).thenReturn("deleting");
+ DeploymentInfo deploymentInfo = new DeploymentInfoBuilder()
+ .withId("id")
+ .withStatus(DeploymentStatus.CREATED)
+ .withLastAction("deleting").build();
MsoCloudifyUtils cloudify = new MsoCloudifyUtils();
- VduInstance actual = cloudify.deploymentInfoToVduInstance(deployment);
+ VduInstance actual = cloudify.deploymentInfoToVduInstance(deploymentInfo);
assertThat(actual, sameBeanAs(expected));
}
@@ -193,16 +193,14 @@ public class MsoCloudifyUtilsTest2 {
expected.setState(VduStateType.DELETING);
expected.setLastAction(new PluginAction("deleting", null, null));
- DeploymentInfo deployment = Mockito.mock(DeploymentInfo.class);
- deployment.setId("id");
- deployment.setStatus(DeploymentStatus.CREATED);
- when(deployment.getId()).thenReturn("id");
- when(deployment.getStatus()).thenReturn(DeploymentStatus.CREATED);
- when(deployment.getLastAction()).thenReturn("deleting");
+ DeploymentInfo deploymentInfo = new DeploymentInfoBuilder()
+ .withId("id")
+ .withStatus(DeploymentStatus.CREATED)
+ .withLastAction("deleting").build();
MsoCloudifyUtils cloudify = new MsoCloudifyUtils();
- VduStatus actual = cloudify.deploymentStatusToVduStatus(deployment);
+ VduStatus actual = cloudify.deploymentStatusToVduStatus(deploymentInfo);
assertThat(actual, sameBeanAs(expected));
}
diff --git a/adapters/mso-catalog-db-adapter/src/main/resources/db/migration/V1.1__Initial_Recipe_Setup.sql b/adapters/mso-catalog-db-adapter/src/main/resources/db/migration/V1.1__Initial_Recipe_Setup.sql
index 5c9e5aae9f..1663fdd6a8 100644
--- a/adapters/mso-catalog-db-adapter/src/main/resources/db/migration/V1.1__Initial_Recipe_Setup.sql
+++ b/adapters/mso-catalog-db-adapter/src/main/resources/db/migration/V1.1__Initial_Recipe_Setup.sql
@@ -39,7 +39,6 @@ INSERT INTO `service_recipe` (`id`, `ACTION`, `VERSION_STR`, `DESCRIPTION`, `ORC
--
INSERT INTO `service` (`MODEL_UUID`, `MODEL_NAME`, `MODEL_INVARIANT_UUID`, `MODEL_VERSION`, `DESCRIPTION`, `CREATION_TIMESTAMP`, `TOSCA_CSAR_ARTIFACT_UUID`) VALUES ('dfcd7471-16c7-444e-8268-d4c50d90593a','UUI_DEFAULT','dfcd7471-16c7-444e-8268-d4c50d90593a','1.0','Default service for UUI to use for infra APIH orchestration1707MIGRATED1707MIGRATED','2017-10-23 18:52:03',NULL);
-INSERT INTO `service` (`MODEL_UUID`, `MODEL_NAME`, `MODEL_INVARIANT_UUID`, `MODEL_VERSION`, `DESCRIPTION`, `CREATION_TIMESTAMP`, `TOSCA_CSAR_ARTIFACT_UUID`) VALUES ('f2e1dc69-c8ef-47e9-8b64-966cc87f2110','*','f2e1dc69-c8ef-47e9-8b64-966cc87f2110','1.0','Default service to use for infra APIH orchestration','2018-01-19 18:52:03',NULL);
INSERT INTO `service_recipe` (`id`, `ACTION`, `VERSION_STR`, `DESCRIPTION`, `ORCHESTRATION_URI`, `SERVICE_PARAM_XSD`, `RECIPE_TIMEOUT`, `SERVICE_TIMEOUT_INTERIM`, `CREATION_TIMESTAMP`, `SERVICE_MODEL_UUID`) VALUES (11,'createInstance','1','Custom recipe to create E2E service-instance if no custom BPMN flow is found','/mso/async/services/CreateCustomE2EServiceInstance',NULL,180,NULL,'2017-10-05 18:52:03','dfcd7471-16c7-444e-8268-d4c50d90593a');
INSERT INTO `service_recipe` (`id`, `ACTION`, `VERSION_STR`, `DESCRIPTION`, `ORCHESTRATION_URI`, `SERVICE_PARAM_XSD`, `RECIPE_TIMEOUT`, `SERVICE_TIMEOUT_INTERIM`, `CREATION_TIMESTAMP`, `SERVICE_MODEL_UUID`) VALUES (12,'deleteInstance','1','Custom recipe to delete E2E service-instance if no custom BPMN flow is found','/mso/async/services/DeleteCustomE2EServiceInstance',NULL,180,NULL,'2017-10-05 18:52:03','dfcd7471-16c7-444e-8268-d4c50d90593a');
@@ -48,9 +47,6 @@ INSERT INTO `service_recipe` (`id`, `ACTION`, `VERSION_STR`, `DESCRIPTION`, `ORC
INSERT INTO `service_recipe` (`id`, `ACTION`, `VERSION_STR`, `DESCRIPTION`, `ORCHESTRATION_URI`, `SERVICE_PARAM_XSD`, `RECIPE_TIMEOUT`, `SERVICE_TIMEOUT_INTERIM`, `CREATION_TIMESTAMP`, `SERVICE_MODEL_UUID`) VALUES (15,'updateInstance','1','Custom recipe to update E2E service-instance if no custom BPMN flow is found','/mso/async/services/UpdateCustomE2EServiceInstance',NULL,180,NULL,'2018-03-05 10:52:03','dfcd7471-16c7-444e-8268-d4c50d90593a');
INSERT INTO `service_recipe` (`id`, `ACTION`, `VERSION_STR`, `DESCRIPTION`, `ORCHESTRATION_URI`, `SERVICE_PARAM_XSD`, `RECIPE_TIMEOUT`, `SERVICE_TIMEOUT_INTERIM`, `CREATION_TIMESTAMP`, `SERVICE_MODEL_UUID`) VALUES (16,'scaleInstance','1','Custom recipe to scale E2E service-instance if no custom BPMN flow is found','/mso/async/services/ScaleCustomE2EServiceInstance',NULL,180,NULL,'2018-05-15 18:52:03','dfcd7471-16c7-444e-8268-d4c50d90593a');
-INSERT INTO `service_recipe` (`id`, `ACTION`, `VERSION_STR`, `DESCRIPTION`, `ORCHESTRATION_URI`, `SERVICE_PARAM_XSD`, `RECIPE_TIMEOUT`, `SERVICE_TIMEOUT_INTERIM`, `CREATION_TIMESTAMP`, `SERVICE_MODEL_UUID`) VALUES (13,'createInstance','1','DEFAULT recipe to create service-instance if no custom BPMN flow is found','/mso/async/services/CreateGenericALaCarteServiceInstance',NULL,180,NULL,'2017-10-05 18:52:03','f2e1dc69-c8ef-47e9-8b64-966cc87f2110');
-INSERT INTO `service_recipe` (`id`, `ACTION`, `VERSION_STR`, `DESCRIPTION`, `ORCHESTRATION_URI`, `SERVICE_PARAM_XSD`, `RECIPE_TIMEOUT`, `SERVICE_TIMEOUT_INTERIM`, `CREATION_TIMESTAMP`, `SERVICE_MODEL_UUID`) VALUES (14,'deleteInstance','1','DEFAULT recipe to delete service-instance if no custom BPMN flow is found','/mso/async/services/DeleteGenericALaCarteServiceInstance',NULL,180,NULL,'2017-10-05 18:52:03','f2e1dc69-c8ef-47e9-8b64-966cc87f2110');
-
INSERT INTO `vnf_components_recipe` (`id`, `VNF_TYPE`, `VNF_COMPONENT_TYPE`, `VF_MODULE_MODEL_UUID`, `ACTION`, `SERVICE_TYPE`, `VERSION`, `DESCRIPTION`, `ORCHESTRATION_URI`, `VNF_COMPONENT_PARAM_XSD`, `RECIPE_TIMEOUT`, `CREATION_TIMESTAMP`) VALUES (1,'*','VOLUME_GROUP',NULL,'CREATE',NULL,'1','Recipe Match All for','/mso/async/services/createCinderVolumeV1',null,180,'2017-10-05 18:52:03');
INSERT INTO `vnf_components_recipe` (`id`, `VNF_TYPE`, `VNF_COMPONENT_TYPE`, `VF_MODULE_MODEL_UUID`, `ACTION`, `SERVICE_TYPE`, `VERSION`, `DESCRIPTION`, `ORCHESTRATION_URI`, `VNF_COMPONENT_PARAM_XSD`, `RECIPE_TIMEOUT`, `CREATION_TIMESTAMP`) VALUES (2,'*','VOLUME_GROUP',NULL,'DELETE',NULL,'1','Recipe Match All for','/mso/async/services/deleteCinderVolumeV1',null,180,'2017-10-05 18:52:03');
INSERT INTO `vnf_components_recipe` (`id`, `VNF_TYPE`, `VNF_COMPONENT_TYPE`, `VF_MODULE_MODEL_UUID`, `ACTION`, `SERVICE_TYPE`, `VERSION`, `DESCRIPTION`, `ORCHESTRATION_URI`, `VNF_COMPONENT_PARAM_XSD`, `RECIPE_TIMEOUT`, `CREATION_TIMESTAMP`) VALUES (3,'*','VOLUME_GROUP',NULL,'UPDATE',NULL,'1','Recipe Match All for','/mso/async/services/updateCinderVolumeV1',null,180,'2017-10-05 18:52:03');
diff --git a/adapters/mso-catalog-db-adapter/src/test/java/org/onap/so/db/catalog/client/CatalogDbClientPortChanger.java b/adapters/mso-catalog-db-adapter/src/test/java/org/onap/so/db/catalog/client/CatalogDbClientPortChanger.java
index bf69686a76..e38bd02069 100644
--- a/adapters/mso-catalog-db-adapter/src/test/java/org/onap/so/db/catalog/client/CatalogDbClientPortChanger.java
+++ b/adapters/mso-catalog-db-adapter/src/test/java/org/onap/so/db/catalog/client/CatalogDbClientPortChanger.java
@@ -29,6 +29,15 @@ public class CatalogDbClientPortChanger extends CatalogDbClient {
public String wiremockPort;
+ CatalogDbClientPortChanger(){
+
+ }
+
+ CatalogDbClientPortChanger(String baseUri, String auth, String wiremockPort) {
+ super(baseUri, auth);
+ this.wiremockPort = wiremockPort;
+ }
+
protected URI getUri(String template) {
URI uri = URI.create(template);
String path = uri.getPath();
diff --git a/adapters/mso-catalog-db-adapter/src/test/java/org/onap/so/db/catalog/client/CatalogDbClientTest.java b/adapters/mso-catalog-db-adapter/src/test/java/org/onap/so/db/catalog/client/CatalogDbClientTest.java
index 3783a51689..5c7b64d054 100644
--- a/adapters/mso-catalog-db-adapter/src/test/java/org/onap/so/db/catalog/client/CatalogDbClientTest.java
+++ b/adapters/mso-catalog-db-adapter/src/test/java/org/onap/so/db/catalog/client/CatalogDbClientTest.java
@@ -26,10 +26,13 @@ import org.junit.Ignore;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.onap.so.adapters.catalogdb.CatalogDBApplication;
+import org.onap.so.db.catalog.beans.AuthenticationType;
+import org.onap.so.db.catalog.beans.CloudIdentity;
import org.onap.so.db.catalog.beans.CloudSite;
import org.onap.so.db.catalog.beans.CloudifyManager;
import org.onap.so.db.catalog.beans.InstanceGroup;
import org.onap.so.db.catalog.beans.NetworkResourceCustomization;
+import org.onap.so.db.catalog.beans.ServerType;
import org.onap.so.db.catalog.beans.Service;
import org.onap.so.db.catalog.beans.ServiceRecipe;
import org.onap.so.db.catalog.beans.VfModule;
@@ -40,11 +43,13 @@ import org.onap.so.db.catalog.beans.VnfResource;
import org.onap.so.db.catalog.beans.VnfResourceCustomization;
import org.onap.so.db.catalog.beans.macro.RainyDayHandlerStatus;
import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.beans.factory.annotation.Value;
import org.springframework.boot.context.embedded.LocalServerPort;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.test.context.ActiveProfiles;
import org.springframework.test.context.junit4.SpringRunner;
+import java.net.URI;
import java.util.List;
import java.util.UUID;
@@ -55,12 +60,16 @@ public class CatalogDbClientTest {
public static final String MTN13 = "mtn13";
@LocalServerPort
private int port;
+
+ @Value("${mso.db.auth}")
+ private String msoAdaptersAuth;
+
@Autowired
CatalogDbClientPortChanger client;
@Before
- public void initialize() {
- client.wiremockPort = String.valueOf(port);
+ public void initialize(){
+ client.wiremockPort= String.valueOf(port);
}
@Test
@@ -376,4 +385,33 @@ public class CatalogDbClientTest {
VfModule module = moduleList.get(0);
Assert.assertEquals("vSAMP10a DEV Base",module.getDescription());
}
+
+ @Test
+ public void testPostCloudSite() {
+ CatalogDbClientPortChanger localClient = new CatalogDbClientPortChanger("http://localhost:" + client.wiremockPort, msoAdaptersAuth, client.wiremockPort);
+ CloudSite cloudSite = new CloudSite();
+ cloudSite.setId("MTN6");
+ cloudSite.setClli("TESTCLLI");
+ cloudSite.setRegionId("regionId");
+ cloudSite.setCloudVersion("VERSION");
+ cloudSite.setPlatform("PLATFORM");
+
+ CloudIdentity cloudIdentity = new CloudIdentity();
+ cloudIdentity.setId("RANDOMID");
+ cloudIdentity.setIdentityUrl("URL");
+ cloudIdentity.setMsoId("MSO_ID");
+ cloudIdentity.setMsoPass("MSO_PASS");
+ cloudIdentity.setAdminTenant("ADMIN_TENANT");
+ cloudIdentity.setMemberRole("ROLE");
+ cloudIdentity.setIdentityServerType(ServerType.KEYSTONE);
+ cloudIdentity.setIdentityAuthenticationType(AuthenticationType.RACKSPACE_APIKEY);
+ cloudSite.setIdentityService(cloudIdentity);
+ localClient.postCloudSite(cloudSite);
+ CloudSite getCloudSite = this.client.getCloudSite("MTN6");
+ Assert.assertNotNull(getCloudSite);
+ Assert.assertNotNull(getCloudSite.getIdentityService());
+ Assert.assertEquals("TESTCLLI", getCloudSite.getClli());
+ Assert.assertEquals("regionId", getCloudSite.getRegionId());
+ Assert.assertEquals("RANDOMID", getCloudSite.getIdentityServiceId());
+ }
}
diff --git a/adapters/mso-catalog-db-adapter/src/test/resources/application-test.yaml b/adapters/mso-catalog-db-adapter/src/test/resources/application-test.yaml
index a1e62f5e85..a59ea0ef65 100644
--- a/adapters/mso-catalog-db-adapter/src/test/resources/application-test.yaml
+++ b/adapters/mso-catalog-db-adapter/src/test/resources/application-test.yaml
@@ -1,5 +1,5 @@
# TEST FILE
-catalog.db.endpoint: "http://localhost:"
+catalog.db.endpoint: http://localhost:${wiremock.server.port}
ssl-enable: false
mso:
@@ -8,7 +8,7 @@ mso:
catalog:
db:
spring:
- endpoint: "http://localhost:"
+ endpoint: http://localhost:${wiremock.server.port}
db:
auth: Basic YnBlbDptc28tZGItMTUwNyE=
@@ -50,7 +50,7 @@ mariaDB4j:
databaseName: catalogdb
server:
- port: 8080
+ port: ${wiremock.server.port}
tomcat:
max-threads: 50
diff --git a/adapters/mso-openstack-adapters/src/main/java/org/onap/so/adapters/vnf/MsoVnfPluginAdapterImpl.java b/adapters/mso-openstack-adapters/src/main/java/org/onap/so/adapters/vnf/MsoVnfPluginAdapterImpl.java
index e9567170dd..9a64e62e57 100644
--- a/adapters/mso-openstack-adapters/src/main/java/org/onap/so/adapters/vnf/MsoVnfPluginAdapterImpl.java
+++ b/adapters/mso-openstack-adapters/src/main/java/org/onap/so/adapters/vnf/MsoVnfPluginAdapterImpl.java
@@ -710,6 +710,7 @@ public class MsoVnfPluginAdapterImpl implements MsoVnfAdapter {
CloudSite cloudSite = cloudSiteOp.get();
MavenLikeVersioning aicV = new MavenLikeVersioning();
aicV.setVersion(cloudSite.getCloudVersion());
+ Boolean usingMulticloud = getUsingMulticloud(cloudSite);
String vnfMin = vnfResource.getAicVersionMin();
String vnfMax = vnfResource.getAicVersionMax();
@@ -732,23 +733,25 @@ public class MsoVnfPluginAdapterImpl implements MsoVnfAdapter {
// Use the VduPlugin.
VduPlugin vduPlugin = getVduPlugin(cloudSiteId);
- // First, look up to see if the VF already exists.
+ // First, look up to see if the VF already exists, unless using multicloud adapter
long subStartTime1 = System.currentTimeMillis ();
- try {
- vduInstance = vduPlugin.queryVdu (cloudInfo, vfModuleName);
- LOGGER.recordMetricEvent (subStartTime1, MsoLogger.StatusCode.COMPLETE, MsoLogger.ResponseCode.Suc, "Successfully received response from VduPlugin", "VDU", "QueryVDU", vfModuleName);
- }
- catch (VduException me) {
- // Failed to query the VDU due to a plugin exception.
- String error = "Create VF Module: Query " + vfModuleName + " in " + cloudSiteId + "/" + tenantId + ": " + me ;
- LOGGER.error (MessageEnum.RA_QUERY_VNF_ERR, vfModuleName, cloudSiteId, tenantId, "VDU", "queryVdu", MsoLogger.ErrorCode.DataError, "Exception - queryVdu", me);
- LOGGER.recordMetricEvent (subStartTime1, MsoLogger.StatusCode.ERROR, MsoLogger.ResponseCode.CommunicationError, error, "VDU", "QueryVdu", vfModuleName);
- LOGGER.recordAuditEvent (startTime, MsoLogger.StatusCode.ERROR, MsoLogger.ResponseCode.CommunicationError, error);
+ if (!usingMulticloud) {
+ try {
+ vduInstance = vduPlugin.queryVdu (cloudInfo, vfModuleName);
+ LOGGER.recordMetricEvent (subStartTime1, MsoLogger.StatusCode.COMPLETE, MsoLogger.ResponseCode.Suc, "Successfully received response from VduPlugin", "VDU", "QueryVDU", vfModuleName);
+ }
+ catch (VduException me) {
+ // Failed to query the VDU due to a plugin exception.
+ String error = "Create VF Module: Query " + vfModuleName + " in " + cloudSiteId + "/" + tenantId + ": " + me ;
+ LOGGER.error (MessageEnum.RA_QUERY_VNF_ERR, vfModuleName, cloudSiteId, tenantId, "VDU", "queryVdu", MsoLogger.ErrorCode.DataError, "Exception - queryVdu", me);
+ LOGGER.recordMetricEvent (subStartTime1, MsoLogger.StatusCode.ERROR, MsoLogger.ResponseCode.CommunicationError, error, "VDU", "QueryVdu", vfModuleName);
+ LOGGER.recordAuditEvent (startTime, MsoLogger.StatusCode.ERROR, MsoLogger.ResponseCode.CommunicationError, error);
- // Convert to a generic VnfException
- me.addContext ("CreateVFModule");
- throw new VnfException (me);
+ // Convert to a generic VnfException
+ me.addContext ("CreateVFModule");
+ throw new VnfException (me);
+ }
}
// More precise handling/messaging if the Module already exists
@@ -810,7 +813,7 @@ public class MsoVnfPluginAdapterImpl implements MsoVnfAdapter {
Map<String, Object> volumeGroupOutputs = null;
// If a Volume Group was provided, query its outputs for inclusion in Module input parameters
- if (volumeGroupId != null) {
+ if (!usingMulticloud && volumeGroupId != null) {
long subStartTime2 = System.currentTimeMillis ();
VduInstance volumeVdu = null;
try {
@@ -858,7 +861,8 @@ public class MsoVnfPluginAdapterImpl implements MsoVnfAdapter {
LOGGER.debug ("WARNING: Add-on Module request - no Base Module ID provided");
}
- if (baseVfModuleId != null) {
+ // Need to verify if multicloud needs to have the vaseVfModuleId passed to it. Ignoring this for now.
+ if (!usingMulticloud && baseVfModuleId != null) {
long subStartTime2 = System.currentTimeMillis ();
VduInstance baseVdu = null;
try {
@@ -979,9 +983,8 @@ public class MsoVnfPluginAdapterImpl implements MsoVnfAdapter {
}
if (!extraInputs.isEmpty()) {
- // Add directive inputs
- String[] directives = { "oof_directives", "sdnc_directives" };
- for (String key : directives) {
+ // Add multicloud inputs
+ for (String key : MsoMulticloudUtils.MULTICLOUD_INPUTS) {
if (extraInputs.contains(key)) {
goldenInputs.put(key, inputs.get(key));
extraInputs.remove(key);
@@ -1242,4 +1245,12 @@ public class MsoVnfPluginAdapterImpl implements MsoVnfAdapter {
// Default - return HEAT plugin, though will fail later
return heatUtils;
}
+
+ private Boolean getUsingMulticloud (CloudSite cloudSite) {
+ if (cloudSite.getOrchestrator().equalsIgnoreCase("MULTICLOUD")) {
+ return true;
+ } else {
+ return false;
+ }
+ }
}
diff --git a/adapters/mso-openstack-adapters/src/main/java/org/onap/so/adapters/vnf/VnfAdapterRestUtils.java b/adapters/mso-openstack-adapters/src/main/java/org/onap/so/adapters/vnf/VnfAdapterRestUtils.java
index 88f102c2a5..c332c49832 100644
--- a/adapters/mso-openstack-adapters/src/main/java/org/onap/so/adapters/vnf/VnfAdapterRestUtils.java
+++ b/adapters/mso-openstack-adapters/src/main/java/org/onap/so/adapters/vnf/VnfAdapterRestUtils.java
@@ -33,6 +33,10 @@ public class VnfAdapterRestUtils
{
private static MsoLogger LOGGER = MsoLogger.getMsoLogger (MsoLogger.Catalog.RA, VnfAdapterRestUtils.class);
+ private static final String HEAT_MODE = "HEAT";
+ private static final String CLOUDIFY_MODE = "CLOUDIFY";
+ private static final String MULTICLOUD_MODE = "MULTICLOUD";
+
@Autowired
private CloudConfig cloudConfig;
@@ -65,9 +69,12 @@ public class VnfAdapterRestUtils
if (cloudSite.isPresent()) {
LOGGER.debug("Got CloudSite: " + cloudSite.toString());
if (cloudConfig.getCloudifyManager(cloudSite.get().getCloudifyId()) != null) {
- mode = "CLOUDIFY";
- } else {
- mode = "HEAT";
+ mode = CLOUDIFY_MODE;
+ } else if (MULTICLOUD_MODE.equalsIgnoreCase(cloudSite.get().getOrchestrator())) {
+ mode = MULTICLOUD_MODE;
+ }
+ else {
+ mode = HEAT_MODE;
}
}
}
@@ -77,15 +84,15 @@ public class VnfAdapterRestUtils
MsoVnfAdapter vnfAdapter = null;
// TODO: Make this more dynamic (e.g. Service Loader)
- if ("CLOUDIFY".equalsIgnoreCase(mode)) {
+ if (CLOUDIFY_MODE.equalsIgnoreCase(mode)) {
LOGGER.debug ("GetVnfAdapterImpl: Return Cloudify Adapter");
vnfAdapter = cloudifyImpl;
}
- else if ("HEAT".equalsIgnoreCase(mode)) {
+ else if (HEAT_MODE.equalsIgnoreCase(mode)) {
LOGGER.debug ("GetVnfAdapterImpl: Return Heat Adapter");
vnfAdapter = vnfImpl;
}
- else if ("MULTICLOUD".equalsIgnoreCase(mode)) {
+ else if (MULTICLOUD_MODE.equalsIgnoreCase(mode)) {
LOGGER.debug ("GetVnfAdapterImpl: Return Plugin (multicloud) Adapter");
vnfAdapter = vnfPluginImpl;
}
diff --git a/adapters/mso-openstack-adapters/src/test/java/org/onap/so/adapters/vnf/BaseRestTestUtils.java b/adapters/mso-openstack-adapters/src/test/java/org/onap/so/adapters/vnf/BaseRestTestUtils.java
index a2f57ef06f..9ead28b577 100644
--- a/adapters/mso-openstack-adapters/src/test/java/org/onap/so/adapters/vnf/BaseRestTestUtils.java
+++ b/adapters/mso-openstack-adapters/src/test/java/org/onap/so/adapters/vnf/BaseRestTestUtils.java
@@ -77,7 +77,10 @@ public class BaseRestTestUtils {
private int port;
public ObjectMapper mapper;
-
+
+ public String orchestrator = "orchestrator";
+ public String cloudEndpoint = "/v2.0";
+
protected String readJsonFileAsString(String fileLocation) throws JsonParseException, JsonMappingException, IOException{
ObjectMapper mapper = new ObjectMapper();
@@ -111,7 +114,6 @@ public class BaseRestTestUtils {
public void setUp() throws Exception {
reset();
mapper = new ObjectMapper();
-
CloudIdentity identity = new CloudIdentity();
identity.setId("MTN13");
identity.setMsoId("m93945");
@@ -119,7 +121,8 @@ public class BaseRestTestUtils {
identity.setAdminTenant("admin");
identity.setMemberRole("admin");
identity.setTenantMetadata(new Boolean(true));
- identity.setIdentityUrl("http://localhost:"+wireMockPort+"/v2.0");
+ identity.setIdentityUrl("http://localhost:" + wireMockPort + cloudEndpoint);
+
identity.setIdentityAuthenticationType(AuthenticationType.USERNAME_PASSWORD);
CloudSite cloudSite = new CloudSite();
@@ -127,12 +130,10 @@ public class BaseRestTestUtils {
cloudSite.setCloudVersion("3.0");
cloudSite.setClli("MDT13");
cloudSite.setRegionId("mtn13");
- cloudSite.setOrchestrator("orchestrator" +
- "");
+ cloudSite.setOrchestrator(orchestrator);
identity.setIdentityServerType(ServerType.KEYSTONE);
cloudSite.setIdentityService(identity);
-
stubFor(get(urlPathEqualTo("/cloudSite/MTN13")).willReturn(aResponse()
.withBody(getBody(mapper.writeValueAsString(cloudSite),wireMockPort, ""))
.withHeader(org.apache.http.HttpHeaders.CONTENT_TYPE, MediaType.APPLICATION_JSON)
@@ -145,8 +146,7 @@ public class BaseRestTestUtils {
.withBody(getBody(mapper.writeValueAsString(identity),wireMockPort, ""))
.withHeader(org.apache.http.HttpHeaders.CONTENT_TYPE,MediaType.APPLICATION_JSON)
.withStatus(HttpStatus.SC_OK)));
- cloudConfig.getCloudSite("MTN13").get().getIdentityService().setIdentityUrl("http://localhost:" + wireMockPort + "/v2.0");
-
+ cloudConfig.getCloudSite("MTN13").get().getIdentityService().setIdentityUrl("http://localhost:" + wireMockPort + cloudEndpoint);
}
protected static String getBody(String body, int port, String urlPath) throws IOException {
diff --git a/adapters/mso-openstack-adapters/src/test/java/org/onap/so/adapters/vnf/MsoVnfMulticloudAdapterImplTest.java b/adapters/mso-openstack-adapters/src/test/java/org/onap/so/adapters/vnf/MsoVnfMulticloudAdapterImplTest.java
new file mode 100644
index 0000000000..07fa47df42
--- /dev/null
+++ b/adapters/mso-openstack-adapters/src/test/java/org/onap/so/adapters/vnf/MsoVnfMulticloudAdapterImplTest.java
@@ -0,0 +1,123 @@
+/*-
+ * ============LICENSE_START=======================================================
+ * ONAP - SO
+ * ================================================================================
+ * Copyright (C) 2018 Intel Corp. All rights reserved.
+ * ================================================================================
+ * 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.adapters.vnf;
+
+import org.apache.http.HttpStatus;
+import org.junit.Assert;
+import org.junit.Before;
+import org.junit.Rule;
+import org.junit.Test;
+import org.junit.rules.ExpectedException;
+import org.onap.so.adapters.openstack.MsoOpenstackAdaptersApplication;
+import org.onap.so.adapters.vnf.exceptions.VnfException;
+import org.onap.so.cloud.CloudConfig;
+import org.onap.so.db.catalog.beans.CloudSite;
+import org.onap.so.entity.MsoRequest;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.boot.context.embedded.LocalServerPort;
+
+import javax.xml.ws.Holder;
+import java.util.HashMap;
+import java.util.Map;
+
+import static com.github.tomakehurst.wiremock.client.WireMock.aResponse;
+import static com.github.tomakehurst.wiremock.client.WireMock.delete;
+import static com.github.tomakehurst.wiremock.client.WireMock.get;
+import static com.github.tomakehurst.wiremock.client.WireMock.post;
+import static com.github.tomakehurst.wiremock.client.WireMock.stubFor;
+import static com.github.tomakehurst.wiremock.client.WireMock.urlMatching;
+import static com.github.tomakehurst.wiremock.client.WireMock.urlPathEqualTo;
+
+public class MsoVnfMulticloudAdapterImplTest extends BaseRestTestUtils{
+ @Rule
+ public ExpectedException expectedException = ExpectedException.none();
+
+ @Autowired
+ private MsoVnfPluginAdapterImpl instance;
+
+ @Autowired
+ private CloudConfig cloudConfig;
+
+ @Before
+ public void before() throws Exception {
+ super.orchestrator = "multicloud";
+ super.cloudEndpoint = "/api/multicloud/v1/cloud_owner/cloud_region_id/infra_workload";
+ super.setUp();
+ }
+
+ @Test
+ public void createVfModule() throws Exception {
+ //expectedException.expect(VnfException.class);
+ Map<String, String> stackInputs = new HashMap<>();
+ stackInputs.put("oof_directives", "{oofDIRECTIVES}");
+ stackInputs.put("sdnc_directives", "{sdncDIRECTIVES}");
+ stackInputs.put("generic_vnf_id", "genVNFID");
+ stackInputs.put("vf_module_id", "vfMODULEID");
+
+ MsoRequest msoRequest = new MsoRequest();
+ msoRequest.setRequestId("12345");
+ msoRequest.setServiceInstanceId("12345");
+
+ stubFor(get(urlPathEqualTo("/api/multicloud/v1/cloud_owner/cloud_region_id/infra_workload/vfname")).willReturn(aResponse()
+ //.withHeader()
+ .withStatus(HttpStatus.SC_NOT_FOUND)));
+
+ stubFor(get(urlPathEqualTo("/api/multicloud/v1/cloud_owner/cloud_region_id/infra_workload/vfname/outputs")).willReturn(aResponse()
+ .withStatus(HttpStatus.SC_NOT_FOUND)));
+
+ stubFor(post(urlPathEqualTo("/api/multicloud/v1/cloud_owner/cloud_region_id/infra_workload")).willReturn(aResponse()
+ .withBodyFile("MulticloudResponse_Stack_Create.json")
+ .withStatus(HttpStatus.SC_CREATED)));
+
+ instance.createVfModule("MTN13", "123", "vf", "v1", "vfname", "create", null, "234", "9b339a61-69ca-465f-86b8-1c72c582b8e8", stackInputs, true, true, true, msoRequest, new Holder<>(), new Holder<>(), new Holder<>());
+ }
+
+ @Test
+ public void deleteVfModule() throws Exception {
+ MsoRequest msoRequest = new MsoRequest();
+ msoRequest.setRequestId("12345");
+ msoRequest.setServiceInstanceId("12345");
+
+ stubFor(get(urlPathEqualTo("/api/multicloud/v1/cloud_owner/cloud_region_id/infra_workload/workload-id")).willReturn(aResponse()
+ .withBodyFile("MulticloudResponse_Stack.json")
+ .withStatus(HttpStatus.SC_OK)));
+
+ stubFor(delete(urlPathEqualTo("/api/multicloud/v1/cloud_owner/cloud_region_id/infra_workload/workload-id")).willReturn(aResponse()
+ .withStatus(HttpStatus.SC_NO_CONTENT)));
+
+ instance.deleteVfModule("MTN13", "123", "workload-id", msoRequest, new Holder<>());
+ }
+
+ @Test
+ public void queryVfModule() throws Exception {
+ MsoRequest msoRequest = new MsoRequest();
+ msoRequest.setRequestId("12345");
+ msoRequest.setServiceInstanceId("12345");
+
+ stubFor(get(urlPathEqualTo("/api/multicloud/v1/cloud_owner/cloud_region_id/infra_workload/workload-id")).willReturn(aResponse()
+ .withBodyFile("MulticloudResponse_Stack.json")
+ .withStatus(HttpStatus.SC_OK)));
+
+ instance.queryVnf("MTN13", "123", "workload-id", msoRequest, new Holder<>(), new Holder<>(), new Holder<>(), new Holder<>());
+ }
+
+ // TODO Error Tests
+}
diff --git a/adapters/mso-openstack-adapters/src/test/java/org/onap/so/adapters/vnf/MsoVnfPluginAdapterImplTest.java b/adapters/mso-openstack-adapters/src/test/java/org/onap/so/adapters/vnf/MsoVnfPluginAdapterImplTest.java
index 77ef8d4776..936bce5b5c 100644
--- a/adapters/mso-openstack-adapters/src/test/java/org/onap/so/adapters/vnf/MsoVnfPluginAdapterImplTest.java
+++ b/adapters/mso-openstack-adapters/src/test/java/org/onap/so/adapters/vnf/MsoVnfPluginAdapterImplTest.java
@@ -20,31 +20,15 @@
package org.onap.so.adapters.vnf;
-import com.fasterxml.jackson.databind.ObjectMapper;
-import com.github.tomakehurst.wiremock.client.WireMock;
import org.apache.http.HttpStatus;
-import org.junit.Before;
import org.junit.Rule;
import org.junit.Test;
import org.junit.rules.ExpectedException;
-import org.mockito.MockitoAnnotations;
-import org.onap.so.adapters.vdu.CloudInfo;
-import org.onap.so.adapters.vdu.VduInstance;
-import org.onap.so.adapters.vdu.VduStateType;
-import org.onap.so.adapters.vdu.VduStatus;
import org.onap.so.adapters.vnf.exceptions.VnfException;
-import org.onap.so.db.catalog.beans.AuthenticationType;
-import org.onap.so.db.catalog.beans.CloudIdentity;
-import org.onap.so.db.catalog.beans.CloudSite;
-import org.onap.so.db.catalog.beans.ServerType;
import org.onap.so.entity.MsoRequest;
-import org.onap.so.openstack.beans.HeatStatus;
-import org.onap.so.openstack.beans.StackInfo;
import org.onap.so.openstack.beans.VnfRollback;
-import org.onap.so.openstack.utils.MsoMulticloudUtils;
import org.springframework.beans.factory.annotation.Autowired;
-import javax.ws.rs.core.MediaType;
import javax.xml.ws.Holder;
import java.util.HashMap;
import java.util.Map;
@@ -52,15 +36,11 @@ import java.util.Map;
import static com.github.tomakehurst.wiremock.client.WireMock.aResponse;
import static com.github.tomakehurst.wiremock.client.WireMock.delete;
import static com.github.tomakehurst.wiremock.client.WireMock.get;
-import static com.github.tomakehurst.wiremock.client.WireMock.reset;
import static com.github.tomakehurst.wiremock.client.WireMock.stubFor;
import static com.github.tomakehurst.wiremock.client.WireMock.urlPathEqualTo;
-import static org.mockito.Mockito.when;
import static org.onap.so.bpmn.mock.StubOpenStack.mockOpenStackGetStackVfModule_200;
import static org.onap.so.bpmn.mock.StubOpenStack.mockOpenStackGetStackVfModule_404;
import static org.onap.so.bpmn.mock.StubOpenStack.mockOpenStackResponseAccess;
-import static org.onap.so.bpmn.mock.StubOpenStack.mockOpenStackResponseAccessMulticloud;
-import static org.onap.so.bpmn.mock.StubOpenStack.mockOpenstackGetWithResponse;
public class MsoVnfPluginAdapterImplTest extends BaseRestTestUtils {
@@ -72,53 +52,6 @@ public class MsoVnfPluginAdapterImplTest extends BaseRestTestUtils {
String vnfName = "DEV-VF-1802-it3-pwt3-v6-vSAMP10a-addon2-Replace-1001/stackId";
- /***
- * Before each test execution, updating IdentityUrl port value to the ramdom wireMockPort
- * Since URL will be used as a rest call and required to be mocked in unit tests
- */
- @Before
- public void setUp() throws Exception {
- reset();
- mapper = new ObjectMapper();
-
- CloudIdentity identity = new CloudIdentity();
- identity.setId("MTN13");
- identity.setMsoId("m93945");
- identity.setMsoPass("93937EA01B94A10A49279D4572B48369");
- identity.setAdminTenant("admin");
- identity.setMemberRole("admin");
- identity.setTenantMetadata(new Boolean(true));
- identity.setIdentityUrl("http://localhost:"+wireMockPort+"/v2.0");
- identity.setIdentityAuthenticationType(AuthenticationType.USERNAME_PASSWORD);
-
- CloudSite cloudSite = new CloudSite();
- cloudSite.setId("MTN13");
- cloudSite.setCloudVersion("3.0");
- cloudSite.setClli("MDT13");
- cloudSite.setRegionId("MTN13");
- cloudSite.setOrchestrator("multicloud" +
- "");
- identity.setIdentityServerType(ServerType.KEYSTONE);
- cloudSite.setIdentityService(identity);
-
-
-
- stubFor(get(urlPathEqualTo("/cloudSite/MTN13")).willReturn(aResponse()
- .withBody(getBody(mapper.writeValueAsString(cloudSite),wireMockPort, ""))
- .withHeader(org.apache.http.HttpHeaders.CONTENT_TYPE, MediaType.APPLICATION_JSON)
- .withStatus(HttpStatus.SC_OK)));
- stubFor(get(urlPathEqualTo("/cloudSite/DEFAULT")).willReturn(aResponse()
- .withBody(getBody(mapper.writeValueAsString(cloudSite),wireMockPort, ""))
- .withHeader(org.apache.http.HttpHeaders.CONTENT_TYPE,MediaType.APPLICATION_JSON)
- .withStatus(HttpStatus.SC_OK)));
- stubFor(get(urlPathEqualTo("/cloudIdentity/MTN13")).willReturn(aResponse()
- .withBody(getBody(mapper.writeValueAsString(identity),wireMockPort, ""))
- .withHeader(org.apache.http.HttpHeaders.CONTENT_TYPE,MediaType.APPLICATION_JSON)
- .withStatus(HttpStatus.SC_OK)));
- cloudConfig.getCloudSite("MTN13").get().getIdentityService().setIdentityUrl("http://localhost:" + wireMockPort + "/v2.0");
-
- }
-
@Test
public void createVfModule_ModelCustUuidIsNull() throws Exception {
expectedException.expect(VnfException.class);
@@ -155,7 +88,7 @@ public class MsoVnfPluginAdapterImplTest extends BaseRestTestUtils {
new Holder<VnfRollback>());
}
- /* @Test
+ @Test
public void createVfModule_INSTANTIATED() throws Exception {
mockOpenStackResponseAccess(wireMockPort);
mockOpenStackGetStackVfModule_200();
@@ -167,40 +100,7 @@ public class MsoVnfPluginAdapterImplTest extends BaseRestTestUtils {
null, "baseVfHeatStackId", "9b339a61-69ca-465f-86b8-1c72c582b8e8", map,
Boolean.FALSE, Boolean.TRUE, Boolean.FALSE, msoRequest, new Holder<>(), new Holder<Map<String, String>>(),
new Holder<VnfRollback>());
- }*/
-
- @Test
- public void createVfModule_INSTANTIATED_Multicloud() throws Exception {
- mockOpenStackResponseAccessMulticloud(wireMockPort);
- mockOpenStackGetStackVfModule_200();
-
- MsoRequest msoRequest = getMsoRequest();
- Map<String, String> map = new HashMap<>();
- map.put("key1", "value1");
- msoVnfPluginAdapter.createVfModule("MTN13", "88a6ca3ee0394ade9403f075db23167e", "vnf", "1", vnfName, "VFMOD",
- null, "baseVfHeatStackId", "9b339a61-69ca-465f-86b8-1c72c582b8e8", map,
- Boolean.FALSE, Boolean.TRUE, Boolean.FALSE, msoRequest, new Holder<>(), new Holder<Map<String, String>>(),
- new Holder<VnfRollback>());
- }
-
- /*
- @Test
- public void createVfModule_Multicloud() throws Exception {
- expectedException.expect(VnfException.class);
- mockOpenStackResponseAccessMulticloud(wireMockPort);
- mockOpenStackGetStackVfModule_404();
-
- MsoRequest msoRequest = getMsoRequest();
- Map<String, String> map = new HashMap<>();
- map.put("key1", "value1");
- map.put("oof_directives", "{ abc: 123 }");
- map.put("sdnc_directives", "{ def: 456 }");
- msoVnfPluginAdapter.createVfModule("MTN13", "88a6ca3ee0394ade9403f075db23167e", "vnf", "1", vnfName, "VFMOD",
- null, "baseVfHeatStackId", "9b339a61-69ca-465f-86b8-1c72c582b8e8", map,
- Boolean.FALSE, Boolean.TRUE, Boolean.FALSE, msoRequest, new Holder<>(), new Holder<Map<String, String>>(),
- new Holder<VnfRollback>());
}
- */
@Test
public void createVfModule_queryVduNotFoundWithVolumeGroupId() throws Exception {
diff --git a/adapters/mso-openstack-adapters/src/test/resources/__files/MulticloudResponse_Stack.json b/adapters/mso-openstack-adapters/src/test/resources/__files/MulticloudResponse_Stack.json
new file mode 100644
index 0000000000..068cb83a33
--- /dev/null
+++ b/adapters/mso-openstack-adapters/src/test/resources/__files/MulticloudResponse_Stack.json
@@ -0,0 +1,5 @@
+{
+ "template_type":"heat",
+ "workload_id": "vfname",
+ "workload_status":"STATUS"
+ } \ No newline at end of file
diff --git a/adapters/mso-openstack-adapters/src/test/resources/__files/MulticloudResponse_Stack_Create.json b/adapters/mso-openstack-adapters/src/test/resources/__files/MulticloudResponse_Stack_Create.json
new file mode 100644
index 0000000000..b6092bfbe0
--- /dev/null
+++ b/adapters/mso-openstack-adapters/src/test/resources/__files/MulticloudResponse_Stack_Create.json
@@ -0,0 +1,16 @@
+{
+ "template_type": "heat",
+ "workload_id": "workload-id",
+ "template_response":
+ {
+ "stack": {
+ "id": "abcdef00-1234-abcd-5678-ef9123456789",
+ "links": [
+ {
+ "href": "http://localhost:1234/v1/id12345678/stacks/workload-id/abcdef00-1234-abcd-5678-ef9123456789",
+ "rel": "self"
+ }
+ ]
+ }
+ }
+}
diff --git a/adapters/mso-openstack-adapters/src/test/resources/data.sql b/adapters/mso-openstack-adapters/src/test/resources/data.sql
index 960f483e46..0103564b5b 100644
--- a/adapters/mso-openstack-adapters/src/test/resources/data.sql
+++ b/adapters/mso-openstack-adapters/src/test/resources/data.sql
@@ -144,7 +144,7 @@ VALUES ('97b73b0f-2860-49e5-b9c5-b6f91e4ee4a8', 'fsb_volume_image_name_0', b'1',
VALUES ('207fe0dc-4c89-4e5d-9a78-345e99ef7fbe', '547e9ac6-0489-41b6-8289-a7705f6e5c9d', '1', 'TestVnfType::TestModule-0', NULL, 1, 'd187c228-71c6-4c6d-8f33-cd1243442d0a', '97b73b0f-2860-49e5-b9c5-b6f91e4ee4a8', '2018-05-13 12:12:09', 'c5efeb55-4ade-49b8-815c-6a6391f6c46b');
INSERT INTO `heat_environment` (`ARTIFACT_UUID`, `NAME`, `VERSION`, `DESCRIPTION`, `BODY`, `ARTIFACT_CHECKSUM`, `CREATION_TIMESTAMP`) VALUES ('f4a21b58-5654-4cf6-9c50-de42004fe2b4', 'base_vmme.env', '2', 'Auto-generated HEAT Environment deployment artifact', 'parameters:\n Internal1_allow_transit: "True"\n Internal1_dhcp: "False"\n Internal1_forwarding_mode: "l2"\n Internal1_net_cidr: "169.253.0.0"\n Internal1_net_cidr_len: "17"\n Internal1_net_gateway: "169.253.0.3"\n Internal1_rpf: "disable"\n Internal1_shared: "False"\n Internal2_allow_transit: "True"\n Internal2_dhcp: "False"\n Internal2_forwarding_mode: "l2"\n Internal2_net_cidr: "169.255.0.0"\n Internal2_net_cidr_len: "17"\n Internal2_net_gateway: "169.255.0.3"\n Internal2_rpf: "disable"\n Internal2_shared: "False"\n domain_name: "default-domain"\n fsb1_Internal1_mac: "00:80:37:0E:0B:12"\n fsb1_Internal2_mac: "00:80:37:0E:0B:12"\n fsb2_Internal1_mac: "00:80:37:0E:0D:12"\n fsb2_Internal2_mac: "00:80:37:0E:0D:12"\n fsb_flavor_name: "nv.c20r64d1"\n gtp_sec_group_name: "gtp-sec-group"\n int1_sec_group_name: "int1-sec-group"\n int2_sec_group_name: "int2-sec-group"\n ncb1_Internal1_mac: "00:80:37:0E:09:12"\n ncb1_Internal2_mac: "00:80:37:0E:09:12"\n ncb2_Internal1_mac: "00:80:37:0E:0F:12"\n ncb2_Internal2_mac: "00:80:37:0E:0F:12"\n ncb_flavor_name: "nv.c20r64d1"\n oam_sec_group_name: "oam-sec-group"\n pxe_image_name: "MME_PXE-Boot_16ACP04_GA.qcow2"\n sctp-a-IPv6_ethertype: "IPv6"\n sctp-a-display_name: "epc-sctp-a-ipv4v6-sec-group"\n sctp-a-dst_subnet_prefix_v6: "::"\n sctp-a-egress-dst_end_port: 65535\n sctp-a-egress-dst_start_port: 0\n sctp-a-egress-src_end_port: 65535\n sctp-a-egress-src_start_port: 0\n sctp-a-egress_action: "pass"\n sctp-a-egress_dst_subnet_prefix: "0.0.0.0"\n sctp-a-egress_dst_subnet_prefix_len: 0\n sctp-a-egress_ethertype: "IPv4"\n sctp-a-egress_rule_application: "any"\n sctp-a-egress_rule_protocol: "icmp"\n sctp-a-egress_src_addresses: "local"\n sctp-a-ingress-dst_end_port: 65535\n sctp-a-ingress-dst_start_port: 0\n sctp-a-ingress-src_end_port: 65535\n sctp-a-ingress-src_start_port: 0\n sctp-a-ingress-src_subnet_prefix: "0.0.0.0"\n sctp-a-ingress-src_subnet_prefix_len: 0\n sctp-a-ingress_action: "pass"\n sctp-a-ingress_dst_addresses: "local"\n sctp-a-ingress_ethertype: "IPv4"\n sctp-a-ingress_rule_application: "any"\n sctp-a-ingress_rule_protocol: "icmp"\n sctp-a-ipv6-egress-dst_start_port: "0"\n sctp-a-ipv6-egress_action: "pass"\n sctp-a-ipv6-egress_dst_end_port: "65535"\n sctp-a-ipv6-egress_dst_subnet_prefix: "0.0.0.0"\n sctp-a-ipv6-egress_dst_subnet_prefix_len: "0"\n sctp-a-ipv6-egress_ethertype: "IPv4"\n sctp-a-ipv6-egress_rule_application: "any"\n sctp-a-ipv6-egress_rule_protocol: "any"\n sctp-a-ipv6-egress_src_addresses: "local"\n sctp-a-ipv6-egress_src_end_port: "65535"\n sctp-a-ipv6-egress_src_start_port: "0"\n sctp-a-ipv6-ingress-dst_end_port: "65535"\n sctp-a-ipv6-ingress-dst_start_port: "0"\n sctp-a-ipv6-ingress-src_end_port: 65535\n sctp-a-ipv6-ingress-src_start_port: 0\n sctp-a-ipv6-ingress_action: "pass"\n sctp-a-ipv6-ingress_dst_addresses: "local"\n sctp-a-ipv6-ingress_ethertype: "IPv4"\n sctp-a-ipv6-ingress_rule_application: "any"\n sctp-a-ipv6-ingress_rule_protocol: "any"\n sctp-a-ipv6-ingress_src_subnet_prefix: "0.0.0.0"\n sctp-a-ipv6-ingress_src_subnet_prefix_len: "0"\n sctp-a-name: "epc-sctp-a-ipv4v6-sec-group"\n sctp-a-src_subnet_prefix_v6: "::"\n sctp-b-IPv6_ethertype: "IPv6"\n sctp-b-display_name: "epc-sctp-b-ipv4v6-sec-group"\n sctp-b-dst_subnet_prefix_v6: "::"\n sctp-b-egress-dst_end_port: 65535\n sctp-b-egress-dst_start_port: 0\n sctp-b-egress-src_end_port: 65535\n sctp-b-egress-src_start_port: 0\n sctp-b-egress_action: "pass"\n sctp-b-egress_dst_subnet_prefix: "0.0.0.0"\n sctp-b-egress_dst_subnet_prefix_len: 0\n sctp-b-egress_ethertype: "IPv4"\n sctp-b-egress_rule_application: "any"\n sctp-b-egress_rule_protocol: "icmp"\n sctp-b-egress_src_addresses: "local"\n sctp-b-ingress-dst_end_port: 65535\n sctp-b-ingress-dst_start_port: 0\n sctp-b-ingress-src_end_port: 65535\n sctp-b-ingress-src_start_port: 0\n sctp-b-ingress-src_subnet_prefix: "0.0.0.0"\n sctp-b-ingress-src_subnet_prefix_len: 0\n sctp-b-ingress_action: "pass"\n sctp-b-ingress_dst_addresses: "local"\n sctp-b-ingress_ethertype: "IPv4"\n sctp-b-ingress_rule_application: "any"\n sctp-b-ingress_rule_protocol: "icmp"\n sctp-b-ipv6-egress-dst_start_port: "0"\n sctp-b-ipv6-egress_action: "pass"\n sctp-b-ipv6-egress_dst_end_port: "65535"\n sctp-b-ipv6-egress_dst_subnet_prefix: "0.0.0.0"\n sctp-b-ipv6-egress_dst_subnet_prefix_len: "0"\n sctp-b-ipv6-egress_ethertype: "IPv4"\n sctp-b-ipv6-egress_rule_application: "any"\n sctp-b-ipv6-egress_rule_protocol: "any"\n sctp-b-ipv6-egress_src_addresses: "local"\n sctp-b-ipv6-egress_src_end_port: "65535"\n sctp-b-ipv6-egress_src_start_port: "0"\n sctp-b-ipv6-ingress-dst_end_port: "65535"\n sctp-b-ipv6-ingress-dst_start_port: "0"\n sctp-b-ipv6-ingress-src_end_port: 65535\n sctp-b-ipv6-ingress-src_start_port: 0\n sctp-b-ipv6-ingress_action: "pass"\n sctp-b-ipv6-ingress_dst_addresses: "local"\n sctp-b-ipv6-ingress_ethertype: "IPv4"\n sctp-b-ipv6-ingress_rule_application: "any"\n sctp-b-ipv6-ingress_rule_protocol: "any"\n sctp-b-ipv6-ingress_src_subnet_prefix: "0.0.0.0"\n sctp-b-ipv6-ingress_src_subnet_prefix_len: "0"\n sctp-b-name: "epc-sctp-b-ipv4v6-sec-group"\n sctp-b-src_subnet_prefix_v6: "::"\n sctp_rule_protocol: "132"\n vlc_st_availability_zone: "True"\n vlc_st_interface_type_gtp: "other0"\n vlc_st_interface_type_int1: "other1"\n vlc_st_interface_type_int2: "other2"\n vlc_st_interface_type_oam: "management"\n vlc_st_interface_type_sctp_a: "left"\n vlc_st_interface_type_sctp_b: "right"\n vlc_st_service_mode: "in-network-nat"\n vlc_st_service_type: "firewall"\n vlc_st_version: "2"\n vlc_st_virtualization_type: "virtual-machine"\n availability_zone_0: \n availability_zone_1: \n availability_zone_2: \n availability_zone_3: \n fsb_name_0: \n fsb_name_1: \n fsb_oam_ip_0: \n fsb_oam_ip_1: \n fsb_volume_id_0: \n fsb_volume_id_1: \n gtp_net_fqdn: \n gtp_net_name: \n ncb_name_0: \n ncb_name_1: \n oam_net_fqdn: \n oam_net_name: \n sctp_a_net_fqdn: \n sctp_a_net_name: \n sctp_b_net_fqdn: \n sctp_b_net_name: \n vf_module_id: \n vlc_gtp_route_prefixes: \n vlc_oam_route_prefixes: \n vlc_sctp_a_route_prefixes: \n vlc_sctp_b_route_prefixes: \n vnf_id: \n vnf_name: \n', 'MGJjYzM2ZWY1ODBjYzc1MzBiMGQxZmI4N2MyZmFkY2E=', '2018-05-13 12:12:09');
-INSERT INTO `heat_environment` (`ARTIFACT_UUID`, `NAME`, `VERSION`, `DESCRIPTION`, `BODY`, `ARTIFACT_CHECKSUM`, `CREATION_TIMESTAMP`) VALUES ('3375f64b-4709-4802-8713-7a164763f9cd', 'base_vDB_11032016_volume.env', '1', 'Auto-generated HEAT Environment deployment artifact', '#_______________________________________________________________________________________________________________________________________\n #| AT&T Proprietary (Restricted) |\n #| Only for use by authorized individuals or any above-designated team(s) |\n #| within the AT&T companies and not for general distribution |\n #|_______________________________________________________________________________________________________________________________________|\nparameters:\n oam_volume_size: "10"\n prx_volume_size: "10"\n rdn_volume_size: "10"\n#_______________________________________________________________________________________________________________________________________\n #| AT&T Proprietary (Restricted) |\n #| Only for use by authorized individuals or any above-designated team(s) |\n #| within the AT&T companies and not for general distribution |\n #|_______________________________________________________________________________________________________________________________________|\n', 'NGE2YTZjM2YzZDkyNWEzNTljMjQwYzkyNTIyMDU3ZDQ=', '2017-01-26 16:01:40');
+INSERT INTO `heat_environment` (`ARTIFACT_UUID`, `NAME`, `VERSION`, `DESCRIPTION`, `BODY`, `ARTIFACT_CHECKSUM`, `CREATION_TIMESTAMP`) VALUES ('3375f64b-4709-4802-8713-7a164763f9cd', 'base_vDB_11032016_volume.env', '1', 'Auto-generated HEAT Environment deployment artifact', '#', 'NGE2YTZjM2YzZDkyNWEzNTljMjQwYzkyNTIyMDU3ZDQ=', '2017-01-26 16:01:40');
diff --git a/asdc-controller/src/main/java/org/onap/so/asdc/client/ASDCController.java b/asdc-controller/src/main/java/org/onap/so/asdc/client/ASDCController.java
index 7ead6cbb7f..91505918a8 100644
--- a/asdc-controller/src/main/java/org/onap/so/asdc/client/ASDCController.java
+++ b/asdc-controller/src/main/java/org/onap/so/asdc/client/ASDCController.java
@@ -26,7 +26,6 @@ import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.UnsupportedEncodingException;
-import java.util.ArrayList;
import java.util.List;
import org.onap.sdc.api.IDistributionClient;
@@ -46,7 +45,6 @@ import org.onap.so.asdc.client.exceptions.ASDCParametersException;
import org.onap.so.asdc.client.exceptions.ArtifactInstallerException;
import org.onap.so.asdc.installer.IVfResourceInstaller;
import org.onap.so.asdc.installer.ToscaResourceStructure;
-import org.onap.so.asdc.installer.VfModuleStructure;
import org.onap.so.asdc.installer.VfResourceStructure;
import org.onap.so.asdc.installer.bpmn.BpmnInstaller;
import org.onap.so.asdc.installer.heat.ToscaResourceInstaller;
@@ -596,7 +594,7 @@ public class ASDCController {
distributionStatus = wd.getOverallDistributionStatus(iNotif.getDistributionID());
Thread.sleep(watchDogTimeout / 10);
}catch(Exception e){
- LOGGER.debug ("Exception in Watchdog Loop " + e.getMessage());
+ LOGGER.debug ("Exception in Watchdog Loop " + e);
Thread.sleep(watchDogTimeout / 10);
}
@@ -628,7 +626,7 @@ public class ASDCController {
LOGGER.debug ("A&AI Updated succefully with Distribution Status!");
}
catch(Exception e) {
- LOGGER.debug ("Exception in Watchdog executePatchAAI(): " + e.getMessage());
+ LOGGER.debug ("Exception in Watchdog executePatchAAI(): " + e);
watchdogError = "Error calling A&AI " + e.getMessage();
if(e.getCause() != null) {
LOGGER.debug ("Exception caused by: " + e.getCause().getMessage());
@@ -660,7 +658,7 @@ public class ASDCController {
LOGGER.debug ("A&AI Updated succefully with Distribution Status of " + DistributionStatusEnum.DISTRIBUTION_COMPLETE_ERROR.name());
}
catch(Exception aaiException) {
- LOGGER.debug ("Exception in executePatchAAI(): " + aaiException.getMessage());
+ LOGGER.debug ("Exception in executePatchAAI(): " + aaiException);
if(aaiException.getCause() != null) {
LOGGER.debug ("Exception caused by: " + aaiException.getCause().getMessage());
}
@@ -708,6 +706,7 @@ public class ASDCController {
} catch(ArtifactInstallerException e){
deploySuccessful = false;
errorMessage = e.getMessage();
+ LOGGER.debug ("Exception in processResourceNotification(): " + e);
}
} else { // Services with resources
@@ -744,6 +743,7 @@ public class ASDCController {
} catch(ArtifactInstallerException e){
deploySuccessful = false;
errorMessage = e.getMessage();
+ LOGGER.debug ("Exception in processResourceNotification(): " + e);
}
}
diff --git a/bpmn/so-bpmn-infrastructure-common/src/main/groovy/org/onap/so/bpmn/infrastructure/scripts/ActivateSDNCNetworkResource.groovy b/bpmn/so-bpmn-infrastructure-common/src/main/groovy/org/onap/so/bpmn/infrastructure/scripts/ActivateSDNCNetworkResource.groovy
index c48d000ab3..f640aa74f7 100644
--- a/bpmn/so-bpmn-infrastructure-common/src/main/groovy/org/onap/so/bpmn/infrastructure/scripts/ActivateSDNCNetworkResource.groovy
+++ b/bpmn/so-bpmn-infrastructure-common/src/main/groovy/org/onap/so/bpmn/infrastructure/scripts/ActivateSDNCNetworkResource.groovy
@@ -22,17 +22,15 @@ package org.onap.so.bpmn.infrastructure.scripts
import org.apache.commons.lang3.StringUtils
import org.camunda.bpm.engine.delegate.BpmnError
+import org.camunda.bpm.engine.delegate.DelegateExecution
import org.json.JSONObject
import org.json.XML
import org.onap.so.bpmn.common.recipe.ResourceInput
import org.onap.so.bpmn.common.resource.ResourceRequestBuilder
import org.onap.so.bpmn.common.scripts.AbstractServiceTaskProcessor
-import org.camunda.bpm.engine.delegate.DelegateExecution
-import org.onap.so.bpmn.core.json.JsonUtils
import org.onap.so.bpmn.common.scripts.ExceptionUtil
import org.onap.so.bpmn.common.scripts.SDNCAdapterUtils
-import org.onap.so.logger.MsoLogger
-import org.onap.so.bpmn.common.scripts.MsoUtils
+import org.onap.so.bpmn.core.json.JsonUtils
import org.onap.so.logger.MsoLogger
/**
@@ -50,9 +48,6 @@ public class ActivateSDNCNetworkResource extends AbstractServiceTaskProcessor {
SDNCAdapterUtils sdncAdapterUtils = new SDNCAdapterUtils()
- MsoUtils msoUtils = new MsoUtils()
-
-
public void preProcessRequest(DelegateExecution execution) {
def isDebugEnabled = execution.getVariable("isDebugLogEnabled")
msoLogger.info(" ***** Started preProcessRequest *****")
@@ -133,7 +128,6 @@ public class ActivateSDNCNetworkResource extends AbstractServiceTaskProcessor {
}
public void prepareUpdateAfterActivateSDNCResource(DelegateExecution execution) {
- def isDebugEnabled = execution.getVariable("isDebugLogEnabled")
msoLogger.info("started prepareUpdateAfterActivateSDNCResource ")
ResourceInput resourceInputObj = execution.getVariable(Prefix + "resourceInput")
@@ -191,7 +185,6 @@ public class ActivateSDNCNetworkResource extends AbstractServiceTaskProcessor {
}
public void prepareSDNCRequest (DelegateExecution execution) {
- def isDebugEnabled = execution.getVariable("isDebugLogEnabled")
msoLogger.info("Started prepareSDNCRequest ")
try {
@@ -409,7 +402,6 @@ public class ActivateSDNCNetworkResource extends AbstractServiceTaskProcessor {
}
public void postActivateSDNCCall(DelegateExecution execution) {
- def isDebugEnabled = execution.getVariable("isDebugLogEnabled")
msoLogger.info("started postCreateSDNCCall ")
String responseCode = execution.getVariable(Prefix + "sdncCreateReturnCode")
@@ -419,7 +411,6 @@ public class ActivateSDNCNetworkResource extends AbstractServiceTaskProcessor {
}
public void sendSyncResponse(DelegateExecution execution) {
- def isDebugEnabled=execution.getVariable("isDebugLogEnabled")
msoLogger.dubug(" *** sendSyncResponse *** ")
try {
@@ -431,10 +422,10 @@ public class ActivateSDNCNetworkResource extends AbstractServiceTaskProcessor {
execution.setVariable("sentSyncResponse", true)
} catch (Exception ex) {
- String msg = "Exceptuion in sendSyncResponse:" + ex.getMessage()
+ String msg = "Exception in sendSyncResponse:" + ex.getMessage()
msoLogger.debug( msg)
exceptionUtil.buildAndThrowWorkflowException(execution, 7000, msg)
}
- msoLogger.dubug(" ***** Exit sendSyncResopnse *****")
+ msoLogger.dubug(" ***** Exit sendSyncResponse *****")
}
} \ No newline at end of file
diff --git a/bpmn/so-bpmn-infrastructure-common/src/main/groovy/org/onap/so/bpmn/infrastructure/scripts/CreateSDNCNetworkResource.groovy b/bpmn/so-bpmn-infrastructure-common/src/main/groovy/org/onap/so/bpmn/infrastructure/scripts/CreateSDNCNetworkResource.groovy
index 5255b37bb0..7eeeff8546 100644
--- a/bpmn/so-bpmn-infrastructure-common/src/main/groovy/org/onap/so/bpmn/infrastructure/scripts/CreateSDNCNetworkResource.groovy
+++ b/bpmn/so-bpmn-infrastructure-common/src/main/groovy/org/onap/so/bpmn/infrastructure/scripts/CreateSDNCNetworkResource.groovy
@@ -20,32 +20,21 @@
package org.onap.so.bpmn.infrastructure.scripts
+import org.apache.commons.lang3.*
+import org.camunda.bpm.engine.delegate.BpmnError
+import org.camunda.bpm.engine.delegate.DelegateExecution
import org.json.JSONObject
import org.json.XML
-import org.onap.so.bpmn.infrastructure.pnf.implementation.AaiResponse;
-
-import static org.apache.commons.lang3.StringUtils.*;
-import groovy.xml.XmlUtil
-import groovy.json.*
+import org.onap.so.bpmn.common.recipe.ResourceInput
+import org.onap.so.bpmn.common.resource.ResourceRequestBuilder
+import org.onap.so.bpmn.common.scripts.AaiUtil
import org.onap.so.bpmn.common.scripts.AbstractServiceTaskProcessor
import org.onap.so.bpmn.common.scripts.ExceptionUtil
-import org.onap.so.bpmn.common.recipe.ResourceInput;
-import org.onap.so.bpmn.common.resource.ResourceRequestBuilder
-import org.onap.so.bpmn.core.WorkflowException
import org.onap.so.bpmn.core.json.JsonUtils
-import org.onap.so.bpmn.infrastructure.workflow.serviceTask.client.builder.AbstractBuilder
+import org.onap.so.logger.MsoLogger
import org.onap.so.rest.APIResponse
-import org.onap.so.bpmn.common.scripts.SDNCAdapterUtils
-import org.onap.so.bpmn.common.scripts.MsoUtils
-import org.onap.so.bpmn.common.scripts.AaiUtil
-
-import java.util.UUID;
-import org.camunda.bpm.engine.delegate.BpmnError
-import org.camunda.bpm.engine.delegate.DelegateExecution
-import org.apache.commons.lang3.*
-import org.onap.so.bpmn.common.scripts.MsoUtils
-import org.onap.so.logger.MsoLogger
+import static org.apache.commons.lang3.StringUtils.*
/**
* This groovy class supports the <class>CreateSDNCCNetworkResource.bpmn</class> process.
@@ -60,11 +49,8 @@ public class CreateSDNCNetworkResource extends AbstractServiceTaskProcessor {
JsonUtils jsonUtil = new JsonUtils()
- MsoUtils msoUtils = new MsoUtils()
-
public void preProcessRequest(DelegateExecution execution){
- def isDebugEnabled = execution.getVariable("isDebugLogEnabled")
msoLogger.info(" ***** Started preProcessRequest *****")
try {
@@ -155,8 +141,6 @@ public class CreateSDNCNetworkResource extends AbstractServiceTaskProcessor {
execution.setVariable(Prefix + "serviceInstanceId", resourceInputObj.getServiceInstanceId())
execution.setVariable("mso-request-id", requestId)
execution.setVariable("mso-service-instance-id", resourceInputObj.getServiceInstanceId())
- //TODO Here build networkrequest
-
} catch (BpmnError e) {
throw e;
} catch (Exception ex){
@@ -243,12 +227,11 @@ public class CreateSDNCNetworkResource extends AbstractServiceTaskProcessor {
/**
* Pre Process the BPMN Flow Request
- * Inclouds:
+ * Includes:
* generate the nsOperationKey
* generate the nsParameters
*/
public void prepareSDNCRequest (DelegateExecution execution) {
- def isDebugEnabled = execution.getVariable("isDebugLogEnabled")
msoLogger.info(" ***** Started prepareSDNCRequest *****")
try {
@@ -534,7 +517,6 @@ public class CreateSDNCNetworkResource extends AbstractServiceTaskProcessor {
}
public void afterCreateSDNCCall(DelegateExecution execution){
- def isDebugEnabled = execution.getVariable("isDebugLogEnabled")
msoLogger.info(" ***** Started prepareSDNCRequest *****")
String responseCode = execution.getVariable(Prefix + "sdncCreateReturnCode")
String responseObj = execution.getVariable(Prefix + "SuccessIndicator")
@@ -581,7 +563,6 @@ public class CreateSDNCNetworkResource extends AbstractServiceTaskProcessor {
}
public void sendSyncResponse (DelegateExecution execution) {
- def isDebugEnabled=execution.getVariable("isDebugLogEnabled")
msoLogger.debug(" *** sendSyncResponse *** ")
try {
@@ -593,10 +574,10 @@ public class CreateSDNCNetworkResource extends AbstractServiceTaskProcessor {
execution.setVariable("sentSyncResponse", true)
} catch (Exception ex) {
- String msg = "Exceptuion in sendSyncResponse:" + ex.getMessage()
+ String msg = "Exception in sendSyncResponse:" + ex.getMessage()
msoLogger.debug(msg)
exceptionUtil.buildAndThrowWorkflowException(execution, 7000, msg)
}
- msoLogger.debug(" ***** Exit sendSyncResopnse *****")
+ msoLogger.debug(" ***** Exit sendSyncResponse *****")
}
}
diff --git a/bpmn/so-bpmn-infrastructure-common/src/main/groovy/org/onap/so/bpmn/infrastructure/scripts/DeActivateSDNCNetworkResource.groovy b/bpmn/so-bpmn-infrastructure-common/src/main/groovy/org/onap/so/bpmn/infrastructure/scripts/DeActivateSDNCNetworkResource.groovy
index b6ea9f3fef..f13141751b 100644
--- a/bpmn/so-bpmn-infrastructure-common/src/main/groovy/org/onap/so/bpmn/infrastructure/scripts/DeActivateSDNCNetworkResource.groovy
+++ b/bpmn/so-bpmn-infrastructure-common/src/main/groovy/org/onap/so/bpmn/infrastructure/scripts/DeActivateSDNCNetworkResource.groovy
@@ -22,17 +22,13 @@ package org.onap.so.bpmn.infrastructure.scripts
import org.apache.commons.lang3.StringUtils
import org.camunda.bpm.engine.delegate.BpmnError
-import org.json.JSONObject
-import org.json.XML
-import org.onap.so.logger.MsoLogger
+import org.camunda.bpm.engine.delegate.DelegateExecution
import org.onap.so.bpmn.common.recipe.ResourceInput
import org.onap.so.bpmn.common.resource.ResourceRequestBuilder
import org.onap.so.bpmn.common.scripts.AbstractServiceTaskProcessor
-import org.camunda.bpm.engine.delegate.DelegateExecution
-import org.onap.so.bpmn.core.json.JsonUtils
import org.onap.so.bpmn.common.scripts.ExceptionUtil
import org.onap.so.bpmn.common.scripts.SDNCAdapterUtils
-import org.onap.so.bpmn.common.scripts.MsoUtils
+import org.onap.so.bpmn.core.json.JsonUtils
import org.onap.so.logger.MsoLogger
/**
@@ -49,11 +45,8 @@ public class DeActivateSDNCNetworkResource extends AbstractServiceTaskProcessor
SDNCAdapterUtils sdncAdapterUtils = new SDNCAdapterUtils()
- MsoUtils msoUtils = new MsoUtils()
-
public void preProcessRequest(DelegateExecution execution) {
- def isDebugEnabled = execution.getVariable("isDebugLogEnabled")
msoLogger.info(" ***** Started preProcessRequest *****")
try {
@@ -125,8 +118,6 @@ public class DeActivateSDNCNetworkResource extends AbstractServiceTaskProcessor
execution.setVariable(Prefix + "serviceInstanceId", resourceInputObj.getServiceInstanceId())
execution.setVariable("mso-request-id", requestId)
execution.setVariable("mso-service-instance-id", resourceInputObj.getServiceInstanceId())
- //TODO Here build networkrequest
-
} catch (BpmnError e) {
throw e;
} catch (Exception ex){
@@ -137,7 +128,6 @@ public class DeActivateSDNCNetworkResource extends AbstractServiceTaskProcessor
}
public void prepareSDNCRequest(DelegateExecution execution) {
- def isDebugEnabled = execution.getVariable("isDebugLogEnabled")
msoLogger.info(" ***** Started prepareSDNCRequest *****")
try {
@@ -383,7 +373,6 @@ public class DeActivateSDNCNetworkResource extends AbstractServiceTaskProcessor
}
public void postDeactivateSDNCCall(DelegateExecution execution) {
- def isDebugEnabled = execution.getVariable("isDebugLogEnabled")
msoLogger.info(" ***** Started prepareSDNCRequest *****") String responseCode = execution.getVariable(Prefix + "sdncDeleteReturnCode")
String responseObj = execution.getVariable(Prefix + "SuccessIndicator")
@@ -392,7 +381,6 @@ public class DeActivateSDNCNetworkResource extends AbstractServiceTaskProcessor
}
public void sendSyncResponse(DelegateExecution execution) {
- def isDebugEnabled=execution.getVariable("isDebugLogEnabled")
msoLogger.debug(" *** sendSyncResponse *** ")
try {
@@ -404,11 +392,11 @@ public class DeActivateSDNCNetworkResource extends AbstractServiceTaskProcessor
execution.setVariable("sentSyncResponse", true)
} catch (Exception ex) {
- String msg = "Exceptuion in sendSyncResponse:" + ex.getMessage()
+ String msg = "Exception in sendSyncResponse:" + ex.getMessage()
msoLogger.debug(msg)
exceptionUtil.buildAndThrowWorkflowException(execution, 7000, msg)
}
- msoLogger("DEBUG"," ***** Exit sendSyncResopnse *****")
+ msoLogger.debug(" ***** Exit sendSyncResponse *****")
}
} \ No newline at end of file
diff --git a/bpmn/so-bpmn-infrastructure-common/src/main/groovy/org/onap/so/bpmn/infrastructure/scripts/DeleteSDNCNetworkResource.groovy b/bpmn/so-bpmn-infrastructure-common/src/main/groovy/org/onap/so/bpmn/infrastructure/scripts/DeleteSDNCNetworkResource.groovy
index 192788a4ca..3519bd7484 100644
--- a/bpmn/so-bpmn-infrastructure-common/src/main/groovy/org/onap/so/bpmn/infrastructure/scripts/DeleteSDNCNetworkResource.groovy
+++ b/bpmn/so-bpmn-infrastructure-common/src/main/groovy/org/onap/so/bpmn/infrastructure/scripts/DeleteSDNCNetworkResource.groovy
@@ -20,24 +20,18 @@
package org.onap.so.bpmn.infrastructure.scripts
-import org.onap.so.logger.MsoLogger
-
-import static org.apache.commons.lang3.StringUtils.*;
-
import org.apache.commons.lang3.*
-import org.camunda.bpm.engine.delegate.BpmnError
+import org.camunda.bpm.engine.delegate.BpmnError
import org.camunda.bpm.engine.delegate.DelegateExecution
-import org.onap.so.bpmn.common.recipe.ResourceInput;
-import org.onap.so.bpmn.common.resource.ResourceRequestBuilder
-import org.onap.so.bpmn.common.scripts.AbstractServiceTaskProcessor
+import org.onap.so.bpmn.common.recipe.ResourceInput
+import org.onap.so.bpmn.common.resource.ResourceRequestBuilder
+import org.onap.so.bpmn.common.scripts.AbstractServiceTaskProcessor
import org.onap.so.bpmn.common.scripts.ExceptionUtil
-import org.onap.so.bpmn.common.scripts.MsoUtils
import org.onap.so.bpmn.common.scripts.SDNCAdapterUtils
import org.onap.so.bpmn.core.json.JsonUtils
-import org.onap.so.bpmn.common.scripts.MsoUtils
import org.onap.so.logger.MsoLogger
-import groovy.json.*
+import static org.apache.commons.lang3.StringUtils.*
/**
* This groovy class supports the <class>DeleteSDNCCNetworkResource.bpmn</class> process.
@@ -54,10 +48,7 @@ public class DeleteSDNCNetworkResource extends AbstractServiceTaskProcessor {
SDNCAdapterUtils sdncAdapterUtils = new SDNCAdapterUtils()
- MsoUtils msoUtils = new MsoUtils()
-
public void preProcessRequest(DelegateExecution execution){
- def isDebugEnabled = execution.getVariable("isDebugLogEnabled")
msoLogger.info(" ***** Started preProcessRequest *****")
try {
@@ -147,8 +138,6 @@ public class DeleteSDNCNetworkResource extends AbstractServiceTaskProcessor {
execution.setVariable(Prefix + "serviceInstanceId", resourceInputObj.getServiceInstanceId())
execution.setVariable("mso-request-id", requestId)
execution.setVariable("mso-service-instance-id", resourceInputObj.getServiceInstanceId())
- //TODO Here build networkrequest
-
} catch (BpmnError e) {
throw e;
} catch (Exception ex){
@@ -160,12 +149,11 @@ public class DeleteSDNCNetworkResource extends AbstractServiceTaskProcessor {
/**
* Pre Process the BPMN Flow Request
- * Inclouds:
+ * Includes:
* generate the nsOperationKey
* generate the nsParameters
*/
public void prepareSDNCRequest (DelegateExecution execution) {
- def isDebugEnabled = execution.getVariable("isDebugLogEnabled")
msoLogger.info(" ***** Started prepareSDNCRequest *****")
try {
@@ -444,7 +432,6 @@ public class DeleteSDNCNetworkResource extends AbstractServiceTaskProcessor {
}
public void postDeleteSDNCCall(DelegateExecution execution){
- def isDebugEnabled = execution.getVariable("isDebugLogEnabled")
msoLogger.info(" ***** Started prepareSDNCRequest *****")
String responseCode = execution.getVariable(Prefix + "sdncDeleteReturnCode")
String responseObj = execution.getVariable(Prefix + "SuccessIndicator")
@@ -454,7 +441,6 @@ public class DeleteSDNCNetworkResource extends AbstractServiceTaskProcessor {
}
public void sendSyncResponse (DelegateExecution execution) {
- def isDebugEnabled=execution.getVariable("isDebugLogEnabled")
msoLogger.debug( " *** sendSyncResponse *** ")
try {
@@ -466,10 +452,10 @@ public class DeleteSDNCNetworkResource extends AbstractServiceTaskProcessor {
execution.setVariable("sentSyncResponse", true)
} catch (Exception ex) {
- String msg = "Exceptuion in sendSyncResponse:" + ex.getMessage()
+ String msg = "Exception in sendSyncResponse:" + ex.getMessage()
msoLogger.debug( msg)
exceptionUtil.buildAndThrowWorkflowException(execution, 7000, msg)
}
- msoLogger.debug(" ***** Exit sendSyncResopnse *****")
+ msoLogger.debug(" ***** Exit sendSyncResponse *****")
}
}
diff --git a/bpmn/so-bpmn-infrastructure-common/src/main/groovy/org/onap/so/bpmn/infrastructure/scripts/DoCreateVfModule.groovy b/bpmn/so-bpmn-infrastructure-common/src/main/groovy/org/onap/so/bpmn/infrastructure/scripts/DoCreateVfModule.groovy
index 0f50ae6c27..e32d6a8019 100644
--- a/bpmn/so-bpmn-infrastructure-common/src/main/groovy/org/onap/so/bpmn/infrastructure/scripts/DoCreateVfModule.groovy
+++ b/bpmn/so-bpmn-infrastructure-common/src/main/groovy/org/onap/so/bpmn/infrastructure/scripts/DoCreateVfModule.groovy
@@ -502,8 +502,10 @@ public class DoCreateVfModule extends VfModuleBase {
execution.setVariable("rollbackData", rollbackData)
}catch(BpmnError b){
+ msoLogger.error(b);
throw b
}catch(Exception e){
+ msoLogger.error(e);
exceptionUtil.buildAndThrowWorkflowException(execution, 2000, "Internal Error encountered in PreProcess method!")
}
diff --git a/common/src/main/java/org/onap/so/utils/TargetEntity.java b/common/src/main/java/org/onap/so/utils/TargetEntity.java
index 84dae957ba..4d48d349b5 100644
--- a/common/src/main/java/org/onap/so/utils/TargetEntity.java
+++ b/common/src/main/java/org/onap/so/utils/TargetEntity.java
@@ -23,7 +23,8 @@ package org.onap.so.utils;
import java.util.EnumSet;
public enum TargetEntity {
- OPENSTACK_ADAPTER, BPMN, GRM ,AAI, DMAAP, POLICY, CATALOG_DB, REQUEST_DB, VNF_ADAPTER, SDNC_ADAPTER, NARAD;
+ OPENSTACK_ADAPTER, BPMN, GRM ,AAI, DMAAP, POLICY, CATALOG_DB, REQUEST_DB,
+ VNF_ADAPTER, SDNC_ADAPTER, NARAD, MULTICLOUD;
private static final String PREFIX = "SO";
diff --git a/docs/api/SO_Interface.rst b/docs/api/SO_Interface.rst
index 695cedbd48..4f3d9146e4 100644
--- a/docs/api/SO_Interface.rst
+++ b/docs/api/SO_Interface.rst
@@ -18,7 +18,7 @@ Create service instance
+--------------------+-------------------------------------+
|Interface Definition|Description |
+====================+=====================================+
-|URI |{serverRoot}/serviceInstances/v6 |
+|URI |/onap/so/infra/serviceInstantiation/serviceInstances/v6 |
+--------------------+-------------------------------------+
|Operation Type |POST |
+--------------------+-------------------------------------+
@@ -210,7 +210,7 @@ Delete service instance
+--------------------+---------------------------------------------------------+
|Interface Definition|Description |
+====================+=========================================================+
-|URI |{serverRoot}/serviceInstances/v6/{serviceInstanceId} |
+|URI |/onap/so/infra/serviceInstantiation/serviceInstances/v6/{serviceInstanceId} |
+--------------------+---------------------------------------------------------+
|Operation Type |DELETE |
+--------------------+---------------------------------------------------------+
@@ -263,7 +263,7 @@ Create Volume Group
+--------------------+-------------------------------------------------------------------------------------------+
|Interface Definition|Description |
+====================+===========================================================================================+
-|URI |{serverRoot}/serviceInstances/v6/{serviceInstanceId}/vnfs/{vnfInstanceId}/volumeGroups |
+|URI |/onap/so/infra/serviceInstantiation/serviceInstances/v6/{serviceInstanceId}/vnfs/{vnfInstanceId}/volumeGroups |
+--------------------+-------------------------------------------------------------------------------------------+
|Operation Type |POST |
+--------------------+-------------------------------------------------------------------------------------------+
@@ -394,7 +394,7 @@ Delete Volume Group
+--------------------+---------------------------------------------------------------------------------------------------------------------+
|Interface Definition|Description |
+====================+=====================================================================================================================+
-|URI |{serverRoot}/serviceInstances/v6/{serviceInstanceId}/vnfs/{vnfInstanceId}/volumeGroups/{volume-groupinstance-id} |
+|URI |/onap/so/infra/serviceInstantiation/serviceInstances/v6/{serviceInstanceId}/vnfs/{vnfInstanceId}/volumeGroups/{volume-groupinstance-id} |
+--------------------+---------------------------------------------------------------------------------------------------------------------+
|Operation Type |DELETE |
+--------------------+---------------------------------------------------------------------------------------------------------------------+
@@ -455,7 +455,7 @@ Create VF Module
+--------------------+----------------------------------------------------------------------------------------+
|Interface Definition|Description |
+====================+========================================================================================+
-|URI |{serverRoot}/serviceInstances/v6/{serviceInstanceId}/vnfs/{vnfInstanceId}/vfModules |
+|URI |/onap/so/infra/serviceInstantiation/serviceInstances/v6/{serviceInstanceId}/vnfs/{vnfInstanceId}/vfModules |
+--------------------+----------------------------------------------------------------------------------------+
|Operation Type |POST |
+--------------------+----------------------------------------------------------------------------------------+
@@ -550,7 +550,7 @@ Delete VF Module
+--------------------+--------------------------------------------------------------------------------------------------------------+
|Interface Definition|Description |
+====================+==============================================================================================================+
-|URI |{serverRoot}/serviceInstances/v6/{serviceInstanceId}/vnfs/{vnfInstanceId}/vfModules/{vfmoduleinstance-id} |
+|URI |/onap/so/infra/serviceInstantiation/serviceInstances/v6/{serviceInstanceId}/vnfs/{vnfInstanceId}/vfModules/{vfmoduleinstance-id} |
+--------------------+--------------------------------------------------------------------------------------------------------------+
|Operation Type |DELETE |
+--------------------+--------------------------------------------------------------------------------------------------------------+
@@ -619,7 +619,7 @@ Create VNF
+--------------------+--------------------------------------------------------------+
|Interface Definition|Description |
+====================+==============================================================+
-|URI |{serverRoot}/serviceInstances/v6/{serviceInstanceId}/vnfs |
+|URI |/onap/so/infra/serviceInstantiation/serviceInstances/v6/{serviceInstanceId}/vnfs |
+--------------------+--------------------------------------------------------------+
|Operation Type |POST |
+--------------------+--------------------------------------------------------------+
@@ -766,7 +766,7 @@ Delete VNF
+--------------------+------------------------------------------------------------------------------+
|Interface Definition|Description |
+====================+==============================================================================+
-|URI |{serverRoot}/serviceInstances/v6/{serviceInstanceId}/vnfs/{vnfInstanceId} |
+|URI |/onap/so/infra/serviceInstantiation/serviceInstances/v6/{serviceInstanceId}/vnfs/{vnfInstanceId} |
+--------------------+------------------------------------------------------------------------------+
|Operation Type |DELETE |
+--------------------+------------------------------------------------------------------------------+
@@ -847,7 +847,7 @@ GET Orchestration Request
+--------------------+--------------------------------------------------------------+
|Interface Definition|Description |
+====================+==============================================================+
-|URI |{serverRoot}/orchestrationRequests/v6/{request-id} |
+|URI |/onap/so/infra/serviceInstantiation/orchestrationRequests/v6/{request-id} |
+--------------------+--------------------------------------------------------------+
|Operation Type |GET |
+--------------------+--------------------------------------------------------------+
@@ -998,7 +998,7 @@ GET Orchestration Requests
+--------------------+--------------------------------------------------------------+
|Interface Definition|Description |
+====================+==============================================================+
-|URI |{serverRoot}/orchestrationRequests/v6 |
+|URI |/onap/so/infra/serviceInstantiation/orchestrationRequests/v6 |
+--------------------+--------------------------------------------------------------+
|Operation Type |GET |
+--------------------+--------------------------------------------------------------+
@@ -1751,7 +1751,7 @@ Create E2E service instance
+--------------------+-------------------------------------+
|Interface Definition|Description |
+====================+=====================================+
-|URI |{serverRoot}/e2eServiceInstances/v3 |
+|URI |/onap/so/infra/serviceInstantiation/e2eServiceInstances/v3 |
+--------------------+-------------------------------------+
|Operation Type |POST |
+--------------------+-------------------------------------+
@@ -1848,7 +1848,7 @@ Delete E2E service instance
+--------------------+-----------------------------------------------+
|Interface Definition|Description |
+====================+===============================================+
-|URI |{serverRoot}/e2eServiceInstances/v3/{serviceId}|
+|URI |/onap/so/infra/serviceInstantiation/e2eServiceInstances/v3/{serviceId}|
+--------------------+-----------------------------------------------+
|Operation Type |DELETE |
+--------------------+-----------------------------------------------+
@@ -1877,7 +1877,7 @@ Query E2E service operation result
+--------------------+------------------------------------------------------------------------+
|Interface Definition|Description |
+====================+========================================================================+
-|URI |{serverRoot}/e2eServiceInstances/v3/{serviceId}/operations/{operationId}|
+|URI |/onap/so/infra/serviceInstantiation/e2eServiceInstances/v3/{serviceId}/operations/{operationId}|
+--------------------+------------------------------------------------------------------------+
|Operation Type |GET |
+--------------------+------------------------------------------------------------------------+
diff --git a/docs/api/offered_consumed_apis.rst b/docs/api/offered_consumed_apis.rst
index 6f8b7fcb89..0cf7e0f341 100644
--- a/docs/api/offered_consumed_apis.rst
+++ b/docs/api/offered_consumed_apis.rst
@@ -5,11 +5,20 @@
SO Offered and Consumed APIs
=====================================
-SO APIs
---------
-All the Service Orchestrator APIs, both inward and outward are documented in the below link of onap wiki.
-
-.. toctree::
- :maxdepth: 1
-
- SO_Interface.rst
+The list of APIs that SO offerers could be find in the following table:
+
+.. |yml-icon| image:: swagger/images/yaml.png
+ :width: 40px
+
+.. |swagger-icon| image:: swagger/images/swagger.png
+ :width: 40px
+
+.. |html-icon| image:: swagger/images/html.png
+ :width: 40px
+
+.. csv-table::
+ :header: "|Swagger-icon|", "|html-icon|", "|yml-icon|"
+ :widths: 60,60,60
+
+ "swagger json file", "html doc", "yaml doc"
+ ":download:`link <swagger/swagger.json>`", ":download:`link <swagger/swagger.html>`", ":download:`link <swagger/swagger.yaml>`"
diff --git a/docs/api/swagger.json b/docs/api/swagger.json
new file mode 100644
index 0000000000..65d7ff0d11
--- /dev/null
+++ b/docs/api/swagger.json
@@ -0,0 +1,2302 @@
+{
+ "swagger": "2.0",
+ "info": {
+ "version": "3.1.2",
+ "title": "SO Casablanca APIs"
+ },
+ "tags": [
+ {
+ "name": "e2eServiceInstances"
+ },
+ {
+ "name": "globalhealthcheck"
+ },
+ {
+ "name": "nodehealthcheck"
+ },
+ {
+ "name": "onapsoinfraorchestrationRequests"
+ },
+ {
+ "name": "onapsoinfraserviceInstantiation"
+ },
+ {
+ "name": "onapsoinfratasks"
+ },
+ {
+ "name": "onapsoinfracloudResources"
+ },
+ {
+ "name": "onapsoinfracloudResourcesRequests"
+ },
+ {
+ "name": "onapsoinframodelDistributions"
+ }
+ ],
+ "schemes": [
+ "https"
+ ],
+ "paths": {
+ "/e2eServiceInstances/{version}": {
+ "post": {
+ "tags": [
+ "e2eServiceInstances"
+ ],
+ "summary": "Create an E2E Service Instance on a version provided",
+ "description": "",
+ "operationId": "createE2EServiceInstance",
+ "consumes": [
+ "application/json"
+ ],
+ "produces": [
+ "application/json"
+ ],
+ "parameters": [
+ {
+ "in": "body",
+ "name": "body",
+ "required": false,
+ "schema": {
+ "type": "string"
+ }
+ },
+ {
+ "name": "version",
+ "in": "path",
+ "required": true,
+ "type": "string",
+ "pattern": "[vV][3-5]"
+ }
+ ],
+ "responses": {
+ "default": {
+ "description": "successful operation"
+ }
+ }
+ }
+ },
+ "/e2eServiceInstances/{version}/{serviceId}": {
+ "put": {
+ "tags": [
+ "e2eServiceInstances"
+ ],
+ "summary": "Update an E2E Service Instance on a version provided and serviceId",
+ "description": "",
+ "operationId": "updateE2EServiceInstance",
+ "consumes": [
+ "application/json"
+ ],
+ "produces": [
+ "application/json"
+ ],
+ "parameters": [
+ {
+ "in": "body",
+ "name": "body",
+ "required": false,
+ "schema": {
+ "type": "string"
+ }
+ },
+ {
+ "name": "version",
+ "in": "path",
+ "required": true,
+ "type": "string",
+ "pattern": "[vV][3-5]"
+ },
+ {
+ "name": "serviceId",
+ "in": "path",
+ "required": true,
+ "type": "string"
+ }
+ ],
+ "responses": {
+ "default": {
+ "description": "successful operation"
+ }
+ }
+ },
+ "delete": {
+ "tags": [
+ "e2eServiceInstances"
+ ],
+ "summary": "Delete E2E Service Instance on a specified version and serviceId",
+ "description": "",
+ "operationId": "deleteE2EServiceInstance",
+ "consumes": [
+ "application/json"
+ ],
+ "produces": [
+ "application/json"
+ ],
+ "parameters": [
+ {
+ "in": "body",
+ "name": "body",
+ "required": false,
+ "schema": {
+ "type": "string"
+ }
+ },
+ {
+ "name": "version",
+ "in": "path",
+ "required": true,
+ "type": "string",
+ "pattern": "[vV][3-5]"
+ },
+ {
+ "name": "serviceId",
+ "in": "path",
+ "required": true,
+ "type": "string"
+ }
+ ],
+ "responses": {
+ "default": {
+ "description": "successful operation"
+ }
+ }
+ }
+ },
+ "/e2eServiceInstances/{version}/{serviceId}/operations/{operationId}": {
+ "get": {
+ "tags": [
+ "e2eServiceInstances"
+ ],
+ "summary": "Find e2eServiceInstances Requests for a given serviceId and operationId",
+ "description": "",
+ "operationId": "getE2EServiceInstances",
+ "produces": [
+ "application/json"
+ ],
+ "parameters": [
+ {
+ "name": "serviceId",
+ "in": "path",
+ "required": true,
+ "type": "string"
+ },
+ {
+ "name": "version",
+ "in": "path",
+ "required": true,
+ "type": "string",
+ "pattern": "[vV][3-5]"
+ },
+ {
+ "name": "operationId",
+ "in": "path",
+ "required": true,
+ "type": "string"
+ }
+ ],
+ "responses": {
+ "default": {
+ "description": "successful operation"
+ }
+ }
+ }
+ },
+ "/e2eServiceInstances/{version}/{serviceId}/scale": {
+ "post": {
+ "tags": [
+ "e2eServiceInstances"
+ ],
+ "summary": "Scale E2E Service Instance on a specified version",
+ "description": "",
+ "operationId": "scaleE2EServiceInstance",
+ "consumes": [
+ "application/json"
+ ],
+ "produces": [
+ "application/json"
+ ],
+ "parameters": [
+ {
+ "in": "body",
+ "name": "body",
+ "required": false,
+ "schema": {
+ "type": "string"
+ }
+ },
+ {
+ "name": "version",
+ "in": "path",
+ "required": true,
+ "type": "string",
+ "pattern": "[vV][3-5]"
+ },
+ {
+ "name": "serviceId",
+ "in": "path",
+ "required": true,
+ "type": "string"
+ }
+ ],
+ "responses": {
+ "default": {
+ "description": "successful operation"
+ }
+ }
+ }
+ },
+ "/e2eServiceInstances/{version}/{serviceId}/modeldifferences": {
+ "post": {
+ "tags": [
+ "e2eServiceInstances"
+ ],
+ "summary": "Find added and deleted resources of target model for the e2eserviceInstance on a given serviceId ",
+ "description": "",
+ "operationId": "compareModelwithTargetVersion",
+ "consumes": [
+ "application/json"
+ ],
+ "produces": [
+ "application/json"
+ ],
+ "parameters": [
+ {
+ "in": "body",
+ "name": "body",
+ "required": false,
+ "schema": {
+ "type": "string"
+ }
+ },
+ {
+ "name": "serviceId",
+ "in": "path",
+ "required": true,
+ "type": "string"
+ },
+ {
+ "name": "version",
+ "in": "path",
+ "required": true,
+ "type": "string",
+ "pattern": "[vV][3-5]"
+ }
+ ],
+ "responses": {
+ "default": {
+ "description": "successful operation"
+ }
+ }
+ }
+ },
+ "/globalhealthcheck": {
+ "get": {
+ "tags": [
+ "globalhealthcheck"
+ ],
+ "summary": "Performing global health check",
+ "description": "",
+ "operationId": "globalHealthcheck",
+ "produces": [
+ "text/html"
+ ],
+ "parameters": [
+ {
+ "name": "enableBpmn",
+ "in": "query",
+ "required": false,
+ "type": "boolean",
+ "default": true
+ }
+ ],
+ "responses": {
+ "default": {
+ "description": "successful operation"
+ }
+ }
+ }
+ },
+ "/nodehealthcheck": {
+ "get": {
+ "tags": [
+ "nodehealthcheck"
+ ],
+ "summary": "Performing node health check",
+ "description": "",
+ "operationId": "nodeHealthcheck",
+ "produces": [
+ "text/html"
+ ],
+ "parameters": [],
+ "responses": {
+ "default": {
+ "description": "successful operation"
+ }
+ }
+ }
+ },
+ "/onap/so/infra/orchestrationRequests/{version}": {
+ "get": {
+ "tags": [
+ "onapsoinfraorchestrationRequests"
+ ],
+ "summary": "Find Orchestrated Requests for a URI Information",
+ "description": "",
+ "operationId": "getOrchestrationRequest",
+ "produces": [
+ "application/json"
+ ],
+ "parameters": [
+ {
+ "name": "version",
+ "in": "path",
+ "required": true,
+ "type": "string",
+ "pattern": "[vV][4-7]"
+ }
+ ],
+ "responses": {
+ "default": {
+ "description": "successful operation"
+ }
+ }
+ }
+ },
+ "/onap/so/infra/orchestrationRequests/{version}/{requestId}": {
+ "get": {
+ "tags": [
+ "onapsoinfraorchestrationRequests"
+ ],
+ "summary": "Find Orchestrated Requests for a given requestId",
+ "description": "",
+ "operationId": "getOrchestrationRequestForReqId",
+ "produces": [
+ "application/json"
+ ],
+ "parameters": [
+ {
+ "name": "requestId",
+ "in": "path",
+ "required": true,
+ "type": "string"
+ },
+ {
+ "name": "version",
+ "in": "path",
+ "required": true,
+ "type": "string",
+ "pattern": "[vV][4-7]"
+ }
+ ],
+ "responses": {
+ "default": {
+ "description": "successful operation"
+ }
+ }
+ }
+ },
+ "/onap/so/infra/orchestrationRequests/{version}/{requestId}/unlock": {
+ "post": {
+ "tags": [
+ "onapsoinfraorchestrationRequests"
+ ],
+ "summary": "Unlock Orchestrated Requests for a given requestId",
+ "description": "",
+ "operationId": "unlockOrchestrationRequest",
+ "consumes": [
+ "application/json"
+ ],
+ "produces": [
+ "application/json"
+ ],
+ "parameters": [
+ {
+ "in": "body",
+ "name": "body",
+ "required": false,
+ "schema": {
+ "type": "string"
+ }
+ },
+ {
+ "name": "requestId",
+ "in": "path",
+ "required": true,
+ "type": "string"
+ },
+ {
+ "name": "version",
+ "in": "path",
+ "required": true,
+ "type": "string",
+ "pattern": "[vV][4-7]"
+ }
+ ],
+ "responses": {
+ "default": {
+ "description": "successful operation"
+ }
+ }
+ }
+ },
+ "/onap/so/infra/serviceInstantiation/{version}/serviceInstances/{serviceInstanceId}/vnfs/{vnfInstanceId}/vfModules/{vfmoduleInstanceId}/deactivateAndCloudDelete": {
+ "post": {
+ "tags": [
+ "onapsoinfraserviceInstantiation"
+ ],
+ "summary": "Deactivate and Cloud Delete VfModule instance",
+ "description": "",
+ "operationId": "deactivateAndCloudDeleteVfModuleInstance",
+ "consumes": [
+ "application/json"
+ ],
+ "produces": [
+ "application/json"
+ ],
+ "parameters": [
+ {
+ "in": "body",
+ "name": "body",
+ "required": false,
+ "schema": {
+ "type": "string"
+ }
+ },
+ {
+ "name": "version",
+ "in": "path",
+ "required": true,
+ "type": "string",
+ "pattern": "[vV][7]"
+ },
+ {
+ "name": "serviceInstanceId",
+ "in": "path",
+ "required": true,
+ "type": "string"
+ },
+ {
+ "name": "vnfInstanceId",
+ "in": "path",
+ "required": true,
+ "type": "string"
+ },
+ {
+ "name": "vfmoduleInstanceId",
+ "in": "path",
+ "required": true,
+ "type": "string"
+ }
+ ],
+ "responses": {
+ "default": {
+ "description": "successful operation"
+ }
+ }
+ }
+ },
+ "/onap/so/infra/serviceInstantiation/{version}/serviceInstances/{serviceInstanceId}/configurations/{configurationInstanceId}/enablePort": {
+ "post": {
+ "tags": [
+ "onapsoinfraserviceInstantiation"
+ ],
+ "summary": "Enable Port Mirroring",
+ "description": "",
+ "operationId": "enablePort",
+ "consumes": [
+ "application/json"
+ ],
+ "produces": [
+ "application/json"
+ ],
+ "parameters": [
+ {
+ "in": "body",
+ "name": "body",
+ "required": false,
+ "schema": {
+ "type": "string"
+ }
+ },
+ {
+ "name": "version",
+ "in": "path",
+ "required": true,
+ "type": "string",
+ "pattern": "[vV][5-7]"
+ },
+ {
+ "name": "serviceInstanceId",
+ "in": "path",
+ "required": true,
+ "type": "string"
+ },
+ {
+ "name": "configurationInstanceId",
+ "in": "path",
+ "required": true,
+ "type": "string"
+ }
+ ],
+ "responses": {
+ "default": {
+ "description": "successful operation"
+ }
+ }
+ }
+ },
+ "/onap/so/infra/serviceInstantiation/{version}/serviceInstances/{serviceInstanceId}/configurations/{configurationInstanceId}/disablePort": {
+ "post": {
+ "tags": [
+ "onapsoinfraserviceInstantiation"
+ ],
+ "summary": "Disable Port Mirroring",
+ "description": "",
+ "operationId": "disablePort",
+ "consumes": [
+ "application/json"
+ ],
+ "produces": [
+ "application/json"
+ ],
+ "parameters": [
+ {
+ "in": "body",
+ "name": "body",
+ "required": false,
+ "schema": {
+ "type": "string"
+ }
+ },
+ {
+ "name": "version",
+ "in": "path",
+ "required": true,
+ "type": "string",
+ "pattern": "[vV][5-7]"
+ },
+ {
+ "name": "serviceInstanceId",
+ "in": "path",
+ "required": true,
+ "type": "string"
+ },
+ {
+ "name": "configurationInstanceId",
+ "in": "path",
+ "required": true,
+ "type": "string"
+ }
+ ],
+ "responses": {
+ "default": {
+ "description": "successful operation"
+ }
+ }
+ }
+ },
+ "/onap/so/infra/serviceInstantiation/{version}/serviceInstances/{serviceInstanceId}/configurations/{configurationInstanceId}/activate": {
+ "post": {
+ "tags": [
+ "onapsoinfraserviceInstantiation"
+ ],
+ "summary": "Activate Port Mirroring",
+ "description": "",
+ "operationId": "activatePort",
+ "consumes": [
+ "application/json"
+ ],
+ "produces": [
+ "application/json"
+ ],
+ "parameters": [
+ {
+ "in": "body",
+ "name": "body",
+ "required": false,
+ "schema": {
+ "type": "string"
+ }
+ },
+ {
+ "name": "version",
+ "in": "path",
+ "required": true,
+ "type": "string",
+ "pattern": "[vV][5-7]"
+ },
+ {
+ "name": "serviceInstanceId",
+ "in": "path",
+ "required": true,
+ "type": "string"
+ },
+ {
+ "name": "configurationInstanceId",
+ "in": "path",
+ "required": true,
+ "type": "string"
+ }
+ ],
+ "responses": {
+ "default": {
+ "description": "successful operation"
+ }
+ }
+ }
+ },
+ "/onap/so/infra/serviceInstantiation/{version}/serviceInstances/{serviceInstanceId}/configurations/{configurationInstanceId}/deactivate": {
+ "post": {
+ "tags": [
+ "onapsoinfraserviceInstantiation"
+ ],
+ "summary": "Deactivate Port Mirroring",
+ "description": "",
+ "operationId": "deactivatePort",
+ "consumes": [
+ "application/json"
+ ],
+ "produces": [
+ "application/json"
+ ],
+ "parameters": [
+ {
+ "in": "body",
+ "name": "body",
+ "required": false,
+ "schema": {
+ "type": "string"
+ }
+ },
+ {
+ "name": "version",
+ "in": "path",
+ "required": true,
+ "type": "string",
+ "pattern": "[vV][5-7]"
+ },
+ {
+ "name": "serviceInstanceId",
+ "in": "path",
+ "required": true,
+ "type": "string"
+ },
+ {
+ "name": "configurationInstanceId",
+ "in": "path",
+ "required": true,
+ "type": "string"
+ }
+ ],
+ "responses": {
+ "default": {
+ "description": "successful operation"
+ }
+ }
+ }
+ },
+ "/onap/so/infra/serviceInstantiation/{version}/serviceInstances/{serviceInstanceId}/addRelationships": {
+ "post": {
+ "tags": [
+ "onapsoinfraserviceInstantiation"
+ ],
+ "summary": "Add Relationships to a Service Instance",
+ "description": "",
+ "operationId": "addRelationships",
+ "consumes": [
+ "application/json"
+ ],
+ "produces": [
+ "application/json"
+ ],
+ "parameters": [
+ {
+ "in": "body",
+ "name": "body",
+ "required": false,
+ "schema": {
+ "type": "string"
+ }
+ },
+ {
+ "name": "version",
+ "in": "path",
+ "required": true,
+ "type": "string",
+ "pattern": "[vV][6-7]"
+ },
+ {
+ "name": "serviceInstanceId",
+ "in": "path",
+ "required": true,
+ "type": "string"
+ }
+ ],
+ "responses": {
+ "default": {
+ "description": "successful operation"
+ }
+ }
+ }
+ },
+ "/onap/so/infra/serviceInstantiation/{version}/serviceInstances/{serviceInstanceId}/vnfs/{vnfInstanceId}/vfModules/scaleOut": {
+ "post": {
+ "tags": [
+ "onapsoinfraserviceInstantiation"
+ ],
+ "summary": "VF Auto Scale Out",
+ "description": "",
+ "operationId": "scaleOutVfModule",
+ "consumes": [
+ "application/json"
+ ],
+ "produces": [
+ "application/json"
+ ],
+ "parameters": [
+ {
+ "in": "body",
+ "name": "body",
+ "required": false,
+ "schema": {
+ "type": "string"
+ }
+ },
+ {
+ "name": "version",
+ "in": "path",
+ "required": true,
+ "type": "string",
+ "pattern": "[vV][7]"
+ },
+ {
+ "name": "serviceInstanceId",
+ "in": "path",
+ "required": true,
+ "type": "string"
+ },
+ {
+ "name": "vnfInstanceId",
+ "in": "path",
+ "required": true,
+ "type": "string"
+ }
+ ],
+ "responses": {
+ "default": {
+ "description": "successful operation"
+ }
+ }
+ }
+ },
+ "/onap/so/infra/serviceInstantiation/{version}/serviceInstances/{serviceInstanceId}/vnfs/{vnfInstanceId}/inPlaceSoftwareUpdate": {
+ "post": {
+ "tags": [
+ "onapsoinfraserviceInstantiation"
+ ],
+ "summary": "Perform VNF software update",
+ "description": "",
+ "operationId": "inPlaceSoftwareUpdate",
+ "consumes": [
+ "application/json"
+ ],
+ "produces": [
+ "application/json"
+ ],
+ "parameters": [
+ {
+ "in": "body",
+ "name": "body",
+ "required": false,
+ "schema": {
+ "type": "string"
+ }
+ },
+ {
+ "name": "version",
+ "in": "path",
+ "required": true,
+ "type": "string",
+ "pattern": "[vV][6-7]"
+ },
+ {
+ "name": "serviceInstanceId",
+ "in": "path",
+ "required": true,
+ "type": "string"
+ },
+ {
+ "name": "vnfInstanceId",
+ "in": "path",
+ "required": true,
+ "type": "string"
+ }
+ ],
+ "responses": {
+ "default": {
+ "description": "successful operation"
+ }
+ }
+ }
+ },
+ "/onap/so/infra/serviceInstantiation/{version}/serviceInstances/{serviceInstanceId}/vnfs/{vnfInstanceId}/applyUpdatedConfig": {
+ "post": {
+ "tags": [
+ "onapsoinfraserviceInstantiation"
+ ],
+ "summary": "Apply updated configuration",
+ "description": "",
+ "operationId": "applyUpdatedConfig",
+ "consumes": [
+ "application/json"
+ ],
+ "produces": [
+ "application/json"
+ ],
+ "parameters": [
+ {
+ "in": "body",
+ "name": "body",
+ "required": false,
+ "schema": {
+ "type": "string"
+ }
+ },
+ {
+ "name": "version",
+ "in": "path",
+ "required": true,
+ "type": "string",
+ "pattern": "[vV][6-7]"
+ },
+ {
+ "name": "serviceInstanceId",
+ "in": "path",
+ "required": true,
+ "type": "string"
+ },
+ {
+ "name": "vnfInstanceId",
+ "in": "path",
+ "required": true,
+ "type": "string"
+ }
+ ],
+ "responses": {
+ "default": {
+ "description": "successful operation"
+ }
+ }
+ }
+ },
+ "/onap/so/infra/serviceInstantiation/{version}/serviceInstances": {
+ "post": {
+ "tags": [
+ "onapsoinfraserviceInstantiation"
+ ],
+ "summary": "Create a Service Instance on a version provided",
+ "description": "",
+ "operationId": "createServiceInstance",
+ "consumes": [
+ "application/json"
+ ],
+ "produces": [
+ "application/json"
+ ],
+ "parameters": [
+ {
+ "in": "body",
+ "name": "body",
+ "required": false,
+ "schema": {
+ "type": "string"
+ }
+ },
+ {
+ "name": "version",
+ "in": "path",
+ "required": true,
+ "type": "string",
+ "pattern": "[vV][5-7]"
+ }
+ ],
+ "responses": {
+ "default": {
+ "description": "successful operation"
+ }
+ }
+ }
+ },
+ "/onap/so/infra/serviceInstantiation/{version}/serviceInstances/{serviceInstanceId}/activate": {
+ "post": {
+ "tags": [
+ "onapsoinfraserviceInstantiation"
+ ],
+ "summary": "Activate provided Service Instance",
+ "description": "",
+ "operationId": "activateServiceInstance",
+ "consumes": [
+ "application/json"
+ ],
+ "produces": [
+ "application/json"
+ ],
+ "parameters": [
+ {
+ "in": "body",
+ "name": "body",
+ "required": false,
+ "schema": {
+ "type": "string"
+ }
+ },
+ {
+ "name": "version",
+ "in": "path",
+ "required": true,
+ "type": "string",
+ "pattern": "[vV][5-7]"
+ },
+ {
+ "name": "serviceInstanceId",
+ "in": "path",
+ "required": true,
+ "type": "string"
+ }
+ ],
+ "responses": {
+ "default": {
+ "description": "successful operation"
+ }
+ }
+ }
+ },
+ "/onap/so/infra/serviceInstantiation/{version}/serviceInstances/{serviceInstanceId}/deactivate": {
+ "post": {
+ "tags": [
+ "onapsoinfraserviceInstantiation"
+ ],
+ "summary": "Deactivate provided Service Instance",
+ "description": "",
+ "operationId": "deactivateServiceInstance",
+ "consumes": [
+ "application/json"
+ ],
+ "produces": [
+ "application/json"
+ ],
+ "parameters": [
+ {
+ "in": "body",
+ "name": "body",
+ "required": false,
+ "schema": {
+ "type": "string"
+ }
+ },
+ {
+ "name": "version",
+ "in": "path",
+ "required": true,
+ "type": "string",
+ "pattern": "[vV][5-7]"
+ },
+ {
+ "name": "serviceInstanceId",
+ "in": "path",
+ "required": true,
+ "type": "string"
+ }
+ ],
+ "responses": {
+ "default": {
+ "description": "successful operation"
+ }
+ }
+ }
+ },
+ "/onap/so/infra/serviceInstantiation/{version}/serviceInstances/{serviceInstanceId}": {
+ "delete": {
+ "tags": [
+ "onapsoinfraserviceInstantiation"
+ ],
+ "summary": "Delete provided Service Instance",
+ "description": "",
+ "operationId": "deleteServiceInstance",
+ "consumes": [
+ "application/json"
+ ],
+ "produces": [
+ "application/json"
+ ],
+ "parameters": [
+ {
+ "in": "body",
+ "name": "body",
+ "required": false,
+ "schema": {
+ "type": "string"
+ }
+ },
+ {
+ "name": "version",
+ "in": "path",
+ "required": true,
+ "type": "string",
+ "pattern": "[vV][5-7]"
+ },
+ {
+ "name": "serviceInstanceId",
+ "in": "path",
+ "required": true,
+ "type": "string"
+ }
+ ],
+ "responses": {
+ "default": {
+ "description": "successful operation"
+ }
+ }
+ }
+ },
+ "/onap/so/infra/serviceInstantiation/{version}/serviceInstances/assign": {
+ "post": {
+ "tags": [
+ "onapsoinfraserviceInstantiation"
+ ],
+ "summary": "Assign Service Instance",
+ "description": "",
+ "operationId": "assignServiceInstance",
+ "consumes": [
+ "application/json"
+ ],
+ "produces": [
+ "application/json"
+ ],
+ "parameters": [
+ {
+ "in": "body",
+ "name": "body",
+ "required": false,
+ "schema": {
+ "type": "string"
+ }
+ },
+ {
+ "name": "version",
+ "in": "path",
+ "required": true,
+ "type": "string",
+ "pattern": "[vV][7]"
+ }
+ ],
+ "responses": {
+ "default": {
+ "description": "successful operation"
+ }
+ }
+ }
+ },
+ "/onap/so/infra/serviceInstantiation/{version}/serviceInstances/{serviceInstanceId}/unassign": {
+ "post": {
+ "tags": [
+ "onapsoinfraserviceInstantiation"
+ ],
+ "summary": "Unassign Service Instance",
+ "description": "",
+ "operationId": "unassignServiceInstance",
+ "consumes": [
+ "application/json"
+ ],
+ "produces": [
+ "application/json"
+ ],
+ "parameters": [
+ {
+ "in": "body",
+ "name": "body",
+ "required": false,
+ "schema": {
+ "type": "string"
+ }
+ },
+ {
+ "name": "version",
+ "in": "path",
+ "required": true,
+ "type": "string",
+ "pattern": "[vV][7]"
+ },
+ {
+ "name": "serviceInstanceId",
+ "in": "path",
+ "required": true,
+ "type": "string"
+ }
+ ],
+ "responses": {
+ "default": {
+ "description": "successful operation"
+ }
+ }
+ }
+ },
+ "/onap/so/infra/serviceInstantiation/{version}/serviceInstances/{serviceInstanceId}/configurations": {
+ "post": {
+ "tags": [
+ "onapsoinfraserviceInstantiation"
+ ],
+ "summary": "Create Port Mirroring Configuration",
+ "description": "",
+ "operationId": "createPortConfiguration",
+ "consumes": [
+ "application/json"
+ ],
+ "produces": [
+ "application/json"
+ ],
+ "parameters": [
+ {
+ "in": "body",
+ "name": "body",
+ "required": false,
+ "schema": {
+ "type": "string"
+ }
+ },
+ {
+ "name": "version",
+ "in": "path",
+ "required": true,
+ "type": "string",
+ "pattern": "[vV][5-7]"
+ },
+ {
+ "name": "serviceInstanceId",
+ "in": "path",
+ "required": true,
+ "type": "string"
+ }
+ ],
+ "responses": {
+ "default": {
+ "description": "successful operation"
+ }
+ }
+ }
+ },
+ "/onap/so/infra/serviceInstantiation/{version}/serviceInstances/{serviceInstanceId}/configurations/{configurationInstanceId}": {
+ "delete": {
+ "tags": [
+ "onapsoinfraserviceInstantiation"
+ ],
+ "summary": "Delete provided Port",
+ "description": "",
+ "operationId": "deletePortConfiguration",
+ "consumes": [
+ "application/json"
+ ],
+ "produces": [
+ "application/json"
+ ],
+ "parameters": [
+ {
+ "in": "body",
+ "name": "body",
+ "required": false,
+ "schema": {
+ "type": "string"
+ }
+ },
+ {
+ "name": "version",
+ "in": "path",
+ "required": true,
+ "type": "string",
+ "pattern": "[vV][5-7]"
+ },
+ {
+ "name": "serviceInstanceId",
+ "in": "path",
+ "required": true,
+ "type": "string"
+ },
+ {
+ "name": "configurationInstanceId",
+ "in": "path",
+ "required": true,
+ "type": "string"
+ }
+ ],
+ "responses": {
+ "default": {
+ "description": "successful operation"
+ }
+ }
+ }
+ },
+ "/onap/so/infra/serviceInstantiation/{version}/serviceInstances/{serviceInstanceId}/removeRelationships": {
+ "post": {
+ "tags": [
+ "onapsoinfraserviceInstantiation"
+ ],
+ "summary": "Remove Relationships from Service Instance",
+ "description": "",
+ "operationId": "removeRelationships",
+ "consumes": [
+ "application/json"
+ ],
+ "produces": [
+ "application/json"
+ ],
+ "parameters": [
+ {
+ "in": "body",
+ "name": "body",
+ "required": false,
+ "schema": {
+ "type": "string"
+ }
+ },
+ {
+ "name": "version",
+ "in": "path",
+ "required": true,
+ "type": "string",
+ "pattern": "[vV][6-7]"
+ },
+ {
+ "name": "serviceInstanceId",
+ "in": "path",
+ "required": true,
+ "type": "string"
+ }
+ ],
+ "responses": {
+ "default": {
+ "description": "successful operation"
+ }
+ }
+ }
+ },
+ "/onap/so/infra/serviceInstantiation/{version}/serviceInstances/{serviceInstanceId}/vnfs": {
+ "post": {
+ "tags": [
+ "onapsoinfraserviceInstantiation"
+ ],
+ "summary": "Create VNF on a specified version and serviceInstance",
+ "description": "",
+ "operationId": "createVnfInstance",
+ "consumes": [
+ "application/json"
+ ],
+ "produces": [
+ "application/json"
+ ],
+ "parameters": [
+ {
+ "in": "body",
+ "name": "body",
+ "required": false,
+ "schema": {
+ "type": "string"
+ }
+ },
+ {
+ "name": "version",
+ "in": "path",
+ "required": true,
+ "type": "string",
+ "pattern": "[vV][5-7]"
+ },
+ {
+ "name": "serviceInstanceId",
+ "in": "path",
+ "required": true,
+ "type": "string"
+ }
+ ],
+ "responses": {
+ "default": {
+ "description": "successful operation"
+ }
+ }
+ }
+ },
+ "/onap/so/infra/serviceInstantiation/{version}/serviceInstances/{serviceInstanceId}/vnfs/{vnfInstanceId}/replace": {
+ "post": {
+ "tags": [
+ "onapsoinfraserviceInstantiation"
+ ],
+ "summary": "Replace provided VNF instance",
+ "description": "",
+ "operationId": "replaceVnfInstance",
+ "consumes": [
+ "application/json"
+ ],
+ "produces": [
+ "application/json"
+ ],
+ "parameters": [
+ {
+ "in": "body",
+ "name": "body",
+ "required": false,
+ "schema": {
+ "type": "string"
+ }
+ },
+ {
+ "name": "version",
+ "in": "path",
+ "required": true,
+ "type": "string",
+ "pattern": "[vV][5-7]"
+ },
+ {
+ "name": "serviceInstanceId",
+ "in": "path",
+ "required": true,
+ "type": "string"
+ },
+ {
+ "name": "vnfInstanceId",
+ "in": "path",
+ "required": true,
+ "type": "string"
+ }
+ ],
+ "responses": {
+ "default": {
+ "description": "successful operation"
+ }
+ }
+ }
+ },
+ "/onap/so/infra/serviceInstantiation/{version}/serviceInstances/{serviceInstanceId}/vnfs/{vnfInstanceId}": {
+ "put": {
+ "tags": [
+ "onapsoinfraserviceInstantiation"
+ ],
+ "summary": "Update VNF on a specified version, serviceInstance and vnfInstance",
+ "description": "",
+ "operationId": "updateVnfInstance",
+ "consumes": [
+ "application/json"
+ ],
+ "produces": [
+ "application/json"
+ ],
+ "parameters": [
+ {
+ "in": "body",
+ "name": "body",
+ "required": false,
+ "schema": {
+ "type": "string"
+ }
+ },
+ {
+ "name": "version",
+ "in": "path",
+ "required": true,
+ "type": "string",
+ "pattern": "[vV][5-7]"
+ },
+ {
+ "name": "serviceInstanceId",
+ "in": "path",
+ "required": true,
+ "type": "string"
+ },
+ {
+ "name": "vnfInstanceId",
+ "in": "path",
+ "required": true,
+ "type": "string"
+ }
+ ],
+ "responses": {
+ "default": {
+ "description": "successful operation"
+ }
+ }
+ },
+ "delete": {
+ "tags": [
+ "onapsoinfraserviceInstantiation"
+ ],
+ "summary": "Delete provided VNF instance",
+ "description": "",
+ "operationId": "deleteVnfInstance",
+ "consumes": [
+ "application/json"
+ ],
+ "produces": [
+ "application/json"
+ ],
+ "parameters": [
+ {
+ "in": "body",
+ "name": "body",
+ "required": false,
+ "schema": {
+ "type": "string"
+ }
+ },
+ {
+ "name": "version",
+ "in": "path",
+ "required": true,
+ "type": "string",
+ "pattern": "[vV][5-7]"
+ },
+ {
+ "name": "serviceInstanceId",
+ "in": "path",
+ "required": true,
+ "type": "string"
+ },
+ {
+ "name": "vnfInstanceId",
+ "in": "path",
+ "required": true,
+ "type": "string"
+ }
+ ],
+ "responses": {
+ "default": {
+ "description": "successful operation"
+ }
+ }
+ }
+ },
+ "/onap/so/infra/serviceInstantiation/{version}/serviceInstances/{serviceInstanceId}/vnfs/{vnfInstanceId}/vfModules": {
+ "post": {
+ "tags": [
+ "onapsoinfraserviceInstantiation"
+ ],
+ "summary": "Create VfModule on a specified version, serviceInstance and vnfInstance",
+ "description": "",
+ "operationId": "createVfModuleInstance",
+ "consumes": [
+ "application/json"
+ ],
+ "produces": [
+ "application/json"
+ ],
+ "parameters": [
+ {
+ "in": "body",
+ "name": "body",
+ "required": false,
+ "schema": {
+ "type": "string"
+ }
+ },
+ {
+ "name": "version",
+ "in": "path",
+ "required": true,
+ "type": "string",
+ "pattern": "[vV][5-7]"
+ },
+ {
+ "name": "serviceInstanceId",
+ "in": "path",
+ "required": true,
+ "type": "string"
+ },
+ {
+ "name": "vnfInstanceId",
+ "in": "path",
+ "required": true,
+ "type": "string"
+ }
+ ],
+ "responses": {
+ "default": {
+ "description": "successful operation"
+ }
+ }
+ }
+ },
+ "/onap/so/infra/serviceInstantiation/{version}/serviceInstances/{serviceInstanceId}/vnfs/{vnfInstanceId}/vfModules/{vfmoduleInstanceId}/replace": {
+ "post": {
+ "tags": [
+ "onapsoinfraserviceInstantiation"
+ ],
+ "summary": "Create VfModule on a specified version, serviceInstance and vnfInstance",
+ "description": "",
+ "operationId": "replaceVfModuleInstance",
+ "consumes": [
+ "application/json"
+ ],
+ "produces": [
+ "application/json"
+ ],
+ "parameters": [
+ {
+ "in": "body",
+ "name": "body",
+ "required": false,
+ "schema": {
+ "type": "string"
+ }
+ },
+ {
+ "name": "version",
+ "in": "path",
+ "required": true,
+ "type": "string",
+ "pattern": "[vV][5-7]"
+ },
+ {
+ "name": "serviceInstanceId",
+ "in": "path",
+ "required": true,
+ "type": "string"
+ },
+ {
+ "name": "vnfInstanceId",
+ "in": "path",
+ "required": true,
+ "type": "string"
+ },
+ {
+ "name": "vfmoduleInstanceId",
+ "in": "path",
+ "required": true,
+ "type": "string"
+ }
+ ],
+ "responses": {
+ "default": {
+ "description": "successful operation"
+ }
+ }
+ }
+ },
+ "/onap/so/infra/serviceInstantiation/{version}/serviceInstances/{serviceInstanceId}/vnfs/{vnfInstanceId}/vfModules/{vfmoduleInstanceId}": {
+ "put": {
+ "tags": [
+ "onapsoinfraserviceInstantiation"
+ ],
+ "summary": "Update VfModule on a specified version, serviceInstance, vnfInstance and vfModule",
+ "description": "",
+ "operationId": "updateVfModuleInstance",
+ "consumes": [
+ "application/json"
+ ],
+ "produces": [
+ "application/json"
+ ],
+ "parameters": [
+ {
+ "in": "body",
+ "name": "body",
+ "required": false,
+ "schema": {
+ "type": "string"
+ }
+ },
+ {
+ "name": "version",
+ "in": "path",
+ "required": true,
+ "type": "string",
+ "pattern": "[vV][5-7]"
+ },
+ {
+ "name": "serviceInstanceId",
+ "in": "path",
+ "required": true,
+ "type": "string"
+ },
+ {
+ "name": "vnfInstanceId",
+ "in": "path",
+ "required": true,
+ "type": "string"
+ },
+ {
+ "name": "vfmoduleInstanceId",
+ "in": "path",
+ "required": true,
+ "type": "string"
+ }
+ ],
+ "responses": {
+ "default": {
+ "description": "successful operation"
+ }
+ }
+ },
+ "delete": {
+ "tags": [
+ "onapsoinfraserviceInstantiation"
+ ],
+ "summary": "Delete provided VfModule instance",
+ "description": "",
+ "operationId": "deleteVfModuleInstance",
+ "consumes": [
+ "application/json"
+ ],
+ "produces": [
+ "application/json"
+ ],
+ "parameters": [
+ {
+ "in": "body",
+ "name": "body",
+ "required": false,
+ "schema": {
+ "type": "string"
+ }
+ },
+ {
+ "name": "version",
+ "in": "path",
+ "required": true,
+ "type": "string",
+ "pattern": "[vV][5-7]"
+ },
+ {
+ "name": "serviceInstanceId",
+ "in": "path",
+ "required": true,
+ "type": "string"
+ },
+ {
+ "name": "vnfInstanceId",
+ "in": "path",
+ "required": true,
+ "type": "string"
+ },
+ {
+ "name": "vfmoduleInstanceId",
+ "in": "path",
+ "required": true,
+ "type": "string"
+ }
+ ],
+ "responses": {
+ "default": {
+ "description": "successful operation"
+ }
+ }
+ }
+ },
+ "/onap/so/infra/serviceInstantiation/{version}/serviceInstances/{serviceInstanceId}/vnfs/{vnfInstanceId}/volumeGroups": {
+ "post": {
+ "tags": [
+ "onapsoinfraserviceInstantiation"
+ ],
+ "summary": "Create VolumeGroup on a specified version, serviceInstance, vnfInstance",
+ "description": "",
+ "operationId": "createVolumeGroupInstance",
+ "consumes": [
+ "application/json"
+ ],
+ "produces": [
+ "application/json"
+ ],
+ "parameters": [
+ {
+ "in": "body",
+ "name": "body",
+ "required": false,
+ "schema": {
+ "type": "string"
+ }
+ },
+ {
+ "name": "version",
+ "in": "path",
+ "required": true,
+ "type": "string",
+ "pattern": "[vV][5-7]"
+ },
+ {
+ "name": "serviceInstanceId",
+ "in": "path",
+ "required": true,
+ "type": "string"
+ },
+ {
+ "name": "vnfInstanceId",
+ "in": "path",
+ "required": true,
+ "type": "string"
+ }
+ ],
+ "responses": {
+ "default": {
+ "description": "successful operation"
+ }
+ }
+ }
+ },
+ "/onap/so/infra/serviceInstantiation/{version}/serviceInstances/{serviceInstanceId}/vnfs/{vnfInstanceId}/volumeGroups/{volumeGroupInstanceId}": {
+ "put": {
+ "tags": [
+ "onapsoinfraserviceInstantiation"
+ ],
+ "summary": "Update VolumeGroup on a specified version, serviceInstance, vnfInstance and volumeGroup",
+ "description": "",
+ "operationId": "updateVolumeGroupInstance",
+ "consumes": [
+ "application/json"
+ ],
+ "produces": [
+ "application/json"
+ ],
+ "parameters": [
+ {
+ "in": "body",
+ "name": "body",
+ "required": false,
+ "schema": {
+ "type": "string"
+ }
+ },
+ {
+ "name": "version",
+ "in": "path",
+ "required": true,
+ "type": "string",
+ "pattern": "[vV][5-7]"
+ },
+ {
+ "name": "serviceInstanceId",
+ "in": "path",
+ "required": true,
+ "type": "string"
+ },
+ {
+ "name": "vnfInstanceId",
+ "in": "path",
+ "required": true,
+ "type": "string"
+ },
+ {
+ "name": "volumeGroupInstanceId",
+ "in": "path",
+ "required": true,
+ "type": "string"
+ }
+ ],
+ "responses": {
+ "default": {
+ "description": "successful operation"
+ }
+ }
+ },
+ "delete": {
+ "tags": [
+ "onapsoinfraserviceInstantiation"
+ ],
+ "summary": "Delete provided VolumeGroup instance",
+ "description": "",
+ "operationId": "deleteVolumeGroupInstance",
+ "consumes": [
+ "application/json"
+ ],
+ "produces": [
+ "application/json"
+ ],
+ "parameters": [
+ {
+ "in": "body",
+ "name": "body",
+ "required": false,
+ "schema": {
+ "type": "string"
+ }
+ },
+ {
+ "name": "version",
+ "in": "path",
+ "required": true,
+ "type": "string",
+ "pattern": "[vV][5-7]"
+ },
+ {
+ "name": "serviceInstanceId",
+ "in": "path",
+ "required": true,
+ "type": "string"
+ },
+ {
+ "name": "vnfInstanceId",
+ "in": "path",
+ "required": true,
+ "type": "string"
+ },
+ {
+ "name": "volumeGroupInstanceId",
+ "in": "path",
+ "required": true,
+ "type": "string"
+ }
+ ],
+ "responses": {
+ "default": {
+ "description": "successful operation"
+ }
+ }
+ }
+ },
+ "/onap/so/infra/serviceInstantiation/{version}/serviceInstances/{serviceInstanceId}/networks": {
+ "post": {
+ "tags": [
+ "onapsoinfraserviceInstantiation"
+ ],
+ "summary": "Create NetworkInstance on a specified version and serviceInstance ",
+ "description": "",
+ "operationId": "createNetworkInstance",
+ "consumes": [
+ "application/json"
+ ],
+ "produces": [
+ "application/json"
+ ],
+ "parameters": [
+ {
+ "in": "body",
+ "name": "body",
+ "required": false,
+ "schema": {
+ "type": "string"
+ }
+ },
+ {
+ "name": "version",
+ "in": "path",
+ "required": true,
+ "type": "string",
+ "pattern": "[vV][5-7]"
+ },
+ {
+ "name": "serviceInstanceId",
+ "in": "path",
+ "required": true,
+ "type": "string"
+ }
+ ],
+ "responses": {
+ "default": {
+ "description": "successful operation"
+ }
+ }
+ }
+ },
+ "/onap/so/infra/serviceInstantiation/{version}/serviceInstances/{serviceInstanceId}/networks/{networkInstanceId}": {
+ "put": {
+ "tags": [
+ "onapsoinfraserviceInstantiation"
+ ],
+ "summary": "Update VolumeGroup on a specified version, serviceInstance, networkInstance",
+ "description": "",
+ "operationId": "updateNetworkInstance",
+ "consumes": [
+ "application/json"
+ ],
+ "produces": [
+ "application/json"
+ ],
+ "parameters": [
+ {
+ "in": "body",
+ "name": "body",
+ "required": false,
+ "schema": {
+ "type": "string"
+ }
+ },
+ {
+ "name": "version",
+ "in": "path",
+ "required": true,
+ "type": "string",
+ "pattern": "[vV][5-7]"
+ },
+ {
+ "name": "serviceInstanceId",
+ "in": "path",
+ "required": true,
+ "type": "string"
+ },
+ {
+ "name": "networkInstanceId",
+ "in": "path",
+ "required": true,
+ "type": "string"
+ }
+ ],
+ "responses": {
+ "default": {
+ "description": "successful operation"
+ }
+ }
+ },
+ "delete": {
+ "tags": [
+ "onapsoinfraserviceInstantiation"
+ ],
+ "summary": "Delete provided Network instance",
+ "description": "",
+ "operationId": "deleteNetworkInstance",
+ "consumes": [
+ "application/json"
+ ],
+ "produces": [
+ "application/json"
+ ],
+ "parameters": [
+ {
+ "in": "body",
+ "name": "body",
+ "required": false,
+ "schema": {
+ "type": "string"
+ }
+ },
+ {
+ "name": "version",
+ "in": "path",
+ "required": true,
+ "type": "string",
+ "pattern": "[vV][5-7]"
+ },
+ {
+ "name": "serviceInstanceId",
+ "in": "path",
+ "required": true,
+ "type": "string"
+ },
+ {
+ "name": "networkInstanceId",
+ "in": "path",
+ "required": true,
+ "type": "string"
+ }
+ ],
+ "responses": {
+ "default": {
+ "description": "successful operation"
+ }
+ }
+ }
+ },
+ "/onap/so/infra/tasks/{version}": {
+ "get": {
+ "tags": [
+ "onapsoinfratasks"
+ ],
+ "summary": "Finds Manual Tasks",
+ "description": "",
+ "operationId": "queryFilters",
+ "parameters": [
+ {
+ "name": "taskId",
+ "in": "query",
+ "required": false,
+ "type": "string"
+ },
+ {
+ "name": "originalRequestId",
+ "in": "query",
+ "required": false,
+ "type": "string"
+ },
+ {
+ "name": "subscriptionServiceType",
+ "in": "query",
+ "required": false,
+ "type": "string"
+ },
+ {
+ "name": "nfRole",
+ "in": "query",
+ "required": false,
+ "type": "string"
+ },
+ {
+ "name": "buildingBlockName",
+ "in": "query",
+ "required": false,
+ "type": "string"
+ },
+ {
+ "name": "originalRequestDate",
+ "in": "query",
+ "required": false,
+ "type": "string"
+ },
+ {
+ "name": "originalRequestorId",
+ "in": "query",
+ "required": false,
+ "type": "string"
+ },
+ {
+ "name": "version",
+ "in": "path",
+ "required": true,
+ "type": "string",
+ "pattern": "[vV]1"
+ }
+ ],
+ "responses": {
+ "default": {
+ "description": "successful operation"
+ }
+ }
+ }
+ },
+ "/onap/so/infra/cloudResources/{version}/operationalEnvironments": {
+ "post": {
+ "tags": [
+ "onapsoinfracloudResources"
+ ],
+ "summary": "Create an Operational Environment",
+ "description": "",
+ "operationId": "createOperationEnvironment",
+ "consumes": [
+ "application/json"
+ ],
+ "produces": [
+ "application/json"
+ ],
+ "parameters": [
+ {
+ "in": "body",
+ "name": "body",
+ "required": false,
+ "schema": {
+ "type": "string"
+ }
+ },
+ {
+ "name": "version",
+ "in": "path",
+ "required": true,
+ "type": "string",
+ "pattern": "[vV][1]"
+ }
+ ],
+ "responses": {
+ "default": {
+ "description": "successful operation"
+ }
+ }
+ }
+ },
+ "/onap/so/infra/cloudResources/{version}/operationalEnvironments/{operationalEnvironmentId}/activate": {
+ "post": {
+ "tags": [
+ "onapsoinfracloudResources"
+ ],
+ "summary": "Activate an Operational Environment",
+ "description": "",
+ "operationId": "activateOperationEnvironment",
+ "consumes": [
+ "application/json"
+ ],
+ "produces": [
+ "application/json"
+ ],
+ "parameters": [
+ {
+ "in": "body",
+ "name": "body",
+ "required": false,
+ "schema": {
+ "type": "string"
+ }
+ },
+ {
+ "name": "version",
+ "in": "path",
+ "required": true,
+ "type": "string",
+ "pattern": "[vV][1]"
+ },
+ {
+ "name": "operationalEnvironmentId",
+ "in": "path",
+ "required": true,
+ "type": "string"
+ }
+ ],
+ "responses": {
+ "default": {
+ "description": "successful operation"
+ }
+ }
+ }
+ },
+ "/onap/so/infra/cloudResources/{version}/operationalEnvironments/{operationalEnvironmentId}/deactivate": {
+ "post": {
+ "tags": [
+ "onapsoinfracloudResources"
+ ],
+ "summary": "Deactivate an Operational Environment",
+ "description": "",
+ "operationId": "deactivateOperationEnvironment",
+ "consumes": [
+ "application/json"
+ ],
+ "produces": [
+ "application/json"
+ ],
+ "parameters": [
+ {
+ "in": "body",
+ "name": "body",
+ "required": false,
+ "schema": {
+ "type": "string"
+ }
+ },
+ {
+ "name": "version",
+ "in": "path",
+ "required": true,
+ "type": "string",
+ "pattern": "[vV][1]"
+ },
+ {
+ "name": "operationalEnvironmentId",
+ "in": "path",
+ "required": true,
+ "type": "string"
+ }
+ ],
+ "responses": {
+ "default": {
+ "description": "successful operation"
+ }
+ }
+ }
+ },
+ "/onap/so/infra/cloudResourcesRequests/{version}/{requestId}/unlock": {
+ "post": {
+ "tags": [
+ "onapsoinfracloudResourcesRequests"
+ ],
+ "summary": "Unlock CloudOrchestration requests for a specified requestId",
+ "description": "",
+ "operationId": "unlockOrchestrationRequestForReqId",
+ "consumes": [
+ "application/json"
+ ],
+ "produces": [
+ "application/json"
+ ],
+ "parameters": [
+ {
+ "in": "body",
+ "name": "body",
+ "required": false,
+ "schema": {
+ "type": "string"
+ }
+ },
+ {
+ "name": "requestId",
+ "in": "path",
+ "required": true,
+ "type": "string"
+ },
+ {
+ "name": "version",
+ "in": "path",
+ "required": true,
+ "type": "string",
+ "pattern": "[vV][1]"
+ }
+ ],
+ "responses": {
+ "default": {
+ "description": "successful operation"
+ }
+ }
+ }
+ },
+ "/onap/so/infra/cloudResourcesRequests/{version}": {
+ "get": {
+ "tags": [
+ "onapsoinfracloudResourcesRequests"
+ ],
+ "summary": "Get status of an Operational Environment based on filter criteria",
+ "description": "",
+ "operationId": "getOperationEnvironmentStatusFilter",
+ "consumes": [
+ "application/json"
+ ],
+ "produces": [
+ "application/json"
+ ],
+ "parameters": [
+ {
+ "name": "version",
+ "in": "path",
+ "required": true,
+ "type": "string",
+ "pattern": "[vV][1]"
+ }
+ ],
+ "responses": {
+ "default": {
+ "description": "successful operation"
+ }
+ }
+ }
+ },
+ "/onap/so/infra/modelDistributions/{version}/distributions/{distributionId}": {
+ "post": {
+ "tags": [
+ "onapsoinframodelDistributions"
+ ],
+ "summary": "Update model distribution status",
+ "description": "",
+ "operationId": "updateModelDistributionStatus",
+ "consumes": [
+ "application/json"
+ ],
+ "produces": [
+ "application/json"
+ ],
+ "parameters": [
+ {
+ "in": "body",
+ "name": "body",
+ "required": false,
+ "schema": {
+ "type": "string"
+ }
+ },
+ {
+ "name": "version",
+ "in": "path",
+ "required": true,
+ "type": "string",
+ "pattern": "[vV][1]"
+ },
+ {
+ "name": "distributionId",
+ "in": "path",
+ "required": true,
+ "type": "string"
+ }
+ ],
+ "responses": {
+ "default": {
+ "description": "successful operation"
+ }
+ }
+ }
+ }
+ }
+} \ No newline at end of file
diff --git a/docs/architecture/architecture.rst b/docs/architecture/architecture.rst
index 7965e1d50f..6ca11cd6b3 100644
--- a/docs/architecture/architecture.rst
+++ b/docs/architecture/architecture.rst
@@ -89,10 +89,10 @@ SO Sub-Components
**SO Monitoring**
Monitor BPMN Workflow execution by providing
- * Service list search based on search criteria
- * Service statistic
- * Service Process Instance Rendering and Detail
-
+ * Service list search based on search criteria
+ * Service statistic
+ * Service Process Instance Rendering and Detail
+
Third Party and Open Source
---------------------------
diff --git a/docs/developer_info/developer_information.rst b/docs/developer_info/developer_information.rst
index 8613f2605c..61be8f006f 100644
--- a/docs/developer_info/developer_information.rst
+++ b/docs/developer_info/developer_information.rst
@@ -8,13 +8,13 @@ SO Developer Information
.. toctree::
:maxdepth: 1
-.. developer_info/developer_info_Project_Structure.rst
- developer_info/Camunda_Modeler.rst
-.. developer_info/developer_info_Main_Process_Flows.rst
-.. developer_info/developer_info_Subprocess_Process_Flows.rst
-.. developer_info/developer_info_Project_Deployment_Strategy.rst
- developer_info/Building_SO.rst
- developer_info/Working_with_SO_Docker.rst
- developer_info/Camunda_Cockpit_Community_Edition.rst
- developer_info/Camunda_Cockpit_Enterprise_Edition.rst
+.. developer_info_Project_Structure.rst
+ Camunda_Modeler.rst
+.. developer_info_Main_Process_Flows.rst
+.. developer_info_Subprocess_Process_Flows.rst
+.. developer_info_Project_Deployment_Strategy.rst
+ Building_SO.rst
+ Working_with_SO_Docker.rst
+ Camunda_Cockpit_Community_Edition.rst
+ Camunda_Cockpit_Enterprise_Edition.rst
\ No newline at end of file
diff --git a/docs/release_notes/release-notes.rst b/docs/release_notes/release-notes.rst
index d3448497cf..f9c7002e8a 100644
--- a/docs/release_notes/release-notes.rst
+++ b/docs/release_notes/release-notes.rst
@@ -19,7 +19,7 @@ Temp release for Casablanca at M4.
* Support PNF resource type.
* Extend the support of homing to vFW, VDNS usecases.
* Workflow Designer Integration.
-* Monitoring BPMN worflow capabiliities through UI.
+* Monitoring BPMN worflow capabilities through UI.
* Support to the CCVPN Usecase.
* SO internal architecture improvements
@@ -35,7 +35,7 @@ The Beijing release is the second release of the Service Orchestrator (SO) proje
* Enhance Platform maturity by improving SO maturity matrix see `Wiki <https://wiki.onap.org/display/DW/Beijing+Release+Platform+Maturity>`_.
* Manual scaling of network services and VNFs.
-* Homing and placement capabiliities through OOF interaction.
+* Homing and placement capabilities through OOF interaction.
* Ability to perform change management.
* Integrated to APPC
* Integrated to OOF
@@ -102,7 +102,7 @@ It executes end-to-end service activities by processing workflows and business l
The orchestration engine is a reusable service. Any component of the architecture can execute SO orchestration capabilities.
* Orchestration services will process workflows based on defined models and recipe.
-* The service model maintains consistency and reusability across all orchestration activities and ensures consistent methods, structure and version of the workflow execution environment.
+* The service model maintains consistency and re-usability across all orchestration activities and ensures consistent methods, structure and version of the workflow execution environment.
* Orchestration processes interact with other platform components or external systems via standard and well-defined APIs.
diff --git a/mso-api-handlers/mso-requests-db-repositories/src/test/java/org/onap/so/TestApplication.java b/mso-api-handlers/mso-requests-db-repositories/src/test/java/org/onap/so/TestApplication.java
index 5b6fbc8378..9bb5cab9b5 100644
--- a/mso-api-handlers/mso-requests-db-repositories/src/test/java/org/onap/so/TestApplication.java
+++ b/mso-api-handlers/mso-requests-db-repositories/src/test/java/org/onap/so/TestApplication.java
@@ -27,7 +27,7 @@ import org.springframework.context.annotation.Profile;
import org.springframework.http.client.HttpComponentsClientHttpRequestFactory;
import org.springframework.web.client.RestTemplate;
-@SpringBootApplication(scanBasePackages = { "org.onap.so.db" })
+@SpringBootApplication(scanBasePackages = { "org.onap.so" })
@Profile("test")
public class TestApplication {
public static void main(String... args) {
@@ -35,8 +35,4 @@ public class TestApplication {
System.getProperties().setProperty("mso.db", "MARIADB");
System.getProperties().setProperty("server.name", "Springboot");
}
- @Bean
- public RestTemplate restTemplate() {
- return new RestTemplate( new HttpComponentsClientHttpRequestFactory());
- }
}
diff --git a/mso-api-handlers/mso-requests-db/src/main/java/org/onap/so/db/request/client/RequestsDbClient.java b/mso-api-handlers/mso-requests-db/src/main/java/org/onap/so/db/request/client/RequestsDbClient.java
index e68bdb3772..07d185b3af 100644
--- a/mso-api-handlers/mso-requests-db/src/main/java/org/onap/so/db/request/client/RequestsDbClient.java
+++ b/mso-api-handlers/mso-requests-db/src/main/java/org/onap/so/db/request/client/RequestsDbClient.java
@@ -20,6 +20,17 @@
package org.onap.so.db.request.client;
+import java.net.URI;
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.Iterator;
+import java.util.List;
+import java.util.Map;
+
+import javax.annotation.PostConstruct;
+import javax.ws.rs.core.MediaType;
+import javax.ws.rs.core.UriBuilder;
+
import org.apache.http.HttpStatus;
import org.onap.so.db.request.beans.ArchivedInfraRequests;
import org.onap.so.db.request.beans.InfraActiveRequests;
@@ -41,6 +52,7 @@ import org.springframework.core.ParameterizedTypeReference;
import org.springframework.http.HttpEntity;
import org.springframework.http.HttpHeaders;
import org.springframework.http.HttpMethod;
+import org.springframework.http.ResponseEntity;
import org.springframework.http.client.BufferingClientHttpRequestFactory;
import org.springframework.http.client.ClientHttpRequestFactory;
import org.springframework.http.client.HttpComponentsClientHttpRequestFactory;
@@ -50,16 +62,6 @@ import org.springframework.web.client.RestTemplate;
import uk.co.blackpepper.bowman.ClientFactory;
import uk.co.blackpepper.bowman.Configuration;
-import javax.annotation.PostConstruct;
-import javax.ws.rs.core.MediaType;
-import javax.ws.rs.core.UriBuilder;
-import java.net.URI;
-import java.util.ArrayList;
-import java.util.HashMap;
-import java.util.List;
-import java.util.Map;
-import java.util.Iterator;
-
@Component("RequestsDbClient")
@Primary
public class RequestsDbClient {
@@ -188,7 +190,12 @@ public class RequestsDbClient {
URI uri = getUri(checkInstanceNameDuplicate);
HttpEntity<InstanceNameDuplicateCheckRequest> entity = new HttpEntity<>(new InstanceNameDuplicateCheckRequest(instanceIdMap, instanceName, requestScope), headers);
try{
- return restTemplate.exchange(uri, HttpMethod.POST, entity, InfraActiveRequests.class).getBody();
+ ResponseEntity<InfraActiveRequests> response = restTemplate.exchange(uri, HttpMethod.POST, entity, InfraActiveRequests.class);
+ if(response != null && response.hasBody()) {
+ return restTemplate.exchange(uri, HttpMethod.POST, entity, InfraActiveRequests.class).getBody();
+ } else {
+ return null;
+ }
}catch(HttpClientErrorException e){
if(HttpStatus.SC_NOT_FOUND == e.getStatusCode().value()){
return null;
diff --git a/mso-catalog-db/src/main/java/org/onap/so/db/catalog/beans/CloudSite.java b/mso-catalog-db/src/main/java/org/onap/so/db/catalog/beans/CloudSite.java
index 9cce212c36..a56abff927 100644
--- a/mso-catalog-db/src/main/java/org/onap/so/db/catalog/beans/CloudSite.java
+++ b/mso-catalog-db/src/main/java/org/onap/so/db/catalog/beans/CloudSite.java
@@ -21,14 +21,19 @@
package org.onap.so.db.catalog.beans;
+import java.net.URI;
+import java.net.URISyntaxException;
import java.util.Date;
import com.fasterxml.jackson.annotation.JsonProperty;
import com.openpojo.business.annotation.BusinessKey;
+import com.openpojo.reflection.java.packageloader.impl.URLToFileSystemAdapter;
import org.apache.commons.lang3.builder.HashCodeBuilder;
import org.apache.commons.lang3.builder.EqualsBuilder;
import org.apache.commons.lang3.builder.ToStringBuilder;
import org.apache.commons.lang3.builder.ToStringStyle;
+import uk.co.blackpepper.bowman.annotation.RemoteResource;
+import uk.co.blackpepper.bowman.annotation.ResourceId;
import javax.persistence.CascadeType;
import javax.persistence.Column;
@@ -40,6 +45,7 @@ import javax.persistence.OneToOne;
import javax.persistence.PrePersist;
import javax.persistence.Table;
import javax.persistence.Temporal;
+import javax.persistence.Transient;
import javax.persistence.TemporalType;
/**
@@ -48,6 +54,7 @@ import javax.persistence.TemporalType;
* object, of which it is a component
*
*/
+@RemoteResource("/cloudSite")
@Entity
@Table(name = "cloud_sites")
public class CloudSite {
@@ -115,6 +122,9 @@ public class CloudSite {
@Temporal(TemporalType.TIMESTAMP)
private Date updated;
+ @Transient
+ private URI uri;
+
public CloudSite() {
}
@@ -135,8 +145,8 @@ public class CloudSite {
this.regionId = site.getRegionId();
this.identityServiceId = site.getIdentityServiceId();
}
-
-
+
+
public String getId() {
return this.id;
}
@@ -145,6 +155,13 @@ public class CloudSite {
this.id = id;
}
+ @ResourceId
+ public URI getUri() {return this.uri;}
+
+ public void setUri(URI uri) {
+ this.uri = uri;
+ }
+
public String getRegionId() {
return regionId;
}
diff --git a/mso-catalog-db/src/main/java/org/onap/so/db/catalog/client/CatalogDbClient.java b/mso-catalog-db/src/main/java/org/onap/so/db/catalog/client/CatalogDbClient.java
index 9a03f8fb07..9742a0c85b 100644
--- a/mso-catalog-db/src/main/java/org/onap/so/db/catalog/client/CatalogDbClient.java
+++ b/mso-catalog-db/src/main/java/org/onap/so/db/catalog/client/CatalogDbClient.java
@@ -27,7 +27,6 @@ import org.onap.so.db.catalog.beans.CollectionNetworkResourceCustomization;
import org.onap.so.db.catalog.beans.CollectionResourceInstanceGroupCustomization;
import org.onap.so.db.catalog.beans.ControllerSelectionReference;
import org.onap.so.db.catalog.beans.CvnfcCustomization;
-import org.onap.so.db.catalog.beans.ExternalServiceToInternalService;
import org.onap.so.db.catalog.beans.InstanceGroup;
import org.onap.so.db.catalog.beans.NetworkCollectionResourceCustomization;
import org.onap.so.db.catalog.beans.NetworkRecipe;
@@ -291,6 +290,47 @@ public class CatalogDbClient {
controllerSelectionReferenceClient = clientFactory.create(ControllerSelectionReference.class);
}
+ public CatalogDbClient(String baseUri, String auth) {
+ ClientHttpRequestFactory factory = new BufferingClientHttpRequestFactory(new HttpComponentsClientHttpRequestFactory());
+
+ ClientFactory clientFactory = Configuration.builder().setBaseUri(baseUri).setClientHttpRequestFactory(factory).setRestTemplateConfigurer(restTemplate -> {
+ restTemplate.getInterceptors().add((new SpringClientFilter()));
+
+ restTemplate.getInterceptors().add((request, body, execution) -> {
+
+ request.getHeaders().add(HttpHeaders.AUTHORIZATION, auth);
+ request.getHeaders().add(LogConstants.TARGET_ENTITY_HEADER,TARGET_ENTITY);
+ return execution.execute(request, body);
+ });
+ }).build().buildClientFactory();
+ serviceClient = clientFactory.create(Service.class);
+ networkRecipeClient = clientFactory.create(NetworkRecipe.class);
+ networkResourceCustomizationClient = clientFactory.create(NetworkResourceCustomization.class);
+ vnfResourceClient = clientFactory.create(VnfResource.class);
+ vnfResourceCustomizationClient = clientFactory.create(VnfResourceCustomization.class);
+ vnfRecipeClient = clientFactory.create(VnfRecipe.class);
+ orchestrationClient = clientFactory.create(OrchestrationFlow.class);
+ vfModuleCustomizationClient = clientFactory.create(VfModuleCustomization.class);
+ vfModuleClient = clientFactory.create(VfModule.class);
+ vnfComponentsRecipeClient = clientFactory.create(VnfComponentsRecipe.class);
+ northBoundRequestClient = clientFactory.create(NorthBoundRequest.class);
+ rainyDayHandlerStatusClient = clientFactory.create(RainyDayHandlerStatus.class);
+ buildingBlockDetailClient = clientFactory.create(BuildingBlockDetail.class);
+ orchestrationStatusStateTransitionDirectiveClient = clientFactory
+ .create(OrchestrationStatusStateTransitionDirective.class);
+ vnfcInstanceGroupCustomizationClient = clientFactory.create(VnfcInstanceGroupCustomization.class);
+ collectionResourceInstanceGroupCustomizationClient = clientFactory
+ .create(CollectionResourceInstanceGroupCustomization.class);
+ instanceGroupClient = clientFactory.create(InstanceGroup.class);
+ networkCollectionResourceCustomizationClient = clientFactory.create(NetworkCollectionResourceCustomization.class);
+ collectionNetworkResourceCustomizationClient = clientFactory.create(CollectionNetworkResourceCustomization.class);
+ cloudSiteClient = clientFactory.create(CloudSite.class);
+ cloudifyManagerClient = clientFactory.create(CloudifyManager.class);
+ serviceRecipeClient = clientFactory.create(ServiceRecipe.class);
+ cvnfcCustomizationClient = clientFactory.create(CvnfcCustomization.class);
+ controllerSelectionReferenceClient = clientFactory.create(ControllerSelectionReference.class);
+ }
+
public NetworkCollectionResourceCustomization getNetworkCollectionResourceCustomizationByID(String modelCustomizationUUID) {
NetworkCollectionResourceCustomization networkCollectionResourceCustomization =
this.getSingleResource(networkCollectionResourceCustomizationClient, getUri(networkCollectionResourceCustomizationURI + modelCustomizationUUID));
@@ -504,6 +544,11 @@ public class CatalogDbClient {
return this.getSingleResource(cloudSiteClient, getUri(cloudSiteURI + id));
}
+ public void postCloudSite(CloudSite cloudSite){
+ this.postSingleResource(cloudSiteClient, cloudSite);
+ }
+
+
public CloudSite getCloudSiteByClliAndAicVersion (String clli, String cloudVersion){
return this.getSingleResource(cloudSiteClient, getUri(UriBuilder
.fromUri(findByClliAndCloudVersion)
@@ -547,6 +592,10 @@ public class CatalogDbClient {
it.forEachRemaining(list::add);
return list;
}
+
+ private <T> URI postSingleResource(Client<T> client, T type){
+ return client.post(type);
+ }
public List<CvnfcCustomization> getCvnfcCustomizationByVnfCustomizationUUIDAndVfModuleCustomizationUUID(String vnfCustomizationUUID, String vfModuleCustomizationUUID){
return this.getMultipleVnfcCustomizations(
diff --git a/packages/docker/pom.xml b/packages/docker/pom.xml
index 3147c0206d..c2e6fe3961 100644
--- a/packages/docker/pom.xml
+++ b/packages/docker/pom.xml
@@ -394,7 +394,7 @@
<version>${project.version}</version>
</dependency>
<dependency>
- <groupId>org.onap.so-monitoring</groupId>
+ <groupId>org.onap.so.monitoring</groupId>
<artifactId>so-monitoring-service</artifactId>
<version>${project.version}</version>
</dependency>
diff --git a/pom.xml b/pom.xml
index 0960eb9dbe..df6c19fe14 100644
--- a/pom.xml
+++ b/pom.xml
@@ -800,6 +800,7 @@
<dependency>
<groupId>org.eclipse.jetty</groupId>
<artifactId>jetty-server</artifactId>
+ <version>9.4.12.v20180830</version>
</dependency>
<dependency>
<groupId>com.h2database</groupId>
diff --git a/so-monitoring/so-monitoring-handler/src/main/java/org/onap/so/montoring/configuration/rest/RestTemplateConfigration.java b/so-monitoring/so-monitoring-handler/src/main/java/org/onap/so/montoring/configuration/rest/RestTemplateConfigration.java
index 914e5d676e..a30628b1d5 100644
--- a/so-monitoring/so-monitoring-handler/src/main/java/org/onap/so/montoring/configuration/rest/RestTemplateConfigration.java
+++ b/so-monitoring/so-monitoring-handler/src/main/java/org/onap/so/montoring/configuration/rest/RestTemplateConfigration.java
@@ -17,6 +17,7 @@
* SPDX-License-Identifier: Apache-2.0
* ============LICENSE_END=========================================================
*/
+
package org.onap.so.montoring.configuration.rest;
import java.util.concurrent.TimeUnit;