16:02:13 #startmeeting Networking Working Group 16:02:13 Meeting started Wed Jun 8 16:02:13 2016 UTC. The chair is privateip. Information about MeetBot at http://wiki.debian.org/MeetBot. 16:02:13 Useful Commands: #action #agreed #halp #info #idea #link #topic. 16:02:13 The meeting name has been set to 'networking_working_group' 16:02:40 short list of topics today 16:03:04 biggest agenda item is continuation of facts discussion 16:03:56 Excellent 16:03:56 #topic Facts 16:04:13 i had previously posted a concept of generalized network facts 16:04:14 https://gist.github.com/privateip/562aa722b7306f25f6d414cab38e8eae 16:05:04 mhite: i know you had some concerns 16:05:05 yep, love that, privateip! 16:05:19 mhite: love to hear! 16:05:28 So I have several comments on this. I started work on creating the equivalent for BIG-IP devices and several things jumped out at me. 16:05:48 mhite: love to hear your insight 16:05:57 as I want to do the same for OpenSwitch soon 16:05:59 1) I'm guessing the output you present is mostly Cisco-esque 16:06:17 2) We need to not only define the keys, but also what should go in the values of said keys 16:06:24 For example: 16:06:36 (one sec, creating a gist) 16:06:45 nice! :) 16:07:26 https://gist.github.com/mhite/5042eac9a7a630db730c6162cb0c4682 16:07:45 You can see the BIG-IP equivalent I started doesn't really entirely fit the same mold 16:08:01 This begs the question... do we care? 16:08:14 Or do we just care that the key names are standard, and that the contents of said key names are somewhat aligned? 16:08:16 yeah thats a fair point 16:08:19 Or is it free reign? 16:08:37 my hope was we could achieve some (very basic) baseline set of facts 16:08:38 How to define a schema has been hashed out in the industry 16:08:52 bah I dont want to go there 16:09:06 ;) 16:09:25 i guess what i gather from this is the "base" might be to "basic" to be functional 16:09:25 So I shouldn't mention OpenConfig? 16:09:28 ;) 16:09:41 Lots of yang models defined here: https://github.com/openconfig/public/tree/master/release/models 16:09:47 damn where is an op to use the kick function when you need one :) 16:10:00 Although the models aren't really ideal for our purposes, they at least provide guideposts 16:10:05 * privateip ignoring mhite for the rest of this meeting 16:10:09 hahah, sorry 16:10:14 :) 16:10:26 Also, in your example, you have a fact which contains an entire config 16:10:42 yeah that one i know is very route/switch specific 16:10:43 In BIG-IP land, you can pull a binary file called a UCS. 16:10:58 its an optional subset to gather that relates more to networking modules 16:11:02 There's also SCF (which is text-based), but it is partial and is also not available via the API 16:11:24 Ok, sorry, I just think we need to define a schema if the goal is to get consistency across manufacturers 16:12:16 Also, it your example, it looks like your view of interfaces includes layer 2 and layer 3 interfaces under one hierarchy. BIG-IP has a different view: VLANs, self-IPs, physical interfaces, trunks, etc. 16:12:38 i really dont want to get that formal with it so lets say for facts modules we build them to order 16:12:54 What does 'build them to order' mean to you? 16:12:59 i just dont think its worth the headaches of trying herd cats on a common schema 16:13:05 i mean build them per platform 16:13:12 for what makes sense for that platform 16:13:34 we can still build a base for route/switch but is loosely common but not exact 16:14:01 I live "loosely common but not exact" part. :) 16:14:07 hahaha 16:14:13 and is this the way on server side, too? 16:14:19 I'd also like to understand if there was some benefit to namespacing them using ansible_net_* rather than an entry marked {'delegate_facts': {}} under normal facts 16:14:20 no 16:14:21 say facts between ubuntu and centos 16:14:41 we try to normalize where we can across server os 16:14:57 we can do the same with route/switch just not generic enough for all network 16:15:11 mhite: to align with how we do facts with servers 16:16:02 if we put it in the same top-level namespace, there is no good way to just target network facts (or more generally, 'delegated'/proxy factS) 16:16:18 you mean besides the key? 16:16:20 you have to manually iterate through said top-level namespace and filter 16:16:28 yeah thats how facts work today 16:16:37 but they are all server facts 16:16:56 sorry perhaps im missing your point here 16:17:01 so you could have server facts and proxy-facts (ie. switch facts) in the same top level 16:17:10 if you don't disable collection of local facts 16:17:20 sure for instance, ansible_hostname and ansible_net_hostname 16:17:27 exactly 16:17:41 where's the problem with this? 16:17:43 so we prevent collisions by namespacing using a variant key name 16:18:09 but there is no collision 16:18:23 ...because you prepend the facts with ansible_net_* 16:18:48 I'm just trying to pose the question of why are we mixing the locally collected facts into the same data structure as the remotely/proxy collected facts? 16:19:39 i guess i look at it the other way.... what harm does it cause? 16:19:40 Why not have a hierarchy that separates the locally collected facts from the remotely (proxy) collected facts 16:20:14 That way if you want to do something special with JUST the remotely collected facts, you don't have to manually iterate looking for keys that start with ansible_net_* 16:20:38 Rather, you could just look through some new key name that has all the remotely collected facts under them 16:21:00 sounds reasonable, though I might miss the point... 16:21:01 but why are you iterating over facts to begin with? 16:21:35 thats the part im missing 16:21:53 if i want a value i dont have to iterate over anything, i just specify the key path 16:22:16 I was suggesting that you would need to iterate over the facts to filter on ansible_net_* if you wanted to drop ansible_net_* facts into its own structure to do something with 16:22:30 if you didn't separate them out into their own hierarchy 16:22:51 We can't presume the only use case for facts is to target a single known key name and do a specific thing with it 16:23:23 sorry im totally missing the use case here but.... 16:23:49 And this is high-level issue; it's whether or not to co-mingle locally collected facts and remote/proxy collected facts into the same data level in a data structure hierarchy 16:24:33 sure i understand that part, i just dont understand why its a problem if the they are commingled 16:25:43 You've already name spaced them out using ansible_net_*... why not just put that into a proper key -> {'ansible_proxy_facts': {'ansible_hostname': 'etc', 'ansible_fact2': 'etc2'}} 16:25:44 that said, if we aren't building a common consistent set of facts for network, you can build the BIGIP fact structure exactly as you have outlined 16:26:35 I think I can make a better case and more thoroughly explain the issue if I write out something a bit more formal. 16:26:44 i get that ... so to reference something now its ['ansible_proxy_facts']['ansible_hostname'] instead of ['ansible_net_hostname'] but what does it get me besides more typing? 16:27:07 * privateip not trying to be a PITA, just trying to understand 16:27:14 Even just doing a debug output on just the remotely collected facts is greatly simplified, for example 16:27:21 No problem, sorry if I am obtuse 16:27:43 because then you can have debug output all of ansible_proxy_facts 16:27:47 so we have filter argument for filtering facts 16:27:58 does that not solve the problem 16:28:00 rather than ALL facts, including the locally collected ones of the server you are running ansible on 16:28:22 the filtering facts presumably is only going to filter what has been collected by the network fact collecting module 16:30:32 Imagine you have gather_facts on in your playbook. This will make your ansible server include locally collected facts about the ansible server in the facts. IE. ansible_hostname, etc. And then you get all your proxy collected facts for your network device when you run the network fact module. Those show up as ansible_net_hostname, etc. in the same level of the facts. Now say I want to use debug to output the network collected facts. There is no easy 16:30:32 way to do this, because if you dump just the facts, you'll see them all -- local and remote. Why not make a top-level key under the normal facts key the separates out local from remote. 16:31:01 ok now i understand your use case 16:31:10 the filtering discussion was the key 16:32:27 i see pros and cons both ways 16:32:28 Cool, like I said, this isn't just about network devices but more about the co-mingling of facts collected on the ansible server along with the facts a fact collecting module might contribute (I keep calling these "proxy facts") 16:32:47 yeah we should carry this discussion over to #ansible-devel 16:33:05 this is much more than just network 16:33:23 this really impacts any module that is API driven using connnection=local 16:33:27 It seems silly to namespace this using prefixes when we've already got a data structure at our disposal. we don't _have_ to keep it flat 16:33:38 yes 16:34:01 technically its easy enough to accomplish 16:34:04 because using ansible_net_* is really just a very basic way of namespacing and avoiding collisions 16:34:16 im more thinking about user expectation 16:34:37 yeah, i think it's worth a wider discussion outside this W.G. for sure 16:35:11 * kei agreed but prefer to have a continued discussion here as well. :) 16:35:15 #action privateip to widen and generalize discussion about facts 16:35:39 * privateip to get head examined for density 16:35:45 :) 16:36:07 haha 16:36:19 #topic netvirt 16:36:34 hi 16:36:39 the floor is yours 16:36:51 brief update from me - we have received the Ok for GPLv3 (previously MIT) 16:36:59 nice 16:37:13 i'm busy documenting each of the modules, as you guys request python module to have some verbage 16:37:19 yep 16:37:31 that means i have some work to do, just to be clear - each modulde in python wil get one .md 16:37:34 you have the link to the doc string standards right? 16:37:47 nope, is it in the guidelines for writing mods? 16:37:58 might as well paste it in for me to be sure 16:38:04 no you should be documenting the module in the module docstring 16:38:14 thats how the Ansible documentation system generates the docs 16:38:35 okay, ..so no seprate md for it? 16:38:47 can you paste the info, i will check 16:39:07 http://docs.ansible.com/ansible/developing_modules.html#documenting-your-module 16:39:34 yeah, so defo not in the modules 16:39:42 we focussed on getting the code / api right 16:39:50 as usual.. code before docs :/ 16:39:56 lol 16:40:10 * kei :) 16:40:13 ok once you are ready we can review the PR 16:40:22 come on its true 16:40:22 ;) 16:40:26 looking forward to it 16:40:30 yes, request to keep it open, will add the doc strings now in 16:40:35 great 16:40:40 #topic Open Discussion 16:40:41 that will save me pain generating an .md for each of the 39 mods 16:40:47 i'm done! 16:40:54 anyone have anything else? 16:41:04 ansible fest update? 16:41:09 ohhhh thanks 16:41:13 i almost forgot!! 16:41:32 https://www.ansible.com/ansiblefest 16:41:38 7/28 - SF 16:41:47 just come, you wont regret it! :) 16:41:55 seriously though 16:42:06 Where can I update the 2.2 Roadmap 16:42:07 i wish, i'm in Amsterdam at devopsdays 16:42:11 we are, for the first time, going to have a "networking hub" 16:42:21 i'm happy to name drop ansible in my workshop 16:42:29 networking hub? 16:42:44 the networking hub will be a dedicated space just for folks interested and doing network automation with ansible 16:42:52 Going to miss it :( in India currently 16:42:56 we will have a demo network + tower running 16:43:06 I remember when Ansible fest was $100 ;) 16:43:07 demo network! yes! 16:43:07 SKG_NET: send a PR for roadmap 16:43:22 lol me too 16:43:37 buy 3 get one free! :) 16:43:38 the networking hub will be open all afternoon 16:43:52 is that still one day fest? 16:43:57 come hang out and lets discussion networking + ansible and how to take over the world 16:44:00 and hub in the afternoon? 16:44:01 yep one day 16:44:05 yep 16:44:13 morning is general session 16:44:16 afternoon is tracks 16:44:21 new format 16:44:24 multiple sessions, then? 16:44:30 yes three tracks 16:44:33 wow! 16:44:46 that's why three time more!? :) 16:44:54 technical, user stories, best practices (i think those are the three) 16:44:57 + networking hub 16:45:21 all will be recorded and posted as well? 16:45:30 all afternoon session yes 16:45:36 nice! 16:45:40 we typically dont record the general session 16:45:45 you will be there right? 16:45:46 :) 16:45:54 privateip: i'd like to push them to do so this go round 16:46:14 jimi|ansible: push the morning session recorded? 16:46:18 yeah im with you on that 16:46:21 i need to run gentlemen, speak next week 16:46:34 kei: yes 16:46:41 jimi|ansible: nice! 16:46:48 but i'll be there, in any case 16:46:56 excellent 16:47:08 any other topics before we call it a day? 16:47:14 but having recording helps me to encorage others to come for the future fest. :) 16:47:42 ok thanks all ... see you next time 16:47:44 #endmeeting