[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