← Back to team overview

openstack team mailing list archive

is this a bug in milestone-proposed keystone ? (cannot get endpoint-list, nor create endpoint)


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

1) setting some env variables:
export KEYSTONE_IP= # 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"

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

ID=$(keystone service-list | grep -i compute | awk '{print $2}')

keystone endpoint-create --region RegionOne --service_id $ID --publicurl

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 =
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")
        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 ?

Follow ups