)]}'
{"networking_ovn/tests/functional/resources/ovsdb/events.py":[{"author":{"_account_id":8655,"name":"Jakub Libosvar","email":"libosvar@redhat.com","username":"jlibosva"},"change_message_id":"d2c9f2114410b3a1aaa0e2f2f3ac68f13fc8bf81","unresolved":false,"context_lines":[{"line_number":35,"context_line":"    def __init__(self, timeout\u003d5):"},{"line_number":36,"context_line":"        self.logical_port_names \u003d set()"},{"line_number":37,"context_line":"        super(WaitForCrLrpPortBindingEvent, self).__init__("},{"line_number":38,"context_line":"            (self.ROW_CREATE,), \u0027Port_Binding\u0027, None,"},{"line_number":39,"context_line":"            timeout\u003dtimeout)"},{"line_number":40,"context_line":""},{"line_number":41,"context_line":"    def matches(self, event, row, old\u003dNone):"}],"source_content_type":"text/x-python","patch_set":1,"id":"7faddb67_34d63cc5","line":38,"range":{"start_line":38,"start_character":32,"end_line":38,"end_character":46},"updated":"2019-09-02 15:35:12.000000000","message":"it could be self.TABLE","commit_id":"4cca6a61c8c0b8c905594aa8c0ecd900c16fddf8"},{"author":{"_account_id":24791,"name":"Maciej Jozefczyk","email":"jeicam.pl@gmail.com","username":"maciej.jozefczyk"},"change_message_id":"c5af027c818e64f1a34c5566e433598e7ab95dd2","unresolved":false,"context_lines":[{"line_number":15,"context_line":"from ovsdbapp.backend.ovs_idl import event"},{"line_number":16,"context_line":""},{"line_number":17,"context_line":""},{"line_number":18,"context_line":"# TODO(jlibosva): Move this class to a common place in ovsdbapp. Once it\u0027s"},{"line_number":19,"context_line":"#                 released we can just import the class from ovsdbapp"},{"line_number":20,"context_line":"class WaitForPortBindingEvent(event.WaitEvent):"},{"line_number":21,"context_line":"    event_name \u003d \u0027WaitForPortBindingEvent\u0027"}],"source_content_type":"text/x-python","patch_set":3,"id":"3fa7e38b_f8ca276c","line":18,"range":{"start_line":18,"start_character":0,"end_line":18,"end_character":16},"updated":"2019-09-20 13:14:01.000000000","message":"Maybe consider doing it:)","commit_id":"e1b652b72d52bb65d9358c2f1bcbaa8aa598ae59"},{"author":{"_account_id":24791,"name":"Maciej Jozefczyk","email":"jeicam.pl@gmail.com","username":"maciej.jozefczyk"},"change_message_id":"d0b028c6a7c220ecb43888323333f8f8069f214b","unresolved":false,"context_lines":[{"line_number":15,"context_line":"from ovsdbapp.backend.ovs_idl import event"},{"line_number":16,"context_line":""},{"line_number":17,"context_line":""},{"line_number":18,"context_line":"# TODO(jlibosva): Move this class to a common place in ovsdbapp. Once it\u0027s"},{"line_number":19,"context_line":"#                 released we can just import the class from ovsdbapp"},{"line_number":20,"context_line":"class WaitForPortBindingEvent(event.WaitEvent):"},{"line_number":21,"context_line":"    event_name \u003d \u0027WaitForPortBindingEvent\u0027"}],"source_content_type":"text/x-python","patch_set":3,"id":"3fa7e38b_88f08269","line":18,"range":{"start_line":18,"start_character":0,"end_line":18,"end_character":16},"in_reply_to":"3fa7e38b_25097730","updated":"2019-09-20 14:58:22.000000000","message":"++","commit_id":"e1b652b72d52bb65d9358c2f1bcbaa8aa598ae59"},{"author":{"_account_id":8655,"name":"Jakub Libosvar","email":"libosvar@redhat.com","username":"jlibosva"},"change_message_id":"70ba224068275e222ac14c2c8b80d33915677104","unresolved":false,"context_lines":[{"line_number":15,"context_line":"from ovsdbapp.backend.ovs_idl import event"},{"line_number":16,"context_line":""},{"line_number":17,"context_line":""},{"line_number":18,"context_line":"# TODO(jlibosva): Move this class to a common place in ovsdbapp. Once it\u0027s"},{"line_number":19,"context_line":"#                 released we can just import the class from ovsdbapp"},{"line_number":20,"context_line":"class WaitForPortBindingEvent(event.WaitEvent):"},{"line_number":21,"context_line":"    event_name \u003d \u0027WaitForPortBindingEvent\u0027"}],"source_content_type":"text/x-python","patch_set":3,"id":"3fa7e38b_25097730","line":18,"range":{"start_line":18,"start_character":0,"end_line":18,"end_character":16},"in_reply_to":"3fa7e38b_f8ca276c","updated":"2019-09-20 14:38:02.000000000","message":"I considered and did https://review.opendev.org/#/c/683407/","commit_id":"e1b652b72d52bb65d9358c2f1bcbaa8aa598ae59"},{"author":{"_account_id":24791,"name":"Maciej Jozefczyk","email":"jeicam.pl@gmail.com","username":"maciej.jozefczyk"},"change_message_id":"c5af027c818e64f1a34c5566e433598e7ab95dd2","unresolved":false,"context_lines":[{"line_number":40,"context_line":""},{"line_number":41,"context_line":"    def matches(self, event, row, old\u003dNone):"},{"line_number":42,"context_line":"        return (event \u003d\u003d self.ROW_CREATE and row._table.name \u003d\u003d self.TABLE and"},{"line_number":43,"context_line":"                row.logical_port.startswith(self.PREFIX))"},{"line_number":44,"context_line":""},{"line_number":45,"context_line":"    def run(self, event, row, old):"},{"line_number":46,"context_line":"        self.logical_port_names.add(row.logical_port)"}],"source_content_type":"text/x-python","patch_set":3,"id":"3fa7e38b_b8eb4fda","line":43,"range":{"start_line":43,"start_character":16,"end_line":43,"end_character":57},"updated":"2019-09-20 13:14:01.000000000","message":"That\u0027s always string, right?","commit_id":"e1b652b72d52bb65d9358c2f1bcbaa8aa598ae59"},{"author":{"_account_id":24791,"name":"Maciej Jozefczyk","email":"jeicam.pl@gmail.com","username":"maciej.jozefczyk"},"change_message_id":"d0b028c6a7c220ecb43888323333f8f8069f214b","unresolved":false,"context_lines":[{"line_number":40,"context_line":""},{"line_number":41,"context_line":"    def matches(self, event, row, old\u003dNone):"},{"line_number":42,"context_line":"        return (event \u003d\u003d self.ROW_CREATE and row._table.name \u003d\u003d self.TABLE and"},{"line_number":43,"context_line":"                row.logical_port.startswith(self.PREFIX))"},{"line_number":44,"context_line":""},{"line_number":45,"context_line":"    def run(self, event, row, old):"},{"line_number":46,"context_line":"        self.logical_port_names.add(row.logical_port)"}],"source_content_type":"text/x-python","patch_set":3,"id":"3fa7e38b_e8dfb6d3","line":43,"range":{"start_line":43,"start_character":16,"end_line":43,"end_character":57},"in_reply_to":"3fa7e38b_45b83375","updated":"2019-09-20 14:58:22.000000000","message":"++","commit_id":"e1b652b72d52bb65d9358c2f1bcbaa8aa598ae59"},{"author":{"_account_id":24791,"name":"Maciej Jozefczyk","email":"jeicam.pl@gmail.com","username":"maciej.jozefczyk"},"change_message_id":"d8d7c3c232c97b54d35baf12b8476aa5db1021ad","unresolved":false,"context_lines":[{"line_number":40,"context_line":""},{"line_number":41,"context_line":"    def matches(self, event, row, old\u003dNone):"},{"line_number":42,"context_line":"        return (event \u003d\u003d self.ROW_CREATE and row._table.name \u003d\u003d self.TABLE and"},{"line_number":43,"context_line":"                row.logical_port.startswith(self.PREFIX))"},{"line_number":44,"context_line":""},{"line_number":45,"context_line":"    def run(self, event, row, old):"},{"line_number":46,"context_line":"        self.logical_port_names.add(row.logical_port)"}],"source_content_type":"text/x-python","patch_set":3,"id":"3fa7e38b_c5e66345","line":43,"range":{"start_line":43,"start_character":16,"end_line":43,"end_character":57},"in_reply_to":"3fa7e38b_a52b2780","updated":"2019-09-20 14:10:51.000000000","message":"row.logical_port will always be a string right?","commit_id":"e1b652b72d52bb65d9358c2f1bcbaa8aa598ae59"},{"author":{"_account_id":8655,"name":"Jakub Libosvar","email":"libosvar@redhat.com","username":"jlibosva"},"change_message_id":"62d78884afa6ad33f29bd4cfa2999bee43e7d1aa","unresolved":false,"context_lines":[{"line_number":40,"context_line":""},{"line_number":41,"context_line":"    def matches(self, event, row, old\u003dNone):"},{"line_number":42,"context_line":"        return (event \u003d\u003d self.ROW_CREATE and row._table.name \u003d\u003d self.TABLE and"},{"line_number":43,"context_line":"                row.logical_port.startswith(self.PREFIX))"},{"line_number":44,"context_line":""},{"line_number":45,"context_line":"    def run(self, event, row, old):"},{"line_number":46,"context_line":"        self.logical_port_names.add(row.logical_port)"}],"source_content_type":"text/x-python","patch_set":3,"id":"3fa7e38b_a52b2780","line":43,"range":{"start_line":43,"start_character":16,"end_line":43,"end_character":57},"in_reply_to":"3fa7e38b_b8eb4fda","updated":"2019-09-20 14:07:20.000000000","message":"What do you mean? The result should be bool I think","commit_id":"e1b652b72d52bb65d9358c2f1bcbaa8aa598ae59"},{"author":{"_account_id":8655,"name":"Jakub Libosvar","email":"libosvar@redhat.com","username":"jlibosva"},"change_message_id":"69460012872fde42a0d07266679f130c7f3bf869","unresolved":false,"context_lines":[{"line_number":40,"context_line":""},{"line_number":41,"context_line":"    def matches(self, event, row, old\u003dNone):"},{"line_number":42,"context_line":"        return (event \u003d\u003d self.ROW_CREATE and row._table.name \u003d\u003d self.TABLE and"},{"line_number":43,"context_line":"                row.logical_port.startswith(self.PREFIX))"},{"line_number":44,"context_line":""},{"line_number":45,"context_line":"    def run(self, event, row, old):"},{"line_number":46,"context_line":"        self.logical_port_names.add(row.logical_port)"}],"source_content_type":"text/x-python","patch_set":3,"id":"3fa7e38b_45b83375","line":43,"range":{"start_line":43,"start_character":16,"end_line":43,"end_character":57},"in_reply_to":"3fa7e38b_c5e66345","updated":"2019-09-20 14:29:40.000000000","message":"Ah, sorry for my misunderstanding :) Yes unless the schema gets changed: https://github.com/ovn-org/ovn/blob/master/ovs/ovn/ovn-sb.ovsschema#L145","commit_id":"e1b652b72d52bb65d9358c2f1bcbaa8aa598ae59"},{"author":{"_account_id":5756,"name":"Terry Wilson","email":"twilson@redhat.com","username":"otherwiseguy"},"change_message_id":"b44353162942b840dd9b89ed8f1a1baf86ed7c0c","unresolved":false,"context_lines":[{"line_number":47,"context_line":"        super(WaitForCrLrpPortBindingEvent, self).run(event, row, old)"},{"line_number":48,"context_line":""},{"line_number":49,"context_line":"    def wait(self, logical_port_name):"},{"line_number":50,"context_line":"        if logical_port_name in self.logical_port_names:"},{"line_number":51,"context_line":"            self.logical_port_names.discard(logical_port_name)"},{"line_number":52,"context_line":"            return super(WaitForCrLrpPortBindingEvent, self).wait()"}],"source_content_type":"text/x-python","patch_set":3,"id":"3fa7e38b_0d99076d","line":50,"updated":"2019-09-20 12:33:04.000000000","message":"So if the logical port hasn\u0027t been matched/and added in run(), then wait() will immediately pass through instead of waiting and and the asserts will fail? I\u0027m probably missing something, but it seems like checking for success matching in the part that should be waiting would basically be doing what the we were doing w/o the patch, but failing in a new assert. Is that right?","commit_id":"e1b652b72d52bb65d9358c2f1bcbaa8aa598ae59"},{"author":{"_account_id":8655,"name":"Jakub Libosvar","email":"libosvar@redhat.com","username":"jlibosva"},"change_message_id":"62d78884afa6ad33f29bd4cfa2999bee43e7d1aa","unresolved":false,"context_lines":[{"line_number":47,"context_line":"        super(WaitForCrLrpPortBindingEvent, self).run(event, row, old)"},{"line_number":48,"context_line":""},{"line_number":49,"context_line":"    def wait(self, logical_port_name):"},{"line_number":50,"context_line":"        if logical_port_name in self.logical_port_names:"},{"line_number":51,"context_line":"            self.logical_port_names.discard(logical_port_name)"},{"line_number":52,"context_line":"            return super(WaitForCrLrpPortBindingEvent, self).wait()"}],"source_content_type":"text/x-python","patch_set":3,"id":"3fa7e38b_053c7bc6","line":50,"in_reply_to":"3fa7e38b_0d99076d","updated":"2019-09-20 14:07:20.000000000","message":"You\u0027re right, this is stupid :)","commit_id":"e1b652b72d52bb65d9358c2f1bcbaa8aa598ae59"},{"author":{"_account_id":5756,"name":"Terry Wilson","email":"twilson@redhat.com","username":"otherwiseguy"},"change_message_id":"413c5635cc073bd734765cf2f967c084f72c14c8","unresolved":false,"context_lines":[{"line_number":29,"context_line":"        super(WaitForCrLrpPortBindingEvent, self).__init__("},{"line_number":30,"context_line":"            (self.ROW_CREATE,), \u0027Port_Binding\u0027, None)"},{"line_number":31,"context_line":""},{"line_number":32,"context_line":"    def matches(self, event, row, old\u003dNone):"},{"line_number":33,"context_line":"        return (event \u003d\u003d self.ROW_CREATE and row._table.name \u003d\u003d self.TABLE and"},{"line_number":34,"context_line":"                row.logical_port.startswith(self.PREFIX))"},{"line_number":35,"context_line":""}],"source_content_type":"text/x-python","patch_set":6,"id":"3fa7e38b_fe7d2c1c","line":32,"updated":"2019-09-20 16:01:08.000000000","message":"If you wanted, you could use newest ovsdbapp\u0027s match_fn() here to avoid having to match on event/table name. Or subclass ovsdb/ovsdb_monitor.BaseEvent. You\u0027d just need to define \u0027table\u0027 and events as class attributes (event_name taken care of).","commit_id":"364a984ac6547cc088d7af30c297000bdd22f6f4"},{"author":{"_account_id":8655,"name":"Jakub Libosvar","email":"libosvar@redhat.com","username":"jlibosva"},"change_message_id":"f97d7919351e97a612bcbf0ede95ace4f970e17f","unresolved":false,"context_lines":[{"line_number":29,"context_line":"        super(WaitForCrLrpPortBindingEvent, self).__init__("},{"line_number":30,"context_line":"            (self.ROW_CREATE,), \u0027Port_Binding\u0027, None)"},{"line_number":31,"context_line":""},{"line_number":32,"context_line":"    def matches(self, event, row, old\u003dNone):"},{"line_number":33,"context_line":"        return (event \u003d\u003d self.ROW_CREATE and row._table.name \u003d\u003d self.TABLE and"},{"line_number":34,"context_line":"                row.logical_port.startswith(self.PREFIX))"},{"line_number":35,"context_line":""}],"source_content_type":"text/x-python","patch_set":6,"id":"3fa7e38b_6fb8a8c7","line":32,"in_reply_to":"3fa7e38b_fe7d2c1c","updated":"2019-09-20 17:07:30.000000000","message":"Thanks, I\u0027ll do that. I tried to avoid using ROW_CREATE and TABLE on L33 but it didn\u0027t work, now I know why :D","commit_id":"364a984ac6547cc088d7af30c297000bdd22f6f4"}]}
