16:12:04 #startmeeting Hierarchical Multitenancy 16:12:05 Meeting started Fri Feb 7 16:12:04 2014 UTC and is due to finish in 60 minutes. The chair is vishy. Information about MeetBot at http://wiki.debian.org/MeetBot. 16:12:06 Useful Commands: #action #agreed #help #info #idea #link #topic #startvote. 16:12:09 The meeting name has been set to 'hierarchical_multitenancy' 16:12:22 #topic Role Call 16:12:29 who all is here? 16:12:42 Vinod here 16:12:49 Ulrich here 16:13:03 Tiago here 16:13:04 raildo here 16:13:07 Telles here 16:14:04 #topic POC Discussion 16:14:21 has anyone had a chance to experiment with my POC? 16:14:34 yes 16:14:42 i have looked into it 16:15:05 comments/feedvack/issues? 16:16:10 I think the main issue is how nova will come to know the complete hierarchy 16:16:39 VINOD_: why does it need to know the complete hierarchy? 16:17:31 I guess it has to 16:18:06 lets say i have authenticated by generating a token at level 2...now i want to get some information from level 4...Am i going to put all the ids/names upto level 4 in the URL.. 16:18:09 When you list the instances, for example, will be listed all the hierarchy, or just design it is authenticated? 16:18:25 or if i am asking blindly given me something at level4 16:18:43 my token is at level 2...then how nova knows that i am asking something at level 4 16:18:55 and the token is at level 2 and so prefix will match 16:19:35 if you want to limit your scope to level4 then you should reautenticate to level4 16:19:58 although this could also be solved by allowing you to limit the scope of a token you have 16:20:22 but in general reauthenticating seems like it might be easier 16:20:30 Then if i want to manage all the children from level 2...i need to every time switch levels 16:20:48 it depends on what you mean by manage 16:21:50 I mean lets say i want to run a query at sub projects of level 3...then i have to switch the context for each sub-project at level 3..i cannot have the token at level 2 and do all the things without switching 16:21:57 Then what about quotas 16:22:06 a token issued at level 2 will be valid for all operations on level two AND below, right ? 16:22:17 VINOD_: ++ 16:22:20 But here it is not happening 16:22:45 i have to switch from one child to another child of level two and limit my scope 16:22:47 the point is that you can do everything for the projects below 16:23:05 How..if nova does not know the hierarchy... 16:23:05 the only command that works across multiple instances at once is list 16:23:15 the same problem i am facing right now in setting the quots 16:23:26 so quotas can use prefixes as well 16:23:36 in nova, the quota of a project does not have information about to which domain it belongs 16:23:48 it would in my model 16:23:55 ok 16:24:06 all of the things in the system would move from project_id -> hierarchical.project_id 16:24:18 ok 16:24:22 so you just walk back up the list achecking quotas 16:25:09 VINOD_: to your first point, if we do have other actions on multiple instances then the rescoping starts to become painful 16:25:22 but as it is today, I don't think it is too bad 16:26:05 For example, i want to list all VMs created by sub-projects of a parent project....will it be possible 16:26:25 if i authenticate and set my scope at parent project 16:26:31 VINOD_: well it would be more of a client side filter in this case 16:26:52 i think the id vs. name thing is a bit of a problem 16:27:10 since if you can list across multiple projects you need to as a user see which instances belong to which project 16:27:19 If we use name, the name can be repeated at different branches...which will create more problem 16:27:26 and a long.string.of.ids 16:27:32 is not readable 16:28:02 i'm thinking that we may need to keep track of scope_name in addition to scope_id 16:28:09 vishy: +1 16:28:13 so that we can use the name for display for the user 16:28:40 ok 16:28:56 +1 16:28:58 then the client could limit the scope for a query 16:29:04 vishy: can you give an example on how will this work? 16:29:07 and in fact it could be added to the list command 16:29:17 tellesnobrega: which specifically 16:29:36 so the filter could be done server side for certain objects 16:29:50 vishy: how the names would be shown to the user, keeping track of scoped_name and scoped_id 16:29:51 right now we have nova list --all-tenants 16:29:55 we could have 16:30:10 nova list --scope=orga 16:30:13 or something 16:30:40 and will be there any config option to limit the maximum hierarchy level that one can go upto 16:31:07 so you would see a field called something like "scope" in the instance list 16:31:21 VINOD_: that seems interesting 16:31:26 like max depth 16:31:38 Yes..otherwise it can become messy 16:31:47 with long list of subprojects ids..or names.... 16:31:48 VINOD_: although that isn't particularly easy to do in the db 16:31:59 +1 16:32:02 so it might have to be a python filter 16:32:16 vishy: +1 16:32:25 some of them support regex so you could have a regex filter in addition to the prefix match 16:32:35 to only allow a certain number of separators 16:32:41 ok 16:32:56 the root could store the number of leaves or depth 16:33:24 the maximum depth should be configurable though rather than hard coded 16:33:40 tellesnobrega: so I would think we would have to keep the name in the database as well in that case which is nasty 16:33:44 was discussing this recently with Vinod. I think it is a must 16:33:54 tellesnobrega: for the name question. I really don't have a good answer for this 16:34:52 schwicke: it could be kind of like ldap 16:35:08 where you can use SCOPE_BASE, SCOPE_ONELEVEL, or SCOPE_SUBTREE 16:35:29 or we could have it be an arbitrary depth number 16:36:06 vishy: actually, we were thinking of a configuration parameter in nova.conf which can only be changed by the cloud owner 16:36:16 to keep it simple 16:36:22 schwicke: as in maximum number of depth allowed? 16:36:31 for search or for project creation? 16:36:33 vishy: yes 16:36:43 for project creation 16:36:46 vishy: schwicke, why is it so important to have a max depth? keep balance in the tree? 16:37:06 schwicke: that makes sense 16:37:17 motivated by experience from other services with our users 16:37:33 i ssupect it is useful at the very least because some projects may have limits about the size of the field used to store the ids 16:37:33 who are complex organizations by themselves 16:37:34 schiwicke : that seems like a quota for domain that was proposed a few wweks ago 16:38:06 ok so I will have to think about the name thing a bit more 16:38:14 Vishy: I think, we have two ways for nova to know the hierarchy. One is nova always asks keystone to known the hierarchy whenever is required or every service keep the hierarchy information with them..But both have some advantages and disadvantaes.. 16:38:21 tiamar: except that in our case introducing domains is not enough 16:38:27 one option is to just make the owner field based on names instead of ids as ayoung suggested in his email 16:39:14 VINOD_: i have been trying to avoid keeping that information out of the services 16:39:38 I think its not a question of ids or names...its all about deciding whether a query fired by a user with a scope can run that query or not... 16:40:07 if you store it with ids or names, any way the service has to talk to keystone to see the query fired for some project comes under the scope or not 16:40:12 the whole point of doing it as a hierarchy is you can make that decision without knowing the whole hierarchy 16:40:22 via prefix matching 16:40:47 if you get rid of that basic idea you might as well do the whole thing as a bunch of tags 16:40:54 I believe it is a problem Nova to keep asking the keystone due notifications that are not well implemented. 16:41:55 Let me give an example, project A -> project A1 -> project A2 -> project A3. Now if lets say a user has created a VM at project A3. The nova will have only information that a VM exists for project A3. Now i have authenticated with a scope at Project A1. 16:42:21 the "owener " of the VM is A1.A2.A3 16:42:32 If i want to list VMs comes under all levels of project A1...nova first has to talk to the keystone..to get which are all the project lies beneath project A1 16:42:33 so what is the problem? 16:42:44 no it doesn't 16:42:49 it does a prefix match 16:42:57 that is the whole idea of the POC 16:43:58 ok we only have 15 minutes left 16:44:02 so next steps 16:44:20 so the table for instances stores A1.A2.A3 ? 16:44:23 #topic Next Steps 16:44:28 That's exactly my point... 16:44:31 tiamar: correct 16:44:38 ok 16:44:51 the poc does this today 16:45:02 but it uses ids.stuck.together 16:45:21 which means there is no good way to display to the user which project it is from 16:45:55 there are other places where we need the project name in nova so perhaps the right way here is just to ask keystone for the name of the project when we need it and cache the value 16:46:16 i'm a little bit happier about that than I am about asking for the whole hierarchy 16:46:29 ok 16:46:46 so the purpose of the poc was to create something so we could see what else is missing 16:46:56 so we could add a few features / refine it 16:47:11 for example, someone could attempt to add the project_name query and caching 16:47:27 or someone could attempt to implement a single level of quotas 16:47:44 someone could actually modify keystone to send scope in the token separately from project_id 16:47:58 someone could try making keystone have nested projects and send a bigger scope 16:48:12 these could all be useful things to take to the summit in Atlanta 16:48:24 does anyone feel like tackling any/all of these things 16:48:40 the alternative is we create a more detailed design explaining the solution 16:48:49 and have a couple of discussions in atlanta 16:49:25 We could do some thing on quota... 16:49:32 Tiago: what do you say 16:49:47 we have already done some implementation of quotas with domains... 16:49:54 and projects and users 16:50:13 maybe we can extend that to the POC 16:50:39 VINOD_, schwicke : i think extending to the poc is a good idea 16:50:42 Yes, definitely myself schwicke can do it 16:50:57 i will try to do it 16:51:00 any deadline? 16:51:04 I'm thinking on the keystone part 16:51:09 next meeting I guess :) 16:51:14 no deadline 16:51:28 the new policy json already define some important roles for multitenancy 16:51:28 im not sure yet, but maybe me and raildo can tackle one of the solutions 16:51:37 yeap 16:51:37 +1 16:51:50 So, i will check on quotas 16:51:50 tellesnobrega, raildo : on keystone, right? good. 16:51:58 yes 16:52:00 tiamar: yeap 16:52:15 #action schwicke, VINOD_ to try to stick hierarchical quotas in the poc 16:52:31 #action vishy to experiment with name caching 16:53:08 ok next week we can take a look at anything that is produced 16:53:41 ok 16:53:42 #action raildo tellesnobrega to work on nested projects 16:53:43 ok 16:53:45 thank you vishy 16:53:47 putting more levels in keystone and actually passing the scope separately would be cool 16:53:50 alright 16:54:00 I will see you guys next week! 16:54:04 see you 16:54:06 see you! 16:54:10 see you....bye... 16:54:14 bye 16:54:23 Wishing all a nice weekend 16:54:34 #endmeeting