Extend PnF registrate test cases for GR API 64/103264/6
authorKrzysztof Kuzmicki <krzysztof.kuzmicki@nokia.com>
Fri, 6 Mar 2020 13:06:48 +0000 (14:06 +0100)
committerMorgan Richomme <morgan.richomme@orange.com>
Wed, 1 Apr 2020 06:55:30 +0000 (06:55 +0000)
Issue-ID: INT-1477

Signed-off-by: Krzysztof Kuzmicki <krzysztof.kuzmicki@nokia.com>
Change-Id: If7ade6850bd59799d5445cebe27db5c948522e06

robot/assets/templates/so/create_pnf_service_building_block.jinja [new file with mode: 0644]
robot/resources/aai/create_customer.robot
robot/resources/aai/create_service.robot
robot/resources/sdc_interface.robot
robot/resources/so/create_service_instance.robot [new file with mode: 0644]
robot/resources/test_templates/pnf_orchestration_test_template.robot
robot/resources/test_templates/pnf_registration_without_SO_template.robot
robot/testsuites/pnf-registration.robot

diff --git a/robot/assets/templates/so/create_pnf_service_building_block.jinja b/robot/assets/templates/so/create_pnf_service_building_block.jinja
new file mode 100644 (file)
index 0000000..15fae64
--- /dev/null
@@ -0,0 +1,70 @@
+{
+    "requestDetails":{
+        "modelInfo":{
+            "modelInvariantId": "{{service_model_invariant_uuid}}",
+            "modelVersionId":"{{service_model_uuid}}",
+            "modelName":"{{service_model_name}}",
+            "modelType":"service",
+            "modelVersion":"1.0"
+        },
+        "owningEntity":{
+            "owningEntityId":"{{owningEntityId}}",
+            "owningEntityName":"{{owningEntityName}}"
+        },
+        "subscriberInfo":{
+            "globalSubscriberId":"{{full_customer_name}}"
+        },
+        "requestInfo":{
+            "instanceName":"{{service_name}}",
+            "productFamilyId":"{{productFamilyId}}",
+            "source":"VID",
+            "suppressRollback": False,
+            "requestorId":"demo"
+        },
+        "requestParameters":{
+            "subscriptionServiceType":"{{service}}",
+            "aLaCarte": False,
+            "userParams":[
+                {
+                    "service":{
+                        "modelInfo":{
+                            "modelVersionId":"{{service_model_uuid}}",
+                            "modelName":"{{service_model_name}}",
+                            "modelType":"service"
+                        },
+                        "instanceName":"{{service_name}}",
+                        "instanceParams":[
+                        ],
+                        "resources":{
+                            "pnfs":[
+                                {
+                                    "modelInfo":{
+                                        "modelCustomizationName":"{{nf_resource_name}}",
+                                        "modelCustomizationId":"{{nf_resource_uuid}}",
+                                        "modelInvariantId":"{{nf_model_invariant_uuid}}",
+                                        "modelVersionId":"{{nf_model_uuid}}",
+                                        "modelName":"{{nf_model_name}}",
+                                        "modelType":"pnf",
+                                        "modelVersion":"1.0"
+                                    },
+                                    "platform":{
+                                        "platformName":"{{platformName}}"
+                                    },
+                                    "lineOfBusiness":{
+                                        "lineOfBusinessName":"{{lineOfBusinessName}}"
+                                    },
+                                    "productFamilyId":"{{productFamilyId}}",
+                                    "instanceParams":[],
+                                    "instanceName":"{{nf_instance_name}}"
+                                },
+                            ]
+                        }
+                    }
+                },
+                {
+                    "Homing_Solution":"none"
+                }
+            ]
+        }
+    }
+}
\ No newline at end of file
index 6fbb84c..c0498b6 100644 (file)
@@ -33,4 +33,15 @@ Delete Customer Exists
     [Documentation]    Deletes a customer in A&AI
     [Arguments]    ${customer_id}    ${resource_version_id}
     ${put_resp}=    AAI.Run Delete Request    ${AAI_FRONTEND_ENDPOINT}    ${INDEX PATH}${ROOT_CUSTOMER_PATH}${customer_id}    ${resource_version_id}        auth=${GLOBAL_AAI_AUTHENTICATION}
-    Should Be Equal As Strings         ${put_resp.status_code}         204
\ No newline at end of file
+    Should Be Equal As Strings         ${put_resp.status_code}         204
+
+Get OwningEntity Id
+    [Documentation]   Returns OwningEntity Id based on OwningEntity name
+    [Arguments]    ${name}
+    ${resp}=    AAI.Run Get Request    ${AAI_FRONTEND_ENDPOINT}    /aai/v11/business/owning-entities   auth=${GLOBAL_AAI_AUTHENTICATION}
+    @{list}=  Copy List   ${resp.json['owning-entity']}
+    :FOR   ${map}    IN    @{list}
+    \    ${owning_entity_name}=     Run Keyword And Ignore Error    Get From Dictionary    ${map}    owning-entity-name
+    \    ${owning_entity_id}=      Run Keyword And Ignore Error    Get From Dictionary    ${map}    owning-entity-id
+    \    ${id}   Run Keyword If    '${owning_entity_name}' == '${name}'    Set Variable    ${owning_entity_id}
+       [Return]  ${id}
\ No newline at end of file
index e473d49..0dc7a2f 100644 (file)
@@ -59,6 +59,17 @@ Get Services
     Run Keyword If    '${status}' == 'PASS'    Update Service Dictionary    ${dict}    ${resp.json()}
        [Return]  ${dict}
 
+Get Service Id
+    [Documentation]    Gets a service id in A&AI
+    [Arguments]    ${service_description}
+       ${resp}=    AAI.Run Get Request     ${AAI_FRONTEND_ENDPOINT}    ${INDEX PATH}${ROOT_SERVICE_PATH}        auth=${GLOBAL_AAI_AUTHENTICATION}
+    @{list}=  Copy List   ${resp.json['service']}
+    :FOR   ${map}    IN    @{list}
+    \    ${service_type}=     Run Keyword And Ignore Error    Get From Dictionary    ${map}    service-description
+    \    ${service_id}=      Run Keyword And Ignore Error    Get From Dictionary    ${map}    service-id
+    \    ${id}   Run Keyword If    '${service_type}' == '${service_description}'    Set Variable    ${service_id}
+       [Return]  ${id}
+
 Update Service Dictionary
     [Arguments]    ${dict}    ${json}
     @{list}=  Copy List   ${json['service']}
index 4b1d61b..a85ba27 100644 (file)
@@ -91,7 +91,7 @@ Distribute Model From SDC
                                   ...  ELSE   Get Regexp Matches    ${zip}   ${service}_(.*)\.zip    1
     #  Need to be able to distribute preload for vFWCL vFWSNK and vFWDT vFWSNK to prepend service to vnf_type
     \    ${resource_type_string}=   Set Variable If   len(${resource_type_match})==0    ${service}    ${service}${resource_type_match[0]}
-    \    Set To Dictionary    ${resource_types}    ${resource_type_string}    ${loop_catalog_resource_id}   
+    \    Set To Dictionary    ${resource_types}    ${resource_type_string}    ${loop_catalog_resource_id}
     \    Append To List    ${catalog_resource_ids}   ${loop_catalog_resource_id}
 
     ServiceMapping.Set Directory    default    ${GLOBAL_SERVICE_MAPPING_DIRECTORY}
@@ -260,14 +260,19 @@ Download CSAR
 
 Get Generic NeutronNet UUID
    [Documentation]   Look up the UUID of the Generic NeutronNetwork Resource
-   ${resp}=    SDC.Run Get Request   ${SDC_BE_ENDPOINT}    ${SDC_CATALOG_RESOURCES_QUERY_PATH}/Generic%20NeutronNet/resourceVersion/1.0   ${SDC_DESIGNER_USER_ID}    auth=${GLOBAL_SDC_AUTHENTICATION}
-   [Return]    ${resp.json()['allVersions']['1.0']}
+   ${json}=  Get Resource Catalog  Generic%20NeutronNet
+   [Return]    ${json['allVersions']['1.0']}
 
 Get AllottedResource UUID
    [Documentation]   Look up the UUID of the Allotted Resource
    # if this fails then the AllottedResource template got deleted from SDC by mistake
-   ${resp}=    SDC.Run Get Request   ${SDC_BE_ENDPOINT}    ${SDC_CATALOG_RESOURCES_QUERY_PATH}/AllottedResource/resourceVersion/1.0   ${SDC_DESIGNER_USER_ID}    auth=${GLOBAL_SDC_AUTHENTICATION}
-   [Return]    ${resp.json()['allVersions']['1.0']}
+   ${json}=  Get Resource Catalog  AllottedResource
+   [Return]    ${json['allVersions']['1.0']}
+
+Get Resource Catalog
+   [Arguments]  ${resource_name}
+   ${resp}=    SDC.Run Get Request   ${SDC_BE_ENDPOINT}    ${SDC_CATALOG_RESOURCES_QUERY_PATH}/${resource_name}/resourceVersion/1.0   ${SDC_DESIGNER_USER_ID}    auth=${GLOBAL_SDC_AUTHENTICATION}
+   [Return]    ${resp.json()}
 
 Loop Over Check Catalog Service Distributed
     [Arguments]    ${catalog_service_id}
@@ -456,7 +461,7 @@ Add SDC License Model
     ${resp}=    SDC.Run Post Request    ${SDC_BE_ONBOARD_ENDPOINT}    ${SDC_VENDOR_LICENSE_MODEL_PATH}    ${data}  ${SDC_DESIGNER_USER_ID}      auth=${GLOBAL_SDC_AUTHENTICATION}
     Should Be Equal As Strings  ${resp.status_code}     200
     [Return]    ${resp.json()['itemId']}    ${resp.json()['version']['id']}
-    
+
 Get SDC License Model
     [Documentation]    gets an SDC license model by its id
     [Arguments]    ${id}   ${version_id}=0.1
@@ -717,7 +722,7 @@ Set SDC Catalog Resource VNF Inputs
     [Return]    ${resp.json()}
 
 Get Service Catalog
-    [Arguments]  ${service_name}    
+    [Arguments]  ${service_name}
     ${resp}=  SDC.Run Get Request  ${SDC_BE_ENDPOINT}   ${SDC_CATALOG_SERVICES_PATH}/serviceName/${service_name}/serviceVersion/1.0  ${SDC_DESIGNER_USER_ID}  auth=${GLOBAL_SDC_AUTHENTICATION}
     [Return]   ${resp.json()}
 
@@ -894,7 +899,7 @@ Get Catalog Service Distribution Details
     ${resp}=    SDC.Run Get Request    ${SDC_BE_ENDPOINT}    ${SDC_CATALOG_SERVICES_PATH}${SDC_CATALOG_SERVICE_DISTRIBUTION_PATH}/${catalog_service_distribution_id}    ${SDC_DESIGNER_USER_ID}    auth=${GLOBAL_SDC_AUTHENTICATION}
     Should Be Equal As Strings  ${resp.status_code}     200
     [Return]    ${resp.json()}
-    
+
 Run SDC Health Check
     [Documentation]    Runs a SDC health check
     ${resp}=    SDC.Run Get Request     ${SDC_FE_ENDPOINT}    ${SDC_HEALTH_CHECK_PATH}    user=${None}
@@ -945,7 +950,7 @@ Add CDS Parameters
 
 
 Set Input Parameter
-    [Arguments]   ${service_uuid}  ${component_uuid}  ${input}  ${input_type}  ${input_value}    
+    [Arguments]   ${service_uuid}  ${component_uuid}  ${input}  ${input_type}  ${input_value}
     ${resp}=    SDC.Run Post Request  ${SDC_BE_ENDPOINT}   ${SDC_CATALOG_SERVICES_PATH}/${service_uuid}/resourceInstance/${component_uuid}/inputs    {"constraints":[],"name":"${input['name']}","parentUniqueId":"${input['parentUniqueId']}","password":false,"required":false,"schema":{"property":{}},"type":"${input_type}","uniqueId":"${input['uniqueId']}","value":"${input_value}","definition":false,"toscaPresentation":{"ownerId":"${input['ownerId']}"}}    ${SDC_DESIGNER_USER_ID}    auth=${GLOBAL_SDC_AUTHENTICATION}
     Should Be Equal As Strings  ${resp.status_code}     200
 
diff --git a/robot/resources/so/create_service_instance.robot b/robot/resources/so/create_service_instance.robot
new file mode 100644 (file)
index 0000000..44e526b
--- /dev/null
@@ -0,0 +1,24 @@
+*** Settings ***
+Documentation     Creates a macro service recipe in SO Catalog DB
+
+Library    OperatingSystem
+Library    Collections
+Library    ONAPLibrary.SO    WITH NAME    SO
+Library    ONAPLibrary.Templating    WITH NAME    Templating
+Resource    ../global_properties.robot
+
+*** Variables ***
+${CREATE_SERVICE_PATH}    /onap/so/infra/serviceInstantiation/v7/serviceInstances
+
+${SYSTEM USER}    robot-ete
+${CREATE_PNF_SERVICE_GR_API}   so/create_pnf_service_building_block.jinja
+
+*** Keywords ***
+Create PNF Service Using GR Api
+    [Documentation]    Creates a PNF service using GR Api
+    [Arguments]   ${arguments}
+    Templating.Create Environment    so    ${GLOBAL_TEMPLATE_FOLDER}
+    ${data}=    Templating.Apply Template    so    ${CREATE_PNF_SERVICE_GR_API}     ${arguments}
+    ${auth}=  Create List  ${GLOBAL_SO_USERNAME}    ${GLOBAL_SO_PASSWORD}
+    ${request_id}  ${service_instance_id}  SO.Run Create Request   ${GLOBAL_SO_ENDPOINT}    ${CREATE_SERVICE_PATH}   ${data}    auth=${auth}
+    [Return]  ${request_id}  ${service_instance_id}
\ No newline at end of file
index 6877441..8a5b58f 100644 (file)
@@ -8,6 +8,7 @@ Resource        model_test_template.robot
 Resource        ../openstack/neutron_interface.robot
 Resource          ../sdc_interface.robot
 Resource          vnf_orchestration_test_template.robot
+Resource         ../so/create_service_instance.robot
 
 
 Library         ONAPLibrary.Openstack
@@ -17,13 +18,12 @@ Library             ONAPLibrary.Utilities
 
 *** Keywords ***
 
-Orchestrate PNF
+Orchestrate PNF Macro Flow
     [Documentation]   Use ONAP to Orchestrate a PNF Macro service.
-    [Arguments]    ${customer_name}    ${service}    ${product_family}    ${pnf_correlation_id}  ${tenant_id}    ${tenant_name}   ${service_model_type}   ${project_name}=Project-Demonstration   ${owning_entity}=OE-Demonstration
+    [Arguments]   ${customer_name}    ${service}    ${product_family}    ${pnf_correlation_id}  ${tenant_id}    ${tenant_name}   ${service_model_type}   ${project_name}=Project-Demonstration   ${owning_entity}=OE-Demonstration
     ${lcp_region}=   Set Variable   ${GLOBAL_INJECTED_REGION}
     ${uuid}=    Generate UUID4
     ${full_customer_name}=    Catenate    ${customer_name}_${uuid}
-    ${list}=    Create List
     ${service_name}=    Catenate    Service_Ete_Name${uuid}
     ${service_type}=    Set Variable    ${service}
     Create Customer For PNF     ${full_customer_name}    ${full_customer_name}     INFRA    ${service_type}    ${GLOBAL_AAI_CLOUD_OWNER}  ${tenant_id}  ${GLOBAL_INJECTED_REGION}
@@ -33,6 +33,49 @@ Orchestrate PNF
     Wait Until Keyword Succeeds   60s   20s       Validate Service Instance    ${service_instance_id}    ${service}    ${full_customer_name}
     [Return]     ${service_instance_id}  ${request_id}  ${full_customer_name}
 
+Orchestrate PNF Building Block Flow
+    [Documentation]   Use ONAP to Orchestrate a PNF using GR api
+    [Arguments]   ${service_model_name}  ${customer_name}    ${service}    ${product_family}    ${pnf_correlation_id}   ${project_name}=Project-Demonstration   ${owning_entity}=OE-Demonstration  ${lineOfBusinessName}=LOB-Demonstration   ${platformName}=Platform-Demonstration
+    ${service_ctalog_json}=  Get Service Catalog  ${service_model_name}
+    ${service_model_uuid}=  Set Variable  ${json_resp["uuid"]}
+    ${service_model_invariant_uuid }=  Set Variable  ${json_resp["invariantUUID"]}
+    ${nf_resource_name}=  Set Variable  ${json_resp["componentInstances"][0]["name"]}
+    ${nf_resource_uuid}=  Set Variable  ${json_resp["componentInstances"][0]["customizationUUID"]}
+    ${componentName}=  Set Variable  ${json_resp["componentInstances"][0]["componentName"]}
+    ${resource_ctalog_json}=  Get Resource Catalog  ${componentName}
+    ${nf_model_invariant_uuid}=  Set Variable  ${json_resp["invariantUUID"]}
+    ${nf_model_uuid}=  Set Variable  ${json_resp["uuid]}
+    ${nf_model_name}=  Set Variable  ${json_resp["name"]}
+    ${productFamilyId}=  Get Service Id  ${product_family}
+    ${owningEntityId}=  Get Owning Entity Id  ${owningEntityName}
+    ${uuid}=   Generate UUID4
+    ${full_customer_name}=    Catenate    ${customer_name}_${uuid}
+    ${service_name}=    Catenate    Service_Ete_Name${uuid}
+    ${service_type}=    Set Variable    ${service}
+    Create Customer For PNF     ${full_customer_name}    ${full_customer_name}     INFRA    ${service_type}    ${GLOBAL_AAI_CLOUD_OWNER}  ${tenant_id}  ${GLOBAL_INJECTED_REGION}
+    ${arguments}=    Create Dictionary   service_model_invariant_uuid=${service_model_invariant_uuid}
+    Set To Dictionary  ${arguments}  service_model_uuid  ${service_model_uuid}
+    Set To Dictionary  ${arguments}  service_model_name  ${service_model_name}
+    Set To Dictionary  ${arguments}  owningEntityId  ${owningEntityId}
+    Set To Dictionary  ${arguments}  owningEntityName  ${owningEntityName}
+    Set To Dictionary  ${arguments}  full_customer_name  ${full_customer_name}
+    Set To Dictionary  ${arguments}  service_name  ${service_name}
+    Set To Dictionary  ${arguments}  productFamilyId  ${productFamilyId}
+    Set To Dictionary  ${arguments}  service  ${service}
+    Set To Dictionary  ${arguments}  nf_resource_name  ${nf_resource_name}
+    Set To Dictionary  ${arguments}  nf_resource_uuid  ${nf_resource_uuid}
+    Set To Dictionary  ${arguments}  nf_model_invariant_uuid  ${nf_model_invariant_uuid}
+    Set To Dictionary  ${arguments}  nf_model_uuid  ${nf_model_uuid}
+    Set To Dictionary  ${arguments}  nf_model_name  ${nf_model_name}
+    Set To Dictionary  ${arguments}  platformName  ${platformName}
+    Set To Dictionary  ${arguments}  lineOfBusinessName  ${lineOfBusinessName}
+    Set To Dictionary  ${arguments}  productFamilyId  ${productFamilyId}
+    Set To Dictionary  ${arguments}  nf_instance_name  ${pnf_correlation_id}
+    ${request_id}  ${service_instance_id}=   Create PNF Service Using GR Api   ${arguments}
+    Wait Until Keyword Succeeds   60s   20s    Validate Service Instance    ${service_instance_id}    ${service}    ${full_customer_name}
+    Check PNF orchestration status in A&AI  ${pnf_correlation_id}  register
+    [Return]     ${service_instance_id}  ${request_id}
+
 
 Create Customer For PNF
     [Documentation]    PNF Orchestration Test setup....
index 63131b8..af9b414 100644 (file)
@@ -1,6 +1,7 @@
 *** Settings ***
 Documentation     PNF Registration Handler (PRH) test cases
 Resource        ../aai/aai_interface.robot
+Resource        ../aai/create_customer.robot
 Resource        ../sdc_interface.robot
 Resource        ../mr_interface.robot
 Resource        ../so/add_service_recipe.robot
@@ -77,6 +78,14 @@ Query PNF A&AI updated entry
     Should Be Equal As Strings  ${json_resp["pnf-name"]}       ${PNF_entry_dict.correlation_id}
     Log  PNF integration request in A&AI has been verified and contains all necessary entries
 
+Check PNF orchestration status in A&AI
+    [Documentation]   Query PNF A&AI updated entry
+    [Arguments]  ${PNF_entry_dict}  ${status}
+    ${get_resp}=    AAI.Run Get Request    ${AAI_FRONTEND_ENDPOINT}    /aai/v11/network/pnfs/pnf/${pnf_correlation_id}    auth=${GLOBAL_AAI_AUTHENTICATION}
+    Should Be Equal As Strings  ${get_resp.status_code}        200
+    ${json_resp}=  Set Variable  ${get_resp.json()}
+    Should Be Equal As Strings  ${status}       ${PNF_entry_dict.orchestrationStatus}
+
 Check VES_PNFREG_OUTPUT topic presence in MR
     [Documentation]   Verify if unauthenticated.VES_PNFREG_OUTPUT topic is present in MR
     ${get_resp}=  Run MR Get Request  ${DMAAP_MESSAGE_ROUTER_UNAUTHENTICATED_VES_PNFREG_OUTPUT_PATH}
@@ -111,22 +120,23 @@ Check SO service completition status
     ${so_status}=    Set Variable     ${so_status_request_data['request']['requestStatus']['requestState']}
     Should Be Equal As Strings  ${so_status}     ${so_expected_status}
 
-
 Instantiate PNF_macro service and succesfully registrate PNF template
     [Documentation]   Test case template for design, create, instantiate PNF/macro service and succesfully registrate PNF
-    [Arguments]    ${service_name}   ${PNF_entry_dict}   ${pnf_correlation_id}   ${service}=pNF    ${product_family}=pNF  ${customer_name}=ETE_Customer
+    [Arguments]    ${service_name}   ${PNF_entry_dict}   ${pnf_correlation_id}   ${service}=pNF    ${product_family}=pNF  ${customer_name}=ETE_Customer  ${building_block_flow}=false
     Log To Console   \nDistributing TOSCA Based PNF Model
     ${catalog_service_name}    ${catalog_resource_name}    ${vf_modules}   ${catalog_resources}    ${catalog_resource_ids}   ${catalog_service_id}  Model Distribution For Directory  ${service}  ${service_name}  cds=False   instantiationType=Macro  resourceType=PNF
     ${UUID}=  Get Service Model Parameter from SDC Service Catalog  ${service_name}  uuid
-    Log To Console   Creating Service Recipe for TOSCA Based PNF Model
-    ${service_recipe_id}=   Add Service Recipe  ${UUID}  mso/async/services/CreateVcpeResCustService_simplified
+    ${service_recipe_id}=   Run Keyword If  "${building_block_flow}"=='false'  Add Service Recipe  ${UUID}  mso/async/services/CreateVcpeResCustService_simplified
     Inventory Tenant If Not Exists    CloudOwner   ${region}  SharedNode  OwnerType  v1  CloudZone  ${tenant_id}   ${tenant_name}
     Load OwningEntity  project  Project-${customer_name}
     Load OwningEntity  owningEntity  OE-${customer_name}
-    ${service_instance_id}  ${request_id}  ${full_customer_name}   Orchestrate PNF   ${customer_name}   ${service}    ${product_family}  ${pnf_correlation_id}  ${tenant_id}   ${tenant_name}  ${service_name}   Project-${customer_name}   OE-${customer_name}
+    Load OwningEntity  lineOfBusiness  LOB-${customer_name}
+    Load OwningEntity  platform  Platform-${customer_name}
+    ${service_instance_id}  ${request_id}  ${full_customer_name}   Run Keyword If  "${building_block_flow}"=='false'  Orchestrate PNF Macro Flow   ${customer_name}   ${service}    ${product_family}  ${pnf_correlation_id}  ${tenant_id}   ${tenant_name}  ${service_name}   Project-${customer_name}   OE-${customer_name}
+        ...  ELSE  Orchestrate PNF Building Block Flow   ${service_model_name}  ${customer_name}    ${service}    ${product_family}    ${pnf_correlation_id}   ${project_name}=Project-Demonstration   ${owning_entity}=OE-Demonstration  ${lineOfBusinessName}=LOB-Demonstration   ${platformName}=Platform-Demonstration
     Wait Until Keyword Succeeds   120s  40s  Send and verify VES integration request in SO and A&AI   ${request_id}   ${PNF_entry_dict}
-    [Teardown]   Instantiate PNF_macro service Teardown      ${catalog_service_id}    ${catalog_resource_ids}  ${PNF_entry_dict}  ${service_instance_id}  ${service_recipe_id}
-
+    Run Keyword If  "${building_block_flow}"=='true'  Check PNF orchestration status in A&AI  ${pnf_correlation_id}  registered
+    [Teardown]   Instantiate PNF_macro service Teardown      ${catalog_service_id}    ${catalog_resource_ids}  ${PNF_entry_dict}  ${service_instance_id}  ${service_recipe_id}  ${building_block_flow}
 
 Send and verify VES integration request in SO and A&AI
     [Documentation]   Gets service status and compares with expected status
@@ -136,7 +146,7 @@ Send and verify VES integration request in SO and A&AI
     Wait Until Keyword Succeeds   30s  10s  Check SO service completition status   ${request_id}   COMPLETE
 
 Instantiate PNF_macro service Teardown
-    [Arguments]  ${catalog_service_id}    ${catalog_resource_ids}  ${PNF_entry_dict}  ${service_instance_id}  ${service_recipe_id}
+    [Arguments]  ${catalog_service_id}    ${catalog_resource_ids}  ${PNF_entry_dict}  ${service_instance_id}  ${service_recipe_id}  ${building_block_flow}
     Teardown Models  ${catalog_service_id}    ${catalog_resource_ids}
-    Delete Service Recipe  ${service_recipe_id}
+    Run Keyword If  "${building_block_flow}"=='false'  Delete Service Recipe  ${service_recipe_id}
     Cleanup PNF entry in A&AI  ${PNF_entry_dict}
\ No newline at end of file
index 1d3f899..14cefb3 100644 (file)
@@ -4,7 +4,7 @@ Test Timeout      10m
 
 Resource         ../resources/test_templates/pnf_registration_without_SO_template.robot
 Library                String
-    
+
 
 
 *** Test Cases ***
@@ -31,9 +31,25 @@ Instantiate PNF_macro service and succesfully registrate PNF
      ...  Next service is instantied with random PNF id. VES integration event is send with this PNF ID.
      ...  At the end of the service is checked in terms
      ...  - service completion
-     ...  - PNF entry update about information form VES event
+     ...  - PNF entry update about information from VES event
      [Tags]   pnf_registrate   ete
      ${pnf_correlation_id}=    Generate Random String  20  [LETTERS][NUMBERS]
      ${PNF_entry_dict}=  Create Dictionary  correlation_id=${pnf_correlation_id}  PNF_IPv4_address=13.13.13.13  PNF_IPv6_address=2001:0db8:0:0:0:0:1428:57ab
      ${PNF_service_model}=  Set Variable  Demo_pNF_${pnf_correlation_id}
      Instantiate PNF_macro service and succesfully registrate PNF template   ${PNF_service_model}   ${PNF_entry_dict}   ${pnf_correlation_id}
+
+
+Instantiate PNF service (using building blocks) and succesfully registrate PNF
+     [Documentation]
+     ...  This test case creates TOSCA csar software package for PNF. Imports it as VSP package.
+     ...  Cretaes PNF resource, cretaes Macro service, attach PNF resource and distributes it.
+     ...  Next service is instantied with random PNF id. VES integration event is send with this PNF ID.
+     ...  At the end of the service is checked in terms
+     ...  - service completion
+     ...  - PNF entry update about information from VES event
+     ...  - PNF orchestration status
+     [Tags]   pnf_registrate_gr_api
+     ${pnf_correlation_id}=    Generate Random String  20  [LETTERS][NUMBERS]
+     ${PNF_entry_dict}=  Create Dictionary  correlation_id=${pnf_correlation_id}  PNF_IPv4_address=13.13.13.13  PNF_IPv6_address=2001:0db8:0:0:0:0:1428:57ab
+     ${PNF_service_model}=  Set Variable  Demo_pNF_${pnf_correlation_id}
+     Instantiate PNF service (using building blocks) and succesfully registrate PNF template   ${PNF_service_model}   ${PNF_entry_dict}   ${pnf_correlation_id}  true
\ No newline at end of file