← Back to team overview

openstack team mailing list archive

Re: is this a bug in milestone-proposed keystone ? (cannotget endpoint-list, nor create endpoint)

 

Thanks for the explanation. But I am still a little confused about the point of the templates. Having two implementations, one simple and one less simple, is not simpler than having only one. You still need to user the CLI for user, roles, etc. so having a different mechanism for endpoints does not seem simple. With regard to performance, won't these endpoint values be changing infrequently and so any reasonable caching strategy would give good performance? Or am I missing something?

 -David

On 3/26/2012 1:39 PM, Dolph Mathews wrote:
I think I'm to blame (apologies!) for suggesting that one driver was preferred over the other (that was my understanding a few weeks ago, based on test coverage). However, test coverage has since improved and I think people are having good experience with the SQL driver.

The two methods are *not* functionally identical. The file-based driver is simple and high-performance, and the sql-based driver provides flexibility and API/CLI administration.

I've just proposed a review to clarify each option in the http://keystone.openstack.org/configuration.html docs:
https://review.openstack.org/#change,5820

As well as a separate review to change the default backend to SQL, since most users are looking for the CLI management commands out of the box:
https://review.openstack.org/#change,5821

-Dolph

On Mon, Mar 26, 2012 at 8:29 AM, David Kranz <david.kranz@xxxxxxxxxx <mailto:david.kranz@xxxxxxxxxx>> wrote:

    There seems to be an unfortunate difference in opinion out there
    about whether the keystone endpoints should be defined using
    templates (devstack) or keystone calls (ubuntu).  I don't know why
    keystone is offering two very different, but seemingly
    functionally identical, ways to do this. Is there a good reason?
    Can this be sorted out so there is only one documented way to do this?

     -David


    On 3/26/2012 7:25 AM, Andiabes wrote:
    Can you include your config?
    The behavior you're describing seems to be consistent with a
    missing backers configuration ...

    Something like:
    [identity]
    driver = keystone.identity.backends.sql.Identity
    [catalog]
    driver = keystone.catalog.backends.sql.Catalog
    Also, where/how are you installing?

    On Mar 26, 2012, at 6:56 AM, Mandar Vaze
    <mandar.vaze@xxxxxxxxxxxx <mailto:mandar.vaze@xxxxxxxxxxxx>> wrote:

    I’m also getting the same error on latest master branch (updated
    today)

    Using setup created by devstack

    -Mandar

    *From:*openstack-bounces+mandar.vaze=vertex.co.in@xxxxxxxxxxxxxxxxxxx
    <mailto:openstack-bounces+mandar.vaze=vertex.co.in@xxxxxxxxxxxxxxxxxxx>
    [mailto:openstack-bounces+mandar.vaze=vertex.co.in@xxxxxxxxxxxxxxxxxxx
    <mailto:vertex.co.in@xxxxxxxxxxxxxxxxxxx>] *On Behalf Of *.?o 0 O??
    *Sent:* Monday, March 26, 2012 12:45 PM
    *To:* Pierre Amadio
    *Cc:* openstack
    *Subject:* Re: [Openstack] is this a bug in milestone-proposed
    keystone ? (cannotget endpoint-list, nor create endpoint)

    hi,

    I don't know if it is a bug but I come across the same problem
    and wondering how to solve it.

    ------------------ Original ------------------

    *From: * "Pierre Amadio"<pierre.amadio@xxxxxxxxxxxxx
    <mailto:pierre.amadio@xxxxxxxxxxxxx>>;

    *Date: * Sun, Mar 25, 2012 04:35 AM

    *To: * "openstack"<openstack@xxxxxxxxxxxxxxxxxxx
    <mailto:openstack@xxxxxxxxxxxxxxxxxxx>>;

    *Subject: * [Openstack] is this a bug in milestone-proposed
    keystone ? (cannotget 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
    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
    <http://$NOVA_IP:8774/v1.1/%%28tenant_id%29s>"
    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 ?






    _______________________________________________
    Mailing list: https://launchpad.net/‾openstack
    Post to     : openstack@xxxxxxxxxxxxxxxxxxx
    <mailto:openstack@xxxxxxxxxxxxxxxxxxx>
    Unsubscribe : https://launchpad.net/‾openstack
    More help   : https://help.launchpad.net/ListHelp

    _______________________________________________
    Mailing list: https://launchpad.net/~openstack
    <https://launchpad.net/%7Eopenstack>
    Post to     : openstack@xxxxxxxxxxxxxxxxxxx
    <mailto:openstack@xxxxxxxxxxxxxxxxxxx>
    Unsubscribe : https://launchpad.net/~openstack
    <https://launchpad.net/%7Eopenstack>
    More help   : https://help.launchpad.net/ListHelp


    _______________________________________________
    Mailing list:https://launchpad.net/~openstack  <https://launchpad.net/%7Eopenstack>
    Post to     :openstack@xxxxxxxxxxxxxxxxxxx  <mailto:openstack@xxxxxxxxxxxxxxxxxxx>
    Unsubscribe :https://launchpad.net/~openstack  <https://launchpad.net/%7Eopenstack>
    More help   :https://help.launchpad.net/ListHelp


    _______________________________________________
    Mailing list: https://launchpad.net/~openstack
    <https://launchpad.net/%7Eopenstack>
    Post to     : openstack@xxxxxxxxxxxxxxxxxxx
    <mailto:openstack@xxxxxxxxxxxxxxxxxxx>
    Unsubscribe : https://launchpad.net/~openstack
    <https://launchpad.net/%7Eopenstack>
    More help   : https://help.launchpad.net/ListHelp




Follow ups

References