summaryrefslogtreecommitdiffstats
path: root/robot/resources/openstack/heat_interface.robot
diff options
context:
space:
mode:
authorDR695H <dr695h@att.com>2017-02-17 18:44:24 -0500
committerDR695H <dr695h@att.com>2017-02-17 18:44:41 -0500
commitccff30b6e325f359879595998e83bbfe6624c851 (patch)
treec98f950f33baa71d21b091b6b10ca3ffb7700467 /robot/resources/openstack/heat_interface.robot
parent234c2226d8cb3368a7af3d280a5ec280782bed63 (diff)
Initial checkin of EopenECOMP testsuite
Change-Id: I64a2b6d8cf66169829866b73b3d26a4ff59b0a42 Signed-off-by: DR695H <dr695h@att.com>
Diffstat (limited to 'robot/resources/openstack/heat_interface.robot')
-rw-r--r--robot/resources/openstack/heat_interface.robot93
1 files changed, 93 insertions, 0 deletions
diff --git a/robot/resources/openstack/heat_interface.robot b/robot/resources/openstack/heat_interface.robot
new file mode 100644
index 00000000..74c7aac8
--- /dev/null
+++ b/robot/resources/openstack/heat_interface.robot
@@ -0,0 +1,93 @@
+*** Settings ***
+Documentation The interface for interacting with Openstack Heat API.
+Library OpenstackLibrary
+Library RequestsLibrary
+Library UUID
+Library OperatingSystem
+Library HEATUtils
+Library StringTemplater
+Library Collections
+Resource ../global_properties.robot
+Resource ../json_templater.robot
+Resource openstack_common.robot
+
+*** Variables ***
+${OPENSTACK_HEAT_API_VERSION} /v1
+${OPENSTACK_HEAT_STACK_PATH} /stacks
+${OPENSTACK_HEAT_ADD_STACK_TEMPLATE} robot/assets/templates/heat_add_stack.template
+
+
+*** Keywords ***
+Get Openstack Stacks
+ [Documentation] Returns the openstack stacks info
+ [Arguments] ${alias}
+ ${resp}= Internal Get Openstack ${alias} ${GLOBAL_OPENSTACK_HEAT_SERVICE_TYPE} ${GLOBAL_OPENSTACK_SERVICE_REGION} ${OPENSTACK_HEAT_STACK_PATH}
+ [Return] ${resp.json()}
+
+Get Openstack Stack
+ [Documentation] Returns the openstack stacks info for the given stack name
+ [Arguments] ${alias} ${stack_name}
+ ${resp}= Internal Get Openstack ${alias} ${GLOBAL_OPENSTACK_HEAT_SERVICE_TYPE} ${GLOBAL_OPENSTACK_SERVICE_REGION} ${OPENSTACK_HEAT_STACK_PATH} /${stack_name}
+ [Return] ${resp.json()}
+
+Create Openstack Stack
+ [Documentation] Takes an openstack heat yaml and returns the created stack
+ [Arguments] ${alias} ${request}
+ ${resp}= Internal Post Openstack ${alias} ${GLOBAL_OPENSTACK_HEAT_SERVICE_TYPE} ${GLOBAL_OPENSTACK_SERVICE_REGION} ${OPENSTACK_HEAT_STACK_PATH} data_path= data=${request}
+ [Return] ${resp.json()}
+
+Make Add Stack Request
+ [Documentation] Makes a JSON Add Stack Request from YAML template and env files
+ [Arguments] ${name} ${template} ${env}
+ ${templatedata}= Template Yaml To Json ${template}
+ ${envdata}= Env Yaml To Json ${env}
+ ${dict}= Create Dictionary template=${templatedata} parameters=${envdata} stack_name=${name}
+ ${resp}= OperatingSystem.Get File ${OPENSTACK_HEAT_ADD_STACK_TEMPLATE}
+ ${request}= Template String ${resp} ${dict}
+ Log $request
+ [Return] ${request}
+
+Delete Openstack Stack
+ [Documentation] Deletes and Openstack Stack for the passed name and id
+ [Arguments] ${alias} ${stack_name} ${stack_id}
+ ${data_path}= Catenate /${stack_name}/${stack_id}
+ ${resp}= Internal Delete Openstack ${alias} ${GLOBAL_OPENSTACK_HEAT_SERVICE_TYPE} ${GLOBAL_OPENSTACK_SERVICE_REGION} ${OPENSTACK_HEAT_STACK_PATH} data_path=${data_path}
+ Should Be Equal As Strings 204 ${resp.status_code}
+ [Return] ${resp}
+
+Get Stack Details
+ [Documentation] Gets all of the information necessary for tearing down an existing Openstack Stack
+ [Arguments] ${alias} ${stack_name}
+ ${resp}= Internal Get Openstack ${alias} ${GLOBAL_OPENSTACK_HEAT_SERVICE_TYPE} ${GLOBAL_OPENSTACK_SERVICE_REGION} ${OPENSTACK_HEAT_STACK_PATH} /${stack_name}
+ ${result}= Stack Info Parse ${resp.json()}
+ [Return] ${result}
+
+Get Stack Template
+ [Documentation] Gets all of the template information of an existing Openstack Stack
+ [Arguments] ${alias} ${stack_name} ${stack_id}
+ ${data_path}= Catenate /${stack_name}/${stack_id}/template
+ ${resp}= Internal Get Openstack ${alias} ${GLOBAL_OPENSTACK_HEAT_SERVICE_TYPE} ${GLOBAL_OPENSTACK_SERVICE_REGION} ${OPENSTACK_HEAT_STACK_PATH} ${data_path}
+ ${template}= Catenate ${resp.json()}
+ [Return] ${template}
+
+Get Stack Resources
+ [Documentation] Gets all of the resources of an existing Openstack Stack
+ [Arguments] ${alias} ${stack_name} ${stack_id}
+ ${data_path}= Catenate /${stack_name}/${stack_id}/resources
+ ${resp}= Internal Get Openstack ${alias} ${GLOBAL_OPENSTACK_HEAT_SERVICE_TYPE} ${GLOBAL_OPENSTACK_SERVICE_REGION} ${OPENSTACK_HEAT_STACK_PATH} ${data_path}
+ [Return] ${resp.json()}
+
+Wait for Stack to Be Deployed
+ [Arguments] ${alias} ${stack_name} ${timeout}=600s
+ ${stack_info}= Wait Until Keyword Succeeds ${timeout} 30 sec Get Deployed Stack ${alias} ${stack_name}
+ ${status}= Get From Dictionary ${stack_info} stack_status
+ Should Be Equal ${status} CREATE_COMPLETE
+ [Return] ${stack_info}
+
+Get Deployed Stack
+ [Arguments] ${alias} ${stack_name}
+ ${stack_info}= Get Stack Details ${alias} ${stack_name}
+ ${status}= Get From Dictionary ${stack_info} stack_status
+ Should Not Be Equal ${status} CREATE_IN_PROGRESS
+ [Return] ${stack_info}
+ \ No newline at end of file