openstack horizon api step by step

先记录一下,晚上回家写详情!

openstack/keystone-client/

openstack/keystone/ 这两个好好看看就知道user是怎么回事了,还有怎么读的配置文件也知道了。

openstack/horizon/api

openstack/python-novaclient/novaclient

openstack/nova/nova

DEBUG:horizon.api.keystone:Creating a new keystoneclient connection to http://127.0.0.1:5000/v2.0.

DEBUG:keystoneclient.client:REQ: curl -i http://127.0.0.1:5000/v2.0/tokens -X POST -H "Content-Type: application/json" -H "User-Agent: python-keystoneclient"

DEBUG:keystoneclient.client:REQ BODY: {"auth": {"passwordCredentials": {"username": "admin", "password": "xxxxxxx"}}}

DEBUG:keystoneclient.client:RESP: {'date': 'Wed, 11 Jul 2012 07:14:09 GMT', 'content-type': 'application/json', 'content-length': '89', 'status': '401', 'vary': 'X-Auth-Token'}

RESP BODY: {"error": {"message": "Invalid user / password", "code": 401, "title": "Not Authorized"}}

ERROR:keystoneclient.client:Request returned failure status.

DEBUG:horizon.api.nova:novaclient connection created using token "ff6b18841204450c89f15b4d7a876331" and url "http://172.16.200.1:8774/v2/d0e560fbf7964495a1ff3f3f762b5348"

DEBUG:novaclient.client:REQ: curl -i http://172.16.200.1:8774/v2/d0e560fbf7964495a1ff3f3f762b5348/flavors/detail -X GET -H "X-Auth-Project-Id: d0e560fbf7964495a1ff3f3f762b5348" -H "User-Agent: python-novaclient" -H "Accept: application/json" -H "X-Auth-Token: ff6b18841204450c89f15b4d7a876331"

DEBUG:novaclient.client:RESP:{'status': '200', 'content-length': '1738', 'content-location': u'http://172.16.200.1:8774/v2/d0e560fbf7964495a1ff3f3f762b5348/flavors/detail', 'x-compute-request-id': 'req-0dbcea40-d828-435a-a6d2-bfa348d5ccb9', 'date': 'Wed, 11 Jul 2012 07:27:18 GMT', 'content-type': 'application/json'} {"flavors": [{"vcpus": 2, "disk": 10, "name": "m1.medium", "links": [{"href": "http://172.16.200.1:8774/v2/d0e560fbf7964495a1ff3f3f762b5348/flavors/3", "rel": "self"}, {"href": "http://172.16.200.1:8774/d0e560fbf7964495a1ff3f3f762b5348/flavors/3", "rel": "bookmark"}], "rxtx_factor": 1.0, "OS-FLV-EXT-DATA:ephemeral": 40, "ram": 4096, "id": "3", "swap": ""}, {"vcpus": 4, "disk": 10, "name": "m1.large", "links": [{"href": "http://172.16.200.1:8774/v2/d0e560fbf7964495a1ff3f3f762b5348/flavors/4", "rel": "self"}, {"href": "http://172.16.200.1:8774/d0e560fbf7964495a1ff3f3f762b5348/flavors/4", "rel": "bookmark"}], "rxtx_factor": 1.0, "OS-FLV-EXT-DATA:ephemeral": 80, "ram": 8192, "id": "4", "swap": ""}, {"vcpus": 1, "disk": 0, "name": "m1.tiny", "links": [{"href": "http://172.16.200.1:8774/v2/d0e560fbf7964495a1ff3f3f762b5348/flavors/1", "rel": "self"}, {"href": "http://172.16.200.1:8774/d0e560fbf7964495a1ff3f3f762b5348/flavors/1", "rel": "bookmark"}], "rxtx_factor": 1.0, "OS-FLV-EXT-DATA:ephemeral": 0, "ram": 512, "id": "1", "swap": ""}, {"vcpus": 8, "disk": 10, "name": "m1.xlarge", "links": [{"href": "http://172.16.200.1:8774/v2/d0e560fbf7964495a1ff3f3f762b5348/flavors/5", "rel": "self"}, {"href": "http://172.16.200.1:8774/d0e560fbf7964495a1ff3f3f762b5348/flavors/5", "rel": "bookmark"}], "rxtx_factor": 1.0, "OS-FLV-EXT-DATA:ephemeral": 160, "ram": 16384, "id": "5", "swap": ""}, {"vcpus": 1, "disk": 10, "name": "m1.small", "links": [{"href": "http://172.16.200.1:8774/v2/d0e560fbf7964495a1ff3f3f762b5348/flavors/2", "rel": "self"}, {"href": "http://172.16.200.1:8774/d0e560fbf7964495a1ff3f3f762b5348/flavors/2", "rel": "bookmark"}], "rxtx_factor": 1.0, "OS-FLV-EXT-DATA:ephemeral": 20, "ram": 2048, "id": "2", "swap": ""}]}

p request.user.service_catalog

{u'endpoints': [{u'adminURL': u'http://172.16.200.1:8774/v2/d0e560fbf7964495a1ff3f3f762b5348', u'region': u'RegionOne', u'internalURL': u'http://172.16.200.1:8774/v2/d0e560fbf7964495a1ff3f3f762b5348', u'publicURL': u'http://172.16.200.1:8774/v2/d0e560fbf7964495a1ff3f3f762b5348'}], u'endpoints_links': [], u'type': u'compute', u'name': u'Compute Service'}

{u'endpoints': [{u'adminURL': u'http://172.16.200.1:3333', u'region': u'RegionOne', u'internalURL': u'http://172.16.200.1:3333', u'publicURL': u'http://172.16.200.1:3333'}], u'endpoints_links': [], u'type': u's3', u'name': u'S3 Service'}

{u'endpoints': [{u'adminURL': u'http://172.16.200.1:9292/v1', u'region': u'RegionOne', u'internalURL': u'http://172.16.200.1:9292/v1', u'publicURL': u'http://172.16.200.1:9292/v1'}], u'endpoints_links': [], u'type': u'image', u'name': u'Image Service'}

{u'endpoints': [{u'adminURL': u'http://172.16.200.1:8776/v1/d0e560fbf7964495a1ff3f3f762b5348', u'region': u'RegionOne', u'internalURL': u'http://172.16.200.1:8776/v1/d0e560fbf7964495a1ff3f3f762b5348', u'publicURL': u'http://172.16.200.1:8776/v1/d0e560fbf7964495a1ff3f3f762b5348'}], u'endpoints_links': [], u'type': u'volume', u'name': u'Volume Service'}

{u'endpoints': [{u'adminURL': u'http://172.16.200.1:8773/services/Admin', u'region': u'RegionOne', u'internalURL': u'http://172.16.200.1:8773/services/Cloud', u'publicURL': u'http://172.16.200.1:8773/services/Cloud'}], u'endpoints_links': [], u'type': u'ec2', u'name': u'EC2 Service'}

{u'endpoints': [{u'adminURL': u'http://172.16.200.1:35357/v2.0', u'region': u'RegionOne', u'internalURL': u'http://172.16.200.1:5000/v2.0', u'publicURL': u'http://172.16.200.1:5000/v2.0'}], u'endpoints_links': [], u'type': u'identity', u'name': u'Identity Service'}

p dir(request.user)

['__class__', '__delattr__', '__dict__', '__doc__', '__format__', '__getattribute__', '__hash__', '__init__', '__module__', '__new__', '__reduce__', '__reduce_ex__', '__repr__', '__setattr__', '__sizeof__', '__str__', '__subclasshook__', '__weakref__', '_authorized_tenants', '_request', 'admin', 'authorized_tenants', 'get_and_delete_messages', 'id', 'is_admin', 'is_authenticated', 'roles', 'service_catalog', 'tenant_id', 'tenant_name', 'token', 'username']