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.


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>> 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>>
         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://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

__________________________________________________________________________
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