OpenStackClient 是 OpenStack 提供的一个命令行CLI工具. OpenStackClient支持两种身份验证方式
- 通过用户名/密码验证
- 通过Token验证
OpenStack Client项目的wiki
https://wiki.openstack.org/wiki/OpenStackClient
下面通过两个例子, 演示怎样通过这两种不同的验证方式, 使用OpenStack Client获取nova的flavor列表
通过用户名密码验证方式, 使用OpenStackClient
把用户名(os-username), 密码(os-password)和租户(os-tenant-name)作为参数, 放在命令行当中, 获取 flavor 列表.
$ openstack --debug --os-tenant-name admin --os-username admin --os-password passw0rd --os-auth-url http://127.0.0.1:5000/v2.0/ flavor list
DEBUG: openstackclient.shell volume API version 1
DEBUG: openstackclient.shell image API version 1
DEBUG: openstackclient.shell compute API version 2
DEBUG: openstackclient.shell network API version 2
DEBUG: openstackclient.shell object_store API version 1
DEBUG: openstackclient.shell command groupopenstack.compute.v2
DEBUG: openstackclient.shell command groupopenstack.network.v2
DEBUG: openstackclient.shell command groupopenstack.image.v1
DEBUG: openstackclient.shell command groupopenstack.volume.v1
DEBUG: openstackclient.shell command groupopenstack.identity.v2_0
DEBUG: openstackclient.shell command groupopenstack.object_store.v1
DEBUG: stevedore.extension found extensionEntryPoint.parse('table = cliff.formatters.table:TableFormatter')
DEBUG: stevedore.extension found extensionEntryPoint.parse('csv = cliff.formatters.commaseparated:CSVLister')
DEBUG: openstackclient.shell prepare_to_run_command ListFlavor
DEBUG: openstackclient.shell validating authenticationoptions
DEBUG: openstackclient.identity.client Instantiatingidentity client: <class'openstackclient.identity.client.IdentityClientv2_0'>
DEBUG: openstackclient.identity.client Using password auth
DEBUG: keystoneclient.auth.identity.v2 Making authenticationrequest to http://127.0.0.1:5000/v2.0/tokens
INFO: requests.packages.urllib3.connectionpool Starting newHTTP connection (1): 127.0.0.1
DEBUG: requests.packages.urllib3.connectionpool "POST/v2.0/tokens HTTP/1.1" 200 7080
DEBUG: openstackclient.compute.v2.flavor.ListFlavortake_action(Namespace(columns=[], formatter='table', max_width=0,quote_mode='nonnumeric'))
DEBUG: openstackclient.compute.client Instantiating computeclient: <class 'novaclient.v1_1.client.Client'>
REQ: curl -i'http://127.0.0.1:8774/v2/71c452812dc845e3a0ddeefed3e4c030/flavors/detail' -XGET -H "Accept: application/json" -H "User-Agent:python-novaclient" -H "X-Auth-Project-Id: admin" -H"X-Auth-Token: {SHA1}3e4acf89dcfc1397ed3607453c40549f6cc714ad"
RESP: [200] {'date': 'Tue, 12 Aug 2014 09:28:48 GMT','content-length': '3289', 'content-type': 'application/json','x-compute-request-id': 'req-343a7a78-0671-46ef-bad5-8bcd1c3d5de6'}
RESP BODY: {"flavors": [{"name":"m1.tiny", "links": [{"href":"http://127.0.0.1:8774/v2/71c452812dc845e3a0ddeefed3e4c030/flavors/1","rel": "self"}, {"href":"http://127.0.0.1:8774/71c452812dc845e3a0ddeefed3e4c030/flavors/1","rel": "bookmark"}], "ram": 512,"OS-FLV-DISABLED:disabled": false, "vcpus": 1,"swap": "", "os-flavor-access:is_public": true,"rxtx_factor": 1.0, "OS-FLV-EXT-DATA:ephemeral": 0,"disk": 1, "id": "1"}, {