)]}'
{"networking_ovn/common/maintenance.py":[{"author":{"_account_id":6773,"name":"Lucas Alvares Gomes","email":"lucasagomes@gmail.com","username":"lucasagomes"},"change_message_id":"c58d7ff5639ce00f4b28e10111a41a1d9162f103","unresolved":false,"context_lines":[{"line_number":483,"context_line":"        # NOTE(lucasagomes): Find the existing chassis with the highest"},{"line_number":484,"context_line":"        # priority and keep it as being the highest to avoid moving"},{"line_number":485,"context_line":"        # things around"},{"line_number":486,"context_line":"        high_prio_ch \u003d max(default_ch_grp.ha_chassis, key\u003dlambda x: x.priority)"},{"line_number":487,"context_line":""},{"line_number":488,"context_line":"        all_ch \u003d self._sb_idl.get_all_chassis()"},{"line_number":489,"context_line":"        gw_ch \u003d self._sb_idl.get_gateway_chassis_from_cms_options()"}],"source_content_type":"text/x-python","patch_set":3,"id":"1fa4df85_5190b543","line":486,"updated":"2020-03-20 13:30:17.000000000","message":"Needs a default\u003d parameter (or catch ValueError for py2.7 compatibility)","commit_id":"574db1297fe3c59e6afda7ae6587f97a64edd7d0"},{"author":{"_account_id":21798,"name":"Bernard Cafarelli","email":"bcafarel@redhat.com","username":"bcafarel"},"change_message_id":"31ec5c65f9f5a22be4d4708a08e532405e9bb6ef","unresolved":false,"context_lines":[{"line_number":507,"context_line":"        # NOTE(lucasagomes): Find the existing chassis with the highest"},{"line_number":508,"context_line":"        # priority and keep it as being the highest to avoid moving"},{"line_number":509,"context_line":"        # things around"},{"line_number":510,"context_line":"        try:"},{"line_number":511,"context_line":"            high_prio_ch \u003d max(default_ch_grp.ha_chassis,"},{"line_number":512,"context_line":"                               key\u003dlambda x: x.priority)"},{"line_number":513,"context_line":"        except ValueError:"}],"source_content_type":"text/x-python","patch_set":6,"id":"df33271e_a6d3a703","line":510,"range":{"start_line":510,"start_character":8,"end_line":510,"end_character":12},"updated":"2020-04-01 15:24:20.000000000","message":"Master code does not have the ValueError try/except, is it something that can only happen in stable/train?","commit_id":"3b8f606254d3ed7b34c4ded393009e31a711f321"},{"author":{"_account_id":6773,"name":"Lucas Alvares Gomes","email":"lucasagomes@gmail.com","username":"lucasagomes"},"change_message_id":"0c5022c80b523737c1de4875fab1b90399261dff","unresolved":false,"context_lines":[{"line_number":507,"context_line":"        # NOTE(lucasagomes): Find the existing chassis with the highest"},{"line_number":508,"context_line":"        # priority and keep it as being the highest to avoid moving"},{"line_number":509,"context_line":"        # things around"},{"line_number":510,"context_line":"        try:"},{"line_number":511,"context_line":"            high_prio_ch \u003d max(default_ch_grp.ha_chassis,"},{"line_number":512,"context_line":"                               key\u003dlambda x: x.priority)"},{"line_number":513,"context_line":"        except ValueError:"}],"source_content_type":"text/x-python","patch_set":6,"id":"df33271e_05fb56c0","line":510,"range":{"start_line":510,"start_character":8,"end_line":510,"end_character":12},"in_reply_to":"df33271e_a6d3a703","updated":"2020-04-02 08:33:14.000000000","message":"Yes, I had to add it here because the default\u003d parameter for max() and min() is not compatible with python 2. See: https://review.opendev.org/#/c/714091/","commit_id":"3b8f606254d3ed7b34c4ded393009e31a711f321"}],"networking_ovn/common/ovn_client.py":[{"author":{"_account_id":21798,"name":"Bernard Cafarelli","email":"bcafarel@redhat.com","username":"bcafarel"},"change_message_id":"31ec5c65f9f5a22be4d4708a08e532405e9bb6ef","unresolved":false,"context_lines":[{"line_number":261,"context_line":"            capabilities \u003d utils.get_port_capabilities(port)"},{"line_number":262,"context_line":"            vnic_type \u003d port.get(portbindings.VNIC_TYPE,"},{"line_number":263,"context_line":"                                 portbindings.VNIC_NORMAL)"},{"line_number":264,"context_line":"            if (self.is_external_ports_supported() and"},{"line_number":265,"context_line":"                    vnic_type \u003d\u003d portbindings.VNIC_DIRECT and"},{"line_number":266,"context_line":"                    ovn_const.PORT_CAP_SWITCHDEV not in capabilities):"},{"line_number":267,"context_line":"                port_type \u003d ovn_const.LSP_TYPE_EXTERNAL"}],"source_content_type":"text/x-python","patch_set":6,"id":"df33271e_46ec5b8e","line":264,"range":{"start_line":264,"start_character":16,"end_line":264,"end_character":50},"updated":"2020-04-01 15:24:20.000000000","message":"Looks a bit different in https://review.opendev.org/#/c/703376/15/neutron/plugins/ml2/drivers/ovn/mech_driver/ovsdb/ovn_client.py this check is split with additional log message","commit_id":"3b8f606254d3ed7b34c4ded393009e31a711f321"},{"author":{"_account_id":6773,"name":"Lucas Alvares Gomes","email":"lucasagomes@gmail.com","username":"lucasagomes"},"change_message_id":"0c5022c80b523737c1de4875fab1b90399261dff","unresolved":false,"context_lines":[{"line_number":261,"context_line":"            capabilities \u003d utils.get_port_capabilities(port)"},{"line_number":262,"context_line":"            vnic_type \u003d port.get(portbindings.VNIC_TYPE,"},{"line_number":263,"context_line":"                                 portbindings.VNIC_NORMAL)"},{"line_number":264,"context_line":"            if (self.is_external_ports_supported() and"},{"line_number":265,"context_line":"                    vnic_type \u003d\u003d portbindings.VNIC_DIRECT and"},{"line_number":266,"context_line":"                    ovn_const.PORT_CAP_SWITCHDEV not in capabilities):"},{"line_number":267,"context_line":"                port_type \u003d ovn_const.LSP_TYPE_EXTERNAL"}],"source_content_type":"text/x-python","patch_set":6,"id":"df33271e_a529ca37","line":264,"range":{"start_line":264,"start_character":16,"end_line":264,"end_character":50},"in_reply_to":"df33271e_46ec5b8e","updated":"2020-04-02 08:33:14.000000000","message":"++ good point, will add it here!","commit_id":"3b8f606254d3ed7b34c4ded393009e31a711f321"}],"networking_ovn/common/utils.py":[{"author":{"_account_id":21798,"name":"Bernard Cafarelli","email":"bcafarel@redhat.com","username":"bcafarel"},"change_message_id":"31ec5c65f9f5a22be4d4708a08e532405e9bb6ef","unresolved":false,"context_lines":[{"line_number":446,"context_line":"            (port[\u0027device_id\u0027] \u003d\u003d const.DEVICE_ID_RESERVED_DHCP_PORT or"},{"line_number":447,"context_line":"             port[\u0027device_id\u0027].startswith(\u0027dhcp\u0027)))"},{"line_number":448,"context_line":""},{"line_number":449,"context_line":""},{"line_number":450,"context_line":"def is_gateway_chassis(chassis):"},{"line_number":451,"context_line":"    \"\"\"Check if the given chassis is a gateway chassis\"\"\""},{"line_number":452,"context_line":"    external_ids \u003d getattr(chassis, \u0027external_ids\u0027, {})"}],"source_content_type":"text/x-python","patch_set":6,"id":"df33271e_66135f67","line":449,"updated":"2020-04-01 15:24:20.000000000","message":"Looks like these 2 functions appeared during the neutron move I can not see them in networking-ovn master and in neutron they were added in \"[OVN] Move OVN commons to neutron tree\"","commit_id":"3b8f606254d3ed7b34c4ded393009e31a711f321"},{"author":{"_account_id":6773,"name":"Lucas Alvares Gomes","email":"lucasagomes@gmail.com","username":"lucasagomes"},"change_message_id":"0c5022c80b523737c1de4875fab1b90399261dff","unresolved":false,"context_lines":[{"line_number":446,"context_line":"            (port[\u0027device_id\u0027] \u003d\u003d const.DEVICE_ID_RESERVED_DHCP_PORT or"},{"line_number":447,"context_line":"             port[\u0027device_id\u0027].startswith(\u0027dhcp\u0027)))"},{"line_number":448,"context_line":""},{"line_number":449,"context_line":""},{"line_number":450,"context_line":"def is_gateway_chassis(chassis):"},{"line_number":451,"context_line":"    \"\"\"Check if the given chassis is a gateway chassis\"\"\""},{"line_number":452,"context_line":"    external_ids \u003d getattr(chassis, \u0027external_ids\u0027, {})"}],"source_content_type":"text/x-python","patch_set":6,"id":"df33271e_451a7e16","line":449,"in_reply_to":"df33271e_66135f67","updated":"2020-04-02 08:33:14.000000000","message":"Yeah, apparently we moved part of the code from the original external ports patch with the rest of OVN (these methods and a few constants). But we need it here in train.","commit_id":"3b8f606254d3ed7b34c4ded393009e31a711f321"}],"networking_ovn/ovsdb/ovsdb_monitor.py":[{"author":{"_account_id":21798,"name":"Bernard Cafarelli","email":"bcafarel@redhat.com","username":"bcafarel"},"change_message_id":"31ec5c65f9f5a22be4d4708a08e532405e9bb6ef","unresolved":false,"context_lines":[{"line_number":80,"context_line":"        if not self.driver._ovn_client.is_external_ports_supported():"},{"line_number":81,"context_line":"            return"},{"line_number":82,"context_line":""},{"line_number":83,"context_line":"        # NOTE(lucasgomes): If the external_ids column wasn\u0027t updated"},{"line_number":84,"context_line":"        # (meaning, Chassis \"gateway\" status didn\u0027t change) just returns"},{"line_number":85,"context_line":"        if not hasattr(old, \u0027external_ids\u0027) and event \u003d\u003d self.ROW_UPDATE:"},{"line_number":86,"context_line":"            return"},{"line_number":87,"context_line":""},{"line_number":88,"context_line":"        is_gw_chassis \u003d utils.is_gateway_chassis(row)"},{"line_number":89,"context_line":"        # If the Chassis being created is not a gateway, ignore it"}],"source_content_type":"text/x-python","patch_set":6,"id":"df33271e_c1b97515","line":86,"range":{"start_line":83,"start_character":0,"end_line":86,"end_character":18},"updated":"2020-04-01 15:24:20.000000000","message":"This comes from I3f7de633e5546dc78c3546b9c34ea81d0a0524d3 worth listing it too in commit message (or backport separately)","commit_id":"3b8f606254d3ed7b34c4ded393009e31a711f321"},{"author":{"_account_id":6773,"name":"Lucas Alvares Gomes","email":"lucasagomes@gmail.com","username":"lucasagomes"},"change_message_id":"0c5022c80b523737c1de4875fab1b90399261dff","unresolved":false,"context_lines":[{"line_number":80,"context_line":"        if not self.driver._ovn_client.is_external_ports_supported():"},{"line_number":81,"context_line":"            return"},{"line_number":82,"context_line":""},{"line_number":83,"context_line":"        # NOTE(lucasgomes): If the external_ids column wasn\u0027t updated"},{"line_number":84,"context_line":"        # (meaning, Chassis \"gateway\" status didn\u0027t change) just returns"},{"line_number":85,"context_line":"        if not hasattr(old, \u0027external_ids\u0027) and event \u003d\u003d self.ROW_UPDATE:"},{"line_number":86,"context_line":"            return"},{"line_number":87,"context_line":""},{"line_number":88,"context_line":"        is_gw_chassis \u003d utils.is_gateway_chassis(row)"},{"line_number":89,"context_line":"        # If the Chassis being created is not a gateway, ignore it"}],"source_content_type":"text/x-python","patch_set":6,"id":"df33271e_c5db2e4c","line":86,"range":{"start_line":83,"start_character":0,"end_line":86,"end_character":18},"in_reply_to":"df33271e_c1b97515","updated":"2020-04-02 08:33:14.000000000","message":"++ will add it to the commit message, thanks for point it out","commit_id":"3b8f606254d3ed7b34c4ded393009e31a711f321"},{"author":{"_account_id":21798,"name":"Bernard Cafarelli","email":"bcafarel@redhat.com","username":"bcafarel"},"change_message_id":"31ec5c65f9f5a22be4d4708a08e532405e9bb6ef","unresolved":false,"context_lines":[{"line_number":109,"context_line":"            # Find what\u0027s the lowest priority number current in the group"},{"line_number":110,"context_line":"            # and add the new chassis as the new lowest"},{"line_number":111,"context_line":"            min_priority \u003d min("},{"line_number":112,"context_line":"                [ch.priority for ch in default_group.ha_chassis])"},{"line_number":113,"context_line":""},{"line_number":114,"context_line":"            self.driver._nb_ovn.ha_chassis_group_add_chassis("},{"line_number":115,"context_line":"                ovn_const.HA_CHASSIS_GROUP_DEFAULT_NAME, row.name,"}],"source_content_type":"text/x-python","patch_set":6,"id":"df33271e_a1df1167","line":112,"range":{"start_line":112,"start_character":64,"end_line":112,"end_character":65},"updated":"2020-04-01 15:24:20.000000000","message":"No need for \",default\u003dovn_const.HA_CHASSIS_GROUP_HIGHEST_PRIORITY\" in train?","commit_id":"3b8f606254d3ed7b34c4ded393009e31a711f321"},{"author":{"_account_id":6773,"name":"Lucas Alvares Gomes","email":"lucasagomes@gmail.com","username":"lucasagomes"},"change_message_id":"0c5022c80b523737c1de4875fab1b90399261dff","unresolved":false,"context_lines":[{"line_number":109,"context_line":"            # Find what\u0027s the lowest priority number current in the group"},{"line_number":110,"context_line":"            # and add the new chassis as the new lowest"},{"line_number":111,"context_line":"            min_priority \u003d min("},{"line_number":112,"context_line":"                [ch.priority for ch in default_group.ha_chassis])"},{"line_number":113,"context_line":""},{"line_number":114,"context_line":"            self.driver._nb_ovn.ha_chassis_group_add_chassis("},{"line_number":115,"context_line":"                ovn_const.HA_CHASSIS_GROUP_DEFAULT_NAME, row.name,"}],"source_content_type":"text/x-python","patch_set":6,"id":"df33271e_05d23628","line":112,"range":{"start_line":112,"start_character":64,"end_line":112,"end_character":65},"in_reply_to":"df33271e_a1df1167","updated":"2020-04-02 08:33:14.000000000","message":"Oh that\u0027s a great point! I need to wrap it with a try..except because the default parameter is Python3 only","commit_id":"3b8f606254d3ed7b34c4ded393009e31a711f321"}],"networking_ovn/tests/functional/test_ovn_db_sync.py":[{"author":{"_account_id":21798,"name":"Bernard Cafarelli","email":"bcafarel@redhat.com","username":"bcafarel"},"change_message_id":"31ec5c65f9f5a22be4d4708a08e532405e9bb6ef","unresolved":false,"context_lines":[{"line_number":896,"context_line":"                AssertionError, self.assertItemsEqual, db_provnet_ports,"},{"line_number":897,"context_line":"                monitor_provnet_ports)"},{"line_number":898,"context_line":""},{"line_number":899,"context_line":"    def _validate_metadata_ports(self, should_match\u003dTrue):"},{"line_number":900,"context_line":"        \"\"\"Validate metadata ports."},{"line_number":901,"context_line":""},{"line_number":902,"context_line":"        This method will check that all networks have one and only one metadata"}],"source_content_type":"text/x-python","patch_set":6,"id":"df33271e_81f64dd6","line":899,"updated":"2020-04-01 15:24:20.000000000","message":"Can only find this change in master \"[OVN] Add missing OVN functional tests\", though good to go in train from the look of it","commit_id":"3b8f606254d3ed7b34c4ded393009e31a711f321"},{"author":{"_account_id":6773,"name":"Lucas Alvares Gomes","email":"lucasagomes@gmail.com","username":"lucasagomes"},"change_message_id":"0c5022c80b523737c1de4875fab1b90399261dff","unresolved":false,"context_lines":[{"line_number":896,"context_line":"                AssertionError, self.assertItemsEqual, db_provnet_ports,"},{"line_number":897,"context_line":"                monitor_provnet_ports)"},{"line_number":898,"context_line":""},{"line_number":899,"context_line":"    def _validate_metadata_ports(self, should_match\u003dTrue):"},{"line_number":900,"context_line":"        \"\"\"Validate metadata ports."},{"line_number":901,"context_line":""},{"line_number":902,"context_line":"        This method will check that all networks have one and only one metadata"}],"source_content_type":"text/x-python","patch_set":6,"id":"df33271e_25eadad6","line":899,"in_reply_to":"df33271e_81f64dd6","updated":"2020-04-02 08:33:14.000000000","message":"++","commit_id":"3b8f606254d3ed7b34c4ded393009e31a711f321"}]}
