| *** 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} |
| |