On 08/14/2015 06:51 AM, Matthew Mosesohn wrote:
Gilles,

I already considered this when looking at another openstackclient issue. Version 1.0.4 has almost no changes from 1.0.3, which is the official release for Kilo. Maybe we can get this keystone URL handling fix backported to the 1.0.X branch of openstackclient?

I think we need some sort of fix in openstacklib and/or puppet-keystone so that v3 providers that use token auth can replace any "/v2.0" in the url with "/v3", to override any settings of OS_URL or OS_AUTH_URL in ENV or openrc.


-Matthew

On Fri, Aug 14, 2015 at 3:47 PM, Gilles Dubreuil <gil...@redhat.com <mailto:gil...@redhat.com>> wrote:



    On 14/08/15 20:45, Gilles Dubreuil wrote:
    >
    >
    > On 13/08/15 23:29, Rich Megginson wrote:
    >> On 08/13/2015 12:41 AM, Gilles Dubreuil wrote:
    >>> Hi Matthew,
    >>>
    >>> On 11/08/15 01:14, Rich Megginson wrote:
    >>>> On 08/10/2015 07:46 AM, Matthew Mosesohn wrote:
    >>>>> Sorry to everyone for bringing up this old thread, but it
    seems we may
    >>>>> need more openstackclient/keystone experts to settle this.
    >>>>>
    >>>>> I'm referring to the comments in
    >>>>> https://review.openstack.org/#/c/207873/
    >>>>> Specifically comments from Richard Megginson and Gilles Dubreuil
    >>>>> indicating openstackclient behavior for v3 keystone API.
    >>>>>
    >>>>>
    >>>>> A few items seem to be under dispute:
    >>>>> 1 - Keystone should be able to accept v3 requests at
    >>>>> <http://keystone-server:5000/>http://keystone-server:5000/
    >>>> I don't think so.  Keystone requires the version suffix
    "/v2.0" or
    >>>> "/v3".
    >>>>
    >>> Yes, if the public endpoint is set without a version then the
    service
    >>> can deal with either version.
    >>>
    >>> http://paste.openstack.org/raw/412819/
    >>>
    >>> That is not true for the admin endpoint (authentication is
    already done,
    >>> the admin services deals only with tokens), at least for now,
    Keystone
    >>> devs are working on it.
    >>
    >> I thought it worked like this - the openstack cli will infer
    from the
    >> arguments if it should do v2 or v3 auth.  In the above case for v3,
    >> since you specify the username/password, osc knows it has to use
    >> password auth (as opposed to token auth), and since all of the
    required
    >> v3 arguments are provided (v3 api version, domains for
    user/project), it
    >> can use v3 password auth.  It knows it has to use the
    "/v3/auth/token"
    >> path to get a token.
    >>
    >> Similarly for v2, since it only has username/password, no v3
    api or v3
    >> domain arguments, it knows it has to use v2 password auth.  It
    knows it
    >> has to use "/v2.0/token" to get a token.
    >>
    >> With the puppet-keystone code, since it uses TOKEN/URL, osc
    cannot infer
    >> if it can use v2 or v3, so it requires the "/v2.0" or "/v3"
    suffix, and
    >> the api version.
    >>
    >
    > First of my apologies because I confused admin enpdoint with the
    admin
    > service (or whatever that's dubbed).
    >
    > As of Keystone v3 (not the API, the latest version of Keystone which
    > supports both API v2.0 and V3), the OS_AUTH_URL doesn't need the
    > version. That can be effectively any of the endpoints, either
    the main
    > (or public) by default on port 5000 or the admin by default on port
    > 35357, the third one internal pointing to either of the first
    two ones.
    >
    > This is a behavior at Keystone level not at the OSC. I mean OSC will
    > just reflect the http-api behavior.
    >
    > Now the admin service, the one needed for the OS-TOKEN (used for
    > bootstrapping) needs a URL (OS_URL) with a version to work.
    >
    > ATM, the issue with puppet keystone is that endpoints, OS_URL and
    > OS_AUTH_URL are walking on each others.
    >
    >

    My latest update on this one, is that I found out while testing beaker
    which is using OSC 1.0.3 is not handling OS_AUTH_URL properly.

    I had been testing with OSC 1.5.1 and now latest 1.6.1 from Dolerean
    repo, where the version-less URLs are working, but not with OSC 1.0.1:

    ----------------------

    # cat openrc
    export OS_AUTH_URL=http://127.0.0.1:5000
    export OS_USERNAME=adminv3
    export OS_PASSWORD=testing
    export OS_PROJECT_NAME=openstackv3
    export OS_USER_DOMAIN_NAME=admin_domain
    export OS_PROJECT_DOMAIN_NAME=admin_domain
    export OS_IDENTITY_API_VERSION="3"

    # openstack endpoint list -f csv
    "ID","Region","Service Name","Service
    Type","Enabled","Interface","URL"
    
"87b7db1b23df487bb4ec96de5aa3c271","RegionOne","keystone","identity",True,"internal","http://127.0.0.1:5000";
    
"d9b345109d8a4320ac0dd832d2532cce","RegionOne","keystone","identity",True,"admin","http://127.0.0.1:35357";
    
"f3a579a64f0241ef9aef3dc983e0fd4a","RegionOne","keystone","identity",True,"public","http://127.0.0.1:5000";

    ----------------------

    # cat openrc_v2
    export OS_AUTH_URL=http://[::1]:5000
    export OS_USERNAME=admin
    export OS_PASSWORD=a_big_secret
    export OS_TENANT_NAME=openstack

    # openstack endpoint list -f csv --long
    "ID","Region","Service Name","Service
    Type","PublicURL","AdminURL","InternalURL"
    
"cf8825c44bd041109d5c7438ba9db8f3","RegionOne","keystone","identity","http://127.0.0.1:5000","http://127.0.0.1:35357","http://127.0.0.1:5000";



I don't understand. Is this output supposed to show a problem? Looks like it is working.

What is the problem? What is the difference of behavior between OSC 1.0.x and OSC 1.5.x?






    >>>
    >>>>> 2 - openstackclient should be able to interpret v3 requests
    and append
    >>>>> "v3/" to OS_AUTH_URL=http://keystone-server.5000/ or rewrite
    the URL
    >>>>> if it is set as
    >>>>>
    OS_AUTH_URL=<http://keystone-server.5000/>http://keystone-server.5000/
    >>>> It does, if it can determine from the given authentication
    arguments if
    >>>> it can do v3 or v2.0.
    >>>>
    >>> It effectively does, again, assuming the path doesn't contain
    a version
    >>> number (x.x.x.x:5000)
    >>>
    >>>>> 3 - All deployments require /etc/keystone/keystone.conf with
    a token
    >>>>> (and not simply use openrc for creating additional
    endpoints, users,
    >>>>> etc beyond keystone itself and an admin user)
    >>>> No.  What I said about this issue was "Most people using
    >>>> puppet-keystone, and realizing Keystone resources on nodes
    that are not
    >>>> the Keystone node, put a /etc/keystone/keystone.conf on that
    node with
    >>>> the admin_token in it."
    >>>>
    >>>> That doesn't mean the deployment requires
    /etc/keystone/keystone.conf.
    >>>> It should be possible to realize Keystone resources on
    non-Keystone
    >>>> nodes by using ENV or openrc or other means.
    >>>>
    >>> Agreed. Also keystone.conf is used only to bootstrap keystone
    >>> installation and create admin users, etc.
    >>>
    >>>
    >>>>> I believe it should be possible to set v2.0 keystone
    OS_AUTH_URL in
    >>>>> openrc and puppet-keystone + puppet-openstacklib should be
    able to
    >>>>> make v3 requests sensibly by manipulating the URL.
    >>>> Yes.  Because for the puppet-keystone resource providers,
    they are coded
    >>>> to a specific version of the api, and therefore need to be
    able to
    >>>> set/override the OS_IDENTITY_API_VERSION and the version
    suffix in
    >>>> the URL.
    >>>>
    >>> No. To support V2 and V3, the OS_AUTH_URL must not contain any
    version
    >>> in order.
    >>>
    >>> The less we deal with the version number the better!
    >>>
    >>>>> Additionally, creating endpoints/users/roles shouldbe
    possible via
    >>>>> openrc alone.
    >>>> Yes.
    >>>>
    >>> Yes, the openrc variables are used, if not available then the
    service
    >>> token from the keystone.conf is used.
    >>>
    >>>>> It's not possible to write single node tests that can
    demonstrate this
    >>>>> functionality, which is why it probably went undetected for
    so long.
    >>>> And since this is supported, we need tests for this.
    >>> I'm not sure what's the issue besides the fact keystone_puppet
    doesn't
    >>> generate a RC file once the admin user has been created. That
    is left to
    >>> be done by the composition layer. Although we might want to
    integrate
    >>> that.
    >>>
    >>> If that issue persists, assuming the AUTH_URL is free for a
    version
    >>> number and having an openrc in place, we're going to need a
    bug number
    >>> to track the investigation.
    >>>
    >>>>> If anyone can speak up on these items, it could help
    influence the
    >>>>> outcome of this patch.
    >>>>>
    >>>>> Thank you for your time.
    >>>>>
    >>>>> Best Regards,
    >>>>> Matthew Mosesohn
    >>>
    >>> Thanks,
    >>> Gilles
    >>>
    >>>>> On Fri, Jul 31, 2015 at 6:32 PM, Rich Megginson
    <rmegg...@redhat.com <mailto:rmegg...@redhat.com>
    >>>>> <mailto:rmegg...@redhat.com <mailto:rmegg...@redhat.com>>>
    wrote:
    >>>>>
    >>>>>      On 07/31/2015 07:18 AM, Matthew Mosesohn wrote:
    >>>>>
    >>>>>          Jesse, thanks for raising this. Like you, I should
    just track
    >>>>>          upstream
    >>>>>          and wait for full V3 support.
    >>>>>
    >>>>>          I've taken the quickest approach and written fixes to
    >>>>>          puppet-openstacklib and puppet-keystone:
    >>>>> https://review.openstack.org/#/c/207873/
    >>>>> https://review.openstack.org/#/c/207890/
    >>>>>
    >>>>>          and again to Fuel-Library:
    >>>>> https://review.openstack.org/#/c/207548/1
    >>>>>
    >>>>>          I greatly appreciate the quick support from the
    community to
    >>>>>          find an
    >>>>>          appropriate solution. Looks like I'm just using a weird
    >>>>> edge case
    >>>>>          where we're creating users on a separate node from
    where
    >>>>>          keystone is
    >>>>>          installed and it never got thoroughly tested, but
    I'm happy
    >>>>> to fix
    >>>>>          bugs where I can.
    >>>>>
    >>>>>
    >>>>>      Most puppet deployments either realize all keystone
    resources on
    >>>>>      the keystone node, or drop an
    /etc/keystone/keystone.conf with
    >>>>>      admin token onto non-keystone nodes where additional
    keystone
    >>>>>      resources need to be realized.
    >>>>>
    >>>>>
    >>>>>
    >>>>>          -Matthew
    >>>>>
    >>>>>          On Fri, Jul 31, 2015 at 3:54 PM, Jesse Pretorius
    >>>>>          <jesse.pretor...@gmail.com
    <mailto:jesse.pretor...@gmail.com>
    <mailto:jesse.pretor...@gmail.com <mailto:jesse.pretor...@gmail.com>>>
    >>>>>          wrote:
    >>>>>
    >>>>>              With regards to converting all services to use
    Keystone v3
    >>>>>              endpoints, note
    >>>>>              the following:
    >>>>>
    >>>>>              1) swift-dispersion currently does not support
    consuming
    >>>>>              Keystone v3
    >>>>>              endpoints [1]. There is a patch merged to
    master [2] to
    >>>>>              fix that, but a
    >>>>>              backport to kilo is yet to be done.
    >>>>>              2) Each type (internal, admin, public) of
    endpoint created
    >>>>>              with the Keystone
    >>>>>              v3 API has its own unique id, unlike with the
    v2 API where
    >>>>>              they're all
    >>>>>              created with a single ID. This results in the
    keystone
    >>>>>              client being unable
    >>>>>              to read the catalog created via the v3 API when
    querying
    >>>>>              via the v2 API. The
    >>>>>              solution is to use the openstack client and to
    use the v3
    >>>>>              API but this
    >>>>>              obviously needs to be noted for upgrade impact and
    >>>>> operators.
    >>>>>              3) When glance is setup to use swift as a back-end,
    >>>>>              glance_store is unable
    >>>>>              to authenticate to swift when the endpoint it
    uses is a v3
    >>>>>              endpoint. There
    >>>>>              is a review to master in progress [3] to fix
    this which is
    >>>>>              unlikely to make
    >>>>>              it into kilo.
    >>>>>
    >>>>>              We (the openstack-ansible/os-ansible-deployment
    project)
    >>>>>              are tracking these
    >>>>>              issues and doing tests to figure out all the
    bits. These
    >>>>>              are the bugs we've
    >>>>>              hit so far. Also note that there is a WIP patch
    to gate
    >>>>>              purely on Keystone
    >>>>>              v3 API's which is planned to become voting
    (hopefully) by
    >>>>>              the end of this
    >>>>>              cycle.
    >>>>>
    >>>>>              [1] https://bugs.launchpad.net/swift/+bug/1468374
    >>>>>              [2] https://review.openstack.org/195131
    >>>>>              [3] https://review.openstack.org/193422
    >>>>>
    >>>>>
    >>>>>
    __________________________________________________________________________
    >>>>>
    >>>>>              OpenStack Development Mailing List (not for usage
    >>>>> questions)
    >>>>>              Unsubscribe:
    >>>>>
    >>>>>
    openstack-dev-requ...@lists.openstack.org?subject:unsubscribe
    <http://openstack-dev-requ...@lists.openstack.org?subject:unsubscribe>
    >>>>>
    >>>>>
    <http://openstack-dev-requ...@lists.openstack.org?subject:unsubscribe>
    >>>>>
    >>>>>
    http://lists.openstack.org/cgi-bin/mailman/listinfo/openstack-dev
    >>>>>
    >>>>>
    >>>>>
    __________________________________________________________________________
    >>>>>
    >>>>>          OpenStack Development Mailing List (not for usage
    questions)
    >>>>>          Unsubscribe:
    >>>>>
    openstack-dev-requ...@lists.openstack.org?subject:unsubscribe
    <http://openstack-dev-requ...@lists.openstack.org?subject:unsubscribe>
    >>>>>
    >>>>>
    <http://openstack-dev-requ...@lists.openstack.org?subject:unsubscribe>
    >>>>>
    >>>>>
    http://lists.openstack.org/cgi-bin/mailman/listinfo/openstack-dev
    >>>>>
    >>>>>
    >>>>>
    >>>>>
    >>>>>
    __________________________________________________________________________
    >>>>>
    >>>>>      OpenStack Development Mailing List (not for usage
    questions)
    >>>>>      Unsubscribe:
    >>>>>
    openstack-dev-requ...@lists.openstack.org?subject:unsubscribe
    <http://openstack-dev-requ...@lists.openstack.org?subject:unsubscribe>
    >>>>>
    >>>>>
    <http://openstack-dev-requ...@lists.openstack.org?subject:unsubscribe>
    >>>>>
    http://lists.openstack.org/cgi-bin/mailman/listinfo/openstack-dev
    >>>>>
    >>>>>
    >>>>>
    >>>>>
    >>>>>
    __________________________________________________________________________
    >>>>>
    >>>>> OpenStack Development Mailing List (not for usage questions)
    >>>>> Unsubscribe:
    >>>>>
    openstack-dev-requ...@lists.openstack.org?subject:unsubscribe
    <http://openstack-dev-requ...@lists.openstack.org?subject:unsubscribe>
    >>>>>
    http://lists.openstack.org/cgi-bin/mailman/listinfo/openstack-dev
    >>>>
    >>>>
    >>>>
    __________________________________________________________________________
    >>>>
    >>>> OpenStack Development Mailing List (not for usage questions)
    >>>> Unsubscribe:
    >>>> openstack-dev-requ...@lists.openstack.org?subject:unsubscribe
    <http://openstack-dev-requ...@lists.openstack.org?subject:unsubscribe>
    >>>> http://lists.openstack.org/cgi-bin/mailman/listinfo/openstack-dev
    >>>>
    >>>
    __________________________________________________________________________
    >>>
    >>> OpenStack Development Mailing List (not for usage questions)
    >>> Unsubscribe:
    >>> openstack-dev-requ...@lists.openstack.org?subject:unsubscribe
    <http://openstack-dev-requ...@lists.openstack.org?subject:unsubscribe>
    >>> http://lists.openstack.org/cgi-bin/mailman/listinfo/openstack-dev
    >>
    >>
    >>
    __________________________________________________________________________
    >> OpenStack Development Mailing List (not for usage questions)
    >> Unsubscribe:
    openstack-dev-requ...@lists.openstack.org?subject:unsubscribe
    <http://openstack-dev-requ...@lists.openstack.org?subject:unsubscribe>
    >> http://lists.openstack.org/cgi-bin/mailman/listinfo/openstack-dev
    >
    >
    __________________________________________________________________________
    > OpenStack Development Mailing List (not for usage questions)
    > Unsubscribe:
    openstack-dev-requ...@lists.openstack.org?subject:unsubscribe
    <http://openstack-dev-requ...@lists.openstack.org?subject:unsubscribe>
    > http://lists.openstack.org/cgi-bin/mailman/listinfo/openstack-dev
    >

    __________________________________________________________________________
    OpenStack Development Mailing List (not for usage questions)
    Unsubscribe:
    openstack-dev-requ...@lists.openstack.org?subject:unsubscribe
    <http://openstack-dev-requ...@lists.openstack.org?subject:unsubscribe>
    http://lists.openstack.org/cgi-bin/mailman/listinfo/openstack-dev




__________________________________________________________________________
OpenStack Development Mailing List (not for usage questions)
Unsubscribe: openstack-dev-requ...@lists.openstack.org?subject:unsubscribe
http://lists.openstack.org/cgi-bin/mailman/listinfo/openstack-dev

__________________________________________________________________________
OpenStack Development Mailing List (not for usage questions)
Unsubscribe: openstack-dev-requ...@lists.openstack.org?subject:unsubscribe
http://lists.openstack.org/cgi-bin/mailman/listinfo/openstack-dev

Reply via email to