You are viewing a plain text version of this content. The canonical link for it is here.
Posted to user@jclouds.apache.org by Diego Parrilla Santamaría <di...@gmail.com> on 2015/04/10 13:48:50 UTC

Get list of users of a tenant in Openstack with JClouds >=1.8

Hi folks,

this is an issue we have been struggling with for a while and now it's
becoming mandatory to find a workaround for how we do it now:

Our goal is to get what users are in a specific tenant using Keystone API.
There is a well known call to the API that can return the list of users:

curl -i -X GET http://api.stackops.int:35357/v2.0/tenants/<tenant-id>/users
-H "User-Agent: python-keystoneclient" -H "X-Auth-Token: TOKEN"

But we can't find an equivalent call in JClouds. The way we do it now is:
1) Get the list of users
2) Check if any user has a role in the tenant. If so, add the user to the
users in the tenant list.

The process hits heavily on Keystone and it's fine for a few hundreds of
tenants, but  now we are facing performance issues when dealing with
thousands of tenants and users.

So my question(s) are:
1) Is this call implemented in JClouds and we don't know how to use it?
2) Any plans for future implementations in 1.9.x and 2.0?
3) Are there a good reason for not to have this API call implemented? Maybe
I'm missing something.
4) Any chance of having our code implementing this feature in JClouds?

Cheers!
Diego

 --
Diego Parrilla
<http://www.stackops.com/>*CEO*
*www.stackops.com <http://www.stackops.com/> | * diego.parrilla@stackops.com |
+34 91 005-2164 | skype:diegoparrilla

Re: Get list of users of a tenant in Openstack with JClouds >=1.8

Posted by Diego Parrilla Santamaría <di...@gmail.com>.
Sounds reasonable, yes. Ok, I will change it to TenantAdminApi, perform 
some tests and then I will send the pull request.

Thanks dude!

 -- 
Diego Parrilla
<http://www.stackops.com/>*CEO*
*www.stackops.com <http://www.stackops.com/> | * diego.parrilla@stackops.com | 
+34 91 005-2164 | skype:diegoparrilla



On Wed, Apr 15, 2015 at 10:39 AM, Ignasi Barrera <na...@apache.org> wrote:

> Being a method in an extension, it shouldn't be in the UserApi, as some 
> installation couldn't have that extension available and we need to take 
> that into account. There are the UserAdminApi and the TenantAdminApi for 
> the OS-KSADM extension. The former contains generic user operations, and 
> the latter contains the tenant-scoped ones, that's why I suggested to add 
> the method there. Does it make sense?
>
> Feel free to send the pull request!
>
> I.
>
> On 14 April 2015 at 23:30, Diego Parrilla Santamaría <
> diego.parrilla.santamaria@gmail.com> wrote:
>
>> Hi Ignasi,
>>
>> nice to hear from you again! Yep, we use jclouds in our stackops products 
>> since mid 2014. What a great stuff you are building dudes!
>>
>> You are right, it's part of the  OS-KSADM extension. I have already 
>> implemented it in jclouds 2.0 and it's working like a breeze: actually it 
>> was just a bunch of lines of code:
>>
>> package org.jclouds.openstack.keystone.v2_0.features;
>>
>> ...
>>
>>    /**
>>
>>     * List users that belong to a specific tenant
>>
>>     *
>>
>>     * @return the list of users
>>
>>     */
>>
>>    @Named("user:listUsersOnTenant")
>>
>>    @GET
>>
>>    @Path("/tenants/{tenantId}/users")
>>
>>    @ResponseParser(ParseUsers.class)
>>
>>    @Transform(ToPagedIterable.class)
>>
>>    @Fallback(EmptyPagedIterableOnNotFoundOr404.class)
>>
>>    PagedIterable<User> listUsersOnTenant(@PathParam("tenantId") String 
>> tenantId);
>>
>>
>>    @Named("user:listUsersOnTenant")
>>
>>    @GET
>>
>>    @Path("/tenants/{tenantId}/users")
>>
>>    @ResponseParser(ParseUsers.class)
>>
>>    @Fallback(EmptyPaginatedCollectionOnNotFoundOr404.class)
>>
>>    PaginatedCollection<User> listUsersOnTenant(@PathParam("tenantId") 
>> String tenantId,
>>
>>         PaginationOptions options);
>>
>>
>> But it sounds me better in the UserApi class since it returns a list of 
>> users... but actually I don't care and I can change it right way.
>>
>> Let me know if I have to change it to TenantAdminApi and I will send the 
>> pull request. I hope you are not as much talibans as the Openstack dudes 
>> are ;-)
>>
>> Cheers
>>
>>  -- 
>> Diego Parrilla
>> <http://www.stackops.com/>*CEO*
>> *www.stackops.com <http://www.stackops.com/> | * 
>> diego.parrilla@stackops.com | +34 91 005-2164 | skype:diegoparrilla
>>
>>
>>
>> On Mon, Apr 13, 2015 at 10:28 AM, Ignasi Barrera <na...@apache.org> wrote:
>>
>>> Hi Diego, long time no see!
>>>
>>> The call seems to be part of the OS-KSADM extension [1], right? jclouds 
>>> does not implement it yet, but adding it to the TenantAdminApi [2] would be 
>>> pretty straightforward. Since this addition shouldn't introduce breaking 
>>> changes, there is no problem in adding it to 2.0 and 1.9.x.
>>>
>>> We love pull requests. Wanna try sending us a path [3]?
>>>
>>>
>>> HTH!
>>>
>>> I.
>>>
>>>
>>> [1] http://developer.openstack.org/api-ref-identity-v2-ext.html
>>> [2] 
>>> https://github.com/jclouds/jclouds/blob/master/apis/openstack-keystone/src/main/java/org/jclouds/openstack/keystone/v2_0/extensions/TenantAdminApi.java
>>> [3] 
>>> https://cwiki.apache.org/confluence/display/JCLOUDS/How+to+Contribute
>>>
>>> On 10 April 2015 at 13:48, Diego Parrilla Santamaría <
>>> diego.parrilla.santamaria@gmail.com> wrote:
>>>
>>>> Hi folks,
>>>>
>>>> this is an issue we have been struggling with for a while and now it's 
>>>> becoming mandatory to find a workaround for how we do it now:
>>>>
>>>> Our goal is to get what users are in a specific tenant using Keystone 
>>>> API. There is a well known call to the API that can return the list of 
>>>> users:
>>>>
>>>> curl -i -X GET http://api.stackops.int:35357/v2.0/tenants/<tenant-id>/users 
>>>> -H "User-Agent: python-keystoneclient" -H "X-Auth-Token: TOKEN"
>>>>
>>>> But we can't find an equivalent call in JClouds. The way we do it now 
>>>> is:
>>>> 1) Get the list of users
>>>> 2) Check if any user has a role in the tenant. If so, add the user to 
>>>> the users in the tenant list.
>>>>
>>>> The process hits heavily on Keystone and it's fine for a few hundreds 
>>>> of tenants, but  now we are facing performance issues when dealing with 
>>>> thousands of tenants and users.
>>>>
>>>> So my question(s) are:
>>>> 1) Is this call implemented in JClouds and we don't know how to use it?
>>>> 2) Any plans for future implementations in 1.9.x and 2.0?
>>>> 3) Are there a good reason for not to have this API call implemented? 
>>>> Maybe I'm missing something.
>>>> 4) Any chance of having our code implementing this feature in JClouds?
>>>>
>>>> Cheers!
>>>> Diego
>>>>
>>>>  -- 
>>>> Diego Parrilla
>>>> <http://www.stackops.com/>*CEO*
>>>> *www.stackops.com <http://www.stackops.com/> | * 
>>>> diego.parrilla@stackops.com | +34 91 005-2164 | skype:diegoparrilla
>>>>  
>>>
>>>
>>
>

Re: Get list of users of a tenant in Openstack with JClouds >=1.8

Posted by Ignasi Barrera <na...@apache.org>.
Being a method in an extension, it shouldn't be in the UserApi, as some
installation couldn't have that extension available and we need to take
that into account. There are the UserAdminApi and the TenantAdminApi for
the OS-KSADM extension. The former contains generic user operations, and
the latter contains the tenant-scoped ones, that's why I suggested to add
the method there. Does it make sense?

Feel free to send the pull request!

I.

On 14 April 2015 at 23:30, Diego Parrilla Santamaría <
diego.parrilla.santamaria@gmail.com> wrote:

> Hi Ignasi,
>
> nice to hear from you again! Yep, we use jclouds in our stackops products
> since mid 2014. What a great stuff you are building dudes!
>
> You are right, it's part of the  OS-KSADM extension. I have already
> implemented it in jclouds 2.0 and it's working like a breeze: actually it
> was just a bunch of lines of code:
>
> package org.jclouds.openstack.keystone.v2_0.features;
>
> ...
>
>    /**
>
>     * List users that belong to a specific tenant
>
>     *
>
>     * @return the list of users
>
>     */
>
>    @Named("user:listUsersOnTenant")
>
>    @GET
>
>    @Path("/tenants/{tenantId}/users")
>
>    @ResponseParser(ParseUsers.class)
>
>    @Transform(ToPagedIterable.class)
>
>    @Fallback(EmptyPagedIterableOnNotFoundOr404.class)
>
>    PagedIterable<User> listUsersOnTenant(@PathParam("tenantId") String
> tenantId);
>
>
>    @Named("user:listUsersOnTenant")
>
>    @GET
>
>    @Path("/tenants/{tenantId}/users")
>
>    @ResponseParser(ParseUsers.class)
>
>    @Fallback(EmptyPaginatedCollectionOnNotFoundOr404.class)
>
>    PaginatedCollection<User> listUsersOnTenant(@PathParam("tenantId")
> String tenantId,
>
>         PaginationOptions options);
>
>
> But it sounds me better in the UserApi class since it returns a list of
> users... but actually I don't care and I can change it right way.
>
> Let me know if I have to change it to TenantAdminApi and I will send the
> pull request. I hope you are not as much talibans as the Openstack dudes
> are ;-)
>
> Cheers
>
>  --
> Diego Parrilla
> <http://www.stackops.com/>*CEO*
> *www.stackops.com <http://www.stackops.com/> | *
> diego.parrilla@stackops.com | +34 91 005-2164 | skype:diegoparrilla
>
>
>
> On Mon, Apr 13, 2015 at 10:28 AM, Ignasi Barrera <na...@apache.org> wrote:
>
>> Hi Diego, long time no see!
>>
>> The call seems to be part of the OS-KSADM extension [1], right? jclouds
>> does not implement it yet, but adding it to the TenantAdminApi [2] would be
>> pretty straightforward. Since this addition shouldn't introduce breaking
>> changes, there is no problem in adding it to 2.0 and 1.9.x.
>>
>> We love pull requests. Wanna try sending us a path [3]?
>>
>>
>> HTH!
>>
>> I.
>>
>>
>> [1] http://developer.openstack.org/api-ref-identity-v2-ext.html
>> [2]
>> https://github.com/jclouds/jclouds/blob/master/apis/openstack-keystone/src/main/java/org/jclouds/openstack/keystone/v2_0/extensions/TenantAdminApi.java
>> [3] https://cwiki.apache.org/confluence/display/JCLOUDS/How+to+Contribute
>>
>> On 10 April 2015 at 13:48, Diego Parrilla Santamaría <
>> diego.parrilla.santamaria@gmail.com> wrote:
>>
>>> Hi folks,
>>>
>>> this is an issue we have been struggling with for a while and now it's
>>> becoming mandatory to find a workaround for how we do it now:
>>>
>>> Our goal is to get what users are in a specific tenant using Keystone
>>> API. There is a well known call to the API that can return the list of
>>> users:
>>>
>>> curl -i -X GET http://api.stackops.int:35357/v2.0/tenants/<tenant-id>/users
>>> -H "User-Agent: python-keystoneclient" -H "X-Auth-Token: TOKEN"
>>>
>>> But we can't find an equivalent call in JClouds. The way we do it now is:
>>> 1) Get the list of users
>>> 2) Check if any user has a role in the tenant. If so, add the user to
>>> the users in the tenant list.
>>>
>>> The process hits heavily on Keystone and it's fine for a few hundreds of
>>> tenants, but  now we are facing performance issues when dealing with
>>> thousands of tenants and users.
>>>
>>> So my question(s) are:
>>> 1) Is this call implemented in JClouds and we don't know how to use it?
>>> 2) Any plans for future implementations in 1.9.x and 2.0?
>>> 3) Are there a good reason for not to have this API call implemented?
>>> Maybe I'm missing something.
>>> 4) Any chance of having our code implementing this feature in JClouds?
>>>
>>> Cheers!
>>> Diego
>>>
>>>  --
>>> Diego Parrilla
>>> <http://www.stackops.com/>*CEO*
>>> *www.stackops.com <http://www.stackops.com/> | *
>>> diego.parrilla@stackops.com | +34 91 005-2164 | skype:diegoparrilla
>>>
>>
>>
>

Re: Get list of users of a tenant in Openstack with JClouds >=1.8

Posted by Diego Parrilla Santamaría <di...@gmail.com>.
Hi Ignasi,

nice to hear from you again! Yep, we use jclouds in our stackops products 
since mid 2014. What a great stuff you are building dudes!

You are right, it's part of the  OS-KSADM extension. I have already 
implemented it in jclouds 2.0 and it's working like a breeze: actually it 
was just a bunch of lines of code:

package org.jclouds.openstack.keystone.v2_0.features;

...

   /**

    * List users that belong to a specific tenant

    *

    * @return the list of users

    */

   @Named("user:listUsersOnTenant")

   @GET

   @Path("/tenants/{tenantId}/users")

   @ResponseParser(ParseUsers.class)

   @Transform(ToPagedIterable.class)

   @Fallback(EmptyPagedIterableOnNotFoundOr404.class)

   PagedIterable<User> listUsersOnTenant(@PathParam("tenantId") String 
tenantId);


   @Named("user:listUsersOnTenant")

   @GET

   @Path("/tenants/{tenantId}/users")

   @ResponseParser(ParseUsers.class)

   @Fallback(EmptyPaginatedCollectionOnNotFoundOr404.class)

   PaginatedCollection<User> listUsersOnTenant(@PathParam("tenantId") 
String tenantId,

        PaginationOptions options);


But it sounds me better in the UserApi class since it returns a list of 
users... but actually I don't care and I can change it right way.

Let me know if I have to change it to TenantAdminApi and I will send the 
pull request. I hope you are not as much talibans as the Openstack dudes 
are ;-)

Cheers

 -- 
Diego Parrilla
<http://www.stackops.com/>*CEO*
*www.stackops.com <http://www.stackops.com/> | * diego.parrilla@stackops.com | 
+34 91 005-2164 | skype:diegoparrilla



On Mon, Apr 13, 2015 at 10:28 AM, Ignasi Barrera <na...@apache.org> wrote:

> Hi Diego, long time no see!
>
> The call seems to be part of the OS-KSADM extension [1], right? jclouds 
> does not implement it yet, but adding it to the TenantAdminApi [2] would be 
> pretty straightforward. Since this addition shouldn't introduce breaking 
> changes, there is no problem in adding it to 2.0 and 1.9.x.
>
> We love pull requests. Wanna try sending us a path [3]?
>
>
> HTH!
>
> I.
>
>
> [1] http://developer.openstack.org/api-ref-identity-v2-ext.html
> [2] 
> https://github.com/jclouds/jclouds/blob/master/apis/openstack-keystone/src/main/java/org/jclouds/openstack/keystone/v2_0/extensions/TenantAdminApi.java
> [3] https://cwiki.apache.org/confluence/display/JCLOUDS/How+to+Contribute
>
> On 10 April 2015 at 13:48, Diego Parrilla Santamaría <
> diego.parrilla.santamaria@gmail.com> wrote:
>
>> Hi folks,
>>
>> this is an issue we have been struggling with for a while and now it's 
>> becoming mandatory to find a workaround for how we do it now:
>>
>> Our goal is to get what users are in a specific tenant using Keystone 
>> API. There is a well known call to the API that can return the list of 
>> users:
>>
>> curl -i -X GET http://api.stackops.int:35357/v2.0/tenants/<tenant-id>/users 
>> -H "User-Agent: python-keystoneclient" -H "X-Auth-Token: TOKEN"
>>
>> But we can't find an equivalent call in JClouds. The way we do it now is:
>> 1) Get the list of users
>> 2) Check if any user has a role in the tenant. If so, add the user to the 
>> users in the tenant list.
>>
>> The process hits heavily on Keystone and it's fine for a few hundreds of 
>> tenants, but  now we are facing performance issues when dealing with 
>> thousands of tenants and users.
>>
>> So my question(s) are:
>> 1) Is this call implemented in JClouds and we don't know how to use it?
>> 2) Any plans for future implementations in 1.9.x and 2.0?
>> 3) Are there a good reason for not to have this API call implemented? 
>> Maybe I'm missing something.
>> 4) Any chance of having our code implementing this feature in JClouds?
>>
>> Cheers!
>> Diego
>>
>>  -- 
>> Diego Parrilla
>> <http://www.stackops.com/>*CEO*
>> *www.stackops.com <http://www.stackops.com/> | * 
>> diego.parrilla@stackops.com | +34 91 005-2164 | skype:diegoparrilla
>>  
>
>

Re: Get list of users of a tenant in Openstack with JClouds >=1.8

Posted by Ignasi Barrera <na...@apache.org>.
Hi Diego, long time no see!

The call seems to be part of the OS-KSADM extension [1], right? jclouds
does not implement it yet, but adding it to the TenantAdminApi [2] would be
pretty straightforward. Since this addition shouldn't introduce breaking
changes, there is no problem in adding it to 2.0 and 1.9.x.

We love pull requests. Wanna try sending us a path [3]?


HTH!

I.


[1] http://developer.openstack.org/api-ref-identity-v2-ext.html
[2]
https://github.com/jclouds/jclouds/blob/master/apis/openstack-keystone/src/main/java/org/jclouds/openstack/keystone/v2_0/extensions/TenantAdminApi.java
[3] https://cwiki.apache.org/confluence/display/JCLOUDS/How+to+Contribute

On 10 April 2015 at 13:48, Diego Parrilla Santamaría <
diego.parrilla.santamaria@gmail.com> wrote:

> Hi folks,
>
> this is an issue we have been struggling with for a while and now it's
> becoming mandatory to find a workaround for how we do it now:
>
> Our goal is to get what users are in a specific tenant using Keystone API.
> There is a well known call to the API that can return the list of users:
>
> curl -i -X GET http://api.stackops.int:35357/v2.0/tenants/<tenant-id>/users
> -H "User-Agent: python-keystoneclient" -H "X-Auth-Token: TOKEN"
>
> But we can't find an equivalent call in JClouds. The way we do it now is:
> 1) Get the list of users
> 2) Check if any user has a role in the tenant. If so, add the user to the
> users in the tenant list.
>
> The process hits heavily on Keystone and it's fine for a few hundreds of
> tenants, but  now we are facing performance issues when dealing with
> thousands of tenants and users.
>
> So my question(s) are:
> 1) Is this call implemented in JClouds and we don't know how to use it?
> 2) Any plans for future implementations in 1.9.x and 2.0?
> 3) Are there a good reason for not to have this API call implemented?
> Maybe I'm missing something.
> 4) Any chance of having our code implementing this feature in JClouds?
>
> Cheers!
> Diego
>
>  --
> Diego Parrilla
> <http://www.stackops.com/>*CEO*
> *www.stackops.com <http://www.stackops.com/> | *
> diego.parrilla@stackops.com | +34 91 005-2164 | skype:diegoparrilla
>

Re: COMMERCIAL:Get list of users of a tenant in Openstack with JClouds >=1.8

Posted by Zack Shoylev <za...@RACKSPACE.COM>.
Would this work for you:


http://jclouds.apache.org/reference/javadoc/1.9.x/org/jclouds/openstack/keystone/v2_0/features/ServiceApi.html#listTenants()<http://jclouds.apache.org/reference/javadoc/1.9.x/org/jclouds/openstack/keystone/v2_0/features/ServiceApi.html#listTenants>?


________________________________
From: Diego Parrilla Santamaría <di...@gmail.com>
Sent: Friday, April 10, 2015 6:48 AM
To: user@jclouds.apache.org
Subject: COMMERCIAL:Get list of users of a tenant in Openstack with JClouds >=1.8

Hi folks,

this is an issue we have been struggling with for a while and now it's becoming mandatory to find a workaround for how we do it now:

Our goal is to get what users are in a specific tenant using Keystone API. There is a well known call to the API that can return the list of users:

curl -i -X GET http://api.stackops.int:35357/v2.0/tenants/<tenant-id>/users -H "User-Agent: python-keystoneclient" -H "X-Auth-Token: TOKEN"

But we can't find an equivalent call in JClouds. The way we do it now is:
1) Get the list of users
2) Check if any user has a role in the tenant. If so, add the user to the users in the tenant list.

The process hits heavily on Keystone and it's fine for a few hundreds of tenants, but  now we are facing performance issues when dealing with thousands of tenants and users.

So my question(s) are:
1) Is this call implemented in JClouds and we don't know how to use it?
2) Any plans for future implementations in 1.9.x and 2.0?
3) Are there a good reason for not to have this API call implemented? Maybe I'm missing something.
4) Any chance of having our code implementing this feature in JClouds?

Cheers!
Diego

 --
Diego Parrilla
<http://www.stackops.com/>CEO
www.stackops.com<http://www.stackops.com/> |  diego.parrilla@stackops.com<ma...@stackops.com> | +34 91 005-2164 | skype:diegoparrilla