)]}'
{"/PATCHSET_LEVEL":[{"author":{"_account_id":24245,"name":"Harald Jensås","email":"hjensas@redhat.com","username":"harald.jensas"},"change_message_id":"bdaee311ee442256630f8b34550d2b1d0f381aeb","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":3,"id":"3399004d_e4b7dd97","updated":"2022-04-26 05:48:42.000000000","message":"recheck - Seeing issue in a later patch, rechecking here to see if CI is not broken.","commit_id":"9bf7f469c3816af8a0c6b4a74bab17094964d517"},{"author":{"_account_id":24245,"name":"Harald Jensås","email":"hjensas@redhat.com","username":"harald.jensas"},"change_message_id":"f773b89e69f5dabdfe3320c26d9b16bbd7470d58","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":5,"id":"b217a7df_9edcd787","updated":"2022-05-30 19:32:51.000000000","message":"recheck","commit_id":"6ada009c5b2b148a77046ecb5ae51fa3cf6b5e60"},{"author":{"_account_id":15519,"name":"Iury Gregory Melo Ferreira","display_name":"Iury Gregory","email":"iurygregory@gmail.com","username":"iurygregory"},"change_message_id":"950fb96912bc8fbe2432cb9e2efbf1f7d30ca68b","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":6,"id":"25d089f8_b107ac87","updated":"2022-07-25 13:20:33.000000000","message":"Agree, we can go on a follow-up","commit_id":"f4e19c3fb1d922c5c5c24c07703c4287b9097430"},{"author":{"_account_id":11655,"name":"Julia Kreger","email":"juliaashleykreger@gmail.com","username":"jkreger","status":"Flying to the moon with a Jetpack!"},"change_message_id":"e91b8f710ab318792c6c25032918ad2d52f86f00","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":6,"id":"ecc4f96f_d52fe77a","updated":"2022-07-18 18:03:42.000000000","message":"I think Dmitry is raising some good points, and possible areas to improve/build upon, but I don\u0027t see anything that would be a show stopper from moving forward.","commit_id":"f4e19c3fb1d922c5c5c24c07703c4287b9097430"}],"networking_baremetal/constants.py":[{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"8aefc917179effb676acb7fd3ca4b4af4f16d848","unresolved":false,"context_lines":[{"line_number":68,"context_line":"    REMOVE \u003d \u0027remove\u0027"},{"line_number":69,"context_line":""},{"line_number":70,"context_line":""},{"line_number":71,"context_line":"CFG_MERGE \u003d NetconfEditConfigOperation.MERGE"},{"line_number":72,"context_line":"CFG_REPLACE \u003d NetconfEditConfigOperation.REPLACE"},{"line_number":73,"context_line":"CFG_CREATE \u003d NetconfEditConfigOperation.CREATE"},{"line_number":74,"context_line":"CFG_DELETE \u003d NetconfEditConfigOperation.DELETE"}],"source_content_type":"text/x-python","patch_set":5,"id":"005c7bac_36b8072c","line":71,"updated":"2022-06-10 10:04:50.000000000","message":"Hmm, why having these? Enums are handy enough","commit_id":"6ada009c5b2b148a77046ecb5ae51fa3cf6b5e60"},{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"7cdddc2bb596b81952816954825aa94cc4f1d0ed","unresolved":false,"context_lines":[{"line_number":21,"context_line":"IFACE_TYPE_BASE \u003d \u0027base\u0027"},{"line_number":22,"context_line":""},{"line_number":23,"context_line":"VLAN_MODE_TRUNK \u003d \u0027TRUNK\u0027"},{"line_number":24,"context_line":"VLAN_MODE_ACCESS \u003d \u0027ACCESS\u0027"},{"line_number":25,"context_line":"VLAN_RANGE \u003d range(1, 4094)"},{"line_number":26,"context_line":""},{"line_number":27,"context_line":""}],"source_content_type":"text/x-python","patch_set":6,"id":"524b1b46_b2cb841f","line":24,"updated":"2022-07-11 06:56:31.000000000","message":"Why not enums for IfaceType and VLANMode?","commit_id":"f4e19c3fb1d922c5c5c24c07703c4287b9097430"},{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"7cdddc2bb596b81952816954825aa94cc4f1d0ed","unresolved":false,"context_lines":[{"line_number":29,"context_line":"    \"\"\"RFC 6241 - \u003cedit-config\u003e operation attribute"},{"line_number":30,"context_line":""},{"line_number":31,"context_line":"    The \"operation\" attribute has one of the following values:"},{"line_number":32,"context_line":"         merge:  The configuration data identified by the element"},{"line_number":33,"context_line":"            containing this attribute is merged with the configuration"},{"line_number":34,"context_line":"            at the corresponding level in the configuration datastore"},{"line_number":35,"context_line":"            identified by the \u003ctarget\u003e parameter.  This is the default"}],"source_content_type":"text/x-python","patch_set":6,"id":"3585bacc_45fd1bc1","line":32,"updated":"2022-07-11 06:56:31.000000000","message":"nit: it\u0027s better to add a docstring for each enum item, not merge everything into the top-level docstring","commit_id":"f4e19c3fb1d922c5c5c24c07703c4287b9097430"}],"networking_baremetal/openconfig/interfaces/ethernet.py":[{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"8aefc917179effb676acb7fd3ca4b4af4f16d848","unresolved":false,"context_lines":[{"line_number":14,"context_line":"from networking_baremetal.openconfig.vlan import vlan"},{"line_number":15,"context_line":""},{"line_number":16,"context_line":""},{"line_number":17,"context_line":"class OpenConfigInterfacesEthernet(object):"},{"line_number":18,"context_line":"    \"\"\"Ethernet configuration and state\"\"\""},{"line_number":19,"context_line":"    NAMESPACE \u003d \u0027http://openconfig.net/yang/interfaces/ethernet\u0027"},{"line_number":20,"context_line":"    PARENT \u003d \u0027interface\u0027"}],"source_content_type":"text/x-python","patch_set":5,"id":"8ad219c2_e4095d0d","line":17,"updated":"2022-06-10 10:04:50.000000000","message":"nit: (object) not needed (same in other files)","commit_id":"6ada009c5b2b148a77046ecb5ae51fa3cf6b5e60"},{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"7cdddc2bb596b81952816954825aa94cc4f1d0ed","unresolved":false,"context_lines":[{"line_number":14,"context_line":"from networking_baremetal.openconfig.vlan import vlan"},{"line_number":15,"context_line":""},{"line_number":16,"context_line":""},{"line_number":17,"context_line":"class InterfacesEthernet:"},{"line_number":18,"context_line":"    \"\"\"Ethernet configuration and state\"\"\""},{"line_number":19,"context_line":"    NAMESPACE \u003d \u0027http://openconfig.net/yang/interfaces/ethernet\u0027"},{"line_number":20,"context_line":"    PARENT \u003d \u0027interface\u0027"}],"source_content_type":"text/x-python","patch_set":6,"id":"b74a2f87_0284281e","line":17,"updated":"2022-07-11 06:56:31.000000000","message":"same comment as on vlan below: there is no need to duplicate Interfaces. And honestly, openconfig.interfaces.ethernet.InterfacesEthernet is kinda ugly. Makes me thing it should be openconfig.interfaces.Ethernet (see also my musings about too many modules below).","commit_id":"f4e19c3fb1d922c5c5c24c07703c4287b9097430"},{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"7cdddc2bb596b81952816954825aa94cc4f1d0ed","unresolved":false,"context_lines":[{"line_number":34,"context_line":"                            .format(type(value)))"},{"line_number":35,"context_line":"        self._switched_vlan \u003d value"},{"line_number":36,"context_line":""},{"line_number":37,"context_line":"    @switched_vlan.deleter"},{"line_number":38,"context_line":"    def switched_vlan(self):"},{"line_number":39,"context_line":"        self._switched_vlan \u003d None"},{"line_number":40,"context_line":""}],"source_content_type":"text/x-python","patch_set":6,"id":"ca88fb6e_a94fdcd0","line":37,"updated":"2022-07-11 06:56:31.000000000","message":"nit: Are deleters that useful? We can just allow setting None..","commit_id":"f4e19c3fb1d922c5c5c24c07703c4287b9097430"}],"networking_baremetal/openconfig/interfaces/interfaces.py":[{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"8aefc917179effb676acb7fd3ca4b4af4f16d848","unresolved":false,"context_lines":[{"line_number":16,"context_line":"from networking_baremetal.openconfig.interfaces import ethernet"},{"line_number":17,"context_line":""},{"line_number":18,"context_line":""},{"line_number":19,"context_line":"class OpenConfigInterfaceConfig(object):"},{"line_number":20,"context_line":"    \"\"\"OpenConfig interface configuration\"\"\""},{"line_number":21,"context_line":""},{"line_number":22,"context_line":"    NAMESPACE \u003d \u0027http://openconfig.net/yang/interfaces\u0027"}],"source_content_type":"text/x-python","patch_set":5,"id":"75f09dcf_669fa0a2","line":19,"updated":"2022-06-10 10:04:50.000000000","message":"Let\u0027s maybe get rid of OpenConfig prefixes? The openconfig part in the Python module is enough.","commit_id":"6ada009c5b2b148a77046ecb5ae51fa3cf6b5e60"},{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"8aefc917179effb676acb7fd3ca4b4af4f16d848","unresolved":false,"context_lines":[{"line_number":25,"context_line":""},{"line_number":26,"context_line":"    def __init__(self,"},{"line_number":27,"context_line":"                 operation\u003dconstants.NetconfEditConfigOperation.MERGE,"},{"line_number":28,"context_line":"                 name: str \u003d None,"},{"line_number":29,"context_line":"                 description: str \u003d None,"},{"line_number":30,"context_line":"                 enabled: bool \u003d None,"},{"line_number":31,"context_line":"                 mtu: int \u003d None):"}],"source_content_type":"text/x-python","patch_set":5,"id":"01c14069_39be06b6","line":28,"updated":"2022-06-10 10:04:50.000000000","message":"nit: if you want to be strict with types, you need Optional[str]","commit_id":"6ada009c5b2b148a77046ecb5ae51fa3cf6b5e60"},{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"8aefc917179effb676acb7fd3ca4b4af4f16d848","unresolved":false,"context_lines":[{"line_number":241,"context_line":"        return elem"},{"line_number":242,"context_line":""},{"line_number":243,"context_line":""},{"line_number":244,"context_line":"class OpenConfigInterfaces(object):"},{"line_number":245,"context_line":"    \"\"\"Group/List of interfaces\"\"\""},{"line_number":246,"context_line":""},{"line_number":247,"context_line":"    NAMESPACE \u003d \u0027http://openconfig.net/yang/interfaces\u0027"}],"source_content_type":"text/x-python","patch_set":5,"id":"93cf95ed_1d4b4e98","line":244,"updated":"2022-06-10 10:04:50.000000000","message":"nit: I wonder if you wanna make it an abc.Collection to use a list-like interface","commit_id":"6ada009c5b2b148a77046ecb5ae51fa3cf6b5e60"},{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"7cdddc2bb596b81952816954825aa94cc4f1d0ed","unresolved":false,"context_lines":[{"line_number":52,"context_line":"    def operation(self, value):"},{"line_number":53,"context_line":"        \"\"\"RFC 6241 - \u003cedit-config\u003e operation attribute\"\"\""},{"line_number":54,"context_line":"        if isinstance(value, constants.NetconfEditConfigOperation):"},{"line_number":55,"context_line":"            self._operation \u003d value"},{"line_number":56,"context_line":"        elif isinstance(value, str):"},{"line_number":57,"context_line":"            self._operation \u003d constants.NetconfEditConfigOperation(value)"},{"line_number":58,"context_line":"        else:"}],"source_content_type":"text/x-python","patch_set":6,"id":"92038bfa_813a7f1d","line":55,"updated":"2022-07-11 06:56:31.000000000","message":"I don\u0027t quite like how this operation properly behaves. It returns a different value from what it accepts. It\u0027s not a case for properties, but rather for an explicit method.","commit_id":"f4e19c3fb1d922c5c5c24c07703c4287b9097430"},{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"7cdddc2bb596b81952816954825aa94cc4f1d0ed","unresolved":false,"context_lines":[{"line_number":267,"context_line":"        \"\"\"List of interfaces\"\"\""},{"line_number":268,"context_line":"        return self._interfaces"},{"line_number":269,"context_line":""},{"line_number":270,"context_line":"    def add(self, name: str,"},{"line_number":271,"context_line":"            interface_type: str \u003d constants.IFACE_TYPE_ETHERNET):"},{"line_number":272,"context_line":"        \"\"\"Add interface"},{"line_number":273,"context_line":""}],"source_content_type":"text/x-python","patch_set":6,"id":"8bb7aba3_3a309d7a","line":270,"updated":"2022-07-11 06:56:31.000000000","message":"if you follow a list-like semantics, please call it append.","commit_id":"f4e19c3fb1d922c5c5c24c07703c4287b9097430"}],"networking_baremetal/openconfig/vlan/types.py":[{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"7cdddc2bb596b81952816954825aa94cc4f1d0ed","unresolved":false,"context_lines":[{"line_number":15,"context_line":"from networking_baremetal import constants"},{"line_number":16,"context_line":""},{"line_number":17,"context_line":""},{"line_number":18,"context_line":"class VlanInterfaceMode(enum.Enum):"},{"line_number":19,"context_line":"    \"\"\"VLAN interface mode (trunk or access)\"\"\""},{"line_number":20,"context_line":"    TRUNK \u003d constants.VLAN_MODE_TRUNK"},{"line_number":21,"context_line":"    ACCESS \u003d constants.VLAN_MODE_ACCESS"}],"source_content_type":"text/x-python","patch_set":6,"id":"f04d33ba_c36c3e21","line":18,"updated":"2022-07-11 06:56:31.000000000","message":"Please remove the duplicating Vlan prefix for all types, otherwise you end up with things like vlan.VlanSwitchedVlan :)","commit_id":"f4e19c3fb1d922c5c5c24c07703c4287b9097430"},{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"7cdddc2bb596b81952816954825aa94cc4f1d0ed","unresolved":false,"context_lines":[{"line_number":18,"context_line":"class VlanInterfaceMode(enum.Enum):"},{"line_number":19,"context_line":"    \"\"\"VLAN interface mode (trunk or access)\"\"\""},{"line_number":20,"context_line":"    TRUNK \u003d constants.VLAN_MODE_TRUNK"},{"line_number":21,"context_line":"    ACCESS \u003d constants.VLAN_MODE_ACCESS"},{"line_number":22,"context_line":""},{"line_number":23,"context_line":""},{"line_number":24,"context_line":"class VlanId:"}],"source_content_type":"text/x-python","patch_set":6,"id":"d5ddf710_7a278d57","line":21,"updated":"2022-07-11 06:56:31.000000000","message":"Hmm, it does feel like this enum should move to constants and be reused everywhere","commit_id":"f4e19c3fb1d922c5c5c24c07703c4287b9097430"},{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"7cdddc2bb596b81952816954825aa94cc4f1d0ed","unresolved":false,"context_lines":[{"line_number":54,"context_line":"         \u002740[0-8][0-9]|[1-3][0-9]{3}|[1-9][0-9]{1,2}|\u0027"},{"line_number":55,"context_line":"         \u0027[1-9])$\u0027))"},{"line_number":56,"context_line":""},{"line_number":57,"context_line":"    def __init__(self, vlan_range: str):"},{"line_number":58,"context_line":"        if not isinstance(vlan_range, str):"},{"line_number":59,"context_line":"            raise TypeError(\u0027vlan_range must be string, got {}\u0027"},{"line_number":60,"context_line":"                            .format(type(vlan_range)))"}],"source_content_type":"text/x-python","patch_set":6,"id":"cabb913f_52f98bd6","line":57,"updated":"2022-07-11 06:56:31.000000000","message":"I wonder if accepting Python ranges is useful","commit_id":"f4e19c3fb1d922c5c5c24c07703c4287b9097430"}],"networking_baremetal/openconfig/vlan/vlan.py":[{"author":{"_account_id":24245,"name":"Harald Jensås","email":"hjensas@redhat.com","username":"harald.jensas"},"change_message_id":"82382369d0a8f1c6cbbff710ab1e3f9e3b945621","unresolved":true,"context_lines":[{"line_number":128,"context_line":"    @trunk_vlans.setter"},{"line_number":129,"context_line":"    def trunk_vlans(self, value: str):"},{"line_number":130,"context_line":"        \"\"\"Set allowed VLANs may be specified for trunk mode interfaces\"\"\""},{"line_number":131,"context_line":"        self._trunk_vlans \u003d types.OpenConfigVlanRange(value)"},{"line_number":132,"context_line":""},{"line_number":133,"context_line":"    @trunk_vlans.deleter"},{"line_number":134,"context_line":"    def trunk_vlans(self):"}],"source_content_type":"text/x-python","patch_set":1,"id":"6fc4d709_7f4dd8e2","line":131,"range":{"start_line":131,"start_character":28,"end_line":131,"end_character":60},"updated":"2022-03-29 13:04:13.000000000","message":"This need to allow a union of one or more vlan-id\u0027s and vlan-range\u0027s.\ntype union {\n        type oc-vlan-types:vlan-id;\n        type oc-vlan-types:vlan-range;\n      }","commit_id":"15a83089c79950c128d6408891fcbe12815f5b2f"},{"author":{"_account_id":24245,"name":"Harald Jensås","email":"hjensas@redhat.com","username":"harald.jensas"},"change_message_id":"3b93ed911a54d297b4e1d25f10fe000ba8eb158e","unresolved":false,"context_lines":[{"line_number":128,"context_line":"    @trunk_vlans.setter"},{"line_number":129,"context_line":"    def trunk_vlans(self, value: str):"},{"line_number":130,"context_line":"        \"\"\"Set allowed VLANs may be specified for trunk mode interfaces\"\"\""},{"line_number":131,"context_line":"        self._trunk_vlans \u003d types.OpenConfigVlanRange(value)"},{"line_number":132,"context_line":""},{"line_number":133,"context_line":"    @trunk_vlans.deleter"},{"line_number":134,"context_line":"    def trunk_vlans(self):"}],"source_content_type":"text/x-python","patch_set":1,"id":"963f21d5_1e895b3d","line":131,"range":{"start_line":131,"start_character":28,"end_line":131,"end_character":60},"in_reply_to":"6fc4d709_7f4dd8e2","updated":"2022-03-30 19:40:00.000000000","message":"Done","commit_id":"15a83089c79950c128d6408891fcbe12815f5b2f"},{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"7cdddc2bb596b81952816954825aa94cc4f1d0ed","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":6,"id":"9071c35f_f9e5205f","updated":"2022-07-11 06:56:31.000000000","message":"I\u0027m a bit upset by having a module vlan.vlan. It feels like the split into vlan.py and types.py may not be justified, given that they\u0027re 300 LoC total?","commit_id":"f4e19c3fb1d922c5c5c24c07703c4287b9097430"},{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"7cdddc2bb596b81952816954825aa94cc4f1d0ed","unresolved":false,"context_lines":[{"line_number":37,"context_line":"        try:"},{"line_number":38,"context_line":"            value \u003d int(value)"},{"line_number":39,"context_line":"            if value not in self._trunk_vlans:"},{"line_number":40,"context_line":"                self._trunk_vlans.append(types.VlanId(value).vlan_id)"},{"line_number":41,"context_line":"        except ValueError:"},{"line_number":42,"context_line":"            if value not in self._trunk_vlans:"},{"line_number":43,"context_line":"                self._trunk_vlans.append(types.VlanRange(value).vlan_range)"}],"source_content_type":"text/x-python","patch_set":6,"id":"a2595711_15ef77d5","line":40,"updated":"2022-07-11 06:56:31.000000000","message":"Just use a set of trunk_vlans? or is the order important here","commit_id":"f4e19c3fb1d922c5c5c24c07703c4287b9097430"},{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"7cdddc2bb596b81952816954825aa94cc4f1d0ed","unresolved":false,"context_lines":[{"line_number":77,"context_line":"        return self._operation.value if self._operation else None"},{"line_number":78,"context_line":""},{"line_number":79,"context_line":"    @operation.setter"},{"line_number":80,"context_line":"    def operation(self, value):"},{"line_number":81,"context_line":"        \"\"\"RFC 6241 - \u003cedit-config\u003e operation attribute\"\"\""},{"line_number":82,"context_line":"        if isinstance(value, constants.NetconfEditConfigOperation):"},{"line_number":83,"context_line":"            self._operation \u003d value"}],"source_content_type":"text/x-python","patch_set":6,"id":"0df33958_bd91508f","line":80,"updated":"2022-07-11 06:56:31.000000000","message":"same comment re operation here","commit_id":"f4e19c3fb1d922c5c5c24c07703c4287b9097430"},{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"7cdddc2bb596b81952816954825aa94cc4f1d0ed","unresolved":false,"context_lines":[{"line_number":149,"context_line":"        \"\"\"Allowed VLANs may be specified for trunk mode interfaces\"\"\""},{"line_number":150,"context_line":"        return self._trunk_vlans"},{"line_number":151,"context_line":""},{"line_number":152,"context_line":"    # TODO(hjensas): Only allow if interface_mode \u003d\u003d trunk"},{"line_number":153,"context_line":"    @trunk_vlans.setter"},{"line_number":154,"context_line":"    def trunk_vlans(self, value: str):"},{"line_number":155,"context_line":"        \"\"\"Set allowed VLANs may be specified for trunk mode interfaces\"\"\""}],"source_content_type":"text/x-python","patch_set":6,"id":"22039e3b_eea80f0f","line":152,"updated":"2022-07-11 06:56:31.000000000","message":"Seems like a subclass may be more useful than an interface_mode property?","commit_id":"f4e19c3fb1d922c5c5c24c07703c4287b9097430"},{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"7cdddc2bb596b81952816954825aa94cc4f1d0ed","unresolved":false,"context_lines":[{"line_number":180,"context_line":"        return elem"},{"line_number":181,"context_line":""},{"line_number":182,"context_line":""},{"line_number":183,"context_line":"class VlanSwitchedVlan:"},{"line_number":184,"context_line":"    \"\"\"VLAN interface-specific data on Ethernet interfaces."},{"line_number":185,"context_line":""},{"line_number":186,"context_line":"    Enclosing container for VLAN interface-specific"}],"source_content_type":"text/x-python","patch_set":6,"id":"a4c8d338_46b2750f","line":183,"updated":"2022-07-11 06:56:31.000000000","message":"This type is only a wrapper around SwitchedConfig, is it that useful?","commit_id":"f4e19c3fb1d922c5c5c24c07703c4287b9097430"}]}
