blob: c1b872bd8645888ee193401e73aace086b0ea8ca [file] [log] [blame]
*** Settings ***
Documentation Test suite for Instance creation for multiple subscribers with same "s_tag" - Chameleon APIs
Suite Setup Read InputFile
Library Collections
Library String
Library OperatingSystem
Library XML
Library RequestsLibrary
Library HttpLibrary.HTTP
Library ../Framework/utils/utils.py
Library ../Framework/restApi.py
*** Variables ***
${PATHFILE} ${CURDIR}/data/Soak_ScaleVCPE.json
${SCALE_COUNT} 1
*** Test Cases ***
Test Post Subscriber Create
[Documentation] Tests creates subscribers based on the count
${service_specific_id}= utils.convertStringToInt ${service_specific_id}
:FOR ${i} IN RANGE ${SCALE_COUNT}
\ ${service_specific_id}= Evaluate ${service_specific_id} + 1
\ ${service_specific_id}= utils.convertToString ${service_specific_id}
\ &{subscriberDict}= Create Dictionary service_specific_id ${service_specific_id}
\ ${api_result}= restApi.ApiPost VOLT_SUBSCRIBER ${subscriberDict}
\ Should Be True ${api_result}
# Volt Tenant Creation
\ ${json_result}= restApi.ApiGet VOLT_SUBSCRIBER
\ Log ${json_result}
\ ${json_result_list}= Get From Dictionary ${json_result} items
\ ${getJsonDict}= utils.getDictFromListOfDict ${json_result_list} service_specific_id ${service_specific_id}
\ ${Subscriber_Id}= utils.getFieldValueFromDict ${getJsonDict} id
\ Log ${Subscriber_Id}
\ ${s_tag}= Evaluate ${s_tag} + 0
\ ${c_tag}= Evaluate ${c_tag} + 1
\ &{voltDict}= Create Dictionary s_tag ${s_tag} c_tag ${c_tag}
\ Log ${voltDict}
\ ${postResult}= restApi.ApiPost VOLT_TENANT ${voltDict}
\ Sleep 30
# Verifying GET operation after POST
\ ${get_result}= restApi.ApiGet VOLT_TENANT
\ ${get_result_list}= Get From Dictionary ${get_result} items
\ ${getJsonDict}= utils.getDictFromListofDict ${get_result_list} c_tag ${c_tag}
\ Log ${getJsonDict}
\ #${test_result}= utils.compare_dict ${voltDict} ${getJsonDict}
\ #Should Be True ${test_result}
\ ${Volt_Id}= Get From Dictionary ${getJsonDict} id
\ ${provided_links_ids_list}= utils.getFieldValueFromDict ${getJsonDict} provided_links_ids
\ Log ${provided_links_ids_list}
\ ${provided_links_ids}= Get From List ${provided_links_ids_list} 0
\ Log ${provided_links_ids}
# Get subscribed_links_ids from volttenant
\ ${subscribed_links_ids_list}= utils.getFieldValueFromDict ${getJsonDict} subscribed_links_ids
\ ${subscribed_links_ids}= Get From List ${subscribed_links_ids_list} 0
# Retrieve service links using provided links ID
\ ${getServiceLink}= restApi.ApiChameleonGet CH_CORE_SERVICELINK ${provided_links_ids}
\ ${provider_service_instance_id}= Get From Dictionary ${getServiceLink} provider_service_instance_id
# Update the subscriber_service_instance_id to the required subscriber_id to establish desired link
\ ${serviceDict}= Create Dictionary subscriber_service_instance_id=${Subscriber_Id}
\ ${result}= restApi.ApiChameleonPut CH_CORE_SERVICELINK ${serviceDict} ${provided_links_ids}
\ Sleep 30
\ Should Be True ${result}
# Validation of Instances
\ Log ${instanceList}
\ ${serviceLinkDict}= restApi.ApiChameleonGet CH_CORE_SERVICELINK ${subscribed_links_ids}
\ Log ${serviceLinkDict}
\ ${VSGTenant}= Get From Dictionary ${serviceLinkDict} provider_service_instance_id
# Retrieve VSGTenant to retrieve instance_id
\ ${getVSG_result}= restApi.ApiChameleonGet VSG_TENANT ${VSGTenant}
\ ${instance_id}= Get From Dictionary ${getVSG_result} instance_id
\ Append To List ${instanceList} ${instance_id}
# Wait for container to be created
\ Sleep 420
# Verify container creation within the VSG
\ ${nova_id}= Run . /opt/cord_profile/admin-openrc.sh; nova list --all-tenants | grep mysite_vsg-${instance_id} | awk '{print $2}'
\ ${compute_node}= Run . /opt/cord_profile/admin-openrc.sh; nova show ${nova_id} | grep :host | awk '{print $4}'
\ ${vsg_ip}= Run . /opt/cord_profile/admin-openrc.sh; nova show ${nova_id} | grep management | awk '{print $5}'
\ ${docker_container}= Run ssh -o ProxyCommand="ssh -W %h:%p -l ubuntu ${compute_node}" ubuntu@${vsg_ip} sudo docker ps | grep vsg-${s_tag}-${c_tag} | wc -l
\ Should Not Contain ${docker_container} 0
Log ${c_tag}
Log ${service_specific_id}
*** Keywords ***
Read InputFile
${inputDict}= utils.readFile ${PATHFILE}
Log To Console \n ${inputDict}
${service_specific_id}= Get Json Value ${inputDict} /service_specific_id
Log \n ${service_specific_id}
${s_tag} = Get Json Value ${inputDict} /s_tag
Log \n ${s_tag}
${c_tag} = Get Json Value ${inputDict} /c_tag
Log \n ${c_tag}
Set Suite Variable ${service_specific_id}
Set Suite Variable ${s_tag}
Set Suite Variable ${c_tag}
@{instanceList}= Create List
Set Suite Variable @{instanceList}