15:00:08 #startmeeting Ansible Core 15:00:08 Meeting started Thu Nov 30 15:00:08 2017 UTC. The chair is thaumos. Information about MeetBot at http://wiki.debian.org/MeetBot. 15:00:08 Useful Commands: #action #agreed #halp #info #idea #link #topic. 15:00:08 The meeting name has been set to 'ansible_core' 15:00:19 Hello 15:00:44 #chair sivel 15:00:44 Current chairs: sivel thaumos 15:00:47 gm! 15:01:21 good morning, indeed. unemployeed for a couple of days, and get to relax :) 15:01:23 .hello2 15:01:24 maxamillion: maxamillion 'Adam Miller' 15:01:30 * gundalow waves 15:02:06 sivel: \o. 15:02:09 sivel: \o/ 15:02:20 #chair maxamillion gundalow 15:02:20 Current chairs: gundalow maxamillion sivel thaumos 15:02:51 Enjoy the rest of your week! 15:03:05 looking forward to seeing you next week 15:03:17 \o/ 15:06:18 everyone drags into thursday's meeting 15:06:22 Kind of light on attendees 15:06:27 yep 15:06:41 they all start stumbling in 10-15 after 15:06:49 lol 15:06:53 which I find funny since I am up the earliest. 15:06:56 also have interal meeting that conflicts 15:07:02 oh yeah 15:07:05 that's right 15:07:10 Seems something should be done about that 15:07:14 I'll add "not super punctual" to my new-hire notes ;) 15:07:14 #chair bcoca 15:07:14 Current chairs: bcoca gundalow maxamillion sivel thaumos 15:07:35 agreed sivel, 15:07:42 sivel: +1 15:07:48 I forget about that internal meeting because it isn't on my calendar. 15:08:11 I'd just start and we can poke people as needed 15:08:25 +1 15:08:47 #topic To general apis or to not general apis, that is the question 15:09:16 I feel like we will likely have agreement here, but we'll have to decide if we have enough votes or we need more people 15:09:31 privateip: 15:09:35 We've had a recent influx of "generic API" modules being submitted lately 15:09:47 I've declined one recently 15:09:56 I just noticed we had cnos_restapi yesterday 15:10:12 which honestly looks almost just like the `uri` module 15:10:20 if possible, can you provide a couple of links to reference for others who'd be interested. 15:10:29 one moment 15:10:39 https://github.com/ansible/ansible/pull/33326 15:10:44 That is the one I found yesterday 15:10:51 -1 on 'thin api wrapper modules' 15:11:11 ^ iirc we already have a 'no thin wrappers' entry in developer guidelines 15:11:36 This is one that we declined: https://github.com/ansible/ansible/pull/30767 15:11:41 `fortios_api` 15:11:49 * abadger1999 rolls out of bed 15:12:05 @abadger1999 the trick is to bring computer to bed 15:12:05 #chair abadger1999 15:12:06 Current chairs: abadger1999 bcoca gundalow maxamillion sivel thaumos 15:12:10 bcoca: can you point me to that page, I can go find it likely, but if you know where it is 15:12:11 ? 15:12:20 thanks @sivel 15:12:24 im googling as we type 15:12:32 I am pretty sure we have a general agreement on no generic API modules 15:12:37 I'm a little bit split on this because I do see it a bit as it more or less allows to advertise to users that ansible can support those APIs "natively" but also, it seems like an anti-pattern and I'd rather just have a section of the docs that says something like "so you need to talk to a REST API from your playbook? here's how" 15:12:40 I just want to make sure we all agree, and it is official 15:13:15 the cnos_restapi, looks almost like the uri module. Supports a url param, a body, a method... 15:13:33 Does anyone here need me to make any cases/arguments? 15:13:33 i cant find anything in docs anymore ...' 15:13:42 or do we feel like we can vote? 15:13:54 Do we have any good examples of what roles that cleanly wrap around URI that we can direct peoople to? 15:13:55 I feel like we can probably vote, but I can debate more if needed 15:14:07 I think that's a safe bet sivel... 15:14:26 gundalow: unsure, I mean, use the `uri` module is a safe bet 15:14:40 I'm mostly leaning towards a -1 for 'thin wrapper api modules' but it's a -1 with strong feelings behind it, I'm open to opinions in support of allowing them but at this time I don't see the real benefit 15:14:46 if the `uri` module isn't meeting their expectations, we could investigate that and resolve 15:14:49 without * 15:14:57 sivel: +1 15:15:02 so we have 3 for -1 right now 15:15:09 include me as a -1 as well 15:15:11 thaumos / gundalow / abadger1999 ? 15:15:15 4 for -1 :) 15:15:30 sivel: sorry, I mean get_url/url 15:15:31 how manay votes do we need to be considered quorum? 15:15:32 I think I am okay with api wrappers. 15:15:40 But I'm okay being outvoted. 15:15:52 abadger1999: oh? why so? 15:16:00 Things that api wrappers can do that uri cannot 15:16:20 maxamillion: unclear, we haven't defined that as of yet. But my recommendation is majority of 5, which we have 15:16:21 authentication that isn't part of the url standard. 15:16:21 abadger1999: its the 'thin' part sivel and I are against 15:16:28 mnemonics for any boilerplate 15:16:42 (urls, the authentication scheme, etc) 15:16:45 abadger1999: fair 15:16:49 I feel like most of these are probably just handling auth on the top layer 15:16:51 abadger1999: if module only does authentication on top of rest api ... i think its not worth including, i would expand uri module to support other auth methods 15:17:06 Probably a few other things like that. 15:17:14 they could create a login module, but that wouldn't be much different than auth in one module, and use uri for the rest anyway 15:17:26 ^ login module makes more sense to me 15:17:27 bcoca: ++ 15:17:27 I think that it would be better to have more targetted modules. 15:17:31 But I would not demand it. 15:17:36 should we define what is and isn't allowed as an API wrapper? "To be an accepted module that wraps an API, it must clearly extend beyond what get_url does in a meaninful way ... etc, etc, etc ... wordsmithing goes here" 15:18:03 effectively I am more looking for a module designed to interact with a single facet of an API 15:18:08 errr rui 15:18:09 uri* 15:18:10 not just general interact with an API generically 15:18:16 If there was a cli tool then I'd be okay with saying don't give us this module, just use the CLI tool via command (or write separate modules mirroring each of the CLI tool's subcommands) 15:18:27 that is what `uri` is for, to interact with APIs generically 15:18:48 this is not just for api, i would say it is same for cli interface/etc 15:18:54 thin wrapper modules are not useful 15:19:11 tar: args=' ' < bad tar module 15:19:25 Does anyone feel like our vote is insufficient in number to make this decision? 15:19:47 Is what's a wrapper black & white, or grey? 15:19:50 i believe this was always part of our criteria (just cannot find it) 15:20:03 bcoca: I felt so too, but I didn't see it either 15:20:08 gundalow: all ansible modules can be considered 'wrappers' .. the issue is 'thin wrapper' 15:20:55 In both cases, these modules can pretty much do exactly what `uri` can do, in in the cnos_restapi case, it accepts nearly the same params 15:21:06 sivel: Are you only talking about rest API or also about python APIs? 15:21:06 and we can effectively classify "thin wrapper" as, "we can easily replace that module with the uri module"? 15:21:22 abadger1999: in this case, I am talking about http apis 15:21:32 maxamillion: no,i would say that 'transparent passthrough' is a better definition 15:21:33 apologies for not being super clear on that 15:21:50 cause a tar module that just has a 'args' option, is also a 'thin wrapper' 15:22:03 I mean, we have modules that are nearly empty, and use a python API to do it's work, because the python API is that robust 15:22:06 I'm not against that 15:22:13 agreed 15:22:17 sivel: So... a python library that is a thin wrapper around the REST API would be okay? 15:22:17 bcoca: +1 15:22:38 abadger1999: yes, as long as it wasn't generic, like this module can do anything the API does 15:22:42 Cool. 15:22:44 abadger1999: module has to have 'value added' 15:22:48 as opposed to being limited to 1 "facet" 15:22:56 abadger1999: yeah, that specific case is what makes things a little unclear to me 15:22:59 sivel: Mmm... 15:23:06 Wait, that's not quite what I was asking 15:23:06 like we wouldn't want an "openstack_all_the_things" module 15:23:09 if you cannot use module at all w/o deep knowledge of the underlying system options .. i think module does poor job 15:23:35 abadger1999: shell <= bad module, but needed as a fallback, i would argue url is same 15:23:40 abadger1999: I may misunderstand, but shade is a wrapper around a rest api, and the mudules are pretty thin 15:23:43 we dont need other modules that do same 15:23:47 Say you have a python library that presents a generic python API to a service. Then someone submits a python module that calls that generic python API... is that okay? 15:23:54 I am ok with that, just not if we created a `shade` module 15:24:12 sivel: but openstack modules are pretty good at having detailed options, with good descriptions and validation, that most 'logic' happens in shade is ok 15:24:13 sivel: K. So that's probably a better thing to target here than "thin api wrapper" 15:24:30 abadger1999: if it deals with ` "facet" of the API, and not the full API 15:24:41 sivel: Sounds like you'd be okay with a thin api wrapper that used a rest API.... the secret is in how much the module does. 15:24:46 part of this is due to arbitrary arguments, and not being able to be explicit and document 15:24:57 i think you are boht focusing too much on API side vs 'value added' by module 15:25:21 I think I am failing on some of my argument, yes, but I feel like most of you understand my point :) 15:25:29 So a thin wrapper of the whole api is bad but a thin wrapper that only creates and deletes hosts in a cloud Api sounds like it would be okay, right? 15:25:38 abadger1999: yes 15:25:41 Cool. 15:25:46 because the module is targeted and understandable 15:25:49 * mordred reads scrollback real quick 15:25:50 abadger1999: not a thin wrapper as much as a good interface 15:25:51 I think we should define our rul along those lines then. 15:25:56 lol mordred 15:25:57 Modules should not do too much. 15:26:10 but also not do too little either 15:26:14 mordred: sorry, I am using shade and openstack in my arguments again ;) 15:26:18 we have that defined already I thought, abadger1999 15:26:22 Modules should follow the unix philosophy of do one thing and do it well. 15:26:27 SOmething like that. 15:26:31 abadger1999: yes 15:26:34 sivel: totally fine - it's a good topic to discuss! 15:26:41 ^ Good line to add to docs 15:26:46 * mordred agree that Modules should follow the unix philosophy of do one thing and do it well 15:26:53 #info Modules should follow the unix philosophy of do one thing and do it well 15:26:55 I think as long as this is well documented as "These are the criteria that define a Thin API Wrapper, they are not allowed in Anible, and users should use the uri module for such functionality" then I'm on board ... this might need docs in the development and the user facing sections, but I'd like to suggest we make it very clear somewhere so it's not up to interpretation 15:27:05 but they should also 'add value' , there is little value to a module that is just a transparent passthrough 15:27:16 bcoca: ++ 15:27:24 mordred: I was saying that many os_ modules are thin wrappers, because shade is robust, but we shouldn't have a "shade" module in ansible, that is generic and let's someone interface with a suite of services like that 15:27:39 sivel: 1000x yes 15:28:08 sivel: yes, but the modules 'add value' by documenting/validating the options , its not a 'shade' module with args= 15:28:40 bcoca: ++ 15:28:48 sivel, bcoca: *although* - I could see potential value in having a generic module as a compaion to the others as a "get out of jail" module that peopel could use in the case where we haven't implemented a better module yet 15:28:49 bcoca: yes, I was saying os_ are good and I'm fine with them as an example 15:28:55 I'm okay with thin api modules. 15:29:19 If we split the do-one-thing-well argument from thin api, then I actually become +1 on the first and a -1 on the second. 15:29:21 it's more around what the module targets, it just so happens a generic api module, doesn't target "one thing" 15:29:35 like, for most rest things, that's the uri module ... in the openstack case (to abuse the example) using the uri module would suck because you'd have to do a keystone auth token dance, so having an os_uri module that does that for you *might* be a useful utility module 15:29:38 Combining the two ideas together I'm a vague -0.75 or so on the combined arguments 15:30:10 (which is me agreeing with the sentiment but thinking there might be judgement-call cases where an argument could be made for an exception) 15:30:11 mordred: that is more a case for 'login modules' than actual thin api wrapper 15:30:11 If I am failing at describing my argument I apologize, I feel like we almost got lost along the way 15:30:20 bcoca: yah 15:30:50 gundalow: did you ever give your vote? 15:31:05 thaumos: I'm +0 15:31:10 k 15:31:11 To bcoca's point, I think that a pass through can add value 15:31:27 So, using the case of cnos_restapi (https://github.com/ansible/ansible/pull/33326) in that realm 15:31:32 lets add 2 things (if not there alreaydd, i swear we had this discussion 2yrs ago) 15:31:34 abadger1999: in what way? (I'm not disagreeing, just curious what you mean by that) 15:31:50 If the rest api is well enough defined, having a module that's a thin wrapper around that can still be good. 15:31:50 I don't actually care about having wrappers, as long as most of the code is pushed into module_utils, rather than different people reimplementing code badily in modules 15:32:03 - modules should be of narrow focus, do one thing, do it well 15:32:07 But we'd have to look at individual cases to figure that out. 15:32:23 For instance, you could have a thin wrapper around an api with well-defined values. 15:32:32 - modules shoudl 'add value', they dont need to have a lot of code, but they should not be 'transparent passthroughs' that require user to know all underlying options of api/tool 15:32:47 I understand at some level that cnos are switches, so a module would be like, cnos_switch_port or something 15:32:53 then one benefit of the ansible-module is that ansible-doc would have an explanation of the values you could give. 15:33:03 rather than just saying, go read API docs and use this module to do stuff with arbitrary arguments 15:33:04 That's not the case with the modules we looked at yesterday, though. 15:33:11 abadger1999: yes, the 'thin wrappers' we were discussing dont even do that 15:33:21 right, but to sivel's point. the module in question isn't doing that abadger1999 15:33:35 right. But I want to separate baby from bathwater here. 15:33:53 ^ see if my phrasing is sufficient 15:34:09 there is no value to having a module named `foo` if the user is going to pass a url path of https://foo/api/bar 15:34:17 bcoca: I like the last part: require user to know all underlying options of api/tool 15:34:23 bcoca: the rest muddles it for me 15:34:28 as well as building the API post body from scratch too 15:34:42 that module roughly gives us nothing 15:34:43 I got lazy :-P 15:35:17 I think at this point we just need proper descriptions 15:35:21 yes 15:35:29 bcoca: started a few comments above 15:35:33 abadger1999: yeah, I follow ... +1 15:35:39 - modules should be of narrow focus, do one thing, do it well 15:35:43 "modules should not require that a user know all the underlying options of an api/tool to be used. For instance, if what the legal values for a required module parameter cannot be documented that's a sign the module would be rejected" 15:35:50 bcoca: ^ Something like that okay? 15:35:53 - modules shoudl 'add value', they dont need to have a lot of code, but they should not be 'transparent passthroughs' that require user understand at some level that cnos are 15:36:58 abadger1999: I am fine with that, we'll have to run it by dharmabumstead in a PR and whatnot 15:37:17 Does anyone have any problems with that, or additions/suggestions? 15:37:18 abadger1999: yeah, I like that ... maybe add something like "the module should have a concise and well defined functionality" 15:37:24 maxamillion: ++ 15:37:41 15:37:46 Are those two different guidelines? 15:38:02 I'm +1 to both, though. 15:38:17 They are probably 2 bullet points 15:38:25 but go well with each other 15:38:43 * Modules should have a concise and well defined functionality. Basically, follow the UNIX philosophy of doing one thing well. 15:38:54 * Modules should not require that a user know all the underlying options of an api/tool to be used. For instance, if what the legal values for a required module parameter cannot be documented that's a sign the module would be rejected 15:39:32 please do not use the phrase "add value" in ansible documenation 15:39:36 i hate that phrase 15:39:39 "eturn codes from modules are actually not significant" <= im finding that some of our docs are just wrong 15:40:07 Great, I'll handle updating the docs for this 15:40:21 sivel: Thanks, ensure that dharmabumstead reviews before merging 15:40:32 gundalow: absolutely 15:40:36 Thanks 15:41:50 jtanner: +1 15:42:03 #action sivel to update docs with guidelines for modules 15:42:14 #action sivel to sync with dharmabumstead for review. 15:42:22 woot 15:42:26 any last items for this topic? 15:42:45 So this will be a rule for new modules from now 15:42:52 yes 15:42:58 Do we want to do anything about existing modules? 15:43:03 yep, even though I feel it's always been a rule. 15:43:44 Do we know how many there are? 15:43:52 sivel: probs worth adding to http://docs.ansible.com/ansible/latest/dev_guide/developing_modules.html#should-you-develop-a-module as well 15:44:02 gundalow: +1 15:44:03 thaumos: not sure 15:44:23 and by name? I can look at analytics to guesstimate some usage 15:44:50 I know it won't be accurate, but it's a data point 15:45:07 I'll take that action to figure out what to do with existing 15:45:19 we didn't kick out aws.py ;-) 15:45:36 do we have an aws.py generic module? 15:45:40 ec2.py you mean? 15:45:47 someone submitted a boto module and we declined that 15:45:59 ec2 module almost was like this back in the day 15:46:08 I recall that being a long back and forth discussion 15:46:11 yeah, ec2.py 15:46:46 * abadger1999 doesn't use amazon for his cloud needs, can you tell? 15:46:47 meh, we're effectively kicking it out with ec2_instance module 15:47:01 Well... deprecating/replacing. 15:47:28 I think the ec2 module is a HUGE exception and legacy to this discussion. it was the basis of have modules do one thing well 15:47:31 I guess I'm just saying... we don't have precedent for removing a module that we think is coded wrong with no alternatives. 15:47:56 So we'll be breaking new ground :-) 15:47:59 either way, I'll still take the action of what steps we should take. 15:48:31 #action thaumos to figure out what to do with existing modules that do not follow the guidelines of do one thing well. 15:48:49 anything else for this topic before I close it? 15:48:58 FYI in networking there were was a whole dir of modules that just no longer worked (and hadn't in the previous release) so we just git -rm'd them 15:49:22 stopped working at the remote system had changed so much (bad/no API versioning) 15:49:23 @sivel, will you close the cnos pr? 15:49:29 thaumos: yes 15:50:06 gundalow: how do you handle that from an user facing perspective? ... like, what's the public-relations side of taking that kind of action? 15:50:16 I've got the tab open, just waiting for the meeting to end before running away 15:50:26 most likely email project list 15:50:32 maxamillion: In this case it was toally broken so we knew no one was using it 15:50:58 gundalow: were they community support status: preview? 15:50:59 no one cared as we had no bugs reported about it nolonger working 15:51:03 abadger1999: yup 15:51:18 yeah, in this case it was a safe bet. If anyone came back and said, why you take this away from me?! we could ask, "HOW THE HELL DID YOU GET IT TO WORK!?" 15:51:20 gundalow: fair 15:51:25 Did we try emailing the community members responsible for them? 15:51:34 IT@S FINE 15:51:59 gundalow: the thing I worry a little bit about with that is... it's tons easier to get changes into an existing modules than to get a new module in. 15:52:03 Just saying we have deleted stuff before 15:52:17 15:52:39 $network_partner will be creating new modules for the updated platform 15:53:00 though they didn't want to maintain/update the old modules 15:53:01 anyway 15:53:04 15:53:13 15:53:15 Just saying we have deleted stuff before, and giving that as an example 15:53:15 Cool. 15:53:16 :) 15:53:31 ok 15:53:41 I am going to close the topic 15:53:44 #topic Open Floor 15:53:46 ... 15:53:47 .. 15:53:48 .. 15:53:49 oh 15:53:51 . 15:53:51 haha 15:53:54 lol 15:53:57 2.4.3 release 15:54:08 #topic Ansible 2.4.3. release 15:54:16 We've been doing 1 release per month for 2.4.x 15:54:26 But the rate of bugfixes has slowed significantly. 15:54:52 And we have the Winter Holiday Season taking people out of work. 15:55:03 So I'm thinking of two changes for 2.4.3 15:55:18 (1) Release will be sometime in January (maybe mid-late January) 15:55:34 (2) Put out betas every two weeks instead of weekly. 15:55:48 +1 +1 15:55:49 both are totally fair. 15:55:56 +1 +1 15:56:08 with the obvious though, if we get an escalation, we may have to shift that 15:56:14 +1 15:56:14 Yep. 15:56:16 +1 15:56:18 2.5 Core Engine Freeze and Module Freeze: 15 January 2018 15:56:18 the likelihood that happening is slim 15:56:26 errr ... +1 +1 ... however that should be notated 15:56:44 Cool. I'll put out a tentative schedule when I email ansible-devel@googlegroups with the first beta. 15:56:52 sounds good abadger1999 15:57:00 \o/ 15:57:11 could you update mrike as well abadger1999 15:57:49 thaumos: Sure. I'll talk to you in slack abot doing that. 15:57:55 okie dokie 15:58:02 I'll be happy to do it also, either way :-D 15:58:15 #topic changing thursday's meeting time 15:58:28 should we do this since it conflicts with an internal meeting? 15:58:52 or reschedule the internal meeting :) 15:58:59 Stick a doodle pool on the agenda + email list and see if we should move this 15:59:06 sivel: internal meeting is big & cross-department 15:59:08 +1 to move 15:59:13 abadger1999: earlier? 15:59:15 :P 15:59:18 i'd be +1 to later 15:59:18 It's too early for me anyways. 15:59:20 make it one hour later? 15:59:28 this is 9am, which is already hard for me to make on time ;) 15:59:32 gundalow: thwap 15:59:33 come on abadger1999 work est hours like I do! 15:59:34 well, starts at 9am 15:59:56 9:30am CST or later :) 16:00:01 lol 16:00:21 So I think we should ask teh community 16:00:27 thaumos: Kids, school, other pieces of life ;-) 16:00:44 thaumos: internal meeting? 16:00:46 aren't we the community? 16:00:52 :-P 16:00:58 thaumos: I mean the people without `@` 16:01:07 I know what you meant 16:01:11 :P 16:01:14 thaumos: I don't know about an internal meeting ... will nag offline 16:01:18 just trolling you because I luffa you 16:01:42 Also internal meeting is only once every two weeks 16:02:52 still worth potentially moving back one hour because of that. 16:02:56 just a thought 16:03:09 nod 16:04:39 will you raise the question for us gundalow? 16:05:29 thaumos: sure 16:05:34 thank you! 16:05:46 #topic open floor 16:05:55 anything else before I endmeeting? 16:06:16 alrighty, thanks everyone! 16:06:19 #endmeeting