Add create VNFC to Robot 65/78165/1
authorMarco Platania <platania@research.att.com>
Fri, 8 Feb 2019 23:25:19 +0000 (15:25 -0800)
committerMarco Platania <platania@research.att.com>
Fri, 8 Feb 2019 23:25:19 +0000 (15:25 -0800)
- Add template file and create functions to AAI section
- Modify heatbridge to create VNFCs

Change-Id: I66ec14241568e58f9d59bae8fb08c081d6a72822
Issue-ID: TEST-137
Signed-off-by: Marco Platania <platania@research.att.com>
robot/assets/templates/aai/add_vnfc_body.template [new file with mode: 0644]
robot/resources/aai/create_vnfc.robot [new file with mode: 0644]
robot/resources/heatbridge.robot

diff --git a/robot/assets/templates/aai/add_vnfc_body.template b/robot/assets/templates/aai/add_vnfc_body.template
new file mode 100644 (file)
index 0000000..88ababd
--- /dev/null
@@ -0,0 +1,7 @@
+{
+"vnfc-name": "${vnfc_name}",
+"nfc-naming-code": "${vnfc_nc}",
+"nfc-function": "${vnfc_func}",
+"in-maint": "false",
+"is-closed-loop-disabled": "false"
+}
\ No newline at end of file
diff --git a/robot/resources/aai/create_vnfc.robot b/robot/resources/aai/create_vnfc.robot
new file mode 100644 (file)
index 0000000..f140406
--- /dev/null
@@ -0,0 +1,52 @@
+*** Settings ***
+Documentation     Create VNFC in AAI
+
+Resource    ../json_templater.robot
+Resource    aai_interface.robot
+Library    OperatingSystem
+Library    Collections
+
+
+*** Variables ***
+${INDEX_PATH}     /aai/v14
+${ROOT_PATH}      /network/vnfcs/vnfc
+
+${SYSTEM USER}    robot-ete
+${AAI_ADD_VNFC_BODY}=    robot/assets/templates/aai/add_vnfc_body.template
+
+*** Keywords ***
+Create VNFC If Not Exists
+    [Documentation]    Creates VNFC in A&AI if it doesn't exist
+    [Arguments]    ${vnfc_name}    ${vnfc_nc}    ${vnfc_func}
+    ${get_resp}=    Run A&AI Get Request     ${INDEX_PATH}${ROOT_PATH}/${vnfc_name}
+    Return From Keyword If    '${get_resp.status_code}' == '200'
+    Create VNFC    ${vnfc_name}    ${vnfc_nc}    ${vnfc_func}
+
+Create VNFC
+    [Documentation]    Creates VNFC in A&AI
+    [Arguments]    ${vnfc_name}    ${vnfc_nc}    ${vnfc_func}
+    ${arguments}=    Create Dictionary     vnfc_name=${vnfc_name}    vnfc_nc=${vnfc_nc}    vnfc_func=${vnfc_func}
+    ${data}=    Fill JSON Template File    ${AAI_ADD_VNFC_BODY}    ${arguments}
+    ${put_resp}=    Run A&AI Put Request     ${INDEX_PATH}${ROOT_PATH}/${vnfc_name}    ${data}
+    ${status_string}=    Convert To String    ${put_resp.status_code}
+    Should Match Regexp    ${status_string}     ^(201|200)$
+
+Delete VNFC If Exists
+    [Documentation]    Removes VNFC from AAI if it exists
+    [Arguments]    ${vnfc_name}
+    ${get_resp}=    Run A&AI Get Request     ${INDEX_PATH}${ROOT_PATH}/${vnfc_name}
+    Run Keyword If    '${get_resp.status_code}' == '200'    Delete VNFC    ${vnfc_name}    ${get_resp.json()}
+
+Delete VNFC
+    [Documentation]    Removes VNFC from AAI
+    [Arguments]    ${vnfc_name}    ${json}
+    ${resource_version}=   Catenate   ${json['resource-version']}
+    ${put_resp}=    Run A&AI Delete Request    ${INDEX_PATH}${ROOT_PATH}/${vnfc_name}    ${resource_version}
+    Should Be Equal As Strings  ${put_resp.status_code}         204
+
+Get VNFC
+    [Documentation]    Return VNFC
+    [Arguments]    ${vnfc_name}
+    ${resp}=    Run A&AI Get Request     ${INDEX_PATH}${ROOT_PATH}/${vnfc_name}
+    Should Be Equal As Strings  ${resp.status_code}     200
+    [Return]  ${resp.json()}
\ No newline at end of file
index 2b271ee..c0b9a91 100644 (file)
@@ -10,6 +10,7 @@ Resource    openstack/heat_interface.robot
 Resource    openstack/nova_interface.robot
 Resource    openstack/neutron_interface.robot
 Resource    aai/aai_interface.robot
+Resource    aai/create_vnfc.robot
 
 *** Variables ***
 ${MULTIPART_PATH}  /bulkadd
@@ -21,6 +22,7 @@ ${IMAGE_URI}   ${BASE_URI}/images/image/\${image_id}
 ${FLAVOR_URI}   ${BASE_URI}/flavors/flavor/\${flavor}
 ${VSERVER_URI}   ${BASE_URI}/tenants/tenant/\${tenant}/vservers/vserver/\${vserver_id}
 ${L_INTERFACE_URI}   ${VSERVER_URI}/l-interfaces/l-interface/\${linterface_id}
+${VSERVER_NAME}    \${vserver_name}
 
 #******************** Test Case Variables ****************
 ${REVERSE_HEATBRIDGE}
@@ -41,6 +43,11 @@ Execute Heatbridge
     ${KeyIsPresent}=    Run Keyword And Return Status       Dictionary Should Contain Key       ${stack_info}      ${ipv4_oam_address}
     ${ipv4_vnf_address}=   Run Keyword If      ${KeyIsPresent}     Get From Dictionary  ${stack_info}      ${ipv4_oam_address}
     Run Set VNF Params  ${vnf_id}  ${ipv4_vnf_address}  ACTIVE  Active
+    ### Create a vnfc for each vServer ###
+    ${stack_resources}=    Get Stack Resources    auth    ${stack_name}    ${stack_id}
+    ${resource_list}=    Get From Dictionary    ${stack_resources}    resources
+    :FOR   ${resource}    in    @{resource_list}
+    \    Run Keyword If    '${resource['resource_type']}' == 'OS::Nova::Server'    Run Create VNFC    auth    ${resource['physical_resource_id']}    ${service}
     ${keystone_api_version}=    Run Keyword If    '${GLOBAL_INJECTED_OPENSTACK_KEYSTONE_API_VERSION}'==''    Get KeystoneAPIVersion
     ...    ELSE    Set Variable   ${GLOBAL_INJECTED_OPENSTACK_KEYSTONE_API_VERSION}
     ${url}   ${path}=   Get Keystone Url And Path   ${keystone_api_version}
@@ -58,6 +65,18 @@ Execute Heatbridge
     Set Test Variable   ${REVERSE_HEATBRIDGE}   ${reverse_heatbridge}
     Run Validation Query    ${stack_info}    ${service}
 
+Run Create VNFC
+    [Documentation]    Create a VNFC for a vServer
+    [Arguments]    ${alias}     ${vserver_id}    ${service}
+    ${resp}=    Get Openstack Server By Id   ${alias}     ${vserver_id}
+    Return From Keyword If   '${resp.status_code}' != '200'
+    ${info}=   Set Variable   ${resp.json()}
+    ${keys}=    Create Dictionary
+    Set To Dictionary   ${keys}   vserver_name=${info['server']['name']}
+    ${vnfc_name}=   Template String    ${VSERVER_NAME}    ${keys}
+    ${vnfc_nc}=    Set Variable  ${service}
+    ${vnfc_func}=    Set Variable  ${service}
+    Create VNFC If Not Exists    ${vnfc_name}     ${vnfc_nc}     ${vnfc_func}
 
 Run Validation Query
     [Documentation]    Run A&AI query to validate the bulk add