Update A&AI api to v11 and create complex
Issue: TEST-34
Change-Id: Ibac7f78390f517e3d3876ec0adff97d1136b2f28
Signed-off-by: Jerry Flood <jf9860@att.com>
diff --git a/robot/assets/templates/aai/add_complex_body.template b/robot/assets/templates/aai/add_complex_body.template
new file mode 100644
index 0000000..136a620
--- /dev/null
+++ b/robot/assets/templates/aai/add_complex_body.template
@@ -0,0 +1,42 @@
+ {
+ "complex-name": "${complex_name}",
+ "physical-location-id": "${physical_location_id}",
+ "data-center-code": "example-data-center-code-val-5556",
+ "identity-url": "example-identity-url-val-56898",
+ "physical-location-type": "example-physical-location-type-val-7608",
+ "street1": "example-street1-val-34205",
+ "street2": "example-street2-val-99210",
+ "city": "example-city-val-27150",
+ "state": "example-state-val-59487",
+ "postal-code": "example-postal-code-val-68871",
+ "country": "example-country-val-94173",
+ "region": "example-region-val-13893",
+ "latitude": "example-latitude-val-89101",
+ "longitude": "example-longitude-val-66229",
+ "elevation": "example-elevation-val-30253",
+ "lata": "example-lata-val-46073",
+ "relationship-list": {
+ "relationship": [
+ {
+ "related-to": "cloud-region",
+ "related-link": "/aai/v11/cloud-infrastructure/cloud-regions/cloud-region/CloudOwner/RegionOne",
+ "relationship-data": [
+ {
+ "relationship-key": "cloud-region.cloud-owner",
+ "relationship-value": "${cloud_owner}"
+ },
+ {
+ "relationship-key": "cloud-region.cloud-region-id",
+ "relationship-value": "${region}"
+ }
+ ],
+ "related-to-property": [
+ {
+ "property-key": "cloud-region.owner-defined-type",
+ "property-value": "${owner_defined_type}"
+ }
+ ]
+ }
+ ]
+ }
+ }
diff --git a/robot/resources/aai/aai_interface.robot b/robot/resources/aai/aai_interface.robot
index 790fa66..b72103d 100644
--- a/robot/resources/aai/aai_interface.robot
+++ b/robot/resources/aai/aai_interface.robot
@@ -7,7 +7,7 @@
*** Variables ***
${AAI_HEALTH_PATH} /aai/util/echo?action=long
-${VERSIONED_INDEX_PATH} /aai/v8
+${VERSIONED_INDEX_PATH} /aai/v11
${AAI_FRONTEND_ENDPOINT} ${GLOBAL_AAI_SERVER_PROTOCOL}://${GLOBAL_INJECTED_AAI1_IP_ADDR}:${GLOBAL_AAI_SERVER_PORT}
diff --git a/robot/resources/aai/create_complex.robot b/robot/resources/aai/create_complex.robot
new file mode 100644
index 0000000..e1cc227
--- /dev/null
+++ b/robot/resources/aai/create_complex.robot
@@ -0,0 +1,71 @@
+*** Settings ***
+Documentation Create A&AI Customer API.
+...
+... Create A&AI Customer API
+
+Resource ../json_templater.robot
+Resource aai_interface.robot
+Library OperatingSystem
+Library Collections
+
+
+
+*** Variables ***
+${COMPLEX_INDEX_PATH} /aai/v11
+${ROOT_COMPLEXES_PATH} /cloud-infrastructure/complexes
+${ROOT_COMPLEX_PATH} /cloud-infrastructure/complexes/complex
+
+${SYSTEM USER} robot-ete
+${AAI_ADD_COMPLEX_BODY}= robot/assets/templates/aai/add_complex_body.template
+
+*** Keywords ***
+Inventory Complex If Not Exists
+ [Documentation] Creates a service in A&AI if it doesn't exist
+ [Arguments] ${complex_name} ${physical_location_id} ${cloud_owner} ${region} ${owner_defined_type}
+ ${get_resp}= Run A&AI Get Request ${COMPLEX_INDEX_PATH}${ROOT_COMPLEX_PATH}/${physical_location_id}
+ Return From Keyword If '${get_resp.status_code}' == '200'
+ Inventory Complex ${complex_name} ${physical_location_id} ${cloud_owner} ${region} ${owner_defined_type}
+
+Inventory Complex
+ [Documentation] Inventorys a COmplex in A&AI
+ [Arguments] ${complex_name} ${physical_location_id} ${cloud_owner} ${region} ${owner_defined_type}
+ ${arguments}= Create Dictionary complex_name=${complex_name}
+ Set To Dictionary ${arguments} physical_location_id=${physical_location_id}
+ Set To Dictionary ${arguments} cloud_owner=${cloud_owner}
+ Set To Dictionary ${arguments} region=${region}
+ Set To Dictionary ${arguments} owner_defined_type=${owner_defined_type}
+ ${data}= Fill JSON Template File ${AAI_ADD_COMPLEX_BODY} ${arguments}
+ ${put_resp}= Run A&AI Put Request ${COMPLEX_INDEX_PATH}${ROOT_COMPLEX_PATH}/${physical_location_id} ${data}
+ ${status_string}= Convert To String ${put_resp.status_code}
+ Should Match Regexp ${status_string} ^(201|200)$
+
+Delete Complex If Exists
+ [Documentation] Removes a complex
+ [Arguments] ${physical_location_id}
+ ${get_resp}= Run A&AI Get Request ${COMPLEX_INDEX_PATH}${ROOT_COMPLEX_PATH}/${physical_location_id}
+ Run Keyword If '${get_resp.status_code}' == '200' Delete Zone Exists ${physical_location_id} ${get_resp.json()}
+
+Delete Complex
+ [Arguments] ${physical_location_id} ${json}
+ ${resource_version}= Catenate ${json['resource-version']}
+ ${put_resp}= Run A&AI Delete Request ${COMPLEX_INDEX_PATH}${ROOT_COMPLEX_PATH}/${physical_location_id} ${resource_version}
+ Should Be Equal As Strings ${put_resp.status_code} 204
+
+Get Complex
+ [Documentation] Return a complex
+ [Arguments] ${physical_location_id}
+ ${resp}= Run A&AI Get Request ${COMPLEX_INDEX_PATH}${ROOT_COMPLEX_PATH}/${physical_location_id}
+ Should Be Equal As Strings ${resp.status_code} 200
+ [Return] ${resp.json()}
+
+Get Complexes
+ [Documentation] Return all complexes
+ [Arguments]
+ ${resp}= Run A&AI Get Request ${COMPLEX_INDEX_PATH}${ROOT_COMPLEXES_PATH}
+ Should Be Equal As Strings ${resp.status_code} 200
+ Log ${resp.json()}
+ [Return] ${resp.json()}
+
+
+
+
diff --git a/robot/resources/aai/create_customer.robot b/robot/resources/aai/create_customer.robot
index 7ebda39..fec5884 100644
--- a/robot/resources/aai/create_customer.robot
+++ b/robot/resources/aai/create_customer.robot
@@ -10,32 +10,32 @@
*** Variables ***
-${INDEX PATH} /aai/v8
+${INDEX PATH} /aai/v11
${ROOT_CUSTOMER_PATH} /business/customers/customer/
${SYSTEM USER} robot-ete
${A&AI ADD CUSTOMER BODY} robot/assets/templates/aai/add_customer.template
-*** Keywords ***
+*** Keywords ***
Create Customer
- [Documentation] Creates a customer in A&AI
- [Arguments] ${customer_name} ${customer_id} ${customer_type} ${service_type} ${clouder_owner} ${cloud_region_id} ${tenant_id}
- ${data_template}= OperatingSystem.Get File ${A&AI ADD CUSTOMER BODY}
- ${arguments}= Create Dictionary subscriber_name=${customer_name} global_customer_id=${customer_id} subscriber_type=${customer_type} cloud_owner1=${clouder_owner} cloud_region_id1=${cloud_region_id} tenant_id1=${tenant_id} service1=${service_type}
- ${data}= Fill JSON Template ${data_template} ${arguments}
+ [Documentation] Creates a customer in A&AI
+ [Arguments] ${customer_name} ${customer_id} ${customer_type} ${service_type} ${clouder_owner} ${cloud_region_id} ${tenant_id}
+ ${data_template}= OperatingSystem.Get File ${A&AI ADD CUSTOMER BODY}
+ ${arguments}= Create Dictionary subscriber_name=${customer_name} global_customer_id=${customer_id} subscriber_type=${customer_type} cloud_owner1=${clouder_owner} cloud_region_id1=${cloud_region_id} tenant_id1=${tenant_id} service1=${service_type}
+ ${data}= Fill JSON Template ${data_template} ${arguments}
${put_resp}= Run A&AI Put Request ${INDEX PATH}${ROOT_CUSTOMER_PATH}${customer_id} ${data}
Should Be Equal As Strings ${put_resp.status_code} 201
[Return] ${put_resp.status_code}
-*** Keywords ***
+*** Keywords ***
Delete Customer
- [Documentation] Deletes a customer in A&AI
+ [Documentation] Deletes a customer in A&AI
[Arguments] ${customer_id}
- ${get_resp}= Run A&AI Get Request ${INDEX PATH}${ROOT_CUSTOMER_PATH}${customer_id}
+ ${get_resp}= Run A&AI Get Request ${INDEX PATH}${ROOT_CUSTOMER_PATH}${customer_id}
Run Keyword If '${get_resp.status_code}' == '200' Delete Customer Exists ${customer_id} ${get_resp.json()['resource-version']}
-
-*** Keywords ***
+
+*** Keywords ***
Delete Customer Exists
- [Documentation] Deletes a customer in A&AI
- [Arguments] ${customer_id} ${resource_version_id}
+ [Documentation] Deletes a customer in A&AI
+ [Arguments] ${customer_id} ${resource_version_id}
${put_resp}= Run A&AI Delete Request ${INDEX PATH}${ROOT_CUSTOMER_PATH}${customer_id} ${resource_version_id}
- Should Be Equal As Strings ${put_resp.status_code} 204
+ Should Be Equal As Strings ${put_resp.status_code} 204
diff --git a/robot/resources/aai/create_service.robot b/robot/resources/aai/create_service.robot
index 38aef3f..bcf14e3 100644
--- a/robot/resources/aai/create_service.robot
+++ b/robot/resources/aai/create_service.robot
@@ -12,56 +12,56 @@
*** Variables ***
-${INDEX PATH} /aai/v8
+${INDEX PATH} /aai/v11
${ROOT_SERVICE_PATH} /service-design-and-creation/services
${SYSTEM USER} robot-ete
${AAI_ADD_SERVICE_BODY}= robot/assets/templates/aai/add_service_body.template
-*** Keywords ***
+*** Keywords ***
Create Service If Not Exists
- [Documentation] Creates a service in A&AI if it doesn't exist
+ [Documentation] Creates a service in A&AI if it doesn't exist
[Arguments] ${service_type}
${dict}= Get Services
- ${status} ${value}= Run Keyword And Ignore Error Dictionary Should Contain Key ${dict} ${service_type}
+ ${status} ${value}= Run Keyword And Ignore Error Dictionary Should Contain Key ${dict} ${service_type}
Run Keyword If '${status}' == 'FAIL' Create Service ${service_type}
-
+
Create Service
- [Documentation] Creates a service in A&AI
+ [Documentation] Creates a service in A&AI
[Arguments] ${service_type}
- ${uuid}= Generate UUID
- ${data_template}= OperatingSystem.Get File ${AAI_ADD_SERVICE_BODY}
- ${arguments}= Create Dictionary service_type=${service_type} UUID=${uuid}
+ ${uuid}= Generate UUID
+ ${data_template}= OperatingSystem.Get File ${AAI_ADD_SERVICE_BODY}
+ ${arguments}= Create Dictionary service_type=${service_type} UUID=${uuid}
${data}= Fill JSON Template ${data_template} ${arguments}
${fullpath}= Catenate ${INDEX PATH}${ROOT_SERVICE_PATH}/service/${uuid}
${put_resp}= Run A&AI Put Request ${fullpath} ${data}
Should Be Equal As Strings ${put_resp.status_code} 201
[Return] ${put_resp.status_code}
-
+
Delete Service If Exists
- [Documentation] Deletes a service in A&AI if it exists
+ [Documentation] Deletes a service in A&AI if it exists
[Arguments] ${service_type}
${dict}= Get Services
- ${status} ${value}= Run Keyword And Ignore Error Dictionary Should Contain Key ${dict} ${service_type}
+ ${status} ${value}= Run Keyword And Ignore Error Dictionary Should Contain Key ${dict} ${service_type}
Run Keyword If '${status}' == 'PASS' Delete Service ${dict['${service_type}']}
Delete Service
- [Documentation] Delete passed service in A&AI
+ [Documentation] Delete passed service in A&AI
[Arguments] ${dict}
- ${uuid}= Get From Dictionary ${dict} service-id
+ ${uuid}= Get From Dictionary ${dict} service-id
${resource_version}= Get From Dictionary ${dict} resource-version
${fullpath}= Catenate ${INDEX PATH}${ROOT_SERVICE_PATH}/service/${uuid}
- ${resp}= Run A&AI Delete Request ${fullpath} ${resource_version}
+ ${resp}= Run A&AI Delete Request ${fullpath} ${resource_version}
Should Be Equal As Strings ${resp.status_code} 204
-
+
Get Services
- [Documentation] Creates a service in A&AI
+ [Documentation] Creates a service in A&AI
${resp}= Run A&AI Get Request ${INDEX PATH}${ROOT_SERVICE_PATH}
- ${dict}= Create Dictionary
+ ${dict}= Create Dictionary
${status} ${value}= Run Keyword And Ignore Error Should Be Equal As Strings ${resp.status_code} 200
- Run Keyword If '${status}' == 'PASS' Update Service Dictionary ${dict} ${resp.json()}
+ Run Keyword If '${status}' == 'PASS' Update Service Dictionary ${dict} ${resp.json()}
[Return] ${dict}
Update Service Dictionary
@@ -69,7 +69,7 @@
${list}= Evaluate ${json}['service']
:for ${map} in @{list}
\ ${status} ${service_type}= Run Keyword And Ignore Error Get From Dictionary ${map} service-description
- \ Run Keyword If '${status}' == 'PASS' Set To Dictionary ${dict} ${service_type}=${map}
+ \ Run Keyword If '${status}' == 'PASS' Set To Dictionary ${dict} ${service_type}=${map}
Log ${dict}
diff --git a/robot/resources/aai/create_tenant.robot b/robot/resources/aai/create_tenant.robot
index 756882e..95f1c25 100644
--- a/robot/resources/aai/create_tenant.robot
+++ b/robot/resources/aai/create_tenant.robot
@@ -11,7 +11,7 @@
*** Variables ***
-${INDEX PATH} /aai/v8
+${INDEX PATH} /aai/v11
${ROOT_TENANT_PATH} /cloud-infrastructure/cloud-regions/cloud-region/
${SYSTEM USER} robot-ete
diff --git a/robot/resources/aai/create_zone.robot b/robot/resources/aai/create_zone.robot
index 995db3e..09d6ea6 100644
--- a/robot/resources/aai/create_zone.robot
+++ b/robot/resources/aai/create_zone.robot
@@ -48,7 +48,7 @@
Get Zone
[Documentation] Return zone
- [Arguments] ${zone_id}
+ [Arguments] ${zone_id}
${resp}= Run A&AI Get Request ${ZONE_INDEX_PATH}${ROOT_ZONE_PATH}/${zone_id}
Should Be Equal As Strings ${resp.status_code} 200
[Return] ${resp.json()}
diff --git a/robot/resources/aai/network.robot b/robot/resources/aai/network.robot
index a42461e..6bda4e2 100644
--- a/robot/resources/aai/network.robot
+++ b/robot/resources/aai/network.robot
@@ -13,30 +13,29 @@
Resource ../json_templater.robot
*** Variables ***
-${INDEX PATH} /aai/v8
+${INDEX PATH} /aai/v11
${GENERIC_QUERY_PATH} /search/generic-query?
${SYSTEM USER} robot-ete
${CUSTOMER SPEC PATH} /business/customers/customer/
${SERVICE SUBSCRIPTIONS} /service-subscriptions/service-subscription/
${SERVICE INSTANCE} /service-instances?service-instance-name=
-${SERVCE INSTANCE TEMPLATE} robot/assets/templates/aai/service_subscription.template
+${SERVCE INSTANCE TEMPLATE} robot/assets/templates/aai/service_subscription.template
-*** Keywords ***
+*** Keywords ***
Validate Network
- [Documentation] Query and Validates A&AI Service Instance
- [Arguments] ${service_instance_name} ${service_type} ${customer_id}
+ [Documentation] Query and Validates A&AI Service Instance
+ [Arguments] ${service_instance_name} ${service_type} ${customer_id}
${resp}= Run A&AI Get Request ${INDEX PATH}${CUSTOMER SPEC PATH}${CUSTOMER ID}${SERVICE SUBSCRIPTIONS}${service_type}${SERVICE INSTANCE}${service_instance_name}
Dictionary Should Contain Value ${resp.json()['service-instance'][0]} ${service_instance_name}
-
-
-*** Keywords ***
+
+
+*** Keywords ***
Create Network
- [Documentation] Query and Validates A&AI Service Instance
- [Arguments] ${CUSTOMER ID}
+ [Documentation] Query and Validates A&AI Service Instance
+ [Arguments] ${CUSTOMER ID}
${json_string}= Catenate { "service-type": "VDNS" , "service-subscriptions":[{"service-instance-id":"instanceid123","service-instance-name":"VDNS"}]}
${put_resp}= Run A&AI Put Request ${INDEX PATH}${CUSTOMER SPEC PATH}${CUSTOMER ID}${SERVICE SUBSCRIPTIONS}/VDNS ${json_string}
Should Be Equal As Strings ${put_resp.status_code} 201
- [Return] ${put_resp.status_code}
-
-
\ No newline at end of file
+ [Return] ${put_resp.status_code}
+
diff --git a/robot/resources/aai/service_instance.robot b/robot/resources/aai/service_instance.robot
index f2cf7d8..34ab1ea 100644
--- a/robot/resources/aai/service_instance.robot
+++ b/robot/resources/aai/service_instance.robot
@@ -17,7 +17,7 @@
Resource ../aai/aai_interface.robot
*** Variables ***
-${INDEX PATH} /aai/v8
+${INDEX PATH} /aai/v11
${GENERIC_QUERY_PATH} /search/generic-query?
${SYSTEM USER} robot-ete
${CUSTOMER SPEC PATH} /business/customers/customer/
diff --git a/robot/resources/aai/volume_group.robot b/robot/resources/aai/volume_group.robot
index 9582201..40674a5 100644
--- a/robot/resources/aai/volume_group.robot
+++ b/robot/resources/aai/volume_group.robot
@@ -13,19 +13,18 @@
Resource ../json_templater.robot
*** Variables ***
-${INDEX PATH} /aai/v8
+${INDEX PATH} /aai/v11
${GENERIC_QUERY_PATH} /search/generic-query?
${SYSTEM USER} robot-ete
${CUSTOMER SPEC PATH} /business/customers/customer/
${SERVICE SUBSCRIPTIONS} /service-subscriptions/service-subscription/
${SERVICE INSTANCE} /service-instances?service-instance-name=
-${SERVCE INSTANCE TEMPLATE} robot/assets/templates/aai/service_subscription.template
+${SERVCE INSTANCE TEMPLATE} robot/assets/templates/aai/service_subscription.template
-*** Keywords ***
-Validate Volume Group
- [Arguments] ${service_instance_name} ${service_type} ${customer_id}
+*** Keywords ***
+Validate Volume Group
+ [Arguments] ${service_instance_name} ${service_type} ${customer_id}
${resp}= Run A&AI Get Request ${INDEX PATH}${CUSTOMER SPEC PATH}${CUSTOMER ID}${SERVICE SUBSCRIPTIONS}${service_type}${SERVICE INSTANCE}${service_instance_name}
Dictionary Should Contain Value ${resp.json()['service-instance'][0]} ${service_instance_name}
-
-
\ No newline at end of file
+
diff --git a/robot/resources/global_properties.robot b/robot/resources/global_properties.robot
index 6d82042..ac91d24 100644
--- a/robot/resources/global_properties.robot
+++ b/robot/resources/global_properties.robot
@@ -20,6 +20,9 @@
${GLOBAL_OPENSTACK_KEYSTONE_SERVICE_TYPE} identity
${GLOBAL_OPENSTACK_STACK_DEPLOYMENT_TIMEOUT} 600s
${GLOBAL_AAI_CLOUD_OWNER} CloudOwner
+${GLOBAL_AAI_CLOUD_OWNER_DEFINED_TYPE} OwnerType
+${GLOBAL_AAI_COMPLEX_NAME} clli1
+${GLOBAL_AAI_PHYSICAL_LOCATION_ID} clli1
${GLOBAL_BUILD_NUMBER} 0
${GLOBAL_VID_UI_TIMEOUT_SHORT} 20s
${GLOBAL_VID_UI_TIMEOUT_MEDIUM} 60s
diff --git a/robot/resources/test_templates/vnf_orchestration_test_template.robot b/robot/resources/test_templates/vnf_orchestration_test_template.robot
index 1d293ec..ceba3a7 100644
--- a/robot/resources/test_templates/vnf_orchestration_test_template.robot
+++ b/robot/resources/test_templates/vnf_orchestration_test_template.robot
@@ -11,6 +11,7 @@
Resource ../aai/create_zone.robot
Resource ../aai/create_customer.robot
+Resource ../aai/create_complex.robot
Resource ../aai/create_tenant.robot
Resource ../aai/create_service.robot
Resource ../openstack/neutron_interface.robot
@@ -91,6 +92,7 @@
:FOR ${region} IN @{REGIONS}
\ Inventory Tenant If Not Exists ${cloud_owner} ${region} ${cloud_type} ${owner_defined_type} ${cloud_region_version} ${cloud_zone} ${TENANT_ID} ${TENANT_NAME}
Inventory Zone If Not Exists
+ Inventory Complex If Not Exists ${GLOBAL_AAI_COMPLEX_NAME} ${GLOBAL_AAI_PHYSICAL_LOCATION_ID} ${GLOBAL_AAI_CLOUD_OWNER} ${GLOBAL_INJECTED_REGION} ${GLOBAL_AAI_CLOUD_OWNER_DEFINED_TYPE}
Log Orchestrate VNF setup complete
Initialize Tenant From Openstack