Updates for cloud_config, SDC health, VID timing
Based on contribution from Steve Smokowski
Issue-ID: INT-621
Change-Id: I82828397bc0b9701fb0fa90123ac4cdd3b8d327d
Signed-off-by: Brian Freeman <bf1936@att.com>
diff --git a/robot/assets/templates/so/create_cloud_config.template b/robot/assets/templates/so/create_cloud_config.template
new file mode 100644
index 0000000..969a8b0
--- /dev/null
+++ b/robot/assets/templates/so/create_cloud_config.template
@@ -0,0 +1,17 @@
+{
+ "id": "${site_name}",
+ "region_id": "${region_id}",
+ "aic_version": "2.5",
+ "clli": "${clli}",
+ "identityService": {
+ "identity_url": "${identity_url}",
+ "mso_id": "${mso_id}",
+ "mso_pass": "${mso_pass}",
+ "admin_tenant": "${admin_tenant}",
+ "member_role": "${member_role}",
+ "tenant_meta_data": true,
+ "id": "${identity_id}",
+ "identity_server_type": "${identity_server_type}",
+ "identity_authentication_type": "${authentication_type}"
+ }
+}
diff --git a/robot/resources/asdc_interface.robot b/robot/resources/asdc_interface.robot
index 8a5aa3f..c49f942 100644
--- a/robot/resources/asdc_interface.robot
+++ b/robot/resources/asdc_interface.robot
@@ -80,11 +80,13 @@
Loop Over Check Catalog Service Distributed
[Arguments] ${catalog_service_id}
- # SO watchdog timeout is 300 seconds
- : FOR ${CHECK_INDEX} IN RANGE 15
- \ ${status} ${_} = Run Keyword And Ignore Error Check Catalog Service Distributed ${catalog_service_id}
+ # SO watchdog timeout is 300 seconds need buffer
+ ${dist_status}= Set Variable FAIL
+ : FOR ${CHECK_INDEX} IN RANGE 20
+ \ ${status} ${_} = Run Keyword And Ignore Error Check Catalog Service Distributed ${catalog_service_id} ${dist_status}
\ Sleep 20s
\ Return From Keyword If '${status}'=='PASS'
+ \ Exit For Loop If '${dist_status}'=='EXIT'
Should Be Equal As Strings ${status} PASS
Setup ASDC Catalog Resource
@@ -398,7 +400,7 @@
[Return] ${resp.json()}
Check Catalog Service Distributed
[Documentation] gets an asdc catalog Service distrbution
- [Arguments] ${catalog_service_uuid}
+ [Arguments] ${catalog_service_uuid} ${dist_status}
${dist_resp}= Get Catalog Service Distribution ${catalog_service_uuid}
Should Be Equal As Strings ${dist_resp['distributionStatusOfServiceList'][0]['deployementStatus']} Distributed
${det_resp}= Get Catalog Service Distribution Details ${dist_resp['distributionStatusOfServiceList'][0]['distributionID']}
@@ -411,6 +413,8 @@
\ ${SO_COMPLETE} Set Variable If (('${ELEMENT['status']}' == 'DISTRIBUTION_COMPLETE_OK')) or ('${SO_COMPLETE}'=='TRUE') TRUE
\ Exit For Loop If ('${SO_COMPLETE}'=='TRUE')
\ Exit For Loop If ('${ELEMENT['status']}' == 'DISTRIBUTION_COMPLETE_ERROR')
+ \ ${dist_status}= Set Variable If (('${ELEMENT['status']}' == 'COMPONENT_DONE_ERROR') and ('${ELEMENT['omfComponentID']}' == 'aai-ml')) EXIT
+ \ Exit For Loop If (('${ELEMENT['status']}' == 'COMPONENT_DONE_ERROR') and ('${ELEMENT['omfComponentID']}' == 'aai-ml'))
Should Be True ( '${SO_COMPLETE}'=='TRUE') SO Test
Get Catalog Service Distribution Details
[Documentation] gets an asdc catalog Service distrbution details
@@ -424,13 +428,14 @@
${uuid}= Generate UUID
${headers}= Create Dictionary Accept=application/json Content-Type=application/json X-TransactionId=${GLOBAL_APPLICATION_ID}-${uuid} X-FromAppId=${GLOBAL_APPLICATION_ID}
${resp}= Get Request asdc ${ASDC_HEALTH_CHECK_PATH} headers=${headers}
+ # only test for HTTP 200 to determine SDC Health. SDC_DE_HEALTH is informational
Should Be Equal As Strings ${resp.status_code} 200 SDC DOWN
${SDC_DE_HEALTH}= Catenate DOWN
@{ITEMS}= Copy List ${resp.json()['componentsInfo']}
:FOR ${ELEMENT} IN @{ITEMS}
\ Log ${ELEMENT['healthCheckStatus']}
\ ${SDC_DE_HEALTH} Set Variable If (('DE' in '${ELEMENT['healthCheckComponent']}') and ('${ELEMENT['healthCheckStatus']}' == 'UP')) or ('${SDC_DE_HEALTH}'=='UP') UP
- Should Be Equal As Strings ${SDC_DE_HEALTH} UP SDC_DE DOWN
+ Log Console SDC DMaaP Interface Health: ${SDC_DE_HEALTH}
Run ASDC Get Request
[Documentation] Runs an ASDC get request
[Arguments] ${data_path} ${user}=${ASDC_DESIGNER_USER_ID} ${MY_ASDC_BE_ENDPOINT}=${ASDC_BE_ENDPOINT}
diff --git a/robot/resources/so/create_cloud_config.robot b/robot/resources/so/create_cloud_config.robot
new file mode 100644
index 0000000..be57812
--- /dev/null
+++ b/robot/resources/so/create_cloud_config.robot
@@ -0,0 +1,42 @@
+*** Settings ***
+Documentation Create Cloud Config
+
+Resource ../json_templater.robot
+Resource ../so_interface.robot
+Library OperatingSystem
+Library Collections
+
+
+*** Variables ***
+${CLOUD_CONFIG_PATH} /cloudSite
+
+${SYSTEM USER} robot-ete
+${SO_ADD_CLOUD_CONFIG}= robot/assets/templates/so/create_cloud_config.template
+
+*** Keywords ***
+Create Cloud Configuration
+ [Documentation] Creates a cloud configuration in SO, so it knows how to talk to an openstack cloud
+ [Arguments] ${site_name} ${region_id} ${clli} ${identity_id} ${identity_url} ${mso_id} ${mso_pass} ${admin_tenant} ${member_role} ${identity_server_type} ${authentication_type}
+ ${arguments}= Create Dictionary site_name=${site_name} region_id=${region_id} clli=${clli} identity_id=${identity_id} identity_url=${identity_url} mso_id=${mso_id} mso_pass=${mso_pass} admin_tenant=${admin_tenant} member_role=${member_role} identity_server_type=${identity_server_type} authentication_type=${authentication_type}
+ ${data}= Fill JSON Template File ${SO_ADD_CLOUD_CONFIG} ${arguments}
+ ${get_resp}= Run SO Catalog Post request ${CLOUD_CONFIG_PATH}/${site_name} ${data}
+
+ ${get_resp}= Run Keyword If '${get_resp.status_code}'=='404' Update Cloud Configuration ${site_name} ${region_id} ${clli} ${identity_id} ${identity_url} ${mso_id} ${mso_pass} ${admin_tenant} ${member_role} ${identity_server_type} ${authentication_type}
+ Should Be Equal As Strings ${get_resp.status_code} 200
+
+Update Cloud Configuration
+ [Documentation] Updates a cloud configuration in SO
+ [Arguments] ${site_name} ${region_id} ${clli} ${identity_id} ${identity_url} ${mso_id} ${mso_pass} ${admin_tenant} ${member_role} ${identity_server_type} ${authentication_type}
+ ${arguments}= Create Dictionary site_name=${site_name} region_id=${region_id} clli=${clli} identity_id=${identity_id} identity_url=${identity_url} mso_id=${mso_id} mso_pass=${mso_pass} admin_tenant=${admin_tenant} member_role=${member_role} identity_server_type=${identity_server_type} authentication_type=${authentication_type}
+ ${data}= Fill JSON Template File ${SO_ADD_CLOUD_CONFIG} ${arguments}
+ ${get_resp}= Run SO Catalog Put request ${CLOUD_CONFIG_PATH}/${site_name} ${data}
+ Should Be Equal As Strings ${get_resp.status_code} 200
+ [Return] ${get_resp}
+
+Get Cloud Configuration
+ [Documentation] Gets cloud configuration in SO
+ [Arguments] ${site_name}
+ ${get_resp}= Run MSO Catalog Get request ${CLOUD_CONFIG_PATH}/${site_name}
+ Should Be Equal As Strings ${get_resp.status_code} 200
+
+
diff --git a/robot/resources/so_interface.robot b/robot/resources/so_interface.robot
index 23ab941..0378caf 100644
--- a/robot/resources/so_interface.robot
+++ b/robot/resources/so_interface.robot
@@ -113,6 +113,30 @@
Log Received response from mso ${resp.text}
[Return] ${resp}
+Run SO Catalog Post request
+ [Documentation] Runs an SO post request
+ [Arguments] ${data_path} ${data} ${so_port}=
+ ${auth}= Create List ${GLOBAL_MSO_CATDB_USERNAME} ${GLOBAL_MSO_PASSWORD}
+ Log Creating session ${SO_CATDB_ENDPOINT}
+ ${session}= Create Session so_catdb ${SO_CATDB_ENDPOINT} auth=${auth}
+ ${uuid}= Generate UUID
+ ${headers}= Create Dictionary Accept=application/json Content-Type=application/json X-TransactionId=${GLOBAL_APPLICATION_ID}-${uuid} X-FromAppId=${GLOBAL_APPLICATION_ID}
+ ${resp}= Post Request so_catdb ${data_path} data=${data} headers=${headers}
+ Log Received response from so_catdb ${resp.text}
+ [Return] ${resp}
+
+Run SO Catalog Put request
+ [Documentation] Runs an SO put request
+ [Arguments] ${data_path} ${data} ${so_port}=
+ ${auth}= Create List ${GLOBAL_MSO_CATDB_USERNAME} ${GLOBAL_MSO_PASSWORD}
+ Log Creating session ${SO_CATDB_ENDPOINT}
+ ${session}= Create Session so_catdb ${SO_CATDB_ENDPOINT} auth=${auth}
+ ${uuid}= Generate UUID
+ ${headers}= Create Dictionary Accept=application/json Content-Type=application/json X-TransactionId=${GLOBAL_APPLICATION_ID}-${uuid} X-FromAppId=${GLOBAL_APPLICATION_ID}
+ ${resp}= Put Request so_catdb ${data_path} data=${data} headers=${headers}
+ Log Received response from so_catdb ${resp.text}
+ [Return] ${resp}
+
Run MSO Delete request
[Documentation] Runs an MSO Delete request
[Arguments] ${data_path} ${data}
diff --git a/robot/resources/vid/create_vid_vnf.robot b/robot/resources/vid/create_vid_vnf.robot
index 5997b07..fe0d3e1 100644
--- a/robot/resources/vid/create_vid_vnf.robot
+++ b/robot/resources/vid/create_vid_vnf.robot
@@ -109,6 +109,8 @@
Input Text xpath=//input[@parameter-id='instanceName'] ${vf_module_name}
Select From List By Label xpath=//select[@parameter-id='lcpRegion'] ${lcp_region}
Select From List By Label xpath=//select[@parameter-id='tenant'] ${tenant}
+ Wait Until Element Is Visible xpath=//input[@parameter-id='sdncPreload'] ${GLOBAL_VID_UI_TIMEOUT_SHORT}
+ Wait Until Element Is Enabled xpath=//input[@parameter-id='sdncPreload'] ${GLOBAL_VID_UI_TIMEOUT_SHORT}
Select Checkbox xpath=//input[@parameter-id='sdncPreload']
Click Element button=Confirm
Wait Until Element Contains xpath=//pre[@class = 'log ng-binding'] requestState timeout=${GLOBAL_VID_UI_TIMEOUT_LONG}
diff --git a/robot/testsuites/create-cloud-config.robot b/robot/testsuites/create-cloud-config.robot
new file mode 100644
index 0000000..3c1277c
--- /dev/null
+++ b/robot/testsuites/create-cloud-config.robot
@@ -0,0 +1,17 @@
+*** Settings ***
+Documentation SO Cloud Config Test Cases
+Test Timeout 1 minute
+
+
+Resource ../resources/so/create_cloud_config.robot
+
+
+*** Test Cases ***
+Create Cloud Config Test
+ [TAGS] mso cloudconfig
+ # Run Create Cloud Configuration RegionOne RegionOne RegionOne DEFAULT_KEYSTONE identify_url:http://10.12.25.2:5000/v2.0 mso_id:demo mso_pass:encrypted_password admin_tenant:1e097c6713e74fd7ac8e4295e605ee1e member_role:admin identity_server_type:KEYSTONE identity_authentication_type:USERNAME_PASSWORD
+ Create Cloud Configuration ${GLOBAL_INJECTED_REGION} ${GLOBAL_INJECTED_REGION} ${GLOBAL_INJECTED_REGION} DEFAULT_KEYSTONE ${GLOBAL_INJECTED_KEYSTONE}/${GLOBAL_INJECTED_OPENSTACK_KEYSTONE_API_VERSION} ${GLOBAL_INJECTED_OPENSTACK_USERNAME} ${GLOBAL_INJECTED_OPENSTACK_API_KEY} ${GLOBAL_INJECTED_OPENSTACK_TENANT_ID} admin KEYSTONE USERNAME_PASSWORD
+
+Get Cloud Config Test
+ [TAGS] mso cloudconfig
+ Get Cloud Configuration ${GLOBAL_INJECTED_REGION}