2 Documentation The interface for interacting with Openstack Heat API.
3 Library ONAPLibrary.Openstack
4 Library RequestsLibrary
5 Library OperatingSystem
7 Library ONAPLibrary.Templating
8 Resource ../global_properties.robot
9 Resource openstack_common.robot
12 ${OPENSTACK_HEAT_API_VERSION} /v1
13 ${OPENSTACK_HEAT_STACK_PATH} /stacks
14 ${OPENSTACK_HEAT_ADD_STACK_TEMPLATE} openstack/heat_add_stack.jinja
19 [Documentation] Returns the openstack stacks info
21 ${resp}= Internal Get Openstack ${alias} ${GLOBAL_OPENSTACK_HEAT_SERVICE_TYPE} ${OPENSTACK_HEAT_STACK_PATH}
22 [Return] ${resp.json()}
25 [Documentation] Returns the openstack stacks info for the given stack name
26 [Arguments] ${alias} ${stack_name}
27 ${resp}= Internal Get Openstack ${alias} ${GLOBAL_OPENSTACK_HEAT_SERVICE_TYPE} ${OPENSTACK_HEAT_STACK_PATH} /${stack_name}
28 [Return] ${resp.json()}
30 Create Openstack Stack
31 [Documentation] Takes an openstack heat yaml and returns the created stack
32 [Arguments] ${alias} ${request}
33 ${resp}= Internal Post Openstack ${alias} ${GLOBAL_OPENSTACK_HEAT_SERVICE_TYPE} ${OPENSTACK_HEAT_STACK_PATH} data_path= data=${request}
34 [Return] ${resp.json()}
36 Make Add Stack Request
37 [Documentation] Makes a JSON Add Stack Request from YAML template and env files
38 [Arguments] ${name} ${template} ${env}
39 ${templatedata}= Template Yaml To Json ${template}
40 ${envdata}= Env Yaml To Json ${env}
41 ${dict}= Create Dictionary template=${templatedata} parameters=${envdata} stack_name=${name}
42 Create Environment heat ${GLOBAL_TEMPLATE_FOLDER}
43 ${request}= Apply Template heat ${OPENSTACK_HEAT_ADD_STACK_TEMPLATE} ${dict}
47 Delete Openstack Stack
48 [Documentation] Deletes and Openstack Stack for the passed name and id
49 [Arguments] ${alias} ${stack_name} ${stack_id}
50 ${data_path}= Catenate /${stack_name}/${stack_id}
51 ${resp}= Internal Delete Openstack ${alias} ${GLOBAL_OPENSTACK_HEAT_SERVICE_TYPE} ${OPENSTACK_HEAT_STACK_PATH} data_path=${data_path}
52 Should Be Equal As Strings 204 ${resp.status_code}
56 [Documentation] Gets all of the information necessary for tearing down an existing Openstack Stack
57 [Arguments] ${alias} ${stack_name}
58 ${resp}= Internal Get Openstack ${alias} ${GLOBAL_OPENSTACK_HEAT_SERVICE_TYPE} ${OPENSTACK_HEAT_STACK_PATH} /${stack_name}
59 ${result}= Stack Info Parse ${resp.json()}
63 [Documentation] Gets all of the template information of an existing Openstack Stack
64 [Arguments] ${alias} ${stack_name} ${stack_id}
65 ${data_path}= Catenate /${stack_name}/${stack_id}/template
66 ${resp}= Internal Get Openstack ${alias} ${GLOBAL_OPENSTACK_HEAT_SERVICE_TYPE} ${OPENSTACK_HEAT_STACK_PATH} ${data_path}
67 ${template}= Catenate ${resp.json()}
71 [Documentation] Gets all of the resources of an existing Openstack Stack
72 [Arguments] ${alias} ${stack_name} ${stack_id}
73 ${data_path}= Catenate /${stack_name}/${stack_id}/resources
74 ${resp}= Internal Get Openstack ${alias} ${GLOBAL_OPENSTACK_HEAT_SERVICE_TYPE} ${OPENSTACK_HEAT_STACK_PATH} ${data_path}
75 [Return] ${resp.json()}
77 Wait for Stack to Be Deployed
78 [Arguments] ${alias} ${stack_name} ${timeout}=${GLOBAL_OPENSTACK_STACK_DEPLOYMENT_TIMEOUT}
79 ${stack_info}= Wait Until Keyword Succeeds ${timeout} 30 sec Get Deployed Stack ${alias} ${stack_name}
80 ${status}= Get From Dictionary ${stack_info} stack_status
81 Should Be Equal ${status} CREATE_COMPLETE
82 [Return] ${stack_info}
85 [Arguments] ${alias} ${stack_name}
86 ${stack_info}= Get Stack Details ${alias} ${stack_name}
87 ${status}= Get From Dictionary ${stack_info} stack_status
88 Should Not Be Equal ${status} CREATE_IN_PROGRESS
89 [Return] ${stack_info}