)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":16688,"name":"Rodolfo Alonso","email":"ralonsoh@redhat.com","username":"rodolfo-alonso-hernandez"},"change_message_id":"c2796cc825946f877b66411d66c0b69f62fcbf28","unresolved":true,"context_lines":[{"line_number":11,"context_line":"changes the up status in SB DB and northd propagates it up to NB DB."},{"line_number":12,"context_line":"We do not need to wait and can save some time if we use the newly added"},{"line_number":13,"context_line":"SB DB up column instead, when possible:"},{"line_number":14,"context_line":"https://github.com/ovn-org/ovn/commit/4d3cb42b076bb58fd8f01ab8ad146ffd539f2152"},{"line_number":15,"context_line":""},{"line_number":16,"context_line":"Change-Id: Ib071889271f4e4d6acd83b219bf908a9ae80ce5c"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":4,"id":"3f35ebab_cb6c2871","line":14,"range":{"start_line":14,"start_character":0,"end_line":14,"end_character":78},"updated":"2021-12-17 09:38:00.000000000","message":"Checking the patch commit message, when a port is declared UP in the NB (LSP up) \"all OVS flows corresponding to the logical port and underlying OVS interface have been installed\". This exactly what we need in Neutron to declare this port as UP.\n\nI would point to the issues we currently have in the OVN live migration, when the OF rules are still not set in the OVS and we plug the VM TAP device. The VM starts sending traffic that is incorrectly processed.\n\nI don\u0027t think we need to save time but be sure the port Neutron declares as UP has the corresponding OF rules set in OVS and is ready, from the backend point of view, to be used.","commit_id":"783dc12eb41e302b45daefabd27d08b1989b4293"},{"author":{"_account_id":23804,"name":"Daniel Alvarez","email":"dalvarez@redhat.com","username":"dalvarez"},"change_message_id":"0781367ee9b255ab011f2fd59887cbf9684ff100","unresolved":true,"context_lines":[{"line_number":11,"context_line":"changes the up status in SB DB and northd propagates it up to NB DB."},{"line_number":12,"context_line":"We do not need to wait and can save some time if we use the newly added"},{"line_number":13,"context_line":"SB DB up column instead, when possible:"},{"line_number":14,"context_line":"https://github.com/ovn-org/ovn/commit/4d3cb42b076bb58fd8f01ab8ad146ffd539f2152"},{"line_number":15,"context_line":""},{"line_number":16,"context_line":"Change-Id: Ib071889271f4e4d6acd83b219bf908a9ae80ce5c"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":4,"id":"cd026e57_10f91fd3","line":14,"range":{"start_line":14,"start_character":0,"end_line":14,"end_character":78},"in_reply_to":"3f35ebab_cb6c2871","updated":"2021-12-17 09:47:33.000000000","message":"@Rodolfo, what this patch is doing is saving the time that it takes for northd to translate the same info from SB to NB. Instead of looking into the NB database, this patch is getting the same info from the SB, hence shortcutting northd (a bottleneck at high churn), then saving time.","commit_id":"783dc12eb41e302b45daefabd27d08b1989b4293"},{"author":{"_account_id":23567,"name":"Luis Tomas Bolivar","email":"ltomasbo@redhat.com","username":"ltomasbo"},"change_message_id":"df7253a16f371af61273618549b88555d96a23e9","unresolved":true,"context_lines":[{"line_number":11,"context_line":"changes the up status in SB DB and northd propagates it up to NB DB."},{"line_number":12,"context_line":"We do not need to wait and can save some time if we use the newly added"},{"line_number":13,"context_line":"SB DB up column instead, when possible:"},{"line_number":14,"context_line":"https://github.com/ovn-org/ovn/commit/4d3cb42b076bb58fd8f01ab8ad146ffd539f2152"},{"line_number":15,"context_line":""},{"line_number":16,"context_line":"Change-Id: Ib071889271f4e4d6acd83b219bf908a9ae80ce5c"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":4,"id":"28b331f9_2d558445","line":14,"range":{"start_line":14,"start_character":0,"end_line":14,"end_character":78},"in_reply_to":"cd026e57_10f91fd3","updated":"2021-12-17 09:54:31.000000000","message":"@Rodolfo, besides what Daniel mention about this just saving time to set the port to ACTIVE (but without changing the behavior, if the behavior is changing that means I missed something), if the UP row is present in the OVN SB schema (Port Binding table), this patch ensures the port is only transitioned to ACTIVE once the OF rules are set. That said, unless the OVN SB scheme is changed/updated prior to the OVN live migration, the old behavior (just checking the port has a chassis) will be used, not ensuring if OF rules are set.","commit_id":"783dc12eb41e302b45daefabd27d08b1989b4293"},{"author":{"_account_id":16688,"name":"Rodolfo Alonso","email":"ralonsoh@redhat.com","username":"rodolfo-alonso-hernandez"},"change_message_id":"499d97f4fbbbe514d02129cdd7cdd1dfbf769668","unresolved":true,"context_lines":[{"line_number":11,"context_line":"changes the up status in SB DB and northd propagates it up to NB DB."},{"line_number":12,"context_line":"We do not need to wait and can save some time if we use the newly added"},{"line_number":13,"context_line":"SB DB up column instead, when possible:"},{"line_number":14,"context_line":"https://github.com/ovn-org/ovn/commit/4d3cb42b076bb58fd8f01ab8ad146ffd539f2152"},{"line_number":15,"context_line":""},{"line_number":16,"context_line":"Change-Id: Ib071889271f4e4d6acd83b219bf908a9ae80ce5c"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":4,"id":"4e281e49_684d375d","line":14,"range":{"start_line":14,"start_character":0,"end_line":14,"end_character":78},"in_reply_to":"cd026e57_10f91fd3","updated":"2021-12-17 09:56:45.000000000","message":"This is not exactly what I read from the commit message:\n\"This allows us to delay setting the Logical_Switch_Port.up field until all OVS flows corresponding to the logical port and underlying OVS interface have been installed.\" The LSP is in the NB.\n\nHowever this is in the patch: [1]. Thus you are right: when the SB port binding is set to UP, that means the OF rules are in place.\n\nI\u0027ll remove my -1 and review that patch.\n\n[1]https://github.com/ovn-org/ovn/commit/4d3cb42b076bb58fd8f01ab8ad146ffd539f2152#diff-31fb5e479b4a6ea83383e5d76c4644df6e8ab6b02a5c1086e178e90f04c5749eR2774-R2781","commit_id":"783dc12eb41e302b45daefabd27d08b1989b4293"}],"/PATCHSET_LEVEL":[{"author":{"_account_id":23804,"name":"Daniel Alvarez","email":"dalvarez@redhat.com","username":"dalvarez"},"change_message_id":"34b416b30c30cd2e1896ccad04cbb76b28569700","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":2,"id":"751e4eb3_cd95fcaf","updated":"2021-12-13 15:09:53.000000000","message":"Cool! Thanks Luis++\nSome comments, please check them out","commit_id":"61805505f5ceb8d0a667392077e0da77dfc6723d"},{"author":{"_account_id":23567,"name":"Luis Tomas Bolivar","email":"ltomasbo@redhat.com","username":"ltomasbo"},"change_message_id":"d6403269f9a92b4d195ee07a9aab279f14412518","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":3,"id":"3030bb3a_0b1e0d04","updated":"2021-12-16 08:27:48.000000000","message":"recheck","commit_id":"761d0b69f085b2735a7fe5ebfbeb937fa4bc4e29"},{"author":{"_account_id":16688,"name":"Rodolfo Alonso","email":"ralonsoh@redhat.com","username":"rodolfo-alonso-hernandez"},"change_message_id":"c2796cc825946f877b66411d66c0b69f62fcbf28","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":4,"id":"1556568b_fa34de73","updated":"2021-12-17 09:38:00.000000000","message":"-1 for visibility","commit_id":"783dc12eb41e302b45daefabd27d08b1989b4293"},{"author":{"_account_id":23567,"name":"Luis Tomas Bolivar","email":"ltomasbo@redhat.com","username":"ltomasbo"},"change_message_id":"d895740bea6b6e5954bdda6a51f760c07b1fb3fb","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":4,"id":"88131979_07a59825","updated":"2021-12-17 13:03:03.000000000","message":"Found out an issue not transitioning the newly created router ports to ACTIVE","commit_id":"783dc12eb41e302b45daefabd27d08b1989b4293"},{"author":{"_account_id":16688,"name":"Rodolfo Alonso","email":"ralonsoh@redhat.com","username":"rodolfo-alonso-hernandez"},"change_message_id":"b529290ab9cf6d4e4d6ba3b0f907c02aeee7e0f6","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":4,"id":"180b0f73_c74c14ee","updated":"2021-12-17 10:11:48.000000000","message":"Patch looks Ok. Thanks for the comments about how to handle compatibility with older versions. Once we can enforce 21.03.0, we\u0027ll be able to remove those extra checks.","commit_id":"783dc12eb41e302b45daefabd27d08b1989b4293"},{"author":{"_account_id":16688,"name":"Rodolfo Alonso","email":"ralonsoh@redhat.com","username":"rodolfo-alonso-hernandez"},"change_message_id":"ece51d552dd4bcab11389e12590232c1b6d29c43","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":4,"id":"9ae2ca3e_50baaef1","updated":"2021-12-17 10:09:52.000000000","message":"recheck","commit_id":"783dc12eb41e302b45daefabd27d08b1989b4293"}],"neutron/plugins/ml2/drivers/ovn/mech_driver/ovsdb/ovsdb_monitor.py":[{"author":{"_account_id":23804,"name":"Daniel Alvarez","email":"dalvarez@redhat.com","username":"dalvarez"},"change_message_id":"34b416b30c30cd2e1896ccad04cbb76b28569700","unresolved":true,"context_lines":[{"line_number":396,"context_line":"        if row.type in [ovn_const.OVN_CHASSIS_REDIRECT,"},{"line_number":397,"context_line":"                        ovn_const.LSP_TYPE_ROUTER]:"},{"line_number":398,"context_line":"            return False"},{"line_number":399,"context_line":"        # TODO(ltomasbo): Remove the checkings for \u0027up\u0027 column once minimal"},{"line_number":400,"context_line":"        # ovn version has it. The match_fn can be then replaced by different"},{"line_number":401,"context_line":"        # init method above:"},{"line_number":402,"context_line":"        # super().__init__("},{"line_number":403,"context_line":"        #     events, table, ((\u0027up\u0027, \u0027\u003d\u0027, True), (\u0027type\u0027, \u0027\u003d\u0027, \u0027\u0027),))"}],"source_content_type":"text/x-python","patch_set":2,"id":"9306a033_28796e1e","line":400,"range":{"start_line":399,"start_character":56,"end_line":400,"end_character":29},"updated":"2021-12-13 15:09:53.000000000","message":"Can you please state which one is the min version that includes this column in the schema?","commit_id":"61805505f5ceb8d0a667392077e0da77dfc6723d"},{"author":{"_account_id":23567,"name":"Luis Tomas Bolivar","email":"ltomasbo@redhat.com","username":"ltomasbo"},"change_message_id":"8e9cf66c8c9c0faf4ea504bdc9ddb1311053c7d2","unresolved":false,"context_lines":[{"line_number":396,"context_line":"        if row.type in [ovn_const.OVN_CHASSIS_REDIRECT,"},{"line_number":397,"context_line":"                        ovn_const.LSP_TYPE_ROUTER]:"},{"line_number":398,"context_line":"            return False"},{"line_number":399,"context_line":"        # TODO(ltomasbo): Remove the checkings for \u0027up\u0027 column once minimal"},{"line_number":400,"context_line":"        # ovn version has it. The match_fn can be then replaced by different"},{"line_number":401,"context_line":"        # init method above:"},{"line_number":402,"context_line":"        # super().__init__("},{"line_number":403,"context_line":"        #     events, table, ((\u0027up\u0027, \u0027\u003d\u0027, True), (\u0027type\u0027, \u0027\u003d\u0027, \u0027\u0027),))"}],"source_content_type":"text/x-python","patch_set":2,"id":"8e3042bf_9649da75","line":400,"range":{"start_line":399,"start_character":56,"end_line":400,"end_character":29},"in_reply_to":"9306a033_28796e1e","updated":"2021-12-14 12:45:40.000000000","message":"Done","commit_id":"61805505f5ceb8d0a667392077e0da77dfc6723d"},{"author":{"_account_id":8655,"name":"Jakub Libosvar","email":"libosvar@redhat.com","username":"jlibosva"},"change_message_id":"26e5be85afd27736b4246a4d3b5eef6ce67b51e3","unresolved":true,"context_lines":[{"line_number":401,"context_line":"        # init method above:"},{"line_number":402,"context_line":"        # super().__init__("},{"line_number":403,"context_line":"        #     events, table, ((\u0027up\u0027, \u0027\u003d\u0027, True), (\u0027type\u0027, \u0027\u003d\u0027, \u0027\u0027),))"},{"line_number":404,"context_line":"        if hasattr(row, \u0027up\u0027):"},{"line_number":405,"context_line":"            return bool(row.up[0])"},{"line_number":406,"context_line":"        elif row.chassis:"},{"line_number":407,"context_line":"            return True"},{"line_number":408,"context_line":"        return False"},{"line_number":409,"context_line":""},{"line_number":410,"context_line":"    def run(self, event, row, old):"}],"source_content_type":"text/x-python","patch_set":2,"id":"5de617e5_9a4eca3d","line":407,"range":{"start_line":404,"start_character":0,"end_line":407,"end_character":23},"updated":"2021-12-13 18:04:08.000000000","message":"I think this is wrong. The port is set to up when openflow rules are installed on the chassis while chassis is set when port is claimed by ovn-controller. Those are 2 different scenarios so with this code we could set the Neutron port UP when the data plane is not ready yet.","commit_id":"61805505f5ceb8d0a667392077e0da77dfc6723d"},{"author":{"_account_id":23567,"name":"Luis Tomas Bolivar","email":"ltomasbo@redhat.com","username":"ltomasbo"},"change_message_id":"c4f3e5aebdcedefac7a55f06318d26d4e6b13c99","unresolved":true,"context_lines":[{"line_number":401,"context_line":"        # init method above:"},{"line_number":402,"context_line":"        # super().__init__("},{"line_number":403,"context_line":"        #     events, table, ((\u0027up\u0027, \u0027\u003d\u0027, True), (\u0027type\u0027, \u0027\u003d\u0027, \u0027\u0027),))"},{"line_number":404,"context_line":"        if hasattr(row, \u0027up\u0027):"},{"line_number":405,"context_line":"            return bool(row.up[0])"},{"line_number":406,"context_line":"        elif row.chassis:"},{"line_number":407,"context_line":"            return True"},{"line_number":408,"context_line":"        return False"},{"line_number":409,"context_line":""},{"line_number":410,"context_line":"    def run(self, event, row, old):"}],"source_content_type":"text/x-python","patch_set":2,"id":"2fa5561b_58c7e33e","line":407,"range":{"start_line":404,"start_character":0,"end_line":407,"end_character":23},"in_reply_to":"1a513cdf_66de9ac5","updated":"2021-12-15 08:08:48.000000000","message":"Yep, if there is a chassis the the up column is used (same for this code, right? or am I missing something?).\n\nBut if there is no up column, it just set up to true, right? \nif (sb-\u003echassis) {\n            up \u003d smap_get_bool(\u0026sb-\u003echassis-\u003eother_config,\n                               OVN_FEATURE_PORT_UP_NOTIF, false)\n                 ? sb-\u003en_up \u0026\u0026 sb-\u003eup[0]\n                 : true;\n\nI understand there that if there is no need to use the OVN_FREATURE_PORT_UP_NOTIF (aka, we have the UP column), then we set up to the value of \"sb-\u003en_up \u0026\u0026 sb-\u003eup[0]\", but if there is no UP column, then up is directly set to true (so, only having the chassis is what sets it to true in the case of no UP column, which is what the code here attempts to do","commit_id":"61805505f5ceb8d0a667392077e0da77dfc6723d"},{"author":{"_account_id":23567,"name":"Luis Tomas Bolivar","email":"ltomasbo@redhat.com","username":"ltomasbo"},"change_message_id":"8e9cf66c8c9c0faf4ea504bdc9ddb1311053c7d2","unresolved":true,"context_lines":[{"line_number":401,"context_line":"        # init method above:"},{"line_number":402,"context_line":"        # super().__init__("},{"line_number":403,"context_line":"        #     events, table, ((\u0027up\u0027, \u0027\u003d\u0027, True), (\u0027type\u0027, \u0027\u003d\u0027, \u0027\u0027),))"},{"line_number":404,"context_line":"        if hasattr(row, \u0027up\u0027):"},{"line_number":405,"context_line":"            return bool(row.up[0])"},{"line_number":406,"context_line":"        elif row.chassis:"},{"line_number":407,"context_line":"            return True"},{"line_number":408,"context_line":"        return False"},{"line_number":409,"context_line":""},{"line_number":410,"context_line":"    def run(self, event, row, old):"}],"source_content_type":"text/x-python","patch_set":2,"id":"6a952ec5_bb635246","line":407,"range":{"start_line":404,"start_character":0,"end_line":407,"end_character":23},"in_reply_to":"5de617e5_9a4eca3d","updated":"2021-12-14 12:45:40.000000000","message":"Idea here is that if OVN is recent enough, we will use the UP field. But if it is not new enough (and there is no UP field) we will fall back to use the chassis as the indicator. It seems the NB DB is updating lsp to up based on that information anyway (I know this is crazy old but it is the best reference I found for what I thought is the current behavior: https://github.com/ovn-org/ovn/commit/b3d3484ac13f81e89d3685d27083347e9943820d).\n\nBased on this northd code (https://github.com/ovn-org/ovn/blob/main/northd/northd.c#L15139-L15149), I understand the NB DB is updated with status up if:\n- the port is a router port\n- the sb entry has a chassis","commit_id":"61805505f5ceb8d0a667392077e0da77dfc6723d"},{"author":{"_account_id":8655,"name":"Jakub Libosvar","email":"libosvar@redhat.com","username":"jlibosva"},"change_message_id":"d4845b9c5a53f19a5fdcdd1e4a730cedc124016b","unresolved":true,"context_lines":[{"line_number":401,"context_line":"        # init method above:"},{"line_number":402,"context_line":"        # super().__init__("},{"line_number":403,"context_line":"        #     events, table, ((\u0027up\u0027, \u0027\u003d\u0027, True), (\u0027type\u0027, \u0027\u003d\u0027, \u0027\u0027),))"},{"line_number":404,"context_line":"        if hasattr(row, \u0027up\u0027):"},{"line_number":405,"context_line":"            return bool(row.up[0])"},{"line_number":406,"context_line":"        elif row.chassis:"},{"line_number":407,"context_line":"            return True"},{"line_number":408,"context_line":"        return False"},{"line_number":409,"context_line":""},{"line_number":410,"context_line":"    def run(self, event, row, old):"}],"source_content_type":"text/x-python","patch_set":2,"id":"1a513cdf_66de9ac5","line":407,"range":{"start_line":404,"start_character":0,"end_line":407,"end_character":23},"in_reply_to":"6a952ec5_bb635246","updated":"2021-12-14 21:23:58.000000000","message":"I think the condition is that \"if there is a chassis then NB LSP is set to whatever is in the port binding - sb-\u003en_up \u0026\u0026 sb-\u003eup[0]\". That means if ovn-controller hasn\u0027t finished implementing openflows yet and the port_binding up column is false, the NB LSP up column will also be set to false even if chassis is set.","commit_id":"61805505f5ceb8d0a667392077e0da77dfc6723d"},{"author":{"_account_id":23804,"name":"Daniel Alvarez","email":"dalvarez@redhat.com","username":"dalvarez"},"change_message_id":"34b416b30c30cd2e1896ccad04cbb76b28569700","unresolved":true,"context_lines":[{"line_number":427,"context_line":"        self.event_name \u003d \u0027PortBindingCreateDownEvent\u0027"},{"line_number":428,"context_line":""},{"line_number":429,"context_line":"    def match_fn(self, event, row, old):"},{"line_number":430,"context_line":"        if row.type in [ovn_const.OVN_CHASSIS_REDIRECT,"},{"line_number":431,"context_line":"                        ovn_const.LSP_TYPE_ROUTER]:"},{"line_number":432,"context_line":"            return False"},{"line_number":433,"context_line":"        # TODO(ltomasbo): Remove the checkings for \u0027up\u0027 column once minimal"},{"line_number":434,"context_line":"        # ovn version has it. The match_fn can be then replaced by different"},{"line_number":435,"context_line":"        # init method above:"},{"line_number":436,"context_line":"        # super().__init__("},{"line_number":437,"context_line":"        #     events, table, ((\u0027up\u0027, \u0027\u003d\u0027, False), (\u0027type\u0027, \u0027\u003d\u0027, \u0027\u0027),))"},{"line_number":438,"context_line":"        if hasattr(row, \u0027up\u0027):"},{"line_number":439,"context_line":"            return not bool(row.up[0])"},{"line_number":440,"context_line":"        elif not row.chassis:"},{"line_number":441,"context_line":"            return True"},{"line_number":442,"context_line":"        return False"},{"line_number":443,"context_line":""},{"line_number":444,"context_line":"    def run(self, event, row, old):"},{"line_number":445,"context_line":"        self.driver.set_port_status_down(row.logical_port)"}],"source_content_type":"text/x-python","patch_set":2,"id":"774d75d2_7997ecb5","line":442,"range":{"start_line":430,"start_character":0,"end_line":442,"end_character":20},"updated":"2021-12-13 15:09:53.000000000","message":"This is exactly like L395, maybe write a method to avoid duplication?","commit_id":"61805505f5ceb8d0a667392077e0da77dfc6723d"},{"author":{"_account_id":23804,"name":"Daniel Alvarez","email":"dalvarez@redhat.com","username":"dalvarez"},"change_message_id":"34b416b30c30cd2e1896ccad04cbb76b28569700","unresolved":true,"context_lines":[{"line_number":502,"context_line":"        super().__init__(events, table, None)"},{"line_number":503,"context_line":"        self.event_name \u003d \u0027PortBindingUpdateDownEvent\u0027"},{"line_number":504,"context_line":""},{"line_number":505,"context_line":"    def match_fn(self, event, row, old):"},{"line_number":506,"context_line":"        if row.type in [ovn_const.OVN_CHASSIS_REDIRECT,"},{"line_number":507,"context_line":"                        ovn_const.LSP_TYPE_ROUTER]:"},{"line_number":508,"context_line":"            return False"}],"source_content_type":"text/x-python","patch_set":2,"id":"452dce53_03130583","line":505,"range":{"start_line":505,"start_character":2,"end_line":505,"end_character":40},"updated":"2021-12-13 15:09:53.000000000","message":"Same as L464 again","commit_id":"61805505f5ceb8d0a667392077e0da77dfc6723d"},{"author":{"_account_id":16688,"name":"Rodolfo Alonso","email":"ralonsoh@redhat.com","username":"rodolfo-alonso-hernandez"},"change_message_id":"b529290ab9cf6d4e4d6ba3b0f907c02aeee7e0f6","unresolved":true,"context_lines":[{"line_number":404,"context_line":"                    row.logical_port.startswith(\u0027cr-lrp\u0027)):"},{"line_number":405,"context_line":"                return False"},{"line_number":406,"context_line":"            return True"},{"line_number":407,"context_line":"        # TODO(ltomasbo): Remove the checkings for \u0027up\u0027 column once minimal"},{"line_number":408,"context_line":"        # ovn version has it (v21.03.0). The match_fn can be then replaced"},{"line_number":409,"context_line":"        # by different init method above:"},{"line_number":410,"context_line":"        # super().__init__("},{"line_number":411,"context_line":"        #     events, table, ((\u0027up\u0027, \u0027\u003d\u0027, True), (\u0027type\u0027, \u0027\u003d\u0027, \u0027\u0027),))"},{"line_number":412,"context_line":"        if hasattr(row, \u0027up\u0027):"},{"line_number":413,"context_line":"            return bool(row.up[0])"},{"line_number":414,"context_line":"        elif row.chassis:"}],"source_content_type":"text/x-python","patch_set":4,"id":"2d5af27f_447960d9","line":411,"range":{"start_line":407,"start_character":8,"end_line":411,"end_character":69},"updated":"2021-12-17 10:11:48.000000000","message":"+1","commit_id":"783dc12eb41e302b45daefabd27d08b1989b4293"},{"author":{"_account_id":16688,"name":"Rodolfo Alonso","email":"ralonsoh@redhat.com","username":"rodolfo-alonso-hernandez"},"change_message_id":"b529290ab9cf6d4e4d6ba3b0f907c02aeee7e0f6","unresolved":true,"context_lines":[{"line_number":461,"context_line":""},{"line_number":462,"context_line":"    This happens when the VM goes up."},{"line_number":463,"context_line":"    New value of Port_Binding \u0027up\u0027 will be True and the old value will"},{"line_number":464,"context_line":"    be False. Or if that column that not exists, the chassis will be set"},{"line_number":465,"context_line":"    and the old chassis value will be empty."},{"line_number":466,"context_line":"    \"\"\""},{"line_number":467,"context_line":""},{"line_number":468,"context_line":"    def __init__(self, driver):"}],"source_content_type":"text/x-python","patch_set":4,"id":"e6ec609a_bda8a6de","line":465,"range":{"start_line":464,"start_character":14,"end_line":465,"end_character":44},"updated":"2021-12-17 10:11:48.000000000","message":"+1","commit_id":"783dc12eb41e302b45daefabd27d08b1989b4293"}]}
