diff options
24 files changed, 752 insertions, 131 deletions
@@ -50,11 +50,6 @@ committers: company: 'Cloudify' id: 'dfilppi' timezone: '' - - name: 'Max Benjamin' - email: 'max.benjamin@att.com' - company: 'ATT' - id: 'mfour' - timezone: '' - name: 'Yan Yang' email: 'yangyanyj@chinamobile.com' company: 'China Mobile' @@ -65,11 +60,6 @@ committers: company: 'Intel' id: 'mgkwill' timezone: 'America/Los Angeles' - - name: 'Sanchita Pathak' - email: 'sanchita@techmahindra.com' - company: 'Tech Mahindra' - id: 'sanchitap' - timezone: 'Asia/Kolkata' - name: 'Steve Smokowski' email: 'ss835w@att.com' company: 'ATT' @@ -85,6 +75,11 @@ committers: company: 'Nokia' id: 'lukaszM' timezone: 'Europe/Warsaw' + - name: 'Max Benjamin' + email: 'max.benjamin@att.com' + company: 'ATT' + id: 'mfour' + timezone: '' tsc: approval: 'https://lists.onap.org/pipermail/onap-tsc' changes: 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 372fbab33d..a4bdd96f5c 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 @@ -7,27 +7,27 @@ DELETE FROM building_block_detail; DELETE FROM orchestration_status_state_transition_directive; -INSERT INTO northbound_request_ref_lookup(MACRO_ACTION, ACTION, REQUEST_SCOPE, IS_ALACARTE,IS_TOPLEVELFLOW, MIN_API_VERSION, MAX_API_VERSION, CLOUD_OWNER) VALUES -('Service-Create', 'createInstance', 'Service', true,true, '7','7', 'CloudOwner'), -('Service-Delete', 'deleteInstance', 'Service', true,true, '7','7', 'CloudOwner'), -('Service-Macro-Assign', 'assignInstance', 'Service', false,true, '7','7', 'CloudOwner'), -('Service-Macro-Activate', 'activateInstance', 'Service', false,true, '7','7', 'CloudOwner'), -('Service-Macro-Unassign', 'unassignInstance', 'Service', false,true, '7','7', 'CloudOwner'), -('Service-Macro-Create', 'createInstance', 'Service', false,true, '7','7', 'CloudOwner'), -('Service-Macro-Delete', 'deleteInstance', 'Service', false,true, '7','7', 'CloudOwner'), -('Network-Create', 'createInstance', 'Network', true,true, '7','7', 'CloudOwner'), -('Network-Delete', 'deleteInstance', 'Network', true,true, '7','7', 'CloudOwner'), -('VNF-Macro-Recreate', 'recreateInstance', 'Vnf', false,true, '7','7', 'CloudOwner'), -('VNF-Macro-Replace', 'replaceInstance', 'Vnf', false,true, '7','7', 'CloudOwner'), -('VNF-Create', 'createInstance', 'Vnf', true,true, '7', '7', 'CloudOwner'), -('VNF-Delete', 'deleteInstance', 'Vnf', true,true, '7', '7', 'CloudOwner'), -('VolumeGroup-Create', 'createInstance', 'VolumeGroup', true,true, '7','7', 'CloudOwner'), -('VolumeGroup-Delete', 'deleteInstance', 'VolumeGroup', true,true, '7','7', 'CloudOwner'), -('VFModule-Create', 'createInstance', 'VfModule', true,true, '7','7', 'CloudOwner'), -('VFModule-Delete', 'deleteInstance', 'VfModule', true,true, '7','7', 'CloudOwner'), -('NetworkCollection-Macro-Create', 'createInstance', 'NetworkCollection', false,true, '7','7', 'CloudOwner'), -('NetworkCollection-Macro-Delete', 'deleteInstance', 'NetworkCollection', false,true, '7','7', 'CloudOwner'), -('VFModule-ScaleOut', 'createInstance', 'VfModule', true, true, '7','7', 'CloudOwner'); +INSERT INTO northbound_request_ref_lookup(MACRO_ACTION, ACTION, REQUEST_SCOPE, IS_ALACARTE,IS_TOPLEVELFLOW, MIN_API_VERSION, MAX_API_VERSION, CLOUD_OWNER, SERVICE_TYPE) VALUES +('Service-Create', 'createInstance', 'Service', true,true, '7','7', 'CloudOwner', '*'), +('Service-Delete', 'deleteInstance', 'Service', true,true, '7','7', 'CloudOwner', '*'), +('Service-Macro-Assign', 'assignInstance', 'Service', false,true, '7','7', 'CloudOwner', '*'), +('Service-Macro-Activate', 'activateInstance', 'Service', false,true, '7','7', 'CloudOwner', '*'), +('Service-Macro-Unassign', 'unassignInstance', 'Service', false,true, '7','7', 'CloudOwner', '*'), +('Service-Macro-Create', 'createInstance', 'Service', false,true, '7','7', 'CloudOwner', '*'), +('Service-Macro-Delete', 'deleteInstance', 'Service', false,true, '7','7', 'CloudOwner', '*'), +('Network-Create', 'createInstance', 'Network', true,true, '7','7', 'CloudOwner', '*'), +('Network-Delete', 'deleteInstance', 'Network', true,true, '7','7', 'CloudOwner', '*'), +('VNF-Macro-Recreate', 'recreateInstance', 'Vnf', false,true, '7','7', 'CloudOwner', '*'), +('VNF-Macro-Replace', 'replaceInstance', 'Vnf', false,true, '7','7', 'CloudOwner', '*'), +('VNF-Create', 'createInstance', 'Vnf', true,true, '7', '7', 'CloudOwner', '*'), +('VNF-Delete', 'deleteInstance', 'Vnf', true,true, '7', '7', 'CloudOwner', '*'), +('VolumeGroup-Create', 'createInstance', 'VolumeGroup', true,true, '7','7', 'CloudOwner', '*'), +('VolumeGroup-Delete', 'deleteInstance', 'VolumeGroup', true,true, '7','7', 'CloudOwner', '*'), +('VFModule-Create', 'createInstance', 'VfModule', true,true, '7','7', 'CloudOwner', '*'), +('VFModule-Delete', 'deleteInstance', 'VfModule', true,true, '7','7', 'CloudOwner', '*'), +('NetworkCollection-Macro-Create', 'createInstance', 'NetworkCollection', false,true, '7','7', 'CloudOwner', '*'), +('NetworkCollection-Macro-Delete', 'deleteInstance', 'NetworkCollection', false,true, '7','7', 'CloudOwner', '*'), +('VFModule-ScaleOut', 'scaleOut', 'VfModule', true, true, '7','7', 'CloudOwner', '*'); INSERT INTO orchestration_flow_reference(COMPOSITE_ACTION, SEQ_NO, FLOW_NAME, FLOW_VERSION, NB_REQ_REF_LOOKUP_ID) VALUES @@ -234,8 +234,8 @@ VALUES ('DeleteNetworkBB', 'NETWORK', 'DELETE'), ('DeleteNetworkCollectionBB', 'NETWORK', 'DELETE'), -('ConfigurationScaleOutBB', 'VF_MODULE', 'CREATE'), -('GenericVnfHealthCheckBB', 'VF_MODULE', 'CREATE'); +('ConfigurationScaleOutBB', 'NO_VALIDATE', 'CUSTOM'), +('GenericVnfHealthCheckBB', 'NO_VALIDATE', 'CUSTOM'); INSERT INTO orchestration_status_state_transition_directive (resource_type, orchestration_status, target_action, flow_directive) VALUES @@ -619,15 +619,15 @@ VALUES ('NO_VALIDATE', 'PENDING_DELETE', 'CUSTOM', 'CONTINUE'), ('NO_VALIDATE', 'PRECREATED', 'CUSTOM', 'CONTINUE'); -INSERT INTO northbound_request_ref_lookup(MACRO_ACTION, ACTION, REQUEST_SCOPE, IS_ALACARTE, MIN_API_VERSION, MAX_API_VERSION, IS_TOPLEVELFLOW, CLOUD_OWNER) VALUES -('VFModule-DeactivateAndCloudDelete', 'deactivateAndCloudDelete', 'VfModule', true, '7','7', true, 'CloudOwner'); +INSERT INTO northbound_request_ref_lookup(MACRO_ACTION, ACTION, REQUEST_SCOPE, IS_ALACARTE, MIN_API_VERSION, MAX_API_VERSION, IS_TOPLEVELFLOW, CLOUD_OWNER, SERVICE_TYPE) VALUES +('VFModule-DeactivateAndCloudDelete', 'deactivateAndCloudDelete', 'VfModule', true, '7','7', true, 'CloudOwner', '*'); INSERT INTO orchestration_flow_reference(COMPOSITE_ACTION, SEQ_NO, FLOW_NAME, FLOW_VERSION, NB_REQ_REF_LOOKUP_ID) VALUES ('VFModule-DeactivateAndCloudDelete', '1', 'DeactivateVfModuleBB', 1.0,(SELECT id from northbound_request_ref_lookup WHERE MACRO_ACTION = 'VFModule-DeactivateAndCloudDelete' and CLOUD_OWNER = 'CloudOwner')), ('VFModule-DeactivateAndCloudDelete', '2', 'DeleteVfModuleBB', 1.0,(SELECT id from northbound_request_ref_lookup WHERE MACRO_ACTION = 'VFModule-DeactivateAndCloudDelete' and CLOUD_OWNER = 'CloudOwner')); -INSERT INTO northbound_request_ref_lookup (REQUEST_SCOPE, MACRO_ACTION, ACTION, IS_ALACARTE, MIN_API_VERSION, MAX_API_VERSION, IS_TOPLEVELFLOW, CLOUD_OWNER) -values ( 'Service', 'Service-Macro-Deactivate', 'deactivateInstance', '0', '7', '7', '1', 'CloudOwner'); +INSERT INTO northbound_request_ref_lookup (REQUEST_SCOPE, MACRO_ACTION, ACTION, IS_ALACARTE, MIN_API_VERSION, MAX_API_VERSION, IS_TOPLEVELFLOW, CLOUD_OWNER, SERVICE_TYPE) +values ( 'Service', 'Service-Macro-Deactivate', 'deactivateInstance', '0', '7', '7', '1', 'CloudOwner', '*'); INSERT INTO orchestration_flow_reference (COMPOSITE_ACTION, SEQ_NO, FLOW_NAME, FLOW_VERSION, NB_REQ_REF_LOOKUP_ID) values ( 'Service-Macro-Deactivate', '1', 'DeactivateServiceInstanceBB', '1', (SELECT id FROM northbound_request_ref_lookup WHERE MACRO_ACTION = 'Service-Macro-Deactivate' and CLOUD_OWNER = 'CloudOwner')); @@ -639,8 +639,8 @@ UPDATE northbound_request_ref_lookup SET MIN_API_VERSION = 5 WHERE MACRO_ACTION UPDATE northbound_request_ref_lookup SET MIN_API_VERSION = 5 WHERE MACRO_ACTION = 'Service-Macro-Deactivate'; -INSERT INTO northbound_request_ref_lookup(MACRO_ACTION, ACTION, REQUEST_SCOPE, IS_ALACARTE, MIN_API_VERSION, MAX_API_VERSION, IS_TOPLEVELFLOW, CLOUD_OWNER) VALUES -('Network-Update', 'updateInstance', 'Network', true, '7','7','1', 'CloudOwner'); +INSERT INTO northbound_request_ref_lookup(MACRO_ACTION, ACTION, REQUEST_SCOPE, IS_ALACARTE, MIN_API_VERSION, MAX_API_VERSION, IS_TOPLEVELFLOW, CLOUD_OWNER, SERVICE_TYPE) VALUES +('Network-Update', 'updateInstance', 'Network', true, '7','7','1', 'CloudOwner', '*'); INSERT INTO orchestration_flow_reference(COMPOSITE_ACTION, SEQ_NO, FLOW_NAME, FLOW_VERSION, NB_REQ_REF_LOOKUP_ID) VALUES ('Network-Update', '1', 'UpdateNetworkBB', 1.0,(SELECT id from northbound_request_ref_lookup WHERE MACRO_ACTION = 'Network-Update' and CLOUD_OWNER = 'CloudOwner')); @@ -805,4 +805,9 @@ VALUES ('VNFUpgradeSoftwareActivity', 'NO_VALIDATE', 'CUSTOM'), ('VnfInPlaceSoftwareUpdate', 'NO_VALIDATE', 'CUSTOM'); -UPDATE northbound_request_ref_lookup SET SERVICE_TYPE = '*' WHERE SERVICE_TYPE = NULL; +UPDATE northbound_request_ref_lookup SET SERVICE_TYPE = '*' WHERE SERVICE_TYPE IS NULL; + +INSERT INTO building_block_detail(BUILDING_BLOCK_NAME, RESOURCE_TYPE, TARGET_ACTION) +VALUES +('ConfigAssignVnfBB', 'NO_VALIDATE', 'CUSTOM'), +('ConfigDeployVnfBB', 'NO_VALIDATE', 'CUSTOM'); diff --git a/asdc-controller/src/main/java/org/onap/so/asdc/activity/ActivitySpecsActions.java b/asdc-controller/src/main/java/org/onap/so/asdc/activity/ActivitySpecsActions.java index c80e84b574..619d89438e 100644 --- a/asdc-controller/src/main/java/org/onap/so/asdc/activity/ActivitySpecsActions.java +++ b/asdc-controller/src/main/java/org/onap/so/asdc/activity/ActivitySpecsActions.java @@ -67,7 +67,9 @@ public class ActivitySpecsActions { Response response = httpClient.post(payload); int statusCode = response.getStatus(); - if (statusCode != HttpStatus.SC_OK) { + if (statusCode == HttpStatus.SC_UNPROCESSABLE_ENTITY) { + logger.warn("{} {} {}", "ActivitySpec", activitySpec.getName(), "already exists in SDC"); + } else if (statusCode != HttpStatus.SC_OK && statusCode != HttpStatus.SC_CREATED) { logger.warn("{} {} {}", "Error creating activity spec", activitySpec.getName(), statusCode); } else { if (response.getEntity() != null) { @@ -108,7 +110,9 @@ public class ActivitySpecsActions { int statusCode = response.getStatus(); - if (statusCode != HttpStatus.SC_OK) { + if (statusCode == HttpStatus.SC_UNPROCESSABLE_ENTITY) { + logger.warn("{} {} {}", "ActivitySpec with id", activitySpecId, "is already certified in SDC"); + } else if (statusCode != HttpStatus.SC_OK) { logger.warn("{} {} {}", "Error certifying activity", activitySpecId, statusCode); } else { certificationResult = true; diff --git a/asdc-controller/src/test/java/org/onap/asdc/activity/ActivitySpecsActionsTest.java b/asdc-controller/src/test/java/org/onap/asdc/activity/ActivitySpecsActionsTest.java index 438120924a..7de35b5c13 100644 --- a/asdc-controller/src/test/java/org/onap/asdc/activity/ActivitySpecsActionsTest.java +++ b/asdc-controller/src/test/java/org/onap/asdc/activity/ActivitySpecsActionsTest.java @@ -56,6 +56,44 @@ public class ActivitySpecsActionsTest extends BaseTest { } @Test + public void CreateActivitySpecReturnsCreated_Test() throws Exception { + String HOSTNAME = createURLWithPort(""); + + ActivitySpec activitySpec = new ActivitySpec(); + activitySpec.setName("testActivitySpec"); + activitySpec.setDescription("Test Activity Spec"); + ActivitySpecCreateResponse activitySpecCreateResponse = new ActivitySpecCreateResponse(); + activitySpecCreateResponse.setId("testActivityId"); + ObjectMapper mapper = new ObjectMapper(); + String body = mapper.writeValueAsString(activitySpecCreateResponse); + wireMockServer.stubFor(post(urlPathMatching("/v1.0/activity-spec")) + .willReturn(aResponse().withHeader("Content-Type", "application/json") + .withStatus(org.springframework.http.HttpStatus.CREATED.value()).withBody(body))); + + String activitySpecId = activitySpecsActions.createActivitySpec(HOSTNAME, activitySpec); + assertEquals("testActivityId", activitySpecId); + } + + @Test + public void CreateActivitySpecReturnsExists_Test() throws Exception { + String HOSTNAME = createURLWithPort(""); + + ActivitySpec activitySpec = new ActivitySpec(); + activitySpec.setName("testActivitySpec"); + activitySpec.setDescription("Test Activity Spec"); + ActivitySpecCreateResponse activitySpecCreateResponse = new ActivitySpecCreateResponse(); + activitySpecCreateResponse.setId("testActivityId"); + ObjectMapper mapper = new ObjectMapper(); + String body = mapper.writeValueAsString(activitySpecCreateResponse); + wireMockServer.stubFor(post(urlPathMatching("/v1.0/activity-spec")) + .willReturn(aResponse().withHeader("Content-Type", "application/json") + .withStatus(org.springframework.http.HttpStatus.UNPROCESSABLE_ENTITY.value()).withBody(body))); + + String activitySpecId = activitySpecsActions.createActivitySpec(HOSTNAME, activitySpec); + assertEquals(null, activitySpecId); + } + + @Test public void CertifyActivitySpec_Test() throws Exception { String HOSTNAME = createURLWithPort(""); @@ -70,6 +108,21 @@ public class ActivitySpecsActionsTest extends BaseTest { assertTrue(certificationResult); } + @Test + public void CertifyActivitySpecReturnsExists_Test() throws Exception { + String HOSTNAME = createURLWithPort(""); + + String activitySpecId = "testActivitySpec"; + String urlPath = "/v1.0/activity-spec/testActivitySpec/versions/latest/actions"; + + wireMockServer.stubFor( + put(urlPathMatching(urlPath)).willReturn(aResponse().withHeader("Content-Type", "application/json") + .withStatus(org.springframework.http.HttpStatus.UNPROCESSABLE_ENTITY.value()))); + + boolean certificationResult = activitySpecsActions.certifyActivitySpec(HOSTNAME, activitySpecId); + assertFalse(certificationResult); + } + private String createURLWithPort(String uri) { return "http://localhost:" + wireMockPort + uri; } diff --git a/bpmn/MSOCommonBPMN/src/main/java/org/onap/so/bpmn/servicedecomposition/modelinfo/ModelInfoGenericVnf.java b/bpmn/MSOCommonBPMN/src/main/java/org/onap/so/bpmn/servicedecomposition/modelinfo/ModelInfoGenericVnf.java index 14327a3583..a558057979 100644 --- a/bpmn/MSOCommonBPMN/src/main/java/org/onap/so/bpmn/servicedecomposition/modelinfo/ModelInfoGenericVnf.java +++ b/bpmn/MSOCommonBPMN/src/main/java/org/onap/so/bpmn/servicedecomposition/modelinfo/ModelInfoGenericVnf.java @@ -55,7 +55,26 @@ public class ModelInfoGenericVnf extends ModelInfoMetadata implements Serializab private String MultiStageDesign; @JsonProperty("created") private String Created; + @JsonProperty("blueprintName") + private String blueprintName; + @JsonProperty("blueprintVersion") + private String blueprintVersion; + public String getBlueprintName() { + return blueprintName; + } + + public void setBlueprintName(String blueprintName) { + this.blueprintName = blueprintName; + } + + public String getBlueprintVersion() { + return blueprintVersion; + } + + public void setBlueprintVersion(String blueprintVersion) { + this.blueprintVersion = blueprintVersion; + } public String getToscaNodeType() { return ToscaNodeType; diff --git a/bpmn/MSOCommonBPMN/src/test/resources/__files/ExecuteBuildingBlock/ModelInfoGenericVnfExpected.json b/bpmn/MSOCommonBPMN/src/test/resources/__files/ExecuteBuildingBlock/ModelInfoGenericVnfExpected.json index 98f966e753..9703b9c105 100644 --- a/bpmn/MSOCommonBPMN/src/test/resources/__files/ExecuteBuildingBlock/ModelInfoGenericVnfExpected.json +++ b/bpmn/MSOCommonBPMN/src/test/resources/__files/ExecuteBuildingBlock/ModelInfoGenericVnfExpected.json @@ -17,5 +17,7 @@ "model-version" : "modelVersion", "model-invariant-uuid" : "modelInvariantUUID", "model-name" : "modelName", - "model-uuid" : "modelUUID" + "model-uuid" : "modelUUID", + "blueprintName" : "testBlueprintName", + "blueprintVersion" : "testBlueprintVersion" }
\ No newline at end of file diff --git a/bpmn/MSOCommonBPMN/src/test/resources/__files/ExecuteBuildingBlock/VnfResourceCustomizationInput.json b/bpmn/MSOCommonBPMN/src/test/resources/__files/ExecuteBuildingBlock/VnfResourceCustomizationInput.json index 26516ce907..95b116cec8 100644 --- a/bpmn/MSOCommonBPMN/src/test/resources/__files/ExecuteBuildingBlock/VnfResourceCustomizationInput.json +++ b/bpmn/MSOCommonBPMN/src/test/resources/__files/ExecuteBuildingBlock/VnfResourceCustomizationInput.json @@ -9,6 +9,8 @@ "nfRole" : "nfRole", "nfNamingCode" : "nfNamingCode", "multiStageDesign" : "multiStageDesign", + "blueprintName" : "testBlueprintName", + "blueprintVersion" : "testBlueprintVersion", "vnfResources" : { "modelUUID" : "modelUUID", "modelInvariantUUID" : "modelInvariantUUID", diff --git a/bpmn/mso-infrastructure-bpmn/src/main/resources/application.yaml b/bpmn/mso-infrastructure-bpmn/src/main/resources/application.yaml index a91cb9d88d..e364981a66 100644 --- a/bpmn/mso-infrastructure-bpmn/src/main/resources/application.yaml +++ b/bpmn/mso-infrastructure-bpmn/src/main/resources/application.yaml @@ -4,7 +4,7 @@ server: max-threads: 50 mso: infra: - auditInventory: true + auditInventory: false spring: datasource: driver-class-name: org.mariadb.jdbc.Driver @@ -36,4 +36,4 @@ management: export: prometheus: enabled: true # Whether exporting of metrics to Prometheus is enabled. - step: 1m # Step size (i.e. reporting frequency) to use.
\ No newline at end of file + step: 1m # Step size (i.e. reporting frequency) to use. diff --git a/bpmn/so-bpmn-building-blocks/src/main/resources/subprocess/BuildingBlock/ConfigAssignVnfBB.bpmn b/bpmn/so-bpmn-building-blocks/src/main/resources/subprocess/BuildingBlock/ConfigAssignVnfBB.bpmn index 9892fbdd91..11d77bf97a 100644 --- a/bpmn/so-bpmn-building-blocks/src/main/resources/subprocess/BuildingBlock/ConfigAssignVnfBB.bpmn +++ b/bpmn/so-bpmn-building-blocks/src/main/resources/subprocess/BuildingBlock/ConfigAssignVnfBB.bpmn @@ -1,5 +1,5 @@ <?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:di="http://www.omg.org/spec/DD/20100524/DI" xmlns:dc="http://www.omg.org/spec/DD/20100524/DC" xmlns:camunda="http://camunda.org/schema/1.0/bpmn" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" id="Definitions_1ahlzqg" targetNamespace="http://bpmn.io/schema/bpmn" exporter="Camunda Modeler" exporterVersion="2.0.1"> +<bpmn:definitions xmlns:bpmn="http://www.omg.org/spec/BPMN/20100524/MODEL" xmlns:bpmndi="http://www.omg.org/spec/BPMN/20100524/DI" xmlns:di="http://www.omg.org/spec/DD/20100524/DI" xmlns:dc="http://www.omg.org/spec/DD/20100524/DC" xmlns:camunda="http://camunda.org/schema/1.0/bpmn" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" id="Definitions_1ahlzqg" targetNamespace="http://bpmn.io/schema/bpmn" exporter="Camunda Modeler" exporterVersion="1.9.0"> <bpmn:process id="ConfigAssignVnfBB" name="ConfigAssignVnfBB" isExecutable="true"> <bpmn:startEvent id="StartEvent_1"> <bpmn:outgoing>SequenceFlow_0gmfit3</bpmn:outgoing> @@ -23,7 +23,7 @@ <bpmn:outgoing>SequenceFlow_1mkhog2</bpmn:outgoing> </bpmn:serviceTask> <bpmn:sequenceFlow id="SequenceFlow_05qembo" sourceRef="Task_0bhf6tp" targetRef="CallActivity_1gfzi2g" /> - <bpmn:serviceTask id="Task_0bhf6tp" name="PreProcess Abstract CDS Processing" camunda:expression="${ConfigAssignVnf.PreProcessAbstractCDSProcessing(InjectExecution.execute(execution, execution.getVariable("gBuildingBlockExecution")))}"> + <bpmn:serviceTask id="Task_0bhf6tp" name="PreProcess Abstract CDS Processing" camunda:expression="${ConfigAssignVnf.preProcessAbstractCDSProcessing(InjectExecution.execute(execution, execution.getVariable("gBuildingBlockExecution")))}"> <bpmn:incoming>SequenceFlow_0gmfit3</bpmn:incoming> <bpmn:outgoing>SequenceFlow_05qembo</bpmn:outgoing> </bpmn:serviceTask> @@ -34,7 +34,7 @@ </bpmn:exclusiveGateway> <bpmn:sequenceFlow id="SequenceFlow_0cvsnuu" sourceRef="CallActivity_1gfzi2g" targetRef="ExclusiveGateway_13q340y" /> <bpmn:sequenceFlow id="SequenceFlow_07tqu82" name="success" sourceRef="ExclusiveGateway_13q340y" targetRef="Task_1hs1mn0"> - <bpmn:conditionExpression xsi:type="bpmn:tFormalExpression">#{execution.getVariable("CDSStatus").equals("Success")}</bpmn:conditionExpression> + <bpmn:conditionExpression xsi:type="bpmn:tFormalExpression"><![CDATA[#{execution.getVariable("CDSStatus").equals("Success")}]]></bpmn:conditionExpression> </bpmn:sequenceFlow> <bpmn:endEvent id="EndEvent_0mnaj50"> <bpmn:incoming>SequenceFlow_15gxql1</bpmn:incoming> @@ -49,15 +49,15 @@ <dc:Bounds x="507" y="187" width="36" height="36" /> </bpmndi:BPMNShape> <bpmndi:BPMNEdge id="SequenceFlow_0gmfit3_di" bpmnElement="SequenceFlow_0gmfit3"> - <di:waypoint x="543" y="205" /> - <di:waypoint x="614" y="205" /> + <di:waypoint xsi:type="dc:Point" x="543" y="205" /> + <di:waypoint xsi:type="dc:Point" x="614" y="205" /> </bpmndi:BPMNEdge> <bpmndi:BPMNShape id="EndEvent_0lgvk82_di" bpmnElement="EndEvent_0lgvk82"> <dc:Bounds x="1307" y="187" width="36" height="36" /> </bpmndi:BPMNShape> <bpmndi:BPMNEdge id="SequenceFlow_1mkhog2_di" bpmnElement="SequenceFlow_1mkhog2"> - <di:waypoint x="1218" y="205" /> - <di:waypoint x="1307" y="205" /> + <di:waypoint xsi:type="dc:Point" x="1218" y="205" /> + <di:waypoint xsi:type="dc:Point" x="1307" y="205" /> </bpmndi:BPMNEdge> <bpmndi:BPMNShape id="CallActivity_1gfzi2g_di" bpmnElement="CallActivity_1gfzi2g"> <dc:Bounds x="788" y="165" width="100" height="80" /> @@ -66,8 +66,8 @@ <dc:Bounds x="1118" y="165" width="100" height="80" /> </bpmndi:BPMNShape> <bpmndi:BPMNEdge id="SequenceFlow_05qembo_di" bpmnElement="SequenceFlow_05qembo"> - <di:waypoint x="714" y="205" /> - <di:waypoint x="788" y="205" /> + <di:waypoint xsi:type="dc:Point" x="714" y="205" /> + <di:waypoint xsi:type="dc:Point" x="788" y="205" /> </bpmndi:BPMNEdge> <bpmndi:BPMNShape id="ServiceTask_01mv1si_di" bpmnElement="Task_0bhf6tp"> <dc:Bounds x="614" y="165" width="100" height="80" /> @@ -76,12 +76,12 @@ <dc:Bounds x="978" y="180" width="50" height="50" /> </bpmndi:BPMNShape> <bpmndi:BPMNEdge id="SequenceFlow_0cvsnuu_di" bpmnElement="SequenceFlow_0cvsnuu"> - <di:waypoint x="888" y="205" /> - <di:waypoint x="978" y="205" /> + <di:waypoint xsi:type="dc:Point" x="888" y="205" /> + <di:waypoint xsi:type="dc:Point" x="978" y="205" /> </bpmndi:BPMNEdge> <bpmndi:BPMNEdge id="SequenceFlow_07tqu82_di" bpmnElement="SequenceFlow_07tqu82"> - <di:waypoint x="1028" y="205" /> - <di:waypoint x="1118" y="205" /> + <di:waypoint xsi:type="dc:Point" x="1028" y="205" /> + <di:waypoint xsi:type="dc:Point" x="1118" y="205" /> <bpmndi:BPMNLabel> <dc:Bounds x="1053" y="187" width="41" height="14" /> </bpmndi:BPMNLabel> @@ -90,8 +90,8 @@ <dc:Bounds x="985" y="327" width="36" height="36" /> </bpmndi:BPMNShape> <bpmndi:BPMNEdge id="SequenceFlow_15gxql1_di" bpmnElement="SequenceFlow_15gxql1"> - <di:waypoint x="1003" y="230" /> - <di:waypoint x="1003" y="327" /> + <di:waypoint xsi:type="dc:Point" x="1003" y="230" /> + <di:waypoint xsi:type="dc:Point" x="1003" y="327" /> </bpmndi:BPMNEdge> </bpmndi:BPMNPlane> </bpmndi:BPMNDiagram> diff --git a/bpmn/so-bpmn-building-blocks/src/main/resources/subprocess/BuildingBlock/MonitorVnfmCreateNodeStatus.bpmn b/bpmn/so-bpmn-building-blocks/src/main/resources/subprocess/BuildingBlock/MonitorVnfmCreateNodeStatus.bpmn index e7d40e84b5..9712ca8ab7 100644 --- a/bpmn/so-bpmn-building-blocks/src/main/resources/subprocess/BuildingBlock/MonitorVnfmCreateNodeStatus.bpmn +++ b/bpmn/so-bpmn-building-blocks/src/main/resources/subprocess/BuildingBlock/MonitorVnfmCreateNodeStatus.bpmn @@ -24,7 +24,7 @@ <bpmn:endEvent id="EndEvent_0tei3i9"> <bpmn:incoming>SequenceFlow_1rxbeqi</bpmn:incoming> </bpmn:endEvent> - <bpmn:serviceTask id="ServiceTask_0y71su8" name=" Get node status " camunda:asyncAfter="true" camunda:expression="${MonitorVnfmNodeTask.getNodeStatus(InjectExecution.execute(execution, execution.getVariable("gBuildingBlockExecution")))}"> + <bpmn:serviceTask id="ServiceTask_0y71su8" name=" Get node status " camunda:asyncAfter="true" camunda:expression="${MonitorInstantiateVnfmNodeTask.getNodeStatus(InjectExecution.execute(execution, execution.getVariable("gBuildingBlockExecution")))}"> <bpmn:incoming>SequenceFlow_1moaz0q</bpmn:incoming> <bpmn:incoming>SequenceFlow_09t51ao</bpmn:incoming> <bpmn:outgoing>SequenceFlow_0qvy3sn</bpmn:outgoing> diff --git a/bpmn/so-bpmn-building-blocks/src/main/resources/subprocess/BuildingBlock/MonitorVnfmDeleteNodeStatus.bpmn b/bpmn/so-bpmn-building-blocks/src/main/resources/subprocess/BuildingBlock/MonitorVnfmDeleteNodeStatus.bpmn index 8fababaffe..668cfaa44a 100644 --- a/bpmn/so-bpmn-building-blocks/src/main/resources/subprocess/BuildingBlock/MonitorVnfmDeleteNodeStatus.bpmn +++ b/bpmn/so-bpmn-building-blocks/src/main/resources/subprocess/BuildingBlock/MonitorVnfmDeleteNodeStatus.bpmn @@ -1,5 +1,5 @@ <?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:di="http://www.omg.org/spec/DD/20100524/DI" xmlns:dc="http://www.omg.org/spec/DD/20100524/DC" xmlns:camunda="http://camunda.org/schema/1.0/bpmn" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" id="Definitions_15jp7td" targetNamespace="http://bpmn.io/schema/bpmn" exporter="Camunda Modeler" exporterVersion="2.2.4"> +<bpmn:definitions xmlns:bpmn="http://www.omg.org/spec/BPMN/20100524/MODEL" xmlns:bpmndi="http://www.omg.org/spec/BPMN/20100524/DI" xmlns:di="http://www.omg.org/spec/DD/20100524/DI" xmlns:dc="http://www.omg.org/spec/DD/20100524/DC" xmlns:camunda="http://camunda.org/schema/1.0/bpmn" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" id="Definitions_15jp7td" targetNamespace="http://bpmn.io/schema/bpmn" exporter="Camunda Modeler" exporterVersion="2.0.3"> <bpmn:process id="MonitorVnfmDeleteNodeStatus" name="MonitorVnfmDeleteNodeStatus" isExecutable="true"> <bpmn:startEvent id="StartEvent_0f7nbs2"> <bpmn:outgoing>SequenceFlow_0spr34x</bpmn:outgoing> @@ -28,7 +28,7 @@ <bpmn:conditionExpression xsi:type="bpmn:tFormalExpression">${execution.getVariable("deleteVnfNodeStatus")}</bpmn:conditionExpression> </bpmn:sequenceFlow> <bpmn:sequenceFlow id="SequenceFlow_0zlblru" sourceRef="ExclusiveGateway_1j9jbtk" targetRef="IntermediateCatchEvent_15yl23y" /> - <bpmn:serviceTask id="ServiceTask_1ksqjjf" name=" Get node status " camunda:asyncAfter="true" camunda:expression="${MonitorVnfmNodeTask.getNodeStatus(InjectExecution.execute(execution, execution.getVariable("gBuildingBlockExecution")))}"> + <bpmn:serviceTask id="ServiceTask_1ksqjjf" name=" Get node status " camunda:asyncAfter="true" camunda:expression="${MonitorTerminateVnfmNodeTask.getNodeStatus(InjectExecution.execute(execution, execution.getVariable("gBuildingBlockExecution")))}"> <bpmn:incoming>SequenceFlow_17vvpzi</bpmn:incoming> <bpmn:incoming>SequenceFlow_11rfobu</bpmn:incoming> <bpmn:outgoing>SequenceFlow_1unicf9</bpmn:outgoing> diff --git a/bpmn/so-bpmn-tasks/src/main/java/org/onap/so/bpmn/infrastructure/adapter/vnfm/tasks/MonitorInstantiateVnfmNodeTask.java b/bpmn/so-bpmn-tasks/src/main/java/org/onap/so/bpmn/infrastructure/adapter/vnfm/tasks/MonitorInstantiateVnfmNodeTask.java new file mode 100644 index 0000000000..b885cc2ee5 --- /dev/null +++ b/bpmn/so-bpmn-tasks/src/main/java/org/onap/so/bpmn/infrastructure/adapter/vnfm/tasks/MonitorInstantiateVnfmNodeTask.java @@ -0,0 +1,53 @@ +/*- + * ============LICENSE_START======================================================= + * Copyright (C) 2019 Ericsson. 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. + * + * SPDX-License-Identifier: Apache-2.0 + * ============LICENSE_END========================================================= + */ +package org.onap.so.bpmn.infrastructure.adapter.vnfm.tasks; + +import static org.onap.so.bpmn.infrastructure.adapter.vnfm.tasks.Constants.CREATE_VNF_NODE_STATUS; +import static org.onap.so.bpmn.infrastructure.adapter.vnfm.tasks.Constants.VNF_CREATED; +import org.onap.so.bpmn.servicedecomposition.tasks.ExtractPojosForBB; +import org.onap.so.client.exception.ExceptionBuilder; +import org.onap.so.client.orchestration.AAIVnfResources; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Component; + +/** + * @author waqas.ikram@est.tech + * + */ +@Component +public class MonitorInstantiateVnfmNodeTask extends MonitorVnfmNodeTask { + + @Autowired + public MonitorInstantiateVnfmNodeTask(final ExtractPojosForBB extractPojosForBB, + final ExceptionBuilder exceptionUtil, final AAIVnfResources aaiVnfResources) { + super(extractPojosForBB, exceptionUtil, aaiVnfResources); + } + + @Override + public String getNodeStatusVariableName() { + return CREATE_VNF_NODE_STATUS; + } + + @Override + public boolean isOrchestrationStatusValid(final String orchestrationStatus) { + return VNF_CREATED.equalsIgnoreCase(orchestrationStatus); + } + +} diff --git a/bpmn/so-bpmn-tasks/src/main/java/org/onap/so/bpmn/infrastructure/adapter/vnfm/tasks/MonitorTerminateVnfmNodeTask.java b/bpmn/so-bpmn-tasks/src/main/java/org/onap/so/bpmn/infrastructure/adapter/vnfm/tasks/MonitorTerminateVnfmNodeTask.java new file mode 100644 index 0000000000..34296c20d6 --- /dev/null +++ b/bpmn/so-bpmn-tasks/src/main/java/org/onap/so/bpmn/infrastructure/adapter/vnfm/tasks/MonitorTerminateVnfmNodeTask.java @@ -0,0 +1,53 @@ +/*- + * ============LICENSE_START======================================================= + * Copyright (C) 2019 Ericsson. 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. + * + * SPDX-License-Identifier: Apache-2.0 + * ============LICENSE_END========================================================= + */ +package org.onap.so.bpmn.infrastructure.adapter.vnfm.tasks; + +import static org.onap.so.bpmn.infrastructure.adapter.vnfm.tasks.Constants.DELETE_VNF_NODE_STATUS; +import static org.onap.so.bpmn.infrastructure.adapter.vnfm.tasks.Constants.VNF_ASSIGNED; +import org.onap.so.bpmn.servicedecomposition.tasks.ExtractPojosForBB; +import org.onap.so.client.exception.ExceptionBuilder; +import org.onap.so.client.orchestration.AAIVnfResources; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Component; + +/** + * @author waqas.ikram@est.tech + * + */ +@Component +public class MonitorTerminateVnfmNodeTask extends MonitorVnfmNodeTask { + + @Autowired + public MonitorTerminateVnfmNodeTask(final ExtractPojosForBB extractPojosForBB, final ExceptionBuilder exceptionUtil, + final AAIVnfResources aaiVnfResources) { + super(extractPojosForBB, exceptionUtil, aaiVnfResources); + } + + @Override + public String getNodeStatusVariableName() { + return DELETE_VNF_NODE_STATUS; + } + + @Override + public boolean isOrchestrationStatusValid(final String orchestrationStatus) { + return VNF_ASSIGNED.equalsIgnoreCase(orchestrationStatus); + } + +} diff --git a/bpmn/so-bpmn-tasks/src/main/java/org/onap/so/bpmn/infrastructure/adapter/vnfm/tasks/MonitorVnfmNodeTask.java b/bpmn/so-bpmn-tasks/src/main/java/org/onap/so/bpmn/infrastructure/adapter/vnfm/tasks/MonitorVnfmNodeTask.java index 65b05e21f5..a7a4eadb33 100644 --- a/bpmn/so-bpmn-tasks/src/main/java/org/onap/so/bpmn/infrastructure/adapter/vnfm/tasks/MonitorVnfmNodeTask.java +++ b/bpmn/so-bpmn-tasks/src/main/java/org/onap/so/bpmn/infrastructure/adapter/vnfm/tasks/MonitorVnfmNodeTask.java @@ -19,38 +19,39 @@ */ package org.onap.so.bpmn.infrastructure.adapter.vnfm.tasks; -import static org.onap.so.bpmn.infrastructure.adapter.vnfm.tasks.Constants.CREATE_VNF_NODE_STATUS; -import static org.onap.so.bpmn.infrastructure.adapter.vnfm.tasks.Constants.DELETE_VNF_NODE_STATUS; -import static org.onap.so.bpmn.infrastructure.adapter.vnfm.tasks.Constants.VNF_ASSIGNED; -import static org.onap.so.bpmn.infrastructure.adapter.vnfm.tasks.Constants.VNF_CREATED; import static org.onap.so.bpmn.servicedecomposition.entities.ResourceKey.GENERIC_VNF_ID; +import java.util.Optional; import org.onap.aai.domain.yang.GenericVnf; import org.onap.so.bpmn.common.BuildingBlockExecution; +import org.onap.so.bpmn.infrastructure.adapter.vnfm.tasks.exception.GenericVnfNotFoundException; import org.onap.so.bpmn.servicedecomposition.tasks.ExtractPojosForBB; import org.onap.so.client.exception.ExceptionBuilder; +import org.onap.so.client.orchestration.AAIVnfResources; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.stereotype.Component; /** * * @author Lathishbabu Ganesan (lathishbabu.ganesan@est.tech) + * @author Waqas Ikram (waqas.ikram@est.tech) * */ -@Component -public class MonitorVnfmNodeTask { +public abstract class MonitorVnfmNodeTask { private static final Logger LOGGER = LoggerFactory.getLogger(MonitorVnfmNodeTask.class); private final ExtractPojosForBB extractPojosForBB; private final ExceptionBuilder exceptionUtil; + private final AAIVnfResources aaiVnfResources; @Autowired - public MonitorVnfmNodeTask(final ExtractPojosForBB extractPojosForBB, final ExceptionBuilder exceptionUtil) { + public MonitorVnfmNodeTask(final ExtractPojosForBB extractPojosForBB, final ExceptionBuilder exceptionUtil, + final AAIVnfResources aaiVnfResources) { this.exceptionUtil = exceptionUtil; this.extractPojosForBB = extractPojosForBB; + this.aaiVnfResources = aaiVnfResources; } /** @@ -61,11 +62,23 @@ public class MonitorVnfmNodeTask { public void getNodeStatus(final BuildingBlockExecution execution) { try { LOGGER.debug("Executing getNodeStatus ..."); - final GenericVnf vnf = extractPojosForBB.extractByKey(execution, GENERIC_VNF_ID); - String orchestrationStatus = vnf.getOrchestrationStatus(); - LOGGER.debug("Orchestration Status in AAI {}", orchestrationStatus); - execution.setVariable(CREATE_VNF_NODE_STATUS, VNF_CREATED.equalsIgnoreCase(orchestrationStatus)); - execution.setVariable(DELETE_VNF_NODE_STATUS, VNF_ASSIGNED.equalsIgnoreCase(orchestrationStatus)); + + final org.onap.so.bpmn.servicedecomposition.bbobjects.GenericVnf vnf = + extractPojosForBB.extractByKey(execution, GENERIC_VNF_ID); + + final String vnfId = vnf.getVnfId(); + LOGGER.debug("Query A&AI for generic VNF using vnfID: {}", vnfId); + final Optional<GenericVnf> aaiGenericVnfOptional = aaiVnfResources.getGenericVnf(vnfId); + + if (!aaiGenericVnfOptional.isPresent()) { + throw new GenericVnfNotFoundException("Unable to find generic vnf in A&AI using vnfID: " + vnfId); + } + final GenericVnf genericVnf = aaiGenericVnfOptional.get(); + final String orchestrationStatus = genericVnf.getOrchestrationStatus(); + LOGGER.debug("Found generic vnf with orchestration status : {}", orchestrationStatus); + + execution.setVariable(getNodeStatusVariableName(), isOrchestrationStatusValid(orchestrationStatus)); + } catch (final Exception exception) { LOGGER.error("Unable to get vnf from AAI", exception); exceptionUtil.buildAndThrowWorkflowException(execution, 1220, exception); @@ -73,6 +86,20 @@ public class MonitorVnfmNodeTask { } /** + * Get variable to store in execution context + * + * @return the variable name + */ + public abstract String getNodeStatusVariableName(); + + /** + * @param orchestrationStatus the orchestration status from A&AI + * @return true if valid + */ + public abstract boolean isOrchestrationStatusValid(final String orchestrationStatus); + + + /** * Log and throw exception on timeout for job status * * @param execution {@link org.onap.so.bpmn.common.DelegateExecutionImpl} diff --git a/bpmn/so-bpmn-tasks/src/main/java/org/onap/so/bpmn/infrastructure/adapter/vnfm/tasks/exception/GenericVnfNotFoundException.java b/bpmn/so-bpmn-tasks/src/main/java/org/onap/so/bpmn/infrastructure/adapter/vnfm/tasks/exception/GenericVnfNotFoundException.java new file mode 100644 index 0000000000..d33d0bc895 --- /dev/null +++ b/bpmn/so-bpmn-tasks/src/main/java/org/onap/so/bpmn/infrastructure/adapter/vnfm/tasks/exception/GenericVnfNotFoundException.java @@ -0,0 +1,33 @@ +/*- + * ============LICENSE_START======================================================= + * Copyright (C) 2019 Ericsson. 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. + * + * SPDX-License-Identifier: Apache-2.0 + * ============LICENSE_END========================================================= + */ +package org.onap.so.bpmn.infrastructure.adapter.vnfm.tasks.exception; + +/** + * @author waqas.ikram@est.tech + * + */ +public class GenericVnfNotFoundException extends Exception { + private static final long serialVersionUID = -2049370314818025597L; + + public GenericVnfNotFoundException(final String message) { + super(message); + } + +} diff --git a/bpmn/so-bpmn-tasks/src/main/java/org/onap/so/bpmn/infrastructure/flowspecific/tasks/ConfigAssignVnf.java b/bpmn/so-bpmn-tasks/src/main/java/org/onap/so/bpmn/infrastructure/flowspecific/tasks/ConfigAssignVnf.java index 8a24330093..bc71fc6f67 100644 --- a/bpmn/so-bpmn-tasks/src/main/java/org/onap/so/bpmn/infrastructure/flowspecific/tasks/ConfigAssignVnf.java +++ b/bpmn/so-bpmn-tasks/src/main/java/org/onap/so/bpmn/infrastructure/flowspecific/tasks/ConfigAssignVnf.java @@ -20,6 +20,7 @@ package org.onap.so.bpmn.infrastructure.flowspecific.tasks; +import java.util.List; import java.util.Map; import java.util.UUID; import org.onap.so.bpmn.common.BuildingBlockExecution; @@ -68,7 +69,8 @@ public class ConfigAssignVnf { ServiceInstance serviceInstance = extractPojosForBB.extractByKey(execution, ResourceKey.SERVICE_INSTANCE_ID); - Map<String, Object> userParams = execution.getGeneralBuildingBlock().getRequestContext().getUserParams(); + List<Map<String, Object>> userParams = + execution.getGeneralBuildingBlock().getRequestContext().getRequestParameters().getUserParams(); ConfigAssignPropertiesForVnf configAssignPropertiesForVnf = new ConfigAssignPropertiesForVnf(); configAssignPropertiesForVnf.setServiceInstanceId(serviceInstance.getServiceInstanceId()); @@ -79,16 +81,19 @@ public class ConfigAssignVnf { configAssignPropertiesForVnf.setVnfId(vnf.getVnfId()); configAssignPropertiesForVnf.setVnfName(vnf.getVnfName()); - for (Map.Entry<String, Object> entry : userParams.entrySet()) { - configAssignPropertiesForVnf.setUserParam(entry.getKey(), entry.getValue()); + for (Map<String, Object> params : userParams) { + for (Map.Entry<String, Object> entry : params.entrySet()) { + configAssignPropertiesForVnf.setUserParam(entry.getKey(), entry.getValue()); + } } ConfigAssignRequestVnf configAssignRequestVnf = new ConfigAssignRequestVnf(); configAssignRequestVnf.setResolutionKey(vnf.getVnfName()); configAssignRequestVnf.setConfigAssignPropertiesForVnf(configAssignPropertiesForVnf); - String blueprintName = vnf.getBlueprintName(); - String blueprintVersion = vnf.getBlueprintVersion(); + String blueprintName = vnf.getModelInfoGenericVnf().getBlueprintName(); + String blueprintVersion = vnf.getModelInfoGenericVnf().getBlueprintVersion(); + logger.debug(" BlueprintName : " + blueprintName + " BlueprintVersion : " + blueprintVersion); AbstractCDSPropertiesBean abstractCDSPropertiesBean = new AbstractCDSPropertiesBean(); diff --git a/bpmn/so-bpmn-tasks/src/main/java/org/onap/so/bpmn/infrastructure/flowspecific/tasks/ConfigDeployVnf.java b/bpmn/so-bpmn-tasks/src/main/java/org/onap/so/bpmn/infrastructure/flowspecific/tasks/ConfigDeployVnf.java index 359f19285f..6e7ca5f4e5 100644 --- a/bpmn/so-bpmn-tasks/src/main/java/org/onap/so/bpmn/infrastructure/flowspecific/tasks/ConfigDeployVnf.java +++ b/bpmn/so-bpmn-tasks/src/main/java/org/onap/so/bpmn/infrastructure/flowspecific/tasks/ConfigDeployVnf.java @@ -92,8 +92,10 @@ public class ConfigDeployVnf { configDeployRequestVnf.setResolutionKey(vnf.getVnfName()); configDeployRequestVnf.setConfigDeployPropertiesForVnf(configDeployPropertiesForVnf); - String blueprintName = vnf.getBlueprintName(); - String blueprintVersion = vnf.getBlueprintVersion(); + String blueprintName = vnf.getModelInfoGenericVnf().getBlueprintName(); + String blueprintVersion = vnf.getModelInfoGenericVnf().getBlueprintVersion(); + logger.debug(" BlueprintName : " + blueprintName + " BlueprintVersion : " + blueprintVersion); + AbstractCDSPropertiesBean abstractCDSPropertiesBean = new AbstractCDSPropertiesBean(); abstractCDSPropertiesBean.setBlueprintName(blueprintName); 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 2fc301f9d7..70726f2014 100644 --- 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 @@ -415,7 +415,7 @@ public class WorkflowAction { protected boolean isConfiguration(List<OrchestrationFlow> orchFlows) { for (OrchestrationFlow flow : orchFlows) { - if (flow.getFlowName().contains("Configuration")) { + if (flow.getFlowName().contains("Configuration") && !flow.getFlowName().equals("ConfigurationScaleOutBB")) { return true; } } 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 f0a102dfeb..8ec283032f 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 @@ -87,11 +87,10 @@ public class WorkflowActionBBTasks { if (ebb.getBuildingBlock().getBpmnFlowName().equals("ConfigAssignVnfBB") || ebb.getBuildingBlock().getBpmnFlowName().equals("ConfigDeployVnfBB")) { - String serviceInstanceId = ebb.getWorkflowResourceIds().getServiceInstanceId(); String vnfCustomizationUUID = ebb.getBuildingBlock().getKey(); - List<VnfResourceCustomization> vnfResourceCustomizations = - catalogDbClient.getVnfResourceCustomizationByModelUuid(serviceInstanceId); + List<VnfResourceCustomization> vnfResourceCustomizations = catalogDbClient + .getVnfResourceCustomizationByModelUuid(ebb.getRequestDetails().getModelInfo().getModelUuid()); if (vnfResourceCustomizations != null && vnfResourceCustomizations.size() >= 1) { VnfResourceCustomization vrc = catalogDbClient.findVnfResourceCustomizationInList(vnfCustomizationUUID, vnfResourceCustomizations); diff --git a/bpmn/so-bpmn-tasks/src/test/java/org/onap/so/bpmn/infrastructure/adapter/vnfm/tasks/MonitorInstantiateVnfmNodeTaskTest.java b/bpmn/so-bpmn-tasks/src/test/java/org/onap/so/bpmn/infrastructure/adapter/vnfm/tasks/MonitorInstantiateVnfmNodeTaskTest.java new file mode 100644 index 0000000000..effcf24a8d --- /dev/null +++ b/bpmn/so-bpmn-tasks/src/test/java/org/onap/so/bpmn/infrastructure/adapter/vnfm/tasks/MonitorInstantiateVnfmNodeTaskTest.java @@ -0,0 +1,129 @@ +/*- + * ============LICENSE_START======================================================= + * Copyright (C) 2019 Nordix Foundation. + * ================================================================================ + * 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. + * + * SPDX-License-Identifier: Apache-2.0 + * ============LICENSE_END========================================================= + */ + +package org.onap.so.bpmn.infrastructure.adapter.vnfm.tasks; + +import static org.junit.Assert.assertNull; +import static org.junit.Assert.assertTrue; +import static org.mockito.ArgumentMatchers.any; +import static org.mockito.ArgumentMatchers.eq; +import static org.mockito.Mockito.verify; +import static org.mockito.Mockito.when; +import static org.onap.so.bpmn.infrastructure.adapter.vnfm.tasks.Constants.CREATE_VNF_NODE_STATUS; +import static org.onap.so.bpmn.infrastructure.adapter.vnfm.tasks.Constants.VNF_CREATED; +import java.util.Optional; +import java.util.UUID; +import org.junit.Before; +import org.junit.Test; +import org.mockito.Mock; +import org.onap.aai.domain.yang.GenericVnf; +import org.onap.so.bpmn.BaseTaskTest; +import org.onap.so.bpmn.common.BuildingBlockExecution; +import org.onap.so.bpmn.servicedecomposition.entities.ResourceKey; +import org.onap.so.client.orchestration.AAIVnfResources; + +/** + * + * @author Lathishbabu Ganesan (lathishbabu.ganesan@est.tech) + * @author Waqas Ikram (waqas.ikram@est.tech) + * + */ +public class MonitorInstantiateVnfmNodeTaskTest extends BaseTaskTest { + + private static final String VNF_ID = UUID.randomUUID().toString(); + + private static final String VNF_NAME = "VNF_NAME"; + + private MonitorVnfmNodeTask objUnderTest; + + @Mock + private VnfmAdapterServiceProvider mockedVnfmAdapterServiceProvider; + + @Mock + private AAIVnfResources mockedAaiVnfResources; + + private final BuildingBlockExecution stubbedxecution = new StubbedBuildingBlockExecution(); + + @Before + public void setUp() { + objUnderTest = getEtsiVnfMonitorNodeJobTask(); + } + + @Test + public void testGetNodeStatus_genericVnfWithOrchStatusCreated_executionVariableSetToCreate() throws Exception { + final org.onap.so.bpmn.servicedecomposition.bbobjects.GenericVnf vnf = getGenericVnf(); + final GenericVnf aaiGenericVnf = getAAIGenericVnf(); + aaiGenericVnf.setOrchestrationStatus(VNF_CREATED); + + when(extractPojosForBB.extractByKey(any(), eq(ResourceKey.GENERIC_VNF_ID))).thenReturn(vnf); + when(mockedAaiVnfResources.getGenericVnf(eq(VNF_ID))).thenReturn(Optional.of(aaiGenericVnf)); + objUnderTest.getNodeStatus(stubbedxecution); + assertTrue(stubbedxecution.getVariable(CREATE_VNF_NODE_STATUS)); + } + + @Test + public void testGetNodeStatus_noGenericVnfFoundInAAI_throwException() throws Exception { + final org.onap.so.bpmn.servicedecomposition.bbobjects.GenericVnf vnf = getGenericVnf(); + + when(extractPojosForBB.extractByKey(any(), eq(ResourceKey.GENERIC_VNF_ID))).thenReturn(vnf); + when(mockedAaiVnfResources.getGenericVnf(eq(VNF_ID))).thenReturn(Optional.empty()); + objUnderTest.getNodeStatus(stubbedxecution); + verify(exceptionUtil).buildAndThrowWorkflowException(any(BuildingBlockExecution.class), eq(1220), + any(Exception.class)); + assertNull(stubbedxecution.getVariable(CREATE_VNF_NODE_STATUS)); + + } + + @Test + public void testGetNodeStatusException() throws Exception { + when(extractPojosForBB.extractByKey(any(), eq(ResourceKey.GENERIC_VNF_ID))).thenThrow(RuntimeException.class); + objUnderTest.getNodeStatus(stubbedxecution); + assertNull(stubbedxecution.getVariable(CREATE_VNF_NODE_STATUS)); + verify(exceptionUtil).buildAndThrowWorkflowException(any(BuildingBlockExecution.class), eq(1220), + any(Exception.class)); + } + + @Test + public void testTimeOutLogFailue() throws Exception { + objUnderTest.timeOutLogFailue(stubbedxecution); + verify(exceptionUtil).buildAndThrowWorkflowException(any(BuildingBlockExecution.class), eq(1221), + eq("Node operation time out")); + } + + private GenericVnf getAAIGenericVnf() { + final GenericVnf genericVnf = new GenericVnf(); + genericVnf.setVnfId(VNF_ID); + genericVnf.setVnfName(VNF_NAME); + return genericVnf; + } + + private org.onap.so.bpmn.servicedecomposition.bbobjects.GenericVnf getGenericVnf() { + final org.onap.so.bpmn.servicedecomposition.bbobjects.GenericVnf genericVnf = + new org.onap.so.bpmn.servicedecomposition.bbobjects.GenericVnf(); + genericVnf.setVnfId(VNF_ID); + return genericVnf; + + } + + private MonitorInstantiateVnfmNodeTask getEtsiVnfMonitorNodeJobTask() { + return new MonitorInstantiateVnfmNodeTask(extractPojosForBB, exceptionUtil, mockedAaiVnfResources); + } + +} diff --git a/bpmn/so-bpmn-tasks/src/test/java/org/onap/so/bpmn/infrastructure/adapter/vnfm/tasks/MonitorVnfmNodeJobTest.java b/bpmn/so-bpmn-tasks/src/test/java/org/onap/so/bpmn/infrastructure/adapter/vnfm/tasks/MonitorTerminateVnfmNodeTaskTest.java index 6b84f6a918..04831733e1 100644 --- a/bpmn/so-bpmn-tasks/src/test/java/org/onap/so/bpmn/infrastructure/adapter/vnfm/tasks/MonitorVnfmNodeJobTest.java +++ b/bpmn/so-bpmn-tasks/src/test/java/org/onap/so/bpmn/infrastructure/adapter/vnfm/tasks/MonitorTerminateVnfmNodeTaskTest.java @@ -20,16 +20,15 @@ package org.onap.so.bpmn.infrastructure.adapter.vnfm.tasks; -import static org.onap.so.bpmn.infrastructure.adapter.vnfm.tasks.Constants.CREATE_VNF_NODE_STATUS; -import static org.onap.so.bpmn.infrastructure.adapter.vnfm.tasks.Constants.DELETE_VNF_NODE_STATUS; -import static org.onap.so.bpmn.infrastructure.adapter.vnfm.tasks.Constants.VNF_CREATED; -import static org.onap.so.bpmn.infrastructure.adapter.vnfm.tasks.Constants.VNF_ASSIGNED; import static org.junit.Assert.assertNull; import static org.junit.Assert.assertTrue; import static org.mockito.ArgumentMatchers.any; import static org.mockito.ArgumentMatchers.eq; import static org.mockito.Mockito.verify; import static org.mockito.Mockito.when; +import static org.onap.so.bpmn.infrastructure.adapter.vnfm.tasks.Constants.DELETE_VNF_NODE_STATUS; +import static org.onap.so.bpmn.infrastructure.adapter.vnfm.tasks.Constants.VNF_ASSIGNED; +import java.util.Optional; import java.util.UUID; import org.junit.Before; import org.junit.Test; @@ -38,13 +37,14 @@ import org.onap.aai.domain.yang.GenericVnf; import org.onap.so.bpmn.BaseTaskTest; import org.onap.so.bpmn.common.BuildingBlockExecution; import org.onap.so.bpmn.servicedecomposition.entities.ResourceKey; +import org.onap.so.client.orchestration.AAIVnfResources; /** * - * @author Lathishbabu Ganesan (lathishbabu.ganesan@est.tech) + * @author Waqas Ikram (waqas.ikram@est.tech) * */ -public class MonitorVnfmNodeJobTest extends BaseTaskTest { +public class MonitorTerminateVnfmNodeTaskTest extends BaseTaskTest { private static final String VNF_ID = UUID.randomUUID().toString(); @@ -55,6 +55,9 @@ public class MonitorVnfmNodeJobTest extends BaseTaskTest { @Mock private VnfmAdapterServiceProvider mockedVnfmAdapterServiceProvider; + @Mock + private AAIVnfResources mockedAaiVnfResources; + private final BuildingBlockExecution stubbedxecution = new StubbedBuildingBlockExecution(); @Before @@ -63,49 +66,48 @@ public class MonitorVnfmNodeJobTest extends BaseTaskTest { } @Test - public void testGetNodeStatusCreate() throws Exception { - GenericVnf vnf = getGenericVnf(); - vnf.setOrchestrationStatus(VNF_CREATED); - when(extractPojosForBB.extractByKey(any(), eq(ResourceKey.GENERIC_VNF_ID))).thenReturn(vnf); - objUnderTest.getNodeStatus(stubbedxecution); - assertTrue(stubbedxecution.getVariable(CREATE_VNF_NODE_STATUS)); - } - - @Test public void testGetNodeStatusDelete() throws Exception { - GenericVnf vnf = getGenericVnf(); - vnf.setOrchestrationStatus(VNF_ASSIGNED); + final org.onap.so.bpmn.servicedecomposition.bbobjects.GenericVnf vnf = getGenericVnf(); + final GenericVnf aaiGenericVnf = getAAIGenericVnf(); + aaiGenericVnf.setOrchestrationStatus(VNF_ASSIGNED); + when(extractPojosForBB.extractByKey(any(), eq(ResourceKey.GENERIC_VNF_ID))).thenReturn(vnf); + when(mockedAaiVnfResources.getGenericVnf(eq(VNF_ID))).thenReturn(Optional.of(aaiGenericVnf)); + objUnderTest.getNodeStatus(stubbedxecution); assertTrue(stubbedxecution.getVariable(DELETE_VNF_NODE_STATUS)); } @Test - public void testGetNodeStatusException() throws Exception { - when(extractPojosForBB.extractByKey(any(), eq(ResourceKey.GENERIC_VNF_ID))).thenThrow(RuntimeException.class); + public void testGetNodeStatus_noGenericVnfFoundInAAI_throwException() throws Exception { + final org.onap.so.bpmn.servicedecomposition.bbobjects.GenericVnf vnf = getGenericVnf(); + + when(extractPojosForBB.extractByKey(any(), eq(ResourceKey.GENERIC_VNF_ID))).thenReturn(vnf); + when(mockedAaiVnfResources.getGenericVnf(eq(VNF_ID))).thenReturn(Optional.empty()); objUnderTest.getNodeStatus(stubbedxecution); - assertNull(stubbedxecution.getVariable(CREATE_VNF_NODE_STATUS)); - assertNull(stubbedxecution.getVariable(DELETE_VNF_NODE_STATUS)); verify(exceptionUtil).buildAndThrowWorkflowException(any(BuildingBlockExecution.class), eq(1220), any(Exception.class)); - } + assertNull(stubbedxecution.getVariable(DELETE_VNF_NODE_STATUS)); - @Test - public void testTimeOutLogFailue() throws Exception { - objUnderTest.timeOutLogFailue(stubbedxecution); - verify(exceptionUtil).buildAndThrowWorkflowException(any(BuildingBlockExecution.class), eq(1221), - eq("Node operation time out")); } - private GenericVnf getGenericVnf() { + private GenericVnf getAAIGenericVnf() { final GenericVnf genericVnf = new GenericVnf(); genericVnf.setVnfId(VNF_ID); genericVnf.setVnfName(VNF_NAME); return genericVnf; } - private MonitorVnfmNodeTask getEtsiVnfMonitorNodeJobTask() { - return new MonitorVnfmNodeTask(extractPojosForBB, exceptionUtil); + private org.onap.so.bpmn.servicedecomposition.bbobjects.GenericVnf getGenericVnf() { + final org.onap.so.bpmn.servicedecomposition.bbobjects.GenericVnf genericVnf = + new org.onap.so.bpmn.servicedecomposition.bbobjects.GenericVnf(); + genericVnf.setVnfId(VNF_ID); + return genericVnf; + + } + + private MonitorTerminateVnfmNodeTask getEtsiVnfMonitorNodeJobTask() { + return new MonitorTerminateVnfmNodeTask(extractPojosForBB, exceptionUtil, mockedAaiVnfResources); } } diff --git a/bpmn/so-bpmn-tasks/src/test/java/org/onap/so/bpmn/infrastructure/workflow/tasks/WorkflowActionBBTasksTest.java b/bpmn/so-bpmn-tasks/src/test/java/org/onap/so/bpmn/infrastructure/workflow/tasks/WorkflowActionBBTasksTest.java index a60927d694..1013cc8330 100644 --- a/bpmn/so-bpmn-tasks/src/test/java/org/onap/so/bpmn/infrastructure/workflow/tasks/WorkflowActionBBTasksTest.java +++ b/bpmn/so-bpmn-tasks/src/test/java/org/onap/so/bpmn/infrastructure/workflow/tasks/WorkflowActionBBTasksTest.java @@ -48,6 +48,8 @@ import org.onap.so.bpmn.servicedecomposition.entities.ExecuteBuildingBlock; import org.onap.so.bpmn.servicedecomposition.entities.WorkflowResourceIds; import org.onap.so.db.catalog.beans.VnfResourceCustomization; import org.onap.so.db.request.beans.InfraActiveRequests; +import org.onap.so.serviceinstancebeans.ModelInfo; +import org.onap.so.serviceinstancebeans.RequestDetails; import org.springframework.core.env.Environment; public class WorkflowActionBBTasksTest extends BaseTaskTest { @@ -95,14 +97,16 @@ public class WorkflowActionBBTasksTest extends BaseTaskTest { ExecuteBuildingBlock ebb = new ExecuteBuildingBlock(); String vnfCustomizationUUID = "1234567"; - String serviceInstanceId = "1234567"; + String modelUuid = "1234567"; BuildingBlock buildingBlock = new BuildingBlock(); buildingBlock.setBpmnFlowName("ConfigAssignVnfBB"); buildingBlock.setKey(vnfCustomizationUUID); ebb.setBuildingBlock(buildingBlock); - WorkflowResourceIds workflowResourceIds = new WorkflowResourceIds(); - workflowResourceIds.setServiceInstanceId(serviceInstanceId); - ebb.setWorkflowResourceIds(workflowResourceIds); + RequestDetails rd = new RequestDetails(); + ModelInfo mi = new ModelInfo(); + mi.setModelUuid(modelUuid); + rd.setModelInfo(mi); + ebb.setRequestDetails(rd); flowsToExecute.add(ebb); List<VnfResourceCustomization> vnfResourceCustomizations = new ArrayList(); @@ -112,8 +116,7 @@ public class WorkflowActionBBTasksTest extends BaseTaskTest { vnfResourceCustomizations.add(vrc); GenericVnf genericVnf = new GenericVnf(); genericVnf.setModelCustomizationId(vnfCustomizationUUID); - doReturn(vnfResourceCustomizations).when(catalogDbClient) - .getVnfResourceCustomizationByModelUuid(serviceInstanceId); + doReturn(vnfResourceCustomizations).when(catalogDbClient).getVnfResourceCustomizationByModelUuid(modelUuid); doReturn(vrc).when(catalogDbClient).findVnfResourceCustomizationInList(vnfCustomizationUUID, vnfResourceCustomizations); @@ -138,14 +141,16 @@ public class WorkflowActionBBTasksTest extends BaseTaskTest { ExecuteBuildingBlock ebb2 = new ExecuteBuildingBlock(); String vnfCustomizationUUID = "1234567"; - String serviceInstanceId = "1234567"; + String modelUuid = "1234567"; BuildingBlock buildingBlock = new BuildingBlock(); buildingBlock.setBpmnFlowName("ConfigDeployVnfBB"); buildingBlock.setKey(vnfCustomizationUUID); ebb.setBuildingBlock(buildingBlock); - WorkflowResourceIds workflowResourceIds = new WorkflowResourceIds(); - workflowResourceIds.setServiceInstanceId(serviceInstanceId); - ebb.setWorkflowResourceIds(workflowResourceIds); + RequestDetails rd = new RequestDetails(); + ModelInfo mi = new ModelInfo(); + mi.setModelUuid(modelUuid); + rd.setModelInfo(mi); + ebb.setRequestDetails(rd); flowsToExecute.add(ebb); List<VnfResourceCustomization> vnfResourceCustomizations = new ArrayList(); @@ -155,8 +160,7 @@ public class WorkflowActionBBTasksTest extends BaseTaskTest { vnfResourceCustomizations.add(vrc); GenericVnf genericVnf = new GenericVnf(); genericVnf.setModelCustomizationId(vnfCustomizationUUID); - doReturn(vnfResourceCustomizations).when(catalogDbClient) - .getVnfResourceCustomizationByModelUuid(serviceInstanceId); + doReturn(vnfResourceCustomizations).when(catalogDbClient).getVnfResourceCustomizationByModelUuid(modelUuid); doReturn(vrc).when(catalogDbClient).findVnfResourceCustomizationInList(vnfCustomizationUUID, vnfResourceCustomizations); diff --git a/docs/release-notes.rst b/docs/release-notes.rst index 89e12e35c2..8d5f5727b6 100644 --- a/docs/release-notes.rst +++ b/docs/release-notes.rst @@ -8,6 +8,240 @@ Service Orchestrator Release Notes The SO provides the highest level of service orchestration in the ONAP architecture. +Version: 1.4.3 +============== + +:Release Date: 2019-06-06 + +Docker Images +------------- + +**Dockers released for SO:** + + - onap/so/api-handler-infra,1.4.3 + - onap/so/bpmn-infra,1.4.3 + - onap/so/catalog-db-adapter,1.4.3 + - onap/so/openstack-adapter,1.4.3 + - onap/so/request-db-adapter,1.4.3 + - onap/so/sdc-controller,1.4.3 + - onap/so/sdnc-adapter,1.4.3 + - onap/so/so-monitoring,1.4.3 + - onap/so/vfc-adapter,1.4.3 + +Release Purpose +---------------- + +**New Features** + +The main goal of the Dublin release was to: + - Support CCVPN extension + - Support BroadBand Service Usecase + - SO SOL003 plugin support + - Improve PNF PnP + + +**Epics** + +- [`SO-1508 <https://jira.onap.org/browse/SO-1508>`__\ ] - ETSI Alignment - SO SOL003 plugin support to connect to external VNFMs +- [`SO-1468 <https://jira.onap.org/browse/SO-1468>`__\ ] - Hardening of HPA in SO and extension of HPA capabilities to existing use-cases +- [`SO-1394 <https://jira.onap.org/browse/SO-1394>`__\ ] - Extended and enhance the SO generic building block to support pre and post instantiation. +- [`SO-1393 <https://jira.onap.org/browse/SO-1393>`__\ ] - Support the CCVPN Extension +- [`SO-1392 <https://jira.onap.org/browse/SO-1392>`__\ ] - Support the BroadBand Service Usecase +- [`SO-1353 <https://jira.onap.org/browse/SO-1353>`__\ ] - SO to be made independent of Cloud technologies +- [`SO-1273 <https://jira.onap.org/browse/SO-1273>`__\ ] - PNF PnP Dublin updates & improvements +- [`SO-1271 <https://jira.onap.org/browse/SO-1271>`__\ ] - PNF PnP Casablanca MR updates +- [`SO-677 <https://jira.onap.org/browse/SO-677>`__\ ] - Improve the issues and findings of the SO Casablanca Release +- [`SO-166 <https://jira.onap.org/browse/SO-166>`__\ ] - Non-stop operations required. + +**Stories** + +- [`SO-1974 <https://jira.onap.org/browse/SO-1974`__ ] - Turn off OpenStack heat stack audit +- [`SO-1924 <https://jira.onap.org/browse/SO-1924`__ ] - Add VnfConfigUpdate to the list of native CM workflows returned to VID +- [`SO-1820 <https://jira.onap.org/browse/SO-1820`__ ] - Add Model Version Query +- [`SO-1806 <https://jira.onap.org/browse/SO-1806`__ ] - Fix issue where null variable causes task to not +- [`SO-1793 <https://jira.onap.org/browse/SO-1793`__ ] - add status for delete +- [`SO-1792 <https://jira.onap.org/browse/SO-1792`__ ] - add status message requirement for create vf module event audit +- [`SO-1791 <https://jira.onap.org/browse/SO-1791`__ ] - Moved base client to new location +- [`SO-1790 <https://jira.onap.org/browse/SO-1790`__ ] - Enhanced sniro BB to account for sole service proxies to support 1908. +- [`SO-1765 <https://jira.onap.org/browse/SO-1765`__ ] - Convert Tabs to Spaces +- [`SO-1760 <https://jira.onap.org/browse/SO-1760`__ ] - Add Query param to pull back nested stack information +- [`SO-1758 <https://jira.onap.org/browse/SO-1758`__ ] - Fix POM to allow HTTP long polling to work on camunda +- [`SO-1749 <https://jira.onap.org/browse/SO-1749`__ ] - re add openstack audit of delete functions after refactor +- [`SO-1748 <https://jira.onap.org/browse/SO-1748`__ ] - Add support to parse cdl inside LOB and platform +- [`SO-1737 <https://jira.onap.org/browse/SO-1737`__ ] - if audit fails write sub interface data to a ai +- [`SO-1729 <https://jira.onap.org/browse/SO-1729`__ ] - Monitor Job Status-Delete +- [`SO-1687 <https://jira.onap.org/browse/SO-1687`__ ] - removed unused test classes and methods +- [`SO-1678 <https://jira.onap.org/browse/SO-1678`__ ] - removed extra argument from extractByKey method +- [`SO-1676 <https://jira.onap.org/browse/SO-1676`__ ] - replace all fixed wiremock ports +- [`SO-1671 <https://jira.onap.org/browse/SO-1671`__ ] - skip_post_instantiation_configuration schema and tosca ingestion +- [`SO-1657 <https://jira.onap.org/browse/SO-1657`__ ] - Automated testing for the SO Monitoring component +- [`SO-1648 <https://jira.onap.org/browse/SO-1648`__ ] - Increasing the test coverage of SO-Monitoring UI +- [`SO-1634 <https://jira.onap.org/browse/SO-1634`__ ] - Notification Handling - Terminate +- [`SO-1633 <https://jira.onap.org/browse/SO-1633`__ ] - Terminate VNF (with SVNFM interaction) +- [`SO-1632 <https://jira.onap.org/browse/SO-1632`__ ] - Handle VNF delete and termination (without SVNFM integration) +- [`SO-1630 <https://jira.onap.org/browse/SO-1630`__ ] - Monitor Job Status-Create +- [`SO-1629 <https://jira.onap.org/browse/SO-1629`__ ] - Notification Handling - Instantiate +- [`SO-1628 <https://jira.onap.org/browse/SO-1628`__ ] - Handle Notification Subscription +- [`SO-1627 <https://jira.onap.org/browse/SO-1627`__ ] - Create relationship between esr-vnfm and generic-vnf in AAI +- [`SO-1626 <https://jira.onap.org/browse/SO-1626`__ ] - Monitor Node Status +- [`SO-1625 <https://jira.onap.org/browse/SO-1625`__ ] - Handle Grant Request (Without Homing/OOF) +- [`SO-1624 <https://jira.onap.org/browse/SO-1624`__ ] - Instantiate VNF (with SVNFM Interaction) +- [`SO-1623 <https://jira.onap.org/browse/SO-1623`__ ] - Handle Create VNF request in VNFM adapter +- [`SO-1622 <https://jira.onap.org/browse/SO-1622`__ ] - Check for existing VNF (with SVNFM Interaction) +- [`SO-1621 <https://jira.onap.org/browse/SO-1621`__ ] - Create placeholder implementation for create VNF (without SVNFM interaction) +- [`SO-1620 <https://jira.onap.org/browse/SO-1620`__ ] - Create Shell Adapter +- [`SO-1619 <https://jira.onap.org/browse/SO-1619`__ ] - Create SO VNFM Adapter Northbound Interface using Swagger +- [`SO-1618 <https://jira.onap.org/browse/SO-1618`__ ] - SVNFM Simulator +- [`SO-1616 <https://jira.onap.org/browse/SO-1616`__ ] - Add instance group support to SO +- [`SO-1604 <https://jira.onap.org/browse/SO-1604`__ ] - SO Catalog Enhancement to support CDS Meta Data for VNF/PNF and PNF Tosca Ingestion +- [`SO-1598 <https://jira.onap.org/browse/SO-1598`__ ] - add equals and hashcode support to dslquerybuilder +- [`SO-1597 <https://jira.onap.org/browse/SO-1597`__ ] - improvements to audit inventory feature +- [`SO-1596 <https://jira.onap.org/browse/SO-1596`__ ] - query clients now have more useable result methods +- [`SO-1590 <https://jira.onap.org/browse/SO-1590`__ ] - skip cloud region validation for 1906 +- [`SO-1589 <https://jira.onap.org/browse/SO-1589`__ ] - flow validators can now be skipped via an annotation +- [`SO-1582 <https://jira.onap.org/browse/SO-1582`__ ] - vnf spin up gr api vnf s base module fails +- [`SO-1573 <https://jira.onap.org/browse/SO-1573`__ ] - Abstract for CDS Implementation +- [`SO-1569 <https://jira.onap.org/browse/SO-1569`__ ] - do not attempt to commit empty transactions +- [`SO-1538 <https://jira.onap.org/browse/SO-1538`__ ] - Integration Test for SO VNFM Adapter - Perform the functional test to validate VNFM Adapter NBI and SOL003-based SBI +- [`SO-1534 <https://jira.onap.org/browse/SO-1534`__ ] - Create Pre Building Block validator to check if cloud-region orchestration-disabled is true +- [`SO-1533 <https://jira.onap.org/browse/SO-1533`__ ] - flowvaldiator will allow more flexible filtering +- [`SO-1512 <https://jira.onap.org/browse/SO-1512`__ ] - Added Camunda migration scripts and updated camunda springboot version +- [`SO-1506 <https://jira.onap.org/browse/SO-1506`__ ] - E2E Automation - Extend PNF workflow with post-instantiation configuration +- [`SO-1501 <https://jira.onap.org/browse/SO-1501`__ ] - add new functionality to aai client +- [`SO-1495 <https://jira.onap.org/browse/SO-1495`__ ] - made max retries configurable via mso config repo +- [`SO-1493 <https://jira.onap.org/browse/SO-1493`__ ] - restructure a&ai client +- [`SO-1487 <https://jira.onap.org/browse/SO-1487`__ ] - added license headers to various java files +- [`SO-1485 <https://jira.onap.org/browse/SO-1485`__ ] - add DSL endpoint support to A&AI Client +- [`SO-1483 <https://jira.onap.org/browse/SO-1483`__ ] - SO to support a new GRPC client for container to container communication +- [`SO-1482 <https://jira.onap.org/browse/SO-1482`__ ] - SO Generic Building Block to support config deploy action for CONFIGURE Step +- [`SO-1481 <https://jira.onap.org/browse/SO-1481`__ ] - Generic Bulding block for assign shall trigger controller for config assign action +- [`SO-1477 <https://jira.onap.org/browse/SO-1477`__ ] - AAF support for SO +- [`SO-1476 <https://jira.onap.org/browse/SO-1476`__ ] - Do not process vf module being created when building an index +- [`SO-1475 <https://jira.onap.org/browse/SO-1475`__ ] - store raw distribution notification in db +- [`SO-1474 <https://jira.onap.org/browse/SO-1474`__ ] - Test Issue +- [`SO-1469 <https://jira.onap.org/browse/SO-1469`__ ] - Refactor OOF Homing to Java +- [`SO-1462 <https://jira.onap.org/browse/SO-1462`__ ] - Clean up AT&T Acronyms from Unit tests for audit +- [`SO-1459 <https://jira.onap.org/browse/SO-1459`__ ] - add maven build properties to spring actuator +- [`SO-1456 <https://jira.onap.org/browse/SO-1456`__ ] - prototype fetching resources from openstack and compare to a ai +- [`SO-1452 <https://jira.onap.org/browse/SO-1452`__ ] - added list of flows to execution for cockpit +- [`SO-1451 <https://jira.onap.org/browse/SO-1451`__ ] - Updated the SDC API call with the ECOMP OE from AAI +- [`SO-1450 <https://jira.onap.org/browse/SO-1450`__ ] - support for secure communications between SO and Multicloud +- [`SO-1447 <https://jira.onap.org/browse/SO-1447`__ ] - Refine multicloud use of SO cloudsites and identify DB +- [`SO-1446 <https://jira.onap.org/browse/SO-1446`__ ] - Multicloud API updates for generic clouds +- [`SO-1445 <https://jira.onap.org/browse/SO-1445`__ ] - Multicloud support for volume groups and networks +- [`SO-1444 <https://jira.onap.org/browse/SO-1444`__ ] - AAI update after vfmodule creation +- [`SO-1443 <https://jira.onap.org/browse/SO-1443`__ ] - Prepare user_directives for multicloud API +- [`SO-1442 <https://jira.onap.org/browse/SO-1442`__ ] - Prepare sdnc_directives for multicloud API +- [`SO-1441 <https://jira.onap.org/browse/SO-1441`__ ] - Handle distribution of service with generic cloud artifacts +- [`SO-1436 <https://jira.onap.org/browse/SO-1436`__ ] - removed unnecessary repository from pom.xml +- [`SO-1432 <https://jira.onap.org/browse/SO-1432`__ ] - duplicate add custom object support to a ai client +- [`SO-1431 <https://jira.onap.org/browse/SO-1431`__ ] - Test issue 1 +- [`SO-1429 <https://jira.onap.org/browse/SO-1429`__ ] - add custom object support to a ai client +- [`SO-1427 <https://jira.onap.org/browse/SO-1427`__ ] - Fix to include alloc pool from dhcpStart/end on reqs +- [`SO-1426 <https://jira.onap.org/browse/SO-1426`__ ] - Upgraded tosca parser to version 1.4.8 and updated imports +- [`SO-1425 <https://jira.onap.org/browse/SO-1425`__ ] - Re-Factor DMAAP Credentials to use encrypted auth +- [`SO-1421 <https://jira.onap.org/browse/SO-1421`__ ] - Support for SO->ExtAPI interface/API +- [`SO-1414 <https://jira.onap.org/browse/SO-1414`__ ] - update all inprogress checks in apih handler +- [`SO-1413 <https://jira.onap.org/browse/SO-1413`__ ] - replaced org.mockito.Matchers with ArgumentMatchers +- [`SO-1411 <https://jira.onap.org/browse/SO-1411`__ ] - Test Issue +- [`SO-1409 <https://jira.onap.org/browse/SO-1409`__ ] - added in validation for number of keys provided +- [`SO-1405 <https://jira.onap.org/browse/SO-1405`__ ] - apih infra shall ensure data for si matches on macro requests +- [`SO-1404 <https://jira.onap.org/browse/SO-1404`__ ] - covert sync calls for create and delete network to async +- [`SO-1395 <https://jira.onap.org/browse/SO-1395`__ ] - E2E Automation - PreInstatition and PostInstatition use cases +- [`SO-1389 <https://jira.onap.org/browse/SO-1389`__ ] - added mso-request-id when calling SDNCHandler subflow +- [`SO-1388 <https://jira.onap.org/browse/SO-1388`__ ] - descriptive messages now returned by validator +- [`SO-1387 <https://jira.onap.org/browse/SO-1387`__ ] - naming ms client fixes +- [`SO-1385 <https://jira.onap.org/browse/SO-1385`__ ] - removed retired A&AI versions from codebase +- [`SO-1384 <https://jira.onap.org/browse/SO-1384`__ ] - sdnc handler was not sending workflow exception upwards +- [`SO-1383 <https://jira.onap.org/browse/SO-1383`__ ] - refactored validator to be more generic +- [`SO-1381 <https://jira.onap.org/browse/SO-1381`__ ] - Quality of Life logging improvements +- [`SO-1380 <https://jira.onap.org/browse/SO-1380`__ ] - Service Proxy Consolidation +- [`SO-1379 <https://jira.onap.org/browse/SO-1379`__ ] - Add validation for vnfs before WorkflowAction starts +- [`SO-1378 <https://jira.onap.org/browse/SO-1378`__ ] - get subnet sequence number from A&AI +- [`SO-1377 <https://jira.onap.org/browse/SO-1377`__ ] - Re-enable Actuator for Springboot 2.0 +- [`SO-1376 <https://jira.onap.org/browse/SO-1376`__ ] - Created sniro request pojos for homingV2 flow +- [`SO-1370 <https://jira.onap.org/browse/SO-1370`__ ] - Preparation for next scale-out after successful instantiation of the current scale-out operation +- [`SO-1369 <https://jira.onap.org/browse/SO-1369`__ ] - Processing of configuration parameters during instantiation and scale-out +- [`SO-1368 <https://jira.onap.org/browse/SO-1368`__ ] - VNF Health check during scale-out to be made as a separate workflow +- [`SO-1367 <https://jira.onap.org/browse/SO-1367`__ ] - Invoke the APP-C service configuration API after E2E Service instantiation +- [`SO-1366 <https://jira.onap.org/browse/SO-1366`__ ] - SO Workflow need to call configure API during instantiation +- [`SO-1362 <https://jira.onap.org/browse/SO-1362`__ ] - Changed the MDC sourcing from LoggingInterceptor to JaxRsFilterLogging. +- [`SO-1346 <https://jira.onap.org/browse/SO-1346`__ ] - Use SLF4J/Logback, instead of Log4J +- [`SO-1307 <https://jira.onap.org/browse/SO-1307`__ ] - Add Headers +- [`SO-1295 <https://jira.onap.org/browse/SO-1295`__ ] - Update SDNC client Version in POM +- [`SO-1293 <https://jira.onap.org/browse/SO-1293`__ ] - Vnf Recreate +- [`SO-1290 <https://jira.onap.org/browse/SO-1290`__ ] - Update orchestrationrequest response +- [`SO-1288 <https://jira.onap.org/browse/SO-1288`__ ] - Enhance GRM Clients to use encrypted auth loading +- [`SO-1287 <https://jira.onap.org/browse/SO-1287`__ ] - Change all SDNC Calls in GR_API +- [`SO-1284 <https://jira.onap.org/browse/SO-1284`__ ] - Create Relationship between Vnf and Tenant +- [`SO-1283 <https://jira.onap.org/browse/SO-1283`__ ] - Fix GR_API cloud info retrieval +- [`SO-1282 <https://jira.onap.org/browse/SO-1282`__ ] - Update Alacarte Logic for Recreate Flow +- [`SO-1279 <https://jira.onap.org/browse/SO-1279`__ ] - Replaced the VNFC hardcoded Function +- [`SO-1278 <https://jira.onap.org/browse/SO-1278`__ ] - Move all ecomp.mso properties to org.onap.so +- [`SO-1276 <https://jira.onap.org/browse/SO-1276`__ ] - Add Cloud_Owner to northbound request table +- [`SO-1275 <https://jira.onap.org/browse/SO-1275`__ ] - Resolve path issues +- [`SO-1274 <https://jira.onap.org/browse/SO-1274`__ ] - CreateAndUpdatePNFResource workflow:: Associate PNF instance +- [`SO-1272 <https://jira.onap.org/browse/SO-1272`__ ] - Use UUID to fill pnf-id in PNF PnP sub-flow +- [`SO-1270 <https://jira.onap.org/browse/SO-1270`__ ] - Add New A&AI objects +- [`SO-1269 <https://jira.onap.org/browse/SO-1269`__ ] - Add serviceRole to MSO SNIRO Interface +- [`SO-1260 <https://jira.onap.org/browse/SO-1260`__ ] - Add support for naming service +- [`SO-1233 <https://jira.onap.org/browse/SO-1233`__ ] - Added service role to sniro request when not null +- [`SO-1232 <https://jira.onap.org/browse/SO-1232`__ ] - Switch to SpringAutoDeployment rather than processes.xml +- [`SO-1229 <https://jira.onap.org/browse/SO-1229`__ ] - Remove all usage of AlarmLogger +- [`SO-1228 <https://jira.onap.org/browse/SO-1228`__ ] - Limit Number of Occurs for security reasons +- [`SO-1227 <https://jira.onap.org/browse/SO-1227`__ ] - Remove Swagger UI due to security scan concerns +- [`SO-1226 <https://jira.onap.org/browse/SO-1226`__ ] - changed assign vnf sdnc to use the async subflow +- [`SO-1225 <https://jira.onap.org/browse/SO-1225`__ ] - Add Keystone V3 Support +- [`SO-1207 <https://jira.onap.org/browse/SO-1207`__ ] - accept a la carte create instance group request from vid +- [`SO-1206 <https://jira.onap.org/browse/SO-1206`__ ] - Added groupInstanceId and groupInstanceName columns +- [`SO-1205 <https://jira.onap.org/browse/SO-1205`__ ] - separate error status from progression status in req db +- [`SO-806 <https://jira.onap.org/browse/SO-806`__ ] - SO PNF PnP workflow shall not set "in-maint" AAI flag +- [`SO-798 <https://jira.onap.org/browse/SO-798`__ ] - Externalize the PNF PnP workflow 鈥?as a Service Instance Deployment workflow 鈥?adding the Controller +- [`SO-747 <https://jira.onap.org/browse/SO-747`__ ] - POC - Enable SO use of Multicloud Generic VNF Instantiation API +- [`SO-700 <https://jira.onap.org/browse/SO-700`__ ] - SO should be able to support CCVPN service assurance +- [`SO-588 <https://jira.onap.org/browse/SO-588`__ ] - Automate robot heatbridge manual step to add VF Module stack resources in AAI +- [`SO-18 <https://jira.onap.org/browse/SO-18`__ ] - Keystone v3 Support in MSO +- [`SO-12 <https://jira.onap.org/browse/SO-12`__ ] - Support Ocata apis +- [`SO-10 <https://jira.onap.org/browse/SO-10`__ ] - Deploy a MSO high availability environment +- [`SO-7 <https://jira.onap.org/browse/SO-7`__ ] - Move modified openstack library to common functions repos +- [`SO-6 <https://jira.onap.org/browse/SO-6`__ ] - Document how to change username/password for UIs + + +Security Notes +-------------- + SO code has been formally scanned during build time using NexusIQ and all Critical vulnerabilities have been addressed, items that remain open have been assessed for risk and determined to be false positive. The SO open Critical security vulnerabilities and their risk assessment have been documented as part of the `project <https://wiki.onap.org/pages/viewpage.action?pageId=43385708>`_. + +Quick Links: + + - `SO project page <https://wiki.onap.org/display/DW/Service+Orchestrator+Project>`_ + - `Passing Badge information for SO <https://bestpractices.coreinfrastructure.org/en/projects/1702>`_ + - `Project Vulnerability Review Table for SO <https://wiki.onap.org/pages/viewpage.action?pageId=43385708>`_ + + +**Known Issues** + + TBD + +**Upgrade Notes** + + N/A + +**Deprecation Notes** + + N/A + +**Other** + + N/A + +Version: 1.4.1 +============== + +:Release Date: 2019-04-19 + +This is the dublin release base version separated from master branch. + + Version: 1.3.7 -------------- diff --git a/mso-api-handlers/mso-api-handler-infra/src/main/resources/application.yaml b/mso-api-handlers/mso-api-handler-infra/src/main/resources/application.yaml index e709758223..03934edf20 100644 --- a/mso-api-handlers/mso-api-handler-infra/src/main/resources/application.yaml +++ b/mso-api-handlers/mso-api-handler-infra/src/main/resources/application.yaml @@ -7,7 +7,7 @@ server: mso: infra: - auditInventory: true + auditInventory: false default: versions: apiMinorVersion: 0 @@ -70,4 +70,4 @@ org: so: adapters: network: - encryptionKey: aa3871669d893c7fb8abbcda31b88b4f
\ No newline at end of file + encryptionKey: aa3871669d893c7fb8abbcda31b88b4f |