)]}'
{"/PATCHSET_LEVEL":[{"author":{"_account_id":15197,"name":"Pierre Riteau","email":"pierre@stackhpc.com","username":"priteau","status":"StackHPC"},"change_message_id":"d4891a45aef1b473700ac04a21a81e4898f925f7","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":6,"id":"3103980d_939179bd","updated":"2022-09-02 08:55:53.000000000","message":"I found a few more places that expect the .\u003cvlan\u003e suffix.","commit_id":"8d9e7cbe0fc04bb41f511c3f4c8e270105cc9dd2"},{"author":{"_account_id":28048,"name":"Will Szumski","email":"will@stackhpc.com","username":"jovial"},"change_message_id":"82286b5e5cf52f748fc62e622d4aeabb91df7b1a","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":6,"id":"355523a2_fadbbaea","updated":"2022-09-02 08:48:08.000000000","message":"Looks pretty clean to me","commit_id":"8d9e7cbe0fc04bb41f511c3f4c8e270105cc9dd2"},{"author":{"_account_id":14826,"name":"Mark Goddard","email":"markgoddard86@gmail.com","username":"mgoddard"},"change_message_id":"e742d405367b367a55f05515b15bce32c7c73028","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":17,"id":"25bcd506_bc425a7b","updated":"2022-10-13 19:29:32.000000000","message":"How\u0027s it looking @Will?","commit_id":"6d7b8812ae82b481519818a00293bb1aec32d058"},{"author":{"_account_id":14826,"name":"Mark Goddard","email":"markgoddard86@gmail.com","username":"mgoddard"},"change_message_id":"f713cfedeb4d2291f4f543588bc7de9f9c9bd600","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":17,"id":"6c0e2863_843548ca","updated":"2022-09-13 09:16:20.000000000","message":"Thanks","commit_id":"6d7b8812ae82b481519818a00293bb1aec32d058"}],"doc/source/configuration/reference/network.rst":[{"author":{"_account_id":14826,"name":"Mark Goddard","email":"markgoddard86@gmail.com","username":"mgoddard"},"change_message_id":"409c8b2044c90f29fa5a8d081cd9eccd696176bb","unresolved":true,"context_lines":[{"line_number":342,"context_line":"The following attributes are supported:"},{"line_number":343,"context_line":""},{"line_number":344,"context_line":"``interface``"},{"line_number":345,"context_line":"    The name of the network interface attached to the network."},{"line_number":346,"context_line":"``bootproto``"},{"line_number":347,"context_line":"    Boot protocol for the interface. Valid values are ``static`` and ``dhcp``."},{"line_number":348,"context_line":"    The default is ``static``. When set to ``dhcp``, an external DHCP server"}],"source_content_type":"text/x-rst","patch_set":11,"id":"f8400993_b681ee78","line":345,"updated":"2022-09-08 09:33:37.000000000","message":"Could you add parent here?","commit_id":"44dd3d66872405c54543a03959a3607e9db2c7c2"},{"author":{"_account_id":15197,"name":"Pierre Riteau","email":"pierre@stackhpc.com","username":"priteau","status":"StackHPC"},"change_message_id":"c0dfee014f52d40e7ddb9400d7d2ab0f7818fa98","unresolved":false,"context_lines":[{"line_number":342,"context_line":"The following attributes are supported:"},{"line_number":343,"context_line":""},{"line_number":344,"context_line":"``interface``"},{"line_number":345,"context_line":"    The name of the network interface attached to the network."},{"line_number":346,"context_line":"``bootproto``"},{"line_number":347,"context_line":"    Boot protocol for the interface. Valid values are ``static`` and ``dhcp``."},{"line_number":348,"context_line":"    The default is ``static``. When set to ``dhcp``, an external DHCP server"}],"source_content_type":"text/x-rst","patch_set":11,"id":"eee91e63_c902d913","line":345,"in_reply_to":"f8400993_b681ee78","updated":"2022-09-09 13:11:56.000000000","message":"Done","commit_id":"44dd3d66872405c54543a03959a3607e9db2c7c2"}],"kayobe/plugins/filter/networkd.py":[{"author":{"_account_id":14826,"name":"Mark Goddard","email":"markgoddard86@gmail.com","username":"mgoddard"},"change_message_id":"409c8b2044c90f29fa5a8d081cd9eccd696176bb","unresolved":true,"context_lines":[{"line_number":589,"context_line":"        for name in names"},{"line_number":590,"context_line":"    ]"},{"line_number":591,"context_line":""},{"line_number":592,"context_line":"    # Also include any parent interfaces"},{"line_number":593,"context_line":"    parents \u003d ["},{"line_number":594,"context_line":"        networks.net_parent(context, name, inventory_hostname)"},{"line_number":595,"context_line":"        for name in names"},{"line_number":596,"context_line":"    ]"},{"line_number":597,"context_line":"    interfaces +\u003d [i for i in parents if i]"},{"line_number":598,"context_line":""},{"line_number":599,"context_line":"    # Map bridge ports to bridges."},{"line_number":600,"context_line":"    for name in networks.net_select_bridges(context, names,"},{"line_number":601,"context_line":"                                            inventory_hostname):"}],"source_content_type":"text/x-python","patch_set":11,"id":"f7cf4fa1_8bf22bdd","line":598,"range":{"start_line":592,"start_character":0,"end_line":598,"end_character":0},"updated":"2022-09-08 09:33:37.000000000","message":"Could you explain this - see comments below.","commit_id":"44dd3d66872405c54543a03959a3607e9db2c7c2"},{"author":{"_account_id":15197,"name":"Pierre Riteau","email":"pierre@stackhpc.com","username":"priteau","status":"StackHPC"},"change_message_id":"c0dfee014f52d40e7ddb9400d7d2ab0f7818fa98","unresolved":false,"context_lines":[{"line_number":589,"context_line":"        for name in names"},{"line_number":590,"context_line":"    ]"},{"line_number":591,"context_line":""},{"line_number":592,"context_line":"    # Also include any parent interfaces"},{"line_number":593,"context_line":"    parents \u003d ["},{"line_number":594,"context_line":"        networks.net_parent(context, name, inventory_hostname)"},{"line_number":595,"context_line":"        for name in names"},{"line_number":596,"context_line":"    ]"},{"line_number":597,"context_line":"    interfaces +\u003d [i for i in parents if i]"},{"line_number":598,"context_line":""},{"line_number":599,"context_line":"    # Map bridge ports to bridges."},{"line_number":600,"context_line":"    for name in networks.net_select_bridges(context, names,"},{"line_number":601,"context_line":"                                            inventory_hostname):"}],"source_content_type":"text/x-python","patch_set":11,"id":"a85bc1ef_47543d78","line":598,"range":{"start_line":592,"start_character":0,"end_line":598,"end_character":0},"in_reply_to":"f7cf4fa1_8bf22bdd","updated":"2022-09-09 13:11:56.000000000","message":"Sorry, I can\u0027t explain. Not sure why I was doing this to be honest… Removed.","commit_id":"44dd3d66872405c54543a03959a3607e9db2c7c2"},{"author":{"_account_id":14826,"name":"Mark Goddard","email":"markgoddard86@gmail.com","username":"mgoddard"},"change_message_id":"409c8b2044c90f29fa5a8d081cd9eccd696176bb","unresolved":true,"context_lines":[{"line_number":643,"context_line":"    # VLAN parent interfaces that are not in configured networks, bridge ports"},{"line_number":644,"context_line":"    # or bond members."},{"line_number":645,"context_line":"    implied_vlan_parents \u003d (set(interface_to_vlans) -"},{"line_number":646,"context_line":"                            set(interfaces) -"},{"line_number":647,"context_line":"                            set(bridge_port_to_bridge) -"},{"line_number":648,"context_line":"                            set(bond_member_to_bond))"},{"line_number":649,"context_line":"    for device in implied_vlan_parents:"}],"source_content_type":"text/x-python","patch_set":11,"id":"224e4e16_16f963a9","line":646,"range":{"start_line":646,"start_character":32,"end_line":646,"end_character":42},"updated":"2022-09-08 09:33:37.000000000","message":"adding parents here means they are no longer implied.","commit_id":"44dd3d66872405c54543a03959a3607e9db2c7c2"},{"author":{"_account_id":15197,"name":"Pierre Riteau","email":"pierre@stackhpc.com","username":"priteau","status":"StackHPC"},"change_message_id":"c0dfee014f52d40e7ddb9400d7d2ab0f7818fa98","unresolved":false,"context_lines":[{"line_number":643,"context_line":"    # VLAN parent interfaces that are not in configured networks, bridge ports"},{"line_number":644,"context_line":"    # or bond members."},{"line_number":645,"context_line":"    implied_vlan_parents \u003d (set(interface_to_vlans) -"},{"line_number":646,"context_line":"                            set(interfaces) -"},{"line_number":647,"context_line":"                            set(bridge_port_to_bridge) -"},{"line_number":648,"context_line":"                            set(bond_member_to_bond))"},{"line_number":649,"context_line":"    for device in implied_vlan_parents:"}],"source_content_type":"text/x-python","patch_set":11,"id":"a39ab48b_64d7ca43","line":646,"range":{"start_line":646,"start_character":32,"end_line":646,"end_character":42},"in_reply_to":"224e4e16_16f963a9","updated":"2022-09-09 13:11:56.000000000","message":"Done","commit_id":"44dd3d66872405c54543a03959a3607e9db2c7c2"},{"author":{"_account_id":14826,"name":"Mark Goddard","email":"markgoddard86@gmail.com","username":"mgoddard"},"change_message_id":"409c8b2044c90f29fa5a8d081cd9eccd696176bb","unresolved":true,"context_lines":[{"line_number":661,"context_line":"                                                     inventory_hostname)"},{"line_number":662,"context_line":"        bridge_ports \u003d networks.net_bridge_ports(context, name,"},{"line_number":663,"context_line":"                                                 inventory_hostname)"},{"line_number":664,"context_line":"        for port in set(bridge_ports) - set(interfaces):"},{"line_number":665,"context_line":"            vlan_interfaces \u003d interface_to_vlans.get(port, [])"},{"line_number":666,"context_line":"            net \u003d _bridge_port_network(context, name, port, inventory_hostname,"},{"line_number":667,"context_line":"                                       [vlan[\"device\"]"}],"source_content_type":"text/x-python","patch_set":11,"id":"430c2300_05dbc9f2","line":664,"range":{"start_line":664,"start_character":44,"end_line":664,"end_character":54},"updated":"2022-09-08 09:33:37.000000000","message":"Unsure if parents should be included here","commit_id":"44dd3d66872405c54543a03959a3607e9db2c7c2"},{"author":{"_account_id":15197,"name":"Pierre Riteau","email":"pierre@stackhpc.com","username":"priteau","status":"StackHPC"},"change_message_id":"c0dfee014f52d40e7ddb9400d7d2ab0f7818fa98","unresolved":false,"context_lines":[{"line_number":661,"context_line":"                                                     inventory_hostname)"},{"line_number":662,"context_line":"        bridge_ports \u003d networks.net_bridge_ports(context, name,"},{"line_number":663,"context_line":"                                                 inventory_hostname)"},{"line_number":664,"context_line":"        for port in set(bridge_ports) - set(interfaces):"},{"line_number":665,"context_line":"            vlan_interfaces \u003d interface_to_vlans.get(port, [])"},{"line_number":666,"context_line":"            net \u003d _bridge_port_network(context, name, port, inventory_hostname,"},{"line_number":667,"context_line":"                                       [vlan[\"device\"]"}],"source_content_type":"text/x-python","patch_set":11,"id":"7fa625a2_510ac334","line":664,"range":{"start_line":664,"start_character":44,"end_line":664,"end_character":54},"in_reply_to":"430c2300_05dbc9f2","updated":"2022-09-09 13:11:56.000000000","message":"Done","commit_id":"44dd3d66872405c54543a03959a3607e9db2c7c2"},{"author":{"_account_id":14826,"name":"Mark Goddard","email":"markgoddard86@gmail.com","username":"mgoddard"},"change_message_id":"409c8b2044c90f29fa5a8d081cd9eccd696176bb","unresolved":true,"context_lines":[{"line_number":674,"context_line":"                                                     inventory_hostname)"},{"line_number":675,"context_line":"        bond_members \u003d networks.net_bond_slaves(context, name,"},{"line_number":676,"context_line":"                                                inventory_hostname)"},{"line_number":677,"context_line":"        for member in set(bond_members) - set(interfaces):"},{"line_number":678,"context_line":"            vlan_interfaces \u003d interface_to_vlans.get(member, [])"},{"line_number":679,"context_line":"            net \u003d _bond_member_network(context, name, member,"},{"line_number":680,"context_line":"                                       inventory_hostname,"}],"source_content_type":"text/x-python","patch_set":11,"id":"8eb98ed7_257917ba","line":677,"range":{"start_line":677,"start_character":46,"end_line":677,"end_character":56},"updated":"2022-09-08 09:33:37.000000000","message":"ditto","commit_id":"44dd3d66872405c54543a03959a3607e9db2c7c2"},{"author":{"_account_id":15197,"name":"Pierre Riteau","email":"pierre@stackhpc.com","username":"priteau","status":"StackHPC"},"change_message_id":"c0dfee014f52d40e7ddb9400d7d2ab0f7818fa98","unresolved":false,"context_lines":[{"line_number":674,"context_line":"                                                     inventory_hostname)"},{"line_number":675,"context_line":"        bond_members \u003d networks.net_bond_slaves(context, name,"},{"line_number":676,"context_line":"                                                inventory_hostname)"},{"line_number":677,"context_line":"        for member in set(bond_members) - set(interfaces):"},{"line_number":678,"context_line":"            vlan_interfaces \u003d interface_to_vlans.get(member, [])"},{"line_number":679,"context_line":"            net \u003d _bond_member_network(context, name, member,"},{"line_number":680,"context_line":"                                       inventory_hostname,"}],"source_content_type":"text/x-python","patch_set":11,"id":"1e8a7b8f_895660b0","line":677,"range":{"start_line":677,"start_character":46,"end_line":677,"end_character":56},"in_reply_to":"8eb98ed7_257917ba","updated":"2022-09-09 13:11:56.000000000","message":"Done","commit_id":"44dd3d66872405c54543a03959a3607e9db2c7c2"}],"kayobe/plugins/filter/networks.py":[{"author":{"_account_id":14826,"name":"Mark Goddard","email":"markgoddard86@gmail.com","username":"mgoddard"},"change_message_id":"409c8b2044c90f29fa5a8d081cd9eccd696176bb","unresolved":true,"context_lines":[{"line_number":144,"context_line":"    :raises: ansible.errors.AnsibleFilterError"},{"line_number":145,"context_line":"    \"\"\""},{"line_number":146,"context_line":"    parent \u003d net_parent(context, name, inventory_hostname)"},{"line_number":147,"context_line":"    if parent is None:"},{"line_number":148,"context_line":"        parent \u003d re.sub(r\u0027\\.{}$\u0027.format(vlan), \u0027\u0027, device)"},{"line_number":149,"context_line":"    return parent"},{"line_number":150,"context_line":""}],"source_content_type":"text/x-python","patch_set":11,"id":"5485205e_7ef8b5f4","line":147,"range":{"start_line":147,"start_character":4,"end_line":147,"end_character":22},"updated":"2022-09-08 09:33:37.000000000","message":"Could allow an empty string also?\n\n if not parent:","commit_id":"44dd3d66872405c54543a03959a3607e9db2c7c2"},{"author":{"_account_id":15197,"name":"Pierre Riteau","email":"pierre@stackhpc.com","username":"priteau","status":"StackHPC"},"change_message_id":"c0dfee014f52d40e7ddb9400d7d2ab0f7818fa98","unresolved":false,"context_lines":[{"line_number":144,"context_line":"    :raises: ansible.errors.AnsibleFilterError"},{"line_number":145,"context_line":"    \"\"\""},{"line_number":146,"context_line":"    parent \u003d net_parent(context, name, inventory_hostname)"},{"line_number":147,"context_line":"    if parent is None:"},{"line_number":148,"context_line":"        parent \u003d re.sub(r\u0027\\.{}$\u0027.format(vlan), \u0027\u0027, device)"},{"line_number":149,"context_line":"    return parent"},{"line_number":150,"context_line":""}],"source_content_type":"text/x-python","patch_set":11,"id":"cabc9629_726d9709","line":147,"range":{"start_line":147,"start_character":4,"end_line":147,"end_character":22},"in_reply_to":"5485205e_7ef8b5f4","updated":"2022-09-09 13:11:56.000000000","message":"Done","commit_id":"44dd3d66872405c54543a03959a3607e9db2c7c2"}]}
