blob: 1243a1930619e488283fdbd71c1aa6e8be7d838e [file] [log] [blame]
DR695Hccff30b2017-02-17 18:44:24 -05001*** Settings ***
2Documentation The main interface for interacting with Openstack Keystone API. It handles low level stuff like managing the authtoken and Openstack required fields
3Library OpenstackLibrary
4Library RequestsLibrary
jf986099c63292017-03-09 15:28:42 -05005Library UUID
6Library Collections
DR695Hccff30b2017-02-17 18:44:24 -05007Library OperatingSystem
8Resource ../global_properties.robot
9Resource ../json_templater.robot
10Resource openstack_common.robot
11
12*** Variables ***
13${OPENSTACK_KEYSTONE_API_VERSION} /v2.0
14${OPENSTACK_KEYSTONE_AUTH_PATH} /tokens
15${OPENSTACK_KEYSTONE_AUTH_BODY_FILE} robot/assets/templates/keystone_get_auth.template
16${OPENSTACK_KEYSTONE_TENANT_PATH} /tenants
17
18*** Keywords ***
19Run Openstack Auth Request
20 [Documentation] Runs an Openstack Auth Request and returns the token and service catalog. you need to include the token in future request's x-auth-token headers. Service catalog describes what can be called
21 [Arguments] ${alias} ${username}= ${password}=
22 ${username} ${password}= Set Openstack Credentials ${username} ${password}
DR695Hbf5a3a32017-06-30 13:09:57 -040023 ${session}= Create Session keystone ${GLOBAL_INJECTED_KEYSTONE} verify=True
DR695Hccff30b2017-02-17 18:44:24 -050024 ${uuid}= Generate UUID
25 ${data_template}= OperatingSystem.Get File ${OPENSTACK_KEYSTONE_AUTH_BODY_FILE}
Jerry Flood46a20552017-06-08 11:52:40 -040026 ${arguments}= Create Dictionary username=${username} password=${password} tenantName=${GLOBAL_OPENSTACK_TENANT_NAME}
DR695Hccff30b2017-02-17 18:44:24 -050027 ${data}= Fill JSON Template ${data_template} ${arguments}
28 ${data_path}= Catenate ${OPENSTACK_KEYSTONE_API_VERSION}${OPENSTACK_KEYSTONE_AUTH_PATH}
29 ${headers}= Create Dictionary Accept=application/json Content-Type=application/json X-TransactionId=${GLOBAL_APPLICATION_ID}-${uuid} X-FromAppId=${GLOBAL_APPLICATION_ID}
30 Log Sending authenticate post request ${data_path} with headers ${headers} and data ${data}
31 ${resp}= Post Request keystone ${data_path} data=${data} headers=${headers}
Gary Wuc761cec2017-04-19 09:52:19 -070032 Should Be True 200 <= ${resp.status_code} < 300
jf986099c63292017-03-09 15:28:42 -050033 Save Openstack Auth ${alias} ${resp.text}
DR695Hccff30b2017-02-17 18:44:24 -050034 Log Received response from keystone ${resp.text}
jf986099c63292017-03-09 15:28:42 -050035
DR695Hccff30b2017-02-17 18:44:24 -050036Get Openstack Tenants
37 [Documentation] Returns all the openstack tenant info
38 [Arguments] ${alias}
jf986099c63292017-03-09 15:28:42 -050039 ${resp}= Internal Get Openstack With Region ${alias} ${GLOBAL_OPENSTACK_KEYSTONE_SERVICE_TYPE} region= url_ext=${OPENSTACK_KEYSTONE_TENANT_PATH} data_path=
DR695Hccff30b2017-02-17 18:44:24 -050040 [Return] ${resp.json()}
jf986099c63292017-03-09 15:28:42 -050041
DR695Hccff30b2017-02-17 18:44:24 -050042Get Openstack Tenant
43 [Documentation] Returns the openstack tenant info for the specified tenantid
44 [Arguments] ${alias} ${tenant_id}
jf986099c63292017-03-09 15:28:42 -050045 ${resp}= Internal Get Openstack With Region ${alias} ${GLOBAL_OPENSTACK_KEYSTONE_SERVICE_TYPE} region= url_ext=${OPENSTACK_KEYSTONE_TENANT_PATH} data_path=/${tenant_id}
DR695Hccff30b2017-02-17 18:44:24 -050046 [Return] ${resp.json()}
jf986099c63292017-03-09 15:28:42 -050047
DR695Hccff30b2017-02-17 18:44:24 -050048Set Openstack Credentials
49 [Arguments] ${username} ${password}
jf986099c63292017-03-09 15:28:42 -050050 Return From Keyword If '${username}' != '' ${username} ${password}
51 ${user} ${pass}= Get Openstack Credentials
52 [Return] ${user} ${pass}
53
54Get Openstack Credentials
Jerry Flood028e1852017-03-16 16:44:17 -040055 [Return] ${GLOBAL_INJECTED_OPENSTACK_USERNAME} ${GLOBAL_INJECTED_OPENSTACK_PASSWORD}