16:35:32 #startmeeting keystone-office-hours 16:35:32 Meeting started Tue Jul 2 16:35:32 2019 UTC and is due to finish in 60 minutes. The chair is cmurphy. Information about MeetBot at http://wiki.debian.org/MeetBot. 16:35:34 Useful Commands: #action #agreed #help #info #idea #link #topic #startvote. 16:35:36 The meeting name has been set to 'keystone_office_hours' 16:35:46 i just have to be able to transit between locations and airport/etc 16:35:49 so, can't do video atm 16:36:12 irc makes it easier for others to catch up anyways 16:36:29 o/ 16:38:46 oh - good call 16:39:07 i suppose we should start here https://review.opendev.org/#/c/668523/2 16:39:36 i should ask - is everyone ready? 16:39:40 * cmurphy ready 16:40:22 alright - 668523 is trivial 16:40:25 Well, that one's easy. It's approved. :-) 16:40:31 sweet 16:40:40 next one is https://review.opendev.org/#/c/666085/9 16:40:57 i wanted to keep the ksa logic separate from everything else 16:41:10 nothing in this patch actually uses it, it's just laying the ground work 16:41:29 one area of improvement i can think of though, is additional testing 16:41:42 but it would likely have to be mocked pretty heavy in order to work 16:43:04 You mean unit testing? 16:43:19 right - if we wanted to unit test the functionality of that patch 16:43:37 i was going to bring this up in a subsequent review, since it's related to that, too 16:43:40 I'm a little inclined not to worry too much about it since we're expecting to iterate on the implementation quite a bit. 16:43:51 Which I realize violates every principle of TDD. 16:44:03 yeah - i was also thinking about setting up a function test suite for this stuff, too 16:44:20 But I also don't want someone to spend a ton of time writing tests for code that we end up not using. 16:44:24 (the last patch in the series touches on that a bit) 16:44:41 Yeah, that seems good too. 16:45:06 For now, maybe look at it as a prototype and just write the tests we absolutely need? 16:45:23 * bnemec feels so dirty for suggesting we not test code 16:45:30 outside of testing, does anyone have questions about the connection logic itself? 16:47:59 i've been wondering if there's a way around making the connection a global 16:48:04 no specific suggestion though 16:48:32 cmurphy do you want it to be a property of the Enforcer object instead? 16:48:36 or something along those lines? 16:49:47 maybe, but i suppose you might instantiate multiple enforcers and you wouldn't want to have that many live connections? 16:49:58 probably not 16:50:42 I could document it as an optimization 16:52:42 i think it's probably fine as is 16:52:59 pass in a connection, if none is passed in, attribute. 16:53:12 s/attribute/property that is on-demand built 16:53:41 it allows for the same mechanism as global without explicitly expecting global(s) 16:53:59 can be iterated on down the line 16:54:05 no reason to fix that now. 16:54:48 * lbragstad nodes 16:54:57 * lbragstad nods* 16:55:11 alright - anything else on 666085 16:55:28 I left a comment about the endpoint id. 16:55:47 psh - working ahead 16:55:48 bnemec: good point about it not being the keystone service 16:56:35 ++ 16:57:19 I completely agree that region+service would be easier to handle in a deployment tool though. 16:57:45 maybe worth optimizing in the future 16:58:05 I'd be curious to know what percentage of deployers are actually writing their own configurations vs. using Puppet/Ansible/Chef/etc. 16:58:17 That would inform which use case we should optimize for. 16:58:47 i am reasonably sure almost no one deploys openstack without some kind of deployment tool 16:59:01 yeah 16:59:15 I don't disagree, but I've been surprised before. ;-) 16:59:19 my home lab is built using osa - and i don't even have customers 16:59:27 lol 16:59:53 My home lab is built using devstack. Yes, I'm that guy. :-P 17:00:43 tangent: it would be nice to have a baremetal box to pxe boot with a base image for baremetal devstack deployments 17:01:40 alrighty - anything else on 666085 ? 17:01:52 lgtm 17:02:03 cool 17:02:10 https://review.opendev.org/#/c/666444/7 is where things start to get interesting 17:02:13 FWIW, user survey says "Other Tool" is only 15% of the deployment tooling ecosystem. 17:02:50 the main goal of 666444 is to just get the basic laid down and wait for actual implementation details of the models for another patch 17:03:30 what i think would be really helpful in looking at this patch, is the relationship between the Enforcer and the models 17:03:50 i want to keep the models separate (as their own objects that inherit an interface) 17:04:08 but i found that there is a lot information you have to share between the enforcer and the models 17:05:11 Enforcer.enforce() essentially passes a bunch of stuff through or needs to use composition to set various attributes on the model to limit method signatures with lots of arguments 17:07:15 i tried to capture some of that information in Enforcer's doc strings 17:07:41 At first glance that semes to make sense. They are enforcement models, so it makes sense that they would be pretty tightly tied to the enforcer. 17:08:04 yeah 17:08:25 i wonder if there's a way we could reuse the keystoneauth plugin model for this, where it has a plugin class with a method class as an attribute https://opendev.org/openstack/keystoneauth/src/branch/master/keystoneauth1/identity/v3/password.py 17:08:30 at the same time, i want people to be able to extend an interface if they want to add a new model (as opposed to extending Enforcer) 17:08:43 cmurphy that's a good idea 17:09:55 this is all internal stuff at this point 17:10:00 so we can evolve it 17:10:03 maybe Enforcer has self.enforcer = _FlatEnforcer and Enforcer.enforce() calls self.enforcer.enforce() 17:10:21 and then project_id etc wouldn't need to be duplicated? 17:10:49 i don't think the current way is bad though 17:10:55 how would _FlatEnforces implementation get the project id in question? 17:11:08 _FlatEnforcer's* 17:11:47 hm i guess that doesn't really solve that problem 17:13:48 * lbragstad can document this, too 17:14:36 Like lbragstad said, this is all private stuff right now anyway. If people want to extend it to other enforcement models then maybe we can have a discussion over the best way to expose this then? 17:14:46 ++ 17:14:49 true 17:14:51 Having a specific use case in mind would probably help with the design too. 17:14:57 i can't really think of a better way to handle it at the moment 17:15:05 at the same time - it works 17:15:11 ++ 17:15:13 Ship it! 17:15:22 FILGTM! 17:15:27 alright - moving on 17:15:29 https://review.opendev.org/#/c/667452/3 17:16:01 would probably be good to have tests for this one somehow 17:16:50 yeah - so this is what i was kinda talking about ealier 17:16:52 earlier* 17:17:14 maybe what we can do is add a super *super* basic functional testing frame work in the ksa patch 17:17:44 that only tests to make sure we can instantiate an Enforcer without the connection to keystone (in a devstack) deployment without it blowing up 17:18:05 having that in place would make it a little easier to introduce functional tests here 17:18:12 ++ 17:18:28 (i tested this logic, but i was using the script in the next patch set) 17:19:29 If a functional test framework could replace the test script that would be good. 17:19:36 ++ 17:19:57 i feel like the natural evolution of that script is to just make it an official functional test 17:20:06 Yep 17:20:16 cool 17:20:27 anything else on this patch, outside of testing? 17:22:03 it seems like a good first iteration to me, i'm sure down the road we can find ways to improve the enforce logic 17:22:25 * lbragstad nods 17:22:34 I probably just need to take a closer look. I got nothing useful done last week because downstream, so I haven't been through this part of the series yet. :-/ 17:23:24 ok - well it sounds like having functional testing there is useful so we can do that part in the meantime 17:23:29 finally we have https://review.opendev.org/#/c/667242/7 17:23:35 which is just documentation and a usage example 17:23:43 But like I've said before, I'm pretty much ready to +2 anything that gets us _an_ implementation. If it's horribly broken, we'll fix it. :-) 17:23:57 some of that example is going to get pulled into a formal functional test thought 17:23:59 though* 17:25:21 So to try that I would stand up a basic devstack, pull the series and install it, then run the example.py script? 17:25:40 yeah 17:25:44 Tweaking the example.conf for my devstack, of course. 17:25:44 you'd probably need to edit the project ids in the script 17:25:56 you'll need to create a few limits and the registered limits 17:26:09 and do what cmurphy said, update the project ids in the script 17:26:24 Makes sense. 17:26:33 but yeah - it should work 17:26:51 ok - so to summarize 17:27:17 666085 needs a functional testing framework and a bug open to investigate reusable ksa connections 17:27:41 666444 needs an open bug to investigate pluggable architectures for enforcement models 17:28:04 667452 needs functional testing (built on the action from 666085) 17:28:11 anything else? 17:28:40 i think this script will need to be tweaked for the two-level model? 17:28:54 Maybe a bug for 666085 to look at how to configure the endpoint? 17:29:17 cmurphy: sorry for missing the meeting. we're transitioning to the new adjutant based registration system and i've been swamped with work the past few weeks. 17:29:23 yeah - i developed it to help me write the flat enforcement stuff, i wasn't really thinking about any of the strict-two level properties 17:29:31 bnemec ++ 17:29:40 no worries knikolla 17:30:47 outside of those actions, does anyone have anything else to add? 17:30:57 lbragstad: and i guess next steps after all that would be implementing enforce() for the two-level model 17:31:10 cmurphy correct 17:31:25 fun :) 17:31:31 i was thinking it would be easier to implement that once the functional testing is in place 17:31:40 for sure 17:31:46 then we could actually use TTD to get it done 17:31:54 opposed to a hacktastic script 17:32:21 Yeah, right now we're mostly trying to define the public interface so other projects can start looking at how it would integrate with them. 17:32:35 true 17:32:39 Additional enforcement models can be done in parallel. 17:32:47 a lot of this actually came from johnthetubaguy 17:33:28 i might have to poke someone to help with setting up zuul for the functional testing bits 17:33:40 (we'll need a basic devstack in order to do that) 17:34:59 We have some functional tests in other oslo projects, so we might be able to help with that. 17:35:06 sweet 17:35:51 anything else to touch on for this? 17:35:59 not from me 17:36:01 otherwise - that's about all i had 17:36:31 I'm good too. Thanks again for driving this! 17:36:38 ++ thanks lbragstad 17:36:46 no problem - thanks for taking the time to go through the patches 17:36:55 i'll write up a recap and send it to the ML 17:37:00 sweet 17:37:10 dude 17:37:30 :'D 17:37:30 dude! 17:37:43 #endmeeting