summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--adapters/mso-adapter-utils/src/test/java/org/onap/so/cloud/authentication/AuthenticationMethodTest.java11
-rw-r--r--adapters/mso-adapter-utils/src/test/java/org/onap/so/openstack/utils/MsoCommonUtilsTest.java32
-rw-r--r--adapters/mso-adapter-utils/src/test/java/org/onap/so/openstack/utils/MsoHeatEnvironmentResourceTest.java7
-rw-r--r--adapters/mso-adapter-utils/src/test/java/org/onap/so/openstack/utils/MsoHeatUtilsTest.java2
-rw-r--r--adapters/mso-adapter-utils/src/test/java/org/onap/so/openstack/utils/MsoMulticloudUtilsTest.java12
-rw-r--r--adapters/mso-catalog-db-adapter/src/main/resources/db/migration/R__MacroData.sql80
-rw-r--r--adapters/mso-catalog-db-adapter/src/test/java/org/onap/so/adapters/catalogdb/catalogrest/CatalogDBRestTest.java15
-rw-r--r--adapters/mso-catalog-db-adapter/src/test/java/org/onap/so/adapters/catalogdb/catalogrest/QueryServiceArtifactTest.java3
-rw-r--r--adapters/mso-catalog-db-adapter/src/test/java/org/onap/so/adapters/catalogdb/catalogrest/QueryServiceInfoTest.java3
-rw-r--r--adapters/mso-requests-db-adapter/src/test/java/org/onap/so/adapters/requestsdb/client/RequestsDbClientTest.java5
-rw-r--r--adapters/mso-requests-db-adapter/src/test/java/org/onap/so/adapters/requestsdb/exceptions/MsoRequestsDbExceptionBeanTest.java4
-rw-r--r--adapters/mso-requests-db-adapter/src/test/java/org/onap/so/adapters/requestsdb/exceptions/MsoRequestsDbExceptionTest.java4
-rw-r--r--adapters/mso-sdnc-adapter/src/test/java/org/onap/so/adapters/sdnc/sdncrest/BPRestCallbackTest.java4
-rw-r--r--bpmn/MSOCommonBPMN/src/main/java/org/onap/so/bpmn/servicedecomposition/entities/ResourceKey.java5
-rw-r--r--bpmn/MSOCommonBPMN/src/main/java/org/onap/so/bpmn/servicedecomposition/entities/WorkflowResourceIds.java30
-rw-r--r--bpmn/MSOCommonBPMN/src/main/java/org/onap/so/bpmn/servicedecomposition/tasks/BBInputSetup.java16
-rw-r--r--bpmn/MSOCommonBPMN/src/test/java/org/onap/so/bpmn/servicedecomposition/tasks/BBInputSetupTest.java9
-rw-r--r--bpmn/mso-infrastructure-bpmn/src/test/resources/application-test.yaml3
-rw-r--r--bpmn/so-bpmn-building-blocks/src/main/resources/subprocess/BuildingBlock/CreateChildServiceBB.bpmn135
-rw-r--r--bpmn/so-bpmn-building-blocks/src/main/resources/subprocess/BuildingBlock/DeleteChildServiceBB.bpmn123
-rw-r--r--bpmn/so-bpmn-building-blocks/src/test/java/org/onap/so/bpmn/infrastructure/bpmn/process/WorkflowActionBBTest.java1
-rw-r--r--bpmn/so-bpmn-building-blocks/src/test/resources/application-test.yaml4
-rw-r--r--bpmn/so-bpmn-infrastructure-flows/src/test/resources/application-test.yaml4
-rw-r--r--bpmn/so-bpmn-tasks/src/main/java/org/onap/so/bpmn/infrastructure/service/composition/ChildServiceRequestBuilder.java231
-rw-r--r--bpmn/so-bpmn-tasks/src/main/java/org/onap/so/bpmn/infrastructure/service/composition/CreateChildServiceBB.java134
-rw-r--r--bpmn/so-bpmn-tasks/src/main/java/org/onap/so/bpmn/infrastructure/service/composition/DeleteChildServiceBB.java129
-rw-r--r--bpmn/so-bpmn-tasks/src/main/java/org/onap/so/bpmn/infrastructure/service/composition/ServiceCompositionConstants.java32
-rwxr-xr-xbpmn/so-bpmn-tasks/src/main/java/org/onap/so/bpmn/infrastructure/workflow/tasks/ExecuteBuildingBlockBuilder.java15
-rw-r--r--bpmn/so-bpmn-tasks/src/main/java/org/onap/so/bpmn/infrastructure/workflow/tasks/Resource.java4
-rwxr-xr-xbpmn/so-bpmn-tasks/src/main/java/org/onap/so/bpmn/infrastructure/workflow/tasks/WorkflowAction.java50
-rw-r--r--bpmn/so-bpmn-tasks/src/main/java/org/onap/so/bpmn/infrastructure/workflow/tasks/WorkflowActionBBFailure.java21
-rw-r--r--bpmn/so-bpmn-tasks/src/main/java/org/onap/so/bpmn/infrastructure/workflow/tasks/WorkflowActionBBTasks.java17
-rwxr-xr-xbpmn/so-bpmn-tasks/src/main/java/org/onap/so/bpmn/infrastructure/workflow/tasks/WorkflowActionConstants.java1
-rw-r--r--bpmn/so-bpmn-tasks/src/main/java/org/onap/so/bpmn/infrastructure/workflow/tasks/ebb/loader/ServiceEBBLoader.java59
-rw-r--r--bpmn/so-bpmn-tasks/src/main/java/org/onap/so/bpmn/infrastructure/workflow/tasks/ebb/loader/UserParamsServiceTraversal.java15
-rw-r--r--bpmn/so-bpmn-tasks/src/main/java/org/onap/so/bpmn/infrastructure/workflow/tasks/utils/WorkflowResourceIdsUtils.java3
-rw-r--r--bpmn/so-bpmn-tasks/src/main/java/org/onap/so/client/orchestration/ApiHandlerClient.java73
-rw-r--r--bpmn/so-bpmn-tasks/src/main/java/org/onap/so/client/orchestration/ApiHandlerClientException.java8
-rw-r--r--bpmn/so-bpmn-tasks/src/main/java/org/onap/so/client/orchestration/RestTemplateApiClientConfig.java23
-rw-r--r--bpmn/so-bpmn-tasks/src/test/java/org/onap/so/bpmn/infrastructure/service/composition/ChildServiceRequestBuilderTest.java253
-rw-r--r--bpmn/so-bpmn-tasks/src/test/java/org/onap/so/bpmn/infrastructure/service/composition/CreateChildServiceBBTest.java145
-rw-r--r--bpmn/so-bpmn-tasks/src/test/java/org/onap/so/bpmn/infrastructure/workflow/tasks/WorkflowActionBBFailureTest.java131
-rw-r--r--bpmn/so-bpmn-tasks/src/test/java/org/onap/so/bpmn/infrastructure/workflow/tasks/ebb/loader/ServiceEBBLoaderTest.java56
-rw-r--r--bpmn/so-bpmn-tasks/src/test/java/org/onap/so/bpmn/infrastructure/workflow/tasks/ebb/loader/UserParamsServiceTraversalTest.java25
-rw-r--r--bpmn/so-bpmn-tasks/src/test/java/org/onap/so/bpmn/infrastructure/workflow/tasks/utils/WorkflowResourceIdsUtilsTest.java9
-rw-r--r--bpmn/so-bpmn-tasks/src/test/java/org/onap/so/client/orchestration/ApiHandlerClientTest.java121
-rw-r--r--bpmn/so-bpmn-tasks/src/test/resources/__files/Macro/ServiceMacroCreateMultipleSameModelPnfs.json91
-rw-r--r--bpmn/so-bpmn-tasks/src/test/resources/application-test.yaml4
-rw-r--r--common/src/main/java/org/onap/so/serviceinstancebeans/Resources.java12
-rw-r--r--common/src/main/java/org/onap/so/serviceinstancebeans/Service.java15
-rw-r--r--common/src/test/java/org/onap/so/security/UserDetailsServiceImplTest.java45
-rw-r--r--docs/api/swagger/swagger.json4102
-rw-r--r--docs/api/swagger/swagger.yaml3044
-rw-r--r--graph-inventory/aai-client/src/test/java/org/onap/aaiclient/client/aai/AAIObjectTypeTest.java4
-rw-r--r--mso-api-handlers/mso-api-handler-infra/src/main/java/org/onap/so/apihandlerinfra/validation/RelatedInstancesValidation.java5
-rw-r--r--mso-api-handlers/mso-api-handler-infra/src/main/java/org/onap/so/apihandlerinfra/validation/UserParamsValidation.java24
-rw-r--r--mso-api-handlers/mso-api-handler-infra/src/test/java/org/onap/so/apihandlerinfra/validation/RelatedInstancesValidationTest.java18
-rw-r--r--mso-api-handlers/mso-api-handler-infra/src/test/java/org/onap/so/apihandlerinfra/validation/UserParamsValidationTest.java69
-rw-r--r--mso-api-handlers/mso-api-handler-infra/src/test/resources/Validation/UserParamsValidation/DuplicateInstanceNamesPnf.json91
-rw-r--r--mso-api-handlers/mso-api-handler-infra/src/test/resources/Validation/UserParamsValidation/RelatedInstanceInstanceId.json138
-rw-r--r--version.properties2
61 files changed, 6790 insertions, 2941 deletions
diff --git a/adapters/mso-adapter-utils/src/test/java/org/onap/so/cloud/authentication/AuthenticationMethodTest.java b/adapters/mso-adapter-utils/src/test/java/org/onap/so/cloud/authentication/AuthenticationMethodTest.java
index 41aac0084c..78b5c8ede9 100644
--- a/adapters/mso-adapter-utils/src/test/java/org/onap/so/cloud/authentication/AuthenticationMethodTest.java
+++ b/adapters/mso-adapter-utils/src/test/java/org/onap/so/cloud/authentication/AuthenticationMethodTest.java
@@ -3,6 +3,7 @@
* ONAP - SO
* ================================================================================
* Copyright (C) 2017 AT&T Intellectual Property. All rights reserved.
+ * Copyright (C) 2022 Samsung Electronics.
* ================================================================================
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
@@ -22,7 +23,7 @@ package org.onap.so.cloud.authentication;
import static com.shazam.shazamcrest.matcher.Matchers.sameBeanAs;
import static org.junit.Assert.assertThat;
-import static org.junit.Assert.assertTrue;
+import static org.junit.Assert.assertEquals;
import java.io.IOException;
import java.nio.file.Files;
import java.nio.file.Paths;
@@ -61,7 +62,7 @@ public class AuthenticationMethodTest {
ci.setMsoId("test");
Authentication auth = authenticationMethodFactory.getAuthenticationFor(ci);
- assertTrue(RackspaceAuthentication.class.equals(auth.getClass()));
+ assertEquals(RackspaceAuthentication.class, auth.getClass());
}
@@ -73,7 +74,7 @@ public class AuthenticationMethodTest {
ci.setMsoId("someuser");
Authentication auth = authenticationMethodFactory.getAuthenticationFor(ci);
- assertTrue(UsernamePassword.class.equals(auth.getClass()));
+ assertEquals(UsernamePassword.class, auth.getClass());
}
@@ -85,7 +86,7 @@ public class AuthenticationMethodTest {
ci.setMsoId("test");
Authentication auth = authenticationMethodFactory.getAuthenticationFor(ci);
- assertTrue(RackspaceAuthentication.class.equals(auth.getClass()));
+ assertEquals(RackspaceAuthentication.class, auth.getClass());
}
@Test
@@ -96,7 +97,7 @@ public class AuthenticationMethodTest {
ci.setMsoId("someuser");
Authentication auth = authenticationMethodFactory.getAuthenticationFor(ci);
- assertTrue(UsernamePassword.class.equals(auth.getClass()));
+ assertEquals(UsernamePassword.class, auth.getClass());
}
diff --git a/adapters/mso-adapter-utils/src/test/java/org/onap/so/openstack/utils/MsoCommonUtilsTest.java b/adapters/mso-adapter-utils/src/test/java/org/onap/so/openstack/utils/MsoCommonUtilsTest.java
index 622ad4f94f..160201f442 100644
--- a/adapters/mso-adapter-utils/src/test/java/org/onap/so/openstack/utils/MsoCommonUtilsTest.java
+++ b/adapters/mso-adapter-utils/src/test/java/org/onap/so/openstack/utils/MsoCommonUtilsTest.java
@@ -3,6 +3,7 @@
* ONAP - SO
* ================================================================================
* Copyright (C) 2017 AT&T Intellectual Property. All rights reserved.
+ * Copyright (C) 2022 - Samsung Electronics. 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.
@@ -100,19 +101,19 @@ public class MsoCommonUtilsTest extends BaseTest {
MsoException me = commonUtils.keystoneErrorToMsoException(openStackConnectException, "ContextError");
assertTrue(me instanceof MsoIOException);
- assertTrue("connect".equals(me.getMessage()));
+ assertEquals("connect", me.getMessage());
MsoException me2 = commonUtils.keystoneErrorToMsoException(openStackResponseException, "ContextError");
assertTrue(me2 instanceof MsoOpenstackException);
- assertTrue("ContextError".equals(me2.getContext()));
- assertTrue(MsoExceptionCategory.OPENSTACK.equals(me2.getCategory()));
+ assertEquals("ContextError", me2.getContext());
+ assertEquals(MsoExceptionCategory.OPENSTACK, me2.getCategory());
OpenStackResponse openStackResponse = Mockito.mock(OpenStackResponse.class);
Error error = mapper.readValue(new File(RESOURCE_PATH + "Error.json"), Error.class);
- doReturn(error).when(openStackResponse).getErrorEntity(eq(Error.class));
+ doReturn(error).when(openStackResponse).getErrorEntity(Error.class);
openStackResponseException = new OpenStackResponseException("response", 501, openStackResponse);
@@ -131,19 +132,19 @@ public class MsoCommonUtilsTest extends BaseTest {
MsoException me = commonUtils.heatExceptionToMsoException(openStackConnectException, "ContextError");
assertTrue(me instanceof MsoIOException);
- assertTrue("connect".equals(me.getMessage()));
+ assertEquals("connect", me.getMessage());
MsoException me2 = commonUtils.heatExceptionToMsoException(openStackResponseException, "ContextError");
assertTrue(me2 instanceof MsoOpenstackException);
- assertTrue("ContextError".equals(me2.getContext()));
- assertTrue(MsoExceptionCategory.OPENSTACK.equals(me2.getCategory()));
+ assertEquals("ContextError", me2.getContext());
+ assertEquals(MsoExceptionCategory.OPENSTACK, me2.getCategory());
OpenStackResponse openStackResponse = Mockito.mock(OpenStackResponse.class);
Explanation explanation = mapper.readValue(new File(RESOURCE_PATH + "Explanation.json"), Explanation.class);
- doReturn(explanation).when(openStackResponse).getErrorEntity(eq(Explanation.class));
+ doReturn(explanation).when(openStackResponse).getErrorEntity(Explanation.class);
openStackResponseException = new OpenStackResponseException("response", 501, openStackResponse);
@@ -163,18 +164,18 @@ public class MsoCommonUtilsTest extends BaseTest {
MsoException me = commonUtils.neutronExceptionToMsoException(openStackConnectException, "ContextError");
assertTrue(me instanceof MsoIOException);
- assertTrue("connect".equals(me.getMessage()));
+ assertEquals("connect", me.getMessage());
MsoException me2 = commonUtils.neutronExceptionToMsoException(openStackResponseException, "ContextError");
assertTrue(me2 instanceof MsoOpenstackException);
- assertTrue("ContextError".equals(me2.getContext()));
- assertTrue(MsoExceptionCategory.OPENSTACK.equals(me2.getCategory()));
+ assertEquals("ContextError", me2.getContext());
+ assertEquals(MsoExceptionCategory.OPENSTACK, me2.getCategory());
OpenStackResponse openStackResponse = Mockito.mock(OpenStackResponse.class);
NeutronError explanation = mapper.readValue(new File(RESOURCE_PATH + "NeutronError.json"), NeutronError.class);
- doReturn(explanation).when(openStackResponse).getErrorEntity(eq(NeutronError.class));
+ doReturn(explanation).when(openStackResponse).getErrorEntity(NeutronError.class);
openStackResponseException = new OpenStackResponseException("response", 501, openStackResponse);
@@ -190,8 +191,8 @@ public class MsoCommonUtilsTest extends BaseTest {
MsoException me = commonUtils.runtimeExceptionToMsoException(re, "ContextError");
assertTrue(me instanceof MsoAdapterException);
- assertTrue("ContextError".equals(me.getContext()));
- assertTrue(MsoExceptionCategory.INTERNAL.equals(me.getCategory()));
+ assertEquals("ContextError", me.getContext());
+ assertEquals(MsoExceptionCategory.INTERNAL, me.getCategory());
}
@Test
@@ -202,6 +203,7 @@ public class MsoCommonUtilsTest extends BaseTest {
assertTrue(msoException instanceof MsoAdapterException);
assertEquals("ContextError", msoException.getContext());
- assertTrue(MsoExceptionCategory.INTERNAL.equals(msoException.getCategory()));
+ assertEquals(MsoExceptionCategory.INTERNAL, msoException.getCategory());
}
}
+
diff --git a/adapters/mso-adapter-utils/src/test/java/org/onap/so/openstack/utils/MsoHeatEnvironmentResourceTest.java b/adapters/mso-adapter-utils/src/test/java/org/onap/so/openstack/utils/MsoHeatEnvironmentResourceTest.java
index 2c67dfd009..18372bb8ea 100644
--- a/adapters/mso-adapter-utils/src/test/java/org/onap/so/openstack/utils/MsoHeatEnvironmentResourceTest.java
+++ b/adapters/mso-adapter-utils/src/test/java/org/onap/so/openstack/utils/MsoHeatEnvironmentResourceTest.java
@@ -16,8 +16,7 @@
package org.onap.so.openstack.utils;
import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.assertFalse;
-import static org.junit.Assert.assertTrue;
+import static org.junit.Assert.assertNotEquals;
import org.junit.Test;
public class MsoHeatEnvironmentResourceTest {
@@ -36,8 +35,8 @@ public class MsoHeatEnvironmentResourceTest {
assertEquals("maeValue", mae.getValue());
assertEquals("\"msoHERName\": msoHERValue", msoHER.toString());
assertEquals("\"name\": maeValue", mae.toString());
- assertFalse(mae.equals(op));
- assertTrue(mae.equals(mre));
+ assertNotEquals(mae, op);
+ assertEquals(mae, mre);
assertEquals("name".hashCode(), mae.hashCode());
}
}
diff --git a/adapters/mso-adapter-utils/src/test/java/org/onap/so/openstack/utils/MsoHeatUtilsTest.java b/adapters/mso-adapter-utils/src/test/java/org/onap/so/openstack/utils/MsoHeatUtilsTest.java
index 5ee4987e38..85219c3b5c 100644
--- a/adapters/mso-adapter-utils/src/test/java/org/onap/so/openstack/utils/MsoHeatUtilsTest.java
+++ b/adapters/mso-adapter-utils/src/test/java/org/onap/so/openstack/utils/MsoHeatUtilsTest.java
@@ -447,7 +447,7 @@ public class MsoHeatUtilsTest extends MsoHeatUtils {
heatUtils.createStack(createStackParam, cloudSiteId, tenantId);
Mockito.verify(stackResource, times(1)).create(createStackParam);
- Mockito.verify(heatUtils, times(1)).saveStackRequest(eq(createStackParam), eq(requestId), eq("stackName"));
+ Mockito.verify(heatUtils, times(1)).saveStackRequest(createStackParam, requestId, "stackName");
Mockito.verify(heatClient, times(1)).getStacks();
Mockito.verify(stackResource, times(1)).create(createStackParam);
}
diff --git a/adapters/mso-adapter-utils/src/test/java/org/onap/so/openstack/utils/MsoMulticloudUtilsTest.java b/adapters/mso-adapter-utils/src/test/java/org/onap/so/openstack/utils/MsoMulticloudUtilsTest.java
index 7adfe091d3..d197550937 100644
--- a/adapters/mso-adapter-utils/src/test/java/org/onap/so/openstack/utils/MsoMulticloudUtilsTest.java
+++ b/adapters/mso-adapter-utils/src/test/java/org/onap/so/openstack/utils/MsoMulticloudUtilsTest.java
@@ -2,7 +2,7 @@
* ============LICENSE_START=======================================================
* ONAP - SO
* ================================================================================
- * Copyright (C) 2019 Samsung Intellectual Property. All rights reserved.
+ * Copyright (C) 2022 Samsung Intellectual Property. 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.
@@ -28,7 +28,7 @@ import static com.github.tomakehurst.wiremock.client.WireMock.urlEqualTo;
import static com.github.tomakehurst.wiremock.client.WireMock.urlPathEqualTo;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertNotNull;
-import static org.junit.Assert.assertTrue;
+import static org.junit.Assert.assertSame;
import static org.junit.Assert.fail;
import static org.mockito.Mockito.when;
import static org.onap.so.openstack.utils.MsoMulticloudUtils.MULTICLOUD_QUERY_BODY_NULL;
@@ -113,13 +113,13 @@ public class MsoMulticloudUtilsTest extends BaseTest {
StackInfo result =
multicloudUtils.deleteStack("MTN14", "CloudOwner", "TEST-tenant", "TEST-stack/TEST-workload");
assertNotNull(result);
- assertTrue(HeatStatus.NOTFOUND == result.getStatus());
+ assertSame(HeatStatus.NOTFOUND, result.getStatus());
}
@Test
public void queryStack() throws MsoException {
StackInfo result = multicloudUtils.queryStack("MTN13", "CloudOwner", "TEST-tenant", "instanceId");
- assertTrue(HeatStatus.NOTFOUND == result.getStatus());
+ assertSame(HeatStatus.NOTFOUND, result.getStatus());
}
@Test
@@ -129,7 +129,7 @@ public class MsoMulticloudUtilsTest extends BaseTest {
.withStatus(HttpStatus.SC_OK)));
StackInfo result = multicloudUtils.queryStack("MTN13", "CloudOwner", "TEST-tenant", "instanceName/instanceId");
- assertTrue(HeatStatus.FAILED == result.getStatus());
+ assertSame(HeatStatus.FAILED, result.getStatus());
assertEquals(MULTICLOUD_QUERY_BODY_NULL, result.getStatusMessage());
}
@@ -143,7 +143,7 @@ public class MsoMulticloudUtilsTest extends BaseTest {
CloudInfo cloudInfo = new CloudInfo("cloudSiteId", "cloudOwner", "tenantId", "tenantName");
VduInstance vduInstance = multicloudUtils.deleteVdu(cloudInfo, "instanceId", 3);
assertNotNull(vduInstance);
- assertTrue(VduStateType.DELETED == vduInstance.getStatus().getState());
+ assertSame(VduStateType.DELETED, vduInstance.getStatus().getState());
}
@Ignore
diff --git a/adapters/mso-catalog-db-adapter/src/main/resources/db/migration/R__MacroData.sql b/adapters/mso-catalog-db-adapter/src/main/resources/db/migration/R__MacroData.sql
index 20a404372f..c1a67a5990 100644
--- a/adapters/mso-catalog-db-adapter/src/main/resources/db/migration/R__MacroData.sql
+++ b/adapters/mso-catalog-db-adapter/src/main/resources/db/migration/R__MacroData.sql
@@ -70,42 +70,44 @@ INSERT INTO orchestration_flow_reference(COMPOSITE_ACTION, SEQ_NO, FLOW_NAME, SC
('Service-Macro-Unassign', '4', 'UnassignNetworkBB', NULL, NULL, 1.0,(SELECT id from northbound_request_ref_lookup WHERE MACRO_ACTION = 'Service-Macro-Unassign' and CLOUD_OWNER = 'DEFAULT')),
('Service-Macro-Unassign', '5', 'UnassignServiceInstanceBB', NULL, NULL, 1.0,(SELECT id from northbound_request_ref_lookup WHERE MACRO_ACTION = 'Service-Macro-Unassign' and CLOUD_OWNER = 'DEFAULT')),
('Service-Macro-Create', '1', 'AssignServiceInstanceBB', NULL, NULL, 1.0,(SELECT id from northbound_request_ref_lookup WHERE MACRO_ACTION = 'Service-Macro-Create' and CLOUD_OWNER = 'DEFAULT')),
-('Service-Macro-Create', '2', 'CreateNetworkCollectionBB', NULL, NULL,1.0,(SELECT id from northbound_request_ref_lookup WHERE MACRO_ACTION = 'Service-Macro-Create' and CLOUD_OWNER = 'DEFAULT')),
-('Service-Macro-Create', '3', 'AssignNetworkBB', NULL, NULL, 1.0,(SELECT id from northbound_request_ref_lookup WHERE MACRO_ACTION = 'Service-Macro-Create' and CLOUD_OWNER = 'DEFAULT')),
-('Service-Macro-Create', '4', 'AssignVnfBB', NULL, NULL, 1.0,(SELECT id from northbound_request_ref_lookup WHERE MACRO_ACTION = 'Service-Macro-Create' and CLOUD_OWNER = 'DEFAULT')),
-('Service-Macro-Create', '5', 'AssignVolumeGroupBB', NULL, NULL, 1.0,(SELECT id from northbound_request_ref_lookup WHERE MACRO_ACTION = 'Service-Macro-Create' and CLOUD_OWNER = 'DEFAULT')),
-('Service-Macro-Create', '6', 'AssignVfModuleBB', NULL, NULL, 1.0,(SELECT id from northbound_request_ref_lookup WHERE MACRO_ACTION = 'Service-Macro-Create' and CLOUD_OWNER = 'DEFAULT')),
-('Service-Macro-Create', '7', 'ControllerExecutionBB', 'vnf', 'config-assign', 1.0,(SELECT id from northbound_request_ref_lookup WHERE MACRO_ACTION = 'Service-Macro-Create' and CLOUD_OWNER = 'DEFAULT')),
-('Service-Macro-Create', '8', 'AssignPnfBB', NULL, NULL, 1.0,(SELECT id from northbound_request_ref_lookup WHERE MACRO_ACTION = 'Service-Macro-Create' and CLOUD_OWNER = 'DEFAULT')),
-('Service-Macro-Create', '9', 'WaitForPnfReadyBB', NULL, NULL, 1.0,(SELECT id from northbound_request_ref_lookup WHERE MACRO_ACTION = 'Service-Macro-Create' and CLOUD_OWNER = 'DEFAULT')),
-('Service-Macro-Create', '10', 'ControllerExecutionBB', 'pnf', 'config-assign', 1.0,(SELECT id from northbound_request_ref_lookup WHERE MACRO_ACTION = 'Service-Macro-Create' and CLOUD_OWNER = 'DEFAULT')),
-('Service-Macro-Create', '11', 'ControllerExecutionBB', 'pnf', 'config-deploy', 1.0,(SELECT id from northbound_request_ref_lookup WHERE MACRO_ACTION = 'Service-Macro-Create' and CLOUD_OWNER = 'DEFAULT')),
-('Service-Macro-Create', '12', 'ActivatePnfBB', NULL, NULL, 1.0,(SELECT id from northbound_request_ref_lookup WHERE MACRO_ACTION = 'Service-Macro-Create' and CLOUD_OWNER = 'DEFAULT')),
-('Service-Macro-Create', '13', 'CreateNetworkBB', NULL, NULL, 1.0,(SELECT id from northbound_request_ref_lookup WHERE MACRO_ACTION = 'Service-Macro-Create' and CLOUD_OWNER = 'DEFAULT')),
-('Service-Macro-Create', '14', 'ActivateNetworkBB', NULL, NULL, 1.0,(SELECT id from northbound_request_ref_lookup WHERE MACRO_ACTION = 'Service-Macro-Create' and CLOUD_OWNER = 'DEFAULT')),
-('Service-Macro-Create', '15', 'CreateVolumeGroupBB', NULL, NULL, 1.0,(SELECT id from northbound_request_ref_lookup WHERE MACRO_ACTION = 'Service-Macro-Create' and CLOUD_OWNER = 'DEFAULT')),
-('Service-Macro-Create', '16', 'ActivateVolumeGroupBB', NULL, NULL, 1.0,(SELECT id from northbound_request_ref_lookup WHERE MACRO_ACTION = 'Service-Macro-Create' and CLOUD_OWNER = 'DEFAULT')),
-('Service-Macro-Create', '17', 'CreateVfModuleBB', NULL, NULL, 1.0,(SELECT id from northbound_request_ref_lookup WHERE MACRO_ACTION = 'Service-Macro-Create' and CLOUD_OWNER = 'DEFAULT')),
-('Service-Macro-Create', '18', 'ActivateVfModuleBB', NULL, NULL, 1.0,(SELECT id from northbound_request_ref_lookup WHERE MACRO_ACTION = 'Service-Macro-Create' and CLOUD_OWNER = 'DEFAULT')),
-('Service-Macro-Create', '19', 'ControllerExecutionBB', 'vnf', 'config-deploy', 1.0,(SELECT id from northbound_request_ref_lookup WHERE MACRO_ACTION = 'Service-Macro-Create' and CLOUD_OWNER = 'DEFAULT')),
-('Service-Macro-Create', '20', 'ActivateVnfBB', NULL, NULL, 1.0,(SELECT id from northbound_request_ref_lookup WHERE MACRO_ACTION = 'Service-Macro-Create' and CLOUD_OWNER = 'DEFAULT')),
-('Service-Macro-Create', '21', 'ActivateNetworkCollectionBB', NULL, NULL,1.0,(SELECT id from northbound_request_ref_lookup WHERE MACRO_ACTION = 'Service-Macro-Create' and CLOUD_OWNER = 'DEFAULT')),
-('Service-Macro-Create', '22', 'ActivateServiceInstanceBB', NULL, NULL, 1.0,(SELECT id from northbound_request_ref_lookup WHERE MACRO_ACTION = 'Service-Macro-Create' and CLOUD_OWNER = 'DEFAULT')),
-('Service-Macro-Delete', '1', 'DeactivateVfModuleBB', NULL, NULL, 1.0,(SELECT id from northbound_request_ref_lookup WHERE MACRO_ACTION = 'Service-Macro-Delete' and CLOUD_OWNER = 'DEFAULT')),
-('Service-Macro-Delete', '2', 'DeleteVfModuleBB', NULL, NULL, 1.0,(SELECT id from northbound_request_ref_lookup WHERE MACRO_ACTION = 'Service-Macro-Delete' and CLOUD_OWNER = 'DEFAULT')),
-('Service-Macro-Delete', '3', 'DeactivateVolumeGroupBB', NULL, NULL, 1.0,(SELECT id from northbound_request_ref_lookup WHERE MACRO_ACTION = 'Service-Macro-Delete' and CLOUD_OWNER = 'DEFAULT')),
-('Service-Macro-Delete', '4', 'DeleteVolumeGroupBB', NULL, NULL, 1.0,(SELECT id from northbound_request_ref_lookup WHERE MACRO_ACTION = 'Service-Macro-Delete' and CLOUD_OWNER = 'DEFAULT')),
-('Service-Macro-Delete', '5', 'DeactivateVnfBB', NULL, NULL, 1.0,(SELECT id from northbound_request_ref_lookup WHERE MACRO_ACTION = 'Service-Macro-Delete' and CLOUD_OWNER = 'DEFAULT')),
-('Service-Macro-Delete', '6', 'DeactivatePnfBB', NULL, NULL, 1.0,(SELECT id from northbound_request_ref_lookup WHERE MACRO_ACTION = 'Service-Macro-Delete' and CLOUD_OWNER = 'DEFAULT')),
-('Service-Macro-Delete', '7', 'DeactivateNetworkBB', NULL, NULL, 1.0,(SELECT id from northbound_request_ref_lookup WHERE MACRO_ACTION = 'Service-Macro-Delete' and CLOUD_OWNER = 'DEFAULT')),
-('Service-Macro-Delete', '8', 'DeleteNetworkBB', NULL, NULL, 1.0,(SELECT id from northbound_request_ref_lookup WHERE MACRO_ACTION = 'Service-Macro-Delete' and CLOUD_OWNER = 'DEFAULT')),
-('Service-Macro-Delete', '9', 'DeleteNetworkCollectionBB', NULL, NULL, 1.0,(SELECT id from northbound_request_ref_lookup WHERE MACRO_ACTION = 'Service-Macro-Delete' and CLOUD_OWNER = 'DEFAULT')),
-('Service-Macro-Delete', '10', 'DeactivateServiceInstanceBB', NULL, NULL, 1.0,(SELECT id from northbound_request_ref_lookup WHERE MACRO_ACTION = 'Service-Macro-Delete' and CLOUD_OWNER = 'DEFAULT')),
-('Service-Macro-Delete', '11', 'UnassignVfModuleBB', NULL, NULL, 1.0,(SELECT id from northbound_request_ref_lookup WHERE MACRO_ACTION = 'Service-Macro-Delete' and CLOUD_OWNER = 'DEFAULT')),
-('Service-Macro-Delete', '12', 'UnassignVolumeGroupBB', NULL, NULL, 1.0,(SELECT id from northbound_request_ref_lookup WHERE MACRO_ACTION = 'Service-Macro-Delete' and CLOUD_OWNER = 'DEFAULT')),
-('Service-Macro-Delete', '13', 'UnassignVnfBB', NULL, NULL, 1.0,(SELECT id from northbound_request_ref_lookup WHERE MACRO_ACTION = 'Service-Macro-Delete' and CLOUD_OWNER = 'DEFAULT')),
-('Service-Macro-Delete', '14', 'UnassignNetworkBB', NULL, NULL, 1.0,(SELECT id from northbound_request_ref_lookup WHERE MACRO_ACTION = 'Service-Macro-Delete' and CLOUD_OWNER = 'DEFAULT')),
-('Service-Macro-Delete', '15', 'UnassignServiceInstanceBB', NULL, NULL, 1.0,(SELECT id from northbound_request_ref_lookup WHERE MACRO_ACTION = 'Service-Macro-Delete' and CLOUD_OWNER = 'DEFAULT')),
+('Service-Macro-Create', '2', 'CreateChildServiceBB', NULL, NULL,1.0,(SELECT id from northbound_request_ref_lookup WHERE MACRO_ACTION = 'Service-Macro-Create' and CLOUD_OWNER = 'DEFAULT')),
+('Service-Macro-Create', '3', 'CreateNetworkCollectionBB', NULL, NULL,1.0,(SELECT id from northbound_request_ref_lookup WHERE MACRO_ACTION = 'Service-Macro-Create' and CLOUD_OWNER = 'DEFAULT')),
+('Service-Macro-Create', '4', 'AssignNetworkBB', NULL, NULL, 1.0,(SELECT id from northbound_request_ref_lookup WHERE MACRO_ACTION = 'Service-Macro-Create' and CLOUD_OWNER = 'DEFAULT')),
+('Service-Macro-Create', '5', 'AssignVnfBB', NULL, NULL, 1.0,(SELECT id from northbound_request_ref_lookup WHERE MACRO_ACTION = 'Service-Macro-Create' and CLOUD_OWNER = 'DEFAULT')),
+('Service-Macro-Create', '6', 'AssignVolumeGroupBB', NULL, NULL, 1.0,(SELECT id from northbound_request_ref_lookup WHERE MACRO_ACTION = 'Service-Macro-Create' and CLOUD_OWNER = 'DEFAULT')),
+('Service-Macro-Create', '7', 'AssignVfModuleBB', NULL, NULL, 1.0,(SELECT id from northbound_request_ref_lookup WHERE MACRO_ACTION = 'Service-Macro-Create' and CLOUD_OWNER = 'DEFAULT')),
+('Service-Macro-Create', '8', 'ControllerExecutionBB', 'vnf', 'config-assign', 1.0,(SELECT id from northbound_request_ref_lookup WHERE MACRO_ACTION = 'Service-Macro-Create' and CLOUD_OWNER = 'DEFAULT')),
+('Service-Macro-Create', '9', 'AssignPnfBB', NULL, NULL, 1.0,(SELECT id from northbound_request_ref_lookup WHERE MACRO_ACTION = 'Service-Macro-Create' and CLOUD_OWNER = 'DEFAULT')),
+('Service-Macro-Create', '10', 'WaitForPnfReadyBB', NULL, NULL, 1.0,(SELECT id from northbound_request_ref_lookup WHERE MACRO_ACTION = 'Service-Macro-Create' and CLOUD_OWNER = 'DEFAULT')),
+('Service-Macro-Create', '11', 'ControllerExecutionBB', 'pnf', 'config-assign', 1.0,(SELECT id from northbound_request_ref_lookup WHERE MACRO_ACTION = 'Service-Macro-Create' and CLOUD_OWNER = 'DEFAULT')),
+('Service-Macro-Create', '12', 'ControllerExecutionBB', 'pnf', 'config-deploy', 1.0,(SELECT id from northbound_request_ref_lookup WHERE MACRO_ACTION = 'Service-Macro-Create' and CLOUD_OWNER = 'DEFAULT')),
+('Service-Macro-Create', '13', 'ActivatePnfBB', NULL, NULL, 1.0,(SELECT id from northbound_request_ref_lookup WHERE MACRO_ACTION = 'Service-Macro-Create' and CLOUD_OWNER = 'DEFAULT')),
+('Service-Macro-Create', '14', 'CreateNetworkBB', NULL, NULL, 1.0,(SELECT id from northbound_request_ref_lookup WHERE MACRO_ACTION = 'Service-Macro-Create' and CLOUD_OWNER = 'DEFAULT')),
+('Service-Macro-Create', '15', 'ActivateNetworkBB', NULL, NULL, 1.0,(SELECT id from northbound_request_ref_lookup WHERE MACRO_ACTION = 'Service-Macro-Create' and CLOUD_OWNER = 'DEFAULT')),
+('Service-Macro-Create', '16', 'CreateVolumeGroupBB', NULL, NULL, 1.0,(SELECT id from northbound_request_ref_lookup WHERE MACRO_ACTION = 'Service-Macro-Create' and CLOUD_OWNER = 'DEFAULT')),
+('Service-Macro-Create', '17', 'ActivateVolumeGroupBB', NULL, NULL, 1.0,(SELECT id from northbound_request_ref_lookup WHERE MACRO_ACTION = 'Service-Macro-Create' and CLOUD_OWNER = 'DEFAULT')),
+('Service-Macro-Create', '18', 'CreateVfModuleBB', NULL, NULL, 1.0,(SELECT id from northbound_request_ref_lookup WHERE MACRO_ACTION = 'Service-Macro-Create' and CLOUD_OWNER = 'DEFAULT')),
+('Service-Macro-Create', '19', 'ActivateVfModuleBB', NULL, NULL, 1.0,(SELECT id from northbound_request_ref_lookup WHERE MACRO_ACTION = 'Service-Macro-Create' and CLOUD_OWNER = 'DEFAULT')),
+('Service-Macro-Create', '20', 'ControllerExecutionBB', 'vnf', 'config-deploy', 1.0,(SELECT id from northbound_request_ref_lookup WHERE MACRO_ACTION = 'Service-Macro-Create' and CLOUD_OWNER = 'DEFAULT')),
+('Service-Macro-Create', '21', 'ActivateVnfBB', NULL, NULL, 1.0,(SELECT id from northbound_request_ref_lookup WHERE MACRO_ACTION = 'Service-Macro-Create' and CLOUD_OWNER = 'DEFAULT')),
+('Service-Macro-Create', '22', 'ActivateNetworkCollectionBB', NULL, NULL,1.0,(SELECT id from northbound_request_ref_lookup WHERE MACRO_ACTION = 'Service-Macro-Create' and CLOUD_OWNER = 'DEFAULT')),
+('Service-Macro-Create', '23', 'ActivateServiceInstanceBB', NULL, NULL, 1.0,(SELECT id from northbound_request_ref_lookup WHERE MACRO_ACTION = 'Service-Macro-Create' and CLOUD_OWNER = 'DEFAULT')),
+('Service-Macro-Delete', '1', 'DeleteChildServiceBB', NULL, NULL, 1.0,(SELECT id from northbound_request_ref_lookup WHERE MACRO_ACTION = 'Service-Macro-Delete' and CLOUD_OWNER = 'DEFAULT')),
+('Service-Macro-Delete', '2', 'DeactivateVfModuleBB', NULL, NULL, 1.0,(SELECT id from northbound_request_ref_lookup WHERE MACRO_ACTION = 'Service-Macro-Delete' and CLOUD_OWNER = 'DEFAULT')),
+('Service-Macro-Delete', '3', 'DeleteVfModuleBB', NULL, NULL, 1.0,(SELECT id from northbound_request_ref_lookup WHERE MACRO_ACTION = 'Service-Macro-Delete' and CLOUD_OWNER = 'DEFAULT')),
+('Service-Macro-Delete', '4', 'DeactivateVolumeGroupBB', NULL, NULL, 1.0,(SELECT id from northbound_request_ref_lookup WHERE MACRO_ACTION = 'Service-Macro-Delete' and CLOUD_OWNER = 'DEFAULT')),
+('Service-Macro-Delete', '5', 'DeleteVolumeGroupBB', NULL, NULL, 1.0,(SELECT id from northbound_request_ref_lookup WHERE MACRO_ACTION = 'Service-Macro-Delete' and CLOUD_OWNER = 'DEFAULT')),
+('Service-Macro-Delete', '6', 'DeactivateVnfBB', NULL, NULL, 1.0,(SELECT id from northbound_request_ref_lookup WHERE MACRO_ACTION = 'Service-Macro-Delete' and CLOUD_OWNER = 'DEFAULT')),
+('Service-Macro-Delete', '7', 'DeactivatePnfBB', NULL, NULL, 1.0,(SELECT id from northbound_request_ref_lookup WHERE MACRO_ACTION = 'Service-Macro-Delete' and CLOUD_OWNER = 'DEFAULT')),
+('Service-Macro-Delete', '8', 'DeactivateNetworkBB', NULL, NULL, 1.0,(SELECT id from northbound_request_ref_lookup WHERE MACRO_ACTION = 'Service-Macro-Delete' and CLOUD_OWNER = 'DEFAULT')),
+('Service-Macro-Delete', '9', 'DeleteNetworkBB', NULL, NULL, 1.0,(SELECT id from northbound_request_ref_lookup WHERE MACRO_ACTION = 'Service-Macro-Delete' and CLOUD_OWNER = 'DEFAULT')),
+('Service-Macro-Delete', '10', 'DeleteNetworkCollectionBB', NULL, NULL, 1.0,(SELECT id from northbound_request_ref_lookup WHERE MACRO_ACTION = 'Service-Macro-Delete' and CLOUD_OWNER = 'DEFAULT')),
+('Service-Macro-Delete', '11', 'DeactivateServiceInstanceBB', NULL, NULL, 1.0,(SELECT id from northbound_request_ref_lookup WHERE MACRO_ACTION = 'Service-Macro-Delete' and CLOUD_OWNER = 'DEFAULT')),
+('Service-Macro-Delete', '12', 'UnassignVfModuleBB', NULL, NULL, 1.0,(SELECT id from northbound_request_ref_lookup WHERE MACRO_ACTION = 'Service-Macro-Delete' and CLOUD_OWNER = 'DEFAULT')),
+('Service-Macro-Delete', '13', 'UnassignVolumeGroupBB', NULL, NULL, 1.0,(SELECT id from northbound_request_ref_lookup WHERE MACRO_ACTION = 'Service-Macro-Delete' and CLOUD_OWNER = 'DEFAULT')),
+('Service-Macro-Delete', '14', 'UnassignVnfBB', NULL, NULL, 1.0,(SELECT id from northbound_request_ref_lookup WHERE MACRO_ACTION = 'Service-Macro-Delete' and CLOUD_OWNER = 'DEFAULT')),
+('Service-Macro-Delete', '15', 'UnassignNetworkBB', NULL, NULL, 1.0,(SELECT id from northbound_request_ref_lookup WHERE MACRO_ACTION = 'Service-Macro-Delete' and CLOUD_OWNER = 'DEFAULT')),
+('Service-Macro-Delete', '16', 'UnassignServiceInstanceBB', NULL, NULL, 1.0,(SELECT id from northbound_request_ref_lookup WHERE MACRO_ACTION = 'Service-Macro-Delete' and CLOUD_OWNER = 'DEFAULT')),
('Service-Macro-Upgrade', '1', 'ChangeModelServiceInstanceBB', NULL, NULL, 1.0,(SELECT id from northbound_request_ref_lookup WHERE MACRO_ACTION = 'Service-Macro-Upgrade' and CLOUD_OWNER = 'DEFAULT')),
('Network-Create', '1', 'AssignNetworkBB', NULL, NULL, 1.0,(SELECT id from northbound_request_ref_lookup WHERE MACRO_ACTION = 'Network-Create' and CLOUD_OWNER = 'DEFAULT')),
('Network-Create', '2', 'CreateNetworkBB', NULL, NULL, 1.0,(SELECT id from northbound_request_ref_lookup WHERE MACRO_ACTION = 'Network-Create' and CLOUD_OWNER = 'DEFAULT')),
@@ -334,7 +336,9 @@ VALUES
('VNFHealthCheckActivity','*','*','*','*','Manual','Abort','*', '*'),
('VNFConfigModifyActivity','*','*','*','*','Manual','Abort','*', '*'),
('VNFUnsetInMaintFlagActivity','*','*','*','*','Manual','Abort','*', '*'),
-('VNFUnsetClosedLoopDisabledActivity','*','*','*','*','Manual','Abort','*', '*');
+('VNFUnsetClosedLoopDisabledActivity','*','*','*','*','Manual','Abort','*', '*'),
+('DeleteChildServiceBB', '*', '*', '*', '*', 'Rollback', 'Abort', '*', '*'),
+('CreateChildServiceBB', '*', '*', '*', '*', 'Rollback', 'Abort', '*', '*');
INSERT INTO building_block_detail (building_block_name, resource_type, target_action)
VALUES
@@ -375,11 +379,13 @@ VALUES
('CreateVfModuleBB', 'VF_MODULE', 'CREATE'),
('CreateNetworkBB', 'NETWORK', 'CREATE'),
('CreateNetworkCollectionBB', 'NETWORK_COLLECTION', 'CREATE'),
+('CreateChildServiceBB', 'NO_VALIDATE', 'CUSTOM'),
('DeleteVolumeGroupBB', 'VOLUME_GROUP', 'DELETE'),
('DeleteVfModuleBB', 'VF_MODULE', 'DELETE'),
('DeleteNetworkBB', 'NETWORK', 'DELETE'),
('DeleteNetworkCollectionBB', 'NETWORK_COLLECTION', 'DELETE'),
+('DeleteChildServiceBB', 'NO_VALIDATE', 'CUSTOM'),
('ConfigurationScaleOutBB', 'NO_VALIDATE', 'CUSTOM'),
('GenericVnfHealthCheckBB', 'NO_VALIDATE', 'CUSTOM'),
diff --git a/adapters/mso-catalog-db-adapter/src/test/java/org/onap/so/adapters/catalogdb/catalogrest/CatalogDBRestTest.java b/adapters/mso-catalog-db-adapter/src/test/java/org/onap/so/adapters/catalogdb/catalogrest/CatalogDBRestTest.java
index 48ef1329b0..74ea27cc06 100644
--- a/adapters/mso-catalog-db-adapter/src/test/java/org/onap/so/adapters/catalogdb/catalogrest/CatalogDBRestTest.java
+++ b/adapters/mso-catalog-db-adapter/src/test/java/org/onap/so/adapters/catalogdb/catalogrest/CatalogDBRestTest.java
@@ -3,6 +3,7 @@
* ONAP - SO
* ================================================================================
* Copyright (C) 2017 AT&T Intellectual Property. All rights reserved.
+ * Copyright (C) 2022 Samsung Electronics Intellectual Property. 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.
@@ -813,7 +814,7 @@ public class CatalogDBRestTest extends CatalogDbAdapterBaseTest {
restTemplate.exchange(builder.toUriString(), HttpMethod.GET, entity, String.class);
assertEquals(Response.Status.INTERNAL_SERVER_ERROR.getStatusCode(), response.getStatusCode().value());
- JSONAssert.assertEquals(badQueryParamResponse, response.getBody().toString(), false);
+ JSONAssert.assertEquals(badQueryParamResponse, response.getBody(), false);
}
@Test
@@ -850,10 +851,10 @@ public class CatalogDBRestTest extends CatalogDbAdapterBaseTest {
ObjectMapper mapper = new ObjectMapper();
ProcessingFlags processingFlagsResponse = mapper.readValue(response.getBody(), ProcessingFlags.class);
- assertEquals(processingFlagsResponse.getFlag(), "TESTFLAG");
- assertEquals(processingFlagsResponse.getValue(), "NO");
- assertEquals(processingFlagsResponse.getEndpoint(), "TESTENDPOINT");
- assertEquals(processingFlagsResponse.getDescription(), "TEST FLAG");
+ assertEquals("TESTFLAG", processingFlagsResponse.getFlag());
+ assertEquals("NO", processingFlagsResponse.getValue());
+ assertEquals("TESTENDPOINT", processingFlagsResponse.getEndpoint());
+ assertEquals("TEST FLAG", processingFlagsResponse.getDescription());
}
@Test
@@ -876,8 +877,8 @@ public class CatalogDBRestTest extends CatalogDbAdapterBaseTest {
boolean testFlagFound = false;
for (int i = 0; i < processingFlagsResponse.size(); i++) {
if (processingFlagsResponse.get(i).getFlag().equals("TESTFLAG")) {
- assertEquals(processingFlagsResponse.get(i).getEndpoint(), "TESTENDPOINT");
- assertEquals(processingFlagsResponse.get(i).getDescription(), "TEST FLAG");
+ assertEquals("TESTENDPOINT", processingFlagsResponse.get(i).getEndpoint());
+ assertEquals("TEST FLAG", processingFlagsResponse.get(i).getDescription());
testFlagFound = true;
}
}
diff --git a/adapters/mso-catalog-db-adapter/src/test/java/org/onap/so/adapters/catalogdb/catalogrest/QueryServiceArtifactTest.java b/adapters/mso-catalog-db-adapter/src/test/java/org/onap/so/adapters/catalogdb/catalogrest/QueryServiceArtifactTest.java
index 2266eafa12..d7852cfdfe 100644
--- a/adapters/mso-catalog-db-adapter/src/test/java/org/onap/so/adapters/catalogdb/catalogrest/QueryServiceArtifactTest.java
+++ b/adapters/mso-catalog-db-adapter/src/test/java/org/onap/so/adapters/catalogdb/catalogrest/QueryServiceArtifactTest.java
@@ -3,6 +3,7 @@
* ONAP - SO
* ================================================================================
* Copyright (c) 2019, CMCC Technologies Co., Ltd.
+ * Copyright (c) 2022, Samsung Electronics. 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.
@@ -35,7 +36,7 @@ public class QueryServiceArtifactTest {
QueryServiceArtifact queryServiceArtifact = new QueryServiceArtifact(createList());
String jsonResult = queryServiceArtifact.JSON2(true, false);
Assertions.assertThat(JsonPathUtil.getInstance().locateResult(jsonResult, "$.serviceArtifact[0].name").get())
- .isEqualTo("eMBB.zip");
+ .contains("eMBB.zip");
}
private List<ServiceArtifact> createList() {
diff --git a/adapters/mso-catalog-db-adapter/src/test/java/org/onap/so/adapters/catalogdb/catalogrest/QueryServiceInfoTest.java b/adapters/mso-catalog-db-adapter/src/test/java/org/onap/so/adapters/catalogdb/catalogrest/QueryServiceInfoTest.java
index e948141b89..37fd4641a1 100644
--- a/adapters/mso-catalog-db-adapter/src/test/java/org/onap/so/adapters/catalogdb/catalogrest/QueryServiceInfoTest.java
+++ b/adapters/mso-catalog-db-adapter/src/test/java/org/onap/so/adapters/catalogdb/catalogrest/QueryServiceInfoTest.java
@@ -3,6 +3,7 @@
* ONAP - SO
* ================================================================================
* Copyright (c) 2019, CMCC Technologies Co., Ltd.
+ * Copyright (c) 2022, Samsung Electronics. 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.
@@ -35,7 +36,7 @@ public class QueryServiceInfoTest {
QueryServiceInfo queryServiceInfo = new QueryServiceInfo(createList());
String jsonResult = queryServiceInfo.JSON2(true, false);
String serviceInfo = jsonResult.substring(jsonResult.indexOf("{"), jsonResult.length());
- Assertions.assertThat(JsonPathUtil.getInstance().locateResult(serviceInfo, "$.id").get()).isEqualTo("1");
+ Assertions.assertThat(JsonPathUtil.getInstance().locateResult(serviceInfo, "$.id").get()).contains("1");
}
private List<ServiceInfo> createList() {
diff --git a/adapters/mso-requests-db-adapter/src/test/java/org/onap/so/adapters/requestsdb/client/RequestsDbClientTest.java b/adapters/mso-requests-db-adapter/src/test/java/org/onap/so/adapters/requestsdb/client/RequestsDbClientTest.java
index 33805f9faa..59919c67f2 100644
--- a/adapters/mso-requests-db-adapter/src/test/java/org/onap/so/adapters/requestsdb/client/RequestsDbClientTest.java
+++ b/adapters/mso-requests-db-adapter/src/test/java/org/onap/so/adapters/requestsdb/client/RequestsDbClientTest.java
@@ -3,6 +3,7 @@
* ONAP - SO
* ================================================================================
* Copyright (C) 2017 - 2018 AT&T Intellectual Property. All rights reserved.
+ * Copyright (c) 2022, Samsung Electronics. 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.
@@ -26,7 +27,6 @@ import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertFalse;
import static org.junit.Assert.assertNotNull;
import static org.junit.Assert.assertNull;
-import static org.junit.Assert.assertTrue;
import java.sql.Timestamp;
import java.time.Instant;
import java.time.temporal.ChronoUnit;
@@ -339,7 +339,8 @@ public class RequestsDbClientTest extends RequestsAdapterBase {
requestsDbClient.getRequestProcessingDataBySoRequestIdAndNameAndTagOrderByCreateTimeDesc(
"00032ab7-na18-42e5-965d-8ea592502018", "requestAction", "pincFabricConfigRequest");
assertNotNull(requestProcessingData);
- assertTrue(requestProcessingData.size() == 1);
+ assertEquals(1, requestProcessingData.size());
assertEquals("assign", requestProcessingData.get(0).getValue());
}
}
+
diff --git a/adapters/mso-requests-db-adapter/src/test/java/org/onap/so/adapters/requestsdb/exceptions/MsoRequestsDbExceptionBeanTest.java b/adapters/mso-requests-db-adapter/src/test/java/org/onap/so/adapters/requestsdb/exceptions/MsoRequestsDbExceptionBeanTest.java
index 77821bfefd..3cf9314a8b 100644
--- a/adapters/mso-requests-db-adapter/src/test/java/org/onap/so/adapters/requestsdb/exceptions/MsoRequestsDbExceptionBeanTest.java
+++ b/adapters/mso-requests-db-adapter/src/test/java/org/onap/so/adapters/requestsdb/exceptions/MsoRequestsDbExceptionBeanTest.java
@@ -3,6 +3,7 @@
* ONAP - SO
* ================================================================================
* Copyright (C) 2018 TechMahindra
+ * Copyright (c) 2022, Samsung Electronics. 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.
@@ -37,7 +38,8 @@ public class MsoRequestsDbExceptionBeanTest {
public void testGetMessage() {
soRequestsDbExceptionBean.setMessage("message");
Assert.assertNotNull(soRequestsDbExceptionBean.getMessage());
- Assert.assertEquals(soRequestsDbExceptionBean.getMessage(), "message");
+ Assert.assertEquals("message", soRequestsDbExceptionBean.getMessage());
}
}
+
diff --git a/adapters/mso-requests-db-adapter/src/test/java/org/onap/so/adapters/requestsdb/exceptions/MsoRequestsDbExceptionTest.java b/adapters/mso-requests-db-adapter/src/test/java/org/onap/so/adapters/requestsdb/exceptions/MsoRequestsDbExceptionTest.java
index 04f597f9b2..94c6d267e4 100644
--- a/adapters/mso-requests-db-adapter/src/test/java/org/onap/so/adapters/requestsdb/exceptions/MsoRequestsDbExceptionTest.java
+++ b/adapters/mso-requests-db-adapter/src/test/java/org/onap/so/adapters/requestsdb/exceptions/MsoRequestsDbExceptionTest.java
@@ -3,6 +3,7 @@
* ONAP - SO
* ================================================================================
* Copyright (C) 2018 TechMahindra
+ * Copyright (c) 2022, Samsung Electronics. 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.
@@ -27,7 +28,7 @@ public class MsoRequestsDbExceptionTest {
public void testConstructorWithMessaqge() throws Exception {
String message = "testing message";
MsoRequestsDbException msoRequestsDbException = new MsoRequestsDbException(message);
- Assert.assertTrue(msoRequestsDbException.getCause() == null);
+ Assert.assertNull(msoRequestsDbException.getCause());
Assert.assertEquals(message, msoRequestsDbException.getLocalizedMessage());
Assert.assertEquals(message, msoRequestsDbException.getMessage());
}
@@ -64,3 +65,4 @@ public class MsoRequestsDbExceptionTest {
}
}
+
diff --git a/adapters/mso-sdnc-adapter/src/test/java/org/onap/so/adapters/sdnc/sdncrest/BPRestCallbackTest.java b/adapters/mso-sdnc-adapter/src/test/java/org/onap/so/adapters/sdnc/sdncrest/BPRestCallbackTest.java
index c1bbb9ae9a..557a67b7cb 100644
--- a/adapters/mso-sdnc-adapter/src/test/java/org/onap/so/adapters/sdnc/sdncrest/BPRestCallbackTest.java
+++ b/adapters/mso-sdnc-adapter/src/test/java/org/onap/so/adapters/sdnc/sdncrest/BPRestCallbackTest.java
@@ -24,6 +24,7 @@ import static com.github.tomakehurst.wiremock.client.WireMock.aResponse;
import static com.github.tomakehurst.wiremock.client.WireMock.post;
import static com.github.tomakehurst.wiremock.client.WireMock.urlPathEqualTo;
import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertTrue;
import static org.junit.Assert.assertNotNull;
import org.apache.http.HttpStatus;
import org.junit.Test;
@@ -48,7 +49,6 @@ public class BPRestCallbackTest extends BaseTest {
.withBody(response).withStatus(HttpStatus.SC_MULTIPLE_CHOICES)));
boolean responseCommon = bpRestCallback.send("http://localhost:" + wireMockPort + "/sdnc", "Test");
- assertNotNull(responseCommon);
- assertEquals(true, responseCommon);
+ assertTrue(responseCommon);
}
}
diff --git a/bpmn/MSOCommonBPMN/src/main/java/org/onap/so/bpmn/servicedecomposition/entities/ResourceKey.java b/bpmn/MSOCommonBPMN/src/main/java/org/onap/so/bpmn/servicedecomposition/entities/ResourceKey.java
index 641cd35027..aa5da4c790 100644
--- a/bpmn/MSOCommonBPMN/src/main/java/org/onap/so/bpmn/servicedecomposition/entities/ResourceKey.java
+++ b/bpmn/MSOCommonBPMN/src/main/java/org/onap/so/bpmn/servicedecomposition/entities/ResourceKey.java
@@ -35,6 +35,9 @@ public enum ResourceKey {
VPN_BONDING_LINK_ID,
INSTANCE_GROUP_ID,
PNF,
+ PNF_INSTANCE_NAME,
VNF_INSTANCE_NAME,
- VF_MODULE_INSTANCE_NAME
+ VF_MODULE_INSTANCE_NAME,
+ CHILD_SERVICE_INSTANCE_ID,
+ CHILD_SERVICE_INSTANCE_NAME
}
diff --git a/bpmn/MSOCommonBPMN/src/main/java/org/onap/so/bpmn/servicedecomposition/entities/WorkflowResourceIds.java b/bpmn/MSOCommonBPMN/src/main/java/org/onap/so/bpmn/servicedecomposition/entities/WorkflowResourceIds.java
index 5df7c60f74..a44d5e972d 100644
--- a/bpmn/MSOCommonBPMN/src/main/java/org/onap/so/bpmn/servicedecomposition/entities/WorkflowResourceIds.java
+++ b/bpmn/MSOCommonBPMN/src/main/java/org/onap/so/bpmn/servicedecomposition/entities/WorkflowResourceIds.java
@@ -42,6 +42,10 @@ public class WorkflowResourceIds implements Serializable {
private String instanceGroupId;
private String vnfInstanceName;
private String vfModuleInstanceName;
+ private String childServiceInstanceId;
+ private String childServiceInstanceName;
+ private String pnfInstanceName;
+
public WorkflowResourceIds() {
@@ -58,6 +62,8 @@ public class WorkflowResourceIds implements Serializable {
this.networkCollectionId = workflowResourceIds.networkCollectionId;
this.configurationId = workflowResourceIds.configurationId;
this.instanceGroupId = workflowResourceIds.instanceGroupId;
+ this.childServiceInstanceId = workflowResourceIds.childServiceInstanceId;
+ this.childServiceInstanceName = workflowResourceIds.childServiceInstanceName;
}
@@ -157,4 +163,28 @@ public class WorkflowResourceIds implements Serializable {
public void setVfModuleInstanceName(String vfModuleInstanceName) {
this.vfModuleInstanceName = vfModuleInstanceName;
}
+
+ public String getChildServiceInstanceId() {
+ return childServiceInstanceId;
+ }
+
+ public void setChildServiceInstanceId(String childServiceInstanceId) {
+ this.childServiceInstanceId = childServiceInstanceId;
+ }
+
+ public String getChildServiceInstanceName() {
+ return childServiceInstanceName;
+ }
+
+ public void setChildServiceInstanceName(String childServiceInstanceName) {
+ this.childServiceInstanceName = childServiceInstanceName;
+ }
+
+ public String getPnfInstanceName() {
+ return pnfInstanceName;
+ }
+
+ public void setPnfInstanceName(String pnfInstanceName) {
+ this.pnfInstanceName = pnfInstanceName;
+ }
}
diff --git a/bpmn/MSOCommonBPMN/src/main/java/org/onap/so/bpmn/servicedecomposition/tasks/BBInputSetup.java b/bpmn/MSOCommonBPMN/src/main/java/org/onap/so/bpmn/servicedecomposition/tasks/BBInputSetup.java
index 6d5eb63b0d..a0784b375e 100644
--- a/bpmn/MSOCommonBPMN/src/main/java/org/onap/so/bpmn/servicedecomposition/tasks/BBInputSetup.java
+++ b/bpmn/MSOCommonBPMN/src/main/java/org/onap/so/bpmn/servicedecomposition/tasks/BBInputSetup.java
@@ -262,6 +262,9 @@ public class BBInputSetup implements JavaDelegate {
lookupKeyMap.put(ResourceKey.INSTANCE_GROUP_ID, workflowResourceIds.getInstanceGroupId());
lookupKeyMap.put(ResourceKey.VNF_INSTANCE_NAME, workflowResourceIds.getVnfInstanceName());
lookupKeyMap.put(ResourceKey.VF_MODULE_INSTANCE_NAME, workflowResourceIds.getVfModuleInstanceName());
+ lookupKeyMap.put(ResourceKey.CHILD_SERVICE_INSTANCE_ID, workflowResourceIds.getChildServiceInstanceId());
+ lookupKeyMap.put(ResourceKey.CHILD_SERVICE_INSTANCE_NAME, workflowResourceIds.getChildServiceInstanceName());
+ lookupKeyMap.put(ResourceKey.PNF_INSTANCE_NAME, workflowResourceIds.getPnfInstanceName());
}
protected GeneralBuildingBlock getGBBALaCarteNonService(ExecuteBuildingBlock executeBB,
@@ -1632,9 +1635,16 @@ public class BBInputSetup implements JavaDelegate {
} else if (bbName.contains(PNF) || (bbName.contains(CONTROLLER)
&& (PNF).equalsIgnoreCase(executeBB.getBuildingBlock().getBpmnScope()))) {
String pnfId = lookupKeyMap.get(ResourceKey.PNF);
- resources.getPnfs().stream()
- .filter(pnfs -> Objects.equals(key, pnfs.getModelInfo().getModelCustomizationId())).findFirst()
- .ifPresent(pnfs -> BBInputSetupPnf.populatePnfToServiceInstance(pnfs, pnfId, serviceInstance));
+ String pnfInstanceName = lookupKeyMap.get(ResourceKey.PNF_INSTANCE_NAME);
+ if (StringUtils.isNotBlank(pnfInstanceName)) {
+ resources.getPnfs().stream().filter(pnfs -> Objects.equals(pnfInstanceName, pnfs.getInstanceName()))
+ .findFirst()
+ .ifPresent(pnfs -> BBInputSetupPnf.populatePnfToServiceInstance(pnfs, pnfId, serviceInstance));
+ } else {
+ resources.getPnfs().stream()
+ .filter(pnfs -> Objects.equals(key, pnfs.getModelInfo().getModelCustomizationId())).findFirst()
+ .ifPresent(pnfs -> BBInputSetupPnf.populatePnfToServiceInstance(pnfs, pnfId, serviceInstance));
+ }
} else if (bbName.contains(VF_MODULE) || bbName.contains(VOLUME_GROUP) || (bbName.contains(CONTROLLER)
&& (VF_MODULE).equalsIgnoreCase(executeBB.getBuildingBlock().getBpmnScope()))) {
String vfModuleInstanceName = lookupKeyMap.get(ResourceKey.VF_MODULE_INSTANCE_NAME);
diff --git a/bpmn/MSOCommonBPMN/src/test/java/org/onap/so/bpmn/servicedecomposition/tasks/BBInputSetupTest.java b/bpmn/MSOCommonBPMN/src/test/java/org/onap/so/bpmn/servicedecomposition/tasks/BBInputSetupTest.java
index d405cff8bb..803d2bf8a3 100644
--- a/bpmn/MSOCommonBPMN/src/test/java/org/onap/so/bpmn/servicedecomposition/tasks/BBInputSetupTest.java
+++ b/bpmn/MSOCommonBPMN/src/test/java/org/onap/so/bpmn/servicedecomposition/tasks/BBInputSetupTest.java
@@ -2121,6 +2121,9 @@ public class BBInputSetupTest {
String instanceGroupId = "instancegroupId";
String vnfInstanceName = "vnfInstanceName";
String vfModuleInstanceName = "vfModuleInstanceName";
+ String childServiceInstanceId = "childServiceInstanceId";
+ String childServiceInstanceName = "childServiceInstanceName";
+ String pnfInstanceName = "pnfInstanceName";
expected.put(ResourceKey.SERVICE_INSTANCE_ID, serviceInstanceId);
expected.put(ResourceKey.NETWORK_ID, networkId);
@@ -2132,6 +2135,9 @@ public class BBInputSetupTest {
expected.put(ResourceKey.INSTANCE_GROUP_ID, instanceGroupId);
expected.put(ResourceKey.VNF_INSTANCE_NAME, vnfInstanceName);
expected.put(ResourceKey.VF_MODULE_INSTANCE_NAME, vfModuleInstanceName);
+ expected.put(ResourceKey.CHILD_SERVICE_INSTANCE_ID, childServiceInstanceId);
+ expected.put(ResourceKey.CHILD_SERVICE_INSTANCE_NAME, childServiceInstanceName);
+ expected.put(ResourceKey.PNF_INSTANCE_NAME, pnfInstanceName);
WorkflowResourceIds workflowResourceIds = new WorkflowResourceIds();
workflowResourceIds.setServiceInstanceId(serviceInstanceId);
@@ -2144,6 +2150,9 @@ public class BBInputSetupTest {
workflowResourceIds.setInstanceGroupId(instanceGroupId);
workflowResourceIds.setVnfInstanceName(vnfInstanceName);
workflowResourceIds.setVfModuleInstanceName(vfModuleInstanceName);
+ workflowResourceIds.setChildServiceInstanceId(childServiceInstanceId);
+ workflowResourceIds.setChildServiceInstanceName(childServiceInstanceName);
+ workflowResourceIds.setPnfInstanceName(pnfInstanceName);
SPY_bbInputSetup.populateLookupKeyMapWithIds(workflowResourceIds, actual);
diff --git a/bpmn/mso-infrastructure-bpmn/src/test/resources/application-test.yaml b/bpmn/mso-infrastructure-bpmn/src/test/resources/application-test.yaml
index 56a92cbd01..07c90bf529 100644
--- a/bpmn/mso-infrastructure-bpmn/src/test/resources/application-test.yaml
+++ b/bpmn/mso-infrastructure-bpmn/src/test/resources/application-test.yaml
@@ -59,6 +59,9 @@ mso:
requestDb:
auth: Basic YnBlbDptc28tZGItMTUwNyE=
endpoint: http://localhost:8081
+ apihandler:
+ endpoint: http://localhost:8080
+ auth: Basic dGVzdDp0ZXN0Cg==
async:
core-pool-size: 50
max-pool-size: 50
diff --git a/bpmn/so-bpmn-building-blocks/src/main/resources/subprocess/BuildingBlock/CreateChildServiceBB.bpmn b/bpmn/so-bpmn-building-blocks/src/main/resources/subprocess/BuildingBlock/CreateChildServiceBB.bpmn
new file mode 100644
index 0000000000..9d361bf101
--- /dev/null
+++ b/bpmn/so-bpmn-building-blocks/src/main/resources/subprocess/BuildingBlock/CreateChildServiceBB.bpmn
@@ -0,0 +1,135 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<bpmn:definitions xmlns:bpmn="http://www.omg.org/spec/BPMN/20100524/MODEL" xmlns:bpmndi="http://www.omg.org/spec/BPMN/20100524/DI" xmlns:dc="http://www.omg.org/spec/DD/20100524/DC" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:camunda="http://camunda.org/schema/1.0/bpmn" xmlns:di="http://www.omg.org/spec/DD/20100524/DI" id="Definitions_1qv87sb" targetNamespace="http://bpmn.io/schema/bpmn" exporter="Camunda Modeler" exporterVersion="4.12.0">
+ <bpmn:process id="CreateChildServiceBB" name="CreateChildServiceBB" isExecutable="true">
+ <bpmn:startEvent id="StartEvent_1">
+ <bpmn:outgoing>SequenceFlow_14q7e7i</bpmn:outgoing>
+ </bpmn:startEvent>
+ <bpmn:endEvent id="EndEvent_0il9cjn">
+ <bpmn:incoming>SequenceFlow_143mdyp</bpmn:incoming>
+ </bpmn:endEvent>
+ <bpmn:sequenceFlow id="SequenceFlow_14q7e7i" sourceRef="StartEvent_1" targetRef="Task_1axdixm" />
+ <bpmn:sequenceFlow id="SequenceFlow_0n5pwwk" sourceRef="Task_1axdixm" targetRef="Task_0892y22" />
+ <bpmn:sequenceFlow id="SequenceFlow_0x6xxb8" sourceRef="Task_0892y22" targetRef="Task_1olljx2" />
+ <bpmn:sequenceFlow id="SequenceFlow_0jahgui" sourceRef="Task_1olljx2" targetRef="ExclusiveGateway_1otl9mn" />
+ <bpmn:sequenceFlow id="SequenceFlow_143mdyp" sourceRef="Task_1oyb4b5" targetRef="EndEvent_0il9cjn" />
+ <bpmn:receiveTask id="Task_1olljx2" name="Wait for Completion" messageRef="Message_0kfkpsv">
+ <bpmn:incoming>SequenceFlow_0x6xxb8</bpmn:incoming>
+ <bpmn:outgoing>SequenceFlow_0jahgui</bpmn:outgoing>
+ </bpmn:receiveTask>
+ <bpmn:boundaryEvent id="IntermediateThrowEvent_1gh5vds" name="Timeout" attachedToRef="Task_1olljx2">
+ <bpmn:outgoing>SequenceFlow_0hmy1qr</bpmn:outgoing>
+ <bpmn:timerEventDefinition id="TimerEventDefinition_13keqs7">
+ <bpmn:timeDuration xsi:type="bpmn:tFormalExpression">PT5H</bpmn:timeDuration>
+ </bpmn:timerEventDefinition>
+ </bpmn:boundaryEvent>
+ <bpmn:endEvent id="EndEvent_11rdhm9">
+ <bpmn:incoming>SequenceFlow_0hmy1qr</bpmn:incoming>
+ <bpmn:errorEventDefinition id="ErrorEventDefinition_12rxrrg" errorRef="Error_1d6c5q3" />
+ </bpmn:endEvent>
+ <bpmn:sequenceFlow id="SequenceFlow_0hmy1qr" sourceRef="IntermediateThrowEvent_1gh5vds" targetRef="EndEvent_11rdhm9" />
+ <bpmn:exclusiveGateway id="ExclusiveGateway_1otl9mn" name="Child Request Status" default="SequenceFlow_052tga4">
+ <bpmn:incoming>SequenceFlow_0jahgui</bpmn:incoming>
+ <bpmn:outgoing>SequenceFlow_0zfixj7</bpmn:outgoing>
+ <bpmn:outgoing>SequenceFlow_052tga4</bpmn:outgoing>
+ </bpmn:exclusiveGateway>
+ <bpmn:sequenceFlow id="SequenceFlow_0zfixj7" name="Completed" sourceRef="ExclusiveGateway_1otl9mn" targetRef="Task_1oyb4b5">
+ <bpmn:conditionExpression xsi:type="bpmn:tFormalExpression">${execution.getVariable("CHILD_SVC_REQ_STATUS")=="COMPLETED"}</bpmn:conditionExpression>
+ </bpmn:sequenceFlow>
+ <bpmn:sequenceFlow id="SequenceFlow_052tga4" name="Failed" sourceRef="ExclusiveGateway_1otl9mn" targetRef="Task_0jc8k6m" />
+ <bpmn:serviceTask id="Task_1axdixm" name="Build Create Request" camunda:expression="${CreateChildServiceBB.buildRequest(InjectExecution.execute(execution, execution.getVariable(&#34;gBuildingBlockExecution&#34;)))}">
+ <bpmn:incoming>SequenceFlow_14q7e7i</bpmn:incoming>
+ <bpmn:outgoing>SequenceFlow_0n5pwwk</bpmn:outgoing>
+ </bpmn:serviceTask>
+ <bpmn:serviceTask id="Task_0892y22" name="Send Request" camunda:expression="${CreateChildServiceBB.sendRequest(InjectExecution.execute(execution, execution.getVariable(&#34;gBuildingBlockExecution&#34;)))}">
+ <bpmn:incoming>SequenceFlow_0n5pwwk</bpmn:incoming>
+ <bpmn:outgoing>SequenceFlow_0x6xxb8</bpmn:outgoing>
+ </bpmn:serviceTask>
+ <bpmn:serviceTask id="Task_0jc8k6m" name="Handle Failure" camunda:expression="${CreateChildServiceBB.handleFailure(InjectExecution.execute(execution, execution.getVariable(&#34;gBuildingBlockExecution&#34;)))}">
+ <bpmn:incoming>SequenceFlow_052tga4</bpmn:incoming>
+ </bpmn:serviceTask>
+ <bpmn:serviceTask id="Task_1oyb4b5" name="Update AAI" camunda:expression="${CreateChildServiceBB.updateRelations(InjectExecution.execute(execution, execution.getVariable(&#34;gBuildingBlockExecution&#34;)))}">
+ <bpmn:incoming>SequenceFlow_0zfixj7</bpmn:incoming>
+ <bpmn:outgoing>SequenceFlow_143mdyp</bpmn:outgoing>
+ </bpmn:serviceTask>
+ </bpmn:process>
+ <bpmn:error id="Error_1d6c5q3" name="MSO Workflow Exception" errorCode="MSOWorkflowException" camunda:errorMessage="Child service creation timeout reached" />
+ <bpmn:message id="Message_0kfkpsv" name="ChildServiceRequest" />
+ <bpmndi:BPMNDiagram id="BPMNDiagram_1">
+ <bpmndi:BPMNPlane id="BPMNPlane_1" bpmnElement="CreateChildServiceBB">
+ <bpmndi:BPMNEdge id="SequenceFlow_052tga4_di" bpmnElement="SequenceFlow_052tga4">
+ <di:waypoint x="900" y="145" />
+ <di:waypoint x="900" y="230" />
+ <bpmndi:BPMNLabel>
+ <dc:Bounds x="905" y="173" width="30" height="14" />
+ </bpmndi:BPMNLabel>
+ </bpmndi:BPMNEdge>
+ <bpmndi:BPMNEdge id="SequenceFlow_0zfixj7_di" bpmnElement="SequenceFlow_0zfixj7">
+ <di:waypoint x="925" y="120" />
+ <di:waypoint x="1040" y="120" />
+ <bpmndi:BPMNLabel>
+ <dc:Bounds x="957" y="102" width="54" height="14" />
+ </bpmndi:BPMNLabel>
+ </bpmndi:BPMNEdge>
+ <bpmndi:BPMNEdge id="SequenceFlow_0hmy1qr_di" bpmnElement="SequenceFlow_0hmy1qr">
+ <di:waypoint x="730" y="178" />
+ <di:waypoint x="730" y="252" />
+ </bpmndi:BPMNEdge>
+ <bpmndi:BPMNEdge id="SequenceFlow_143mdyp_di" bpmnElement="SequenceFlow_143mdyp">
+ <di:waypoint x="1140" y="120" />
+ <di:waypoint x="1232" y="120" />
+ </bpmndi:BPMNEdge>
+ <bpmndi:BPMNEdge id="SequenceFlow_0jahgui_di" bpmnElement="SequenceFlow_0jahgui">
+ <di:waypoint x="750" y="120" />
+ <di:waypoint x="875" y="120" />
+ </bpmndi:BPMNEdge>
+ <bpmndi:BPMNEdge id="SequenceFlow_0x6xxb8_di" bpmnElement="SequenceFlow_0x6xxb8">
+ <di:waypoint x="570" y="120" />
+ <di:waypoint x="650" y="120" />
+ </bpmndi:BPMNEdge>
+ <bpmndi:BPMNEdge id="SequenceFlow_0n5pwwk_di" bpmnElement="SequenceFlow_0n5pwwk">
+ <di:waypoint x="380" y="120" />
+ <di:waypoint x="470" y="120" />
+ </bpmndi:BPMNEdge>
+ <bpmndi:BPMNEdge id="SequenceFlow_14q7e7i_di" bpmnElement="SequenceFlow_14q7e7i">
+ <di:waypoint x="178" y="120" />
+ <di:waypoint x="280" y="120" />
+ </bpmndi:BPMNEdge>
+ <bpmndi:BPMNShape id="_BPMNShape_StartEvent_2" bpmnElement="StartEvent_1">
+ <dc:Bounds x="142" y="102" width="36" height="36" />
+ </bpmndi:BPMNShape>
+ <bpmndi:BPMNShape id="EndEvent_0il9cjn_di" bpmnElement="EndEvent_0il9cjn">
+ <dc:Bounds x="1232" y="102" width="36" height="36" />
+ </bpmndi:BPMNShape>
+ <bpmndi:BPMNShape id="ReceiveTask_1bptt2c_di" bpmnElement="Task_1olljx2">
+ <dc:Bounds x="650" y="80" width="100" height="80" />
+ </bpmndi:BPMNShape>
+ <bpmndi:BPMNShape id="EndEvent_03unhuu_di" bpmnElement="EndEvent_11rdhm9">
+ <dc:Bounds x="712" y="252" width="36" height="36" />
+ </bpmndi:BPMNShape>
+ <bpmndi:BPMNShape id="ExclusiveGateway_1otl9mn_di" bpmnElement="ExclusiveGateway_1otl9mn" isMarkerVisible="true">
+ <dc:Bounds x="875" y="95" width="50" height="50" />
+ <bpmndi:BPMNLabel>
+ <dc:Bounds x="866" y="65" width="70" height="27" />
+ </bpmndi:BPMNLabel>
+ </bpmndi:BPMNShape>
+ <bpmndi:BPMNShape id="ServiceTask_0t3ilvf_di" bpmnElement="Task_1axdixm">
+ <dc:Bounds x="280" y="80" width="100" height="80" />
+ </bpmndi:BPMNShape>
+ <bpmndi:BPMNShape id="ServiceTask_0hbcben_di" bpmnElement="Task_0892y22">
+ <dc:Bounds x="470" y="80" width="100" height="80" />
+ </bpmndi:BPMNShape>
+ <bpmndi:BPMNShape id="ServiceTask_1j024ya_di" bpmnElement="Task_0jc8k6m">
+ <dc:Bounds x="850" y="230" width="100" height="80" />
+ </bpmndi:BPMNShape>
+ <bpmndi:BPMNShape id="Activity_10o8qyu_di" bpmnElement="Task_1oyb4b5">
+ <dc:Bounds x="1040" y="80" width="100" height="80" />
+ </bpmndi:BPMNShape>
+ <bpmndi:BPMNShape id="BoundaryEvent_0g07oag_di" bpmnElement="IntermediateThrowEvent_1gh5vds">
+ <dc:Bounds x="712" y="142" width="36" height="36" />
+ <bpmndi:BPMNLabel>
+ <dc:Bounds x="750" y="173" width="40" height="14" />
+ </bpmndi:BPMNLabel>
+ </bpmndi:BPMNShape>
+ </bpmndi:BPMNPlane>
+ </bpmndi:BPMNDiagram>
+</bpmn:definitions>
diff --git a/bpmn/so-bpmn-building-blocks/src/main/resources/subprocess/BuildingBlock/DeleteChildServiceBB.bpmn b/bpmn/so-bpmn-building-blocks/src/main/resources/subprocess/BuildingBlock/DeleteChildServiceBB.bpmn
new file mode 100644
index 0000000000..3be6d32792
--- /dev/null
+++ b/bpmn/so-bpmn-building-blocks/src/main/resources/subprocess/BuildingBlock/DeleteChildServiceBB.bpmn
@@ -0,0 +1,123 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<bpmn:definitions xmlns:bpmn="http://www.omg.org/spec/BPMN/20100524/MODEL" xmlns:bpmndi="http://www.omg.org/spec/BPMN/20100524/DI" xmlns:dc="http://www.omg.org/spec/DD/20100524/DC" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:camunda="http://camunda.org/schema/1.0/bpmn" xmlns:di="http://www.omg.org/spec/DD/20100524/DI" id="Definitions_0n06ztl" targetNamespace="http://bpmn.io/schema/bpmn" exporter="Camunda Modeler" exporterVersion="4.12.0">
+ <bpmn:process id="DeleteChildServiceBB" name="DeleteChildServiceBB" isExecutable="true">
+ <bpmn:startEvent id="StartEvent_1m5641e">
+ <bpmn:outgoing>SequenceFlow_01wirq3</bpmn:outgoing>
+ </bpmn:startEvent>
+ <bpmn:receiveTask id="ReceiveTask_0otx1r1" name="Wait for Completion" messageRef="Message_0xg6jua">
+ <bpmn:incoming>SequenceFlow_14d89qf</bpmn:incoming>
+ <bpmn:outgoing>SequenceFlow_1ufwh0a</bpmn:outgoing>
+ </bpmn:receiveTask>
+ <bpmn:endEvent id="EndEvent_02vkobe">
+ <bpmn:incoming>SequenceFlow_0o2ukb9</bpmn:incoming>
+ <bpmn:errorEventDefinition id="ErrorEventDefinition_05rpxbj" errorRef="Error_1d6c5q3" />
+ </bpmn:endEvent>
+ <bpmn:boundaryEvent id="BoundaryEvent_1f4g2g1" name="Timeout" attachedToRef="ReceiveTask_0otx1r1">
+ <bpmn:outgoing>SequenceFlow_0o2ukb9</bpmn:outgoing>
+ <bpmn:timerEventDefinition id="TimerEventDefinition_01na1b7">
+ <bpmn:timeDuration xsi:type="bpmn:tFormalExpression">PT5H</bpmn:timeDuration>
+ </bpmn:timerEventDefinition>
+ </bpmn:boundaryEvent>
+ <bpmn:sequenceFlow id="SequenceFlow_01wirq3" sourceRef="StartEvent_1m5641e" targetRef="Task_01gqeuu" />
+ <bpmn:sequenceFlow id="SequenceFlow_0q6aqsk" sourceRef="Task_01gqeuu" targetRef="Task_16o0qkj" />
+ <bpmn:sequenceFlow id="SequenceFlow_14d89qf" sourceRef="Task_16o0qkj" targetRef="ReceiveTask_0otx1r1" />
+ <bpmn:sequenceFlow id="SequenceFlow_0o2ukb9" sourceRef="BoundaryEvent_1f4g2g1" targetRef="EndEvent_02vkobe" />
+ <bpmn:exclusiveGateway id="ExclusiveGateway_1mxv8h6" name="Child Request Status" default="SequenceFlow_12rysg7">
+ <bpmn:incoming>SequenceFlow_1ufwh0a</bpmn:incoming>
+ <bpmn:outgoing>SequenceFlow_0v4loyx</bpmn:outgoing>
+ <bpmn:outgoing>SequenceFlow_12rysg7</bpmn:outgoing>
+ </bpmn:exclusiveGateway>
+ <bpmn:endEvent id="EndEvent_0fh7ikt">
+ <bpmn:incoming>SequenceFlow_0v4loyx</bpmn:incoming>
+ </bpmn:endEvent>
+ <bpmn:sequenceFlow id="SequenceFlow_0v4loyx" name="Completed" sourceRef="ExclusiveGateway_1mxv8h6" targetRef="EndEvent_0fh7ikt">
+ <bpmn:conditionExpression xsi:type="bpmn:tFormalExpression">${execution.getVariable("CHILD_SVC_REQ_STATUS")=="COMPLETED"}</bpmn:conditionExpression>
+ </bpmn:sequenceFlow>
+ <bpmn:sequenceFlow id="SequenceFlow_12rysg7" name="Failed" sourceRef="ExclusiveGateway_1mxv8h6" targetRef="Task_073m8fr" />
+ <bpmn:sequenceFlow id="SequenceFlow_1ufwh0a" sourceRef="ReceiveTask_0otx1r1" targetRef="ExclusiveGateway_1mxv8h6" />
+ <bpmn:serviceTask id="Task_01gqeuu" name="Build Delete Request" camunda:expression="${DeleteChildServiceBB.buildRequest(InjectExecution.execute(execution, execution.getVariable(&#34;gBuildingBlockExecution&#34;)))}">
+ <bpmn:incoming>SequenceFlow_01wirq3</bpmn:incoming>
+ <bpmn:outgoing>SequenceFlow_0q6aqsk</bpmn:outgoing>
+ </bpmn:serviceTask>
+ <bpmn:serviceTask id="Task_16o0qkj" name="Send Request" camunda:expression="${DeleteChildServiceBB.sendRequest(InjectExecution.execute(execution, execution.getVariable(&#34;gBuildingBlockExecution&#34;)))}">
+ <bpmn:incoming>SequenceFlow_0q6aqsk</bpmn:incoming>
+ <bpmn:outgoing>SequenceFlow_14d89qf</bpmn:outgoing>
+ </bpmn:serviceTask>
+ <bpmn:serviceTask id="Task_073m8fr" name="Handle Failure" camunda:expression="${DeleteChildServiceBB.handleFailure(InjectExecution.execute(execution, execution.getVariable(&#34;gBuildingBlockExecution&#34;)))}">
+ <bpmn:incoming>SequenceFlow_12rysg7</bpmn:incoming>
+ </bpmn:serviceTask>
+ </bpmn:process>
+ <bpmn:error id="Error_1d6c5q3" name="MSO Workflow Exception" errorCode="MSOWorkflowException" camunda:errorMessage="Child service deletion timeout reached" />
+ <bpmn:message id="Message_0xg6jua" name="ChildServiceRequest" />
+ <bpmndi:BPMNDiagram id="BPMNDiagram_1">
+ <bpmndi:BPMNPlane id="BPMNPlane_1" bpmnElement="DeleteChildServiceBB">
+ <bpmndi:BPMNEdge id="SequenceFlow_1ufwh0a_di" bpmnElement="SequenceFlow_1ufwh0a">
+ <di:waypoint x="760" y="120" />
+ <di:waypoint x="885" y="120" />
+ </bpmndi:BPMNEdge>
+ <bpmndi:BPMNEdge id="SequenceFlow_12rysg7_di" bpmnElement="SequenceFlow_12rysg7">
+ <di:waypoint x="910" y="145" />
+ <di:waypoint x="910" y="230" />
+ <bpmndi:BPMNLabel>
+ <dc:Bounds x="925" y="173" width="30" height="14" />
+ </bpmndi:BPMNLabel>
+ </bpmndi:BPMNEdge>
+ <bpmndi:BPMNEdge id="SequenceFlow_0v4loyx_di" bpmnElement="SequenceFlow_0v4loyx">
+ <di:waypoint x="935" y="120" />
+ <di:waypoint x="1242" y="120" />
+ <bpmndi:BPMNLabel>
+ <dc:Bounds x="981" y="102" width="54" height="14" />
+ </bpmndi:BPMNLabel>
+ </bpmndi:BPMNEdge>
+ <bpmndi:BPMNEdge id="SequenceFlow_0o2ukb9_di" bpmnElement="SequenceFlow_0o2ukb9">
+ <di:waypoint x="740" y="178" />
+ <di:waypoint x="740" y="252" />
+ </bpmndi:BPMNEdge>
+ <bpmndi:BPMNEdge id="SequenceFlow_14d89qf_di" bpmnElement="SequenceFlow_14d89qf">
+ <di:waypoint x="580" y="120" />
+ <di:waypoint x="660" y="120" />
+ </bpmndi:BPMNEdge>
+ <bpmndi:BPMNEdge id="SequenceFlow_0q6aqsk_di" bpmnElement="SequenceFlow_0q6aqsk">
+ <di:waypoint x="390" y="120" />
+ <di:waypoint x="480" y="120" />
+ </bpmndi:BPMNEdge>
+ <bpmndi:BPMNEdge id="SequenceFlow_01wirq3_di" bpmnElement="SequenceFlow_01wirq3">
+ <di:waypoint x="188" y="120" />
+ <di:waypoint x="290" y="120" />
+ </bpmndi:BPMNEdge>
+ <bpmndi:BPMNShape id="StartEvent_1m5641e_di" bpmnElement="StartEvent_1m5641e">
+ <dc:Bounds x="152" y="102" width="36" height="36" />
+ </bpmndi:BPMNShape>
+ <bpmndi:BPMNShape id="ReceiveTask_0otx1r1_di" bpmnElement="ReceiveTask_0otx1r1">
+ <dc:Bounds x="660" y="80" width="100" height="80" />
+ </bpmndi:BPMNShape>
+ <bpmndi:BPMNShape id="EndEvent_02vkobe_di" bpmnElement="EndEvent_02vkobe">
+ <dc:Bounds x="722" y="252" width="36" height="36" />
+ </bpmndi:BPMNShape>
+ <bpmndi:BPMNShape id="ExclusiveGateway_1mxv8h6_di" bpmnElement="ExclusiveGateway_1mxv8h6" isMarkerVisible="true">
+ <dc:Bounds x="885" y="95" width="50" height="50" />
+ <bpmndi:BPMNLabel>
+ <dc:Bounds x="875" y="65" width="70" height="27" />
+ </bpmndi:BPMNLabel>
+ </bpmndi:BPMNShape>
+ <bpmndi:BPMNShape id="EndEvent_0fh7ikt_di" bpmnElement="EndEvent_0fh7ikt">
+ <dc:Bounds x="1242" y="102" width="36" height="36" />
+ </bpmndi:BPMNShape>
+ <bpmndi:BPMNShape id="ServiceTask_0aqgcg6_di" bpmnElement="Task_01gqeuu">
+ <dc:Bounds x="290" y="80" width="100" height="80" />
+ </bpmndi:BPMNShape>
+ <bpmndi:BPMNShape id="ServiceTask_0o8psus_di" bpmnElement="Task_16o0qkj">
+ <dc:Bounds x="480" y="80" width="100" height="80" />
+ </bpmndi:BPMNShape>
+ <bpmndi:BPMNShape id="ServiceTask_0hkopiv_di" bpmnElement="Task_073m8fr">
+ <dc:Bounds x="860" y="230" width="100" height="80" />
+ </bpmndi:BPMNShape>
+ <bpmndi:BPMNShape id="BoundaryEvent_1f4g2g1_di" bpmnElement="BoundaryEvent_1f4g2g1">
+ <dc:Bounds x="722" y="142" width="36" height="36" />
+ <bpmndi:BPMNLabel>
+ <dc:Bounds x="760" y="173" width="40" height="14" />
+ </bpmndi:BPMNLabel>
+ </bpmndi:BPMNShape>
+ </bpmndi:BPMNPlane>
+ </bpmndi:BPMNDiagram>
+</bpmn:definitions>
diff --git a/bpmn/so-bpmn-building-blocks/src/test/java/org/onap/so/bpmn/infrastructure/bpmn/process/WorkflowActionBBTest.java b/bpmn/so-bpmn-building-blocks/src/test/java/org/onap/so/bpmn/infrastructure/bpmn/process/WorkflowActionBBTest.java
index f492326b0c..6c732a1edb 100644
--- a/bpmn/so-bpmn-building-blocks/src/test/java/org/onap/so/bpmn/infrastructure/bpmn/process/WorkflowActionBBTest.java
+++ b/bpmn/so-bpmn-building-blocks/src/test/java/org/onap/so/bpmn/infrastructure/bpmn/process/WorkflowActionBBTest.java
@@ -106,6 +106,7 @@ public class WorkflowActionBBTest extends BaseBPMNTest {
}
+
@Test
public void retrieveBBExecutionListerrorHandling() throws Exception {
variables.put("isTopLevelFlow", true);
diff --git a/bpmn/so-bpmn-building-blocks/src/test/resources/application-test.yaml b/bpmn/so-bpmn-building-blocks/src/test/resources/application-test.yaml
index c36172c3bf..14640f4eec 100644
--- a/bpmn/so-bpmn-building-blocks/src/test/resources/application-test.yaml
+++ b/bpmn/so-bpmn-building-blocks/src/test/resources/application-test.yaml
@@ -75,7 +75,9 @@ mso:
requestDb:
auth: Basic YnBlbDptc28tZGItMTUwNyE=
endpoint: http://localhost:8081
-
+ apihandler:
+ endpoint: http://localhost:8080
+ auth: Basic dGVzdDp0ZXN0Cg==
async:
core-pool-size: 50
max-pool-size: 50
diff --git a/bpmn/so-bpmn-infrastructure-flows/src/test/resources/application-test.yaml b/bpmn/so-bpmn-infrastructure-flows/src/test/resources/application-test.yaml
index fa753396cf..7a9c4ba914 100644
--- a/bpmn/so-bpmn-infrastructure-flows/src/test/resources/application-test.yaml
+++ b/bpmn/so-bpmn-infrastructure-flows/src/test/resources/application-test.yaml
@@ -64,7 +64,9 @@ mso:
#${mso.adapters.requestDb.auth}: BBInputSetup
auth: Basic YnBlbDptc28tZGItMTUwNyE=
endpoint: http://localhost:${wiremock.server.port}
-
+ apihandler:
+ endpoint: http://localhost:8080
+ auth: Basic dGVzdDp0ZXN0Cg==
async:
core-pool-size: 50
max-pool-size: 50
diff --git a/bpmn/so-bpmn-tasks/src/main/java/org/onap/so/bpmn/infrastructure/service/composition/ChildServiceRequestBuilder.java b/bpmn/so-bpmn-tasks/src/main/java/org/onap/so/bpmn/infrastructure/service/composition/ChildServiceRequestBuilder.java
new file mode 100644
index 0000000000..2a008e3573
--- /dev/null
+++ b/bpmn/so-bpmn-tasks/src/main/java/org/onap/so/bpmn/infrastructure/service/composition/ChildServiceRequestBuilder.java
@@ -0,0 +1,231 @@
+package org.onap.so.bpmn.infrastructure.service.composition;
+
+import com.fasterxml.jackson.databind.ObjectMapper;
+import org.onap.so.bpmn.common.BuildingBlockExecution;
+import org.onap.so.bpmn.servicedecomposition.bbobjects.CloudRegion;
+import org.onap.so.bpmn.servicedecomposition.bbobjects.Customer;
+import org.onap.so.bpmn.servicedecomposition.generalobjects.RequestContext;
+import org.onap.so.serviceinstancebeans.CloudConfiguration;
+import org.onap.so.serviceinstancebeans.InstanceDirection;
+import org.onap.so.serviceinstancebeans.OwningEntity;
+import org.onap.so.serviceinstancebeans.Project;
+import org.onap.so.serviceinstancebeans.RelatedInstance;
+import org.onap.so.serviceinstancebeans.RelatedInstanceList;
+import org.onap.so.serviceinstancebeans.RequestDetails;
+import org.onap.so.serviceinstancebeans.RequestInfo;
+import org.onap.so.serviceinstancebeans.RequestParameters;
+import org.onap.so.serviceinstancebeans.Service;
+import org.onap.so.serviceinstancebeans.ServiceInstancesRequest;
+import org.onap.so.serviceinstancebeans.SubscriberInfo;
+import java.io.IOException;
+import java.util.Map;
+
+public class ChildServiceRequestBuilder {
+ private final BuildingBlockExecution buildingBlockExecution;
+ private Service parent;
+ private Service child;
+ private ServiceInstancesRequest sir;
+
+ private ChildServiceRequestBuilder(final BuildingBlockExecution buildingBlockExecution, Service parent,
+ Service child) {
+ this.buildingBlockExecution = buildingBlockExecution;
+ this.child = child;
+ this.parent = parent;
+
+ this.sir = new ServiceInstancesRequest();
+ RequestDetails requestDetails = new RequestDetails();
+ requestDetails.setRequestInfo(new RequestInfo());
+ this.sir.setRequestDetails(requestDetails);
+ }
+
+ public static ChildServiceRequestBuilder getInstance(final BuildingBlockExecution buildingBlockExecution,
+ String childSvcInstanceName) {
+ Service child = null;
+ Service parent = null;
+ try {
+ String USERPARAMSERVICE = "service";
+ for (Map<String, Object> params : buildingBlockExecution.getGeneralBuildingBlock().getRequestContext()
+ .getRequestParameters().getUserParams()) {
+ if (params.containsKey(USERPARAMSERVICE)) {
+ ObjectMapper obj = new ObjectMapper();
+ String input = obj.writeValueAsString(params.get(USERPARAMSERVICE));
+ parent = obj.readValue(input, Service.class);
+ if (parent.getResources().getServices() != null) {
+ for (Service service : parent.getResources().getServices()) {
+ if (service.getInstanceName().equals(childSvcInstanceName)) {
+ child = service;
+ }
+ }
+ }
+ }
+ }
+ } catch (IOException e) {
+ throw new RuntimeException("Failed parsing context user parameters for parent or child service", e);
+ }
+ return new ChildServiceRequestBuilder(buildingBlockExecution, parent, child);
+ }
+
+ public static ChildServiceRequestBuilder getInstance(final BuildingBlockExecution buildingBlockExecution,
+ Service parentInstance, Service childInstance) {
+ Service child = null;
+ Service parent = null;
+ if (childInstance != null) {
+ parent = parentInstance;
+ child = childInstance;
+ }
+ return new ChildServiceRequestBuilder(buildingBlockExecution, parent, child);
+ }
+
+ public ChildServiceRequestBuilder setParentRequestId(String parentRequestId) {
+ sir.getRequestDetails().getRequestInfo().setRequestorId(parentRequestId);
+ return this;
+ }
+
+ public ChildServiceRequestBuilder setCorrelationId(String correlationId) {
+ sir.getRequestDetails().getRequestInfo().setCorrelator(correlationId);
+ return this;
+ }
+
+ public ChildServiceRequestBuilder setChildSvcInstanceId(String childSvcInstanceId) {
+ sir.setServiceInstanceId(childSvcInstanceId);
+ return this;
+ }
+
+ public ServiceInstancesRequest build() {
+ RequestContext context = buildingBlockExecution.getGeneralBuildingBlock().getRequestContext();
+
+ if (context.getAction().equals("deleteInstance")) {
+ sir.setRequestDetails(createRequestDetailsDeleteChild(context));
+ } else {
+ sir.setRequestDetails(createRequestDetails(context));
+ }
+ return sir;
+ }
+
+ private RequestDetails createRequestDetailsDeleteChild(RequestContext context) {
+ RequestDetails details = sir.getRequestDetails();
+
+ details.setRequestParameters(createRequestParameters(context, child));
+ details.setRequestInfo(createRequestInfo(context));
+ details.setCloudConfiguration(createCloudConfiguration());
+ details.setModelInfo(child.getModelInfo());
+ details.setSubscriberInfo(createSubscriberInfo());
+ details.setRelatedInstanceList(createRelatedInstanceList());
+
+ return details;
+ }
+
+ private RequestDetails createRequestDetails(RequestContext context) {
+ RequestDetails details = sir.getRequestDetails();
+
+ details.setRequestParameters(createRequestParameters(context, child));
+ details.setRequestInfo(createRequestInfo(context));
+ details.setCloudConfiguration(createCloudConfiguration());
+ details.setModelInfo(child.getModelInfo());
+ details.setSubscriberInfo(createSubscriberInfo());
+ details.setOwningEntity(createOwningEntity());
+ details.setProject(createProject());
+ details.setRelatedInstanceList(createRelatedInstanceList());
+
+ return details;
+ }
+
+ private RequestParameters createRequestParameters(RequestContext context, Service childService) {
+ RequestParameters requestParameters = new RequestParameters();
+
+ if (!context.getRequestParameters().getUserParams().isEmpty()) {
+ requestParameters.getUserParams().add(context.getRequestParameters().getUserParams().get(0));
+ if (context.getAction().equals("createInstance")) {
+ requestParameters.getUserParams().add(Map.of("service", childService));
+ }
+ }
+ requestParameters.setSubscriptionServiceType(context.getRequestParameters().getSubscriptionServiceType());
+ requestParameters.setaLaCarte(context.getRequestParameters().getALaCarte());
+ requestParameters.setPayload(context.getRequestParameters().getPayload());
+ requestParameters.setUsePreload(context.getRequestParameters().getUsePreload());
+
+ return requestParameters;
+ }
+
+ private RequestInfo createRequestInfo(RequestContext context) {
+ RequestInfo info = sir.getRequestDetails().getRequestInfo();
+ if (info != null) {
+ info.setProductFamilyId(context.getProductFamilyId());
+ info.setSource(context.getSource());
+ info.setRequestorId(context.getRequestorId());
+ info.setInstanceName(child.getInstanceName());
+ info.setSuppressRollback(false);
+ }
+ return info;
+ }
+
+ private CloudConfiguration createCloudConfiguration() {
+ if (child.getCloudConfiguration() != null) {
+ return child.getCloudConfiguration();
+ }
+
+ CloudConfiguration cloudConfiguration = null;
+ CloudRegion requestCloudConfiguration = buildingBlockExecution.getGeneralBuildingBlock().getCloudRegion();
+ if (requestCloudConfiguration != null) {
+ cloudConfiguration = new CloudConfiguration();
+ cloudConfiguration.setLcpCloudRegionId(requestCloudConfiguration.getLcpCloudRegionId());
+ cloudConfiguration.setTenantId(requestCloudConfiguration.getTenantId());
+ cloudConfiguration.setCloudOwner(requestCloudConfiguration.getCloudOwner());
+ }
+ return cloudConfiguration;
+ }
+
+ private SubscriberInfo createSubscriberInfo() {
+ Customer requestCustomer = buildingBlockExecution.getGeneralBuildingBlock().getCustomer();
+
+ SubscriberInfo subscriberInfo = null;
+ if (requestCustomer != null) {
+ subscriberInfo = new SubscriberInfo();
+ subscriberInfo.setGlobalSubscriberId(requestCustomer.getGlobalCustomerId());
+ subscriberInfo.setSubscriberName(requestCustomer.getSubscriberName());
+ }
+
+ return subscriberInfo;
+ }
+
+ private OwningEntity createOwningEntity() {
+ org.onap.so.bpmn.servicedecomposition.bbobjects.OwningEntity requestOwningEntity =
+ buildingBlockExecution.getGeneralBuildingBlock().getServiceInstance().getOwningEntity();
+ OwningEntity owningEntity = null;
+ if (requestOwningEntity != null) {
+ owningEntity = new OwningEntity();
+ owningEntity.setOwningEntityId(requestOwningEntity.getOwningEntityId());
+ owningEntity.setOwningEntityName(requestOwningEntity.getOwningEntityName());
+ }
+
+ return owningEntity;
+ }
+
+ private Project createProject() {
+ org.onap.so.bpmn.servicedecomposition.bbobjects.Project requestProject =
+ buildingBlockExecution.getGeneralBuildingBlock().getServiceInstance().getProject();
+ Project project = null;
+
+ if (requestProject != null) {
+ project = new Project();
+ project.setProjectName(requestProject.getProjectName());
+ }
+ return project;
+ }
+
+ private RelatedInstanceList[] createRelatedInstanceList() {
+ RelatedInstance relatedInstance = new RelatedInstance();
+ relatedInstance.setModelInfo(parent.getModelInfo());
+ relatedInstance.setInstanceId(
+ buildingBlockExecution.getGeneralBuildingBlock().getServiceInstance().getServiceInstanceId());
+ relatedInstance.setInstanceDirection(InstanceDirection.source);
+
+ RelatedInstanceList relatedInstanceList = new RelatedInstanceList();
+ relatedInstanceList.setRelatedInstance(relatedInstance);
+
+ RelatedInstanceList[] relatedInstanceListsArray = new RelatedInstanceList[1];
+ relatedInstanceListsArray[0] = relatedInstanceList;
+
+ return relatedInstanceListsArray;
+ }
+}
diff --git a/bpmn/so-bpmn-tasks/src/main/java/org/onap/so/bpmn/infrastructure/service/composition/CreateChildServiceBB.java b/bpmn/so-bpmn-tasks/src/main/java/org/onap/so/bpmn/infrastructure/service/composition/CreateChildServiceBB.java
new file mode 100644
index 0000000000..0486c529c6
--- /dev/null
+++ b/bpmn/so-bpmn-tasks/src/main/java/org/onap/so/bpmn/infrastructure/service/composition/CreateChildServiceBB.java
@@ -0,0 +1,134 @@
+/*-
+ * Copyright (C) 2021 Bell Canada. 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.
+ */
+
+package org.onap.so.bpmn.infrastructure.service.composition;
+
+import static org.onap.so.bpmn.infrastructure.service.composition.ServiceCompositionConstants.CHILD_SVC_REQ_ERROR;
+import static org.onap.so.bpmn.infrastructure.service.composition.ServiceCompositionConstants.CHILD_SVC_REQ_PAYLOAD;
+import static org.onap.so.bpmn.infrastructure.service.composition.ServiceCompositionConstants.CHILD_SVC_REQ_ID;
+import static org.onap.so.bpmn.infrastructure.service.composition.ServiceCompositionConstants.CHILD_SVC_INSTANCE_ID;
+import static org.onap.so.bpmn.infrastructure.service.composition.ServiceCompositionConstants.CHILD_SVC_REQ_CORRELATION_ID;
+import java.util.Map;
+import java.util.Objects;
+import java.util.UUID;
+import org.onap.logging.filter.base.ONAPComponents;
+import org.onap.so.bpmn.common.BuildingBlockExecution;
+import org.onap.so.bpmn.servicedecomposition.entities.ResourceKey;
+import org.onap.so.client.exception.ExceptionBuilder;
+import org.onap.so.client.orchestration.ApiHandlerClient;
+import org.onap.so.serviceinstancebeans.ServiceInstancesRequest;
+import org.onap.so.serviceinstancebeans.ServiceInstancesResponse;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Component;
+import org.onap.aai.domain.yang.ComposedResource;
+import org.onap.aai.domain.yang.Relationship;
+import org.onap.aaiclient.client.aai.AAIResourcesClient;
+import org.onap.aaiclient.client.aai.entities.uri.AAIResourceUri;
+import org.onap.aaiclient.client.aai.entities.uri.AAIUriFactory;
+import org.onap.aaiclient.client.generated.fluentbuilders.AAIFluentTypeBuilder;
+import org.onap.aaiclient.client.generated.fluentbuilders.AAIFluentTypeBuilder.Types;
+
+
+@Component
+public class CreateChildServiceBB {
+
+ private final Logger log = LoggerFactory.getLogger(this.getClass());
+
+ @Autowired
+ protected ExceptionBuilder exceptionBuilder;
+
+ @Autowired
+ private ApiHandlerClient apiHandlerClient;
+
+ public void buildRequest(final BuildingBlockExecution buildingBlockExecution) {
+ try {
+ log.info("Building Create Service Request");
+ Map<ResourceKey, String> lookupMap = buildingBlockExecution.getLookupMap();
+ String childSvcInstanceName = lookupMap.get(ResourceKey.CHILD_SERVICE_INSTANCE_NAME);
+ Objects.requireNonNull(childSvcInstanceName, "Child service instance name is required");
+
+ ServiceInstancesRequest sir = ChildServiceRequestBuilder
+ .getInstance(buildingBlockExecution, childSvcInstanceName)
+ .setParentRequestId(
+ buildingBlockExecution.getGeneralBuildingBlock().getRequestContext().getMsoRequestId())
+ .setCorrelationId(UUID.randomUUID().toString()).build();
+ buildingBlockExecution.setVariable(CHILD_SVC_REQ_PAYLOAD, sir);
+ } catch (Exception e) {
+ exceptionBuilder.buildAndThrowWorkflowException(buildingBlockExecution, 10002, e.getMessage(),
+ ONAPComponents.SO);
+ }
+ }
+
+ public void sendRequest(final BuildingBlockExecution buildingBlockExecution) throws Exception {
+ try {
+ buildingBlockExecution.getLookupMap();
+ ServiceInstancesRequest sir = buildingBlockExecution.getVariable(CHILD_SVC_REQ_PAYLOAD);
+ log.info("Sending Create Service Request: \n{}", sir.toString());
+ buildingBlockExecution.setVariable(CHILD_SVC_REQ_CORRELATION_ID,
+ sir.getRequestDetails().getRequestInfo().getCorrelator());
+ ServiceInstancesResponse response = apiHandlerClient.createServiceInstance(sir);
+ buildingBlockExecution.setVariable(CHILD_SVC_REQ_ID, response.getRequestReferences().getRequestId());
+ buildingBlockExecution.setVariable(CHILD_SVC_INSTANCE_ID, response.getRequestReferences().getInstanceId());
+ } catch (Exception e) {
+ exceptionBuilder.buildAndThrowWorkflowException(buildingBlockExecution, 10003, e.getMessage(),
+ ONAPComponents.SO);
+ }
+ }
+
+ /*
+ * This method is to create Relation between Parent & Child Services with Node as Composed Resource.
+ *
+ */
+
+ public void updateRelations(BuildingBlockExecution buildingBlockExecution) throws Exception {
+
+ Map<ResourceKey, String> lookupMap = buildingBlockExecution.getLookupMap();
+
+ String childSvcInstanceId = buildingBlockExecution.getVariable(CHILD_SVC_INSTANCE_ID);
+ String parentSvcInstanceId = lookupMap.get(ResourceKey.SERVICE_INSTANCE_ID);
+
+ ComposedResource composedResource = new ComposedResource();
+ composedResource.setId(UUID.randomUUID().toString());
+
+ AAIResourcesClient client = new AAIResourcesClient();
+
+ AAIResourceUri composedResourceURI = AAIUriFactory.createResourceUri(AAIFluentTypeBuilder.business()
+ .customer(buildingBlockExecution.getGeneralBuildingBlock().getCustomer().getGlobalCustomerId())
+ .serviceSubscription(buildingBlockExecution.getGeneralBuildingBlock().getRequestContext()
+ .getSubscriptionServiceType())
+ .serviceInstance(parentSvcInstanceId).composedResource(composedResource.getId()));
+
+ client.create(composedResourceURI, composedResource);
+
+ AAIResourceUri childURI =
+ AAIUriFactory.createResourceUri(Types.SERVICE_INSTANCE.getFragment(childSvcInstanceId));
+
+ client.connect(composedResourceURI, childURI);
+
+ }
+
+ public void handleFailure(final BuildingBlockExecution buildingBlockExecution) {
+ Map<ResourceKey, String> lookupMap = buildingBlockExecution.getLookupMap();
+ String childSvcInstanceName = lookupMap.get(ResourceKey.CHILD_SERVICE_INSTANCE_NAME);
+ String childErrorMessage = buildingBlockExecution.getVariable(CHILD_SVC_REQ_ERROR);
+ String errorMessage =
+ String.format("Failed creating child service %s %s", childSvcInstanceName, childErrorMessage);
+ exceptionBuilder.buildAndThrowWorkflowException(buildingBlockExecution, 10001, errorMessage, ONAPComponents.SO);
+ }
+
+}
diff --git a/bpmn/so-bpmn-tasks/src/main/java/org/onap/so/bpmn/infrastructure/service/composition/DeleteChildServiceBB.java b/bpmn/so-bpmn-tasks/src/main/java/org/onap/so/bpmn/infrastructure/service/composition/DeleteChildServiceBB.java
new file mode 100644
index 0000000000..52d1b68ccd
--- /dev/null
+++ b/bpmn/so-bpmn-tasks/src/main/java/org/onap/so/bpmn/infrastructure/service/composition/DeleteChildServiceBB.java
@@ -0,0 +1,129 @@
+/*-
+ * Copyright (C) 2021 Bell Canada. 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.
+ */
+
+package org.onap.so.bpmn.infrastructure.service.composition;
+
+import org.onap.aai.domain.yang.ServiceInstance;
+import org.onap.aaiclient.client.aai.AAIResourcesClient;
+import org.onap.aaiclient.client.aai.entities.uri.AAIUriFactory;
+import org.onap.aaiclient.client.generated.fluentbuilders.AAIFluentTypeBuilder;
+import org.onap.aaiclient.client.graphinventory.entities.uri.Depth;
+import org.onap.logging.filter.base.ONAPComponents;
+import org.onap.so.bpmn.common.BuildingBlockExecution;
+import org.onap.so.bpmn.servicedecomposition.entities.ResourceKey;
+import org.onap.so.client.exception.ExceptionBuilder;
+import org.onap.so.client.orchestration.ApiHandlerClient;
+import org.onap.so.serviceinstancebeans.ModelInfo;
+import org.onap.so.serviceinstancebeans.ModelType;
+import org.onap.so.serviceinstancebeans.Service;
+import org.onap.so.serviceinstancebeans.ServiceInstancesRequest;
+import org.onap.so.serviceinstancebeans.ServiceInstancesResponse;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Component;
+import java.util.Map;
+import java.util.UUID;
+import static org.onap.so.bpmn.infrastructure.service.composition.ServiceCompositionConstants.CHILD_SVC_INSTANCE_ID;
+import static org.onap.so.bpmn.infrastructure.service.composition.ServiceCompositionConstants.CHILD_SVC_REQ_CORRELATION_ID;
+import static org.onap.so.bpmn.infrastructure.service.composition.ServiceCompositionConstants.CHILD_SVC_REQ_ERROR;
+import static org.onap.so.bpmn.infrastructure.service.composition.ServiceCompositionConstants.CHILD_SVC_REQ_ID;
+import static org.onap.so.bpmn.infrastructure.service.composition.ServiceCompositionConstants.CHILD_SVC_REQ_PAYLOAD;
+
+
+@Component
+public class DeleteChildServiceBB {
+
+ @Autowired
+ protected ExceptionBuilder exceptionBuilder;
+
+ @Autowired
+ private ApiHandlerClient apiHandlerClient;
+
+ private AAIResourcesClient aaiResourcesClient = new AAIResourcesClient();
+
+ private final Logger log = LoggerFactory.getLogger(this.getClass());
+
+ public void buildRequest(final BuildingBlockExecution buildingBlockExecution) {
+ log.info("Building Delete Service Request");
+ Map<ResourceKey, String> lookupMap = buildingBlockExecution.getLookupMap();
+ String childSvcInstanceId = lookupMap.get(ResourceKey.CHILD_SERVICE_INSTANCE_ID);
+ String childServiceInstanceId =
+ buildingBlockExecution.getLookupMap().get(ResourceKey.CHILD_SERVICE_INSTANCE_ID);
+ String parentServiceInstanceId = buildingBlockExecution.getLookupMap().get(ResourceKey.SERVICE_INSTANCE_ID);
+ ServiceInstance childInstanceAAI = aaiResourcesClient.get(ServiceInstance.class,
+ AAIUriFactory
+ .createResourceUri(
+ AAIFluentTypeBuilder.Types.SERVICE_INSTANCE.getFragment(childServiceInstanceId))
+ .depth(Depth.TWO))
+ .orElse(null);
+ ServiceInstance parentInstanceAAI =
+ aaiResourcesClient.get(ServiceInstance.class,
+ AAIUriFactory.createResourceUri(
+ AAIFluentTypeBuilder.Types.SERVICE_INSTANCE.getFragment(parentServiceInstanceId))
+ .depth(Depth.TWO))
+ .orElse(null);
+ if (childInstanceAAI == null || parentInstanceAAI == null) {
+ exceptionBuilder.buildAndThrowWorkflowException(buildingBlockExecution, 10004, "Service AAI request failed",
+ ONAPComponents.SO);
+ }
+ Service parentInstance = serviceInstanceToServiceBeanMapper(parentInstanceAAI);
+ Service childInstance = serviceInstanceToServiceBeanMapper(childInstanceAAI);
+ ServiceInstancesRequest sir = ChildServiceRequestBuilder
+ .getInstance(buildingBlockExecution, parentInstance, childInstance)
+ .setParentRequestId(
+ buildingBlockExecution.getGeneralBuildingBlock().getRequestContext().getMsoRequestId())
+ .setChildSvcInstanceId(childSvcInstanceId).setCorrelationId(UUID.randomUUID().toString()).build();
+ buildingBlockExecution.setVariable(CHILD_SVC_REQ_PAYLOAD, sir);
+ }
+
+ public void sendRequest(final BuildingBlockExecution buildingBlockExecution) {
+ try {
+ ServiceInstancesRequest sir = buildingBlockExecution.getVariable(CHILD_SVC_REQ_PAYLOAD);
+ log.info("Sending Delete Service Request: \n{}", sir.toString());
+ buildingBlockExecution.setVariable(CHILD_SVC_REQ_CORRELATION_ID,
+ sir.getRequestDetails().getRequestInfo().getCorrelator());
+ ServiceInstancesResponse response = apiHandlerClient.deleteServiceInstance(sir);
+ buildingBlockExecution.setVariable(CHILD_SVC_REQ_ID, response.getRequestReferences().getRequestId());
+ buildingBlockExecution.setVariable(CHILD_SVC_INSTANCE_ID, response.getRequestReferences().getInstanceId());
+ } catch (Exception e) {
+ exceptionBuilder.buildAndThrowWorkflowException(buildingBlockExecution, 10003, e.getMessage(),
+ ONAPComponents.SO);
+ }
+ }
+
+ public void handleFailure(final BuildingBlockExecution buildingBlockExecution) {
+ Map<ResourceKey, String> lookupMap = buildingBlockExecution.getLookupMap();
+ String childSvcInstanceName = lookupMap.get(ResourceKey.CHILD_SERVICE_INSTANCE_NAME);
+ String childErrorMessage = buildingBlockExecution.getVariable(CHILD_SVC_REQ_ERROR);
+ String errorMessage =
+ String.format("Failed deleting child service %:qqs %s", childSvcInstanceName, childErrorMessage);
+ exceptionBuilder.buildAndThrowWorkflowException(buildingBlockExecution, 10001, errorMessage, ONAPComponents.SO);
+ }
+
+ private static Service serviceInstanceToServiceBeanMapper(ServiceInstance serviceInstance) {
+ Service service = new Service();
+ service.setInstanceName(service.getInstanceName());
+ ModelInfo modelInfo = new ModelInfo();
+ modelInfo.setModelId(serviceInstance.getModelVersionId());
+ modelInfo.setModelType(ModelType.service);
+ modelInfo.setModelVersionId(serviceInstance.getModelVersionId());
+ modelInfo.setModelInstanceName(serviceInstance.getServiceInstanceName());
+ modelInfo.setModelInvariantId(serviceInstance.getModelInvariantId());
+ service.setModelInfo(modelInfo);
+ return service;
+ }
+}
diff --git a/bpmn/so-bpmn-tasks/src/main/java/org/onap/so/bpmn/infrastructure/service/composition/ServiceCompositionConstants.java b/bpmn/so-bpmn-tasks/src/main/java/org/onap/so/bpmn/infrastructure/service/composition/ServiceCompositionConstants.java
new file mode 100644
index 0000000000..6b209bdcef
--- /dev/null
+++ b/bpmn/so-bpmn-tasks/src/main/java/org/onap/so/bpmn/infrastructure/service/composition/ServiceCompositionConstants.java
@@ -0,0 +1,32 @@
+/*-
+ * Copyright (C) 2021 Bell Canada. 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.
+ */
+
+package org.onap.so.bpmn.infrastructure.service.composition;
+
+public class ServiceCompositionConstants {
+
+ public static final String CHILD_SVC_REQ_PAYLOAD = "childServiceRequestPayload";
+ public static final String CHILD_SVC_REQ_ID = "childServiceRequestId";
+ public static final String CHILD_SVC_INSTANCE_ID = "childServiceInstanceId";
+ public static final String IS_CHILD_PROCESS = "isChildProcess";
+ public static final String CHILD_SVC_REQ_CORRELATION_ID = "childServiceRequestCorrelationId";
+ public static final String CHILD_SVC_REQ_TIMEOUT = "childServiceRequestTimeout";
+ public static final String CHILD_SVC_REQ_STATUS = "CHILD_SVC_REQ_STATUS";
+ public static final String CHILD_SVC_REQ_ERROR = "CHILD_SVC_REQ_ERROR";
+ public static final String CHILD_SVC_REQ_MESSAGE_NAME = "ChildServiceRequest";
+ public static final String PARENT_CORRELATION_ID = "parentCorrelationId";
+
+}
diff --git a/bpmn/so-bpmn-tasks/src/main/java/org/onap/so/bpmn/infrastructure/workflow/tasks/ExecuteBuildingBlockBuilder.java b/bpmn/so-bpmn-tasks/src/main/java/org/onap/so/bpmn/infrastructure/workflow/tasks/ExecuteBuildingBlockBuilder.java
index 377d0bbf06..d7f2b85ea0 100755
--- a/bpmn/so-bpmn-tasks/src/main/java/org/onap/so/bpmn/infrastructure/workflow/tasks/ExecuteBuildingBlockBuilder.java
+++ b/bpmn/so-bpmn-tasks/src/main/java/org/onap/so/bpmn/infrastructure/workflow/tasks/ExecuteBuildingBlockBuilder.java
@@ -110,13 +110,22 @@ public class ExecuteBuildingBlockBuilder {
String requestId, String apiVersion, String resourceId, String requestAction, String vnfType,
WorkflowResourceIds workflowResourceIds, RequestDetails requestDetails, boolean replaceVnf) {
List<ExecuteBuildingBlock> flowsToExecute = new ArrayList<>();
- if (orchFlow.getFlowName().contains(SERVICE) || (orchFlow.getFlowName().contains(CONTROLLER)
+ if (orchFlow.getFlowName().contains(CHILD_SERVICE)) {
+ if (WorkflowType.SERVICE.equals(resource.getResourceType()) && resource.hasParent()) {
+ addBuildingBlockToExecuteBBList(flowsToExecute, resource, WorkflowType.SERVICE, orchFlow, requestId,
+ apiVersion, resourceId, requestAction, vnfType, workflowResourceIds, requestDetails, false,
+ false);
+ }
+ } else if (orchFlow.getFlowName().contains(SERVICE) || (orchFlow.getFlowName().contains(CONTROLLER)
&& (SERVICE).equalsIgnoreCase(orchFlow.getBpmnScope()))) {
if (!replaceVnf) {
workflowResourceIds.setServiceInstanceId(resourceId);
}
- addBuildingBlockToExecuteBBList(flowsToExecute, resource, WorkflowType.SERVICE, orchFlow, requestId,
- apiVersion, resourceId, requestAction, vnfType, workflowResourceIds, requestDetails, false, false);
+ if (!resource.hasParent()) {
+ addBuildingBlockToExecuteBBList(flowsToExecute, resource, WorkflowType.SERVICE, orchFlow, requestId,
+ apiVersion, resourceId, requestAction, vnfType, workflowResourceIds, requestDetails, false,
+ false);
+ }
} else if (orchFlow.getFlowName().contains(VNF)
|| (orchFlow.getFlowName().contains(CONTROLLER) && (VNF).equalsIgnoreCase(orchFlow.getBpmnScope()))) {
addBuildingBlockToExecuteBBList(flowsToExecute, resource, WorkflowType.VNF, orchFlow, requestId, apiVersion,
diff --git a/bpmn/so-bpmn-tasks/src/main/java/org/onap/so/bpmn/infrastructure/workflow/tasks/Resource.java b/bpmn/so-bpmn-tasks/src/main/java/org/onap/so/bpmn/infrastructure/workflow/tasks/Resource.java
index 57ff837740..3617512d7b 100644
--- a/bpmn/so-bpmn-tasks/src/main/java/org/onap/so/bpmn/infrastructure/workflow/tasks/Resource.java
+++ b/bpmn/so-bpmn-tasks/src/main/java/org/onap/so/bpmn/infrastructure/workflow/tasks/Resource.java
@@ -173,4 +173,8 @@ public class Resource implements Serializable {
public List<Resource> getChildren() {
return this.children;
}
+
+ public Boolean hasParent() {
+ return parent != null;
+ }
}
diff --git a/bpmn/so-bpmn-tasks/src/main/java/org/onap/so/bpmn/infrastructure/workflow/tasks/WorkflowAction.java b/bpmn/so-bpmn-tasks/src/main/java/org/onap/so/bpmn/infrastructure/workflow/tasks/WorkflowAction.java
index ef32ac5cbb..35e11963a3 100755
--- a/bpmn/so-bpmn-tasks/src/main/java/org/onap/so/bpmn/infrastructure/workflow/tasks/WorkflowAction.java
+++ b/bpmn/so-bpmn-tasks/src/main/java/org/onap/so/bpmn/infrastructure/workflow/tasks/WorkflowAction.java
@@ -28,6 +28,8 @@
package org.onap.so.bpmn.infrastructure.workflow.tasks;
+import static org.onap.so.bpmn.infrastructure.service.composition.ServiceCompositionConstants.IS_CHILD_PROCESS;
+import static org.onap.so.bpmn.infrastructure.service.composition.ServiceCompositionConstants.PARENT_CORRELATION_ID;
import static org.onap.so.bpmn.infrastructure.workflow.tasks.WorkflowActionConstants.ASSIGN_INSTANCE;
import static org.onap.so.bpmn.infrastructure.workflow.tasks.WorkflowActionConstants.CONTROLLER;
import static org.onap.so.bpmn.infrastructure.workflow.tasks.WorkflowActionConstants.CREATE_INSTANCE;
@@ -97,6 +99,7 @@ import org.springframework.core.env.Environment;
import org.springframework.stereotype.Component;
import org.springframework.util.CollectionUtils;
import com.fasterxml.jackson.databind.ObjectMapper;
+import org.onap.so.serviceinstancebeans.InstanceDirection;
@Component
public class WorkflowAction {
@@ -351,6 +354,19 @@ public class WorkflowAction {
log += ", Action: " + block.getBuildingBlock().getBpmnAction();
logger.info(log);
}
+
+ RelatedInstanceList[] instanceList = sIRequest.getRequestDetails().getRelatedInstanceList();
+ execution.setVariable(IS_CHILD_PROCESS, Boolean.FALSE);
+ if (instanceList != null) {
+ for (RelatedInstanceList relatedInstanceList : instanceList) {
+ RelatedInstance relatedInstance = relatedInstanceList.getRelatedInstance();
+ if (InstanceDirection.source.equals(relatedInstance.getInstanceDirection())) {
+ execution.setVariable(IS_CHILD_PROCESS, Boolean.TRUE);
+ execution.setVariable(PARENT_CORRELATION_ID, requestDetails.getRequestInfo().getCorrelator());
+ }
+ }
+ }
+
// By default, enable homing at VNF level for CREATE_INSTANCE and ASSIGNINSTANCE
if (resourceType == WorkflowType.SERVICE
&& (requestAction.equals(CREATE_INSTANCE) || requestAction.equals(ASSIGN_INSTANCE))
@@ -680,11 +696,11 @@ public class WorkflowAction {
logger.debug("{}, {}", pair.getValue0(), pair.getValue1());
}
Map<Resource, String> resourceInstanceIds = new HashMap<>();
- Arrays.stream(WorkflowType.values()).filter(type -> !type.equals(WorkflowType.SERVICE))
- .forEach(type -> resourceList.stream().filter(resource -> type.equals(resource.getResourceType()))
- .forEach(resource -> updateWorkflowResourceIds(flowsToExecute, type, resource,
- retrieveAAIResourceId(aaiResourceIds, type), null, serviceInstanceId,
- resourceInstanceIds)));
+ Arrays.stream(WorkflowType.values()).forEach(type -> resourceList.stream()
+ .filter(resource -> type.equals(resource.getResourceType())
+ && !(WorkflowType.SERVICE.equals(type) && !resource.hasParent()))
+ .forEach(resource -> updateWorkflowResourceIds(flowsToExecute, type, resource,
+ retrieveAAIResourceId(aaiResourceIds, type), null, serviceInstanceId, resourceInstanceIds)));
}
private String retrieveAAIResourceId(List<Pair<WorkflowType, String>> aaiResourceIds, WorkflowType resource) {
@@ -702,8 +718,9 @@ public class WorkflowAction {
private void generateResourceIds(List<ExecuteBuildingBlock> flowsToExecute, List<Resource> resourceList,
String serviceInstanceId) {
Map<Resource, String> resourceInstanceIds = new HashMap<>();
- Arrays.stream(WorkflowType.values()).filter(type -> !type.equals(WorkflowType.SERVICE))
- .forEach(type -> resourceList.stream().filter(resource -> type.equals(resource.getResourceType()))
+ Arrays.stream(WorkflowType.values())
+ .forEach(type -> resourceList.stream()
+ .filter(resource -> resource.hasParent() && type.equals(resource.getResourceType()))
.forEach(resource -> updateWorkflowResourceIds(flowsToExecute, type, resource, null,
resource.getVirtualLinkKey(), serviceInstanceId, resourceInstanceIds)));
}
@@ -731,13 +748,20 @@ public class WorkflowAction {
WorkflowResourceIds workflowResourceIds = new WorkflowResourceIds();
workflowResourceIds.setServiceInstanceId(serviceInstanceId);
Resource parent = resource.getParent();
- if (parent != null && resourceInstanceIds.containsKey(parent)) {
+ if (resource.hasParent() && resourceInstanceIds.containsKey(parent)) {
WorkflowResourceIdsUtils.setResourceIdByWorkflowType(workflowResourceIds, parent.getResourceType(),
resourceInstanceIds.get(parent));
}
- WorkflowResourceIdsUtils.setInstanceNameByWorkflowType(workflowResourceIds, resourceType,
- resource.getInstanceName());
- WorkflowResourceIdsUtils.setResourceIdByWorkflowType(workflowResourceIds, resourceType, resourceId);
+ if (resource.hasParent() && WorkflowType.SERVICE.equals(resourceType)
+ && WorkflowType.SERVICE.equals(parent.getResourceType())) {
+ String childServiceInstanceId = resource.isGenerated() ? resourceId : resource.getResourceId();
+ workflowResourceIds.setChildServiceInstanceId(childServiceInstanceId);
+ workflowResourceIds.setChildServiceInstanceName(resource.getInstanceName());
+ } else {
+ WorkflowResourceIdsUtils.setInstanceNameByWorkflowType(workflowResourceIds, resourceType,
+ resource.getInstanceName());
+ WorkflowResourceIdsUtils.setResourceIdByWorkflowType(workflowResourceIds, resourceType, resourceId);
+ }
ebb.setWorkflowResourceIds(workflowResourceIds);
assignedFlows.add(flowName + action);
}
@@ -753,7 +777,9 @@ public class WorkflowAction {
private boolean isFlowAssignable(Set<String> assignedFlows, ExecuteBuildingBlock ebb, WorkflowType resourceType,
String assignedFlowName) {
- String id = WorkflowResourceIdsUtils.getResourceIdByWorkflowType(ebb.getWorkflowResourceIds(), resourceType);
+ String id = WorkflowType.SERVICE.equals(resourceType)
+ ? StringUtils.defaultString(ebb.getWorkflowResourceIds().getChildServiceInstanceId())
+ : WorkflowResourceIdsUtils.getResourceIdByWorkflowType(ebb.getWorkflowResourceIds(), resourceType);
return !assignedFlows.contains(assignedFlowName) && id.isEmpty();
}
diff --git a/bpmn/so-bpmn-tasks/src/main/java/org/onap/so/bpmn/infrastructure/workflow/tasks/WorkflowActionBBFailure.java b/bpmn/so-bpmn-tasks/src/main/java/org/onap/so/bpmn/infrastructure/workflow/tasks/WorkflowActionBBFailure.java
index 8d9e020f67..38fe6a3157 100644
--- a/bpmn/so-bpmn-tasks/src/main/java/org/onap/so/bpmn/infrastructure/workflow/tasks/WorkflowActionBBFailure.java
+++ b/bpmn/so-bpmn-tasks/src/main/java/org/onap/so/bpmn/infrastructure/workflow/tasks/WorkflowActionBBFailure.java
@@ -35,6 +35,12 @@ import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
+import static org.onap.so.bpmn.infrastructure.service.composition.ServiceCompositionConstants.CHILD_SVC_REQ_CORRELATION_ID;
+import static org.onap.so.bpmn.infrastructure.service.composition.ServiceCompositionConstants.CHILD_SVC_REQ_ERROR;
+import static org.onap.so.bpmn.infrastructure.service.composition.ServiceCompositionConstants.CHILD_SVC_REQ_MESSAGE_NAME;
+import static org.onap.so.bpmn.infrastructure.service.composition.ServiceCompositionConstants.CHILD_SVC_REQ_STATUS;
+import static org.onap.so.bpmn.infrastructure.service.composition.ServiceCompositionConstants.IS_CHILD_PROCESS;
+import static org.onap.so.bpmn.infrastructure.service.composition.ServiceCompositionConstants.PARENT_CORRELATION_ID;
@Component
public class WorkflowActionBBFailure {
@@ -44,6 +50,7 @@ public class WorkflowActionBBFailure {
private static final String DELETE_FABRIC_CONFIGURATION_FLOW = "DeleteFabricConfigurationBB";
private static final Logger logger = LoggerFactory.getLogger(WorkflowActionBBFailure.class);
public static final String ROLLBACK_TARGET_STATE = "rollbackTargetState";
+
@Autowired
private RequestsDbClient requestDbclient;
@Autowired
@@ -83,6 +90,7 @@ public class WorkflowActionBBFailure {
InfraActiveRequests request = requestDbclient.getInfraActiveRequestbyRequestId(requestId);
String rollbackErrorMsg = "";
String errorMsg = "";
+ String childErrorMessage = "";
Boolean rollbackCompletedSuccessfully = (Boolean) execution.getVariable("isRollbackComplete");
Boolean isRollbackFailure = (Boolean) execution.getVariable("isRollback");
ExecuteBuildingBlock ebb = (ExecuteBuildingBlock) execution.getVariable("buildingBlock");
@@ -94,6 +102,7 @@ public class WorkflowActionBBFailure {
if (rollbackCompletedSuccessfully) {
rollbackErrorMsg = "Rollback has been completed successfully.";
+ childErrorMessage = rollbackErrorMsg;
request.setRollbackStatusMessage(rollbackErrorMsg);
execution.setVariable("RollbackErrorMessage", rollbackErrorMsg);
String rollbackTargetState = (String) execution.getVariable(ROLLBACK_TARGET_STATE);
@@ -116,6 +125,7 @@ public class WorkflowActionBBFailure {
} else {
rollbackErrorMsg = "Failed to determine rollback error message.";
}
+ childErrorMessage = rollbackErrorMsg;
request.setRollbackStatusMessage(rollbackErrorMsg);
execution.setVariable("RollbackErrorMessage", rollbackErrorMsg);
request.setRequestStatus(Status.FAILED.toString());
@@ -126,6 +136,7 @@ public class WorkflowActionBBFailure {
} else {
errorMsg = "Failed to determine error message";
}
+ childErrorMessage = errorMsg;
request.setStatusMessage(errorMsg);
execution.setVariable("ErrorMessage", errorMsg);
String handlingCode = (String) execution.getVariable("handlingCode");
@@ -146,6 +157,16 @@ public class WorkflowActionBBFailure {
execution.setVariable("flowStatus", flowStatus);
}
+ if (Boolean.TRUE.equals(execution.getVariable(IS_CHILD_PROCESS))) {
+ String parentCorrelationId = (String) execution.getVariable(PARENT_CORRELATION_ID);
+ logger.info("Child service creation failed. Sending message to parent with correlationId: "
+ + parentCorrelationId);
+ execution.getProcessEngineServices().getRuntimeService()
+ .createMessageCorrelation(CHILD_SVC_REQ_MESSAGE_NAME)
+ .setVariable(CHILD_SVC_REQ_STATUS, "FAILED").setVariable(CHILD_SVC_REQ_ERROR, childErrorMessage)
+ .processInstanceVariableEquals(CHILD_SVC_REQ_CORRELATION_ID, parentCorrelationId).correlate();
+ }
+
request.setProgress(Long.valueOf(100));
request.setLastModifiedBy("CamundaBPMN");
request.setEndTime(new Timestamp(System.currentTimeMillis()));
diff --git a/bpmn/so-bpmn-tasks/src/main/java/org/onap/so/bpmn/infrastructure/workflow/tasks/WorkflowActionBBTasks.java b/bpmn/so-bpmn-tasks/src/main/java/org/onap/so/bpmn/infrastructure/workflow/tasks/WorkflowActionBBTasks.java
index ed41270da9..22d78bb672 100644
--- a/bpmn/so-bpmn-tasks/src/main/java/org/onap/so/bpmn/infrastructure/workflow/tasks/WorkflowActionBBTasks.java
+++ b/bpmn/so-bpmn-tasks/src/main/java/org/onap/so/bpmn/infrastructure/workflow/tasks/WorkflowActionBBTasks.java
@@ -67,6 +67,12 @@ import org.springframework.core.env.Environment;
import org.springframework.stereotype.Component;
import com.fasterxml.jackson.core.JsonProcessingException;
import com.fasterxml.jackson.databind.ObjectMapper;
+import static org.onap.so.bpmn.infrastructure.service.composition.ServiceCompositionConstants.CHILD_SVC_REQ_ERROR;
+import static org.onap.so.bpmn.infrastructure.service.composition.ServiceCompositionConstants.CHILD_SVC_REQ_MESSAGE_NAME;
+import static org.onap.so.bpmn.infrastructure.service.composition.ServiceCompositionConstants.CHILD_SVC_REQ_STATUS;
+import static org.onap.so.bpmn.infrastructure.service.composition.ServiceCompositionConstants.IS_CHILD_PROCESS;
+import static org.onap.so.bpmn.infrastructure.service.composition.ServiceCompositionConstants.CHILD_SVC_REQ_CORRELATION_ID;
+import static org.onap.so.bpmn.infrastructure.service.composition.ServiceCompositionConstants.PARENT_CORRELATION_ID;
@Component
public class WorkflowActionBBTasks {
@@ -236,6 +242,17 @@ public class WorkflowActionBBTasks {
final boolean aLaCarte = (boolean) execution.getVariable(BBConstants.G_ALACARTE);
final String resourceName = (String) execution.getVariable("resourceName");
String statusMessage = (String) execution.getVariable("StatusMessage");
+
+ if (Boolean.TRUE.equals(execution.getVariable(IS_CHILD_PROCESS))) {
+ String parentCorrelationId = (String) execution.getVariable(PARENT_CORRELATION_ID);
+ logger.info("Child service request completed. Sending message to parent process with correlationId: "
+ + parentCorrelationId);
+ execution.getProcessEngineServices().getRuntimeService()
+ .createMessageCorrelation(CHILD_SVC_REQ_MESSAGE_NAME)
+ .setVariable(CHILD_SVC_REQ_STATUS, "COMPLETED").setVariable(CHILD_SVC_REQ_ERROR, "")
+ .processInstanceVariableEquals(CHILD_SVC_REQ_CORRELATION_ID, parentCorrelationId).correlate();
+ }
+
String macroAction;
if (statusMessage == null) {
if (aLaCarte) {
diff --git a/bpmn/so-bpmn-tasks/src/main/java/org/onap/so/bpmn/infrastructure/workflow/tasks/WorkflowActionConstants.java b/bpmn/so-bpmn-tasks/src/main/java/org/onap/so/bpmn/infrastructure/workflow/tasks/WorkflowActionConstants.java
index 093bab66bf..7ffd066de5 100755
--- a/bpmn/so-bpmn-tasks/src/main/java/org/onap/so/bpmn/infrastructure/workflow/tasks/WorkflowActionConstants.java
+++ b/bpmn/so-bpmn-tasks/src/main/java/org/onap/so/bpmn/infrastructure/workflow/tasks/WorkflowActionConstants.java
@@ -34,6 +34,7 @@ public final class WorkflowActionConstants {
public static final String ACTIVATE_INSTANCE = "activateInstance";
public static final String ASSIGN_INSTANCE = "assignInstance";
+ public static final String CHILD_SERVICE = "ChildService";
public static final String CONFIGURATION = "Configuration";
public static final String CONTROLLER = "Controller";
public static final String CREATE_INSTANCE = "createInstance";
diff --git a/bpmn/so-bpmn-tasks/src/main/java/org/onap/so/bpmn/infrastructure/workflow/tasks/ebb/loader/ServiceEBBLoader.java b/bpmn/so-bpmn-tasks/src/main/java/org/onap/so/bpmn/infrastructure/workflow/tasks/ebb/loader/ServiceEBBLoader.java
index cb4ee014b7..9d76707e5a 100644
--- a/bpmn/so-bpmn-tasks/src/main/java/org/onap/so/bpmn/infrastructure/workflow/tasks/ebb/loader/ServiceEBBLoader.java
+++ b/bpmn/so-bpmn-tasks/src/main/java/org/onap/so/bpmn/infrastructure/workflow/tasks/ebb/loader/ServiceEBBLoader.java
@@ -25,8 +25,12 @@ package org.onap.so.bpmn.infrastructure.workflow.tasks.ebb.loader;
import com.fasterxml.jackson.core.JsonProcessingException;
import org.camunda.bpm.engine.delegate.DelegateExecution;
import org.javatuples.Pair;
+import org.onap.aai.domain.yang.ComposedResource;
+import org.onap.aai.domain.yang.ComposedResources;
import org.onap.aai.domain.yang.GenericVnf;
import org.onap.aai.domain.yang.Relationship;
+import org.onap.aai.domain.yang.RelationshipData;
+import org.onap.aai.domain.yang.RelationshipList;
import org.onap.aai.domain.yang.ServiceInstance;
import org.onap.aai.domain.yang.VpnBinding;
import org.onap.aaiclient.client.aai.AAICommonObjectMapperProvider;
@@ -135,7 +139,7 @@ public class ServiceEBBLoader {
resourceList = userParamsServiceTraversal.getResourceListFromUserParams(execution, userParams,
serviceInstanceId, requestAction);
}
- if (!foundRelated(resourceList)) {
+ if (!isComposedService(resourceList) && !foundRelated(resourceList)) {
traverseCatalogDbService(execution, sIRequest, resourceList, aaiResourceIds);
}
} else if ((ACTIVATE_INSTANCE.equalsIgnoreCase(requestAction)
@@ -192,6 +196,10 @@ public class ServiceEBBLoader {
|| containsWorkflowType(resourceList, WorkflowType.NETWORKCOLLECTION));
}
+ public boolean isComposedService(List<Resource> resourceList) {
+ return resourceList.stream().anyMatch(s -> s.getResourceType() == WorkflowType.SERVICE && s.hasParent());
+ }
+
public void traverseAAIService(DelegateExecution execution, List<Resource> resourceList, String resourceId,
List<Pair<WorkflowType, String>> aaiResourceIds) {
try {
@@ -203,6 +211,7 @@ public class ServiceEBBLoader {
serviceResource.setModelInvariantId(serviceInstanceAAI.getModelInvariantId());
serviceResource.setModelVersionId(serviceInstanceAAI.getModelVersionId());
resourceList.add(serviceResource);
+ traverseServiceInstanceChildService(resourceList, serviceResource, serviceInstanceAAI);
traverseServiceInstanceMSOVnfs(resourceList, serviceResource, aaiResourceIds, serviceInstanceMSO);
traverseServiceInstanceMSOPnfs(resourceList, serviceResource, aaiResourceIds, serviceInstanceMSO);
if (serviceInstanceMSO.getNetworks() != null) {
@@ -294,6 +303,54 @@ public class ServiceEBBLoader {
}
}
+ public void traverseServiceInstanceChildService(List<Resource> resourceList, Resource serviceResource,
+ ServiceInstance serviceInstanceAAI) {
+
+ ComposedResources composedResources = serviceInstanceAAI.getComposedResources();
+ if (composedResources == null) {
+ return;
+ }
+
+ List<ComposedResource> listOfComposedResource = composedResources.getComposedResource();
+
+ listOfComposedResource.forEach(composedResource -> {
+ // Get ServiceInstance from composedResource relationship List
+ RelationshipList relationshipList = composedResource.getRelationshipList();
+ if (relationshipList == null) {
+ return;
+ }
+ List<Relationship> composedResourceRelationshipList = relationshipList.getRelationship();
+ ServiceInstance childService = new ServiceInstance();
+ composedResourceRelationshipList.forEach(composedRelation -> {
+ if ("service-instance".equalsIgnoreCase(composedRelation.getRelatedTo())) {
+ List<RelationshipData> rData = composedRelation.getRelationshipData();
+ rData.forEach(data -> {
+ if ("service-instance.service-instance-id".equalsIgnoreCase(data.getRelationshipKey())) {
+ childService.setServiceInstanceId(data.getRelationshipValue());
+ }
+ });
+ composedRelation.getRelatedToProperty().forEach(relatedToProperty -> {
+ if ("service-instance.service-instance-name"
+ .equalsIgnoreCase(relatedToProperty.getPropertyKey())) {
+ childService.setServiceInstanceName(relatedToProperty.getPropertyValue());
+ }
+ });
+ }
+ });
+
+ if (childService.getServiceInstanceId() == null) {
+ return;
+ }
+
+ Resource childServiceResource =
+ new Resource(WorkflowType.SERVICE, childService.getServiceInstanceId(), false, serviceResource);
+
+ childServiceResource.setInstanceName(childService.getServiceInstanceName());
+ resourceList.add(childServiceResource);
+ });
+
+ }
+
protected void traverseVrfConfiguration(List<Pair<WorkflowType, String>> aaiResourceIds,
List<Resource> resourceList, Resource serviceResource, org.onap.so.db.catalog.beans.Service service,
RelatedInstance relatedVpnBinding, RelatedInstance relatedLocalNetwork)
diff --git a/bpmn/so-bpmn-tasks/src/main/java/org/onap/so/bpmn/infrastructure/workflow/tasks/ebb/loader/UserParamsServiceTraversal.java b/bpmn/so-bpmn-tasks/src/main/java/org/onap/so/bpmn/infrastructure/workflow/tasks/ebb/loader/UserParamsServiceTraversal.java
index 77cd65b946..466b49644f 100644
--- a/bpmn/so-bpmn-tasks/src/main/java/org/onap/so/bpmn/infrastructure/workflow/tasks/ebb/loader/UserParamsServiceTraversal.java
+++ b/bpmn/so-bpmn-tasks/src/main/java/org/onap/so/bpmn/infrastructure/workflow/tasks/ebb/loader/UserParamsServiceTraversal.java
@@ -100,6 +100,9 @@ public class UserParamsServiceTraversal {
serviceResource.setModelInvariantId(modelInfo.getModelInvariantUuid());
}
resourceList.add(serviceResource);
+ if (validate.getResources().getServices() != null) {
+ setResourceListForChildServices(execution, resourceList, serviceResource, validate);
+ }
if (validate.getResources().getVnfs() != null) {
setResourceListForVnfs(execution, resourceList, serviceResource, validate);
}
@@ -113,6 +116,17 @@ public class UserParamsServiceTraversal {
return resourceList;
}
+ private void setResourceListForChildServices(DelegateExecution execution, List<Resource> resourceList,
+ Resource serviceResource, Service validate) {
+ for (Service childService : validate.getResources().getServices()) {
+ Resource childServiceResource = new Resource(WorkflowType.SERVICE,
+ childService.getModelInfo().getModelVersionId(), false, serviceResource);
+ childServiceResource.setProcessingPriority(childService.getProcessingPriority());
+ childServiceResource.setInstanceName(childService.getInstanceName());
+ resourceList.add(childServiceResource);
+ }
+ }
+
private void setResourceListForVnfs(DelegateExecution execution, List<Resource> resourceList,
Resource serviceResource, Service validate) {
for (Vnfs vnf : validate.getResources().getVnfs()) {
@@ -232,6 +246,7 @@ public class UserParamsServiceTraversal {
pnfResource.setModelCustomizationId(modelInfo.getModelCustomizationUuid());
pnfResource.setModelVersionId(modelInfo.getModelVersionId());
}
+ pnfResource.setInstanceName(pnf.getInstanceName());
pnfResource.setProcessingPriority(pnf.getProcessingPriority());
resourceList.add(pnfResource);
}
diff --git a/bpmn/so-bpmn-tasks/src/main/java/org/onap/so/bpmn/infrastructure/workflow/tasks/utils/WorkflowResourceIdsUtils.java b/bpmn/so-bpmn-tasks/src/main/java/org/onap/so/bpmn/infrastructure/workflow/tasks/utils/WorkflowResourceIdsUtils.java
index 9cabf6665c..f3aafde2a2 100644
--- a/bpmn/so-bpmn-tasks/src/main/java/org/onap/so/bpmn/infrastructure/workflow/tasks/utils/WorkflowResourceIdsUtils.java
+++ b/bpmn/so-bpmn-tasks/src/main/java/org/onap/so/bpmn/infrastructure/workflow/tasks/utils/WorkflowResourceIdsUtils.java
@@ -70,6 +70,8 @@ public final class WorkflowResourceIdsUtils {
workflowResourceIds.setVnfInstanceName(instanceName);
} else if (resourceType == WorkflowType.VFMODULE) {
workflowResourceIds.setVfModuleInstanceName(instanceName);
+ } else if (resourceType == WorkflowType.PNF) {
+ workflowResourceIds.setPnfInstanceName(instanceName);
}
}
@@ -110,6 +112,7 @@ public final class WorkflowResourceIdsUtils {
workflowResourceIds.setInstanceGroupId((String) execution.getVariable("instanceGroupId"));
workflowResourceIds.setVnfInstanceName((String) execution.getVariable("vnfInstanceName"));
workflowResourceIds.setVfModuleInstanceName((String) execution.getVariable("vfModuleInstanceName"));
+ workflowResourceIds.setPnfInstanceName((String) execution.getVariable("pnfInstanceName"));
return workflowResourceIds;
}
diff --git a/bpmn/so-bpmn-tasks/src/main/java/org/onap/so/client/orchestration/ApiHandlerClient.java b/bpmn/so-bpmn-tasks/src/main/java/org/onap/so/client/orchestration/ApiHandlerClient.java
new file mode 100644
index 0000000000..132e618ba5
--- /dev/null
+++ b/bpmn/so-bpmn-tasks/src/main/java/org/onap/so/client/orchestration/ApiHandlerClient.java
@@ -0,0 +1,73 @@
+package org.onap.so.client.orchestration;
+
+import org.onap.so.serviceinstancebeans.ServiceInstancesRequest;
+import org.onap.so.serviceinstancebeans.ServiceInstancesResponse;
+import org.springframework.beans.factory.annotation.Qualifier;
+import org.springframework.beans.factory.annotation.Value;
+import org.springframework.http.HttpEntity;
+import org.springframework.http.HttpHeaders;
+import org.springframework.http.HttpMethod;
+import org.springframework.http.MediaType;
+import org.springframework.stereotype.Component;
+import org.springframework.web.client.HttpStatusCodeException;
+import org.springframework.web.client.RestClientException;
+import org.springframework.web.client.RestTemplate;
+import static org.onap.so.client.orchestration.RestTemplateApiClientConfig.REST_TEMPLATE_API_HANDLER;
+
+@Component
+public class ApiHandlerClient {
+
+ @Value("${mso.adapters.apihandler.serviceInstantiationEndpoint:/onap/so/infra/serviceInstantiation/v7/serviceInstances}")
+ private String serviceInstantiationEndpoint;
+ @Value("${mso.adapters.apihandler.endpoint}")
+ private String baseUri;
+ @Value("${mso.adapters.apihandler.auth}")
+ private String auth;
+
+ private RestTemplate restTemplate;
+
+ public ApiHandlerClient(@Qualifier(REST_TEMPLATE_API_HANDLER) RestTemplate restTemplate) {
+ this.restTemplate = restTemplate;
+ }
+
+ public ServiceInstancesResponse createServiceInstance(ServiceInstancesRequest serviceInstancesRequest)
+ throws ApiHandlerClientException {
+ try {
+ HttpEntity<ServiceInstancesRequest> request = createRequest(serviceInstancesRequest);
+ return restTemplate.exchange(baseUri + serviceInstantiationEndpoint, HttpMethod.POST, request,
+ ServiceInstancesResponse.class).getBody();
+ } catch (HttpStatusCodeException e) {
+ throw new ApiHandlerClientException("Failed sending service createInstance request to api-handler."
+ + " Error: " + e.getResponseBodyAsString());
+ } catch (RestClientException e) {
+ throw new ApiHandlerClientException(
+ "Failed sending service createInstance request to api-handler." + " Error: " + e.getMessage());
+ }
+ }
+
+ public ServiceInstancesResponse deleteServiceInstance(ServiceInstancesRequest serviceInstancesRequest)
+ throws ApiHandlerClientException {
+ try {
+ HttpEntity<ServiceInstancesRequest> request = createRequest(serviceInstancesRequest);
+ return restTemplate.exchange(
+ baseUri + serviceInstantiationEndpoint
+ + String.format("/%s", serviceInstancesRequest.getServiceInstanceId()),
+ HttpMethod.DELETE, request, ServiceInstancesResponse.class).getBody();
+ } catch (HttpStatusCodeException e) {
+ throw new ApiHandlerClientException("Failed sending service deleteInstance request to api-handler."
+ + " Error: " + e.getResponseBodyAsString());
+ } catch (RestClientException e) {
+ throw new ApiHandlerClientException(
+ "Failed sending service deleteInstance request to api-handler." + " Error: " + e.getMessage());
+ }
+ }
+
+ private HttpEntity<ServiceInstancesRequest> createRequest(ServiceInstancesRequest serviceInstancesRequest) {
+ HttpHeaders headers = new HttpHeaders();
+ headers.add(HttpHeaders.AUTHORIZATION, auth);
+ headers.set(HttpHeaders.CONTENT_TYPE, MediaType.APPLICATION_JSON_VALUE);
+ headers.set(HttpHeaders.ACCEPT, String.valueOf(MediaType.APPLICATION_JSON));
+
+ return new HttpEntity<>(serviceInstancesRequest, headers);
+ }
+}
diff --git a/bpmn/so-bpmn-tasks/src/main/java/org/onap/so/client/orchestration/ApiHandlerClientException.java b/bpmn/so-bpmn-tasks/src/main/java/org/onap/so/client/orchestration/ApiHandlerClientException.java
new file mode 100644
index 0000000000..0a4c60cdf7
--- /dev/null
+++ b/bpmn/so-bpmn-tasks/src/main/java/org/onap/so/client/orchestration/ApiHandlerClientException.java
@@ -0,0 +1,8 @@
+package org.onap.so.client.orchestration;
+
+public class ApiHandlerClientException extends Exception {
+
+ public ApiHandlerClientException(String errorMessage) {
+ super(errorMessage);
+ }
+}
diff --git a/bpmn/so-bpmn-tasks/src/main/java/org/onap/so/client/orchestration/RestTemplateApiClientConfig.java b/bpmn/so-bpmn-tasks/src/main/java/org/onap/so/client/orchestration/RestTemplateApiClientConfig.java
new file mode 100644
index 0000000000..a01fbe18f8
--- /dev/null
+++ b/bpmn/so-bpmn-tasks/src/main/java/org/onap/so/client/orchestration/RestTemplateApiClientConfig.java
@@ -0,0 +1,23 @@
+package org.onap.so.client.orchestration;
+
+import org.onap.logging.filter.spring.SpringClientPayloadFilter;
+import org.springframework.context.annotation.Bean;
+import org.springframework.context.annotation.Configuration;
+import org.springframework.http.client.BufferingClientHttpRequestFactory;
+import org.springframework.http.client.HttpComponentsClientHttpRequestFactory;
+import org.springframework.web.client.RestTemplate;
+
+@Configuration
+public class RestTemplateApiClientConfig {
+ public static final String REST_TEMPLATE_API_HANDLER = "restTemplateApiHandler";
+
+ @Bean(REST_TEMPLATE_API_HANDLER)
+ public RestTemplate restTemplate() {
+ final RestTemplate restTemplate = new RestTemplate();
+ restTemplate
+ .setRequestFactory(new BufferingClientHttpRequestFactory(new HttpComponentsClientHttpRequestFactory()));
+ restTemplate.getInterceptors().add((new SpringClientPayloadFilter()));
+ return restTemplate;
+ }
+
+}
diff --git a/bpmn/so-bpmn-tasks/src/test/java/org/onap/so/bpmn/infrastructure/service/composition/ChildServiceRequestBuilderTest.java b/bpmn/so-bpmn-tasks/src/test/java/org/onap/so/bpmn/infrastructure/service/composition/ChildServiceRequestBuilderTest.java
new file mode 100644
index 0000000000..e57232ebb7
--- /dev/null
+++ b/bpmn/so-bpmn-tasks/src/test/java/org/onap/so/bpmn/infrastructure/service/composition/ChildServiceRequestBuilderTest.java
@@ -0,0 +1,253 @@
+package org.onap.so.bpmn.infrastructure.service.composition;
+
+import com.fasterxml.jackson.databind.DeserializationFeature;
+import com.fasterxml.jackson.databind.ObjectMapper;
+import org.junit.Assert;
+import org.junit.Before;
+import org.junit.Test;
+import org.onap.so.bpmn.common.BuildingBlockExecution;
+import org.onap.so.bpmn.servicedecomposition.bbobjects.CloudRegion;
+import org.onap.so.bpmn.servicedecomposition.bbobjects.Customer;
+import org.onap.so.bpmn.servicedecomposition.bbobjects.OwningEntity;
+import org.onap.so.bpmn.servicedecomposition.bbobjects.ServiceInstance;
+import org.onap.so.bpmn.servicedecomposition.entities.GeneralBuildingBlock;
+import org.onap.so.bpmn.servicedecomposition.generalobjects.RequestContext;
+import org.onap.so.bpmn.servicedecomposition.generalobjects.RequestParameters;
+import org.onap.so.bpmn.servicedecomposition.bbobjects.Project;
+import org.onap.so.serviceinstancebeans.CloudConfiguration;
+import org.onap.so.serviceinstancebeans.InstanceDirection;
+import org.onap.so.serviceinstancebeans.ModelInfo;
+import org.onap.so.serviceinstancebeans.ModelType;
+import org.onap.so.serviceinstancebeans.RelatedInstance;
+import org.onap.so.serviceinstancebeans.RelatedInstanceList;
+import org.onap.so.serviceinstancebeans.RequestInfo;
+import org.onap.so.serviceinstancebeans.Service;
+import org.onap.so.serviceinstancebeans.ServiceInstancesRequest;
+import org.onap.so.serviceinstancebeans.SubscriberInfo;
+import java.io.IOException;
+import java.util.List;
+import java.util.Map;
+import java.util.UUID;
+import static org.mockito.Mockito.doReturn;
+import static org.mockito.Mockito.mock;
+
+public class ChildServiceRequestBuilderTest {
+
+ private BuildingBlockExecution mockExecution;
+ private List<Map<String, Object>> userParamsExpected;
+
+ @Before
+ public void setUp() throws IOException {
+ String incomingRequest =
+ "{\"requestDetails\":{\"subscriberInfo\":{\"globalSubscriberId\":\"ubuntu-customer\"},\"requestInfo\":{\"suppressRollback\":false,\"instanceName\":\"LcmDemo\",\"productFamilyId\":\"a9a77d5a-123e-4ca2-9eb9-0b015d2ee0fb\",\"requestorId\":\"portal\",\"source\":\"postman\"},\"cloudConfiguration\":{\"lcpCloudRegionId\":\"123\",\"tenantId\":\"e2710e84063b421fab08189818761d55\",\"cloudOwner\":\"cloudOwner\"},\"requestParameters\":{\"subscriptionServiceType\":\"ubuntu\",\"userParams\":[{\"Homing_Solution\":\"none\"},{\"service\":{\"instanceParams\":[],\"resources\":{\"vnfs\":[{\"modelInfo\":{\"modelName\":\"UbuntuSriovVF\",\"modelVersionId\":\"5b5d07f0-7449-4eec-95eb-531ddef18240\",\"modelInvariantUuid\":\"9ed17b82-11f3-44cc-a86f-32739360617e\",\"modelVersion\":\"1.0\",\"modelCustomizationId\":\"ae139d3d-b2ae-462c-b09d-c85bdc2e3073\",\"modelInstanceName\":\"UbuntuSriovVF0\"},\"cloudConfiguration\":{\"lcpCloudRegionId\":\"123\",\"tenantId\":\"e2710e84063b421fab08189818761d55\",\"cloudOwner\":\"cloudOwner\"},\"platform\":{\"platformName\":\"openstack\"},\"lineOfBusiness\":{\"lineOfBusinessName\":\"wireless\"},\"productFamilyId\":\"a9a77d5a-123e-4ca2-9eb9-0b015d2ee0fb\",\"instanceName\":\"vnf-instanceName\",\"instanceParams\":[{\"vnf-name\":\"vnf-vnf-name\",\"vnf_name\":\"UbuntuVNFName\"}],\"vfModules\":[{\"modelInfo\":{\"modelName\":\"Ubuntusriovvf..base..module-0\",\"modelVersionId\":\"f4ef24dd-7a4e-4eef-83b7-c58f2f3e36e4\",\"modelInvariantUuid\":\"719aab1e-c551-46e0-87e8-a78dcd7891da\",\"modelVersion\":\"1\",\"modelCustomizationId\":\"dea421a8-c1b8-4044-8ca1-58c30de3b315\"},\"instanceName\":\"lcm-demo-network-1\",\"instanceParams\":[{\"name\":\"lcm-demo-network-1\",\"cidr\":\"10.10.10.0/24\"}]},{\"modelInfo\":{\"modelName\":\"Ubuntusriovvf..ubuntu-vf-module..module-1\",\"modelVersionId\":\"112f2de4-4f09-4567-9de1-2d271cb6e164\",\"modelInvariantUuid\":\"ba6d2e11-4e82-4bb8-9d52-a2962a263a09\",\"modelVersion\":\"1\",\"modelCustomizationId\":\"7bc2649e-b96b-44ec-adfe-4a6167f3034e\"},\"instanceName\":\"lcm-demo-ubuntu-1\",\"instanceParams\":[{\"name\":\"lcm-demo-ubuntu-1\",\"network_mgmt\":\"networkMgmt\",\"key_name\":\"demo\",\"network_name\":\"lcm-demo-network-1\",\"image_name\":\"imageName\",\"flavor_name\":\"m1.small\"}]}]}],\"services\":[{\"instanceParams\":[],\"resources\":{\"vnfs\":[{\"modelInfo\":{\"modelName\":\"UbuntuSriovVF\",\"modelVersionId\":\"5b5d07f0-7449-4eec-95eb-531ddef18240\",\"modelInvariantUuid\":\"9ed17b82-11f3-44cc-a86f-32739360617e\",\"modelVersion\":\"1.0\",\"modelCustomizationId\":\"ae139d3d-b2ae-462c-b09d-c85bdc2e3073\",\"modelInstanceName\":\"UbuntuSriovVF0\"},\"cloudConfiguration\":{\"lcpCloudRegionId\":\"123\",\"tenantId\":\"e2710e84063b421fab08189818761d55\",\"cloudOwner\":\"cloudOwner\"},\"platform\":{\"platformName\":\"openstack\"},\"lineOfBusiness\":{\"lineOfBusinessName\":\"wireless\"},\"productFamilyId\":\"a9a77d5a-123e-4ca2-9eb9-0b015d2ee0fb\",\"instanceName\":\"vnf-instanceName\",\"instanceParams\":[{\"vnf-name\":\"vnf-vnf-name\",\"vnf_name\":\"UbuntuVNFName\"}],\"vfModules\":[{\"modelInfo\":{\"modelName\":\"Ubuntusriovvf..base..module-0\",\"modelVersionId\":\"f4ef24dd-7a4e-4eef-83b7-c58f2f3e36e4\",\"modelInvariantUuid\":\"719aab1e-c551-46e0-87e8-a78dcd7891da\",\"modelVersion\":\"1\",\"modelCustomizationId\":\"dea421a8-c1b8-4044-8ca1-58c30de3b315\"},\"instanceName\":\"lcm-demo-network-1\",\"instanceParams\":[{\"name\":\"lcm-demo-network-1\",\"cidr\":\"10.10.10.0/24\"}]},{\"modelInfo\":{\"modelName\":\"Ubuntusriovvf..ubuntu-vf-module..module-1\",\"modelVersionId\":\"112f2de4-4f09-4567-9de1-2d271cb6e164\",\"modelInvariantUuid\":\"ba6d2e11-4e82-4bb8-9d52-a2962a263a09\",\"modelVersion\":\"1\",\"modelCustomizationId\":\"7bc2649e-b96b-44ec-adfe-4a6167f3034e\"},\"instanceName\":\"lcm-demo-ubuntu-1\",\"instanceParams\":[{\"name\":\"lcm-demo-ubuntu-1\",\"network_mgmt\":\"networkMgmt\",\"key_name\":\"demo\",\"network_name\":\"lcm-demo-network-1\",\"image_name\":\"imageName\",\"flavor_name\":\"m1.small\"}]}]}]},\"modelInfo\":{\"modelVersion\":\"2.0\",\"modelVersionId\":\"5bc2b6b3-c9bb-49a1-89c8-4dac5b236d52\",\"modelInvariantId\":\"a316f8fa-c886-483f-801b-6663e35b836c\",\"modelCustomizationId\":\"cs1-svc-modelCustomizationId\",\"modelName\":\"GuilinLcmSVC\",\"modelType\":\"service\"},\"instanceName\":\"service1-instanceName\"},{\"instanceParams\":[],\"resources\":{\"vnfs\":[{\"modelInfo\":{\"modelName\":\"UbuntuSriovVF\",\"modelVersionId\":\"5b5d07f0-7449-4eec-95eb-531ddef18240\",\"modelInvariantUuid\":\"9ed17b82-11f3-44cc-a86f-32739360617e\",\"modelVersion\":\"1.0\",\"modelCustomizationId\":\"ae139d3d-b2ae-462c-b09d-c85bdc2e3073\",\"modelInstanceName\":\"UbuntuSriovVF0\"},\"cloudConfiguration\":{\"lcpCloudRegionId\":\"123\",\"tenantId\":\"e2710e84063b421fab08189818761d55\",\"cloudOwner\":\"cloudOwner\"},\"platform\":{\"platformName\":\"openstack\"},\"lineOfBusiness\":{\"lineOfBusinessName\":\"wireless\"},\"productFamilyId\":\"a9a77d5a-123e-4ca2-9eb9-0b015d2ee0fb\",\"instanceName\":\"vnf-instanceName\",\"instanceParams\":[{\"vnf-name\":\"vnf-vnf-name\",\"vnf_name\":\"UbuntuVNFName\"}],\"vfModules\":[{\"modelInfo\":{\"modelName\":\"Ubuntusriovvf..base..module-0\",\"modelVersionId\":\"f4ef24dd-7a4e-4eef-83b7-c58f2f3e36e4\",\"modelInvariantUuid\":\"719aab1e-c551-46e0-87e8-a78dcd7891da\",\"modelVersion\":\"1\",\"modelCustomizationId\":\"dea421a8-c1b8-4044-8ca1-58c30de3b315\"},\"instanceName\":\"lcm-demo-network-1\",\"instanceParams\":[{\"name\":\"lcm-demo-network-1\",\"cidr\":\"10.10.10.0/24\"}]},{\"modelInfo\":{\"modelName\":\"Ubuntusriovvf..ubuntu-vf-module..module-1\",\"modelVersionId\":\"112f2de4-4f09-4567-9de1-2d271cb6e164\",\"modelInvariantUuid\":\"ba6d2e11-4e82-4bb8-9d52-a2962a263a09\",\"modelVersion\":\"1\",\"modelCustomizationId\":\"7bc2649e-b96b-44ec-adfe-4a6167f3034e\"},\"instanceName\":\"lcm-demo-ubuntu-1\",\"instanceParams\":[{\"name\":\"lcm-demo-ubuntu-1\",\"network_mgmt\":\"networkMgmt\",\"key_name\":\"demo\",\"network_name\":\"lcm-demo-network-1\",\"image_name\":\"imageName\",\"flavor_name\":\"m1.small\"}]}]}]},\"modelInfo\":{\"modelVersion\":\"2.0\",\"modelVersionId\":\"5bc2b6b3-c9bb-49a1-89c8-4dac5b236d52\",\"modelInvariantId\":\"a316f8fa-c886-483f-801b-6663e35b836c\",\"modelCustomizationId\":\"cs1-svc-modelCustomizationId\",\"modelName\":\"GuilinLcmSVC\",\"modelType\":\"service\"},\"instanceName\":\"service2-instanceName\"}]},\"modelInfo\":{\"modelVersion\":\"2.0\",\"modelVersionId\":\"5bc2b6b3-c9bb-49a1-89c8-4dac5b236d52\",\"modelInvariantId\":\"a316f8fa-c886-483f-801b-6663e35b836c\",\"modelName\":\"GuilinLcmSVC\",\"modelType\":\"service\"}}}],\"aLaCarte\":false},\"project\":{\"projectName\":\"Project-UbuntuDemo\"},\"owningEntity\":{\"owningEntityId\":\"33a8b609-1cfe-4d19-8dc2-5b95b921de1e\",\"owningEntityName\":\"demo\"},\"modelInfo\":{\"modelVersion\":\"2.0\",\"modelVersionId\":\"5bc2b6b3-c9bb-49a1-89c8-4dac5b236d52\",\"modelInvariantId\":\"a316f8fa-c886-483f-801b-6663e35b836c\",\"modelName\":\"GuilinLcmSVC\",\"modelType\":\"service\"}}}";
+
+ ObjectMapper mapper = new ObjectMapper();
+ mapper.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false);
+
+ ServiceInstancesRequest request = mapper.readValue(incomingRequest, ServiceInstancesRequest.class);
+ userParamsExpected = request.getRequestDetails().getRequestParameters().getUserParams();
+ RequestContext context = new RequestContext();
+ RequestParameters parameters = new RequestParameters();
+ parameters.setUserParams(request.getRequestDetails().getRequestParameters().getUserParams());
+ context.setRequestParameters(parameters);
+ context.setProductFamilyId("FamilyId");
+ context.setSource("source");
+ context.setRequestorId("RequestOrId");
+ context.setAction("createInstance");
+
+ CloudRegion cloudRegion = new CloudRegion();
+ cloudRegion.setCloudOwner("CloudOwner");
+ cloudRegion.setLcpCloudRegionId("my-region-id");
+ cloudRegion.setTenantId("tenant-id");
+
+ Customer customer = new Customer();
+ customer.setGlobalCustomerId("GlobalCustomerId");
+ customer.setSubscriberName("SubscriberName");
+
+ ServiceInstance serviceInstance = new ServiceInstance();
+ OwningEntity owningEntity = new OwningEntity();
+ owningEntity.setOwningEntityId("owningEntityId");
+ owningEntity.setOwningEntityName("owningEntityName");
+ serviceInstance.setOwningEntity(owningEntity);
+
+ Project project = new Project();
+ project.setProjectName("projectName");
+ serviceInstance.setProject(project);
+
+ serviceInstance.setServiceInstanceId("serviceInstanceId");
+
+ GeneralBuildingBlock gbb = new GeneralBuildingBlock();
+ gbb.setCloudRegion(cloudRegion);
+ gbb.setCustomer(customer);
+ gbb.setRequestContext(context);
+ gbb.setServiceInstance(serviceInstance);
+ mockExecution = mock(BuildingBlockExecution.class);
+ doReturn(gbb).when(mockExecution).getGeneralBuildingBlock();
+ doReturn("CreateChildServiceBB").when(mockExecution).getFlowToBeCalled();
+ }
+
+ @Test
+ public void deleteChildServiceRequestBuilderTest() {
+ Service parent = new Service();
+ Service child = new Service();
+
+ ChildServiceRequestBuilder builder = ChildServiceRequestBuilder.getInstance(mockExecution, parent, child);
+ ServiceInstancesRequest sir = builder
+ .setParentRequestId(mockExecution.getGeneralBuildingBlock().getRequestContext().getMsoRequestId())
+ .setCorrelationId(UUID.randomUUID().toString()).setChildSvcInstanceId("childInstanceId").build();
+
+ Assert.assertEquals("childInstanceId", sir.getServiceInstanceId());
+ Assert.assertEquals("serviceInstanceId",
+ sir.getRequestDetails().getRelatedInstanceList()[0].getRelatedInstance().getInstanceId());
+ }
+
+ @Test
+ public void createChildServiceRequestBuilderTest() {
+
+ ServiceInstancesRequest sir = ChildServiceRequestBuilder.getInstance(mockExecution, "service1-instanceName")
+ .setParentRequestId(mockExecution.getGeneralBuildingBlock().getRequestContext().getMsoRequestId())
+ .setCorrelationId(UUID.randomUUID().toString()).setChildSvcInstanceId("childInstanceId").build();
+
+ Assert.assertEquals("childInstanceId", sir.getServiceInstanceId());
+
+ // modelInfo
+ ModelInfo modelInfo = sir.getRequestDetails().getModelInfo();
+ Assert.assertEquals("a316f8fa-c886-483f-801b-6663e35b836c", modelInfo.getModelInvariantId());
+ Assert.assertEquals(ModelType.service, modelInfo.getModelType());
+ Assert.assertEquals("GuilinLcmSVC", modelInfo.getModelName());
+ Assert.assertEquals("2.0", modelInfo.getModelVersion());
+ Assert.assertEquals("cs1-svc-modelCustomizationId", modelInfo.getModelCustomizationId());
+ Assert.assertEquals("5bc2b6b3-c9bb-49a1-89c8-4dac5b236d52", modelInfo.getModelVersionId());
+ Assert.assertEquals("5bc2b6b3-c9bb-49a1-89c8-4dac5b236d52", modelInfo.getModelUuid());
+ Assert.assertEquals("a316f8fa-c886-483f-801b-6663e35b836c", modelInfo.getModelInvariantUuid());
+
+ // requestInfo
+ RequestInfo requestInfo = sir.getRequestDetails().getRequestInfo();
+ Assert.assertNotNull(requestInfo.getCorrelator());
+ Assert.assertEquals("FamilyId", requestInfo.getProductFamilyId());
+ Assert.assertEquals("source", requestInfo.getSource());
+ Assert.assertEquals("service1-instanceName", requestInfo.getInstanceName());
+ Assert.assertEquals(false, requestInfo.getSuppressRollback());
+ Assert.assertEquals("RequestOrId", requestInfo.getRequestorId());
+
+ RelatedInstanceList[] relatedInstanceList = sir.getRequestDetails().getRelatedInstanceList();
+ Assert.assertEquals(1, relatedInstanceList.length);
+ RelatedInstance relatedInstance = relatedInstanceList[0].getRelatedInstance();
+ Assert.assertEquals("serviceInstanceId", relatedInstance.getInstanceId());
+ Assert.assertEquals(InstanceDirection.source, relatedInstance.getInstanceDirection());
+
+ ModelInfo parentModel = relatedInstance.getModelInfo();
+ Assert.assertEquals("a316f8fa-c886-483f-801b-6663e35b836c", parentModel.getModelInvariantId());
+ Assert.assertEquals(ModelType.service, parentModel.getModelType());
+ Assert.assertEquals("GuilinLcmSVC", parentModel.getModelName());
+ Assert.assertEquals("2.0", parentModel.getModelVersion());
+ Assert.assertEquals("5bc2b6b3-c9bb-49a1-89c8-4dac5b236d52", parentModel.getModelVersionId());
+ Assert.assertEquals("5bc2b6b3-c9bb-49a1-89c8-4dac5b236d52", parentModel.getModelUuid());
+ Assert.assertEquals("a316f8fa-c886-483f-801b-6663e35b836c", parentModel.getModelInvariantUuid());
+
+ SubscriberInfo subsciberInfo = sir.getRequestDetails().getSubscriberInfo();
+ Assert.assertEquals("GlobalCustomerId", subsciberInfo.getGlobalSubscriberId());
+ Assert.assertEquals("SubscriberName", subsciberInfo.getSubscriberName());
+
+ CloudConfiguration cloudConfiguration = sir.getRequestDetails().getCloudConfiguration();
+ Assert.assertEquals("tenant-id", cloudConfiguration.getTenantId());
+ Assert.assertEquals("CloudOwner", cloudConfiguration.getCloudOwner());
+ Assert.assertEquals("my-region-id", cloudConfiguration.getLcpCloudRegionId());
+
+ org.onap.so.serviceinstancebeans.RequestParameters requestParameters =
+ sir.getRequestDetails().getRequestParameters();
+ Assert.assertEquals(2, requestParameters.getUserParams().size());
+ Assert.assertEquals(userParamsExpected.get(0), requestParameters.getUserParams().get(0));
+
+ ObjectMapper mapper = new ObjectMapper();
+ mapper.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false);
+
+ try {
+ String expectedChildService =
+ mapper.writeValueAsString(getChildService(userParamsExpected, "service1-instanceName"));
+ String actualChildService =
+ mapper.writeValueAsString(requestParameters.getUserParams().get(1).get("service"));
+ Assert.assertEquals(expectedChildService, actualChildService);
+ } catch (Exception e) {
+ Assert.fail();
+ }
+
+ org.onap.so.serviceinstancebeans.Project project = sir.getRequestDetails().getProject();
+ Assert.assertEquals("projectName", project.getProjectName());
+
+ org.onap.so.serviceinstancebeans.OwningEntity owningEntity = sir.getRequestDetails().getOwningEntity();
+ Assert.assertEquals("owningEntityId", owningEntity.getOwningEntityId());
+ Assert.assertEquals("owningEntityName", owningEntity.getOwningEntityName());
+ }
+
+ @Test
+ public void childServiceCloudConfigurationRequestBuilderTest() throws IOException {
+ String incomingRequest =
+ "{\"requestDetails\":{\"subscriberInfo\":{\"globalSubscriberId\":\"ubuntu-customer\"},\"requestInfo\":{\"suppressRollback\":false,\"instanceName\":\"onap-test-parent-child-service\",\"productFamilyId\":\"a9a77d5a-123e-4ca2-9eb9-0b015d2ee0fb\",\"requestorId\":\"portal\",\"source\":\"postman\"},\"cloudConfiguration\":{\"lcpCloudRegionId\":\"215\",\"tenantId\":\"e2710e84063b421fab08189818761d55\",\"cloudOwner\":\"iaas\"},\"requestParameters\":{\"subscriptionServiceType\":\"ubuntu\",\"userParams\":[{\"Homing_Solution\":\"none\"},{\"service\":{\"instanceParams\":[],\"resources\":{\"services\":[{\"instanceParams\":[],\"resources\":{},\"modelInfo\":{\"modelVersion\":\"3.0\",\"modelVersionId\":\"872efe6d-c787-4caf-b6f8-3234a7bfc5cf\",\"modelInvariantId\":\"a316f8fa-c886-483f-801b-6663e35b836c\",\"modelName\":\"GuilinLcmSVC\",\"modelType\":\"service\"},\"instanceName\":\"service1-instanceName-child\",\"cloudConfiguration\":{\"lcpCloudRegionId\":\"test\",\"tenantId\":\"1234567890\",\"cloudOwner\":\"demo\"}},{\"instanceParams\":[],\"resources\":{},\"modelInfo\":{\"modelVersion\":\"3.0\",\"modelVersionId\":\"872efe6d-c787-4caf-b6f8-3234a7bfc5cf\",\"modelInvariantId\":\"a316f8fa-c886-483f-801b-6663e35b836c\",\"modelName\":\"GuilinLcmSVC\",\"modelType\":\"service\"},\"instanceName\":\"service2-instanceName-child\"}]},\"modelInfo\":{\"modelVersion\":\"3.0\",\"modelVersionId\":\"872efe6d-c787-4caf-b6f8-3234a7bfc5cf\",\"modelInvariantId\":\"a316f8fa-c886-483f-801b-6663e35b836c\",\"modelName\":\"GuilinLcmSVC\",\"modelType\":\"service\"}}}],\"aLaCarte\":false},\"project\":{\"projectName\":\"Project-UbuntuDemo\"},\"owningEntity\":{\"owningEntityId\":\"33a8b609-1cfe-4d19-8dc2-5b95b921de1e\",\"owningEntityName\":\"seb\"},\"modelInfo\":{\"modelVersion\":\"3.0\",\"modelVersionId\":\"872efe6d-c787-4caf-b6f8-3234a7bfc5cf\",\"modelInvariantId\":\"a316f8fa-c886-483f-801b-6663e35b836c\",\"modelName\":\"GuilinLcmSVC\",\"modelType\":\"service\"}}}";
+
+ ObjectMapper mapper = new ObjectMapper();
+ mapper.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false);
+
+ ServiceInstancesRequest request = mapper.readValue(incomingRequest, ServiceInstancesRequest.class);
+
+ RequestContext context = new RequestContext();
+ RequestParameters parameters = new RequestParameters();
+ parameters.setUserParams(request.getRequestDetails().getRequestParameters().getUserParams());
+ context.setRequestParameters(parameters);
+ context.setProductFamilyId("FamilyId");
+ context.setSource("source");
+ context.setRequestorId("RequestOrId");
+ context.setAction("createInstance");
+
+ CloudRegion cloudRegion = new CloudRegion();
+ cloudRegion.setCloudOwner("CloudOwner");
+ cloudRegion.setLcpCloudRegionId("my-region-id");
+ cloudRegion.setTenantId("tenant-id");
+
+ ServiceInstance serviceInstance = new ServiceInstance();
+ OwningEntity owningEntity = new OwningEntity();
+ owningEntity.setOwningEntityId("owningEntityId");
+ owningEntity.setOwningEntityName("owningEntityName");
+ serviceInstance.setOwningEntity(owningEntity);
+
+ GeneralBuildingBlock gbb = new GeneralBuildingBlock();
+ gbb.setCloudRegion(cloudRegion);
+ gbb.setRequestContext(context);
+ gbb.setServiceInstance(serviceInstance);
+ mockExecution = mock(BuildingBlockExecution.class);
+ doReturn(gbb).when(mockExecution).getGeneralBuildingBlock();
+ doReturn("CreateChildServiceBB").when(mockExecution).getFlowToBeCalled();
+
+ ServiceInstancesRequest sir = ChildServiceRequestBuilder
+ .getInstance(mockExecution, "service1-instanceName-child")
+ .setParentRequestId(mockExecution.getGeneralBuildingBlock().getRequestContext().getMsoRequestId())
+ .setCorrelationId(UUID.randomUUID().toString()).setChildSvcInstanceId("childInstanceId").build();
+
+ Assert.assertEquals("childInstanceId", sir.getServiceInstanceId());
+
+ CloudConfiguration cloudConfiguration = sir.getRequestDetails().getCloudConfiguration();
+ Assert.assertEquals("1234567890", cloudConfiguration.getTenantId());
+ Assert.assertEquals("demo", cloudConfiguration.getCloudOwner());
+ Assert.assertEquals("test", cloudConfiguration.getLcpCloudRegionId());
+ }
+
+ private Service getChildService(List<Map<String, Object>> userParams, String serviceInstanceName)
+ throws IOException {
+ String USERPARAMSERVICE = "service";
+ for (Map<String, Object> params : userParams) {
+ if (params.containsKey(USERPARAMSERVICE)) {
+ ObjectMapper obj = new ObjectMapper();
+ String input = obj.writeValueAsString(params.get(USERPARAMSERVICE));
+ Service validate = obj.readValue(input, Service.class);
+ if (validate.getResources().getServices() != null) {
+ for (Service service : validate.getResources().getServices()) {
+ if (serviceInstanceName.equals(service.getInstanceName())) {
+ return service;
+ }
+ }
+ }
+ }
+ }
+ return null;
+ }
+}
diff --git a/bpmn/so-bpmn-tasks/src/test/java/org/onap/so/bpmn/infrastructure/service/composition/CreateChildServiceBBTest.java b/bpmn/so-bpmn-tasks/src/test/java/org/onap/so/bpmn/infrastructure/service/composition/CreateChildServiceBBTest.java
new file mode 100644
index 0000000000..6392d25998
--- /dev/null
+++ b/bpmn/so-bpmn-tasks/src/test/java/org/onap/so/bpmn/infrastructure/service/composition/CreateChildServiceBBTest.java
@@ -0,0 +1,145 @@
+package org.onap.so.bpmn.infrastructure.service.composition;
+
+import com.fasterxml.jackson.databind.DeserializationFeature;
+import com.fasterxml.jackson.databind.ObjectMapper;
+import org.junit.Before;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.onap.logging.filter.base.ONAPComponentsList;
+import org.onap.so.bpmn.common.BuildingBlockExecution;
+import org.onap.so.bpmn.infrastructure.decisionpoint.impl.buildingblock.MockControllerBB;
+import org.onap.so.bpmn.servicedecomposition.bbobjects.CloudRegion;
+import org.onap.so.bpmn.servicedecomposition.bbobjects.Customer;
+import org.onap.so.bpmn.servicedecomposition.bbobjects.OwningEntity;
+import org.onap.so.bpmn.servicedecomposition.bbobjects.Project;
+import org.onap.so.bpmn.servicedecomposition.bbobjects.ServiceInstance;
+import org.onap.so.bpmn.servicedecomposition.entities.GeneralBuildingBlock;
+import org.onap.so.bpmn.servicedecomposition.entities.ResourceKey;
+import org.onap.so.bpmn.servicedecomposition.generalobjects.RequestContext;
+import org.onap.so.bpmn.servicedecomposition.generalobjects.RequestParameters;
+import org.onap.so.client.exception.ExceptionBuilder;
+import org.onap.so.client.orchestration.ApiHandlerClient;
+import org.onap.so.client.orchestration.ApiHandlerClientException;
+import org.onap.so.serviceinstancebeans.RequestDetails;
+import org.onap.so.serviceinstancebeans.RequestInfo;
+import org.onap.so.serviceinstancebeans.RequestReferences;
+import org.onap.so.serviceinstancebeans.ServiceInstancesRequest;
+import org.onap.so.serviceinstancebeans.ServiceInstancesResponse;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.boot.test.mock.mockito.MockBean;
+import org.springframework.test.context.ContextConfiguration;
+import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;
+import java.io.IOException;
+import java.util.HashMap;
+import java.util.Map;
+import static org.mockito.ArgumentMatchers.any;
+import static org.mockito.ArgumentMatchers.anyInt;
+import static org.mockito.ArgumentMatchers.anyString;
+import static org.mockito.Mockito.verify;
+import static org.mockito.Mockito.when;
+import static org.onap.so.bpmn.infrastructure.service.composition.ServiceCompositionConstants.CHILD_SVC_INSTANCE_ID;
+import static org.onap.so.bpmn.infrastructure.service.composition.ServiceCompositionConstants.CHILD_SVC_REQ_CORRELATION_ID;
+import static org.onap.so.bpmn.infrastructure.service.composition.ServiceCompositionConstants.CHILD_SVC_REQ_ID;
+import static org.onap.so.bpmn.infrastructure.service.composition.ServiceCompositionConstants.CHILD_SVC_REQ_PAYLOAD;
+
+@RunWith(SpringJUnit4ClassRunner.class)
+@ContextConfiguration(classes = {CreateChildServiceBB.class, MockControllerBB.class, ExceptionBuilder.class})
+public class CreateChildServiceBBTest {
+
+ @Autowired
+ private CreateChildServiceBB createChildServiceBB;
+
+ @MockBean
+ private BuildingBlockExecution execution;
+
+ @MockBean
+ private ApiHandlerClient apiHandlerClient;
+
+ @MockBean
+ private ExceptionBuilder exceptionBuilder;
+
+ @Before
+ public void setUp() throws IOException, ApiHandlerClientException {
+ String incomingRequest =
+ "{\"requestDetails\":{\"subscriberInfo\":{\"globalSubscriberId\":\"ubuntu-customer\"},\"requestInfo\":{\"suppressRollback\":false,\"instanceName\":\"LcmDemo\",\"productFamilyId\":\"a9a77d5a-123e-4ca2-9eb9-0b015d2ee0fb\",\"requestorId\":\"portal\",\"source\":\"postman\"},\"cloudConfiguration\":{\"lcpCloudRegionId\":\"123\",\"tenantId\":\"e2710e84063b421fab08189818761d55\",\"cloudOwner\":\"cloudOwner\"},\"requestParameters\":{\"subscriptionServiceType\":\"ubuntu\",\"userParams\":[{\"Homing_Solution\":\"none\"},{\"service\":{\"instanceParams\":[],\"resources\":{\"vnfs\":[{\"modelInfo\":{\"modelName\":\"UbuntuSriovVF\",\"modelVersionId\":\"5b5d07f0-7449-4eec-95eb-531ddef18240\",\"modelInvariantUuid\":\"9ed17b82-11f3-44cc-a86f-32739360617e\",\"modelVersion\":\"1.0\",\"modelCustomizationId\":\"ae139d3d-b2ae-462c-b09d-c85bdc2e3073\",\"modelInstanceName\":\"UbuntuSriovVF0\"},\"cloudConfiguration\":{\"lcpCloudRegionId\":\"123\",\"tenantId\":\"e2710e84063b421fab08189818761d55\",\"cloudOwner\":\"cloudOwner\"},\"platform\":{\"platformName\":\"openstack\"},\"lineOfBusiness\":{\"lineOfBusinessName\":\"wireless\"},\"productFamilyId\":\"a9a77d5a-123e-4ca2-9eb9-0b015d2ee0fb\",\"instanceName\":\"vnf-instanceName\",\"instanceParams\":[{\"vnf-name\":\"vnf-vnf-name\",\"vnf_name\":\"UbuntuVNFName\"}],\"vfModules\":[{\"modelInfo\":{\"modelName\":\"Ubuntusriovvf..base..module-0\",\"modelVersionId\":\"f4ef24dd-7a4e-4eef-83b7-c58f2f3e36e4\",\"modelInvariantUuid\":\"719aab1e-c551-46e0-87e8-a78dcd7891da\",\"modelVersion\":\"1\",\"modelCustomizationId\":\"dea421a8-c1b8-4044-8ca1-58c30de3b315\"},\"instanceName\":\"lcm-demo-network-1\",\"instanceParams\":[{\"name\":\"lcm-demo-network-1\",\"cidr\":\"10.10.10.0/24\"}]},{\"modelInfo\":{\"modelName\":\"Ubuntusriovvf..ubuntu-vf-module..module-1\",\"modelVersionId\":\"112f2de4-4f09-4567-9de1-2d271cb6e164\",\"modelInvariantUuid\":\"ba6d2e11-4e82-4bb8-9d52-a2962a263a09\",\"modelVersion\":\"1\",\"modelCustomizationId\":\"7bc2649e-b96b-44ec-adfe-4a6167f3034e\"},\"instanceName\":\"lcm-demo-ubuntu-1\",\"instanceParams\":[{\"name\":\"lcm-demo-ubuntu-1\",\"network_mgmt\":\"networkMgmt\",\"key_name\":\"demo\",\"network_name\":\"lcm-demo-network-1\",\"image_name\":\"imageName\",\"flavor_name\":\"m1.small\"}]}]}],\"services\":[{\"instanceParams\":[],\"resources\":{\"vnfs\":[{\"modelInfo\":{\"modelName\":\"UbuntuSriovVF\",\"modelVersionId\":\"5b5d07f0-7449-4eec-95eb-531ddef18240\",\"modelInvariantUuid\":\"9ed17b82-11f3-44cc-a86f-32739360617e\",\"modelVersion\":\"1.0\",\"modelCustomizationId\":\"ae139d3d-b2ae-462c-b09d-c85bdc2e3073\",\"modelInstanceName\":\"UbuntuSriovVF0\"},\"cloudConfiguration\":{\"lcpCloudRegionId\":\"123\",\"tenantId\":\"e2710e84063b421fab08189818761d55\",\"cloudOwner\":\"cloudOwner\"},\"platform\":{\"platformName\":\"openstack\"},\"lineOfBusiness\":{\"lineOfBusinessName\":\"wireless\"},\"productFamilyId\":\"a9a77d5a-123e-4ca2-9eb9-0b015d2ee0fb\",\"instanceName\":\"vnf-instanceName\",\"instanceParams\":[{\"vnf-name\":\"vnf-vnf-name\",\"vnf_name\":\"UbuntuVNFName\"}],\"vfModules\":[{\"modelInfo\":{\"modelName\":\"Ubuntusriovvf..base..module-0\",\"modelVersionId\":\"f4ef24dd-7a4e-4eef-83b7-c58f2f3e36e4\",\"modelInvariantUuid\":\"719aab1e-c551-46e0-87e8-a78dcd7891da\",\"modelVersion\":\"1\",\"modelCustomizationId\":\"dea421a8-c1b8-4044-8ca1-58c30de3b315\"},\"instanceName\":\"lcm-demo-network-1\",\"instanceParams\":[{\"name\":\"lcm-demo-network-1\",\"cidr\":\"10.10.10.0/24\"}]},{\"modelInfo\":{\"modelName\":\"Ubuntusriovvf..ubuntu-vf-module..module-1\",\"modelVersionId\":\"112f2de4-4f09-4567-9de1-2d271cb6e164\",\"modelInvariantUuid\":\"ba6d2e11-4e82-4bb8-9d52-a2962a263a09\",\"modelVersion\":\"1\",\"modelCustomizationId\":\"7bc2649e-b96b-44ec-adfe-4a6167f3034e\"},\"instanceName\":\"lcm-demo-ubuntu-1\",\"instanceParams\":[{\"name\":\"lcm-demo-ubuntu-1\",\"network_mgmt\":\"networkMgmt\",\"key_name\":\"demo\",\"network_name\":\"lcm-demo-network-1\",\"image_name\":\"imageName\",\"flavor_name\":\"m1.small\"}]}]}]},\"modelInfo\":{\"modelVersion\":\"2.0\",\"modelVersionId\":\"5bc2b6b3-c9bb-49a1-89c8-4dac5b236d52\",\"modelInvariantId\":\"a316f8fa-c886-483f-801b-6663e35b836c\",\"modelCustomizationId\":\"cs1-svc-modelCustomizationId\",\"modelName\":\"GuilinLcmSVC\",\"modelType\":\"service\"},\"instanceName\":\"service1-instanceName\"},{\"instanceParams\":[],\"resources\":{\"vnfs\":[{\"modelInfo\":{\"modelName\":\"UbuntuSriovVF\",\"modelVersionId\":\"5b5d07f0-7449-4eec-95eb-531ddef18240\",\"modelInvariantUuid\":\"9ed17b82-11f3-44cc-a86f-32739360617e\",\"modelVersion\":\"1.0\",\"modelCustomizationId\":\"ae139d3d-b2ae-462c-b09d-c85bdc2e3073\",\"modelInstanceName\":\"UbuntuSriovVF0\"},\"cloudConfiguration\":{\"lcpCloudRegionId\":\"123\",\"tenantId\":\"e2710e84063b421fab08189818761d55\",\"cloudOwner\":\"cloudOwner\"},\"platform\":{\"platformName\":\"openstack\"},\"lineOfBusiness\":{\"lineOfBusinessName\":\"wireless\"},\"productFamilyId\":\"a9a77d5a-123e-4ca2-9eb9-0b015d2ee0fb\",\"instanceName\":\"vnf-instanceName\",\"instanceParams\":[{\"vnf-name\":\"vnf-vnf-name\",\"vnf_name\":\"UbuntuVNFName\"}],\"vfModules\":[{\"modelInfo\":{\"modelName\":\"Ubuntusriovvf..base..module-0\",\"modelVersionId\":\"f4ef24dd-7a4e-4eef-83b7-c58f2f3e36e4\",\"modelInvariantUuid\":\"719aab1e-c551-46e0-87e8-a78dcd7891da\",\"modelVersion\":\"1\",\"modelCustomizationId\":\"dea421a8-c1b8-4044-8ca1-58c30de3b315\"},\"instanceName\":\"lcm-demo-network-1\",\"instanceParams\":[{\"name\":\"lcm-demo-network-1\",\"cidr\":\"10.10.10.0/24\"}]},{\"modelInfo\":{\"modelName\":\"Ubuntusriovvf..ubuntu-vf-module..module-1\",\"modelVersionId\":\"112f2de4-4f09-4567-9de1-2d271cb6e164\",\"modelInvariantUuid\":\"ba6d2e11-4e82-4bb8-9d52-a2962a263a09\",\"modelVersion\":\"1\",\"modelCustomizationId\":\"7bc2649e-b96b-44ec-adfe-4a6167f3034e\"},\"instanceName\":\"lcm-demo-ubuntu-1\",\"instanceParams\":[{\"name\":\"lcm-demo-ubuntu-1\",\"network_mgmt\":\"networkMgmt\",\"key_name\":\"demo\",\"network_name\":\"lcm-demo-network-1\",\"image_name\":\"imageName\",\"flavor_name\":\"m1.small\"}]}]}]},\"modelInfo\":{\"modelVersion\":\"2.0\",\"modelVersionId\":\"5bc2b6b3-c9bb-49a1-89c8-4dac5b236d52\",\"modelInvariantId\":\"a316f8fa-c886-483f-801b-6663e35b836c\",\"modelCustomizationId\":\"cs1-svc-modelCustomizationId\",\"modelName\":\"GuilinLcmSVC\",\"modelType\":\"service\"},\"instanceName\":\"service2-instanceName\"}]},\"modelInfo\":{\"modelVersion\":\"2.0\",\"modelVersionId\":\"5bc2b6b3-c9bb-49a1-89c8-4dac5b236d52\",\"modelInvariantId\":\"a316f8fa-c886-483f-801b-6663e35b836c\",\"modelName\":\"GuilinLcmSVC\",\"modelType\":\"service\"}}}],\"aLaCarte\":false},\"project\":{\"projectName\":\"Project-UbuntuDemo\"},\"owningEntity\":{\"owningEntityId\":\"33a8b609-1cfe-4d19-8dc2-5b95b921de1e\",\"owningEntityName\":\"demo\"},\"modelInfo\":{\"modelVersion\":\"2.0\",\"modelVersionId\":\"5bc2b6b3-c9bb-49a1-89c8-4dac5b236d52\",\"modelInvariantId\":\"a316f8fa-c886-483f-801b-6663e35b836c\",\"modelName\":\"GuilinLcmSVC\",\"modelType\":\"service\"}}}";
+
+ ObjectMapper mapper = new ObjectMapper();
+ mapper.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false);
+
+ ServiceInstancesRequest request = mapper.readValue(incomingRequest, ServiceInstancesRequest.class);
+ RequestContext context = new RequestContext();
+ RequestParameters parameters = new RequestParameters();
+ parameters.setUserParams(request.getRequestDetails().getRequestParameters().getUserParams());
+ context.setRequestParameters(parameters);
+ context.setProductFamilyId("FamilyId");
+ context.setSource("source");
+ context.setRequestorId("RequestOrId");
+
+ CloudRegion cloudRegion = new CloudRegion();
+ cloudRegion.setCloudOwner("CloudOwner");
+ cloudRegion.setLcpCloudRegionId("my-region-id");
+ cloudRegion.setTenantId("tenant-id");
+
+ Customer customer = new Customer();
+ customer.setGlobalCustomerId("GlobalCustomerId");
+ customer.setSubscriberName("SubscriberName");
+
+ ServiceInstance serviceInstance = new ServiceInstance();
+ OwningEntity owningEntity = new OwningEntity();
+ owningEntity.setOwningEntityId("owningEntityId");
+ owningEntity.setOwningEntityName("owningEntityName");
+ serviceInstance.setOwningEntity(owningEntity);
+
+ Project project = new Project();
+ project.setProjectName("projectName");
+ serviceInstance.setProject(project);
+
+ serviceInstance.setServiceInstanceId("serviceInstanceId");
+
+ GeneralBuildingBlock gbb = new GeneralBuildingBlock();
+ gbb.setCloudRegion(cloudRegion);
+ gbb.setCustomer(customer);
+ gbb.setRequestContext(context);
+ gbb.setServiceInstance(serviceInstance);
+
+ Map<ResourceKey, String> map = new HashMap<>();
+ map.put(ResourceKey.CHILD_SERVICE_INSTANCE_NAME, "service1-instanceName");
+
+ when(execution.getGeneralBuildingBlock()).thenReturn(gbb);
+ when(execution.getLookupMap()).thenReturn(map);
+
+ ServiceInstancesResponse response = new ServiceInstancesResponse();
+ response.setRequestReferences(new RequestReferences());
+ response.getRequestReferences().setInstanceId("instanceId");
+ response.getRequestReferences().setRequestId("requestId");
+
+ when(apiHandlerClient.createServiceInstance(any())).thenReturn(response);
+ }
+
+ @Test
+ public void buildRequestTest() {
+ createChildServiceBB.buildRequest(execution);
+ }
+
+ @Test
+ public void sendRequestTest() throws Exception {
+ ServiceInstancesRequest sir = new ServiceInstancesRequest();
+ RequestDetails details = new RequestDetails();
+ details.setRequestInfo(new RequestInfo());
+ details.getRequestInfo().setCorrelator("correlator");
+ sir.setRequestDetails(details);
+
+ when(execution.getVariable(CHILD_SVC_REQ_PAYLOAD)).thenReturn(sir);
+ createChildServiceBB.sendRequest(execution);
+ verify(execution).setVariable(CHILD_SVC_REQ_ID, "requestId");
+ verify(execution).setVariable(CHILD_SVC_INSTANCE_ID, "instanceId");
+ verify(execution).setVariable(CHILD_SVC_REQ_CORRELATION_ID, "correlator");
+ }
+
+ @Test
+ public void handleFailureTest() {
+ createChildServiceBB.handleFailure(execution);
+ verify(exceptionBuilder).buildAndThrowWorkflowException(any(BuildingBlockExecution.class), anyInt(),
+ anyString(), any(ONAPComponentsList.class));
+ }
+}
diff --git a/bpmn/so-bpmn-tasks/src/test/java/org/onap/so/bpmn/infrastructure/workflow/tasks/WorkflowActionBBFailureTest.java b/bpmn/so-bpmn-tasks/src/test/java/org/onap/so/bpmn/infrastructure/workflow/tasks/WorkflowActionBBFailureTest.java
index 7f44c97f59..aeef976fb4 100644
--- a/bpmn/so-bpmn-tasks/src/test/java/org/onap/so/bpmn/infrastructure/workflow/tasks/WorkflowActionBBFailureTest.java
+++ b/bpmn/so-bpmn-tasks/src/test/java/org/onap/so/bpmn/infrastructure/workflow/tasks/WorkflowActionBBFailureTest.java
@@ -26,9 +26,19 @@ import static org.mockito.ArgumentMatchers.anyString;
import static org.mockito.ArgumentMatchers.isA;
import static org.mockito.Mockito.doNothing;
import static org.mockito.Mockito.doReturn;
+import static org.mockito.Mockito.mock;
+import static org.mockito.Mockito.verify;
import static org.mockito.Mockito.when;
+import static org.onap.so.bpmn.infrastructure.service.composition.ServiceCompositionConstants.CHILD_SVC_REQ_CORRELATION_ID;
+import static org.onap.so.bpmn.infrastructure.service.composition.ServiceCompositionConstants.CHILD_SVC_REQ_ERROR;
+import static org.onap.so.bpmn.infrastructure.service.composition.ServiceCompositionConstants.CHILD_SVC_REQ_STATUS;
+import static org.onap.so.bpmn.infrastructure.service.composition.ServiceCompositionConstants.IS_CHILD_PROCESS;
+import static org.onap.so.bpmn.infrastructure.service.composition.ServiceCompositionConstants.PARENT_CORRELATION_ID;
import java.sql.Timestamp;
+import org.camunda.bpm.engine.ProcessEngineServices;
+import org.camunda.bpm.engine.RuntimeService;
import org.camunda.bpm.engine.delegate.DelegateExecution;
+import org.camunda.bpm.engine.runtime.MessageCorrelationBuilder;
import org.camunda.bpm.extension.mockito.delegate.DelegateExecutionFake;
import org.junit.Before;
import org.junit.Rule;
@@ -271,4 +281,125 @@ public class WorkflowActionBBFailureTest extends BaseTaskTest {
Mockito.verify(reqMock, Mockito.times(1)).setLastModifiedBy("CamundaBPMN");
Mockito.verify(reqMock, Mockito.times(1)).setEndTime(any(Timestamp.class));
}
+
+ @Test
+ public void invokeSendMessageForChildServiceRollBackCompletedSuccessfully() {
+ String parentCorrelationId = "parentCorrelationId";
+ DelegateExecution mockExecution = Mockito.mock(DelegateExecution.class);
+ ProcessEngineServices processEngineServices = mock(ProcessEngineServices.class);
+ RuntimeService runtimeService = mock(RuntimeService.class);
+ MessageCorrelationBuilder messageCorrelationBuilder = mock(MessageCorrelationBuilder.class);
+ when(processEngineServices.getRuntimeService()).thenReturn(runtimeService);
+ when(runtimeService.createMessageCorrelation(anyString())).thenReturn(messageCorrelationBuilder);
+ when(messageCorrelationBuilder.setVariable(CHILD_SVC_REQ_STATUS, "FAILED"))
+ .thenReturn(messageCorrelationBuilder);
+ when(messageCorrelationBuilder.setVariable(CHILD_SVC_REQ_ERROR, "Rollback has been completed successfully."))
+ .thenReturn(messageCorrelationBuilder);
+ when(messageCorrelationBuilder.processInstanceVariableEquals(CHILD_SVC_REQ_CORRELATION_ID, parentCorrelationId))
+ .thenReturn(messageCorrelationBuilder);
+
+ when(mockExecution.getVariable(PARENT_CORRELATION_ID)).thenReturn(parentCorrelationId);
+ when(mockExecution.getVariable("mso-request-id")).thenReturn("123");
+ when(mockExecution.getVariable("isRollbackComplete")).thenReturn(true);
+ when(mockExecution.getVariable("isRollback")).thenReturn(true);
+ when(mockExecution.getVariable(IS_CHILD_PROCESS)).thenReturn(true);
+
+ when(mockExecution.getProcessEngineServices()).thenReturn(processEngineServices);
+
+ InfraActiveRequests req = new InfraActiveRequests();
+ WorkflowException wfe = new WorkflowException("processKey123", 1, "error in rollback");
+ when(mockExecution.getVariable("WorkflowException")).thenReturn(wfe);
+ doReturn(req).when(requestsDbClient).getInfraActiveRequestbyRequestId("123");
+ doNothing().when(requestsDbClient).updateInfraActiveRequests(isA(InfraActiveRequests.class));
+ workflowActionBBFailure.updateRequestStatusToFailed(mockExecution);
+
+ verify(messageCorrelationBuilder).setVariable(CHILD_SVC_REQ_STATUS, "FAILED");
+ verify(messageCorrelationBuilder).setVariable(CHILD_SVC_REQ_ERROR, "Rollback has been completed successfully.");
+ verify(messageCorrelationBuilder).processInstanceVariableEquals(CHILD_SVC_REQ_CORRELATION_ID,
+ parentCorrelationId);
+ }
+
+ @Test
+ public void invokeSendMessageForChildServiceRollBackFailure() {
+ String parentCorrelationId = "parentCorrelationId";
+ DelegateExecution mockExecution = Mockito.mock(DelegateExecution.class);
+ ProcessEngineServices processEngineServices = mock(ProcessEngineServices.class);
+ RuntimeService runtimeService = mock(RuntimeService.class);
+ MessageCorrelationBuilder messageCorrelationBuilder = mock(MessageCorrelationBuilder.class);
+ when(processEngineServices.getRuntimeService()).thenReturn(runtimeService);
+ when(runtimeService.createMessageCorrelation(anyString())).thenReturn(messageCorrelationBuilder);
+ when(messageCorrelationBuilder.setVariable(CHILD_SVC_REQ_STATUS, "FAILED"))
+ .thenReturn(messageCorrelationBuilder);
+ when(messageCorrelationBuilder.setVariable(CHILD_SVC_REQ_ERROR, "error in rollback"))
+ .thenReturn(messageCorrelationBuilder);
+ when(messageCorrelationBuilder.processInstanceVariableEquals(PARENT_CORRELATION_ID, parentCorrelationId))
+ .thenReturn(messageCorrelationBuilder);
+
+ when(mockExecution.getVariable(PARENT_CORRELATION_ID)).thenReturn(parentCorrelationId);
+ when(mockExecution.getVariable("mso-request-id")).thenReturn("123");
+ when(mockExecution.getVariable("isRollbackComplete")).thenReturn(false);
+ when(mockExecution.getVariable("isRollback")).thenReturn(true);
+ when(mockExecution.getVariable(IS_CHILD_PROCESS)).thenReturn(true);
+
+ when(mockExecution.getProcessEngineServices()).thenReturn(processEngineServices);
+
+ InfraActiveRequests req = new InfraActiveRequests();
+ doReturn(req).when(requestsDbClient).getInfraActiveRequestbyRequestId("123");
+ doNothing().when(requestsDbClient).updateInfraActiveRequests(isA(InfraActiveRequests.class));
+ workflowActionBBFailure.updateRequestStatusToFailed(mockExecution);
+
+ verify(messageCorrelationBuilder).setVariable(CHILD_SVC_REQ_STATUS, "FAILED");
+ verify(messageCorrelationBuilder).setVariable(CHILD_SVC_REQ_ERROR,
+ "Failed to determine rollback error message.");
+
+ WorkflowException wfe = new WorkflowException("processKey123", 1, "error in rollback");
+ when(mockExecution.getVariable("WorkflowException")).thenReturn(wfe);
+ workflowActionBBFailure.updateRequestStatusToFailed(mockExecution);
+ verify(messageCorrelationBuilder).setVariable(CHILD_SVC_REQ_ERROR, "error in rollback");
+ verify(messageCorrelationBuilder).processInstanceVariableEquals(CHILD_SVC_REQ_CORRELATION_ID,
+ parentCorrelationId);
+ }
+
+ @Test
+ public void invokeSendMessageForChildServiceNoRollBack() {
+ String parentCorrelationId = "parentCorrelationId";
+ DelegateExecution mockExecution = Mockito.mock(DelegateExecution.class);
+ ProcessEngineServices processEngineServices = mock(ProcessEngineServices.class);
+ RuntimeService runtimeService = mock(RuntimeService.class);
+ MessageCorrelationBuilder messageCorrelationBuilder = mock(MessageCorrelationBuilder.class);
+ when(processEngineServices.getRuntimeService()).thenReturn(runtimeService);
+ when(runtimeService.createMessageCorrelation(anyString())).thenReturn(messageCorrelationBuilder);
+ when(messageCorrelationBuilder.setVariable(CHILD_SVC_REQ_STATUS, "FAILED"))
+ .thenReturn(messageCorrelationBuilder);
+ when(messageCorrelationBuilder.setVariable(CHILD_SVC_REQ_ERROR, "error in rollback"))
+ .thenReturn(messageCorrelationBuilder);
+ when(messageCorrelationBuilder.processInstanceVariableEquals(PARENT_CORRELATION_ID, parentCorrelationId))
+ .thenReturn(messageCorrelationBuilder);
+
+ when(mockExecution.getVariable(PARENT_CORRELATION_ID)).thenReturn(parentCorrelationId);
+ when(mockExecution.getVariable("mso-request-id")).thenReturn("123");
+ when(mockExecution.getVariable("isRollbackComplete")).thenReturn(false);
+ when(mockExecution.getVariable("isRollback")).thenReturn(false);
+ when(mockExecution.getVariable(IS_CHILD_PROCESS)).thenReturn(true);
+
+ when(mockExecution.getProcessEngineServices()).thenReturn(processEngineServices);
+
+ InfraActiveRequests req = new InfraActiveRequests();
+ doReturn(req).when(requestsDbClient).getInfraActiveRequestbyRequestId("123");
+ doNothing().when(requestsDbClient).updateInfraActiveRequests(isA(InfraActiveRequests.class));
+ workflowActionBBFailure.updateRequestStatusToFailed(mockExecution);
+
+ verify(messageCorrelationBuilder).setVariable(CHILD_SVC_REQ_STATUS, "FAILED");
+ verify(messageCorrelationBuilder).setVariable(CHILD_SVC_REQ_ERROR, "Failed to determine error message");
+
+ WorkflowException wfe = new WorkflowException("processKey123", 1, "error in rollback");
+ when(mockExecution.getVariable("WorkflowException")).thenReturn(wfe);
+ workflowActionBBFailure.updateRequestStatusToFailed(mockExecution);
+ verify(messageCorrelationBuilder).setVariable(CHILD_SVC_REQ_ERROR, "error in rollback");
+ verify(messageCorrelationBuilder).processInstanceVariableEquals(CHILD_SVC_REQ_CORRELATION_ID,
+ parentCorrelationId);
+ }
+
+
+
}
diff --git a/bpmn/so-bpmn-tasks/src/test/java/org/onap/so/bpmn/infrastructure/workflow/tasks/ebb/loader/ServiceEBBLoaderTest.java b/bpmn/so-bpmn-tasks/src/test/java/org/onap/so/bpmn/infrastructure/workflow/tasks/ebb/loader/ServiceEBBLoaderTest.java
index 76763e8ca8..2d41a24ac3 100644
--- a/bpmn/so-bpmn-tasks/src/test/java/org/onap/so/bpmn/infrastructure/workflow/tasks/ebb/loader/ServiceEBBLoaderTest.java
+++ b/bpmn/so-bpmn-tasks/src/test/java/org/onap/so/bpmn/infrastructure/workflow/tasks/ebb/loader/ServiceEBBLoaderTest.java
@@ -32,7 +32,11 @@ import org.junit.Rule;
import org.junit.Test;
import org.junit.rules.ExpectedException;
import org.mockito.Mock;
+import org.onap.aai.domain.yang.ComposedResource;
+import org.onap.aai.domain.yang.ComposedResources;
+import org.onap.aai.domain.yang.RelatedToProperty;
import org.onap.aai.domain.yang.Relationship;
+import org.onap.aai.domain.yang.RelationshipData;
import org.onap.aai.domain.yang.RelationshipList;
import org.onap.aai.domain.yang.ServiceInstance;
import org.onap.aaiclient.client.aai.entities.Relationships;
@@ -368,4 +372,56 @@ public class ServiceEBBLoaderTest extends BaseTaskTest {
resourceList.add(new Resource(WorkflowType.VFMODULE, "72d9d1cd-f46d-447a-abdb-451d6fb05fa8", false, r2));
return resourceList;
}
+
+ @Test
+ public void traverseServiceInstanceChildServiceTest() {
+ List<Resource> resourceList = new ArrayList<>();
+ Resource parentResource = new Resource(WorkflowType.SERVICE, "parentId", false, null);
+ String resourceId = "siP";
+ ServiceInstance serviceInstanceAAI = new ServiceInstance();
+ serviceInstanceAAI.setServiceInstanceId(resourceId);
+
+ RelationshipData relationshipData = new RelationshipData();
+ relationshipData.setRelationshipKey("service-instance.service-instance-id");
+ relationshipData.setRelationshipValue("80ced9d5-666e-406b-88f0-a05d31328b70");
+ RelatedToProperty relatedToProperty = new RelatedToProperty();
+ relatedToProperty.setPropertyKey("service-instance.service-instance-name");
+ relatedToProperty.setPropertyValue("child_euler_002");
+
+ RelationshipData relationshipData1 = new RelationshipData();
+ relationshipData1.setRelationshipKey("service-instance.service-instance-id");
+ relationshipData1.setRelationshipValue("fa5640af-c827-4372-baae-7f1c50fdb5ed");
+ RelatedToProperty relatedToProperty1 = new RelatedToProperty();
+ relatedToProperty1.setPropertyKey("service-instance.service-instance-name");
+ relatedToProperty.setPropertyValue("child_euler_001");
+
+
+ Relationship relationship = new Relationship();
+ Relationship relationship1 = new Relationship();
+ relationship.setRelatedTo("service-instance");
+ relationship1.setRelatedTo("service-instance");
+ relationship.getRelationshipData().add(relationshipData);
+ relationship.getRelatedToProperty().add(relatedToProperty);
+ relationship1.getRelationshipData().add(relationshipData1);
+ relationship1.getRelatedToProperty().add(relatedToProperty1);
+
+ RelationshipList relationshipList = new RelationshipList();
+ RelationshipList relationshipList1 = new RelationshipList();
+ relationshipList.getRelationship().add(relationship);
+ relationshipList1.getRelationship().add(relationship1);
+
+ ComposedResource composedResource = new ComposedResource();
+ composedResource.setRelationshipList(relationshipList);
+ ComposedResource composedResource1 = new ComposedResource();
+ composedResource1.setRelationshipList(relationshipList);
+
+ ComposedResources composedResources = new ComposedResources();
+ composedResources.getComposedResource().add(composedResource);
+ composedResources.getComposedResource().add(composedResource1);
+
+ serviceInstanceAAI.setComposedResources(composedResources);
+
+ serviceEBBLoader.traverseServiceInstanceChildService(resourceList, parentResource, serviceInstanceAAI);
+ assertEquals(2, resourceList.size());
+ }
}
diff --git a/bpmn/so-bpmn-tasks/src/test/java/org/onap/so/bpmn/infrastructure/workflow/tasks/ebb/loader/UserParamsServiceTraversalTest.java b/bpmn/so-bpmn-tasks/src/test/java/org/onap/so/bpmn/infrastructure/workflow/tasks/ebb/loader/UserParamsServiceTraversalTest.java
index cac7f872b3..cf6588e113 100644
--- a/bpmn/so-bpmn-tasks/src/test/java/org/onap/so/bpmn/infrastructure/workflow/tasks/ebb/loader/UserParamsServiceTraversalTest.java
+++ b/bpmn/so-bpmn-tasks/src/test/java/org/onap/so/bpmn/infrastructure/workflow/tasks/ebb/loader/UserParamsServiceTraversalTest.java
@@ -66,6 +66,7 @@ public class UserParamsServiceTraversalTest extends BaseTaskTest {
private static final String MACRO_CREATE_WITHOUT_RESOURCES_JSON = "Macro/ServiceMacroCreateWithoutResources.json";
private static final String MACRO_CREATE_SVC_SAME_MODEL_VNF_VFMODULE =
"Macro/ServiceMacroCreateMultipleSameModelVnfsAndVfModules.json";
+ private static final String MACRO_CREATE_SVC_SAME_MODEL_PNF = "Macro/ServiceMacroCreateMultipleSameModelPnfs.json";
private static final String serviceInstanceId = "123";
private DelegateExecution execution;
private CatalogDbClient mockCatalogDbClient;
@@ -149,6 +150,30 @@ public class UserParamsServiceTraversalTest extends BaseTaskTest {
}
@Test
+ public void getResourceListFromUserParamsMultiplePnfs() throws Exception {
+ initExecution("createInstance", readBpmnRequestFromFile(MACRO_CREATE_SVC_SAME_MODEL_PNF), false);
+
+ List<Resource> resourceListFromUserParams = userParamsServiceTraversal.getResourceListFromUserParams(execution,
+ getUserParams(), serviceInstanceId, requestAction);
+
+ assertEquals(3, resourceListFromUserParams.size());
+
+ Resource service = resourceListFromUserParams.get(0);
+ assertTrue(service.getResourceType() == WorkflowType.SERVICE);
+ assertEquals(2, service.getChildren().size());
+
+ Resource pnf1 = service.getChildren().get(0);
+ assertEquals(service, pnf1.getParent());
+ assertEquals("ORAN_SIM1_2106_pnf_01", pnf1.getInstanceName());
+ assertEquals("88a3096a-af87-4853-99f6-7256a9ab6c3e", pnf1.getResourceId());
+
+ Resource pnf2 = service.getChildren().get(1);
+ assertEquals(service, pnf2.getParent());
+ assertEquals("ORAN_SIM1_2106_pnf_02", pnf2.getInstanceName());
+ assertEquals("88a3096a-af87-4853-99f6-7256a9ab6c3e", pnf2.getResourceId());
+ }
+
+ @Test
public void getResourceListFromUserParamsForVnfs() throws Exception {
initExecution(requestAction, readBpmnRequestFromFile(MACRO_ASSIGN_JSON), false);
Mockito.doReturn(getVfModuleCustomization("a25e8e8c-58b8-4eec-810c-97dcc1f5cb7f", true))
diff --git a/bpmn/so-bpmn-tasks/src/test/java/org/onap/so/bpmn/infrastructure/workflow/tasks/utils/WorkflowResourceIdsUtilsTest.java b/bpmn/so-bpmn-tasks/src/test/java/org/onap/so/bpmn/infrastructure/workflow/tasks/utils/WorkflowResourceIdsUtilsTest.java
index 996c0c07e1..f8bd963c49 100644
--- a/bpmn/so-bpmn-tasks/src/test/java/org/onap/so/bpmn/infrastructure/workflow/tasks/utils/WorkflowResourceIdsUtilsTest.java
+++ b/bpmn/so-bpmn-tasks/src/test/java/org/onap/so/bpmn/infrastructure/workflow/tasks/utils/WorkflowResourceIdsUtilsTest.java
@@ -42,6 +42,7 @@ public class WorkflowResourceIdsUtilsTest {
private static final String CONFIGURATION_ID = "configurationId";
private static final String VNF_INSTANCE_NAME = "vnfInstanceNameId";
private static final String VF_MODULE_INSTANCE_NAME = "vfModuleInstanceNameId";
+ private static final String PNF_INSTANCE_NAME = "pnfInstanceNameId";
private WorkflowResourceIds workflowResourceIds;
@Before
@@ -60,6 +61,7 @@ public class WorkflowResourceIdsUtilsTest {
execution.setVariable("instanceGroupId", INSTANCE_GROUP_ID);
execution.setVariable("vnfInstanceName", VNF_INSTANCE_NAME);
execution.setVariable("vfModuleInstanceName", VF_MODULE_INSTANCE_NAME);
+ execution.setVariable("pnfInstanceName", PNF_INSTANCE_NAME);
workflowResourceIds = WorkflowResourceIdsUtils.getWorkflowResourceIdsFromExecution(execution);
@@ -71,6 +73,7 @@ public class WorkflowResourceIdsUtilsTest {
assertEquals(INSTANCE_GROUP_ID, workflowResourceIds.getInstanceGroupId());
assertEquals(VNF_INSTANCE_NAME, workflowResourceIds.getVnfInstanceName());
assertEquals(VF_MODULE_INSTANCE_NAME, workflowResourceIds.getVfModuleInstanceName());
+ assertEquals(PNF_INSTANCE_NAME, workflowResourceIds.getPnfInstanceName());
}
@Test
@@ -149,6 +152,12 @@ public class WorkflowResourceIdsUtilsTest {
workflowResourceIds::getVfModuleInstanceName);
}
+ @Test
+ public void shouldPropertySetPnfInstanceName() {
+ assertFieldSetProperlyInstanceName(WorkflowType.PNF, PNF_INSTANCE_NAME,
+ workflowResourceIds::getPnfInstanceName);
+ }
+
private void assertFieldSetProperly(WorkflowType workflowType, String expectedId,
Supplier<String> testedObjectField) {
WorkflowResourceIdsUtils.setResourceIdByWorkflowType(workflowResourceIds, workflowType, expectedId);
diff --git a/bpmn/so-bpmn-tasks/src/test/java/org/onap/so/client/orchestration/ApiHandlerClientTest.java b/bpmn/so-bpmn-tasks/src/test/java/org/onap/so/client/orchestration/ApiHandlerClientTest.java
new file mode 100644
index 0000000000..f3a04e6f54
--- /dev/null
+++ b/bpmn/so-bpmn-tasks/src/test/java/org/onap/so/client/orchestration/ApiHandlerClientTest.java
@@ -0,0 +1,121 @@
+package org.onap.so.client.orchestration;
+
+import com.fasterxml.jackson.databind.DeserializationFeature;
+import com.fasterxml.jackson.databind.ObjectMapper;
+import org.junit.Assert;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.mockito.ArgumentMatchers;
+import org.mockito.InjectMocks;
+import org.mockito.Mock;
+import org.mockito.Mockito;
+import org.onap.so.serviceinstancebeans.ServiceInstancesRequest;
+import org.onap.so.serviceinstancebeans.ServiceInstancesResponse;
+import org.springframework.http.HttpMethod;
+import org.springframework.http.HttpStatus;
+import org.springframework.http.ResponseEntity;
+import org.springframework.test.context.TestPropertySource;
+import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;
+import org.springframework.web.client.HttpClientErrorException;
+import org.springframework.web.client.RestTemplate;
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertThat;
+import static org.hamcrest.CoreMatchers.instanceOf;
+
+
+@TestPropertySource(properties = {"mso.adapters.apihandler.endpoint=http://localhost:",
+ "mso.adapters.apihandler.auth=Basic dGVzdDp0ZXN0Cg=="})
+@RunWith(SpringJUnit4ClassRunner.class)
+public class ApiHandlerClientTest {
+
+ @InjectMocks
+ private ApiHandlerClient client;
+
+ @Mock
+ protected RestTemplate restTemplate;
+
+ private ServiceInstancesRequest buildRequest(String incomingRequest) {
+ ObjectMapper mapper = new ObjectMapper();
+ mapper.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false);
+ ServiceInstancesRequest request = null;
+ try {
+ request = mapper.readValue(incomingRequest, ServiceInstancesRequest.class);
+ System.out.println("Java Object: " + request);
+ } catch (Exception e) {
+ System.out.println("Caught Exception " + e.getMessage());
+ Assert.fail("Could not build ServiceInstancesRequest object");
+ }
+ return request;
+ }
+
+ @Test
+ public void createServiceInstanceTest() {
+ String incomingRequest =
+ "{\"requestDetails\":{\"modelInfo\":{\"modelType\":\"service\",\"modelInvariantId\":\"5d48acb5-097d-4982-aeb2-f4a3bd87d31b\",\"modelVersionId\":\"3c40d244-808e-42ca-b09a-256d83d19d0a\",\"modelName\":\"MOWvMXBV1Service\",\"modelVersion\":\"10.0\"},\"cloudConfiguration\":{\"lcpCloudRegionId\":\"mdt1\",\"tenantId\":\"88a6ca3ee0394ade9403f075db23167e\"},\"owningEntity\":{\"owningEntityId\":\"038d99af-0427-42c2-9d15-971b99b9b489\",\"owningEntityName\":\"PACKETCORE\"},\"project\":{\"projectName\":\"{someprojectname}\"},\"subscriberInfo\":{\"globalSubscriberId\":\"{somesubscriberid}\"},\"requestInfo\":{\"productFamilyId\":\"a9a77d5a-123e-4ca2-9eb9-0b015d2ee0fb\",\"source\":\"VID\",\"suppressRollback\":true,\"requestorId\":\"xxxxxx\"},\"requestParameters\":{\"subscriptionServiceType\":\"VMX\",\"aLaCarte\":false,\"userParams\":[{\"service\":{\"modelInfo\":{\"modelType\":\"service\",\"modelInvariantId\":\"5d48acb5-097d-4982-aeb2-f4a3bd87d31b\",\"modelVersionId\":\"3c40d244-808e-42ca-b09a-256d83d19d0a\",\"modelName\":\"MOWvMXBV1Service\",\"modelVersion\":\"10.0\"},\"instanceParams\":[],\"resources\":{\"vnfs\":[{\"modelInfo\":{\"modelType\":\"vnf\",\"modelName\":\"2016-73_MOW\",\"modelVersionId\":\"7f40c192-f63c-463e-ba94-286933b895f8\",\"modelCustomizationName\":\"2016-73_MOW\",\"modelCustomizationId\":\"ab153b6e-c364-44c0-bef6-1f2982117f04\"},\"cloudConfiguration\":{\"lcpCloudRegionId\":\"mdt1\",\"tenantId\":\"88a6ca3ee0394ade9403f075db23167e\"},\"platform\":{\"platformName\":\"test\"},\"lineOfBusiness\":{\"lineOfBusinessName\":\"someValue\"},\"productFamilyId\":\"a9a77d5a-123e-4ca2-9eb9-0b015d2ee0fb\",\"instanceParams\":[],\"vfModules\":[{\"modelInfo\":{\"modelType\":\"vfModule\",\"modelName\":\"201673MowtestBvL\",\"modelVersionId\":\"4c75f813-fa91-45a4-89d0-790ff5f1ae79\",\"modelCustomizationId\":\"a25e8e8c-58b8-4eec-810c-97dcc1f5cb7f\"},\"instanceName\":\"vfModule1\",\"instanceParams\":[{\"vmx_int_net_len\":\"24\"}]}]}]}}}]}}}";
+ ServiceInstancesRequest request = buildRequest(incomingRequest);
+ ResponseEntity<ServiceInstancesResponse> responseEntity =
+ new ResponseEntity<ServiceInstancesResponse>(new ServiceInstancesResponse(), HttpStatus.ACCEPTED);
+ Mockito.when(restTemplate.exchange(ArgumentMatchers.anyString(), ArgumentMatchers.any(HttpMethod.class),
+ ArgumentMatchers.any(), ArgumentMatchers.<Class<ServiceInstancesResponse>>any()))
+ .thenReturn(responseEntity);
+
+ try {
+ ServiceInstancesResponse response = client.createServiceInstance(request);
+ assertThat(response, instanceOf(ServiceInstancesResponse.class));
+ } catch (ApiHandlerClientException e) {
+ Assert.fail(e.getMessage());
+ }
+ }
+
+ @Test
+ public void createServiceInstanceErrorTest() {
+ String incomingRequest =
+ "{\"requestDetails\":{\"modelInfo\":{\"modelType\":\"service\",\"modelInvariantId\":\"5d48acb5-097d-4982-aeb2-f4a3bd87d31b\",\"modelVersionId\":\"3c40d244-808e-42ca-b09a-256d83d19d0a\",\"modelName\":\"MOWvMXBV1Service\",\"modelVersion\":\"10.0\"},\"cloudConfiguration\":{\"lcpCloudRegionId\":\"mdt1\",\"tenantId\":\"88a6ca3ee0394ade9403f075db23167e\"},\"owningEntity\":{\"owningEntityId\":\"038d99af-0427-42c2-9d15-971b99b9b489\",\"owningEntityName\":\"PACKETCORE\"},\"project\":{\"projectName\":\"{someprojectname}\"},\"subscriberInfo\":{\"globalSubscriberId\":\"{somesubscriberid}\"},\"requestInfo\":{\"productFamilyId\":\"a9a77d5a-123e-4ca2-9eb9-0b015d2ee0fb\",\"source\":\"VID\",\"suppressRollback\":true,\"requestorId\":\"xxxxxx\"},\"requestParameters\":{\"subscriptionServiceType\":\"VMX\",\"aLaCarte\":false,\"userParams\":[{\"service\":{\"modelInfo\":{\"modelType\":\"service\",\"modelInvariantId\":\"5d48acb5-097d-4982-aeb2-f4a3bd87d31b\",\"modelVersionId\":\"3c40d244-808e-42ca-b09a-256d83d19d0a\",\"modelName\":\"MOWvMXBV1Service\",\"modelVersion\":\"10.0\"},\"instanceParams\":[],\"resources\":{\"vnfs\":[{\"modelInfo\":{\"modelType\":\"vnf\",\"modelName\":\"2016-73_MOW\",\"modelVersionId\":\"7f40c192-f63c-463e-ba94-286933b895f8\",\"modelCustomizationName\":\"2016-73_MOW\",\"modelCustomizationId\":\"ab153b6e-c364-44c0-bef6-1f2982117f04\"},\"cloudConfiguration\":{\"lcpCloudRegionId\":\"mdt1\",\"tenantId\":\"88a6ca3ee0394ade9403f075db23167e\"},\"platform\":{\"platformName\":\"test\"},\"lineOfBusiness\":{\"lineOfBusinessName\":\"someValue\"},\"productFamilyId\":\"a9a77d5a-123e-4ca2-9eb9-0b015d2ee0fb\",\"instanceParams\":[],\"vfModules\":[{\"modelInfo\":{\"modelType\":\"vfModule\",\"modelName\":\"201673MowtestBvL\",\"modelVersionId\":\"4c75f813-fa91-45a4-89d0-790ff5f1ae79\",\"modelCustomizationId\":\"a25e8e8c-58b8-4eec-810c-97dcc1f5cb7f\"},\"instanceName\":\"vfModule1\",\"instanceParams\":[{\"vmx_int_net_len\":\"24\"}]}]}]}}}]}}}";
+ ServiceInstancesRequest request = buildRequest(incomingRequest);
+ Mockito.when(restTemplate.exchange(ArgumentMatchers.anyString(), ArgumentMatchers.any(HttpMethod.class),
+ ArgumentMatchers.any(), ArgumentMatchers.<Class<ServiceInstancesResponse>>any()))
+ .thenThrow(new HttpClientErrorException(HttpStatus.NOT_FOUND));
+ try {
+ client.createServiceInstance(request);
+ Assert.fail("ApiHandlerClientException exception was not thrown");
+ } catch (ApiHandlerClientException e) {
+ assertEquals("Failed sending service createInstance request to api-handler. Error: ", e.getMessage());
+ }
+ }
+
+ @Test
+ public void deleteServiceInstanceTest() {
+ String incomingRequest =
+ "{\"requestDetails\":{\"modelInfo\":{\"modelType\":\"service\",\"modelInvariantId\":\"5d48acb5-097d-4982-aeb2-f4a3bd87d31b\",\"modelVersionId\":\"3c40d244-808e-42ca-b09a-256d83d19d0a\",\"modelName\":\"MOWvMXBV1Service\",\"modelVersion\":\"10.0\"},\"cloudConfiguration\":{\"lcpCloudRegionId\":\"mdt1\",\"tenantId\":\"88a6ca3ee0394ade9403f075db23167e\"},\"owningEntity\":{\"owningEntityId\":\"038d99af-0427-42c2-9d15-971b99b9b489\",\"owningEntityName\":\"PACKETCORE\"},\"project\":{\"projectName\":\"{someprojectname}\"},\"subscriberInfo\":{\"globalSubscriberId\":\"{somesubscriberid}\"},\"requestInfo\":{\"productFamilyId\":\"a9a77d5a-123e-4ca2-9eb9-0b015d2ee0fb\",\"source\":\"VID\",\"suppressRollback\":true,\"requestorId\":\"xxxxxx\"},\"requestParameters\":{\"subscriptionServiceType\":\"VMX\",\"aLaCarte\":false,\"userParams\":[{\"service\":{\"modelInfo\":{\"modelType\":\"service\",\"modelInvariantId\":\"5d48acb5-097d-4982-aeb2-f4a3bd87d31b\",\"modelVersionId\":\"3c40d244-808e-42ca-b09a-256d83d19d0a\",\"modelName\":\"MOWvMXBV1Service\",\"modelVersion\":\"10.0\"},\"instanceParams\":[],\"resources\":{\"vnfs\":[{\"modelInfo\":{\"modelType\":\"vnf\",\"modelName\":\"2016-73_MOW\",\"modelVersionId\":\"7f40c192-f63c-463e-ba94-286933b895f8\",\"modelCustomizationName\":\"2016-73_MOW\",\"modelCustomizationId\":\"ab153b6e-c364-44c0-bef6-1f2982117f04\"},\"cloudConfiguration\":{\"lcpCloudRegionId\":\"mdt1\",\"tenantId\":\"88a6ca3ee0394ade9403f075db23167e\"},\"platform\":{\"platformName\":\"test\"},\"lineOfBusiness\":{\"lineOfBusinessName\":\"someValue\"},\"productFamilyId\":\"a9a77d5a-123e-4ca2-9eb9-0b015d2ee0fb\",\"instanceParams\":[],\"vfModules\":[{\"modelInfo\":{\"modelType\":\"vfModule\",\"modelName\":\"201673MowtestBvL\",\"modelVersionId\":\"4c75f813-fa91-45a4-89d0-790ff5f1ae79\",\"modelCustomizationId\":\"a25e8e8c-58b8-4eec-810c-97dcc1f5cb7f\"},\"instanceName\":\"vfModule1\",\"instanceParams\":[{\"vmx_int_net_len\":\"24\"}]}]}]}}}]}}}";
+ ServiceInstancesRequest request = buildRequest(incomingRequest);
+ ResponseEntity<ServiceInstancesResponse> responseEntity =
+ new ResponseEntity<ServiceInstancesResponse>(new ServiceInstancesResponse(), HttpStatus.ACCEPTED);
+ Mockito.when(restTemplate.exchange(ArgumentMatchers.anyString(), ArgumentMatchers.any(HttpMethod.class),
+ ArgumentMatchers.any(), ArgumentMatchers.<Class<ServiceInstancesResponse>>any()))
+ .thenReturn(responseEntity);
+
+ try {
+ ServiceInstancesResponse response = client.deleteServiceInstance(request);
+ assertThat(response, instanceOf(ServiceInstancesResponse.class));
+ } catch (ApiHandlerClientException e) {
+ Assert.fail(e.getMessage());
+ }
+ }
+
+ @Test
+ public void deleteServiceInstanceErrorTest() {
+ String incomingRequest =
+ "{\"requestDetails\":{\"modelInfo\":{\"modelType\":\"service\",\"modelInvariantId\":\"5d48acb5-097d-4982-aeb2-f4a3bd87d31b\",\"modelVersionId\":\"3c40d244-808e-42ca-b09a-256d83d19d0a\",\"modelName\":\"MOWvMXBV1Service\",\"modelVersion\":\"10.0\"},\"cloudConfiguration\":{\"lcpCloudRegionId\":\"mdt1\",\"tenantId\":\"88a6ca3ee0394ade9403f075db23167e\"},\"owningEntity\":{\"owningEntityId\":\"038d99af-0427-42c2-9d15-971b99b9b489\",\"owningEntityName\":\"PACKETCORE\"},\"project\":{\"projectName\":\"{someprojectname}\"},\"subscriberInfo\":{\"globalSubscriberId\":\"{somesubscriberid}\"},\"requestInfo\":{\"productFamilyId\":\"a9a77d5a-123e-4ca2-9eb9-0b015d2ee0fb\",\"source\":\"VID\",\"suppressRollback\":true,\"requestorId\":\"xxxxxx\"},\"requestParameters\":{\"subscriptionServiceType\":\"VMX\",\"aLaCarte\":false,\"userParams\":[{\"service\":{\"modelInfo\":{\"modelType\":\"service\",\"modelInvariantId\":\"5d48acb5-097d-4982-aeb2-f4a3bd87d31b\",\"modelVersionId\":\"3c40d244-808e-42ca-b09a-256d83d19d0a\",\"modelName\":\"MOWvMXBV1Service\",\"modelVersion\":\"10.0\"},\"instanceParams\":[],\"resources\":{\"vnfs\":[{\"modelInfo\":{\"modelType\":\"vnf\",\"modelName\":\"2016-73_MOW\",\"modelVersionId\":\"7f40c192-f63c-463e-ba94-286933b895f8\",\"modelCustomizationName\":\"2016-73_MOW\",\"modelCustomizationId\":\"ab153b6e-c364-44c0-bef6-1f2982117f04\"},\"cloudConfiguration\":{\"lcpCloudRegionId\":\"mdt1\",\"tenantId\":\"88a6ca3ee0394ade9403f075db23167e\"},\"platform\":{\"platformName\":\"test\"},\"lineOfBusiness\":{\"lineOfBusinessName\":\"someValue\"},\"productFamilyId\":\"a9a77d5a-123e-4ca2-9eb9-0b015d2ee0fb\",\"instanceParams\":[],\"vfModules\":[{\"modelInfo\":{\"modelType\":\"vfModule\",\"modelName\":\"201673MowtestBvL\",\"modelVersionId\":\"4c75f813-fa91-45a4-89d0-790ff5f1ae79\",\"modelCustomizationId\":\"a25e8e8c-58b8-4eec-810c-97dcc1f5cb7f\"},\"instanceName\":\"vfModule1\",\"instanceParams\":[{\"vmx_int_net_len\":\"24\"}]}]}]}}}]}}}";
+ ServiceInstancesRequest request = buildRequest(incomingRequest);
+ Mockito.when(restTemplate.exchange(ArgumentMatchers.anyString(), ArgumentMatchers.any(HttpMethod.class),
+ ArgumentMatchers.any(), ArgumentMatchers.<Class<ServiceInstancesResponse>>any()))
+ .thenThrow(new HttpClientErrorException(HttpStatus.NOT_FOUND));
+ try {
+ client.deleteServiceInstance(request);
+ Assert.fail("ApiHandlerClientException exception was not thrown");
+ } catch (ApiHandlerClientException e) {
+ assertEquals("Failed sending service deleteInstance request to api-handler. Error: ", e.getMessage());
+ }
+ }
+
+}
diff --git a/bpmn/so-bpmn-tasks/src/test/resources/__files/Macro/ServiceMacroCreateMultipleSameModelPnfs.json b/bpmn/so-bpmn-tasks/src/test/resources/__files/Macro/ServiceMacroCreateMultipleSameModelPnfs.json
new file mode 100644
index 0000000000..4eb6faee64
--- /dev/null
+++ b/bpmn/so-bpmn-tasks/src/test/resources/__files/Macro/ServiceMacroCreateMultipleSameModelPnfs.json
@@ -0,0 +1,91 @@
+{
+ "requestDetails": {
+ "modelInfo": {
+ "modelInvariantId": "d6f8f4e8-7de9-47c1-aa5c-4b6868738f5c",
+ "modelType": "service",
+ "modelName": "service_pnf_2305",
+ "modelVersion": "2.0",
+ "modelVersionId": "e199ca4e-08f9-4f10-a15d-b94d50e52a6a",
+ "modelUuid": "e199ca4e-08f9-4f10-a15d-b94d50e52a6a",
+ "modelInvariantUuid": "d6f8f4e8-7de9-47c1-aa5c-4b6868738f5c"
+ },
+ "requestInfo": {
+ "productFamilyId": "5G",
+ "source": "VID",
+ "instanceName": "ORAN_SIM1_2106_1",
+ "suppressRollback": false,
+ "requestorId": "NBI"
+ },
+ "subscriberInfo": {
+ "globalSubscriberId": "5GCustomer"
+ },
+ "requestParameters": {
+ "subscriptionServiceType": "5G",
+ "userParams": [{
+ "service": {
+ "modelInfo": {
+ "modelVersionId": "e199ca4e-08f9-4f10-a15d-b94d50e52a6a",
+ "modelName": "service_pnf_2305",
+ "modelType": "service"
+ },
+ "instanceName": "ORAN_SIM1_2106_1",
+ "instanceParams": [],
+ "resources": {
+ "pnfs": [{
+ "modelInfo": {
+ "modelCustomizationName": "pnf_only_2305 0",
+ "modelCustomizationId": "88a3096a-af87-4853-99f6-7256a9ab6c3e",
+ "modelInvariantId": "d6f8f4e8-7de9-47c1-aa5c-4b6868738f5c",
+ "modelVersionId": "a6a9dc3d-204c-4dbb-862b-46214788b0e5",
+ "modelName": "service_pnf_2305",
+ "modelType": "pnf",
+ "modelVersion": "2.0"
+ },
+ "platform": {
+ "platformName": "test"
+ },
+ "lineOfBusiness": {
+ "lineOfBusinessName": "LOB-5GCustomer"
+ },
+ "productFamilyId": "5G",
+ "instanceParams": [],
+ "instanceName": "ORAN_SIM1_2106_pnf_01",
+ "processingPriority": 1
+ }, {
+ "modelInfo": {
+ "modelCustomizationName": "pnf_only_2305 0",
+ "modelCustomizationId": "88a3096a-af87-4853-99f6-7256a9ab6c3e",
+ "modelInvariantId": "d6f8f4e8-7de9-47c1-aa5c-4b6868738f5c",
+ "modelVersionId": "a6a9dc3d-204c-4dbb-862b-46214788b0e5",
+ "modelName": "service_pnf_2305",
+ "modelType": "pnf",
+ "modelVersion": "2.0"
+ },
+ "platform": {
+ "platformName": "test"
+ },
+ "lineOfBusiness": {
+ "lineOfBusinessName": "LOB-5GCustomer"
+ },
+ "productFamilyId": "5G",
+ "instanceParams": [],
+ "instanceName": "ORAN_SIM1_2106_pnf_02",
+ "processingPriority": 2
+ }]
+ }
+ }
+ }, {
+ "Homing_Solution": "none"
+ }],
+ "aLaCarte": false,
+ "usePreload": false
+ },
+ "project": {
+ "projectName": "basicnw-project"
+ },
+ "owningEntity": {
+ "owningEntityId": "67f2e84c-734d-4e90-a1e4-d2ffa2e75849",
+ "owningEntityName": "OE-5GCustomer"
+ }
+ }
+} \ No newline at end of file
diff --git a/bpmn/so-bpmn-tasks/src/test/resources/application-test.yaml b/bpmn/so-bpmn-tasks/src/test/resources/application-test.yaml
index b64fc3318b..d3f5696c16 100644
--- a/bpmn/so-bpmn-tasks/src/test/resources/application-test.yaml
+++ b/bpmn/so-bpmn-tasks/src/test/resources/application-test.yaml
@@ -84,7 +84,9 @@ mso:
workflow:
message:
endpoint: http://localhost:${wiremock.server.port}/workflows/messages/message
-
+ apihandler:
+ endpoint: http://localhost:8080
+ auth: Basic dGVzdDp0ZXN0Cg==
async:
core-pool-size: 50
max-pool-size: 50
diff --git a/common/src/main/java/org/onap/so/serviceinstancebeans/Resources.java b/common/src/main/java/org/onap/so/serviceinstancebeans/Resources.java
index acac8c4033..9cb5b33251 100644
--- a/common/src/main/java/org/onap/so/serviceinstancebeans/Resources.java
+++ b/common/src/main/java/org/onap/so/serviceinstancebeans/Resources.java
@@ -42,6 +42,8 @@ public class Resources implements Serializable {
private List<Pnfs> pnfs = new ArrayList<>();
@JsonProperty("networks")
private List<Networks> networks = new ArrayList<>();
+ @JsonProperty("services")
+ private List<Service> services = new ArrayList<>();
public List<Vnfs> getVnfs() {
return vnfs;
@@ -67,8 +69,16 @@ public class Resources implements Serializable {
this.networks = networks;
}
+ public List<Service> getServices() {
+ return services;
+ }
+
+ public void setServices(List<Service> services) {
+ this.services = services;
+ }
+
@Override
public String toString() {
- return "Resources [vnfs=" + vnfs + ", networks=" + networks + "]";
+ return "Resources [vnfs=" + vnfs + ", networks=" + networks + ", services=" + services + "]";
}
}
diff --git a/common/src/main/java/org/onap/so/serviceinstancebeans/Service.java b/common/src/main/java/org/onap/so/serviceinstancebeans/Service.java
index 3c3e10c483..90df220b52 100644
--- a/common/src/main/java/org/onap/so/serviceinstancebeans/Service.java
+++ b/common/src/main/java/org/onap/so/serviceinstancebeans/Service.java
@@ -45,6 +45,9 @@ public class Service implements Serializable {
private List<Map<String, Object>> instanceParams = new ArrayList<>();
@JsonProperty("resources")
protected Resources resources;
+ @JsonProperty("processingPriority")
+ protected Integer processingPriority = 0;
+
public ModelInfo getModelInfo() {
return modelInfo;
@@ -86,9 +89,19 @@ public class Service implements Serializable {
this.resources = resources;
}
+ public Integer getProcessingPriority() {
+ return processingPriority;
+ }
+
+ public void setProcessingPriority(Integer processingPriority) {
+ this.processingPriority = processingPriority;
+ }
+
+
@Override
public String toString() {
return "Service [modelInfo=" + modelInfo + ", cloudConfiguration=" + cloudConfiguration + ", instanceName="
- + instanceName + ", instanceParams=" + instanceParams + ", resources=" + resources + "]";
+ + instanceName + ", instanceParams=" + instanceParams + ", resources=" + resources
+ + ", processingPriority=" + processingPriority + "]";
}
}
diff --git a/common/src/test/java/org/onap/so/security/UserDetailsServiceImplTest.java b/common/src/test/java/org/onap/so/security/UserDetailsServiceImplTest.java
new file mode 100644
index 0000000000..51de61a66a
--- /dev/null
+++ b/common/src/test/java/org/onap/so/security/UserDetailsServiceImplTest.java
@@ -0,0 +1,45 @@
+package org.onap.so.security;
+
+import static org.assertj.core.api.Assertions.assertThat;
+import static org.assertj.core.api.Assertions.assertThatThrownBy;
+import java.util.ArrayList;
+import org.junit.Test;
+import java.util.List;
+import org.springframework.security.core.userdetails.UserDetails;
+import org.springframework.security.core.userdetails.UsernameNotFoundException;
+
+public class UserDetailsServiceImplTest {
+
+ private static final String USERNAME = "usernameTest";
+ private static final String PASSWORD = "passTest";
+ private static final String ROLE = "roleTest";
+
+ @Test
+ public void loadUserByUsername_Success() {
+ UserDetailsServiceImpl testedObject = new UserDetailsServiceImpl();
+ testedObject.setUsercredentials(prepareUserCredentials());
+ UserDetails result = testedObject.loadUserByUsername(USERNAME);
+ assertThat(result.getUsername()).isEqualTo(USERNAME);
+ assertThat(result.getPassword()).isEqualTo(PASSWORD);
+ }
+
+ @Test
+ public void loadUserByUsername_userNotFoundEx() {
+ UserDetailsServiceImpl testedObject = new UserDetailsServiceImpl();
+ testedObject.setUsercredentials(prepareUserCredentials());
+ assertThatThrownBy(() -> testedObject.loadUserByUsername("notExistingUser"))
+ .isInstanceOf(UsernameNotFoundException.class);
+ }
+
+ private List<UserCredentials> prepareUserCredentials() {
+ UserCredentials userCredentials = new UserCredentials();
+ userCredentials.setUsername(USERNAME);
+ userCredentials.setPassword(PASSWORD);
+ userCredentials.setRole(ROLE);
+ List<UserCredentials> list = new ArrayList<>();
+ list.add(userCredentials);
+ return list;
+ }
+
+
+}
diff --git a/docs/api/swagger/swagger.json b/docs/api/swagger/swagger.json
index 0f2bd535b6..ac0e523d45 100644
--- a/docs/api/swagger/swagger.json
+++ b/docs/api/swagger/swagger.json
@@ -1,9 +1,14 @@
{
- "swagger": "2.0",
+ "openapi": "3.0.1",
"info": {
- "version": "3.1.2",
- "title": "SO Guilin APIs"
+ "title": "SO Guilin APIs",
+ "version": "3.1.2"
},
+ "servers": [
+ {
+ "url": "/"
+ }
+ ],
"tags": [
{
"name": "e2eServiceInstances"
@@ -45,9 +50,6 @@
"name": "onapsoinfrainstanceManagement"
}
],
- "schemes": [
- "http"
- ],
"paths": {
"/onap/so/infra/e2eServiceInstances/{version}": {
"post": {
@@ -55,36 +57,35 @@
"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]"
+ "schema": {
+ "pattern": "[vV][3-5]",
+ "type": "string"
+ }
}
],
+ "requestBody": {
+ "content": {
+ "application/json": {
+ "schema": {
+ "type": "string"
+ }
+ }
+ },
+ "required": false
+ },
"responses": {
"default": {
- "description": "successful operation"
+ "description": "successful operation",
+ "content": {}
}
- }
+ },
+ "x-codegen-request-body-name": "body"
}
},
"/onap/so/infra/e2eServiceInstances/{version}/{serviceId}": {
@@ -93,84 +94,86 @@
"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]"
+ "schema": {
+ "pattern": "[vV][3-5]",
+ "type": "string"
+ }
},
{
"name": "serviceId",
"in": "path",
"required": true,
- "type": "string"
+ "schema": {
+ "type": "string"
+ }
}
],
+ "requestBody": {
+ "content": {
+ "application/json": {
+ "schema": {
+ "type": "string"
+ }
+ }
+ },
+ "required": false
+ },
"responses": {
"default": {
- "description": "successful operation"
+ "description": "successful operation",
+ "content": {}
}
- }
+ },
+ "x-codegen-request-body-name": "body"
},
"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]"
+ "schema": {
+ "pattern": "[vV][3-5]",
+ "type": "string"
+ }
},
{
"name": "serviceId",
"in": "path",
"required": true,
- "type": "string"
+ "schema": {
+ "type": "string"
+ }
}
],
+ "requestBody": {
+ "content": {
+ "application/json": {
+ "schema": {
+ "type": "string"
+ }
+ }
+ },
+ "required": false
+ },
"responses": {
"default": {
- "description": "successful operation"
+ "description": "successful operation",
+ "content": {}
}
- }
+ },
+ "x-codegen-request-body-name": "body"
}
},
"/onap/so/infra/e2eServiceInstances/{version}/{serviceId}/{operationType}": {
@@ -179,49 +182,52 @@
"e2eServiceInstances"
],
"summary": "Activate/Deactivate 5G slice Service on a specified version and serviceId",
- "description": "",
"operationId": "activateE2EServiceInstances",
- "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]"
+ "schema": {
+ "pattern": "[vV][3-5]",
+ "type": "string"
+ }
},
{
"name": "serviceId",
"in": "path",
"required": true,
- "type": "string"
+ "schema": {
+ "type": "string"
+ }
},
{
"name": "operationType",
"in": "path",
"required": true,
- "type": "string",
- "pattern": "activate/deactivate"
+ "schema": {
+ "pattern": "activate/deactivate",
+ "type": "string"
+ }
}
],
+ "requestBody": {
+ "content": {
+ "application/json": {
+ "schema": {
+ "type": "string"
+ }
+ }
+ },
+ "required": false
+ },
"responses": {
"default": {
- "description": "successful operation"
+ "description": "successful operation",
+ "content": {}
}
- }
+ },
+ "x-codegen-request-body-name": "body"
}
},
"/onap/so/infra/e2eServiceInstances/{version}/{serviceId}/operations/{operationId}": {
@@ -230,35 +236,38 @@
"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"
+ "schema": {
+ "type": "string"
+ }
},
{
"name": "version",
"in": "path",
"required": true,
- "type": "string",
- "pattern": "[vV][3-5]"
+ "schema": {
+ "pattern": "[vV][3-5]",
+ "type": "string"
+ }
},
{
"name": "operationId",
"in": "path",
"required": true,
- "type": "string"
+ "schema": {
+ "type": "string"
+ }
}
],
"responses": {
"default": {
- "description": "successful operation"
+ "description": "successful operation",
+ "content": {}
}
}
}
@@ -269,42 +278,43 @@
"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]"
+ "schema": {
+ "pattern": "[vV][3-5]",
+ "type": "string"
+ }
},
{
"name": "serviceId",
"in": "path",
"required": true,
- "type": "string"
+ "schema": {
+ "type": "string"
+ }
}
],
+ "requestBody": {
+ "content": {
+ "application/json": {
+ "schema": {
+ "type": "string"
+ }
+ }
+ },
+ "required": false
+ },
"responses": {
"default": {
- "description": "successful operation"
+ "description": "successful operation",
+ "content": {}
}
- }
+ },
+ "x-codegen-request-body-name": "body"
}
},
"/onap/so/infra/e2eServiceInstances/{version}/{serviceId}/modeldifferences": {
@@ -312,43 +322,44 @@
"tags": [
"e2eServiceInstances"
],
- "summary": "Find added and deleted resources of target model for the e2eserviceInstance on a given serviceId ",
- "description": "",
+ "summary": "Find added and deleted resources of target model for the e2eserviceInstance on a given serviceId",
"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"
+ "schema": {
+ "type": "string"
+ }
},
{
"name": "version",
"in": "path",
"required": true,
- "type": "string",
- "pattern": "[vV][3-5]"
+ "schema": {
+ "pattern": "[vV][3-5]",
+ "type": "string"
+ }
}
],
+ "requestBody": {
+ "content": {
+ "application/json": {
+ "schema": {
+ "type": "string"
+ }
+ }
+ },
+ "required": false
+ },
"responses": {
"default": {
- "description": "successful operation"
+ "description": "successful operation",
+ "content": {}
}
- }
+ },
+ "x-codegen-request-body-name": "body"
}
},
"/onap/so/infra/3gppservices/{version}/allocate": {
@@ -357,39 +368,41 @@
"Onap3gppServiceInstances"
],
"summary": "Create a 3GPP Service Instance on a version provided",
- "description": "",
"operationId": "allocate3gppService",
- "consumes": [
- "application/json"
- ],
- "produces": [
- "application/json"
- ],
"parameters": [
{
- "in": "body",
- "name": "body",
- "required": true,
- "schema": {
- "$ref": "#/definitions/Allocate3gppService"
- }
- },
- {
"name": "version",
"in": "path",
"required": true,
- "type": "string",
- "pattern": "[vV][1]"
+ "schema": {
+ "pattern": "[vV][1]",
+ "type": "string"
+ }
}
],
+ "requestBody": {
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/Allocate3gppService"
+ }
+ }
+ },
+ "required": true
+ },
"responses": {
"default": {
"description": "successful operation",
- "schema": {
- "$ref": "#/definitions/3gppServiceResponse"
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/3gppServiceResponse"
+ }
+ }
}
}
- }
+ },
+ "x-codegen-request-body-name": "body"
}
},
"/onap/so/infra/3gppservices/{version}/deAllocate": {
@@ -398,39 +411,41 @@
"Onap3gppServiceInstances"
],
"summary": "Terminate/Deallocate a 3GPP Service Instance on a version provided",
- "description": "",
"operationId": "deallocate3gppService",
- "consumes": [
- "application/json"
- ],
- "produces": [
- "application/json"
- ],
"parameters": [
{
- "in": "body",
- "name": "body",
- "required": true,
- "schema": {
- "$ref": "#/definitions/DeAllocate3gppService"
- }
- },
- {
"name": "version",
"in": "path",
"required": true,
- "type": "string",
- "pattern": "[vV][1]"
+ "schema": {
+ "pattern": "[vV][1]",
+ "type": "string"
+ }
}
],
+ "requestBody": {
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/DeAllocate3gppService"
+ }
+ }
+ },
+ "required": true
+ },
"responses": {
"default": {
"description": "successful operation",
- "schema": {
- "$ref": "#/definitions/3gppServiceResponse"
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/3gppServiceResponse"
+ }
+ }
}
}
- }
+ },
+ "x-codegen-request-body-name": "body"
}
},
"/onap/so/infra/3gppservices/{version}/modify": {
@@ -439,39 +454,41 @@
"Onap3gppServiceInstances"
],
"summary": "Modify a 3GPP Service Instance on a version provided",
- "description": "",
"operationId": "modify3gppService",
- "consumes": [
- "application/json"
- ],
- "produces": [
- "application/json"
- ],
"parameters": [
{
- "in": "body",
- "name": "body",
- "required": true,
- "schema": {
- "$ref": "#/definitions/Modify3gppService"
- }
- },
- {
"name": "version",
"in": "path",
"required": true,
- "type": "string",
- "pattern": "[vV][1]"
+ "schema": {
+ "pattern": "[vV][1]",
+ "type": "string"
+ }
}
],
+ "requestBody": {
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/Modify3gppService"
+ }
+ }
+ },
+ "required": true
+ },
"responses": {
"default": {
"description": "successful operation",
- "schema": {
- "$ref": "#/definitions/3gppServiceResponse"
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/3gppServiceResponse"
+ }
+ }
}
}
- }
+ },
+ "x-codegen-request-body-name": "body"
}
},
"/onap/so/infra/3gppservices/{version}/activate": {
@@ -480,39 +497,41 @@
"Onap3gppServiceInstances"
],
"summary": "Activate a 3GPP Service Instance on a version provided",
- "description": "",
"operationId": "activate3gppService",
- "consumes": [
- "application/json"
- ],
- "produces": [
- "application/json"
- ],
"parameters": [
{
- "in": "body",
- "name": "body",
- "required": true,
- "schema": {
- "$ref": "#/definitions/3gppServiceActivation"
- }
- },
- {
"name": "version",
"in": "path",
"required": true,
- "type": "string",
- "pattern": "[vV][1]"
+ "schema": {
+ "pattern": "[vV][1]",
+ "type": "string"
+ }
}
],
+ "requestBody": {
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/3gppServiceActivation"
+ }
+ }
+ },
+ "required": true
+ },
"responses": {
"default": {
"description": "successful operation",
- "schema": {
- "$ref": "#/definitions/3gppServiceResponse"
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/3gppServiceResponse"
+ }
+ }
}
}
- }
+ },
+ "x-codegen-request-body-name": "body"
}
},
"/onap/so/infra/3gppservices/{version}/deActivate": {
@@ -521,39 +540,41 @@
"Onap3gppServiceInstances"
],
"summary": "Deactivate a 3GPP Service Instance on a version provided",
- "description": "",
"operationId": "deactivate3gppService",
- "consumes": [
- "application/json"
- ],
- "produces": [
- "application/json"
- ],
"parameters": [
{
- "in": "body",
- "name": "body",
- "required": true,
- "schema": {
- "$ref": "#/definitions/3gppServiceActivation"
- }
- },
- {
"name": "version",
"in": "path",
"required": true,
- "type": "string",
- "pattern": "[vV][1]"
+ "schema": {
+ "pattern": "[vV][1]",
+ "type": "string"
+ }
}
],
+ "requestBody": {
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/3gppServiceActivation"
+ }
+ }
+ },
+ "required": true
+ },
"responses": {
"default": {
"description": "successful operation",
- "schema": {
- "$ref": "#/definitions/3gppServiceResponse"
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/3gppServiceResponse"
+ }
+ }
}
}
- }
+ },
+ "x-codegen-request-body-name": "body"
}
},
"/onap/so/infra/3gppservices/{version}/subnetCapabilityQuery": {
@@ -562,39 +583,41 @@
"Onap3gppServiceInstances"
],
"summary": "Provides subnet capability based on subnet types",
- "description": "",
"operationId": "querySubnetCapability",
- "consumes": [
- "application/json"
- ],
- "produces": [
- "application/json"
- ],
"parameters": [
{
- "in": "body",
- "name": "body",
- "required": true,
- "schema": {
- "$ref": "#/definitions/QuerySubnetCapability"
- }
- },
- {
"name": "version",
"in": "path",
"required": true,
- "type": "string",
- "pattern": "[vV][1]"
+ "schema": {
+ "pattern": "[vV][1]",
+ "type": "string"
+ }
}
],
+ "requestBody": {
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/QuerySubnetCapability"
+ }
+ }
+ },
+ "required": true
+ },
"responses": {
"default": {
"description": "successful operation with capabilities for the queried subnetTypes",
- "schema": {
- "type": "object"
+ "content": {
+ "application/json": {
+ "schema": {
+ "type": "object"
+ }
+ }
}
}
- }
+ },
+ "x-codegen-request-body-name": "body"
}
},
"/globalhealthcheck": {
@@ -603,23 +626,21 @@
"globalhealthcheck"
],
"summary": "Performing global health check",
- "description": "",
"operationId": "globalHealthcheck",
- "produces": [
- "text/html"
- ],
"parameters": [
{
"name": "enableBpmn",
"in": "query",
- "required": false,
- "type": "boolean",
- "default": true
+ "schema": {
+ "type": "boolean",
+ "default": true
+ }
}
],
"responses": {
"default": {
- "description": "successful operation"
+ "description": "successful operation",
+ "content": {}
}
}
}
@@ -630,15 +651,11 @@
"nodehealthcheck"
],
"summary": "Performing node health check",
- "description": "",
"operationId": "nodeHealthcheck",
- "produces": [
- "text/html"
- ],
- "parameters": [],
"responses": {
"default": {
- "description": "successful operation"
+ "description": "successful operation",
+ "content": {}
}
}
}
@@ -649,23 +666,22 @@
"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]"
+ "schema": {
+ "pattern": "[vV][4-7]",
+ "type": "string"
+ }
}
],
"responses": {
"default": {
- "description": "successful operation"
+ "description": "successful operation",
+ "content": {}
}
}
}
@@ -676,29 +692,30 @@
"onapsoinfraorchestrationRequests"
],
"summary": "Find Orchestrated Requests for a given requestId",
- "description": "",
"operationId": "getOrchestrationRequestForReqId",
- "produces": [
- "application/json"
- ],
"parameters": [
{
"name": "requestId",
"in": "path",
"required": true,
- "type": "string"
+ "schema": {
+ "type": "string"
+ }
},
{
"name": "version",
"in": "path",
"required": true,
- "type": "string",
- "pattern": "[vV][4-7]"
+ "schema": {
+ "pattern": "[vV][4-7]",
+ "type": "string"
+ }
}
],
"responses": {
"default": {
- "description": "successful operation"
+ "description": "successful operation",
+ "content": {}
}
}
}
@@ -709,42 +726,43 @@
"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"
+ "schema": {
+ "type": "string"
+ }
},
{
"name": "version",
"in": "path",
"required": true,
- "type": "string",
- "pattern": "[vV][4-7]"
+ "schema": {
+ "pattern": "[vV][4-7]",
+ "type": "string"
+ }
}
],
+ "requestBody": {
+ "content": {
+ "application/json": {
+ "schema": {
+ "type": "string"
+ }
+ }
+ },
+ "required": false
+ },
"responses": {
"default": {
- "description": "successful operation"
+ "description": "successful operation",
+ "content": {}
}
- }
+ },
+ "x-codegen-request-body-name": "body"
}
},
"/onap/so/infra/orchestrationTasks/{version}": {
@@ -753,23 +771,22 @@
"onapsoinfraorchestrationTasks"
],
"summary": "Get all orchestrationTasks",
- "description": "",
"operationId": "getAllOrchestrationTasks",
- "produces": [
- "application/json"
- ],
"parameters": [
{
"name": "version",
"in": "path",
"required": true,
- "type": "string",
- "pattern": "[vV][4-7]"
+ "schema": {
+ "pattern": "[vV][4-7]",
+ "type": "string"
+ }
}
],
"responses": {
"default": {
- "description": "successful operation"
+ "description": "successful operation",
+ "content": {}
}
}
},
@@ -778,33 +795,35 @@
"onapsoinfraorchestrationTasks"
],
"summary": "Create an orchestrationTask",
- "description": "",
"operationId": "createOrchestrationTask",
- "produces": [
- "application/json"
- ],
"parameters": [
{
- "in": "body",
- "name": "body",
- "required": false,
- "schema": {
- "type": "string"
- }
- },
- {
"name": "version",
"in": "path",
"required": true,
- "type": "string",
- "pattern": "[vV][4-7]"
+ "schema": {
+ "pattern": "[vV][4-7]",
+ "type": "string"
+ }
}
],
+ "requestBody": {
+ "content": {
+ "*/*": {
+ "schema": {
+ "type": "string"
+ }
+ }
+ },
+ "required": false
+ },
"responses": {
"default": {
- "description": "successful operation"
+ "description": "successful operation",
+ "content": {}
}
- }
+ },
+ "x-codegen-request-body-name": "body"
}
},
"/onap/so/infra/orchestrationTasks/{version}/{taskId}": {
@@ -813,29 +832,30 @@
"onapsoinfraorchestrationTasks"
],
"summary": "Get orchestrationTask for a given taskId",
- "description": "",
"operationId": "getOrchestrationTask",
- "produces": [
- "application/json"
- ],
"parameters": [
{
"name": "taskId",
"in": "path",
"required": true,
- "type": "string"
+ "schema": {
+ "type": "string"
+ }
},
{
"name": "version",
"in": "path",
"required": true,
- "type": "string",
- "pattern": "[vV][4-7]"
+ "schema": {
+ "pattern": "[vV][4-7]",
+ "type": "string"
+ }
}
],
"responses": {
"default": {
- "description": "successful operation"
+ "description": "successful operation",
+ "content": {}
}
}
},
@@ -844,68 +864,73 @@
"onapsoinfraorchestrationTasks"
],
"summary": "update orchestrationTask for a given taskId",
- "description": "",
"operationId": "updateOrchestrationTask",
- "produces": [
- "application/json"
- ],
"parameters": [
{
"name": "taskId",
"in": "path",
"required": true,
- "type": "string"
+ "schema": {
+ "type": "string"
+ }
},
{
"name": "version",
"in": "path",
"required": true,
- "type": "string",
- "pattern": "[vV][4-7]"
- },
- {
- "in": "body",
- "name": "body",
- "required": false,
"schema": {
+ "pattern": "[vV][4-7]",
"type": "string"
}
}
],
+ "requestBody": {
+ "content": {
+ "*/*": {
+ "schema": {
+ "type": "string"
+ }
+ }
+ },
+ "required": false
+ },
"responses": {
"default": {
- "description": "successful operation"
+ "description": "successful operation",
+ "content": {}
}
- }
+ },
+ "x-codegen-request-body-name": "body"
},
"delete": {
"tags": [
"onapsoinfraorchestrationTasks"
],
"summary": "delete orchestrationTask for a given taskId",
- "description": "",
"operationId": "deleteOrchestrationTask",
- "produces": [
- "application/json"
- ],
"parameters": [
{
"name": "taskId",
"in": "path",
"required": true,
- "type": "string"
+ "schema": {
+ "type": "string"
+ }
},
{
"name": "version",
"in": "path",
"required": true,
- "type": "string",
- "pattern": "[vV][4-7]"
+ "schema": {
+ "pattern": "[vV][4-7]",
+ "type": "string"
+ }
}
],
"responses": {
"default": {
- "description": "successful operation"
+ "description": "successful operation",
+ "content": {}
}
}
}
@@ -916,39 +941,43 @@
"onapsoinfraorchestrationTasks"
],
"summary": "commit orchestrationTask for a given taskId",
- "description": "",
"operationId": "commitOrchestrationTask",
- "produces": [
- "application/json"
- ],
"parameters": [
{
- "in": "body",
- "name": "body",
- "required": false,
- "schema": {
- "type": "string"
- }
- },
- {
"name": "taskId",
"in": "path",
"required": true,
- "type": "string"
+ "schema": {
+ "type": "string"
+ }
},
{
"name": "version",
"in": "path",
"required": true,
- "type": "string",
- "pattern": "[vV][4-7]"
+ "schema": {
+ "pattern": "[vV][4-7]",
+ "type": "string"
+ }
}
],
+ "requestBody": {
+ "content": {
+ "*/*": {
+ "schema": {
+ "type": "string"
+ }
+ }
+ },
+ "required": false
+ },
"responses": {
"default": {
- "description": "successful operation"
+ "description": "successful operation",
+ "content": {}
}
- }
+ },
+ "x-codegen-request-body-name": "body"
}
},
"/onap/so/infra/orchestrationTasks/{version}/{taskId}/abort": {
@@ -957,39 +986,43 @@
"onapsoinfraorchestrationTasks"
],
"summary": "abort orchestrationTask for a given taskId",
- "description": "",
"operationId": "abortOrchestrationTask",
- "produces": [
- "application/json"
- ],
"parameters": [
{
- "in": "body",
- "name": "body",
- "required": false,
- "schema": {
- "type": "string"
- }
- },
- {
"name": "taskId",
"in": "path",
"required": true,
- "type": "string"
+ "schema": {
+ "type": "string"
+ }
},
{
"name": "version",
"in": "path",
"required": true,
- "type": "string",
- "pattern": "[vV][4-7]"
+ "schema": {
+ "pattern": "[vV][4-7]",
+ "type": "string"
+ }
}
],
+ "requestBody": {
+ "content": {
+ "*/*": {
+ "schema": {
+ "type": "string"
+ }
+ }
+ },
+ "required": false
+ },
"responses": {
"default": {
- "description": "successful operation"
+ "description": "successful operation",
+ "content": {}
}
- }
+ },
+ "x-codegen-request-body-name": "body"
}
},
"/onap/so/infra/serviceInstantiation/{version}/serviceInstances/{serviceInstanceId}/vnfs/{vnfInstanceId}/vfModules/{vfmoduleInstanceId}/deactivateAndCloudDelete": {
@@ -998,54 +1031,59 @@
"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]"
+ "schema": {
+ "pattern": "[vV][7]",
+ "type": "string"
+ }
},
{
"name": "serviceInstanceId",
"in": "path",
"required": true,
- "type": "string"
+ "schema": {
+ "type": "string"
+ }
},
{
"name": "vnfInstanceId",
"in": "path",
"required": true,
- "type": "string"
+ "schema": {
+ "type": "string"
+ }
},
{
"name": "vfmoduleInstanceId",
"in": "path",
"required": true,
- "type": "string"
+ "schema": {
+ "type": "string"
+ }
}
],
+ "requestBody": {
+ "content": {
+ "application/json": {
+ "schema": {
+ "type": "string"
+ }
+ }
+ },
+ "required": false
+ },
"responses": {
"default": {
- "description": "successful operation"
+ "description": "successful operation",
+ "content": {}
}
- }
+ },
+ "x-codegen-request-body-name": "body"
}
},
"/onap/so/infra/serviceInstantiation/{version}/serviceInstances/{serviceInstanceId}/configurations/{configurationInstanceId}/enablePort": {
@@ -1054,48 +1092,51 @@
"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]"
+ "schema": {
+ "pattern": "[vV][5-7]",
+ "type": "string"
+ }
},
{
"name": "serviceInstanceId",
"in": "path",
"required": true,
- "type": "string"
+ "schema": {
+ "type": "string"
+ }
},
{
"name": "configurationInstanceId",
"in": "path",
"required": true,
- "type": "string"
+ "schema": {
+ "type": "string"
+ }
}
],
+ "requestBody": {
+ "content": {
+ "application/json": {
+ "schema": {
+ "type": "string"
+ }
+ }
+ },
+ "required": false
+ },
"responses": {
"default": {
- "description": "successful operation"
+ "description": "successful operation",
+ "content": {}
}
- }
+ },
+ "x-codegen-request-body-name": "body"
}
},
"/onap/so/infra/serviceInstantiation/{version}/serviceInstances/{serviceInstanceId}/configurations/{configurationInstanceId}/disablePort": {
@@ -1104,48 +1145,51 @@
"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]"
+ "schema": {
+ "pattern": "[vV][5-7]",
+ "type": "string"
+ }
},
{
"name": "serviceInstanceId",
"in": "path",
"required": true,
- "type": "string"
+ "schema": {
+ "type": "string"
+ }
},
{
"name": "configurationInstanceId",
"in": "path",
"required": true,
- "type": "string"
+ "schema": {
+ "type": "string"
+ }
}
],
+ "requestBody": {
+ "content": {
+ "application/json": {
+ "schema": {
+ "type": "string"
+ }
+ }
+ },
+ "required": false
+ },
"responses": {
"default": {
- "description": "successful operation"
+ "description": "successful operation",
+ "content": {}
}
- }
+ },
+ "x-codegen-request-body-name": "body"
}
},
"/onap/so/infra/serviceInstantiation/{version}/serviceInstances/{serviceInstanceId}/configurations/{configurationInstanceId}/activate": {
@@ -1154,48 +1198,51 @@
"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]"
+ "schema": {
+ "pattern": "[vV][5-7]",
+ "type": "string"
+ }
},
{
"name": "serviceInstanceId",
"in": "path",
"required": true,
- "type": "string"
+ "schema": {
+ "type": "string"
+ }
},
{
"name": "configurationInstanceId",
"in": "path",
"required": true,
- "type": "string"
+ "schema": {
+ "type": "string"
+ }
}
],
+ "requestBody": {
+ "content": {
+ "application/json": {
+ "schema": {
+ "type": "string"
+ }
+ }
+ },
+ "required": false
+ },
"responses": {
"default": {
- "description": "successful operation"
+ "description": "successful operation",
+ "content": {}
}
- }
+ },
+ "x-codegen-request-body-name": "body"
}
},
"/onap/so/infra/serviceInstantiation/{version}/serviceInstances/{serviceInstanceId}/configurations/{configurationInstanceId}/deactivate": {
@@ -1204,48 +1251,51 @@
"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]"
+ "schema": {
+ "pattern": "[vV][5-7]",
+ "type": "string"
+ }
},
{
"name": "serviceInstanceId",
"in": "path",
"required": true,
- "type": "string"
+ "schema": {
+ "type": "string"
+ }
},
{
"name": "configurationInstanceId",
"in": "path",
"required": true,
- "type": "string"
+ "schema": {
+ "type": "string"
+ }
}
],
+ "requestBody": {
+ "content": {
+ "application/json": {
+ "schema": {
+ "type": "string"
+ }
+ }
+ },
+ "required": false
+ },
"responses": {
"default": {
- "description": "successful operation"
+ "description": "successful operation",
+ "content": {}
}
- }
+ },
+ "x-codegen-request-body-name": "body"
}
},
"/onap/so/infra/serviceInstantiation/{version}/serviceInstances/{serviceInstanceId}/addRelationships": {
@@ -1254,42 +1304,43 @@
"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]"
+ "schema": {
+ "pattern": "[vV][6-7]",
+ "type": "string"
+ }
},
{
"name": "serviceInstanceId",
"in": "path",
"required": true,
- "type": "string"
+ "schema": {
+ "type": "string"
+ }
}
],
+ "requestBody": {
+ "content": {
+ "application/json": {
+ "schema": {
+ "type": "string"
+ }
+ }
+ },
+ "required": false
+ },
"responses": {
"default": {
- "description": "successful operation"
+ "description": "successful operation",
+ "content": {}
}
- }
+ },
+ "x-codegen-request-body-name": "body"
}
},
"/onap/so/infra/serviceInstantiation/{version}/serviceInstances/{serviceInstanceId}/vnfs/{vnfInstanceId}/vfModules/scaleOut": {
@@ -1298,48 +1349,51 @@
"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]"
+ "schema": {
+ "pattern": "[vV][7]",
+ "type": "string"
+ }
},
{
"name": "serviceInstanceId",
"in": "path",
"required": true,
- "type": "string"
+ "schema": {
+ "type": "string"
+ }
},
{
"name": "vnfInstanceId",
"in": "path",
"required": true,
- "type": "string"
+ "schema": {
+ "type": "string"
+ }
}
],
+ "requestBody": {
+ "content": {
+ "application/json": {
+ "schema": {
+ "type": "string"
+ }
+ }
+ },
+ "required": false
+ },
"responses": {
"default": {
- "description": "successful operation"
+ "description": "successful operation",
+ "content": {}
}
- }
+ },
+ "x-codegen-request-body-name": "body"
}
},
"/onap/so/infra/serviceInstantiation/{version}/serviceInstances/{serviceInstanceId}/vnfs/{vnfInstanceId}/inPlaceSoftwareUpdate": {
@@ -1348,48 +1402,51 @@
"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]"
+ "schema": {
+ "pattern": "[vV][6-7]",
+ "type": "string"
+ }
},
{
"name": "serviceInstanceId",
"in": "path",
"required": true,
- "type": "string"
+ "schema": {
+ "type": "string"
+ }
},
{
"name": "vnfInstanceId",
"in": "path",
"required": true,
- "type": "string"
+ "schema": {
+ "type": "string"
+ }
}
],
+ "requestBody": {
+ "content": {
+ "application/json": {
+ "schema": {
+ "type": "string"
+ }
+ }
+ },
+ "required": false
+ },
"responses": {
"default": {
- "description": "successful operation"
+ "description": "successful operation",
+ "content": {}
}
- }
+ },
+ "x-codegen-request-body-name": "body"
}
},
"/onap/so/infra/serviceInstantiation/{version}/serviceInstances/{serviceInstanceId}/vnfs/{vnfInstanceId}/applyUpdatedConfig": {
@@ -1398,86 +1455,453 @@
"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]"
+ "schema": {
+ "pattern": "[vV][6-7]",
+ "type": "string"
+ }
},
{
"name": "serviceInstanceId",
"in": "path",
"required": true,
- "type": "string"
+ "schema": {
+ "type": "string"
+ }
},
{
"name": "vnfInstanceId",
"in": "path",
"required": true,
- "type": "string"
+ "schema": {
+ "type": "string"
+ }
}
],
+ "requestBody": {
+ "content": {
+ "application/json": {
+ "schema": {
+ "type": "string"
+ }
+ }
+ },
+ "required": false
+ },
"responses": {
"default": {
- "description": "successful operation"
+ "description": "successful operation",
+ "content": {}
}
- }
+ },
+ "x-codegen-request-body-name": "body"
}
},
"/onap/so/infra/serviceInstantiation/{version}/serviceInstances": {
"post": {
"tags": [
- "onapsoinfraserviceInstantiation"
+ "SO service Instantiation"
],
"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]"
+ "schema": {
+ "pattern": "[vV][5-7]",
+ "type": "string"
+ }
}
],
+ "requestBody": {
+ "content": {
+ "application/json": {
+ "schema": {
+ "type": "array",
+ "items": {
+ "$ref": "#/components/schemas/CreateServiceInstanceParamaters"
+ }
+ },
+ "examples": {
+ "cnf": {
+ "summary": "CNF",
+ "value": {
+ "requestDetails": {
+ "modelInfo": {
+ "modelInvariantId": "0b1f4362-fed9-45fc-a2e1-6fd3e52f4c1a",
+ "modelType": "service",
+ "modelName": "service_test_1",
+ "modelVersion": "2.0",
+ "modelVersionId": "beb1259e-dad8-4ee0-a40e-1af20f775d54",
+ "modelUuid": "beb1259e-dad8-4ee0-a40e-1af20f775d54",
+ "modelInvariantUuid": "0b1f4362-fed9-45fc-a2e1-6fd3e52f4c1a"
+ },
+ "subscriberInfo": {
+ "globalSubscriberId": "basicnf-customer"
+ },
+ "requestInfo": {
+ "suppressRollback": false,
+ "productFamilyId": "bb0838ec-2ef7-4382-820f-0d34efdb1ccd",
+ "requestorId": "Portal",
+ "instanceName": "ORAN_CU_3",
+ "source": "VID"
+ },
+ "project": {
+ "projectName": "Project-5GCustomer"
+ },
+ "owningEntity": {
+ "owningEntityId": "67f2e84c-734d-4e90-a1e4-d2ffa2e75849",
+ "owningEntityName": "OE-5GCustomer"
+ },
+ "requestParameters": {
+ "subscriptionServiceType": "5G",
+ "aLaCarte": false,
+ "usePreload": false,
+ "userParams": [
+ {
+ "Homing_Solution": false
+ },
+ {
+ "service": {
+ "instanceParams": [
+ {}
+ ],
+ "instanceName": "service_test_1",
+ "resources": {
+ "vnfs": [
+ {
+ "modelInfo": {
+ "modelName": "cu_sim_1901",
+ "modelVersionId": "40f11fb2-931d-408d-a949-99e9289d3c02",
+ "modelInvariantUuid": "f6c202d8-94bd-496e-878e-448da0ed0a6a",
+ "modelVersion": "1.0",
+ "modelCustomizationId": "5a2eec30-80c5-47cc-9117-3d8659c38202",
+ "modelInstanceName": "cu_sim_2022 0"
+ },
+ "cloudConfiguration": {
+ "cloudOwner": "k8scloudowner4",
+ "lcpCloudRegionId": "k8sregionfour",
+ "tenantId": "6bbd2981b210461dbc8fe846df1a7808"
+ },
+ "platform": {
+ "platformName": "test"
+ },
+ "lineOfBusiness": {
+ "lineOfBusinessName": "LOB-5G"
+ },
+ "productFamilyId": "productFamilyId123",
+ "instanceName": "CUCP_1",
+ "instanceParams": [
+ {}
+ ],
+ "vfModules": [
+ {
+ "modelInfo": {
+ "modelName": "CuSim1901..helm_cucp..module-1",
+ "modelVersionId": "9b7723ff-25ac-44af-a7ac-9cfbf2d4285f",
+ "modelInvariantUuid": "63af164d-9276-4e08-98fb-059d1c5b80e4",
+ "modelVersion": 1,
+ "modelCustomizationId": "b7a0bd1d-4832-4ad3-9199-6e1eab543a45"
+ },
+ "instanceName": "module-1",
+ "instanceParams": [
+ {}
+ ]
+ }
+ ]
+ }
+ ]
+ },
+ "modelInfo": {
+ "modelVersion": "2.0",
+ "modelVersionId": "77bea973-570b-4f73-9049-87c37d3de8ca",
+ "modelInvariantId": "b7a3f00b-8fb2-4791-b0ff-71d83f97ab0b",
+ "modelName": "service_model",
+ "modelType": "service"
+ }
+ }
+ }
+ ]
+ }
+ }
+ }
+ },
+ "pnf": {
+ "summary": "PNF",
+ "value": {
+ "requestDetails": {
+ "modelInfo": {
+ "modelInvariantId": "040a21d5-b208-490b-9c69-c12ae2b2b958",
+ "modelName": "ORAN_RU_SIM_Service",
+ "modelType": "service",
+ "modelVersion": "2.0",
+ "modelVersionId": "2f40ddbd-0acc-4e59-8fb3-77a6f84ae28c"
+ },
+ "owningEntity": {
+ "owningEntityId": "3804b4ac-4d9c-482a-ad0b-5806f8849907",
+ "owningEntityName": "oran_owner"
+ },
+ "project": {
+ "projectName": "oran_project"
+ },
+ "requestInfo": {
+ "instanceName": "ORAN_RU_SIM",
+ "productFamilyId": "oran-service",
+ "requestorId": "PORTAL",
+ "source": "PORTAL",
+ "suppressRollback": false
+ },
+ "requestParameters": {
+ "aLaCarte": false,
+ "subscriptionServiceType": "oran_service",
+ "userParams": [
+ {
+ "Homing_Solution": "none"
+ },
+ {
+ "service": {
+ "instanceName": "ORAN_RU_SIM_Service_1",
+ "instanceParams": [],
+ "modelInfo": {
+ "modelInvariantId": "040a21d5-b208-490b-9c69-c12ae2b2b958",
+ "modelName": "ORAN_RU_SIM_Service",
+ "modelType": "service",
+ "modelVersion": "2.0",
+ "modelVersionId": "2f40ddbd-0acc-4e59-8fb3-77a6f84ae28c"
+ },
+ "resources": {
+ "pnfs": [
+ {
+ "instanceName": "ORAN_RU_PNF_1",
+ "instanceParams": [],
+ "lineOfBusiness": {
+ "lineOfBusinessName": "oran_lob"
+ },
+ "modelInfo": {
+ "modelCustomizationId": "5e3a18ce-8bbd-40fc-a197-becca92ac05b",
+ "modelCustomizationName": "ORAN_RU_PNF_1",
+ "modelInstanceName": "ORAN_RU_PNF_ORAN_RU_SIM_Service",
+ "modelInvariantId": "486f38e8-1710-4875-b732-a8b3301a7786",
+ "modelName": "ORAN_RU_PNF",
+ "modelType": "pnf",
+ "modelVersion": "1.0",
+ "modelVersionId": "e95310e1-e1d2-471f-aa26-d24849a7e61a"
+ },
+ "platform": {
+ "platformName": "oran_platform"
+ },
+ "productFamilyId": "oran-service"
+ }
+ ],
+ "vnfs": []
+ }
+ }
+ }
+ ]
+ },
+ "subscriberInfo": {
+ "globalSubscriberId": "ORANTownCustomer"
+ }
+ }
+ }
+ },
+ "Composed service in two clouds": {
+ "summary": "Composed service in two clouds",
+ "value": {
+ "requestDetails": {
+ "modelInfo": {
+ "modelInvariantId": "0592b699-3f7b-424f-857b-d956f15c9447",
+ "modelInvariantUuid": "0592b699-3f7b-424f-857b-d956f15c9447",
+ "modelName": "parent_svc_2912",
+ "modelType": "service",
+ "modelUuid": "1c889525-46c5-4b22-8f26-17913dd3172a",
+ "modelVersion": "2.0",
+ "modelVersionId": "1c889525-46c5-4b22-8f26-17913dd3172a"
+ },
+ "owningEntity": {
+ "owningEntityId": "67f2e84c-734d-4e90-a1e4-d2ffa2e75849",
+ "owningEntityName": "OE-5GCustomer"
+ },
+ "project": {
+ "projectName": "Project-5GCustomer"
+ },
+ "requestInfo": {
+ "instanceName": "parent_two_k8s",
+ "productFamilyId": "productFamilyId123",
+ "requestorId": "a9a77d5a-123e-4ca2-9eb9-0b015d2ee0fb",
+ "source": "Postman",
+ "suppressRollback": false
+ },
+ "requestParameters": {
+ "aLaCarte": false,
+ "subscriptionServiceType": "5G",
+ "usePreload": false,
+ "userParams": [
+ {
+ "Homing_Solution": "none"
+ },
+ {
+ "service": {
+ "instanceName": "parent_two_k8s",
+ "instanceParams": [
+ {}
+ ],
+ "modelInfo": {
+ "modelInvariantId": "0592b699-3f7b-424f-857b-d956f15c9447",
+ "modelName": "parent_svc_2912",
+ "modelType": "service",
+ "modelVersion": "2.0",
+ "modelVersionId": "1c889525-46c5-4b22-8f26-17913dd3172a"
+ },
+ "resources": {
+ "services": [
+ {
+ "instanceName": "childsvc_1201_01",
+ "instanceParams": [
+ {}
+ ],
+ "modelInfo": {
+ "modelInvariantId": "19d8f134-8bdb-46ed-84a9-046c9314d9a9",
+ "modelName": "childsvc_2912",
+ "modelType": "service",
+ "modelVersion": "2.0",
+ "modelVersionId": "b2ae12eb-3854-4405-a125-c63c16e6fa23"
+ },
+ "resources": {
+ "vnfs": [
+ {
+ "cloudConfiguration": {
+ "cloudOwner": "k8scloudowner4",
+ "lcpCloudRegionId": "k8sregionfour",
+ "tenantId": "6bbd2981b210461dbc8fe846df1a7808"
+ },
+ "instanceName": "CUCP_1",
+ "instanceParams": [
+ {}
+ ],
+ "lineOfBusiness": {
+ "lineOfBusinessName": "LOB-5GCustomer"
+ },
+ "modelInfo": {
+ "modelCustomizationId": "26be9ecc-43b2-47e4-9666-915701b87cbc",
+ "modelInstanceName": "CUCP_2912 0",
+ "modelInvariantUuid": "a3c9fa51-ff3c-4b6e-a1bd-73eb1ffb06c0",
+ "modelName": "CUCP_2912",
+ "modelVersion": "1.0",
+ "modelVersionId": "4a7aa841-09a5-493b-a52f-26aaa1f62c20"
+ },
+ "platform": {
+ "platformName": "test"
+ },
+ "productFamilyId": "productFamilyId123",
+ "vfModules": [
+ {
+ "instanceName": "module-1",
+ "instanceParams": [
+ {}
+ ],
+ "modelInfo": {
+ "modelCustomizationId": "fe39f295-253c-41ef-b07c-607aec86ea52",
+ "modelInvariantUuid": "051d1f8a-d5bd-4509-9457-0ef756dc5a33",
+ "modelName": "Cucp2912..helm_cucp..module-1",
+ "modelVersion": "1",
+ "modelVersionId": "3f70da13-e246-4abd-8fe5-90d3f8fbc212"
+ }
+ }
+ ]
+ }
+ ]
+ }
+ },
+ {
+ "instanceName": "childsvc_1201_02",
+ "instanceParams": [
+ {}
+ ],
+ "modelInfo": {
+ "modelInvariantId": "19d8f134-8bdb-46ed-84a9-046c9314d9a9",
+ "modelName": "childsvc_2912",
+ "modelType": "service",
+ "modelVersion": "2.0",
+ "modelVersionId": "b2ae12eb-3854-4405-a125-c63c16e6fa23"
+ },
+ "resources": {
+ "vnfs": [
+ {
+ "cloudConfiguration": {
+ "cloudOwner": "k8scloudowner4",
+ "lcpCloudRegionId": "k8sregionone",
+ "tenantId": "3fd21203fd274e10a30f1fd4c355d80b"
+ },
+ "instanceName": "CUCP_2",
+ "instanceParams": [
+ {}
+ ],
+ "lineOfBusiness": {
+ "lineOfBusinessName": "LOB-5GCustomer"
+ },
+ "modelInfo": {
+ "modelCustomizationId": "26be9ecc-43b2-47e4-9666-915701b87cbc",
+ "modelInstanceName": "CUCP_2912 0",
+ "modelInvariantUuid": "a3c9fa51-ff3c-4b6e-a1bd-73eb1ffb06c0",
+ "modelName": "CUCP_2912",
+ "modelVersion": "1.0",
+ "modelVersionId": "4a7aa841-09a5-493b-a52f-26aaa1f62c20"
+ },
+ "platform": {
+ "platformName": "test"
+ },
+ "productFamilyId": "productFamilyId123",
+ "vfModules": [
+ {
+ "instanceName": "module-2",
+ "instanceParams": [
+ {}
+ ],
+ "modelInfo": {
+ "modelCustomizationId": "fe39f295-253c-41ef-b07c-607aec86ea52",
+ "modelInvariantUuid": "051d1f8a-d5bd-4509-9457-0ef756dc5a33",
+ "modelName": "Cucp2912..helm_cucp..module-1",
+ "modelVersion": "1",
+ "modelVersionId": "3f70da13-e246-4abd-8fe5-90d3f8fbc212"
+ }
+ }
+ ]
+ }
+ ]
+ }
+ }
+ ]
+ }
+ }
+ }
+ ]
+ },
+ "subscriberInfo": {
+ "globalSubscriberId": "5GCustomer"
+ }
+ }
+ }
+ }
+ }
+ }
+ },
+ "required": false
+ },
"responses": {
"default": {
- "description": "successful operation"
+ "description": "successful operation",
+ "content": {}
}
- }
+ },
+ "x-codegen-request-body-name": "requestBody"
}
},
"/onap/so/infra/serviceInstantiation/{version}/serviceInstances/{serviceInstanceId}/activate": {
@@ -1486,42 +1910,43 @@
"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]"
+ "schema": {
+ "pattern": "[vV][5-7]",
+ "type": "string"
+ }
},
{
"name": "serviceInstanceId",
"in": "path",
"required": true,
- "type": "string"
+ "schema": {
+ "type": "string"
+ }
}
],
+ "requestBody": {
+ "content": {
+ "application/json": {
+ "schema": {
+ "type": "string"
+ }
+ }
+ },
+ "required": false
+ },
"responses": {
"default": {
- "description": "successful operation"
+ "description": "successful operation",
+ "content": {}
}
- }
+ },
+ "x-codegen-request-body-name": "body"
}
},
"/onap/so/infra/serviceInstantiation/{version}/serviceInstances/{serviceInstanceId}/deactivate": {
@@ -1530,42 +1955,43 @@
"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]"
+ "schema": {
+ "pattern": "[vV][5-7]",
+ "type": "string"
+ }
},
{
"name": "serviceInstanceId",
"in": "path",
"required": true,
- "type": "string"
+ "schema": {
+ "type": "string"
+ }
}
],
+ "requestBody": {
+ "content": {
+ "application/json": {
+ "schema": {
+ "type": "string"
+ }
+ }
+ },
+ "required": false
+ },
"responses": {
"default": {
- "description": "successful operation"
+ "description": "successful operation",
+ "content": {}
}
- }
+ },
+ "x-codegen-request-body-name": "body"
}
},
"/onap/so/infra/serviceInstantiation/{version}/serviceInstances/{serviceInstanceId}": {
@@ -1574,42 +2000,43 @@
"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]"
+ "schema": {
+ "pattern": "[vV][5-7]",
+ "type": "string"
+ }
},
{
"name": "serviceInstanceId",
"in": "path",
"required": true,
- "type": "string"
+ "schema": {
+ "type": "string"
+ }
}
],
+ "requestBody": {
+ "content": {
+ "application/json": {
+ "schema": {
+ "type": "string"
+ }
+ }
+ },
+ "required": false
+ },
"responses": {
"default": {
- "description": "successful operation"
+ "description": "successful operation",
+ "content": {}
}
- }
+ },
+ "x-codegen-request-body-name": "body"
}
},
"/onap/so/infra/serviceInstantiation/{version}/serviceInstances/assign": {
@@ -1618,36 +2045,35 @@
"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]"
+ "schema": {
+ "pattern": "[vV][7]",
+ "type": "string"
+ }
}
],
+ "requestBody": {
+ "content": {
+ "application/json": {
+ "schema": {
+ "type": "string"
+ }
+ }
+ },
+ "required": false
+ },
"responses": {
"default": {
- "description": "successful operation"
+ "description": "successful operation",
+ "content": {}
}
- }
+ },
+ "x-codegen-request-body-name": "body"
}
},
"/onap/so/infra/serviceInstantiation/{version}/serviceInstances/{serviceInstanceId}/unassign": {
@@ -1656,42 +2082,43 @@
"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]"
+ "schema": {
+ "pattern": "[vV][7]",
+ "type": "string"
+ }
},
{
"name": "serviceInstanceId",
"in": "path",
"required": true,
- "type": "string"
+ "schema": {
+ "type": "string"
+ }
}
],
+ "requestBody": {
+ "content": {
+ "application/json": {
+ "schema": {
+ "type": "string"
+ }
+ }
+ },
+ "required": false
+ },
"responses": {
"default": {
- "description": "successful operation"
+ "description": "successful operation",
+ "content": {}
}
- }
+ },
+ "x-codegen-request-body-name": "body"
}
},
"/onap/so/infra/serviceInstantiation/{version}/serviceInstances/{serviceInstanceId}/configurations": {
@@ -1700,42 +2127,43 @@
"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]"
+ "schema": {
+ "pattern": "[vV][5-7]",
+ "type": "string"
+ }
},
{
"name": "serviceInstanceId",
"in": "path",
"required": true,
- "type": "string"
+ "schema": {
+ "type": "string"
+ }
}
],
+ "requestBody": {
+ "content": {
+ "application/json": {
+ "schema": {
+ "type": "string"
+ }
+ }
+ },
+ "required": false
+ },
"responses": {
"default": {
- "description": "successful operation"
+ "description": "successful operation",
+ "content": {}
}
- }
+ },
+ "x-codegen-request-body-name": "body"
}
},
"/onap/so/infra/serviceInstantiation/{version}/serviceInstances/{serviceInstanceId}/configurations/{configurationInstanceId}": {
@@ -1744,48 +2172,51 @@
"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]"
+ "schema": {
+ "pattern": "[vV][5-7]",
+ "type": "string"
+ }
},
{
"name": "serviceInstanceId",
"in": "path",
"required": true,
- "type": "string"
+ "schema": {
+ "type": "string"
+ }
},
{
"name": "configurationInstanceId",
"in": "path",
"required": true,
- "type": "string"
+ "schema": {
+ "type": "string"
+ }
}
],
+ "requestBody": {
+ "content": {
+ "application/json": {
+ "schema": {
+ "type": "string"
+ }
+ }
+ },
+ "required": false
+ },
"responses": {
"default": {
- "description": "successful operation"
+ "description": "successful operation",
+ "content": {}
}
- }
+ },
+ "x-codegen-request-body-name": "body"
}
},
"/onap/so/infra/serviceInstantiation/{version}/serviceInstances/{serviceInstanceId}/removeRelationships": {
@@ -1794,42 +2225,43 @@
"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]"
+ "schema": {
+ "pattern": "[vV][6-7]",
+ "type": "string"
+ }
},
{
"name": "serviceInstanceId",
"in": "path",
"required": true,
- "type": "string"
+ "schema": {
+ "type": "string"
+ }
}
],
+ "requestBody": {
+ "content": {
+ "application/json": {
+ "schema": {
+ "type": "string"
+ }
+ }
+ },
+ "required": false
+ },
"responses": {
"default": {
- "description": "successful operation"
+ "description": "successful operation",
+ "content": {}
}
- }
+ },
+ "x-codegen-request-body-name": "body"
}
},
"/onap/so/infra/serviceInstantiation/{version}/serviceInstances/{serviceInstanceId}/vnfs": {
@@ -1838,42 +2270,43 @@
"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]"
+ "schema": {
+ "pattern": "[vV][5-7]",
+ "type": "string"
+ }
},
{
"name": "serviceInstanceId",
"in": "path",
"required": true,
- "type": "string"
+ "schema": {
+ "type": "string"
+ }
}
],
+ "requestBody": {
+ "content": {
+ "application/json": {
+ "schema": {
+ "type": "string"
+ }
+ }
+ },
+ "required": false
+ },
"responses": {
"default": {
- "description": "successful operation"
+ "description": "successful operation",
+ "content": {}
}
- }
+ },
+ "x-codegen-request-body-name": "body"
}
},
"/onap/so/infra/serviceInstantiation/{version}/serviceInstances/{serviceInstanceId}/vnfs/{vnfInstanceId}/replace": {
@@ -1882,48 +2315,51 @@
"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]"
+ "schema": {
+ "pattern": "[vV][5-7]",
+ "type": "string"
+ }
},
{
"name": "serviceInstanceId",
"in": "path",
"required": true,
- "type": "string"
+ "schema": {
+ "type": "string"
+ }
},
{
"name": "vnfInstanceId",
"in": "path",
"required": true,
- "type": "string"
+ "schema": {
+ "type": "string"
+ }
}
],
+ "requestBody": {
+ "content": {
+ "application/json": {
+ "schema": {
+ "type": "string"
+ }
+ }
+ },
+ "required": false
+ },
"responses": {
"default": {
- "description": "successful operation"
+ "description": "successful operation",
+ "content": {}
}
- }
+ },
+ "x-codegen-request-body-name": "body"
}
},
"/onap/so/infra/serviceInstantiation/{version}/serviceInstances/{serviceInstanceId}/vnfs/{vnfInstanceId}": {
@@ -1932,96 +2368,102 @@
"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]"
+ "schema": {
+ "pattern": "[vV][5-7]",
+ "type": "string"
+ }
},
{
"name": "serviceInstanceId",
"in": "path",
"required": true,
- "type": "string"
+ "schema": {
+ "type": "string"
+ }
},
{
"name": "vnfInstanceId",
"in": "path",
"required": true,
- "type": "string"
+ "schema": {
+ "type": "string"
+ }
}
],
+ "requestBody": {
+ "content": {
+ "application/json": {
+ "schema": {
+ "type": "string"
+ }
+ }
+ },
+ "required": false
+ },
"responses": {
"default": {
- "description": "successful operation"
+ "description": "successful operation",
+ "content": {}
}
- }
+ },
+ "x-codegen-request-body-name": "body"
},
"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]"
+ "schema": {
+ "pattern": "[vV][5-7]",
+ "type": "string"
+ }
},
{
"name": "serviceInstanceId",
"in": "path",
"required": true,
- "type": "string"
+ "schema": {
+ "type": "string"
+ }
},
{
"name": "vnfInstanceId",
"in": "path",
"required": true,
- "type": "string"
+ "schema": {
+ "type": "string"
+ }
}
],
+ "requestBody": {
+ "content": {
+ "application/json": {
+ "schema": {
+ "type": "string"
+ }
+ }
+ },
+ "required": false
+ },
"responses": {
"default": {
- "description": "successful operation"
+ "description": "successful operation",
+ "content": {}
}
- }
+ },
+ "x-codegen-request-body-name": "body"
}
},
"/onap/so/infra/serviceInstantiation/{version}/serviceInstances/{serviceInstanceId}/vnfs/{vnfInstanceId}/vfModules": {
@@ -2030,48 +2472,51 @@
"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]"
+ "schema": {
+ "pattern": "[vV][5-7]",
+ "type": "string"
+ }
},
{
"name": "serviceInstanceId",
"in": "path",
"required": true,
- "type": "string"
+ "schema": {
+ "type": "string"
+ }
},
{
"name": "vnfInstanceId",
"in": "path",
"required": true,
- "type": "string"
+ "schema": {
+ "type": "string"
+ }
}
],
+ "requestBody": {
+ "content": {
+ "application/json": {
+ "schema": {
+ "type": "string"
+ }
+ }
+ },
+ "required": false
+ },
"responses": {
"default": {
- "description": "successful operation"
+ "description": "successful operation",
+ "content": {}
}
- }
+ },
+ "x-codegen-request-body-name": "body"
}
},
"/onap/so/infra/serviceInstantiation/{version}/serviceInstances/{serviceInstanceId}/vnfs/{vnfInstanceId}/vfModules/{vfmoduleInstanceId}/replace": {
@@ -2080,54 +2525,59 @@
"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]"
+ "schema": {
+ "pattern": "[vV][5-7]",
+ "type": "string"
+ }
},
{
"name": "serviceInstanceId",
"in": "path",
"required": true,
- "type": "string"
+ "schema": {
+ "type": "string"
+ }
},
{
"name": "vnfInstanceId",
"in": "path",
"required": true,
- "type": "string"
+ "schema": {
+ "type": "string"
+ }
},
{
"name": "vfmoduleInstanceId",
"in": "path",
"required": true,
- "type": "string"
+ "schema": {
+ "type": "string"
+ }
}
],
+ "requestBody": {
+ "content": {
+ "application/json": {
+ "schema": {
+ "type": "string"
+ }
+ }
+ },
+ "required": false
+ },
"responses": {
"default": {
- "description": "successful operation"
+ "description": "successful operation",
+ "content": {}
}
- }
+ },
+ "x-codegen-request-body-name": "body"
}
},
"/onap/so/infra/serviceInstantiation/{version}/serviceInstances/{serviceInstanceId}/vnfs/{vnfInstanceId}/vfModules/{vfmoduleInstanceId}": {
@@ -2136,108 +2586,118 @@
"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]"
+ "schema": {
+ "pattern": "[vV][5-7]",
+ "type": "string"
+ }
},
{
"name": "serviceInstanceId",
"in": "path",
"required": true,
- "type": "string"
+ "schema": {
+ "type": "string"
+ }
},
{
"name": "vnfInstanceId",
"in": "path",
"required": true,
- "type": "string"
+ "schema": {
+ "type": "string"
+ }
},
{
"name": "vfmoduleInstanceId",
"in": "path",
"required": true,
- "type": "string"
+ "schema": {
+ "type": "string"
+ }
}
],
+ "requestBody": {
+ "content": {
+ "application/json": {
+ "schema": {
+ "type": "string"
+ }
+ }
+ },
+ "required": false
+ },
"responses": {
"default": {
- "description": "successful operation"
+ "description": "successful operation",
+ "content": {}
}
- }
+ },
+ "x-codegen-request-body-name": "body"
},
"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]"
+ "schema": {
+ "pattern": "[vV][5-7]",
+ "type": "string"
+ }
},
{
"name": "serviceInstanceId",
"in": "path",
"required": true,
- "type": "string"
+ "schema": {
+ "type": "string"
+ }
},
{
"name": "vnfInstanceId",
"in": "path",
"required": true,
- "type": "string"
+ "schema": {
+ "type": "string"
+ }
},
{
"name": "vfmoduleInstanceId",
"in": "path",
"required": true,
- "type": "string"
+ "schema": {
+ "type": "string"
+ }
}
],
+ "requestBody": {
+ "content": {
+ "application/json": {
+ "schema": {
+ "type": "string"
+ }
+ }
+ },
+ "required": false
+ },
"responses": {
"default": {
- "description": "successful operation"
+ "description": "successful operation",
+ "content": {}
}
- }
+ },
+ "x-codegen-request-body-name": "body"
}
},
"/onap/so/infra/serviceInstantiation/{version}/serviceInstances/{serviceInstanceId}/vnfs/{vnfInstanceId}/volumeGroups": {
@@ -2246,48 +2706,51 @@
"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]"
+ "schema": {
+ "pattern": "[vV][5-7]",
+ "type": "string"
+ }
},
{
"name": "serviceInstanceId",
"in": "path",
"required": true,
- "type": "string"
+ "schema": {
+ "type": "string"
+ }
},
{
"name": "vnfInstanceId",
"in": "path",
"required": true,
- "type": "string"
+ "schema": {
+ "type": "string"
+ }
}
],
+ "requestBody": {
+ "content": {
+ "application/json": {
+ "schema": {
+ "type": "string"
+ }
+ }
+ },
+ "required": false
+ },
"responses": {
"default": {
- "description": "successful operation"
+ "description": "successful operation",
+ "content": {}
}
- }
+ },
+ "x-codegen-request-body-name": "body"
}
},
"/onap/so/infra/serviceInstantiation/{version}/serviceInstances/{serviceInstanceId}/vnfs/{vnfInstanceId}/volumeGroups/{volumeGroupInstanceId}": {
@@ -2296,108 +2759,118 @@
"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]"
+ "schema": {
+ "pattern": "[vV][5-7]",
+ "type": "string"
+ }
},
{
"name": "serviceInstanceId",
"in": "path",
"required": true,
- "type": "string"
+ "schema": {
+ "type": "string"
+ }
},
{
"name": "vnfInstanceId",
"in": "path",
"required": true,
- "type": "string"
+ "schema": {
+ "type": "string"
+ }
},
{
"name": "volumeGroupInstanceId",
"in": "path",
"required": true,
- "type": "string"
+ "schema": {
+ "type": "string"
+ }
}
],
+ "requestBody": {
+ "content": {
+ "application/json": {
+ "schema": {
+ "type": "string"
+ }
+ }
+ },
+ "required": false
+ },
"responses": {
"default": {
- "description": "successful operation"
+ "description": "successful operation",
+ "content": {}
}
- }
+ },
+ "x-codegen-request-body-name": "body"
},
"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]"
+ "schema": {
+ "pattern": "[vV][5-7]",
+ "type": "string"
+ }
},
{
"name": "serviceInstanceId",
"in": "path",
"required": true,
- "type": "string"
+ "schema": {
+ "type": "string"
+ }
},
{
"name": "vnfInstanceId",
"in": "path",
"required": true,
- "type": "string"
+ "schema": {
+ "type": "string"
+ }
},
{
"name": "volumeGroupInstanceId",
"in": "path",
"required": true,
- "type": "string"
+ "schema": {
+ "type": "string"
+ }
}
],
+ "requestBody": {
+ "content": {
+ "application/json": {
+ "schema": {
+ "type": "string"
+ }
+ }
+ },
+ "required": false
+ },
"responses": {
"default": {
- "description": "successful operation"
+ "description": "successful operation",
+ "content": {}
}
- }
+ },
+ "x-codegen-request-body-name": "body"
}
},
"/onap/so/infra/serviceInstantiation/{version}/serviceInstances/{serviceInstanceId}/networks": {
@@ -2406,42 +2879,43 @@
"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]"
+ "schema": {
+ "pattern": "[vV][5-7]",
+ "type": "string"
+ }
},
{
"name": "serviceInstanceId",
"in": "path",
"required": true,
- "type": "string"
+ "schema": {
+ "type": "string"
+ }
}
],
+ "requestBody": {
+ "content": {
+ "application/json": {
+ "schema": {
+ "type": "string"
+ }
+ }
+ },
+ "required": false
+ },
"responses": {
"default": {
- "description": "successful operation"
+ "description": "successful operation",
+ "content": {}
}
- }
+ },
+ "x-codegen-request-body-name": "body"
}
},
"/onap/so/infra/serviceInstantiation/{version}/serviceInstances/{serviceInstanceId}/networks/{networkInstanceId}": {
@@ -2450,96 +2924,102 @@
"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]"
+ "schema": {
+ "pattern": "[vV][5-7]",
+ "type": "string"
+ }
},
{
"name": "serviceInstanceId",
"in": "path",
"required": true,
- "type": "string"
+ "schema": {
+ "type": "string"
+ }
},
{
"name": "networkInstanceId",
"in": "path",
"required": true,
- "type": "string"
+ "schema": {
+ "type": "string"
+ }
}
],
+ "requestBody": {
+ "content": {
+ "application/json": {
+ "schema": {
+ "type": "string"
+ }
+ }
+ },
+ "required": false
+ },
"responses": {
"default": {
- "description": "successful operation"
+ "description": "successful operation",
+ "content": {}
}
- }
+ },
+ "x-codegen-request-body-name": "body"
},
"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]"
+ "schema": {
+ "pattern": "[vV][5-7]",
+ "type": "string"
+ }
},
{
"name": "serviceInstanceId",
"in": "path",
"required": true,
- "type": "string"
+ "schema": {
+ "type": "string"
+ }
},
{
"name": "networkInstanceId",
"in": "path",
"required": true,
- "type": "string"
+ "schema": {
+ "type": "string"
+ }
}
],
+ "requestBody": {
+ "content": {
+ "application/json": {
+ "schema": {
+ "type": "string"
+ }
+ }
+ },
+ "required": false
+ },
"responses": {
"default": {
- "description": "successful operation"
+ "description": "successful operation",
+ "content": {}
}
- }
+ },
+ "x-codegen-request-body-name": "body"
}
},
"/onap/so/infra/tasks/{version}": {
@@ -2548,62 +3028,71 @@
"onapsoinfratasks"
],
"summary": "Finds Manual Tasks",
- "description": "",
"operationId": "queryFilters",
"parameters": [
{
"name": "taskId",
"in": "query",
- "required": false,
- "type": "string"
+ "schema": {
+ "type": "string"
+ }
},
{
"name": "originalRequestId",
"in": "query",
- "required": false,
- "type": "string"
+ "schema": {
+ "type": "string"
+ }
},
{
"name": "subscriptionServiceType",
"in": "query",
- "required": false,
- "type": "string"
+ "schema": {
+ "type": "string"
+ }
},
{
"name": "nfRole",
"in": "query",
- "required": false,
- "type": "string"
+ "schema": {
+ "type": "string"
+ }
},
{
"name": "buildingBlockName",
"in": "query",
- "required": false,
- "type": "string"
+ "schema": {
+ "type": "string"
+ }
},
{
"name": "originalRequestDate",
"in": "query",
- "required": false,
- "type": "string"
+ "schema": {
+ "type": "string"
+ }
},
{
"name": "originalRequestorId",
"in": "query",
- "required": false,
- "type": "string"
+ "schema": {
+ "type": "string"
+ }
},
{
"name": "version",
"in": "path",
"required": true,
- "type": "string",
- "pattern": "[vV]1"
+ "schema": {
+ "pattern": "[vV]1",
+ "type": "string"
+ }
}
],
"responses": {
"default": {
- "description": "successful operation"
+ "description": "successful operation",
+ "content": {}
}
}
}
@@ -2614,36 +3103,35 @@
"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]"
+ "schema": {
+ "pattern": "[vV][1]",
+ "type": "string"
+ }
}
],
+ "requestBody": {
+ "content": {
+ "application/json": {
+ "schema": {
+ "type": "string"
+ }
+ }
+ },
+ "required": false
+ },
"responses": {
"default": {
- "description": "successful operation"
+ "description": "successful operation",
+ "content": {}
}
- }
+ },
+ "x-codegen-request-body-name": "body"
}
},
"/onap/so/infra/cloudResources/{version}/operationalEnvironments/{operationalEnvironmentId}/activate": {
@@ -2652,42 +3140,43 @@
"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]"
+ "schema": {
+ "pattern": "[vV][1]",
+ "type": "string"
+ }
},
{
"name": "operationalEnvironmentId",
"in": "path",
"required": true,
- "type": "string"
+ "schema": {
+ "type": "string"
+ }
}
],
+ "requestBody": {
+ "content": {
+ "application/json": {
+ "schema": {
+ "type": "string"
+ }
+ }
+ },
+ "required": false
+ },
"responses": {
"default": {
- "description": "successful operation"
+ "description": "successful operation",
+ "content": {}
}
- }
+ },
+ "x-codegen-request-body-name": "body"
}
},
"/onap/so/infra/cloudResources/{version}/operationalEnvironments/{operationalEnvironmentId}/deactivate": {
@@ -2696,42 +3185,43 @@
"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]"
+ "schema": {
+ "pattern": "[vV][1]",
+ "type": "string"
+ }
},
{
"name": "operationalEnvironmentId",
"in": "path",
"required": true,
- "type": "string"
+ "schema": {
+ "type": "string"
+ }
}
],
+ "requestBody": {
+ "content": {
+ "application/json": {
+ "schema": {
+ "type": "string"
+ }
+ }
+ },
+ "required": false
+ },
"responses": {
"default": {
- "description": "successful operation"
+ "description": "successful operation",
+ "content": {}
}
- }
+ },
+ "x-codegen-request-body-name": "body"
}
},
"/onap/so/infra/cloudResourcesRequests/{version}/{requestId}/unlock": {
@@ -2740,42 +3230,43 @@
"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"
+ "schema": {
+ "type": "string"
+ }
},
{
"name": "version",
"in": "path",
"required": true,
- "type": "string",
- "pattern": "[vV][1]"
+ "schema": {
+ "pattern": "[vV][1]",
+ "type": "string"
+ }
}
],
+ "requestBody": {
+ "content": {
+ "application/json": {
+ "schema": {
+ "type": "string"
+ }
+ }
+ },
+ "required": false
+ },
"responses": {
"default": {
- "description": "successful operation"
+ "description": "successful operation",
+ "content": {}
}
- }
+ },
+ "x-codegen-request-body-name": "body"
}
},
"/onap/so/infra/cloudResourcesRequests/{version}": {
@@ -2784,26 +3275,22 @@
"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]"
+ "schema": {
+ "pattern": "[vV][1]",
+ "type": "string"
+ }
}
],
"responses": {
"default": {
- "description": "successful operation"
+ "description": "successful operation",
+ "content": {}
}
}
}
@@ -2814,42 +3301,43 @@
"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]"
+ "schema": {
+ "pattern": "[vV][1]",
+ "type": "string"
+ }
},
{
"name": "distributionId",
"in": "path",
"required": true,
- "type": "string"
+ "schema": {
+ "type": "string"
+ }
}
],
+ "requestBody": {
+ "content": {
+ "application/json": {
+ "schema": {
+ "type": "string"
+ }
+ }
+ },
+ "required": false
+ },
"responses": {
"default": {
- "description": "successful operation"
+ "description": "successful operation",
+ "content": {}
}
- }
+ },
+ "x-codegen-request-body-name": "body"
}
},
"/onap/so/infra/workflowSpecifications/{version}/workflows": {
@@ -2858,34 +3346,34 @@
"onapsoinfraworkflowSpecifications"
],
"summary": "Retrieve Workflow details based on the filter criteria",
- "description": "",
"operationId": "queryWorkflowSpecifications",
- "consumes": [
- "application/json"
- ],
- "produces": [
- "application/json"
- ],
"parameters": [
{
"name": "resourceTarget",
"in": "query",
- "required": false,
- "type": "string"
+ "schema": {
+ "type": "string"
+ }
},
{
"name": "version",
"in": "path",
"required": true,
- "type": "string",
- "pattern": "[vV][1]"
+ "schema": {
+ "pattern": "[vV][1]",
+ "type": "string"
+ }
}
],
"responses": {
"default": {
"description": "List of workflow specifications on successful operation",
- "schema": {
- "$ref": "#/definitions/RetrievingWorkflowResponse"
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/RetrievingWorkflowResponse"
+ }
+ }
}
}
}
@@ -2897,48 +3385,51 @@
"onapsoinfrainstanceManagement"
],
"summary": "Executing service level custom workflow",
- "description": "",
"operationId": "executeServiceLevelCustomWorkflow",
- "consumes": [
- "application/json"
- ],
- "produces": [
- "application/json"
- ],
"parameters": [
{
- "in": "body",
- "name": "body",
- "required": false,
- "schema": {
- "$ref": "#/definitions/ServiceLevelWorkflowExecution"
- }
- },
- {
"name": "version",
"in": "path",
"required": true,
- "type": "string",
- "pattern": "[vV][1]"
+ "schema": {
+ "pattern": "[vV][1]",
+ "type": "string"
+ }
},
{
"name": "serviceInstanceId",
"in": "path",
"required": true,
- "type": "string"
+ "schema": {
+ "type": "string"
+ }
},
{
"name": "workflow_UUID",
"in": "path",
"required": true,
- "type": "string"
+ "schema": {
+ "type": "string"
+ }
}
],
+ "requestBody": {
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/ServiceLevelWorkflowExecution"
+ }
+ }
+ },
+ "required": false
+ },
"responses": {
"default": {
- "description": "successful operation"
+ "description": "successful operation",
+ "content": {}
}
- }
+ },
+ "x-codegen-request-body-name": "body"
}
},
"/onap/so/infra/instanceManagement/{version}/serviceInstances/{serviceInstanceId}/pnfs/${pnfName}/workflows/${workflow_UUID}": {
@@ -2947,469 +3438,838 @@
"onapsoinfrainstanceManagement"
],
"summary": "Executing download/activate custom workflow",
- "description": "",
"operationId": "executePNFCustomWorkflow",
- "consumes": [
- "application/json"
- ],
- "produces": [
- "application/json"
- ],
"parameters": [
{
- "in": "body",
- "name": "body",
- "required": false,
- "schema": {
- "$ref": "#/definitions/PNFCustomWorkflowExecution"
- }
- },
- {
"name": "version",
"in": "path",
"required": true,
- "type": "string",
- "pattern": "[vV][1]"
+ "schema": {
+ "pattern": "[vV][1]",
+ "type": "string"
+ }
},
{
"name": "serviceInstanceId",
"in": "path",
"required": true,
- "type": "string"
+ "schema": {
+ "type": "string"
+ }
},
{
"name": "pnfName",
"in": "path",
"required": true,
- "type": "string"
+ "schema": {
+ "type": "string"
+ }
},
{
"name": "workflow_UUID",
"in": "path",
"required": true,
- "type": "string"
+ "schema": {
+ "type": "string"
+ }
}
],
+ "requestBody": {
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/PNFCustomWorkflowExecution"
+ }
+ }
+ },
+ "required": false
+ },
"responses": {
"default": {
- "description": "successful operation"
+ "description": "successful operation",
+ "content": {}
}
- }
+ },
+ "x-codegen-request-body-name": "body"
}
}
},
- "definitions": {
- "Allocate3gppService": {
- "description": "This describes the request body for 3gpp service allocation",
- "type": "object",
- "properties": {
- "name": {
- "description": "Name of the service to allocate",
- "type": "string"
- },
- "modelInvariantUuid": {
- "description": "Model Invariant UUID corresponding to the service. For E.g : NSST Model invariant uuid in case of NSSI creation",
- "type": "string"
- },
- "modelUuid": {
- "description": "Model UUID corresponding to the service. For E.g : NSST Model uuid in case of NSSI creation",
- "type": "string"
- },
- "globalSubscriberId": {
- "type": "string"
- },
- "subscriptionServiceType": {
- "description": "Service type for the subscription. For E.G :5G",
- "type": "string"
- },
- "networkType": {
- "description": "Network type. For E.G :AN/CN/TN",
- "type": "string"
- },
- "additionalProperties": {
- "description": "Map of additional properties required for service allocation",
- "type": "object"
- }
- }
- },
- "DeAllocate3gppService": {
- "description": "This describes the request body for 3gpp service Termination/Deallocation",
- "type": "object",
- "properties": {
- "serviceInstanceID": {
- "description": "ID of the service to terminate",
- "type": "string"
- },
- "globalSubscriberId": {
- "type": "string"
- },
- "subscriptionServiceType": {
- "description": "Service type for the subscription. For E.G :5G",
- "type": "string"
- },
- "networkType": {
- "description": "Network type. For E.G :AN/CN/TN",
- "type": "string"
- },
- "additionalProperties": {
- "description": "Map of additional properties required for service deallocation",
- "type": "object"
- }
- }
- },
- "Modify3gppService": {
- "description": "This describes the request body for 3gpp service modification",
- "type": "object",
- "properties": {
- "name": {
- "description": "Name of the service to modify",
- "type": "string"
- },
- "serviceInstanceID": {
- "description": "ID of the service to modify",
- "type": "string"
- },
- "globalSubscriberId": {
- "type": "string"
- },
- "subscriptionServiceType": {
- "description": "Service type for the subscription. For E.G :5G",
- "type": "string"
- },
- "networkType": {
- "description": "Network type. For E.G :AN/CN/TN",
- "type": "string"
- },
- "additionalProperties": {
- "description": "Map of additional properties required for service modification",
- "type": "object"
- }
- }
- },
- "3gppServiceActivation": {
- "description": "This describes the request body for 3gpp service activation/deactivation",
- "type": "object",
- "properties": {
- "serviceInstanceID": {
- "description": "ID of the service to be activated/deactivated",
- "type": "string"
- },
- "globalSubscriberId": {
- "type": "string"
- },
- "subscriptionServiceType": {
- "description": "Service type for the subscription. For E.G :5G",
- "type": "string"
- },
- "networkType": {
- "description": "Network type. For E.G :AN/CN/TN",
- "type": "string"
- },
- "additionalProperties": {
- "description": "Map of additional properties required for service activation/deactivation",
- "type": "object"
- }
- }
- },
- "QuerySubnetCapability": {
- "description": "This describes the subnet capabilities that can be queried",
- "type": "object",
- "properties": {
- "subnetTypes": {
- "type": "array",
- "items": {
- "$ref": "#/definitions/SubnetTypes"
- }
- }
- }
- },
- "SubnetTypes": {
- "description": "This describes allowed subnet types",
- "type": "string",
- "enum": [
- "AN",
- "AN_NF",
- "CN",
- "TN_FH",
- "TN_MH",
- "TN_BH"
- ]
- },
- "3gppServiceResponse": {
- "description": "This describes the response for 3gpp services",
- "type": "object",
- "properties": {
- "jobId": {
- "description": "Job ID to be used to identify the status of the job",
- "type": "string"
- },
- "status": {
- "description": "status of the job",
- "type": "string"
- },
- "statusDescription": {
- "description": "Description on status in case of erroneous response",
- "type": "object"
- }
- }
- },
- "RetrievingWorkflowResponse": {
- "description": "Response body of fetching workflows using resource target",
- "type": "object",
- "properties": {
- "workflowSpecificationList":{
- "description": "List of Workflow specification data",
- "type": "array",
- "items": {
- "$ref": "#/definitions/WorkflowSpecification"
+ "components": {
+ "schemas": {
+ "Allocate3gppService": {
+ "type": "object",
+ "properties": {
+ "name": {
+ "type": "string",
+ "description": "Name of the service to allocate"
+ },
+ "modelInvariantUuid": {
+ "type": "string",
+ "description": "Model Invariant UUID corresponding to the service. For E.g : NSST Model invariant uuid in case of NSSI creation"
+ },
+ "modelUuid": {
+ "type": "string",
+ "description": "Model UUID corresponding to the service. For E.g : NSST Model uuid in case of NSSI creation"
+ },
+ "globalSubscriberId": {
+ "type": "string"
+ },
+ "subscriptionServiceType": {
+ "type": "string",
+ "description": "Service type for the subscription. For E.G :5G"
+ },
+ "networkType": {
+ "type": "string",
+ "description": "Network type. For E.G :AN/CN/TN"
+ },
+ "additionalProperties": {
+ "type": "object",
+ "properties": {},
+ "description": "Map of additional properties required for service allocation"
}
- }
- }
- },
- "WorkflowSpecification": {
- "description": "This describes workflow specification object",
- "type": "object",
- "properties": {
- "artifactInfo": {
- "description": "Attributes related to artifact information ",
- "type": "object",
- "properties": {
- "artifactType": {
- "description": "Type of the artifact to be queried",
- "type": "string"
- },
- "artifactUuid": {
- "description": "UUID of the artifact",
- "type": "string"
- },
- "artifactName": {
- "description": "Name of the artifact",
- "type": "string"
- },
- "artifactVersion": {
- "description": "Artifact's Version",
- "type": "string"
- },
- "artifactDescription": {
- "description": "",
- "type": "string"
- },
- "workflowName": {
- "description": "Name of the workflow fetched for the resource type",
- "type": "string"
- },
- "operationName": {
- "description": "Mapped operation name of the corresponding workflow",
- "type": "string"
- },
- "workflowSource": {
- "description": "",
- "type": "string"
- },
- "workflowResourceTarget": {
- "description": "Type of Resource mapped against the workflow",
- "type": "string"
- }
+ },
+ "description": "This describes the request body for 3gpp service allocation"
+ },
+ "DeAllocate3gppService": {
+ "type": "object",
+ "properties": {
+ "serviceInstanceID": {
+ "type": "string",
+ "description": "ID of the service to terminate"
+ },
+ "globalSubscriberId": {
+ "type": "string"
+ },
+ "subscriptionServiceType": {
+ "type": "string",
+ "description": "Service type for the subscription. For E.G :5G"
+ },
+ "networkType": {
+ "type": "string",
+ "description": "Network type. For E.G :AN/CN/TN"
+ },
+ "additionalProperties": {
+ "type": "object",
+ "properties": {},
+ "description": "Map of additional properties required for service deallocation"
}
- }
- }
- },
- "ServiceLevelWorkflowExecution": {
- "description": "This describes the request body of service level custom workflow execution",
- "type": "object",
- "properties": {
- "requestInfo": {
- "description": "Request object contains source information",
- "type": "object",
- "properties": {
- "source": {
- "description": "Name of the sender",
- "type": "string"
- },
- "suppressRollback": {
- "description": "Enable/disable rollback suppression",
- "type": "boolean"
- },
- "requestorId": {
- "description": "Id of the sender",
- "type": "string"
- }
+ },
+ "description": "This describes the request body for 3gpp service Termination/Deallocation"
+ },
+ "Modify3gppService": {
+ "type": "object",
+ "properties": {
+ "name": {
+ "type": "string",
+ "description": "Name of the service to modify"
+ },
+ "serviceInstanceID": {
+ "type": "string",
+ "description": "ID of the service to modify"
+ },
+ "globalSubscriberId": {
+ "type": "string"
+ },
+ "subscriptionServiceType": {
+ "type": "string",
+ "description": "Service type for the subscription. For E.G :5G"
+ },
+ "networkType": {
+ "type": "string",
+ "description": "Network type. For E.G :AN/CN/TN"
+ },
+ "additionalProperties": {
+ "type": "object",
+ "properties": {},
+ "description": "Map of additional properties required for service modification"
}
},
- "modelInfo": {
- "description": "Parameters related to the service model",
- "type": "object",
- "properties": {
- "modelType": {
- "description": "Type of the model to be executed",
- "type": "string"
- },
- "modelInvariantUuid": {
- "description": "Model invariant id corresponding to the service",
- "type": "string"
- },
- "modelUuid": {
- "description": "Model uuid corresponding to the service",
- "type": "string"
- },
- "modelVersionId": {
- "description": "Model version of the service instance",
- "type": "string"
- },
- "modelName": {
- "description": "Name of the service",
- "type": "string"
- },
- "modelVersion": {
- "description": "Version of the service instance",
- "type": "string"
- }
+ "description": "This describes the request body for 3gpp service modification"
+ },
+ "3gppServiceActivation": {
+ "type": "object",
+ "properties": {
+ "serviceInstanceID": {
+ "type": "string",
+ "description": "ID of the service to be activated/deactivated"
+ },
+ "globalSubscriberId": {
+ "type": "string"
+ },
+ "subscriptionServiceType": {
+ "type": "string",
+ "description": "Service type for the subscription. For E.G :5G"
+ },
+ "networkType": {
+ "type": "string",
+ "description": "Network type. For E.G :AN/CN/TN"
+ },
+ "additionalProperties": {
+ "type": "object",
+ "properties": {},
+ "description": "Map of additional properties required for service activation/deactivation"
}
},
- "requestParameters": {
- "description": "User parameter object",
- "type": "object",
- "properties": {
- "subscriptionServiceType": {
- "description": "Type of service subscription",
- "type": "string"
+ "description": "This describes the request body for 3gpp service activation/deactivation"
+ },
+ "QuerySubnetCapability": {
+ "type": "object",
+ "properties": {
+ "subnetTypes": {
+ "type": "array",
+ "items": {
+ "$ref": "#/components/schemas/SubnetTypes"
}
}
},
- "subscriberInfo": {
- "description": "Subscriber id information",
- "type": "object",
- "properties": {
- "globalSubscriberId": {
- "description": "Id of the subscriber sending the request",
- "type": "string"
- }
+ "description": "This describes the subnet capabilities that can be queried"
+ },
+ "SubnetTypes": {
+ "type": "string",
+ "description": "This describes allowed subnet types",
+ "enum": [
+ "AN",
+ "AN_NF",
+ "CN",
+ "TN_FH",
+ "TN_MH",
+ "TN_BH"
+ ]
+ },
+ "3gppServiceResponse": {
+ "type": "object",
+ "properties": {
+ "jobId": {
+ "type": "string",
+ "description": "Job ID to be used to identify the status of the job"
+ },
+ "status": {
+ "type": "string",
+ "description": "status of the job"
+ },
+ "statusDescription": {
+ "type": "object",
+ "properties": {},
+ "description": "Description on status in case of erroneous response"
}
},
- "project": {
- "description": "Information about the target project name",
- "type": "object",
- "properties": {
- "projectName":{
- "description": "Name of the target project",
- "type": "string"
+ "description": "This describes the response for 3gpp services"
+ },
+ "RetrievingWorkflowResponse": {
+ "type": "object",
+ "properties": {
+ "workflowSpecificationList": {
+ "type": "array",
+ "description": "List of Workflow specification data",
+ "items": {
+ "$ref": "#/components/schemas/WorkflowSpecification"
}
}
},
- "owningEntity": {
- "description": "Object describes the entity details",
- "type": "object",
- "properties": {
- "owningEntityId": {
- "description": "Id of the owning Entity",
- "type": "string"
+ "description": "Response body of fetching workflows using resource target"
+ },
+ "WorkflowSpecification": {
+ "type": "object",
+ "properties": {
+ "artifactInfo": {
+ "type": "object",
+ "properties": {
+ "artifactType": {
+ "type": "string",
+ "description": "Type of the artifact to be queried"
+ },
+ "artifactUuid": {
+ "type": "string",
+ "description": "UUID of the artifact"
+ },
+ "artifactName": {
+ "type": "string",
+ "description": "Name of the artifact"
+ },
+ "artifactVersion": {
+ "type": "string",
+ "description": "Artifact's Version"
+ },
+ "artifactDescription": {
+ "type": "string",
+ "description": ""
+ },
+ "workflowName": {
+ "type": "string",
+ "description": "Name of the workflow fetched for the resource type"
+ },
+ "operationName": {
+ "type": "string",
+ "description": "Mapped operation name of the corresponding workflow"
+ },
+ "workflowSource": {
+ "type": "string",
+ "description": ""
+ },
+ "workflowResourceTarget": {
+ "type": "string",
+ "description": "Type of Resource mapped against the workflow"
+ }
},
- "owningEntityName": {
- "description": "Name of the owning Entity",
- "type": "string"
- }
+ "description": "Attributes related to artifact information "
}
- }
-
- }
- },
- "PNFCustomWorkflowExecution": {
- "description": "This describes the request body of PNF custom workflow execution",
- "type": "object",
- "properties": {
- "requestInfo": {
- "description": "Request object contains source information",
- "type": "object",
- "properties": {
- "source": {
- "description": "Name of the sender",
- "type": "string"
+ },
+ "description": "This describes workflow specification object"
+ },
+ "ServiceLevelWorkflowExecution": {
+ "type": "object",
+ "properties": {
+ "requestInfo": {
+ "type": "object",
+ "properties": {
+ "source": {
+ "type": "string",
+ "description": "Name of the sender"
+ },
+ "suppressRollback": {
+ "type": "boolean",
+ "description": "Enable/disable rollback suppression"
+ },
+ "requestorId": {
+ "type": "string",
+ "description": "Id of the sender"
+ }
},
- "suppressRollback": {
- "description": "Enable/disable rollback suppression",
- "type": "boolean"
+ "description": "Request object contains source information"
+ },
+ "modelInfo": {
+ "type": "object",
+ "properties": {
+ "modelType": {
+ "type": "string",
+ "description": "Type of the model to be executed"
+ },
+ "modelInvariantUuid": {
+ "type": "string",
+ "description": "Model invariant id corresponding to the service"
+ },
+ "modelUuid": {
+ "type": "string",
+ "description": "Model uuid corresponding to the service"
+ },
+ "modelVersionId": {
+ "type": "string",
+ "description": "Model version of the service instance"
+ },
+ "modelName": {
+ "type": "string",
+ "description": "Name of the service"
+ },
+ "modelVersion": {
+ "type": "string",
+ "description": "Version of the service instance"
+ }
},
- "requestorId": {
- "description": "Id of the sender",
- "type": "string"
- }
+ "description": "Parameters related to the service model"
+ },
+ "requestParameters": {
+ "type": "object",
+ "properties": {
+ "subscriptionServiceType": {
+ "type": "string",
+ "description": "Type of service subscription"
+ }
+ },
+ "description": "User parameter object"
+ },
+ "subscriberInfo": {
+ "type": "object",
+ "properties": {
+ "globalSubscriberId": {
+ "type": "string",
+ "description": "Id of the subscriber sending the request"
+ }
+ },
+ "description": "Subscriber id information"
+ },
+ "project": {
+ "type": "object",
+ "properties": {
+ "projectName": {
+ "type": "string",
+ "description": "Name of the target project"
+ }
+ },
+ "description": "Information about the target project name"
+ },
+ "owningEntity": {
+ "type": "object",
+ "properties": {
+ "owningEntityId": {
+ "type": "string",
+ "description": "Id of the owning Entity"
+ },
+ "owningEntityName": {
+ "type": "string",
+ "description": "Name of the owning Entity"
+ }
+ },
+ "description": "Object describes the entity details"
}
},
- "modelInfo": {
- "description": "Parameters related to the service model",
- "type": "object",
- "properties": {
- "modelType": {
- "description": "Type of the model to be executed",
- "type": "string"
+ "description": "This describes the request body of service level custom workflow execution"
+ },
+ "PNFCustomWorkflowExecution": {
+ "type": "object",
+ "properties": {
+ "requestInfo": {
+ "type": "object",
+ "properties": {
+ "source": {
+ "type": "string",
+ "description": "Name of the sender"
+ },
+ "suppressRollback": {
+ "type": "boolean",
+ "description": "Enable/disable rollback suppression"
+ },
+ "requestorId": {
+ "type": "string",
+ "description": "Id of the sender"
+ }
},
- "modelInvariantUuid": {
- "description": "Model invariant id corresponding to the service",
- "type": "string"
+ "description": "Request object contains source information"
+ },
+ "modelInfo": {
+ "type": "object",
+ "properties": {
+ "modelType": {
+ "type": "string",
+ "description": "Type of the model to be executed"
+ },
+ "modelInvariantUuid": {
+ "type": "string",
+ "description": "Model invariant id corresponding to the service"
+ },
+ "modelUuid": {
+ "type": "string",
+ "description": "Model uuid corresponding to the service"
+ },
+ "modelVersionId": {
+ "type": "string",
+ "description": "Model version of the service instance"
+ },
+ "modelName": {
+ "type": "string",
+ "description": "Name of the service"
+ },
+ "modelVersion": {
+ "type": "string",
+ "description": "Version of the service instance"
+ }
},
- "modelUuid": {
- "description": "Model uuid corresponding to the service",
- "type": "string"
+ "description": "Parameters related to the service model"
+ },
+ "requestParameters": {
+ "type": "object",
+ "properties": {
+ "subscriptionServiceType": {
+ "type": "string",
+ "description": "Type of service subscription"
+ }
},
- "modelVersionId": {
- "description": "Model version of the service instance",
- "type": "string"
+ "description": "User parameter object"
+ },
+ "subscriberInfo": {
+ "type": "object",
+ "properties": {
+ "globalSubscriberId": {
+ "type": "string",
+ "description": "Id of the subscriber sending the request"
+ }
},
- "modelName": {
- "description": "Name of the service",
- "type": "string"
+ "description": "Subscriber id information"
+ },
+ "project": {
+ "type": "object",
+ "properties": {
+ "projectName": {
+ "type": "string",
+ "description": "Name of the target project"
+ }
},
- "modelVersion": {
- "description": "Version of the service instance",
- "type": "string"
- }
- }
- },
- "requestParameters": {
- "description": "User parameter object",
- "type": "object",
- "properties": {
- "subscriptionServiceType": {
- "description": "Type of service subscription",
- "type": "string"
- }
+ "description": "Information about the target project name"
+ },
+ "owningEntity": {
+ "type": "object",
+ "properties": {
+ "owningEntityId": {
+ "type": "string",
+ "description": "Id of the owning Entity"
+ },
+ "owningEntityName": {
+ "type": "string",
+ "description": "Name of the owning Entity"
+ }
+ },
+ "description": "Object describes the entity details"
}
},
- "subscriberInfo": {
- "description": "Subscriber id information",
- "type": "object",
- "properties": {
- "globalSubscriberId": {
- "description": "Id of the subscriber sending the request",
- "type": "string"
+ "description": "This describes the request body of PNF custom workflow execution"
+ },
+ "CreateServiceInstanceParamaters": {
+ "type": "object",
+ "properties": {
+ "requestDetails": {
+ "type": "object",
+ "description": "Contains data associated with a request",
+ "properties": {
+ "requestParameters": {
+ "type": "object",
+ "description": "Contains all the parameters, associated with this request",
+ "properties": {
+ "subscriptionServiceType": {
+ "type": "string",
+ "description": "Type of service subscriptions of customer resource"
+ },
+ "userParams": {
+ "type": "array",
+ "description": "Array of data that contains information about Service",
+ "items": {
+ "oneOf": [
+ {
+ "$ref": "#/components/schemas/CreateServiceInstParamsUserParamsHoming"
+ },
+ {
+ "$ref": "#/components/schemas/CreateServiceInstParamsUserParamsService"
+ }
+ ]
+ }
+ },
+ "aLaCarte": {
+ "type": "boolean",
+ "description": "Enable “A La Carte” mode. In this mode, the user creates and submits operations for each object to be created."
+ },
+ "usePreload": {
+ "type": "boolean",
+ "description": "Special value required to use additional Policy settings"
+ }
+ }
+ },
+ "modelInfo": {
+ "type": "object",
+ "description": "Contains information about the currently used Service Model model",
+ "properties": {
+ "modelInvariantId": {
+ "type": "string",
+ "description": "Unique identifier corresponding to the main definition of a model in SDC"
+ },
+ "modelType": {
+ "type": "string",
+ "description": "Type of service model, created in SDC"
+ },
+ "modelName": {
+ "type": "string",
+ "description": "Name of the model, which can change from version to version."
+ },
+ "modelVersion": {
+ "type": "string",
+ "description": "Unique identifier corresponding to one version of a model in SDC"
+ },
+ "modelVersionId": {
+ "type": "string",
+ "description": "The SDC model version for this resource or service model."
+ },
+ "modelUuid": {
+ "type": "string",
+ "description": "Unique identifier corresponding to the main definition of a model in SDC"
+ },
+ "modelInvariantUuid": {
+ "type": "string",
+ "description": "Unique identifier corresponding to the main definition of a model in SDC"
+ }
+ }
+ },
+ "requestInfo": {
+ "type": "object",
+ "description": "Represents some information for the request",
+ "properties": {
+ "productFamilyId": {
+ "type": "string",
+ "description": "SDC catalog service type"
+ },
+ "source": {
+ "type": "string",
+ "description": "Determines only the source from whom the request came"
+ },
+ "instanceName": {
+ "type": "string",
+ "description": "Defines the name of the instance to be created"
+ },
+ "suppressRollback": {
+ "type": "boolean",
+ "description": "If false – the rollback process will not start if something goes wrong in execution BB. If true - QueryRainyDayTable task will start and make querying policy in table rainy_day_handler_macro"
+ },
+ "requestorId": {
+ "type": "string",
+ "description": "User Id or Application Id, initiating the Assessment"
+ }
+ }
+ },
+ "subscriberInfo": {
+ "type": "object",
+ "description": "Represents the object that groups service instances used by a customer",
+ "properties": {
+ "globalSubscriberId": {
+ "type": "string",
+ "description": "Global Subscriber Id used across ONAP to uniquely identify subscriber."
+ }
+ }
+ },
+ "project": {
+ "type": "object",
+ "description": "Represents the project, which will own the service instance",
+ "properties": {
+ "projectName": {
+ "type": "string",
+ "description": "Name of the project deploying a service"
+ }
+ }
+ },
+ "owningEntity": {
+ "type": "object",
+ "description": "Represents the entity, which will own the service instance",
+ "properties": {
+ "owningEntityId": {
+ "type": "string",
+ "description": "UUID of an owning entity"
+ },
+ "owningEntityName": {
+ "type": "string",
+ "description": "Owning entity name"
+ }
+ }
+ }
}
}
- },
- "project": {
- "description": "Information about the target project name",
- "type": "object",
- "properties": {
- "projectName":{
- "description": "Name of the target project",
- "type": "string"
+ }
+ },
+ "CreateServiceInstParamsUserParamsHoming": {
+ "allOf": [
+ {
+ "type": "object",
+ "properties": {
+ "Homing_Solution": {
+ "type": "string",
+ "description": "Switches on an optimization service to deploy services automatically across multiple sites and multiple clouds"
+ }
}
}
- },
- "owningEntity": {
- "description": "Object describes the entity details",
- "type": "object",
- "properties": {
- "owningEntityId": {
- "description": "Id of the owning Entity",
- "type": "string"
- },
- "owningEntityName": {
- "description": "Name of the owning Entity",
- "type": "string"
+ ]
+ },
+ "CreateServiceInstParamsUserParamsService": {
+ "allOf": [
+ {
+ "type": "object",
+ "properties": {
+ "service": {
+ "type": "object",
+ "description": "Includes information about all created instances",
+ "properties": {
+ "instanceParams": {
+ "type": "array",
+ "description": "Includes a set of specific parameters",
+ "items": {
+ "type": "object",
+ "properties": {}
+ }
+ },
+ "instanceName": {
+ "type": "string",
+ "description": "Defines the name of the instance to be created"
+ },
+ "resources": {
+ "type": "object",
+ "properties": {
+ "vnfs": {
+ "type": "array",
+ "description": "Contains information about VNF parameters",
+ "items": {
+ "type": "object",
+ "properties": {
+ "modelInfo": {
+ "type": "object",
+ "description": "Contains information about the currently used Service Model model",
+ "properties": {
+ "modelInvariantId": {
+ "type": "string",
+ "description": "Unique identifier corresponding to the main definition of a model in SDC"
+ },
+ "modelType": {
+ "type": "string",
+ "description": "Type of Service Model, created in SDC"
+ },
+ "modelName": {
+ "type": "string",
+ "description": "Name of the model, which can change from version to version."
+ },
+ "modelVersion": {
+ "type": "string",
+ "description": "Unique identifier corresponding to one version of a model in SDC"
+ },
+ "modelVersionId": {
+ "type": "string",
+ "description": "The SDC model version for this resource or service model."
+ },
+ "modelUuid": {
+ "type": "string",
+ "description": "Unique identifier corresponding to the main definition of a model in SDC"
+ },
+ "modelInvariantUuid": {
+ "type": "string",
+ "description": "Unique identifier corresponding to the main definition of a model in SDC"
+ }
+ }
+ },
+ "cloudConfiguration": {
+ "type": "object",
+ "properties": {
+ "cloudOwner": {
+ "type": "string",
+ "description": "Identifies the vendor and cloud name. First part of composite key should be formatted as vendor-cloudname"
+ },
+ "lcpCloudRegionId": {
+ "type": "string",
+ "description": "Cloud-owner defined type indicator (Openstack region)"
+ },
+ "tenantId": {
+ "type": "string",
+ "description": "Unique id relative to the cloud-region."
+ }
+ }
+ },
+ "platform": {
+ "type": "object",
+ "description": "Represents the platform, on which the VNFs/CNFs will run",
+ "properties": {
+ "platformName": {
+ "type": "string",
+ "description": "Name of the platform"
+ }
+ }
+ },
+ "lineOfBusiness": {
+ "type": "object",
+ "description": "Represents the business line, owns the VNFs/CNFs instances",
+ "properties": {
+ "lineOfBusinessName": {
+ "type": "string",
+ "description": "Name of the line-of-business (product)"
+ }
+ }
+ },
+ "productFamilyId": {
+ "type": "string",
+ "description": "Define SDC catalog service type"
+ },
+ "instanceName": {
+ "type": "string",
+ "description": "Defines the name of the instance to be created"
+ },
+ "instanceParams": {
+ "type": "array",
+ "description": "Includes a set of specific parameters of instance",
+ "items": {
+ "type": "object",
+ "properties": {}
+ }
+ },
+ "vfModules": {
+ "type": "array",
+ "description": "Сontains a set of parameters of VF Modules",
+ "items": {
+ "type": "object",
+ "properties": {
+ "modelInfo": {
+ "type": "object",
+ "description": "Contains information about the currently used Service Model model",
+ "properties": {
+ "modelInvariantId": {
+ "type": "string",
+ "description": "Unique identifier corresponding to the main definition of a model in SDC"
+ },
+ "modelType": {
+ "type": "string",
+ "description": "Type of service model, created in SDC"
+ },
+ "modelName": {
+ "type": "string",
+ "description": "Name of the model, which can change from version to version."
+ },
+ "modelVersion": {
+ "type": "string",
+ "description": "Unique identifier corresponding to one version of a model in SDC"
+ },
+ "modelVersionId": {
+ "type": "string",
+ "description": "The SDC model version for this resource or service model."
+ },
+ "modelUuid": {
+ "type": "string",
+ "description": "Unique identifier corresponding to the main definition of a model in SDC"
+ },
+ "modelInvariantUuid": {
+ "type": "string",
+ "description": "Unique identifier corresponding to the main definition of a model in SDC"
+ }
+ }
+ },
+ "instanceName": {
+ "type": "string",
+ "description": "Defines the name of the instance to be created"
+ },
+ "instanceParams": {
+ "type": "array",
+ "description": "Includes a set of specific parameters",
+ "items": {
+ "type": "object",
+ "properties": {}
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ },
+ "modelInfo": {
+ "type": "object",
+ "description": "Contains information about the currently used Service Model model",
+ "properties": {
+ "modelName": {
+ "type": "string",
+ "description": "Name of the model, which can change from version to version."
+ },
+ "modelVersionId": {
+ "type": "string",
+ "description": "Unique identifier corresponding to one version of a model in SDC"
+ },
+ "modelInvariantUuid": {
+ "type": "string",
+ "description": "Unique identifier corresponding to the main definition of a model in SDC"
+ },
+ "modelVersion": {
+ "type": "string",
+ "description": "The SDC model version for this resource or service model."
+ },
+ "modelCustomizationId": {
+ "type": "string",
+ "description": "Unique generated identifier of a model in SDC"
+ }
+ }
+ }
+ }
+ }
}
}
- }
-
+ ]
}
}
}
diff --git a/docs/api/swagger/swagger.yaml b/docs/api/swagger/swagger.yaml
index 585a4f4ac0..166ad067de 100644
--- a/docs/api/swagger/swagger.yaml
+++ b/docs/api/swagger/swagger.yaml
@@ -1,7 +1,9 @@
-swagger: '2.0'
+openapi: 3.0.1
info:
- version: 3.1.2
title: SO Guilin APIs
+ version: 3.1.2
+servers:
+ - url: /
tags:
- name: e2eServiceInstances
- name: Onap3gppServiceInstances
@@ -16,2269 +18,2897 @@ tags:
- name: onapsoinframodelDistributions
- name: onapsoinfraworkflowSpecifications
- name: onapsoinfrainstanceManagement
-schemes:
- - http
paths:
- '/onap/so/infra/e2eServiceInstances/{version}':
+ /onap/so/infra/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]'
+ schema:
+ pattern: '[vV][3-5]'
+ type: string
+ requestBody:
+ content:
+ application/json:
+ schema:
+ type: string
+ required: false
responses:
default:
description: successful operation
- '/onap/so/infra/e2eServiceInstances/{version}/{serviceId}':
+ content: {}
+ x-codegen-request-body-name: body
+ /onap/so/infra/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]'
+ schema:
+ pattern: '[vV][3-5]'
+ type: string
- name: serviceId
in: path
required: true
- type: string
+ schema:
+ type: string
+ requestBody:
+ content:
+ application/json:
+ schema:
+ type: string
+ required: false
responses:
default:
description: successful operation
+ content: {}
+ x-codegen-request-body-name: body
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]'
+ schema:
+ pattern: '[vV][3-5]'
+ type: string
- name: serviceId
in: path
required: true
- type: string
+ schema:
+ type: string
+ requestBody:
+ content:
+ application/json:
+ schema:
+ type: string
+ required: false
responses:
default:
description: successful operation
- '/onap/so/infra/e2eServiceInstances/{version}/{serviceId}/{operationType}':
+ content: {}
+ x-codegen-request-body-name: body
+ /onap/so/infra/e2eServiceInstances/{version}/{serviceId}/{operationType}:
post:
tags:
- e2eServiceInstances
summary: >-
Activate/Deactivate 5G slice Service on a specified version and
serviceId
- description: ''
operationId: activateE2EServiceInstances
- 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]'
+ schema:
+ pattern: '[vV][3-5]'
+ type: string
- name: serviceId
in: path
required: true
- type: string
+ schema:
+ type: string
- name: operationType
in: path
required: true
- type: string
- pattern: activate/deactivate
+ schema:
+ pattern: activate/deactivate
+ type: string
+ requestBody:
+ content:
+ application/json:
+ schema:
+ type: string
+ required: false
responses:
default:
description: successful operation
- '/onap/so/infra/e2eServiceInstances/{version}/{serviceId}/operations/{operationId}':
+ content: {}
+ x-codegen-request-body-name: body
+ /onap/so/infra/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
+ schema:
+ type: string
- name: version
in: path
required: true
- type: string
- pattern: '[vV][3-5]'
+ schema:
+ pattern: '[vV][3-5]'
+ type: string
- name: operationId
in: path
required: true
- type: string
+ schema:
+ type: string
responses:
default:
description: successful operation
- '/onap/so/infra/e2eServiceInstances/{version}/{serviceId}/scale':
+ content: {}
+ /onap/so/infra/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]'
+ schema:
+ pattern: '[vV][3-5]'
+ type: string
- name: serviceId
in: path
required: true
- type: string
+ schema:
+ type: string
+ requestBody:
+ content:
+ application/json:
+ schema:
+ type: string
+ required: false
responses:
default:
description: successful operation
- '/onap/so/infra/e2eServiceInstances/{version}/{serviceId}/modeldifferences':
+ content: {}
+ x-codegen-request-body-name: body
+ /onap/so/infra/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
+ schema:
+ type: string
- name: version
in: path
required: true
- type: string
- pattern: '[vV][3-5]'
+ schema:
+ pattern: '[vV][3-5]'
+ type: string
+ requestBody:
+ content:
+ application/json:
+ schema:
+ type: string
+ required: false
responses:
default:
description: successful operation
- '/onap/so/infra/3gppservices/{version}/allocate':
+ content: {}
+ x-codegen-request-body-name: body
+ /onap/so/infra/3gppservices/{version}/allocate:
post:
tags:
- Onap3gppServiceInstances
summary: Create a 3GPP Service Instance on a version provided
- description: ''
operationId: allocate3gppService
- consumes:
- - application/json
- produces:
- - application/json
parameters:
- - in: body
- name: body
- required: true
- schema:
- $ref: '#/definitions/Allocate3gppService'
- name: version
in: path
required: true
- type: string
- pattern: '[vV][1]'
+ schema:
+ pattern: '[vV][1]'
+ type: string
+ requestBody:
+ content:
+ application/json:
+ schema:
+ $ref: '#/components/schemas/Allocate3gppService'
+ required: true
responses:
default:
description: successful operation
- schema:
- $ref: '#/definitions/3gppServiceResponse'
- '/onap/so/infra/3gppservices/{version}/deAllocate':
+ content:
+ application/json:
+ schema:
+ $ref: '#/components/schemas/3gppServiceResponse'
+ x-codegen-request-body-name: body
+ /onap/so/infra/3gppservices/{version}/deAllocate:
delete:
tags:
- Onap3gppServiceInstances
summary: Terminate/Deallocate a 3GPP Service Instance on a version provided
- description: ''
operationId: deallocate3gppService
- consumes:
- - application/json
- produces:
- - application/json
parameters:
- - in: body
- name: body
- required: true
- schema:
- $ref: '#/definitions/DeAllocate3gppService'
- name: version
in: path
required: true
- type: string
- pattern: '[vV][1]'
+ schema:
+ pattern: '[vV][1]'
+ type: string
+ requestBody:
+ content:
+ application/json:
+ schema:
+ $ref: '#/components/schemas/DeAllocate3gppService'
+ required: true
responses:
default:
description: successful operation
- schema:
- $ref: '#/definitions/3gppServiceResponse'
- '/onap/so/infra/3gppservices/{version}/modify':
+ content:
+ application/json:
+ schema:
+ $ref: '#/components/schemas/3gppServiceResponse'
+ x-codegen-request-body-name: body
+ /onap/so/infra/3gppservices/{version}/modify:
put:
tags:
- Onap3gppServiceInstances
summary: Modify a 3GPP Service Instance on a version provided
- description: ''
operationId: modify3gppService
- consumes:
- - application/json
- produces:
- - application/json
parameters:
- - in: body
- name: body
- required: true
- schema:
- $ref: '#/definitions/Modify3gppService'
- name: version
in: path
required: true
- type: string
- pattern: '[vV][1]'
+ schema:
+ pattern: '[vV][1]'
+ type: string
+ requestBody:
+ content:
+ application/json:
+ schema:
+ $ref: '#/components/schemas/Modify3gppService'
+ required: true
responses:
default:
description: successful operation
- schema:
- $ref: '#/definitions/3gppServiceResponse'
- '/onap/so/infra/3gppservices/{version}/activate':
+ content:
+ application/json:
+ schema:
+ $ref: '#/components/schemas/3gppServiceResponse'
+ x-codegen-request-body-name: body
+ /onap/so/infra/3gppservices/{version}/activate:
post:
tags:
- Onap3gppServiceInstances
summary: Activate a 3GPP Service Instance on a version provided
- description: ''
operationId: activate3gppService
- consumes:
- - application/json
- produces:
- - application/json
parameters:
- - in: body
- name: body
- required: true
- schema:
- $ref: '#/definitions/3gppServiceActivation'
- name: version
in: path
required: true
- type: string
- pattern: '[vV][1]'
+ schema:
+ pattern: '[vV][1]'
+ type: string
+ requestBody:
+ content:
+ application/json:
+ schema:
+ $ref: '#/components/schemas/3gppServiceActivation'
+ required: true
responses:
default:
description: successful operation
- schema:
- $ref: '#/definitions/3gppServiceResponse'
- '/onap/so/infra/3gppservices/{version}/deActivate':
+ content:
+ application/json:
+ schema:
+ $ref: '#/components/schemas/3gppServiceResponse'
+ x-codegen-request-body-name: body
+ /onap/so/infra/3gppservices/{version}/deActivate:
post:
tags:
- Onap3gppServiceInstances
summary: Deactivate a 3GPP Service Instance on a version provided
- description: ''
operationId: deactivate3gppService
- consumes:
- - application/json
- produces:
- - application/json
parameters:
- - in: body
- name: body
- required: true
- schema:
- $ref: '#/definitions/3gppServiceActivation'
- name: version
in: path
required: true
- type: string
- pattern: '[vV][1]'
+ schema:
+ pattern: '[vV][1]'
+ type: string
+ requestBody:
+ content:
+ application/json:
+ schema:
+ $ref: '#/components/schemas/3gppServiceActivation'
+ required: true
responses:
default:
description: successful operation
- schema:
- $ref: '#/definitions/3gppServiceResponse'
- '/onap/so/infra/3gppservices/{version}/subnetCapabilityQuery':
+ content:
+ application/json:
+ schema:
+ $ref: '#/components/schemas/3gppServiceResponse'
+ x-codegen-request-body-name: body
+ /onap/so/infra/3gppservices/{version}/subnetCapabilityQuery:
get:
tags:
- Onap3gppServiceInstances
summary: Provides subnet capability based on subnet types
- description: ''
operationId: querySubnetCapability
- consumes:
- - application/json
- produces:
- - application/json
parameters:
- - in: body
- name: body
- required: true
- schema:
- $ref: '#/definitions/QuerySubnetCapability'
- name: version
in: path
required: true
- type: string
- pattern: '[vV][1]'
+ schema:
+ pattern: '[vV][1]'
+ type: string
+ requestBody:
+ content:
+ application/json:
+ schema:
+ $ref: '#/components/schemas/QuerySubnetCapability'
+ required: true
responses:
default:
description: successful operation with capabilities for the queried subnetTypes
- schema:
- type: object
+ content:
+ application/json:
+ schema:
+ type: object
+ x-codegen-request-body-name: body
/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
+ schema:
+ type: boolean
+ default: true
responses:
default:
description: successful operation
+ content: {}
/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}':
+ content: {}
+ /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]'
+ schema:
+ pattern: '[vV][4-7]'
+ type: string
responses:
default:
description: successful operation
- '/onap/so/infra/orchestrationRequests/{version}/{requestId}':
+ content: {}
+ /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
+ schema:
+ type: string
- name: version
in: path
required: true
- type: string
- pattern: '[vV][4-7]'
+ schema:
+ pattern: '[vV][4-7]'
+ type: string
responses:
default:
description: successful operation
- '/onap/so/infra/orchestrationRequests/{version}/{requestId}/unlock':
+ content: {}
+ /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
+ schema:
+ type: string
- name: version
in: path
required: true
- type: string
- pattern: '[vV][4-7]'
+ schema:
+ pattern: '[vV][4-7]'
+ type: string
+ requestBody:
+ content:
+ application/json:
+ schema:
+ type: string
+ required: false
responses:
default:
description: successful operation
- '/onap/so/infra/orchestrationTasks/{version}':
+ content: {}
+ x-codegen-request-body-name: body
+ /onap/so/infra/orchestrationTasks/{version}:
get:
tags:
- onapsoinfraorchestrationTasks
summary: Get all orchestrationTasks
- description: ''
operationId: getAllOrchestrationTasks
- produces:
- - application/json
parameters:
- name: version
in: path
required: true
- type: string
- pattern: '[vV][4-7]'
+ schema:
+ pattern: '[vV][4-7]'
+ type: string
responses:
default:
description: successful operation
+ content: {}
post:
tags:
- onapsoinfraorchestrationTasks
summary: Create an orchestrationTask
- description: ''
operationId: createOrchestrationTask
- produces:
- - application/json
parameters:
- - in: body
- name: body
- required: false
- schema:
- type: string
- name: version
in: path
required: true
- type: string
- pattern: '[vV][4-7]'
+ schema:
+ pattern: '[vV][4-7]'
+ type: string
+ requestBody:
+ content:
+ '*/*':
+ schema:
+ type: string
+ required: false
responses:
default:
description: successful operation
- '/onap/so/infra/orchestrationTasks/{version}/{taskId}':
+ content: {}
+ x-codegen-request-body-name: body
+ /onap/so/infra/orchestrationTasks/{version}/{taskId}:
get:
tags:
- onapsoinfraorchestrationTasks
summary: Get orchestrationTask for a given taskId
- description: ''
operationId: getOrchestrationTask
- produces:
- - application/json
parameters:
- name: taskId
in: path
required: true
- type: string
+ schema:
+ type: string
- name: version
in: path
required: true
- type: string
- pattern: '[vV][4-7]'
+ schema:
+ pattern: '[vV][4-7]'
+ type: string
responses:
default:
description: successful operation
+ content: {}
put:
tags:
- onapsoinfraorchestrationTasks
summary: update orchestrationTask for a given taskId
- description: ''
operationId: updateOrchestrationTask
- produces:
- - application/json
parameters:
- name: taskId
in: path
required: true
- type: string
+ schema:
+ type: string
- name: version
in: path
required: true
- type: string
- pattern: '[vV][4-7]'
- - in: body
- name: body
- required: false
schema:
+ pattern: '[vV][4-7]'
type: string
+ requestBody:
+ content:
+ '*/*':
+ schema:
+ type: string
+ required: false
responses:
default:
description: successful operation
+ content: {}
+ x-codegen-request-body-name: body
delete:
tags:
- onapsoinfraorchestrationTasks
summary: delete orchestrationTask for a given taskId
- description: ''
operationId: deleteOrchestrationTask
- produces:
- - application/json
parameters:
- name: taskId
in: path
required: true
- type: string
+ schema:
+ type: string
- name: version
in: path
required: true
- type: string
- pattern: '[vV][4-7]'
+ schema:
+ pattern: '[vV][4-7]'
+ type: string
responses:
default:
description: successful operation
- '/onap/so/infra/orchestrationTasks/{version}/{taskId}/commit':
+ content: {}
+ /onap/so/infra/orchestrationTasks/{version}/{taskId}/commit:
post:
tags:
- onapsoinfraorchestrationTasks
summary: commit orchestrationTask for a given taskId
- description: ''
operationId: commitOrchestrationTask
- produces:
- - application/json
parameters:
- - in: body
- name: body
- required: false
- schema:
- type: string
- name: taskId
in: path
required: true
- type: string
+ schema:
+ type: string
- name: version
in: path
required: true
- type: string
- pattern: '[vV][4-7]'
+ schema:
+ pattern: '[vV][4-7]'
+ type: string
+ requestBody:
+ content:
+ '*/*':
+ schema:
+ type: string
+ required: false
responses:
default:
description: successful operation
- '/onap/so/infra/orchestrationTasks/{version}/{taskId}/abort':
+ content: {}
+ x-codegen-request-body-name: body
+ /onap/so/infra/orchestrationTasks/{version}/{taskId}/abort:
post:
tags:
- onapsoinfraorchestrationTasks
summary: abort orchestrationTask for a given taskId
- description: ''
operationId: abortOrchestrationTask
- produces:
- - application/json
parameters:
- - in: body
- name: body
- required: false
- schema:
- type: string
- name: taskId
in: path
required: true
- type: string
+ schema:
+ type: string
- name: version
in: path
required: true
- type: string
- pattern: '[vV][4-7]'
+ schema:
+ pattern: '[vV][4-7]'
+ type: string
+ requestBody:
+ content:
+ '*/*':
+ schema:
+ type: string
+ required: false
responses:
default:
description: successful operation
- '/onap/so/infra/serviceInstantiation/{version}/serviceInstances/{serviceInstanceId}/vnfs/{vnfInstanceId}/vfModules/{vfmoduleInstanceId}/deactivateAndCloudDelete':
+ content: {}
+ x-codegen-request-body-name: body
+ /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]'
+ schema:
+ pattern: '[vV][7]'
+ type: string
- name: serviceInstanceId
in: path
required: true
- type: string
+ schema:
+ type: string
- name: vnfInstanceId
in: path
required: true
- type: string
+ schema:
+ type: string
- name: vfmoduleInstanceId
in: path
required: true
- type: string
+ schema:
+ type: string
+ requestBody:
+ content:
+ application/json:
+ schema:
+ type: string
+ required: false
responses:
default:
description: successful operation
- '/onap/so/infra/serviceInstantiation/{version}/serviceInstances/{serviceInstanceId}/configurations/{configurationInstanceId}/enablePort':
+ content: {}
+ x-codegen-request-body-name: body
+ /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]'
+ schema:
+ pattern: '[vV][5-7]'
+ type: string
- name: serviceInstanceId
in: path
required: true
- type: string
+ schema:
+ type: string
- name: configurationInstanceId
in: path
required: true
- type: string
+ schema:
+ type: string
+ requestBody:
+ content:
+ application/json:
+ schema:
+ type: string
+ required: false
responses:
default:
description: successful operation
- '/onap/so/infra/serviceInstantiation/{version}/serviceInstances/{serviceInstanceId}/configurations/{configurationInstanceId}/disablePort':
+ content: {}
+ x-codegen-request-body-name: body
+ /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]'
+ schema:
+ pattern: '[vV][5-7]'
+ type: string
- name: serviceInstanceId
in: path
required: true
- type: string
+ schema:
+ type: string
- name: configurationInstanceId
in: path
required: true
- type: string
+ schema:
+ type: string
+ requestBody:
+ content:
+ application/json:
+ schema:
+ type: string
+ required: false
responses:
default:
description: successful operation
- '/onap/so/infra/serviceInstantiation/{version}/serviceInstances/{serviceInstanceId}/configurations/{configurationInstanceId}/activate':
+ content: {}
+ x-codegen-request-body-name: body
+ /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]'
+ schema:
+ pattern: '[vV][5-7]'
+ type: string
- name: serviceInstanceId
in: path
required: true
- type: string
+ schema:
+ type: string
- name: configurationInstanceId
in: path
required: true
- type: string
+ schema:
+ type: string
+ requestBody:
+ content:
+ application/json:
+ schema:
+ type: string
+ required: false
responses:
default:
description: successful operation
- '/onap/so/infra/serviceInstantiation/{version}/serviceInstances/{serviceInstanceId}/configurations/{configurationInstanceId}/deactivate':
+ content: {}
+ x-codegen-request-body-name: body
+ /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]'
+ schema:
+ pattern: '[vV][5-7]'
+ type: string
- name: serviceInstanceId
in: path
required: true
- type: string
+ schema:
+ type: string
- name: configurationInstanceId
in: path
required: true
- type: string
+ schema:
+ type: string
+ requestBody:
+ content:
+ application/json:
+ schema:
+ type: string
+ required: false
responses:
default:
description: successful operation
- '/onap/so/infra/serviceInstantiation/{version}/serviceInstances/{serviceInstanceId}/addRelationships':
+ content: {}
+ x-codegen-request-body-name: body
+ /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]'
+ schema:
+ pattern: '[vV][6-7]'
+ type: string
- name: serviceInstanceId
in: path
required: true
- type: string
+ schema:
+ type: string
+ requestBody:
+ content:
+ application/json:
+ schema:
+ type: string
+ required: false
responses:
default:
description: successful operation
- '/onap/so/infra/serviceInstantiation/{version}/serviceInstances/{serviceInstanceId}/vnfs/{vnfInstanceId}/vfModules/scaleOut':
+ content: {}
+ x-codegen-request-body-name: body
+ /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]'
+ schema:
+ pattern: '[vV][7]'
+ type: string
- name: serviceInstanceId
in: path
required: true
- type: string
+ schema:
+ type: string
- name: vnfInstanceId
in: path
required: true
- type: string
+ schema:
+ type: string
+ requestBody:
+ content:
+ application/json:
+ schema:
+ type: string
+ required: false
responses:
default:
description: successful operation
- '/onap/so/infra/serviceInstantiation/{version}/serviceInstances/{serviceInstanceId}/vnfs/{vnfInstanceId}/inPlaceSoftwareUpdate':
+ content: {}
+ x-codegen-request-body-name: body
+ /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]'
+ schema:
+ pattern: '[vV][6-7]'
+ type: string
- name: serviceInstanceId
in: path
required: true
- type: string
+ schema:
+ type: string
- name: vnfInstanceId
in: path
required: true
- type: string
+ schema:
+ type: string
+ requestBody:
+ content:
+ application/json:
+ schema:
+ type: string
+ required: false
responses:
default:
description: successful operation
- '/onap/so/infra/serviceInstantiation/{version}/serviceInstances/{serviceInstanceId}/vnfs/{vnfInstanceId}/applyUpdatedConfig':
+ content: {}
+ x-codegen-request-body-name: body
+ /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]'
+ schema:
+ pattern: '[vV][6-7]'
+ type: string
- name: serviceInstanceId
in: path
required: true
- type: string
+ schema:
+ type: string
- name: vnfInstanceId
in: path
required: true
- type: string
+ schema:
+ type: string
+ requestBody:
+ content:
+ application/json:
+ schema:
+ type: string
+ required: false
responses:
default:
description: successful operation
- '/onap/so/infra/serviceInstantiation/{version}/serviceInstances':
+ content: {}
+ x-codegen-request-body-name: body
+ /onap/so/infra/serviceInstantiation/{version}/serviceInstances:
post:
tags:
- - onapsoinfraserviceInstantiation
+ - SO service Instantiation
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':
+ schema:
+ pattern: '[vV][5-7]'
+ type: string
+ requestBody:
+ content:
+ application/json:
+ schema:
+ type: array
+ items:
+ $ref: '#/components/schemas/CreateServiceInstanceParamaters'
+ examples:
+ cnf:
+ summary: CNF
+ value:
+ requestDetails:
+ modelInfo:
+ modelInvariantId: 0b1f4362-fed9-45fc-a2e1-6fd3e52f4c1a
+ modelType: service
+ modelName: service_test_1
+ modelVersion: "2.0"
+ modelVersionId: beb1259e-dad8-4ee0-a40e-1af20f775d54
+ modelUuid: beb1259e-dad8-4ee0-a40e-1af20f775d54
+ modelInvariantUuid: 0b1f4362-fed9-45fc-a2e1-6fd3e52f4c1a
+ subscriberInfo:
+ globalSubscriberId: basicnf-customer
+ requestInfo:
+ suppressRollback: false
+ productFamilyId : bb0838ec-2ef7-4382-820f-0d34efdb1ccd
+ requestorId: Portal
+ instanceName: ORAN_CU_3
+ source: VID
+ project:
+ projectName: Project-5GCustomer
+ owningEntity:
+ owningEntityId: 67f2e84c-734d-4e90-a1e4-d2ffa2e75849
+ owningEntityName: OE-5GCustomer
+ requestParameters:
+ subscriptionServiceType: 5G
+ aLaCarte: false
+ usePreload: false
+ userParams:
+ [
+ {Homing_Solution: false},
+ {
+ service:
+ {
+ instanceParams: [{}],
+ instanceName: service_test_1,
+ resources:
+ {
+ vnfs:
+ [
+ {
+ modelInfo:
+ {
+ modelName: cu_sim_1901,
+ modelVersionId: 40f11fb2-931d-408d-a949-99e9289d3c02,
+ modelInvariantUuid: f6c202d8-94bd-496e-878e-448da0ed0a6a,
+ modelVersion: "1.0",
+ modelCustomizationId: 5a2eec30-80c5-47cc-9117-3d8659c38202,
+ modelInstanceName: cu_sim_2022 0
+ },
+ cloudConfiguration:
+ {
+ cloudOwner: k8scloudowner4,
+ lcpCloudRegionId: k8sregionfour,
+ tenantId: 6bbd2981b210461dbc8fe846df1a7808
+ },
+ platform:
+ {
+ platformName: test
+ },
+ lineOfBusiness:
+ {
+ lineOfBusinessName: LOB-5G
+ },
+ productFamilyId: productFamilyId123,
+ instanceName: CUCP_1,
+ instanceParams: [{}],
+ vfModules:
+ [
+ {
+ modelInfo:
+ {
+ modelName: CuSim1901..helm_cucp..module-1,
+ modelVersionId: 9b7723ff-25ac-44af-a7ac-9cfbf2d4285f,
+ modelInvariantUuid: 63af164d-9276-4e08-98fb-059d1c5b80e4,
+ modelVersion: 1,
+ modelCustomizationId: b7a0bd1d-4832-4ad3-9199-6e1eab543a45
+ },
+ instanceName: module-1,
+ instanceParams: [{}]
+ }
+ ]
+ }
+ ]
+ },
+ modelInfo:
+ {
+ modelVersion: "2.0",
+ modelVersionId: "77bea973-570b-4f73-9049-87c37d3de8ca",
+ modelInvariantId: "b7a3f00b-8fb2-4791-b0ff-71d83f97ab0b",
+ modelName: "service_model",
+ modelType: "service"
+ }
+ }
+ }
+ ]
+ pnf:
+ summary: PNF
+ value:
+ requestDetails:
+ modelInfo:
+ modelInvariantId: 040a21d5-b208-490b-9c69-c12ae2b2b958
+ modelName: ORAN_RU_SIM_Service
+ modelType: service
+ modelVersion: '2.0'
+ modelVersionId: 2f40ddbd-0acc-4e59-8fb3-77a6f84ae28c
+ owningEntity:
+ owningEntityId: 3804b4ac-4d9c-482a-ad0b-5806f8849907
+ owningEntityName: oran_owner
+ project:
+ projectName: oran_project
+ requestInfo:
+ instanceName: ORAN_RU_SIM
+ productFamilyId: oran-service
+ requestorId: PORTAL
+ source: PORTAL
+ suppressRollback: false
+ requestParameters:
+ aLaCarte: false
+ subscriptionServiceType: oran_service
+ userParams:
+ - Homing_Solution: none
+ - service:
+ instanceName: ORAN_RU_SIM_Service_1
+ instanceParams: []
+ modelInfo:
+ modelInvariantId: 040a21d5-b208-490b-9c69-c12ae2b2b958
+ modelName: ORAN_RU_SIM_Service
+ modelType: service
+ modelVersion: '2.0'
+ modelVersionId: 2f40ddbd-0acc-4e59-8fb3-77a6f84ae28c
+ resources:
+ pnfs:
+ - instanceName: ORAN_RU_PNF_1
+ instanceParams: []
+ lineOfBusiness:
+ lineOfBusinessName: oran_lob
+ modelInfo:
+ modelCustomizationId: 5e3a18ce-8bbd-40fc-a197-becca92ac05b
+ modelCustomizationName: ORAN_RU_PNF_1
+ modelInstanceName: ORAN_RU_PNF_ORAN_RU_SIM_Service
+ modelInvariantId: 486f38e8-1710-4875-b732-a8b3301a7786
+ modelName: ORAN_RU_PNF
+ modelType: pnf
+ modelVersion: '1.0'
+ modelVersionId: e95310e1-e1d2-471f-aa26-d24849a7e61a
+ platform:
+ platformName: oran_platform
+ productFamilyId: oran-service
+ vnfs: []
+ subscriberInfo:
+ globalSubscriberId: ORANTownCustomer
+ Composed service in two clouds:
+ summary: Composed service in two clouds
+ value:
+ requestDetails:
+ modelInfo:
+ modelInvariantId: 0592b699-3f7b-424f-857b-d956f15c9447
+ modelInvariantUuid: 0592b699-3f7b-424f-857b-d956f15c9447
+ modelName: parent_svc_2912
+ modelType: service
+ modelUuid: 1c889525-46c5-4b22-8f26-17913dd3172a
+ modelVersion: '2.0'
+ modelVersionId: 1c889525-46c5-4b22-8f26-17913dd3172a
+ owningEntity:
+ owningEntityId: 67f2e84c-734d-4e90-a1e4-d2ffa2e75849
+ owningEntityName: OE-5GCustomer
+ project:
+ projectName: Project-5GCustomer
+ requestInfo:
+ instanceName: parent_two_k8s
+ productFamilyId: productFamilyId123
+ requestorId: a9a77d5a-123e-4ca2-9eb9-0b015d2ee0fb
+ source: Postman
+ suppressRollback: false
+ requestParameters:
+ aLaCarte: false
+ subscriptionServiceType: 5G
+ usePreload: false
+ userParams:
+ - Homing_Solution: none
+ - service:
+ instanceName: parent_two_k8s
+ instanceParams:
+ - {}
+ modelInfo:
+ modelInvariantId: 0592b699-3f7b-424f-857b-d956f15c9447
+ modelName: parent_svc_2912
+ modelType: service
+ modelVersion: '2.0'
+ modelVersionId: 1c889525-46c5-4b22-8f26-17913dd3172a
+ resources:
+ services:
+ - instanceName: childsvc_1201_01
+ instanceParams:
+ - {}
+ modelInfo:
+ modelInvariantId: 19d8f134-8bdb-46ed-84a9-046c9314d9a9
+ modelName: childsvc_2912
+ modelType: service
+ modelVersion: '2.0'
+ modelVersionId: b2ae12eb-3854-4405-a125-c63c16e6fa23
+ resources:
+ vnfs:
+ - cloudConfiguration:
+ cloudOwner: k8scloudowner4
+ lcpCloudRegionId: k8sregionfour
+ tenantId: 6bbd2981b210461dbc8fe846df1a7808
+ instanceName: CUCP_1
+ instanceParams:
+ - {}
+ lineOfBusiness:
+ lineOfBusinessName: LOB-5GCustomer
+ modelInfo:
+ modelCustomizationId: 26be9ecc-43b2-47e4-9666-915701b87cbc
+ modelInstanceName: CUCP_2912 0
+ modelInvariantUuid: a3c9fa51-ff3c-4b6e-a1bd-73eb1ffb06c0
+ modelName: CUCP_2912
+ modelVersion: '1.0'
+ modelVersionId: 4a7aa841-09a5-493b-a52f-26aaa1f62c20
+ platform:
+ platformName: test
+ productFamilyId: productFamilyId123
+ vfModules:
+ - instanceName: module-1
+ instanceParams:
+ - {}
+ modelInfo:
+ modelCustomizationId: fe39f295-253c-41ef-b07c-607aec86ea52
+ modelInvariantUuid: 051d1f8a-d5bd-4509-9457-0ef756dc5a33
+ modelName: Cucp2912..helm_cucp..module-1
+ modelVersion: '1'
+ modelVersionId: 3f70da13-e246-4abd-8fe5-90d3f8fbc212
+ - instanceName: childsvc_1201_02
+ instanceParams:
+ - {}
+ modelInfo:
+ modelInvariantId: 19d8f134-8bdb-46ed-84a9-046c9314d9a9
+ modelName: childsvc_2912
+ modelType: service
+ modelVersion: '2.0'
+ modelVersionId: b2ae12eb-3854-4405-a125-c63c16e6fa23
+ resources:
+ vnfs:
+ - cloudConfiguration:
+ cloudOwner: k8scloudowner4
+ lcpCloudRegionId: k8sregionone
+ tenantId: 3fd21203fd274e10a30f1fd4c355d80b
+ instanceName: CUCP_2
+ instanceParams:
+ - {}
+ lineOfBusiness:
+ lineOfBusinessName: LOB-5GCustomer
+ modelInfo:
+ modelCustomizationId: 26be9ecc-43b2-47e4-9666-915701b87cbc
+ modelInstanceName: CUCP_2912 0
+ modelInvariantUuid: a3c9fa51-ff3c-4b6e-a1bd-73eb1ffb06c0
+ modelName: CUCP_2912
+ modelVersion: '1.0'
+ modelVersionId: 4a7aa841-09a5-493b-a52f-26aaa1f62c20
+ platform:
+ platformName: test
+ productFamilyId: productFamilyId123
+ vfModules:
+ - instanceName: module-2
+ instanceParams:
+ - {}
+ modelInfo:
+ modelCustomizationId: fe39f295-253c-41ef-b07c-607aec86ea52
+ modelInvariantUuid: 051d1f8a-d5bd-4509-9457-0ef756dc5a33
+ modelName: Cucp2912..helm_cucp..module-1
+ modelVersion: '1'
+ modelVersionId: 3f70da13-e246-4abd-8fe5-90d3f8fbc212
+ subscriberInfo:
+ globalSubscriberId: 5GCustomer
+
+ required: false
+ responses:
+ default:
+ description: successful operation
+ content: {}
+ x-codegen-request-body-name: requestBody
+ /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]'
+ schema:
+ pattern: '[vV][5-7]'
+ type: string
- name: serviceInstanceId
in: path
required: true
- type: string
+ schema:
+ type: string
+ requestBody:
+ content:
+ application/json:
+ schema:
+ type: string
+ required: false
responses:
default:
description: successful operation
- '/onap/so/infra/serviceInstantiation/{version}/serviceInstances/{serviceInstanceId}/deactivate':
+ content: {}
+ x-codegen-request-body-name: body
+ /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]'
+ schema:
+ pattern: '[vV][5-7]'
+ type: string
- name: serviceInstanceId
in: path
required: true
- type: string
+ schema:
+ type: string
+ requestBody:
+ content:
+ application/json:
+ schema:
+ type: string
+ required: false
responses:
default:
description: successful operation
- '/onap/so/infra/serviceInstantiation/{version}/serviceInstances/{serviceInstanceId}':
+ content: {}
+ x-codegen-request-body-name: body
+ /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]'
+ schema:
+ pattern: '[vV][5-7]'
+ type: string
- name: serviceInstanceId
in: path
required: true
- type: string
+ schema:
+ type: string
+ requestBody:
+ content:
+ application/json:
+ schema:
+ type: string
+ required: false
responses:
default:
description: successful operation
- '/onap/so/infra/serviceInstantiation/{version}/serviceInstances/assign':
+ content: {}
+ x-codegen-request-body-name: body
+ /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]'
+ schema:
+ pattern: '[vV][7]'
+ type: string
+ requestBody:
+ content:
+ application/json:
+ schema:
+ type: string
+ required: false
responses:
default:
description: successful operation
- '/onap/so/infra/serviceInstantiation/{version}/serviceInstances/{serviceInstanceId}/unassign':
+ content: {}
+ x-codegen-request-body-name: body
+ /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]'
+ schema:
+ pattern: '[vV][7]'
+ type: string
- name: serviceInstanceId
in: path
required: true
- type: string
+ schema:
+ type: string
+ requestBody:
+ content:
+ application/json:
+ schema:
+ type: string
+ required: false
responses:
default:
description: successful operation
- '/onap/so/infra/serviceInstantiation/{version}/serviceInstances/{serviceInstanceId}/configurations':
+ content: {}
+ x-codegen-request-body-name: body
+ /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]'
+ schema:
+ pattern: '[vV][5-7]'
+ type: string
- name: serviceInstanceId
in: path
required: true
- type: string
+ schema:
+ type: string
+ requestBody:
+ content:
+ application/json:
+ schema:
+ type: string
+ required: false
responses:
default:
description: successful operation
- '/onap/so/infra/serviceInstantiation/{version}/serviceInstances/{serviceInstanceId}/configurations/{configurationInstanceId}':
+ content: {}
+ x-codegen-request-body-name: body
+ /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]'
+ schema:
+ pattern: '[vV][5-7]'
+ type: string
- name: serviceInstanceId
in: path
required: true
- type: string
+ schema:
+ type: string
- name: configurationInstanceId
in: path
required: true
- type: string
+ schema:
+ type: string
+ requestBody:
+ content:
+ application/json:
+ schema:
+ type: string
+ required: false
responses:
default:
description: successful operation
- '/onap/so/infra/serviceInstantiation/{version}/serviceInstances/{serviceInstanceId}/removeRelationships':
+ content: {}
+ x-codegen-request-body-name: body
+ /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]'
+ schema:
+ pattern: '[vV][6-7]'
+ type: string
- name: serviceInstanceId
in: path
required: true
- type: string
+ schema:
+ type: string
+ requestBody:
+ content:
+ application/json:
+ schema:
+ type: string
+ required: false
responses:
default:
description: successful operation
- '/onap/so/infra/serviceInstantiation/{version}/serviceInstances/{serviceInstanceId}/vnfs':
+ content: {}
+ x-codegen-request-body-name: body
+ /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]'
+ schema:
+ pattern: '[vV][5-7]'
+ type: string
- name: serviceInstanceId
in: path
required: true
- type: string
+ schema:
+ type: string
+ requestBody:
+ content:
+ application/json:
+ schema:
+ type: string
+ required: false
responses:
default:
description: successful operation
- '/onap/so/infra/serviceInstantiation/{version}/serviceInstances/{serviceInstanceId}/vnfs/{vnfInstanceId}/replace':
+ content: {}
+ x-codegen-request-body-name: body
+ /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]'
+ schema:
+ pattern: '[vV][5-7]'
+ type: string
- name: serviceInstanceId
in: path
required: true
- type: string
+ schema:
+ type: string
- name: vnfInstanceId
in: path
required: true
- type: string
+ schema:
+ type: string
+ requestBody:
+ content:
+ application/json:
+ schema:
+ type: string
+ required: false
responses:
default:
description: successful operation
- '/onap/so/infra/serviceInstantiation/{version}/serviceInstances/{serviceInstanceId}/vnfs/{vnfInstanceId}':
+ content: {}
+ x-codegen-request-body-name: body
+ /onap/so/infra/serviceInstantiation/{version}/serviceInstances/{serviceInstanceId}/vnfs/{vnfInstanceId}:
put:
tags:
- onapsoinfraserviceInstantiation
- summary: 'Update VNF on a specified version, serviceInstance and vnfInstance'
- description: ''
+ summary: Update VNF on a specified version, serviceInstance and vnfInstance
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]'
+ schema:
+ pattern: '[vV][5-7]'
+ type: string
- name: serviceInstanceId
in: path
required: true
- type: string
+ schema:
+ type: string
- name: vnfInstanceId
in: path
required: true
- type: string
+ schema:
+ type: string
+ requestBody:
+ content:
+ application/json:
+ schema:
+ type: string
+ required: false
responses:
default:
description: successful operation
+ content: {}
+ x-codegen-request-body-name: body
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]'
+ schema:
+ pattern: '[vV][5-7]'
+ type: string
- name: serviceInstanceId
in: path
required: true
- type: string
+ schema:
+ type: string
- name: vnfInstanceId
in: path
required: true
- type: string
+ schema:
+ type: string
+ requestBody:
+ content:
+ application/json:
+ schema:
+ type: string
+ required: false
responses:
default:
description: successful operation
- '/onap/so/infra/serviceInstantiation/{version}/serviceInstances/{serviceInstanceId}/vnfs/{vnfInstanceId}/vfModules':
+ content: {}
+ x-codegen-request-body-name: body
+ /onap/so/infra/serviceInstantiation/{version}/serviceInstances/{serviceInstanceId}/vnfs/{vnfInstanceId}/vfModules:
post:
tags:
- onapsoinfraserviceInstantiation
- summary: 'Create VfModule on a specified version, serviceInstance and vnfInstance'
- description: ''
+ summary: Create VfModule on a specified version, serviceInstance and vnfInstance
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]'
+ schema:
+ pattern: '[vV][5-7]'
+ type: string
- name: serviceInstanceId
in: path
required: true
- type: string
+ schema:
+ type: string
- name: vnfInstanceId
in: path
required: true
- type: string
+ schema:
+ type: string
+ requestBody:
+ content:
+ application/json:
+ schema:
+ type: string
+ required: false
responses:
default:
description: successful operation
- '/onap/so/infra/serviceInstantiation/{version}/serviceInstances/{serviceInstanceId}/vnfs/{vnfInstanceId}/vfModules/{vfmoduleInstanceId}/replace':
+ content: {}
+ x-codegen-request-body-name: body
+ /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: ''
+ summary: Create VfModule on a specified version, serviceInstance and vnfInstance
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]'
+ schema:
+ pattern: '[vV][5-7]'
+ type: string
- name: serviceInstanceId
in: path
required: true
- type: string
+ schema:
+ type: string
- name: vnfInstanceId
in: path
required: true
- type: string
+ schema:
+ type: string
- name: vfmoduleInstanceId
in: path
required: true
- type: string
+ schema:
+ type: string
+ requestBody:
+ content:
+ application/json:
+ schema:
+ type: string
+ required: false
responses:
default:
description: successful operation
- '/onap/so/infra/serviceInstantiation/{version}/serviceInstances/{serviceInstanceId}/vnfs/{vnfInstanceId}/vfModules/{vfmoduleInstanceId}':
+ content: {}
+ x-codegen-request-body-name: body
+ /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]'
+ schema:
+ pattern: '[vV][5-7]'
+ type: string
- name: serviceInstanceId
in: path
required: true
- type: string
+ schema:
+ type: string
- name: vnfInstanceId
in: path
required: true
- type: string
+ schema:
+ type: string
- name: vfmoduleInstanceId
in: path
required: true
- type: string
+ schema:
+ type: string
+ requestBody:
+ content:
+ application/json:
+ schema:
+ type: string
+ required: false
responses:
default:
description: successful operation
+ content: {}
+ x-codegen-request-body-name: body
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]'
+ schema:
+ pattern: '[vV][5-7]'
+ type: string
- name: serviceInstanceId
in: path
required: true
- type: string
+ schema:
+ type: string
- name: vnfInstanceId
in: path
required: true
- type: string
+ schema:
+ type: string
- name: vfmoduleInstanceId
in: path
required: true
- type: string
+ schema:
+ type: string
+ requestBody:
+ content:
+ application/json:
+ schema:
+ type: string
+ required: false
responses:
default:
description: successful operation
- '/onap/so/infra/serviceInstantiation/{version}/serviceInstances/{serviceInstanceId}/vnfs/{vnfInstanceId}/volumeGroups':
+ content: {}
+ x-codegen-request-body-name: body
+ /onap/so/infra/serviceInstantiation/{version}/serviceInstances/{serviceInstanceId}/vnfs/{vnfInstanceId}/volumeGroups:
post:
tags:
- onapsoinfraserviceInstantiation
- summary: 'Create VolumeGroup on a specified version, serviceInstance, vnfInstance'
- description: ''
+ summary: Create VolumeGroup on a specified version, serviceInstance, vnfInstance
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]'
+ schema:
+ pattern: '[vV][5-7]'
+ type: string
- name: serviceInstanceId
in: path
required: true
- type: string
+ schema:
+ type: string
- name: vnfInstanceId
in: path
required: true
- type: string
+ schema:
+ type: string
+ requestBody:
+ content:
+ application/json:
+ schema:
+ type: string
+ required: false
responses:
default:
description: successful operation
- '/onap/so/infra/serviceInstantiation/{version}/serviceInstances/{serviceInstanceId}/vnfs/{vnfInstanceId}/volumeGroups/{volumeGroupInstanceId}':
+ content: {}
+ x-codegen-request-body-name: body
+ /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]'
+ schema:
+ pattern: '[vV][5-7]'
+ type: string
- name: serviceInstanceId
in: path
required: true
- type: string
+ schema:
+ type: string
- name: vnfInstanceId
in: path
required: true
- type: string
+ schema:
+ type: string
- name: volumeGroupInstanceId
in: path
required: true
- type: string
+ schema:
+ type: string
+ requestBody:
+ content:
+ application/json:
+ schema:
+ type: string
+ required: false
responses:
default:
description: successful operation
+ content: {}
+ x-codegen-request-body-name: body
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]'
+ schema:
+ pattern: '[vV][5-7]'
+ type: string
- name: serviceInstanceId
in: path
required: true
- type: string
+ schema:
+ type: string
- name: vnfInstanceId
in: path
required: true
- type: string
+ schema:
+ type: string
- name: volumeGroupInstanceId
in: path
required: true
- type: string
+ schema:
+ type: string
+ requestBody:
+ content:
+ application/json:
+ schema:
+ type: string
+ required: false
responses:
default:
description: successful operation
- '/onap/so/infra/serviceInstantiation/{version}/serviceInstances/{serviceInstanceId}/networks':
+ content: {}
+ x-codegen-request-body-name: body
+ /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]'
+ schema:
+ pattern: '[vV][5-7]'
+ type: string
- name: serviceInstanceId
in: path
required: true
- type: string
+ schema:
+ type: string
+ requestBody:
+ content:
+ application/json:
+ schema:
+ type: string
+ required: false
responses:
default:
description: successful operation
- '/onap/so/infra/serviceInstantiation/{version}/serviceInstances/{serviceInstanceId}/networks/{networkInstanceId}':
+ content: {}
+ x-codegen-request-body-name: body
+ /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]'
+ schema:
+ pattern: '[vV][5-7]'
+ type: string
- name: serviceInstanceId
in: path
required: true
- type: string
+ schema:
+ type: string
- name: networkInstanceId
in: path
required: true
- type: string
+ schema:
+ type: string
+ requestBody:
+ content:
+ application/json:
+ schema:
+ type: string
+ required: false
responses:
default:
description: successful operation
+ content: {}
+ x-codegen-request-body-name: body
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]'
+ schema:
+ pattern: '[vV][5-7]'
+ type: string
- name: serviceInstanceId
in: path
required: true
- type: string
+ schema:
+ type: string
- name: networkInstanceId
in: path
required: true
- type: string
+ schema:
+ type: string
+ requestBody:
+ content:
+ application/json:
+ schema:
+ type: string
+ required: false
responses:
default:
description: successful operation
- '/onap/so/infra/tasks/{version}':
+ content: {}
+ x-codegen-request-body-name: body
+ /onap/so/infra/tasks/{version}:
get:
tags:
- onapsoinfratasks
summary: Finds Manual Tasks
- description: ''
operationId: queryFilters
parameters:
- name: taskId
in: query
- required: false
- type: string
+ schema:
+ type: string
- name: originalRequestId
in: query
- required: false
- type: string
+ schema:
+ type: string
- name: subscriptionServiceType
in: query
- required: false
- type: string
+ schema:
+ type: string
- name: nfRole
in: query
- required: false
- type: string
+ schema:
+ type: string
- name: buildingBlockName
in: query
- required: false
- type: string
+ schema:
+ type: string
- name: originalRequestDate
in: query
- required: false
- type: string
+ schema:
+ type: string
- name: originalRequestorId
in: query
- required: false
- type: string
+ schema:
+ type: string
- name: version
in: path
required: true
- type: string
- pattern: '[vV]1'
+ schema:
+ pattern: '[vV]1'
+ type: string
responses:
default:
description: successful operation
- '/onap/so/infra/cloudResources/{version}/operationalEnvironments':
+ content: {}
+ /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]'
+ schema:
+ pattern: '[vV][1]'
+ type: string
+ requestBody:
+ content:
+ application/json:
+ schema:
+ type: string
+ required: false
responses:
default:
description: successful operation
- '/onap/so/infra/cloudResources/{version}/operationalEnvironments/{operationalEnvironmentId}/activate':
+ content: {}
+ x-codegen-request-body-name: body
+ /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]'
+ schema:
+ pattern: '[vV][1]'
+ type: string
- name: operationalEnvironmentId
in: path
required: true
- type: string
+ schema:
+ type: string
+ requestBody:
+ content:
+ application/json:
+ schema:
+ type: string
+ required: false
responses:
default:
description: successful operation
- '/onap/so/infra/cloudResources/{version}/operationalEnvironments/{operationalEnvironmentId}/deactivate':
+ content: {}
+ x-codegen-request-body-name: body
+ /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]'
+ schema:
+ pattern: '[vV][1]'
+ type: string
- name: operationalEnvironmentId
in: path
required: true
- type: string
+ schema:
+ type: string
+ requestBody:
+ content:
+ application/json:
+ schema:
+ type: string
+ required: false
responses:
default:
description: successful operation
- '/onap/so/infra/cloudResourcesRequests/{version}/{requestId}/unlock':
+ content: {}
+ x-codegen-request-body-name: body
+ /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
+ schema:
+ type: string
- name: version
in: path
required: true
- type: string
- pattern: '[vV][1]'
+ schema:
+ pattern: '[vV][1]'
+ type: string
+ requestBody:
+ content:
+ application/json:
+ schema:
+ type: string
+ required: false
responses:
default:
description: successful operation
- '/onap/so/infra/cloudResourcesRequests/{version}':
+ content: {}
+ x-codegen-request-body-name: body
+ /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]'
+ schema:
+ pattern: '[vV][1]'
+ type: string
responses:
default:
description: successful operation
- '/onap/so/infra/modelDistributions/{version}/distributions/{distributionId}':
+ content: {}
+ /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]'
+ schema:
+ pattern: '[vV][1]'
+ type: string
- name: distributionId
in: path
required: true
- type: string
+ schema:
+ type: string
+ requestBody:
+ content:
+ application/json:
+ schema:
+ type: string
+ required: false
responses:
default:
description: successful operation
- '/onap/so/infra/workflowSpecifications/{version}/workflows':
+ content: {}
+ x-codegen-request-body-name: body
+ /onap/so/infra/workflowSpecifications/{version}/workflows:
get:
tags:
- onapsoinfraworkflowSpecifications
summary: Retrieve Workflow details based on the filter criteria
- description: ''
operationId: queryWorkflowSpecifications
- consumes:
- - application/json
- produces:
- - application/json
parameters:
- name: resourceTarget
in: query
- required: false
- type: string
+ schema:
+ type: string
- name: version
in: path
required: true
- type: string
- pattern: '[vV][1]'
+ schema:
+ pattern: '[vV][1]'
+ type: string
responses:
default:
description: List of workflow specifications on successful operation
- schema:
- $ref: '#/definitions/RetrievingWorkflowResponse'
- '/onap/so/infra/instanceManagement/{version}/serviceInstances/{serviceInstanceId}/workflows/{workflow_UUID}':
+ content:
+ application/json:
+ schema:
+ $ref: '#/components/schemas/RetrievingWorkflowResponse'
+ /onap/so/infra/instanceManagement/{version}/serviceInstances/{serviceInstanceId}/workflows/{workflow_UUID}:
post:
tags:
- onapsoinfrainstanceManagement
summary: Executing service level custom workflow
- description: ''
operationId: executeServiceLevelCustomWorkflow
- consumes:
- - application/json
- produces:
- - application/json
parameters:
- - in: body
- name: body
- required: false
- schema:
- $ref: '#/definitions/ServiceLevelWorkflowExecution'
- name: version
in: path
required: true
- type: string
- pattern: '[vV][1]'
+ schema:
+ pattern: '[vV][1]'
+ type: string
- name: serviceInstanceId
in: path
required: true
- type: string
+ schema:
+ type: string
- name: workflow_UUID
in: path
required: true
- type: string
+ schema:
+ type: string
+ requestBody:
+ content:
+ application/json:
+ schema:
+ $ref: '#/components/schemas/ServiceLevelWorkflowExecution'
+ required: false
responses:
default:
description: successful operation
- '/onap/so/infra/instanceManagement/{version}/serviceInstances/{serviceInstanceId}/pnfs/${pnfName}/workflows/${workflow_UUID}':
+ content: {}
+ x-codegen-request-body-name: body
+ /onap/so/infra/instanceManagement/{version}/serviceInstances/{serviceInstanceId}/pnfs/${pnfName}/workflows/${workflow_UUID}:
post:
tags:
- onapsoinfrainstanceManagement
summary: Executing download/activate custom workflow
- description: ''
operationId: executePNFCustomWorkflow
- consumes:
- - application/json
- produces:
- - application/json
parameters:
- - in: body
- name: body
- required: false
- schema:
- $ref: '#/definitions/PNFCustomWorkflowExecution'
- name: version
in: path
required: true
- type: string
- pattern: '[vV][1]'
+ schema:
+ pattern: '[vV][1]'
+ type: string
- name: serviceInstanceId
in: path
required: true
- type: string
+ schema:
+ type: string
- name: pnfName
- in: path
- required: true
+ in: path
+ required: true
+ schema:
type: string
- name: workflow_UUID
in: path
required: true
- type: string
- responses:
- default:
- description: successful operation
-definitions:
- Allocate3gppService:
- description: This describes the request body for 3gpp service allocation
- type: object
- properties:
- name:
- description: Name of the service to allocate
- type: string
- modelInvariantUuid:
- description: >-
- Model Invariant UUID corresponding to the service. For E.g : NSST
- Model invariant uuid in case of NSSI creation
- type: string
- modelUuid:
- description: >-
- Model UUID corresponding to the service. For E.g : NSST Model uuid in
- case of NSSI creation
- type: string
- globalSubscriberId:
- type: string
- subscriptionServiceType:
- description: 'Service type for the subscription. For E.G :5G'
- type: string
- networkType:
- description: 'Network type. For E.G :AN/CN/TN'
- type: string
- additionalProperties:
- description: Map of additional properties required for service allocation
- type: object
- DeAllocate3gppService:
- description: This describes the request body for 3gpp service Termination/Deallocation
- type: object
- properties:
- serviceInstanceID:
- description: ID of the service to terminate
- type: string
- globalSubscriberId:
- type: string
- subscriptionServiceType:
- description: 'Service type for the subscription. For E.G :5G'
- type: string
- networkType:
- description: 'Network type. For E.G :AN/CN/TN'
- type: string
- additionalProperties:
- description: Map of additional properties required for service deallocation
- type: object
- Modify3gppService:
- description: This describes the request body for 3gpp service modification
- type: object
- properties:
- name:
- description: Name of the service to modify
- type: string
- serviceInstanceID:
- description: ID of the service to modify
- type: string
- globalSubscriberId:
- type: string
- subscriptionServiceType:
- description: 'Service type for the subscription. For E.G :5G'
- type: string
- networkType:
- description: 'Network type. For E.G :AN/CN/TN'
- type: string
- additionalProperties:
- description: Map of additional properties required for service modification
- type: object
- 3gppServiceActivation:
- description: This describes the request body for 3gpp service activation/deactivation
- type: object
- properties:
- serviceInstanceID:
- description: ID of the service to be activated/deactivated
- type: string
- globalSubscriberId:
- type: string
- subscriptionServiceType:
- description: 'Service type for the subscription. For E.G :5G'
- type: string
- networkType:
- description: 'Network type. For E.G :AN/CN/TN'
- type: string
- additionalProperties:
- description: >-
- Map of additional properties required for service
- activation/deactivation
- type: object
- QuerySubnetCapability:
- description: This describes the subnet capabilities that can be queried
- type: object
- properties:
- subnetTypes:
- type: array
- items:
- $ref: '#/definitions/SubnetTypes'
- SubnetTypes:
- description: This describes allowed subnet types
- type: string
- enum:
- - AN
- - AN_NF
- - CN
- - TN_FH
- - TN_MH
- - TN_BH
- 3gppServiceResponse:
- description: This describes the response for 3gpp services
- type: object
- properties:
- jobId:
- description: Job ID to be used to identify the status of the job
- type: string
- status:
- description: status of the job
- type: string
- statusDescription:
- description: Description on status in case of erroneous response
- type: object
- RetrievingWorkflowResponse:
- description: Response body of fetching workflows using resource target
- type: object
- properties:
- workflowSpecificationList:
- description: List of Workflow specification data
- type: array
- items:
- $ref: '#/definitions/WorkflowSpecification'
- WorkflowSpecification:
- description: This describes workflow specification object
- type: object
- properties:
- artifactInfo:
- description: 'Attributes related to artifact information '
- type: object
- properties:
- artifactType:
- description: Type of the artifact to be queried
- type: string
- artifactUuid:
- description: UUID of the artifact
- type: string
- artifactName:
- description: Name of the artifact
- type: string
- artifactVersion:
- description: Artifact's Version
- type: string
- artifactDescription:
- description: ''
- type: string
- workflowName:
- description: Name of the workflow fetched for the resource type
- type: string
- operationName:
- description: Mapped operation name of the corresponding workflow
- type: string
- workflowSource:
- description: ''
- type: string
- workflowResourceTarget:
- description: Type of Resource mapped against the workflow
- type: string
- ServiceLevelWorkflowExecution:
- description: This describes the request body of service level custom workflow execution
- type: object
- properties:
- requestInfo:
- description: Request object contains source information
- type: object
- properties:
- source:
- description: Name of the sender
- type: string
- suppressRollback:
- description: Enable/disable rollback suppression
- type: boolean
- requestorId:
- description: Id of the sender
- type: string
- modelInfo:
- description: Parameters related to the service model
- type: object
- properties:
- modelType:
- description: Type of the model to be executed
- type: string
- modelInvariantUuid:
- description: Model invariant id corresponding to the service
- type: string
- modelUuid:
- description: Model uuid corresponding to the service
- type: string
- modelVersionId:
- description: Model version of the service instance
- type: string
- modelName:
- description: Name of the service
- type: string
- modelVersion:
- description: Version of the service instance
- type: string
- requestParameters:
- description: User parameter object
- type: object
- properties:
- subscriptionServiceType:
- description: Type of service subscription
- type: string
- subscriberInfo:
- description: Subscriber id information
- type: object
- properties:
- globalSubscriberId:
- description: Id of the subscriber sending the request
- type: string
- project:
- description: Information about the target project name
- type: object
- properties:
- projectName:
- description: Name of the target project
- type: string
- owningEntity:
- description: Object describes the entity details
- type: object
- properties:
- owningEntityId:
- description: Id of the owning Entity
- type: string
- owningEntityName:
- description: Name of the owning Entity
- type: string
- PNFCustomWorkflowExecution:
- description: This describes the request body of PNF custom workflow execution
- type: object
- properties:
- requestInfo:
- description: Request object contains source information
- type: object
- properties:
- source:
- description: Name of the sender
- type: string
- suppressRollback:
- description: Enable/disable rollback suppression
- type: boolean
- requestorId:
- description: Id of the sender
- type: string
- modelInfo:
- description: Parameters related to the service model
- type: object
- properties:
- modelType:
- description: Type of the model to be executed
- type: string
- modelInvariantUuid:
- description: Model invariant id corresponding to the service
- type: string
- modelUuid:
- description: Model uuid corresponding to the service
- type: string
- modelVersionId:
- description: Model version of the service instance
- type: string
- modelName:
- description: Name of the service
- type: string
- modelVersion:
- description: Version of the service instance
- type: string
- requestParameters:
- description: User parameter object
- type: object
- properties:
- subscriptionServiceType:
- description: Type of service subscription
- type: string
- subscriberInfo:
- description: Subscriber id information
- type: object
- properties:
- globalSubscriberId:
- description: Id of the subscriber sending the request
- type: string
- project:
- description: Information about the target project name
- type: object
- properties:
- projectName:
- description: Name of the target project
- type: string
- owningEntity:
- description: Object describes the entity details
- type: object
- properties:
- owningEntityId:
- description: Id of the owning Entity
- type: string
- owningEntityName:
- description: Name of the owning Entity
- type: string \ No newline at end of file
+ schema:
+ type: string
+ requestBody:
+ content:
+ application/json:
+ schema:
+ $ref: '#/components/schemas/PNFCustomWorkflowExecution'
+ required: false
+ responses:
+ default:
+ description: successful operation
+ content: {}
+ x-codegen-request-body-name: body
+components:
+ schemas:
+ Allocate3gppService:
+ type: object
+ properties:
+ name:
+ type: string
+ description: Name of the service to allocate
+ modelInvariantUuid:
+ type: string
+ description: >-
+ Model Invariant UUID corresponding to the service. For E.g : NSST
+ Model invariant uuid in case of NSSI creation
+ modelUuid:
+ type: string
+ description: >-
+ Model UUID corresponding to the service. For E.g : NSST Model uuid
+ in case of NSSI creation
+ globalSubscriberId:
+ type: string
+ subscriptionServiceType:
+ type: string
+ description: Service type for the subscription. For E.G :5G
+ networkType:
+ type: string
+ description: Network type. For E.G :AN/CN/TN
+ additionalProperties:
+ type: object
+ properties: {}
+ description: Map of additional properties required for service allocation
+ description: This describes the request body for 3gpp service allocation
+ DeAllocate3gppService:
+ type: object
+ properties:
+ serviceInstanceID:
+ type: string
+ description: ID of the service to terminate
+ globalSubscriberId:
+ type: string
+ subscriptionServiceType:
+ type: string
+ description: Service type for the subscription. For E.G :5G
+ networkType:
+ type: string
+ description: Network type. For E.G :AN/CN/TN
+ additionalProperties:
+ type: object
+ properties: {}
+ description: Map of additional properties required for service deallocation
+ description: >-
+ This describes the request body for 3gpp service
+ Termination/Deallocation
+ Modify3gppService:
+ type: object
+ properties:
+ name:
+ type: string
+ description: Name of the service to modify
+ serviceInstanceID:
+ type: string
+ description: ID of the service to modify
+ globalSubscriberId:
+ type: string
+ subscriptionServiceType:
+ type: string
+ description: Service type for the subscription. For E.G :5G
+ networkType:
+ type: string
+ description: Network type. For E.G :AN/CN/TN
+ additionalProperties:
+ type: object
+ properties: {}
+ description: Map of additional properties required for service modification
+ description: This describes the request body for 3gpp service modification
+ 3gppServiceActivation:
+ type: object
+ properties:
+ serviceInstanceID:
+ type: string
+ description: ID of the service to be activated/deactivated
+ globalSubscriberId:
+ type: string
+ subscriptionServiceType:
+ type: string
+ description: Service type for the subscription. For E.G :5G
+ networkType:
+ type: string
+ description: Network type. For E.G :AN/CN/TN
+ additionalProperties:
+ type: object
+ properties: {}
+ description: >-
+ Map of additional properties required for service
+ activation/deactivation
+ description: This describes the request body for 3gpp service activation/deactivation
+ QuerySubnetCapability:
+ type: object
+ properties:
+ subnetTypes:
+ type: array
+ items:
+ $ref: '#/components/schemas/SubnetTypes'
+ description: This describes the subnet capabilities that can be queried
+ SubnetTypes:
+ type: string
+ description: This describes allowed subnet types
+ enum:
+ - AN
+ - AN_NF
+ - CN
+ - TN_FH
+ - TN_MH
+ - TN_BH
+ 3gppServiceResponse:
+ type: object
+ properties:
+ jobId:
+ type: string
+ description: Job ID to be used to identify the status of the job
+ status:
+ type: string
+ description: status of the job
+ statusDescription:
+ type: object
+ properties: {}
+ description: Description on status in case of erroneous response
+ description: This describes the response for 3gpp services
+ RetrievingWorkflowResponse:
+ type: object
+ properties:
+ workflowSpecificationList:
+ type: array
+ description: List of Workflow specification data
+ items:
+ $ref: '#/components/schemas/WorkflowSpecification'
+ description: Response body of fetching workflows using resource target
+ WorkflowSpecification:
+ type: object
+ properties:
+ artifactInfo:
+ type: object
+ properties:
+ artifactType:
+ type: string
+ description: Type of the artifact to be queried
+ artifactUuid:
+ type: string
+ description: UUID of the artifact
+ artifactName:
+ type: string
+ description: Name of the artifact
+ artifactVersion:
+ type: string
+ description: Artifact's Version
+ artifactDescription:
+ type: string
+ description: ''
+ workflowName:
+ type: string
+ description: Name of the workflow fetched for the resource type
+ operationName:
+ type: string
+ description: Mapped operation name of the corresponding workflow
+ workflowSource:
+ type: string
+ description: ''
+ workflowResourceTarget:
+ type: string
+ description: Type of Resource mapped against the workflow
+ description: 'Attributes related to artifact information '
+ description: This describes workflow specification object
+ ServiceLevelWorkflowExecution:
+ type: object
+ properties:
+ requestInfo:
+ type: object
+ properties:
+ source:
+ type: string
+ description: Name of the sender
+ suppressRollback:
+ type: boolean
+ description: Enable/disable rollback suppression
+ requestorId:
+ type: string
+ description: Id of the sender
+ description: Request object contains source information
+ modelInfo:
+ type: object
+ properties:
+ modelType:
+ type: string
+ description: Type of the model to be executed
+ modelInvariantUuid:
+ type: string
+ description: Model invariant id corresponding to the service
+ modelUuid:
+ type: string
+ description: Model uuid corresponding to the service
+ modelVersionId:
+ type: string
+ description: Model version of the service instance
+ modelName:
+ type: string
+ description: Name of the service
+ modelVersion:
+ type: string
+ description: Version of the service instance
+ description: Parameters related to the service model
+ requestParameters:
+ type: object
+ properties:
+ subscriptionServiceType:
+ type: string
+ description: Type of service subscription
+ description: User parameter object
+ subscriberInfo:
+ type: object
+ properties:
+ globalSubscriberId:
+ type: string
+ description: Id of the subscriber sending the request
+ description: Subscriber id information
+ project:
+ type: object
+ properties:
+ projectName:
+ type: string
+ description: Name of the target project
+ description: Information about the target project name
+ owningEntity:
+ type: object
+ properties:
+ owningEntityId:
+ type: string
+ description: Id of the owning Entity
+ owningEntityName:
+ type: string
+ description: Name of the owning Entity
+ description: Object describes the entity details
+ description: >-
+ This describes the request body of service level custom workflow
+ execution
+ PNFCustomWorkflowExecution:
+ type: object
+ properties:
+ requestInfo:
+ type: object
+ properties:
+ source:
+ type: string
+ description: Name of the sender
+ suppressRollback:
+ type: boolean
+ description: Enable/disable rollback suppression
+ requestorId:
+ type: string
+ description: Id of the sender
+ description: Request object contains source information
+ modelInfo:
+ type: object
+ properties:
+ modelType:
+ type: string
+ description: Type of the model to be executed
+ modelInvariantUuid:
+ type: string
+ description: Model invariant id corresponding to the service
+ modelUuid:
+ type: string
+ description: Model uuid corresponding to the service
+ modelVersionId:
+ type: string
+ description: Model version of the service instance
+ modelName:
+ type: string
+ description: Name of the service
+ modelVersion:
+ type: string
+ description: Version of the service instance
+ description: Parameters related to the service model
+ requestParameters:
+ type: object
+ properties:
+ subscriptionServiceType:
+ type: string
+ description: Type of service subscription
+ description: User parameter object
+ subscriberInfo:
+ type: object
+ properties:
+ globalSubscriberId:
+ type: string
+ description: Id of the subscriber sending the request
+ description: Subscriber id information
+ project:
+ type: object
+ properties:
+ projectName:
+ type: string
+ description: Name of the target project
+ description: Information about the target project name
+ owningEntity:
+ type: object
+ properties:
+ owningEntityId:
+ type: string
+ description: Id of the owning Entity
+ owningEntityName:
+ type: string
+ description: Name of the owning Entity
+ description: Object describes the entity details
+ description: This describes the request body of PNF custom workflow execution
+ CreateServiceInstanceParamaters:
+ type: object
+ properties:
+ requestDetails:
+ type: object
+ description: Contains data associated with a request
+ properties:
+ requestParameters:
+ type: object
+ description: Contains all the parameters, associated with this request
+ properties:
+ subscriptionServiceType:
+ type: string
+ description: Type of service subscriptions of customer resource
+ userParams:
+ type: array
+ description: Array of data that contains information about Service
+ items:
+ oneOf:
+ - $ref: >-
+ #/components/schemas/CreateServiceInstParamsUserParamsHoming
+ - $ref: >-
+ #/components/schemas/CreateServiceInstParamsUserParamsService
+ aLaCarte:
+ type: boolean
+ description: >-
+ Enable “A La Carte” mode. In this mode, the user creates and
+ submits operations for each object to be created.
+ usePreload:
+ type: boolean
+ description: Special value required to use additional Policy settings
+ modelInfo:
+ type: object
+ description: Contains information about the currently used Service Model model
+ properties:
+ modelInvariantId:
+ type: string
+ description: >-
+ Unique identifier corresponding to the main definition of a
+ model in SDC
+ modelType:
+ type: string
+ description: Type of service model, created in SDC
+ modelName:
+ type: string
+ description: Name of the model, which can change from version to version.
+ modelVersion:
+ type: string
+ description: >-
+ Unique identifier corresponding to one version of a model in
+ SDC
+ modelVersionId:
+ type: string
+ description: The SDC model version for this resource or service model.
+ modelUuid:
+ type: string
+ description: >-
+ Unique identifier corresponding to the main definition of a
+ model in SDC
+ modelInvariantUuid:
+ type: string
+ description: >-
+ Unique identifier corresponding to the main definition of a
+ model in SDC
+ requestInfo:
+ type: object
+ description: Represents some information for the request
+ properties:
+ productFamilyId:
+ type: string
+ description: SDC catalog service type
+ source:
+ type: string
+ description: Determines only the source from whom the request came
+ instanceName:
+ type: string
+ description: Defines the name of the instance to be created
+ suppressRollback:
+ type: boolean
+ description: >-
+ If false – the rollback process will not start if something
+ goes wrong in execution BB. If true - QueryRainyDayTable
+ task will start and make querying policy in table
+ rainy_day_handler_macro
+ requestorId:
+ type: string
+ description: User Id or Application Id, initiating the Assessment
+ subscriberInfo:
+ type: object
+ description: >-
+ Represents the object that groups service instances used by a
+ customer
+ properties:
+ globalSubscriberId:
+ type: string
+ description: >-
+ Global Subscriber Id used across ONAP to uniquely identify
+ subscriber.
+ project:
+ type: object
+ description: Represents the project, which will own the service instance
+ properties:
+ projectName:
+ type: string
+ description: Name of the project deploying a service
+ owningEntity:
+ type: object
+ description: Represents the entity, which will own the service instance
+ properties:
+ owningEntityId:
+ type: string
+ description: UUID of an owning entity
+ owningEntityName:
+ type: string
+ description: Owning entity name
+ CreateServiceInstParamsUserParamsHoming:
+ allOf:
+ - type: object
+ properties:
+ Homing_Solution:
+ type: string
+ description: >-
+ Switches on an optimization service to deploy services
+ automatically across multiple sites and multiple clouds
+ CreateServiceInstParamsUserParamsService:
+ allOf:
+ - type: object
+ properties:
+ service:
+ type: object
+ description: Includes information about all created instances
+ properties:
+ instanceParams:
+ type: array
+ description: Includes a set of specific parameters
+ items:
+ type: object
+ properties: {}
+ instanceName:
+ type: string
+ description: Defines the name of the instance to be created
+ resources:
+ type: object
+ properties:
+ vnfs:
+ type: array
+ description: Contains information about VNF parameters
+ items:
+ type: object
+ properties:
+ modelInfo:
+ type: object
+ description: Contains information about the currently used Service Model model
+ properties:
+ modelInvariantId:
+ type: string
+ description: >-
+ Unique identifier corresponding to the main
+ definition of a model in SDC
+ modelType:
+ type: string
+ description: Type of Service Model, created in SDC
+ modelName:
+ type: string
+ description: >-
+ Name of the model, which can change from
+ version to version.
+ modelVersion:
+ type: string
+ description: >-
+ Unique identifier corresponding to one version
+ of a model in SDC
+ modelVersionId:
+ type: string
+ description: >-
+ The SDC model version for this resource or
+ service model.
+ modelUuid:
+ type: string
+ description: >-
+ Unique identifier corresponding to the main
+ definition of a model in SDC
+ modelInvariantUuid:
+ type: string
+ description: >-
+ Unique identifier corresponding to the main
+ definition of a model in SDC
+ cloudConfiguration:
+ type: object
+ properties:
+ cloudOwner:
+ type: string
+ description: >-
+ Identifies the vendor and cloud name. First
+ part of composite key should be formatted as
+ vendor-cloudname
+ lcpCloudRegionId:
+ type: string
+ description: >-
+ Cloud-owner defined type indicator (Openstack
+ region)
+ tenantId:
+ type: string
+ description: Unique id relative to the cloud-region.
+ platform:
+ type: object
+ description: >-
+ Represents the platform, on which the VNFs/CNFs
+ will run
+ properties:
+ platformName:
+ type: string
+ description: Name of the platform
+ lineOfBusiness:
+ type: object
+ description: >-
+ Represents the business line, owns the VNFs/CNFs
+ instances
+ properties:
+ lineOfBusinessName:
+ type: string
+ description: Name of the line-of-business (product)
+ productFamilyId:
+ type: string
+ description: Define SDC catalog service type
+ instanceName:
+ type: string
+ description: Defines the name of the instance to be created
+ instanceParams:
+ type: array
+ description: Includes a set of specific parameters of instance
+ items:
+ type: object
+ properties: {}
+ vfModules:
+ type: array
+ description: Сontains a set of parameters of VF Modules
+ items:
+ type: object
+ properties:
+ modelInfo:
+ type: object
+ description: Contains information about the currently used Service Model model
+ properties:
+ modelInvariantId:
+ type: string
+ description: >-
+ Unique identifier corresponding to the
+ main definition of a model in SDC
+ modelType:
+ type: string
+ description: Type of service model, created in SDC
+ modelName:
+ type: string
+ description: >-
+ Name of the model, which can change from
+ version to version.
+ modelVersion:
+ type: string
+ description: >-
+ Unique identifier corresponding to one
+ version of a model in SDC
+ modelVersionId:
+ type: string
+ description: >-
+ The SDC model version for this resource
+ or service model.
+ modelUuid:
+ type: string
+ description: >-
+ Unique identifier corresponding to the
+ main definition of a model in SDC
+ modelInvariantUuid:
+ type: string
+ description: >-
+ Unique identifier corresponding to the
+ main definition of a model in SDC
+ instanceName:
+ type: string
+ description: >-
+ Defines the name of the instance to be
+ created
+ instanceParams:
+ type: array
+ description: Includes a set of specific parameters
+ items:
+ type: object
+ properties: {}
+ modelInfo:
+ type: object
+ description: Contains information about the currently used Service Model model
+ properties:
+ modelName:
+ type: string
+ description: >-
+ Name of the model, which can change from
+ version to version.
+ modelVersionId:
+ type: string
+ description: >-
+ Unique identifier corresponding to one
+ version of a model in SDC
+ modelInvariantUuid:
+ type: string
+ description: >-
+ Unique identifier corresponding to the
+ main definition of a model in SDC
+ modelVersion:
+ type: string
+ description: >-
+ The SDC model version for this resource
+ or service model.
+ modelCustomizationId:
+ type: string
+ description: >-
+ Unique generated identifier of a model in SDC
diff --git a/graph-inventory/aai-client/src/test/java/org/onap/aaiclient/client/aai/AAIObjectTypeTest.java b/graph-inventory/aai-client/src/test/java/org/onap/aaiclient/client/aai/AAIObjectTypeTest.java
index 12051fb07d..1696445c88 100644
--- a/graph-inventory/aai-client/src/test/java/org/onap/aaiclient/client/aai/AAIObjectTypeTest.java
+++ b/graph-inventory/aai-client/src/test/java/org/onap/aaiclient/client/aai/AAIObjectTypeTest.java
@@ -3,6 +3,7 @@
* ONAP - SO
* ================================================================================
* Copyright (C) 2017 AT&T Intellectual Property. All rights reserved.
+ * Copyright (C) 2022 Samsung Electronics
* ================================================================================
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
@@ -48,9 +49,6 @@ public class AAIObjectTypeTest {
AAIObjectType genericVnf2 = AAIFluentTypeBuilder.network().genericVnf("test2").build();
assertEquals(genericVnf2, genericVnf);
-
- assertEquals(genericVnf, Types.GENERIC_VNF);
-
}
@Test
diff --git a/mso-api-handlers/mso-api-handler-infra/src/main/java/org/onap/so/apihandlerinfra/validation/RelatedInstancesValidation.java b/mso-api-handlers/mso-api-handler-infra/src/main/java/org/onap/so/apihandlerinfra/validation/RelatedInstancesValidation.java
index 3b87d91d3f..801065fdde 100644
--- a/mso-api-handlers/mso-api-handler-infra/src/main/java/org/onap/so/apihandlerinfra/validation/RelatedInstancesValidation.java
+++ b/mso-api-handlers/mso-api-handler-infra/src/main/java/org/onap/so/apihandlerinfra/validation/RelatedInstancesValidation.java
@@ -185,7 +185,10 @@ public class RelatedInstancesValidation implements ValidationRule {
&& !(requestScope.equalsIgnoreCase(ModelType.instanceGroup.toString())
&& action == Action.createInstance)) {
isRelatedServiceInstancePresent = true;
- if (!relatedInstance.getInstanceId().equals(sir.getServiceInstanceId())) {
+ // InstanceDirection.source indicates child service and this validation is for all
+ // except child services.
+ if (!InstanceDirection.source.equals(relatedInstance.getInstanceDirection())
+ && !relatedInstance.getInstanceId().equals(sir.getServiceInstanceId())) {
throw new ValidationException(
"serviceInstanceId matching the serviceInstanceId in request URI");
}
diff --git a/mso-api-handlers/mso-api-handler-infra/src/main/java/org/onap/so/apihandlerinfra/validation/UserParamsValidation.java b/mso-api-handlers/mso-api-handler-infra/src/main/java/org/onap/so/apihandlerinfra/validation/UserParamsValidation.java
index 8646a74a2f..728d4df4ee 100644
--- a/mso-api-handlers/mso-api-handler-infra/src/main/java/org/onap/so/apihandlerinfra/validation/UserParamsValidation.java
+++ b/mso-api-handlers/mso-api-handler-infra/src/main/java/org/onap/so/apihandlerinfra/validation/UserParamsValidation.java
@@ -34,6 +34,7 @@ import org.onap.so.apihandlerinfra.Actions;
import org.onap.so.exceptions.ValidationException;
import org.onap.so.serviceinstancebeans.ModelInfo;
import org.onap.so.serviceinstancebeans.Networks;
+import org.onap.so.serviceinstancebeans.Pnfs;
import org.onap.so.serviceinstancebeans.Service;
import org.onap.so.serviceinstancebeans.VfModules;
import org.onap.so.serviceinstancebeans.Vnfs;
@@ -116,6 +117,29 @@ public class UserParamsValidation implements ValidationRule {
validateDuplicateInstanceNames(vnfCustomIdToInstanceNames, "vnf");
validateDuplicateInstanceNames(vfModuleCustomIdToInstanceNames, "vfModule");
+ Map<String, Set<String>> pnfCustomIdToInstanceNames = new HashMap<>();
+
+ for (Pnfs pnf : validate.getResources().getPnfs()) {
+ if (pnf.getModelInfo() == null) {
+ throw new ValidationException("modelInfo in userParams pnf resources", true);
+ } else if (pnf.getModelInfo().getModelCustomizationId() == null) {
+ throw new ValidationException("modelCustomizationId in userParams pnf resources", true);
+ } else if (pnf.getModelInfo().getModelVersionId() == null) {
+ throw new ValidationException("modelVersionId in userParams pnf resources", true);
+ }
+ String pnfCustomizationId = pnf.getModelInfo().getModelCustomizationId();
+ pnfCustomIdToInstanceNames.putIfAbsent(pnfCustomizationId, new HashSet<>());
+ String pnfInstanceName = StringUtils.defaultString(pnf.getInstanceName());
+ Set<String> pnfVisitedInstanceNames = pnfCustomIdToInstanceNames.get(pnfCustomizationId);
+ if (!pnfVisitedInstanceNames.add(pnfInstanceName)) {
+ throw new ValidationException(
+ "instanceName: same instanceName with same modelCustomizationId in userParams pnf resources",
+ true);
+ }
+ }
+
+ validateDuplicateInstanceNames(pnfCustomIdToInstanceNames, "pnf");
+
List<Networks> validateNetworks = new ArrayList<>();
validateNetworks = validate.getResources().getNetworks();
if (validateNetworks != null) {
diff --git a/mso-api-handlers/mso-api-handler-infra/src/test/java/org/onap/so/apihandlerinfra/validation/RelatedInstancesValidationTest.java b/mso-api-handlers/mso-api-handler-infra/src/test/java/org/onap/so/apihandlerinfra/validation/RelatedInstancesValidationTest.java
index 93a19a9531..ef160e9c4c 100644
--- a/mso-api-handlers/mso-api-handler-infra/src/test/java/org/onap/so/apihandlerinfra/validation/RelatedInstancesValidationTest.java
+++ b/mso-api-handlers/mso-api-handler-infra/src/test/java/org/onap/so/apihandlerinfra/validation/RelatedInstancesValidationTest.java
@@ -31,6 +31,7 @@ import org.junit.rules.ExpectedException;
import org.onap.so.apihandlerinfra.Action;
import org.onap.so.apihandlerinfra.BaseTest;
import org.onap.so.exceptions.ValidationException;
+import org.onap.so.serviceinstancebeans.InstanceDirection;
import org.onap.so.serviceinstancebeans.RelatedInstanceList;
import org.onap.so.serviceinstancebeans.ServiceInstancesRequest;
import com.fasterxml.jackson.databind.ObjectMapper;
@@ -133,4 +134,21 @@ public class RelatedInstancesValidationTest extends BaseTest {
validation.validate(setupValidationInformation(
"src/test/resources/Validation/VpnBondingValidation/NoModelInvariantId.json"));
}
+
+ @Test
+ public void validateRelatedInstanceInstanceIdTest() throws IOException, ValidationException {
+ validation.validate(setupValidationInformation(
+ "src/test/resources/Validation/UserParamsValidation/RelatedInstanceInstanceId.json"));
+ }
+
+ @Test
+ public void validateRelatedInstanceInstanceIdExceptionTest() throws IOException, ValidationException {
+ thrown.expect(ValidationException.class);
+ thrown.expectMessage("serviceInstanceId matching the serviceInstanceId in request URI");
+ ValidationInformation info = setupValidationInformation(
+ "src/test/resources/Validation/UserParamsValidation/RelatedInstanceInstanceId.json");
+ RelatedInstanceList[] instanceList = info.sir.getRequestDetails().getRelatedInstanceList();
+ instanceList[0].getRelatedInstance().setInstanceDirection(InstanceDirection.fromValue("destination"));
+ validation.validate(info);
+ }
}
diff --git a/mso-api-handlers/mso-api-handler-infra/src/test/java/org/onap/so/apihandlerinfra/validation/UserParamsValidationTest.java b/mso-api-handlers/mso-api-handler-infra/src/test/java/org/onap/so/apihandlerinfra/validation/UserParamsValidationTest.java
index 548b957303..30b7662b59 100644
--- a/mso-api-handlers/mso-api-handler-infra/src/test/java/org/onap/so/apihandlerinfra/validation/UserParamsValidationTest.java
+++ b/mso-api-handlers/mso-api-handler-infra/src/test/java/org/onap/so/apihandlerinfra/validation/UserParamsValidationTest.java
@@ -243,6 +243,75 @@ public class UserParamsValidationTest {
}
@Test
+ public void validateDuplicateInstanceNameDifferentCustomizationIdPnfTest() throws IOException, ValidationException {
+ thrown.expect(ValidationException.class);
+ thrown.expectMessage(
+ "No valid instanceName: same instanceName but different modelCustomizationId (instanceName should be unique) in userParams pnf resources is specified");
+ ValidationInformation info = setupValidationInformation(
+ "src/test/resources/Validation/UserParamsValidation/DuplicateInstanceNamesPnf.json");
+ info.getUserParams().getResources().getPnfs().get(0).setInstanceName("ORAN_SIM1_2106_pnf_01");
+ validation.validate(info);
+ }
+
+ @Test
+ public void validateDuplicateInstanceNameSameCustomizationIdPnfTest() throws IOException, ValidationException {
+ thrown.expect(ValidationException.class);
+ thrown.expectMessage(
+ "No valid instanceName: same instanceName with same modelCustomizationId in userParams pnf resources is specified");
+ ValidationInformation info = setupValidationInformation(
+ "src/test/resources/Validation/UserParamsValidation/DuplicateInstanceNamesPnf.json");
+ info.getUserParams().getResources().getPnfs().get(1).getModelInfo()
+ .setModelCustomizationId("88a3096a-af87-4853-99f6-7256a9ab6c3e");
+ info.getUserParams().getResources().getPnfs().get(1).setInstanceName("ORAN_SIM1_2106_pnf_01");
+ validation.validate(info);
+ }
+
+ @Test
+ public void validateNullInstanceNameSameCustomizationIdPnfTest() throws IOException, ValidationException {
+ thrown.expect(ValidationException.class);
+ thrown.expectMessage(
+ "No valid instanceName: instanceName is missing or empty with same modelCustomizationId in userParams pnf resources is specified");
+ ValidationInformation info = setupValidationInformation(
+ "src/test/resources/Validation/UserParamsValidation/DuplicateInstanceNamesPnf.json");
+ info.getUserParams().getResources().getPnfs().get(1).getModelInfo()
+ .setModelCustomizationId("88a3096a-af87-4853-99f6-7256a9ab6c3e");
+ info.getUserParams().getResources().getPnfs().get(1).setInstanceName(null);
+ validation.validate(info);
+ }
+
+ @Test
+ public void validateDuplicateNullInstanceNameSameCustomizationIdPnfTest() throws IOException, ValidationException {
+ thrown.expect(ValidationException.class);
+ thrown.expectMessage(
+ "No valid instanceName: same instanceName with same modelCustomizationId in userParams pnf resources is specified");
+ ValidationInformation info = setupValidationInformation(
+ "src/test/resources/Validation/UserParamsValidation/DuplicateInstanceNamesPnf.json");
+ info.getUserParams().getResources().getPnfs().get(0).setInstanceName(null);
+ info.getUserParams().getResources().getPnfs().get(1).getModelInfo()
+ .setModelCustomizationId("88a3096a-af87-4853-99f6-7256a9ab6c3e");
+ info.getUserParams().getResources().getPnfs().get(1).setInstanceName(null);
+ validation.validate(info);
+ }
+
+ @Test
+ public void validateDifferentInstanceNameSameCustomizationIdPnfTest() throws IOException, ValidationException {
+ ValidationInformation info = setupValidationInformation(
+ "src/test/resources/Validation/UserParamsValidation/DuplicateInstanceNamesPnf.json");
+ info.getUserParams().getResources().getPnfs().get(1).getModelInfo()
+ .setModelCustomizationId("88a3096a-af87-4853-99f6-7256a9ab6c3e");
+ info.getUserParams().getResources().getPnfs().get(1).setInstanceName("new-pnf-instance-name");
+ validation.validate(info);
+ }
+
+ @Test
+ public void validateNullInstanceNameDifferentCustomizationIdPnfTest() throws IOException, ValidationException {
+ ValidationInformation info = setupValidationInformation(
+ "src/test/resources/Validation/UserParamsValidation/DuplicateInstanceNamesPnf.json");
+ info.getUserParams().getResources().getPnfs().get(0).setInstanceName(null);
+ validation.validate(info);
+ }
+
+ @Test
public void validateInstanceNameExceptionTest() throws IOException, ValidationException {
thrown.expect(ValidationException.class);
thrown.expectMessage("instanceName in requestInfo does not match instanceName in userParams service");
diff --git a/mso-api-handlers/mso-api-handler-infra/src/test/resources/Validation/UserParamsValidation/DuplicateInstanceNamesPnf.json b/mso-api-handlers/mso-api-handler-infra/src/test/resources/Validation/UserParamsValidation/DuplicateInstanceNamesPnf.json
new file mode 100644
index 0000000000..b5fb6a8d41
--- /dev/null
+++ b/mso-api-handlers/mso-api-handler-infra/src/test/resources/Validation/UserParamsValidation/DuplicateInstanceNamesPnf.json
@@ -0,0 +1,91 @@
+{
+ "requestDetails": {
+ "modelInfo": {
+ "modelInvariantId": "d6f8f4e8-7de9-47c1-aa5c-4b6868738f5c",
+ "modelType": "service",
+ "modelName": "service_pnf_2305",
+ "modelVersion": "2.0",
+ "modelVersionId": "e199ca4e-08f9-4f10-a15d-b94d50e52a6a",
+ "modelUuid": "e199ca4e-08f9-4f10-a15d-b94d50e52a6a",
+ "modelInvariantUuid": "d6f8f4e8-7de9-47c1-aa5c-4b6868738f5c"
+ },
+ "requestInfo": {
+ "productFamilyId": "5G",
+ "source": "VID",
+ "instanceName": "ORAN_SIM1_2106_1",
+ "suppressRollback": false,
+ "requestorId": "NBI"
+ },
+ "subscriberInfo": {
+ "globalSubscriberId": "5GCustomer"
+ },
+ "requestParameters": {
+ "subscriptionServiceType": "5G",
+ "userParams": [{
+ "service": {
+ "modelInfo": {
+ "modelVersionId": "e199ca4e-08f9-4f10-a15d-b94d50e52a6a",
+ "modelName": "service_pnf_2305",
+ "modelType": "service"
+ },
+ "instanceName": "ORAN_SIM1_2106_1",
+ "instanceParams": [],
+ "resources": {
+ "pnfs": [{
+ "modelInfo": {
+ "modelCustomizationName": "pnf_only_2305 0",
+ "modelCustomizationId": "88a3096a-af87-4853-99f6-7256a9ab6c3e",
+ "modelInvariantId": "d6f8f4e8-7de9-47c1-aa5c-4b6868738f5c",
+ "modelVersionId": "a6a9dc3d-204c-4dbb-862b-46214788b0e5",
+ "modelName": "service_pnf_2305",
+ "modelType": "pnf",
+ "modelVersion": "2.0"
+ },
+ "platform": {
+ "platformName": "test"
+ },
+ "lineOfBusiness": {
+ "lineOfBusinessName": "LOB-5GCustomer"
+ },
+ "productFamilyId": "5G",
+ "instanceParams": [],
+ "instanceName": "ORAN_SIM1_2106_pnf_01",
+ "processingPriority": 1
+ }, {
+ "modelInfo": {
+ "modelCustomizationName": "pnf_only_2305 0",
+ "modelCustomizationId": "different-model-info",
+ "modelInvariantId": "d6f8f4e8-7de9-47c1-aa5c-4b6868738f5c",
+ "modelVersionId": "a6a9dc3d-204c-4dbb-862b-46214788b0e5",
+ "modelName": "service_pnf_2305",
+ "modelType": "pnf",
+ "modelVersion": "2.0"
+ },
+ "platform": {
+ "platformName": "test"
+ },
+ "lineOfBusiness": {
+ "lineOfBusinessName": "LOB-5GCustomer"
+ },
+ "productFamilyId": "5G",
+ "instanceParams": [],
+ "instanceName": "ORAN_SIM1_2106_pnf_01",
+ "processingPriority": 2
+ }]
+ }
+ }
+ }, {
+ "Homing_Solution": "none"
+ }],
+ "aLaCarte": false,
+ "usePreload": false
+ },
+ "project": {
+ "projectName": "basicnw-project"
+ },
+ "owningEntity": {
+ "owningEntityId": "67f2e84c-734d-4e90-a1e4-d2ffa2e75849",
+ "owningEntityName": "OE-5GCustomer"
+ }
+ }
+} \ No newline at end of file
diff --git a/mso-api-handlers/mso-api-handler-infra/src/test/resources/Validation/UserParamsValidation/RelatedInstanceInstanceId.json b/mso-api-handlers/mso-api-handler-infra/src/test/resources/Validation/UserParamsValidation/RelatedInstanceInstanceId.json
new file mode 100644
index 0000000000..156eedf2b4
--- /dev/null
+++ b/mso-api-handlers/mso-api-handler-infra/src/test/resources/Validation/UserParamsValidation/RelatedInstanceInstanceId.json
@@ -0,0 +1,138 @@
+{
+ "requestDetails": {
+ "subscriberInfo": {
+ "globalSubscriberId": "ubuntu-customer"
+ },
+ "requestInfo": {
+ "suppressRollback": false,
+ "instanceName": "Onap-Unit-Test",
+ "productFamilyId": "a9a77d5a-123e-4ca2-9eb9-0b015d2ee0fb",
+ "requestorId": "portal",
+ "source": "postman"
+ },
+ "cloudConfiguration": {
+ "lcpCloudRegionId": "Onap215",
+ "tenantId": "e2710e84063b421fab08189818761d55",
+ "cloudOwner": "Onap"
+ },
+ "requestParameters": {
+ "subscriptionServiceType": "ubuntu",
+ "userParams": [
+ {
+ "Homing_Solution": "none"
+ },
+ {
+ "service": {
+ "instanceParams": [],
+ "resources": {
+ "vnfs": [
+ {
+ "modelInfo": {
+ "modelName": "UbuntuVF",
+ "modelVersionId": "3b6cb925-b583-4c5d-8200-62212258dd03",
+ "modelInvariantUuid": "dcbd2b4f-86a9-48f2-9149-9fbd506cb0f5",
+ "modelVersion": "1.0",
+ "modelCustomizationId": "1aa2ae52-f3c8-4c52-91eb-54a23104cff8",
+ "modelInstanceName": "UbuntuVF 0"
+ },
+ "cloudConfiguration": {
+ "lcpCloudRegionId": "lcp",
+ "tenantId": "e2710e84063b421fab08189818761d55",
+ "cloudOwner": "Onap"
+ },
+ "platform": {
+ "platformName": "openstack"
+ },
+ "lineOfBusiness": {
+ "lineOfBusinessName": "wireless"
+ },
+ "productFamilyId": "a9a77d5a-123e-4ca2-9eb9-0b015d2ee0fb",
+ "instanceName": "vnf-instanceName",
+ "instanceParams": [
+ {
+ "vnf-name": "vnf-vnf-name",
+ "vnf_name": "UbuntuVNFName"
+ }
+ ],
+ "vfModules": [
+ {
+ "modelInfo": {
+ "modelName": "UbuntuVF..base..module-0",
+ "modelVersionId": "2bb60c6b-2bfb-4162-b95b-74d81916aa25",
+ "modelInvariantUuid": "fb8af74c-83a6-4c27-b2db-b414bf70062a",
+ "modelVersion": "1",
+ "modelCustomizationId": "cd530d5b-b24b-4d2c-9987-5179075c9381"
+ },
+ "instanceName": "Openstack-fail-network-1",
+ "instanceParams": [
+ {
+ "name": "Openstack-fail-network-1",
+ "cidr": "10.10.10.0/24"
+ }
+ ]
+ },
+ {
+ "modelInfo": {
+ "modelName": "UbuntuVF..ubuntu-vf-module..module-1",
+ "modelVersionId": "73fb74e8-f7cc-4927-9cc2-bb5c7b36c109",
+ "modelInvariantUuid": "51d1c820-7578-4c5d-8fc7-fcf975800059",
+ "modelVersion": "1",
+ "modelCustomizationId": "67b4547c-b059-4a45-8b0b-12ce6bb3cf2f"
+ },
+ "instanceName": "Openstack-fail-ubuntu-1",
+ "instanceParams": [
+ {
+ "name": "Openstack-fail-ubuntu-1",
+ "network_mgmt": "vlan666_net",
+ "key_name": "mykey",
+ "network_name": "Openstack-fail-network-1"
+ }
+ ]
+ }
+ ]
+ }
+ ]
+ },
+ "modelInfo": {
+ "modelVersion": "1.0",
+ "modelVersionId": "b0dce97c-e320-4dea-bd4a-7e398b4f5199",
+ "modelInvariantId": "577d7107-53ab-4f3d-a5a4-f4e9295312d8",
+ "modelName": "UbuntuSVC",
+ "modelType": "service"
+ }
+ }
+ }
+ ],
+ "aLaCarte": false
+ },
+ "project": {
+ "projectName": "Project-UbuntuDemo"
+ },
+ "owningEntity": {
+ "owningEntityId": "33a8b609-1cfe-4d19-8dc2-5b95b921de1e",
+ "owningEntityName": "owner"
+ },
+ "modelInfo": {
+ "modelVersion": "1.0",
+ "modelVersionId": "b0dce97c-e320-4dea-bd4a-7e398b4f5199",
+ "modelInvariantId": "577d7107-53ab-4f3d-a5a4-f4e9295312d8",
+ "modelName": "UbuntuSVC",
+ "modelType": "service"
+ },
+ "relatedInstanceList": [
+ {
+ "relatedInstance": {
+ "instanceId": "351262fb-4a32-4c43-b600-c6514f6ff808",
+ "modelInfo": {
+ "modelVersion": "1.0",
+ "modelVersionId": "b0dce97c-e320-4dea-bd4a-7e398b4f5199",
+ "modelInvariantId": "577d7107-53ab-4f3d-a5a4-f4e9295312d8",
+ "modelName": "UbuntuSVC",
+ "modelType": "service"
+ },
+ "instanceDirection": "source"
+ }
+ }
+ ]
+ }
+} \ No newline at end of file
diff --git a/version.properties b/version.properties
index a9271e1c21..f6bcc5a3a1 100644
--- a/version.properties
+++ b/version.properties
@@ -3,7 +3,7 @@
# because they are used in Jenkins, whose plug-in doesn't support
major=1
-minor=10
+minor=11
patch=0
base_version=${major}.${minor}.${patch}