aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--robot/assets/templates/aai/add_vnfc_body.template7
-rw-r--r--robot/resources/aai/create_vnfc.robot52
-rw-r--r--robot/resources/heatbridge.robot19
3 files changed, 78 insertions, 0 deletions
diff --git a/robot/assets/templates/aai/add_vnfc_body.template b/robot/assets/templates/aai/add_vnfc_body.template
new file mode 100644
index 00000000..88ababd3
--- /dev/null
+++ b/robot/assets/templates/aai/add_vnfc_body.template
@@ -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
index 00000000..f140406d
--- /dev/null
+++ b/robot/resources/aai/create_vnfc.robot
@@ -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
diff --git a/robot/resources/heatbridge.robot b/robot/resources/heatbridge.robot
index 2b271ee2..c0b9a910 100644
--- a/robot/resources/heatbridge.robot
+++ b/robot/resources/heatbridge.robot
@@ -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