15:59:37 <Qalthos> #startmeeting Ansible Network Working Group
15:59:37 <zodbot> Meeting started Wed Feb 20 15:59:37 2019 UTC.
15:59:37 <zodbot> This meeting is logged and archived in a public location.
15:59:37 <zodbot> The chair is Qalthos. Information about MeetBot at http://wiki.debian.org/MeetBot.
15:59:37 <zodbot> Useful Commands: #action #agreed #halp #info #idea #link #topic.
15:59:37 <zodbot> The meeting name has been set to 'ansible_network_working_group'
15:59:54 <Qalthos> #chair ganeshrn ikhan privateip trishnag
15:59:54 <zodbot> Current chairs: Qalthos ganeshrn ikhan privateip trishnag
16:00:01 <Qalthos> #topic Core Updates
16:00:33 <Qalthos> #info ios_bgp work completed (ansible/ansible#49121)
16:00:44 <Qalthos> #info eos_bgp work started
16:00:55 <Qalthos> #info Fail validate_role_spec plugin if argument_spec is undefined (ansible-network/network-engine#221)
16:01:04 <Qalthos> #info Fix relative path failure in command_parser (ansible-network/network-engine#222)
16:01:11 <Qalthos> #info Released network engine 2.7.4 and 2.6.10
16:02:01 <Qalthos> #link https://github.com/ansible/community/labels/network is where the agenda is located, as always
16:02:34 <Qalthos> So on to the first item
16:03:11 <Qalthos> #topic Handling literal SYN and ?
16:03:44 <Qalthos> yaplej: What did you want to discuss?
16:11:08 <Qalthos> Right, we can circle back to that if he comes back
16:11:23 <Qalthos> #topic cnos_lldp
16:11:32 <Anil_Lenovo> Hi
16:11:42 <Anil_Lenovo> cnos_lldp programmer is here
16:12:23 <Qalthos> Anil_Lenovo: I don't know how consistent I've been with this in the past, but as a new module, we are unlikely to accept deprecated options in a brand-new module
16:12:30 <Qalthos> (specifically provider)
16:13:20 <Anil_Lenovo> I will remove them,
16:13:31 <Anil_Lenovo> what about connection=local ?
16:15:57 <Qalthos> local still works with ansible_user and ansible_password
16:16:33 <Qalthos> Though we are at the point of heavily discouraging its use, especially with new modules
16:16:47 <Anil_Lenovo> ok
16:18:06 <Qalthos> Other than that, there's not a whole lot to the module, so it seems fine
16:18:06 <Anil_Lenovo> You may put the review comment to remove the provider. Can u point to me module without provider ?
16:18:27 <Anil_Lenovo> great
16:19:09 <Qalthos> Anil_Lenovo: https://github.com/ansible/ansible/blob/devel/lib/ansible/modules/network/edgeos/edgeos_command.py is the first one I can think of
16:19:23 <Anil_Lenovo> sure.. I will look into that
16:20:10 <Anil_Lenovo> I was trying to mimic IOS, hence this issue happend
16:21:29 <Qalthos> You should be able to just remove provider form DOCUMENTATION and remove the reference to cnos_argument_spec in main()
16:21:46 <Qalthos> (and then clean up the tests to match)
16:22:11 <Qalthos> I'll make a review, too
16:22:18 <Anil_Lenovo> sure. Thanks got it
16:22:44 <Qalthos> #action Qalthos review ansible/ansible#52568
16:23:08 <Qalthos> #topic Open Floor
16:23:25 <Qalthos> Anyone with anything else to talk about?
16:23:31 <Qalthos> yaplej: ?
16:28:44 <yaplej> Qalthos: Sorry.
16:29:19 <Qalthos> yaplej: You have two items on the agenda, which do you want to talk aobut first?
16:30:39 <yaplej> The literal SYN used in an ios_config or any Cisco config line.  The IOS output represents that as two characters ^V instead of a single char so the play is not idempotent.
16:31:24 <Qalthos> #topic Handle literal SYN and ?
16:34:33 <Qalthos> So, for my understanding, does IOS output the ^V character, or is this something ansible is adding due to bytes decoding or something
16:35:21 <Qalthos> (or am I completely misunderstanding?)
16:36:53 <yaplej> IOS output shows a literal SYN as a string "^V".  As far as I know there is not way to represent a literal SYN in ios_config line.
16:37:30 <yaplej> I used hex values for SYN and ? and that worked for input but it does not work for diff correctly.  I think there should be some type of token to represent those special chars.
16:41:21 <yaplej> Perhaps its just the diff module needs to recognize ^V output from IOS as a SYN or the HEX value of it?
16:43:30 <Qalthos> So do both SYN and ? come back as "^V", or is there a way to differentiate them from the config IOS returns?
16:44:42 <yaplej> No only SYN comes back as ^V.  The ? had to be escaped because its the help menu.
16:45:34 <Qalthos> Okay, so ? isn't an issue anymore?
16:45:40 <yaplej> Using hex value for "?" worked for input.  I think its only the SYN/^V issue that might be triggering the line difference.
16:47:09 <yaplej> Im not sure on that.  Putting "?" in the ios_config lines does not work.  Thats why I resorted to using the hex.  Both might need special treatment for input and diff processing.
16:48:06 <Qalthos> Right, because SYN is 0x16, so would be textified as "^V"
16:48:08 <Qalthos> Okay
16:50:54 <Qalthos> We could probably translate non-printing characters into whatever they come back as for the purposes of diff without changing the input actually sent to the device
16:53:05 <Qalthos> I see ganeshrn is assigned, I'll see if I can work with him to figure out where this goes from here
16:53:29 <Qalthos> #action Qalthos ping ganeshrn about handling control chars in ios_config diff
16:53:39 <yaplej> Thanks.  I was not sure where to even begin.  That seems like a good idea.
16:55:22 <Qalthos> #topic #macro keywords in ios_config
16:58:30 <Qalthos> Last I knew, the plan regarding #macro was to error out if we saw it (https://github.com/ansible/ansible/issues/38591)
16:59:15 <Qalthos> That issue mentions a workaround in https://github.com/ansible/ansible/issues/38420, but I'm not immediately aware of what that was
17:00:36 <yaplej> I actually submitted a patch that allows the command 'macro name' to be executed like a banner.
17:00:46 <yaplej> the 'macro name' command has a sub-command "#macro keywords" with a fixed DEFAULT_COMMENT_TOKENS that command gets ignored.
17:01:56 <yaplej> Seems like DEFAULT_COMMENT_TOKENS should have a method to overwrite/append/remove tokens in specific cases.
17:05:31 <Qalthos> So DEFAULT_COMMENT_TOKENS is, as expected, just a default. I don't know that we override it anywhere presently, but the parse() method takes other comment tokens as a parameter, so it should be fairly straightforward to override it programmatically
17:08:41 <Qalthos> #action Qalthos look into NetworkConfig comment_tokens
17:08:50 <Qalthos> I'll let you know what I find
17:10:01 <Qalthos> We're already a bit over, so I'm just going to close the meeting. Thanks for dropping by!
17:10:07 <yaplej> Thanks.
17:10:07 <Qalthos> #endmeeting