[Openstack] is this a bug in milestone-proposed keystone ? (cannot get endpoint-list, nor create endpoint)
Pierre Amadio
pierre.amadio at canonical.com
Sat Mar 24 20:35:49 UTC 2012
Hi there !
I wanted to give a try to the milestone-proposed branch of keystone and
got stuck quite fast.
I am not sure if i hit a bug and should report it, or if i'm doing
something wrong.
With previous version of keystone (read packaged on ubuntu precise), i
was able to create endpoint the following way once keystone has been
installed:
1) setting some env variables:
export KEYSTONE_IP=192.168.122.102 # IP of your keystone API server
export SERVICE_ENDPOINT=http://$KEYSTONE_IP:35357/v2.0/
export SERVICE_TOKEN=999888777666
export NOVA_PUBLIC_URL="http://$NOVA_IP:8774/v1.1/%(tenant_id)s"
export NOVA_ADMIN_URL=$NOVA_PUBLIC_URL
export NOVA_INTERNAL_URL=$NOVA_PUBLIC_URL
2) creating services:
keystone service-create --name nova --type compute --description
'OpenStack Compute Service'
keystone service-create --name swift --type object-store --description
'OpenStack Storage Service'
keystone service-create --name glance --type image --description
'OpenStack Image Service'
keystone service-create --name keystone --type identity --description
'OpenStack Identity Service'
3) creating an endpoint for those services, starting with the compute
service:
ID=$(keystone service-list | grep -i compute | awk '{print $2}')
keystone endpoint-create --region RegionOne --service_id $ID --publicurl
$NOVA_PUBLIC_URL --adminurl $NOVA_ADMIN_URL --internalurl $NOVA_INTERNAL_URL
When i run this command with milestone-proposed, i experience the following:
No handlers could be found for logger "keystoneclient.client"
The action you have requested has not been implemented. (HTTP 501)
Strangely enough, i experience a similar error message when running a
simple "keystone endpoint-list" whereas command such as "keystone
user-list" works all right.
here is what i have in the keystone logs when trying "endpoint-list":
2012-03-24 20:30:09 DEBUG [routes.middleware] Matched GET /endpoints
2012-03-24 20:30:09 DEBUG [routes.middleware] Route path:
'{path_info:.*}', defaults: {'controller':
<keystone.contrib.admin_crud.core.CrudExtension object at 0x2b215d0>}
2012-03-24 20:30:09 DEBUG [routes.middleware] Match dict:
{'controller': <keystone.contrib.admin_crud.core.CrudExtension object at
0x2b215d0>, 'path_info': '/endpoints'}
2012-03-24 20:30:09 DEBUG [routes.middleware] Matched GET /endpoints
2012-03-24 20:30:09 DEBUG [routes.middleware] Route path:
'/endpoints', defaults: {'action': u'get_endpoints', 'controller':
<keystone.catalog.core.EndpointController object at 0x2b21210>}
2012-03-24 20:30:09 DEBUG [routes.middleware] Match dict: {'action':
u'get_endpoints', 'controller':
<keystone.catalog.core.EndpointController object at 0x2b21210>}
2012-03-24 20:30:09 DEBUG [keystone.common.wsgi] arg_dict: {}
2012-03-24 20:30:09 WARNING [keystone.common.wsgi] The action you have
requested has not been implemented.
2012-03-24 20:30:09 DEBUG [keystone.common.wsgi] ********************
RESPONSE HEADERS ********************
2012-03-24 20:30:09 DEBUG [keystone.common.wsgi] Content-Type =
application/json
2012-03-24 20:30:09 DEBUG [keystone.common.wsgi] Vary = X-Auth-Token
2012-03-24 20:30:09 DEBUG [keystone.common.wsgi] Content-Length = 109
2012-03-24 20:30:09 DEBUG [keystone.common.wsgi]
2012-03-24 20:30:09 DEBUG [keystone.common.wsgi] ********************
RESPONSE BODY ********************
I try to add some debug in
keystone.catalog.core.EndpointController.get_endpoints() method:
def get_endpoints(self, context):
LOG.debug("PLOP get_endpoints")
self.assert_admin(context)
LOG.debug("PLOP STILL HERE") # <= LAST DEBUG LINE
endpoint_list = self.catalog_api.list_endpoints(context)
LOG.debug("SO, how does endpoint_list looks like ?")
for i in endpoint_list:
LOG.debug("PLOP: '%s'",s)
endpoint_refs = [self.catalog_api.get_endpoint(context, e)
for e in endpoint_list]
LOG.debug("PLOP THIS IS THE END")
return {'endpoints': endpoint_refs}
So, as i do not see anything after "PLOP STILL HERE", i am assuming
something is wrong in the catalog_api.list_endpoints() method.
However, i do not understand exactly where it is implemented.
catalog_api is a Manager instance, wich seems to be a subclass of
Manager() defined in keystone/keystone/common/manager.py but i am lost
with the wrapping magic that occurs there.
So, is this a bug that i should file ?
More information about the Openstack
mailing list