[CORD-2926] Scaling vSGs on PODs
Change-Id: I5420a517c81a330898b1c538d09e9100d6845ff3
diff --git a/src/test/cord-api/Tests/Soak_ScaleVCPE.txt b/src/test/cord-api/Tests/Soak_ScaleVCPE.txt
index 8d2f18a..c1b872b 100644
--- a/src/test/cord-api/Tests/Soak_ScaleVCPE.txt
+++ b/src/test/cord-api/Tests/Soak_ScaleVCPE.txt
@@ -11,8 +11,6 @@
Library ../Framework/restApi.py
*** Variables ***
-${USER} admin
-${PASSWORD} admin
${PATHFILE} ${CURDIR}/data/Soak_ScaleVCPE.json
${SCALE_COUNT} 1
diff --git a/src/test/cord-api/Tests/Soak_ScaleVSG.txt b/src/test/cord-api/Tests/Soak_ScaleVSG.txt
new file mode 100644
index 0000000..ca7b3fd
--- /dev/null
+++ b/src/test/cord-api/Tests/Soak_ScaleVSG.txt
@@ -0,0 +1,98 @@
+*** 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_ScaleVSG.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} + 1
+ \ ${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 ${s_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}
diff --git a/src/test/cord-api/Tests/data/Soak_ScaleVSG.json b/src/test/cord-api/Tests/data/Soak_ScaleVSG.json
new file mode 100644
index 0000000..50ee691
--- /dev/null
+++ b/src/test/cord-api/Tests/data/Soak_ScaleVSG.json
@@ -0,0 +1,5 @@
+{
+ "s_tag" : 700,
+ "c_tag" : 700,
+ "service_specific_id" : 700
+}