Get model-invariant-id from AAI for vFWCL

Change-Id: I6364bb71d9ec88e0e0bcb962b9d7531df09652c6
Issue-ID: INT-715
Signed-off-by: Gary Wu <gary.i.wu@huawei.com>
diff --git a/robot/resources/demo_preload.robot b/robot/resources/demo_preload.robot
index 5b03a0b..41936a0 100644
--- a/robot/resources/demo_preload.robot
+++ b/robot/resources/demo_preload.robot
@@ -47,7 +47,7 @@
     ${uuid}=    Generate UUID
     ${headers}=  Create Dictionary     Accept=application/json    Content-Type=application/json    USER_ID=${GLOBAL_VID_USERNAME}    X-TransactionId=${GLOBAL_APPLICATION_ID}-${uuid}    X-FromAppId=${GLOBAL_APPLICATION_ID}
     ${resp}= 	Post Request 	vid 	${data_path}   data=${vid_data}    headers=${headers}
-	
+
 Load Customer
     [Documentation]   Use openECOMP to Orchestrate a service.
     [Arguments]    ${customer_name}
@@ -156,11 +156,16 @@
 Instantiate VNF
     [Arguments]   ${service}   ${vf_module_label}=NULL
     Setup Orchestrate VNF    ${GLOBAL_AAI_CLOUD_OWNER}    SharedNode    OwnerType    v1    CloudZone
-    ${vf_module_name}    ${service}=    Orchestrate VNF    DemoCust    ${service}   ${service}    ${TENANT_NAME}
+    ${vf_module_name}    ${service}    ${generic_vnfs}=    Orchestrate VNF    DemoCust    ${service}   ${service}    ${TENANT_NAME}
     Save For Delete
     Log to Console   Customer Name=${CUSTOMER_NAME}
     Log to Console   VNF Module Name=${vf_module_name}
-    ${model_invariant_id}=  Run MSO Get ModelInvariantId   ${SUITE_SERVICE_MODEL_NAME}  ${vf_module_label}
+    # Don't get from MSO for now due to SO-1186
+    # ${model_invariant_id}=  Run MSO Get ModelInvariantId   ${SUITE_SERVICE_MODEL_NAME}  ${vf_module_label}
+    ${model_invariant_id}=   Set Variable   ${EMPTY}
+    :for    ${vf_module}    in    @{generic_vnfs}
+    \    ${generic_vnf}=    Get From Dictionary    ${generic_vnfs}    ${vf_module}
+    \    ${model_invariant_id}=    Set Variable If    '${vf_module_label}' in '${vf_module}'    ${generic_vnf['model-invariant-id']}    ${model_invariant_id}
     Log to Console   ModelInvariantID=${model_invariant_id}
     ${status}   ${value}=   Run Keyword And Ignore Error  Update vVFWCL Policy   ${model_invariant_id}
     ${status}   ${value}=   Run Keyword And Ignore Error  APPC Mount Point    ${vf_module_name}
@@ -168,11 +173,16 @@
 Instantiate Demo VNF
     [Arguments]   ${service}   ${vf_module_label}=NULL
     Setup Orchestrate VNF    ${GLOBAL_AAI_CLOUD_OWNER}    SharedNode    OwnerType    v1    CloudZone
-    ${vf_module_name}    ${service}=    Orchestrate Demo VNF    Demonstration    ${service}   ${service}    ${TENANT_NAME}
+    ${vf_module_name}    ${service}    ${generic_vnfs}=    Orchestrate Demo VNF    Demonstration    ${service}   ${service}    ${TENANT_NAME}
     #Save For Delete
     Log to Console   Customer Name=${CUSTOMER_NAME}
     Log to Console   VNF Module Name=${vf_module_name}
-    ${model_invariant_id}=  Run MSO Get ModelInvariantId   ${SUITE_SERVICE_MODEL_NAME}  ${vf_module_label}
+    # Don't get from MSO for now due to SO-1186
+    # ${model_invariant_id}=  Run MSO Get ModelInvariantId   ${SUITE_SERVICE_MODEL_NAME}  ${vf_module_label}
+    ${model_invariant_id}=   Set Variable   ${EMPTY}
+    :for    ${vf_module}    in    @{generic_vnfs}
+    \    ${generic_vnf}=    Get From Dictionary    ${generic_vnfs}    ${vf_module}
+    \    ${model_invariant_id}=    Set Variable If    '${vf_module_label}' in '${vf_module}'    ${generic_vnf['model-invariant-id']}    ${model_invariant_id}
     Log to Console   ModelInvariantID=${model_invariant_id}
     ${status}   ${value}=   Run Keyword And Ignore Error  Update vVFWCL Policy   ${model_invariant_id}
     ${status}   ${value}=   Run Keyword And Ignore Error  APPC Mount Point    ${vf_module_name}
diff --git a/robot/resources/test_templates/vnf_orchestration_test_template.robot b/robot/resources/test_templates/vnf_orchestration_test_template.robot
index 26d8eef..e3c3b7f 100644
--- a/robot/resources/test_templates/vnf_orchestration_test_template.robot
+++ b/robot/resources/test_templates/vnf_orchestration_test_template.robot
@@ -67,6 +67,7 @@
     Set Test Variable   ${SERVICE_INSTANCE_ID}   ${service_instance_id}
     Validate Service Instance    ${service_instance_id}    ${service}      ${customer_name}
     ${vnflist}=   Get From Dictionary    ${GLOBAL_SERVICE_VNF_MAPPING}    ${service}
+    ${generic_vnfs}=    Create Dictionary
     :for   ${vnf}   in   @{vnflist}
     \   ${vnf_name}=    Catenate    Ete_${vnf}_${uuid}
     \   ${vf_module_name}=    Catenate    Vfmodule_Ete_${vnf}_${uuid}
@@ -77,13 +78,13 @@
     \   ${vf_module_type}   ${closedloop_vf_module}=   Preload Vnf    ${service_instance_id}   ${vnf_name}   ${vnf_type}   ${vf_module_name}    ${vf_module}    ${vnf}    ${uuid}
     \   ${vf_module_id}=   Create VID VNF module    ${service_instance_id}    ${vf_module_name}    ${lcp_region}    ${tenant}     ${vf_module_type}   ${CUSTOMER_NAME}   ${vnf_name}
     \   ${generic_vnf}=   Validate Generic VNF    ${vnf_name}    ${vnf_type}    ${service_instance_id}
-    \   VLB Closed Loop Hack   ${service}   ${generic_vnf}   ${closedloop_vf_module}
+    \   Set To Dictionary    ${generic_vnfs}    ${vf_module}    ${generic_vnf}
+    \   Run Keyword If   '${service}' == 'vLB'   VLB Closed Loop Hack   ${service}   ${generic_vnf}   ${closedloop_vf_module}
     \   Set Test Variable    ${STACK_NAME}   ${vf_module_name}
-    \   Append To List   ${STACK_NAMES}   ${STACK_NAME}
     #    TODO: Need to look at a better way to default ipv4_oam_interface  search for Heatbridge
-    \   Run Keyword and Ignore Error   Execute Heatbridge    ${vf_module_name}    ${service_instance_id}    ${vnf}  ipv4_oam_interface
-    \   Run Keyword and Ignore Error   Validate VF Module      ${vf_module_name}    ${vnf}
-    [Return]     ${vf_module_name}    ${service}
+    \   Execute Heatbridge    ${vf_module_name}    ${service_instance_id}    ${vnf}  ipv4_oam_interface
+    \   Validate VF Module      ${vf_module_name}    ${vnf}
+    [Return]     ${vf_module_name}    ${service}    ${generic_vnfs}
 
 
 Orchestrate Demo VNF
@@ -110,6 +111,7 @@
     Set Test Variable   ${SERVICE_INSTANCE_ID}   ${service_instance_id}
     Validate Service Instance    ${service_instance_id}    ${service}      ${customer_name}
     ${vnflist}=   Get From Dictionary    ${GLOBAL_SERVICE_VNF_MAPPING}    ${service}
+    ${generic_vnfs}=    Create Dictionary
     :for   ${vnf}   in   @{vnflist}
     \   ${vnf_name}=    Catenate    Ete_${vnf}_${uuid}
     \   ${vf_module_name}=    Catenate    Vfmodule_Demo_${vnf}_${uuid}
@@ -122,13 +124,13 @@
     \   ${vf_module_type}   ${closedloop_vf_module}=   Preload Vnf    ${service_instance_id}   ${vnf_name}   ${vnf_type}   ${vf_module_name}    ${vf_modules}    ${vnf}    ${uuid}
     \   ${vf_module_id}=   Create VID VNF module    ${service_instance_id}    ${vf_module_name}    ${lcp_region}    ${tenant}     ${vf_module_type}   ${CUSTOMER_NAME}   ${vnf_name}
     \   ${generic_vnf}=   Validate Generic VNF    ${vnf_name}    ${vnf_type}    ${service_instance_id}
-    \   VLB Closed Loop Hack   ${service}   ${generic_vnf}   ${closedloop_vf_module}
+    \   Set To Dictionary    ${generic_vnfs}    ${vf_module}    ${generic_vnf}
+    \   Run Keyword If   '${service}' == 'vLB'   VLB Closed Loop Hack   ${service}   ${generic_vnf}   ${closedloop_vf_module}
     \   Set Test Variable    ${STACK_NAME}   ${vf_module_name}
-    \   Append To List   ${STACK_NAMES}   ${STACK_NAME}
     #    TODO: Need to look at a better way to default ipv4_oam_interface  search for Heatbridge
-    \   Run Keyword and Ignore Error   Execute Heatbridge    ${vf_module_name}    ${service_instance_id}    ${vnf}  ipv4_oam_interface
-    \   Run Keyword and Ignore Error   Validate VF Module      ${vf_module_name}    ${vnf}
-    [Return]     ${vf_module_name}    ${service}
+    \   Execute Heatbridge    ${vf_module_name}    ${service_instance_id}    ${vnf}  ipv4_oam_interface
+    \   Validate VF Module      ${vf_module_name}    ${vnf}
+    [Return]     ${vf_module_name}    ${service}    ${generic_vnfs}
 
 
 Get VNF Type