调用openstack api需要先发送认证请求,需要获取Token ID和Tenant 使用trystack的话需要获得username,password,tenant,name和认证地址等选项,获取方法如下:
1. 获取api密码
登录成功后点击右上角的用户名选择设置,然后选择左侧的“API Password”,然后点击“Request API password”按钮,获取你的 Api密码,获取之后自行记住。然后你需要退出重新登录,可以直接用用户名:facebook*** 密码就是刚刚获取的登录。
2. 获取认证地址,tenant name等信息
点击左侧dashboard的Compute选项中的访问和安全,选择右侧的“访问&安全”选项,然后点击“下载OpenStack RC文件”按钮,下载文件至本地。
下载完成后代开下载的文件,需要的信息已经在下图圈出。
3. 获取其他信息
认证获取Token ID 和 Tenant ID(其实tenant id上图的openstack RC文件中已经给出来了)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
|
#!/usr/bin/python
#-*- coding: UTF-8 -*-
import urllib, httplib, json, urlparse
FLOATING_IP = '8.21.28.*' #你的认证ip
TENANT_NAME = 'your tenant name'
USERNAME = 'your username'
PASSWD = 'your password'
url = FLOATING_IP + ':5000'
try:
params = '{"auth": {"tenantName":"' + TENANT_NAME + '", "passwordCredentials":{"username":"' + USERNAME + '", "password":"' + PASSWD + '"}}}'
headers = {'Content-Type': 'application/json'}
conn = httplib.HTTPConnection(url)
conn.request('POST','/v2.0/tokens',params,headers)
response = conn.getresponse()
data = response.read()
dd = json.loads(data)
if 'error' in dd:
print 'Error,Openstack Authorized Failed!'
conn.close()
exit()
conn.close()
except Exception as e:
print url + '/v2.0/tokens', e
conn.close()
exit()
token_id = dd['access']['token']['id']
tenant_id = dd['access']['token']['tenant']['id']
print "token : " + token_id
print "tenant id : " + tenant_id
|