)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":23804,"name":"Daniel Alvarez","email":"dalvarez@redhat.com","username":"dalvarez"},"change_message_id":"c87d1a277a0e92a3ce41eb904a2ad7547bde555f","unresolved":false,"context_lines":[{"line_number":6,"context_line":""},{"line_number":7,"context_line":"Propagate mtu to all subnets"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"During network update now we will call also update"},{"line_number":10,"context_line":"of DHCP_Options"},{"line_number":11,"context_line":""},{"line_number":12,"context_line":"Closes-Bug: #1816449"},{"line_number":13,"context_line":"Change-Id: Ieddc16e607bccef84316f9ee908e884539c7ed39"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":7,"id":"dfbec78f_714383b0","line":10,"range":{"start_line":9,"start_character":0,"end_line":10,"end_character":15},"updated":"2019-05-11 13:54:27.000000000","message":"Could you explain a bit more why this is needed? It\u0027s very helpful with a git log to spot what the patch does","commit_id":"2c434e1141773ae5b175f5436a2a8589680f8097"},{"author":{"_account_id":11082,"name":"Kamil Sambor","email":"ksambor@redhat.com","username":"ksambor"},"change_message_id":"0abe9e82814635f0094fb0066feb3cac65001112","unresolved":false,"context_lines":[{"line_number":6,"context_line":""},{"line_number":7,"context_line":"Propagate mtu to all subnets"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"During network update now we will call also update"},{"line_number":10,"context_line":"of DHCP_Options"},{"line_number":11,"context_line":""},{"line_number":12,"context_line":"Closes-Bug: #1816449"},{"line_number":13,"context_line":"Change-Id: Ieddc16e607bccef84316f9ee908e884539c7ed39"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":7,"id":"dfbec78f_0ce4453b","line":10,"range":{"start_line":9,"start_character":0,"end_line":10,"end_character":15},"in_reply_to":"dfbec78f_714383b0","updated":"2019-05-14 13:03:01.000000000","message":"Done","commit_id":"2c434e1141773ae5b175f5436a2a8589680f8097"},{"author":{"_account_id":17776,"name":"Reedip","email":"reedip.banerjee@gmail.com","username":"Reedip"},"change_message_id":"6d2390c7c2b447cd41f65e9e0aba4bf0912e5833","unresolved":false,"context_lines":[{"line_number":6,"context_line":""},{"line_number":7,"context_line":"Propagate mtu to all subnets"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"In networking-ovn we maps subnets to OVN DHCP_Options"},{"line_number":10,"context_line":"rows (where we store the MTU), but from neutron API perspective,"},{"line_number":11,"context_line":"the MTU is applied per network. So we need update all subnets"},{"line_number":12,"context_line":"thats belong to network to propagade correctly MTU for network."}],"source_content_type":"text/x-gerrit-commit-message","patch_set":10,"id":"dfbec78f_644e2cc2","line":9,"range":{"start_line":9,"start_character":21,"end_line":9,"end_character":25},"updated":"2019-05-15 07:14:53.000000000","message":"nit: map","commit_id":"ad2277741d91620f12ffdaae1f6b3fcdac0b1535"},{"author":{"_account_id":11082,"name":"Kamil Sambor","email":"ksambor@redhat.com","username":"ksambor"},"change_message_id":"6e1a7b9c0846282e47b09ee9bd3641ed97ea8567","unresolved":false,"context_lines":[{"line_number":6,"context_line":""},{"line_number":7,"context_line":"Propagate mtu to all subnets"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"In networking-ovn we maps subnets to OVN DHCP_Options"},{"line_number":10,"context_line":"rows (where we store the MTU), but from neutron API perspective,"},{"line_number":11,"context_line":"the MTU is applied per network. So we need update all subnets"},{"line_number":12,"context_line":"thats belong to network to propagade correctly MTU for network."}],"source_content_type":"text/x-gerrit-commit-message","patch_set":10,"id":"dfbec78f_0034f348","line":9,"range":{"start_line":9,"start_character":21,"end_line":9,"end_character":25},"in_reply_to":"dfbec78f_644e2cc2","updated":"2019-05-15 15:53:59.000000000","message":"Done","commit_id":"ad2277741d91620f12ffdaae1f6b3fcdac0b1535"}],"networking_ovn/common/ovn_client.py":[{"author":{"_account_id":23804,"name":"Daniel Alvarez","email":"dalvarez@redhat.com","username":"dalvarez"},"change_message_id":"c87d1a277a0e92a3ce41eb904a2ad7547bde555f","unresolved":false,"context_lines":[{"line_number":1424,"context_line":"            # Check if previous mtu is different than current one,"},{"line_number":1425,"context_line":"            # checking will help reduce number of operations"},{"line_number":1426,"context_line":"            if (not lswitch or"},{"line_number":1427,"context_line":"                    lswitch.external_ids.get("},{"line_number":1428,"context_line":"                        ovn_const.OVN_NETWORK_MTU_EXT_ID_KEY) !\u003d"},{"line_number":1429,"context_line":"                    network[\u0027mtu\u0027]):"},{"line_number":1430,"context_line":"                context \u003d n_context.get_admin_context()"},{"line_number":1431,"context_line":"                subnets \u003d self._plugin.get_subnets_by_network("}],"source_content_type":"text/x-python","patch_set":7,"id":"dfbec78f_f110d3aa","line":1428,"range":{"start_line":1427,"start_character":20,"end_line":1428,"end_character":61},"updated":"2019-05-11 13:54:27.000000000","message":"Can you please explain why using external ids? I\u0027d say that this is not needed as either you can check if the MTU changed on the update_network_postcommit. Also, you can check the subnets and see if there was a chance.\nAs it\u0027d be a read operation against the in-memory replica, it\u0027s fast and we wouldn\u0027t duplicate the info using external ids. What do you think? Maybe I missed something though","commit_id":"2c434e1141773ae5b175f5436a2a8589680f8097"},{"author":{"_account_id":6773,"name":"Lucas Alvares Gomes","email":"lucasagomes@gmail.com","username":"lucasagomes"},"change_message_id":"6b7f3c0eed5ade327b46d29652573f74f864436b","unresolved":false,"context_lines":[{"line_number":1424,"context_line":"            # Check if previous mtu is different than current one,"},{"line_number":1425,"context_line":"            # checking will help reduce number of operations"},{"line_number":1426,"context_line":"            if (not lswitch or"},{"line_number":1427,"context_line":"                    lswitch.external_ids.get("},{"line_number":1428,"context_line":"                        ovn_const.OVN_NETWORK_MTU_EXT_ID_KEY) !\u003d"},{"line_number":1429,"context_line":"                    network[\u0027mtu\u0027]):"},{"line_number":1430,"context_line":"                context \u003d n_context.get_admin_context()"},{"line_number":1431,"context_line":"                subnets \u003d self._plugin.get_subnets_by_network("}],"source_content_type":"text/x-python","patch_set":7,"id":"dfbec78f_5364394a","line":1428,"range":{"start_line":1427,"start_character":20,"end_line":1428,"end_character":61},"in_reply_to":"dfbec78f_f110d3aa","updated":"2019-05-13 08:15:42.000000000","message":"I\u0027ve asked Kamil to move the logic to OVNClient so that the maintenance task and the ovn-db-sync script could also benefit from this bug fix.\n\nThis comes with some drawbacks. As you said, in the update_network_postcommit() we can compare the old and new version of the object when checking for the MTU. That\u0027s why he\u0027s using the external_ids, to save the latest MTU so he can compare detect the MTU changes and avoid the subnet updates if not needed.\n\nMakes sense ?","commit_id":"2c434e1141773ae5b175f5436a2a8589680f8097"},{"author":{"_account_id":6773,"name":"Lucas Alvares Gomes","email":"lucasagomes@gmail.com","username":"lucasagomes"},"change_message_id":"3de84ea298c3fe192e64811d47536ae6a7b2aa8b","unresolved":false,"context_lines":[{"line_number":1698,"context_line":"        check_rev_cmd \u003d self._nb_idl.check_revision_number("},{"line_number":1699,"context_line":"            subnet[\u0027id\u0027], subnet, ovn_const.TYPE_SUBNETS)"},{"line_number":1700,"context_line":"        if not txn:"},{"line_number":1701,"context_line":"            with self._nb_idl.transaction(check_error\u003dTrue) as txn:"},{"line_number":1702,"context_line":"                txn.add(check_rev_cmd)"},{"line_number":1703,"context_line":"                self._update_subnet(subnet, ovn_subnet, network, txn)"},{"line_number":1704,"context_line":"        else:"}],"source_content_type":"text/x-python","patch_set":7,"id":"dfbec78f_c92e5242","line":1701,"updated":"2019-05-10 13:48:27.000000000","message":"PEP8: http://logs.openstack.org/83/645483/7/check/openstack-tox-pep8/6374963/job-output.txt.gz#_2019-05-10_10_29_33_607564\n\nI guess we can redefined \"txn\" we must use another name.","commit_id":"2c434e1141773ae5b175f5436a2a8589680f8097"},{"author":{"_account_id":6773,"name":"Lucas Alvares Gomes","email":"lucasagomes@gmail.com","username":"lucasagomes"},"change_message_id":"6b7f3c0eed5ade327b46d29652573f74f864436b","unresolved":false,"context_lines":[{"line_number":1698,"context_line":"        check_rev_cmd \u003d self._nb_idl.check_revision_number("},{"line_number":1699,"context_line":"            subnet[\u0027id\u0027], subnet, ovn_const.TYPE_SUBNETS)"},{"line_number":1700,"context_line":"        if not txn:"},{"line_number":1701,"context_line":"            with self._nb_idl.transaction(check_error\u003dTrue) as txn:"},{"line_number":1702,"context_line":"                txn.add(check_rev_cmd)"},{"line_number":1703,"context_line":"                self._update_subnet(subnet, ovn_subnet, network, txn)"},{"line_number":1704,"context_line":"        else:"}],"source_content_type":"text/x-python","patch_set":7,"id":"dfbec78f_b34a55a9","line":1701,"in_reply_to":"dfbec78f_711ce3c0","updated":"2019-05-13 08:15:42.000000000","message":"lol","commit_id":"2c434e1141773ae5b175f5436a2a8589680f8097"},{"author":{"_account_id":11082,"name":"Kamil Sambor","email":"ksambor@redhat.com","username":"ksambor"},"change_message_id":"0abe9e82814635f0094fb0066feb3cac65001112","unresolved":false,"context_lines":[{"line_number":1698,"context_line":"        check_rev_cmd \u003d self._nb_idl.check_revision_number("},{"line_number":1699,"context_line":"            subnet[\u0027id\u0027], subnet, ovn_const.TYPE_SUBNETS)"},{"line_number":1700,"context_line":"        if not txn:"},{"line_number":1701,"context_line":"            with self._nb_idl.transaction(check_error\u003dTrue) as txn:"},{"line_number":1702,"context_line":"                txn.add(check_rev_cmd)"},{"line_number":1703,"context_line":"                self._update_subnet(subnet, ovn_subnet, network, txn)"},{"line_number":1704,"context_line":"        else:"}],"source_content_type":"text/x-python","patch_set":7,"id":"dfbec78f_2ce1092b","line":1701,"in_reply_to":"dfbec78f_c92e5242","updated":"2019-05-14 13:03:01.000000000","message":"Done","commit_id":"2c434e1141773ae5b175f5436a2a8589680f8097"},{"author":{"_account_id":23804,"name":"Daniel Alvarez","email":"dalvarez@redhat.com","username":"dalvarez"},"change_message_id":"f3550d15371e5d438de1790cf65561d9099cb78b","unresolved":false,"context_lines":[{"line_number":1698,"context_line":"        check_rev_cmd \u003d self._nb_idl.check_revision_number("},{"line_number":1699,"context_line":"            subnet[\u0027id\u0027], subnet, ovn_const.TYPE_SUBNETS)"},{"line_number":1700,"context_line":"        if not txn:"},{"line_number":1701,"context_line":"            with self._nb_idl.transaction(check_error\u003dTrue) as txn:"},{"line_number":1702,"context_line":"                txn.add(check_rev_cmd)"},{"line_number":1703,"context_line":"                self._update_subnet(subnet, ovn_subnet, network, txn)"},{"line_number":1704,"context_line":"        else:"}],"source_content_type":"text/x-python","patch_set":7,"id":"dfbec78f_711ce3c0","line":1701,"in_reply_to":"dfbec78f_c92e5242","updated":"2019-05-11 13:55:32.000000000","message":"Everytime pep8 fails in the gate, god kills a kitten","commit_id":"2c434e1141773ae5b175f5436a2a8589680f8097"},{"author":{"_account_id":8655,"name":"Jakub Libosvar","email":"libosvar@redhat.com","username":"jlibosva"},"change_message_id":"707fd2aa22dca65043dd69fd567998185f9dcc07","unresolved":false,"context_lines":[{"line_number":1632,"context_line":"        txn.add(self._nb_idl.add_dhcp_options(subnet[\u0027id\u0027], **new_options))"},{"line_number":1633,"context_line":"        dhcp_options \u003d self._nb_idl.get_subnet_dhcp_options("},{"line_number":1634,"context_line":"            subnet[\u0027id\u0027], with_ports\u003dTrue)"},{"line_number":1635,"context_line":""},{"line_number":1636,"context_line":"        # When a subnet dns_nameserver is updated, then we should update"},{"line_number":1637,"context_line":"        # the port dhcp options for ports (with no port specific dns_server"},{"line_number":1638,"context_line":"        # defined)."}],"source_content_type":"text/x-python","patch_set":10,"id":"dfbec78f_562e3a92","side":"PARENT","line":1635,"updated":"2019-05-15 12:57:10.000000000","message":"It\u0027s good to change only parts of the code you actually need :) If you re-spin, you can add the empty line back.","commit_id":"071a903a716cd1d142de1bcfeac7f47c594b7700"},{"author":{"_account_id":11082,"name":"Kamil Sambor","email":"ksambor@redhat.com","username":"ksambor"},"change_message_id":"6e1a7b9c0846282e47b09ee9bd3641ed97ea8567","unresolved":false,"context_lines":[{"line_number":1632,"context_line":"        txn.add(self._nb_idl.add_dhcp_options(subnet[\u0027id\u0027], **new_options))"},{"line_number":1633,"context_line":"        dhcp_options \u003d self._nb_idl.get_subnet_dhcp_options("},{"line_number":1634,"context_line":"            subnet[\u0027id\u0027], with_ports\u003dTrue)"},{"line_number":1635,"context_line":""},{"line_number":1636,"context_line":"        # When a subnet dns_nameserver is updated, then we should update"},{"line_number":1637,"context_line":"        # the port dhcp options for ports (with no port specific dns_server"},{"line_number":1638,"context_line":"        # defined)."}],"source_content_type":"text/x-python","patch_set":10,"id":"dfbec78f_201017a8","side":"PARENT","line":1635,"in_reply_to":"dfbec78f_562e3a92","updated":"2019-05-15 15:53:59.000000000","message":"Done","commit_id":"071a903a716cd1d142de1bcfeac7f47c594b7700"},{"author":{"_account_id":17776,"name":"Reedip","email":"reedip.banerjee@gmail.com","username":"Reedip"},"change_message_id":"6d2390c7c2b447cd41f65e9e0aba4bf0912e5833","unresolved":false,"context_lines":[{"line_number":1430,"context_line":"                context \u003d n_context.get_admin_context()"},{"line_number":1431,"context_line":"                subnets \u003d self._plugin.get_subnets_by_network("},{"line_number":1432,"context_line":"                    context, network[\u0027id\u0027])"},{"line_number":1433,"context_line":"                for subnet in subnets:"},{"line_number":1434,"context_line":"                    self.update_subnet(subnet, network, txn)"},{"line_number":1435,"context_line":""},{"line_number":1436,"context_line":"        if check_rev_cmd.result \u003d\u003d ovn_const.TXN_COMMITTED:"}],"source_content_type":"text/x-python","patch_set":10,"id":"dfbec78f_04d3b0d6","line":1433,"range":{"start_line":1433,"start_character":30,"end_line":1433,"end_character":37},"updated":"2019-05-15 07:14:53.000000000","message":"nit : do we actually need the subnets variable? Or can we do without it?","commit_id":"ad2277741d91620f12ffdaae1f6b3fcdac0b1535"},{"author":{"_account_id":11082,"name":"Kamil Sambor","email":"ksambor@redhat.com","username":"ksambor"},"change_message_id":"6e1a7b9c0846282e47b09ee9bd3641ed97ea8567","unresolved":false,"context_lines":[{"line_number":1430,"context_line":"                context \u003d n_context.get_admin_context()"},{"line_number":1431,"context_line":"                subnets \u003d self._plugin.get_subnets_by_network("},{"line_number":1432,"context_line":"                    context, network[\u0027id\u0027])"},{"line_number":1433,"context_line":"                for subnet in subnets:"},{"line_number":1434,"context_line":"                    self.update_subnet(subnet, network, txn)"},{"line_number":1435,"context_line":""},{"line_number":1436,"context_line":"        if check_rev_cmd.result \u003d\u003d ovn_const.TXN_COMMITTED:"}],"source_content_type":"text/x-python","patch_set":10,"id":"dfbec78f_904efa35","line":1433,"range":{"start_line":1433,"start_character":30,"end_line":1433,"end_character":37},"in_reply_to":"dfbec78f_04d3b0d6","updated":"2019-05-15 15:53:59.000000000","message":"This subnets variable is only in sake of readability","commit_id":"ad2277741d91620f12ffdaae1f6b3fcdac0b1535"},{"author":{"_account_id":8655,"name":"Jakub Libosvar","email":"libosvar@redhat.com","username":"jlibosva"},"change_message_id":"707fd2aa22dca65043dd69fd567998185f9dcc07","unresolved":false,"context_lines":[{"line_number":1679,"context_line":"            self._add_subnet_dhcp_options(subnet, network)"},{"line_number":1680,"context_line":"        db_rev.bump_revision(subnet, ovn_const.TYPE_SUBNETS)"},{"line_number":1681,"context_line":""},{"line_number":1682,"context_line":"    def _update_subnet(self, subnet, ovn_subnet, network, txn):"},{"line_number":1683,"context_line":"        if subnet[\u0027enable_dhcp\u0027] and not ovn_subnet:"},{"line_number":1684,"context_line":"            self._enable_subnet_dhcp_options(subnet, network, txn)"},{"line_number":1685,"context_line":"        elif not subnet[\u0027enable_dhcp\u0027] and ovn_subnet:"}],"source_content_type":"text/x-python","patch_set":10,"id":"dfbec78f_9644b248","line":1682,"range":{"start_line":1682,"start_character":8,"end_line":1682,"end_character":22},"updated":"2019-05-15 12:57:10.000000000","message":"nit: maybe _modify_subnet_dhcp_options would be more descriptive","commit_id":"ad2277741d91620f12ffdaae1f6b3fcdac0b1535"},{"author":{"_account_id":11082,"name":"Kamil Sambor","email":"ksambor@redhat.com","username":"ksambor"},"change_message_id":"6e1a7b9c0846282e47b09ee9bd3641ed97ea8567","unresolved":false,"context_lines":[{"line_number":1679,"context_line":"            self._add_subnet_dhcp_options(subnet, network)"},{"line_number":1680,"context_line":"        db_rev.bump_revision(subnet, ovn_const.TYPE_SUBNETS)"},{"line_number":1681,"context_line":""},{"line_number":1682,"context_line":"    def _update_subnet(self, subnet, ovn_subnet, network, txn):"},{"line_number":1683,"context_line":"        if subnet[\u0027enable_dhcp\u0027] and not ovn_subnet:"},{"line_number":1684,"context_line":"            self._enable_subnet_dhcp_options(subnet, network, txn)"},{"line_number":1685,"context_line":"        elif not subnet[\u0027enable_dhcp\u0027] and ovn_subnet:"}],"source_content_type":"text/x-python","patch_set":10,"id":"dfbec78f_16a1a246","line":1682,"range":{"start_line":1682,"start_character":8,"end_line":1682,"end_character":22},"in_reply_to":"dfbec78f_9644b248","updated":"2019-05-15 15:53:59.000000000","message":"Done","commit_id":"ad2277741d91620f12ffdaae1f6b3fcdac0b1535"},{"author":{"_account_id":17776,"name":"Reedip","email":"reedip.banerjee@gmail.com","username":"Reedip"},"change_message_id":"6d2390c7c2b447cd41f65e9e0aba4bf0912e5833","unresolved":false,"context_lines":[{"line_number":1680,"context_line":"        db_rev.bump_revision(subnet, ovn_const.TYPE_SUBNETS)"},{"line_number":1681,"context_line":""},{"line_number":1682,"context_line":"    def _update_subnet(self, subnet, ovn_subnet, network, txn):"},{"line_number":1683,"context_line":"        if subnet[\u0027enable_dhcp\u0027] and not ovn_subnet:"},{"line_number":1684,"context_line":"            self._enable_subnet_dhcp_options(subnet, network, txn)"},{"line_number":1685,"context_line":"        elif not subnet[\u0027enable_dhcp\u0027] and ovn_subnet:"},{"line_number":1686,"context_line":"            self._remove_subnet_dhcp_options(subnet[\u0027id\u0027], txn)"},{"line_number":1687,"context_line":"        elif subnet[\u0027enable_dhcp\u0027] and ovn_subnet:"},{"line_number":1688,"context_line":"            self._update_subnet_dhcp_options(subnet, network, txn)"},{"line_number":1689,"context_line":""},{"line_number":1690,"context_line":"    def update_subnet(self, subnet, network, txn\u003dNone):"},{"line_number":1691,"context_line":"        ovn_subnet \u003d self._nb_idl.get_subnet_dhcp_options("}],"source_content_type":"text/x-python","patch_set":10,"id":"dfbec78f_e4e8dc7c","line":1688,"range":{"start_line":1683,"start_character":0,"end_line":1688,"end_character":66},"updated":"2019-05-15 07:14:53.000000000","message":"this looks good, just my opinion, can be ignored :)\n\n if subnet[\u0027enable_dhcp\u0027]:\n    if ovn_subnet:\n        self._update_subnet_dhcp_options(subnet, network, txn)\n    else:\n        self._enable_subnet_dhcp_options(subnet, network, txn)\n else:\n    if ovn_subnet:\n        self._remove_subnet_dhcp_options(subnet[\u0027id\u0027], txn)\n\nI am just trying to get all options with subnet[\u0027enable_dhcp\u0027] True in one condition.","commit_id":"ad2277741d91620f12ffdaae1f6b3fcdac0b1535"},{"author":{"_account_id":6773,"name":"Lucas Alvares Gomes","email":"lucasagomes@gmail.com","username":"lucasagomes"},"change_message_id":"de7521c30979e11cdef947e3088aa033bacdd1a6","unresolved":false,"context_lines":[{"line_number":1715,"context_line":"        # If the OVN schema supports Port Groups, we\u0027ll model security groups"},{"line_number":1716,"context_line":"        # as such. Otherwise, for backwards compatibility, we\u0027ll keep creating"},{"line_number":1717,"context_line":"        # two Address Sets for each Neutron SG (one for IPv4 and one for"},{"line_number":1718,"context_line":"        # IPv6).git branch -D git checkout -b bak/rocky_ovntunnel"},{"line_number":1719,"context_line":"        with self._nb_idl.transaction(check_error\u003dTrue) as txn:"},{"line_number":1720,"context_line":"            ext_ids \u003d {ovn_const.OVN_SG_EXT_ID_KEY: security_group[\u0027id\u0027]}"},{"line_number":1721,"context_line":"            if self._nb_idl.is_port_groups_supported():"}],"source_content_type":"text/x-python","patch_set":10,"id":"dfbec78f_ec3d318f","line":1718,"range":{"start_line":1718,"start_character":16,"end_line":1718,"end_character":65},"updated":"2019-05-15 10:07:27.000000000","message":"Unrelated change","commit_id":"ad2277741d91620f12ffdaae1f6b3fcdac0b1535"},{"author":{"_account_id":11082,"name":"Kamil Sambor","email":"ksambor@redhat.com","username":"ksambor"},"change_message_id":"6e1a7b9c0846282e47b09ee9bd3641ed97ea8567","unresolved":false,"context_lines":[{"line_number":1715,"context_line":"        # If the OVN schema supports Port Groups, we\u0027ll model security groups"},{"line_number":1716,"context_line":"        # as such. Otherwise, for backwards compatibility, we\u0027ll keep creating"},{"line_number":1717,"context_line":"        # two Address Sets for each Neutron SG (one for IPv4 and one for"},{"line_number":1718,"context_line":"        # IPv6).git branch -D git checkout -b bak/rocky_ovntunnel"},{"line_number":1719,"context_line":"        with self._nb_idl.transaction(check_error\u003dTrue) as txn:"},{"line_number":1720,"context_line":"            ext_ids \u003d {ovn_const.OVN_SG_EXT_ID_KEY: security_group[\u0027id\u0027]}"},{"line_number":1721,"context_line":"            if self._nb_idl.is_port_groups_supported():"}],"source_content_type":"text/x-python","patch_set":10,"id":"dfbec78f_1043ea14","line":1718,"range":{"start_line":1718,"start_character":16,"end_line":1718,"end_character":65},"in_reply_to":"dfbec78f_ec3d318f","updated":"2019-05-15 15:53:59.000000000","message":"Done","commit_id":"ad2277741d91620f12ffdaae1f6b3fcdac0b1535"},{"author":{"_account_id":8655,"name":"Jakub Libosvar","email":"libosvar@redhat.com","username":"jlibosva"},"change_message_id":"9633608c935917746db815e1eb2d6d83a1427ccf","unresolved":false,"context_lines":[{"line_number":1423,"context_line":"            txn.add(self._nb_idl.set_lswitch_ext_ids(lswitch_name, ext_ids))"},{"line_number":1424,"context_line":"            # Check if previous mtu is different than current one,"},{"line_number":1425,"context_line":"            # checking will help reduce number of operations"},{"line_number":1426,"context_line":"            if (not lswitch or"},{"line_number":1427,"context_line":"                    lswitch.external_ids.get("},{"line_number":1428,"context_line":"                        ovn_const.OVN_NETWORK_MTU_EXT_ID_KEY) !\u003d"},{"line_number":1429,"context_line":"                    str(network[\u0027mtu\u0027])):"}],"source_content_type":"text/x-python","patch_set":11,"id":"bfb3d3c7_cc0bbf21","line":1426,"range":{"start_line":1426,"start_character":16,"end_line":1426,"end_character":27},"updated":"2019-05-24 09:35:33.000000000","message":"I was just wondering, what is the case when we call update on network but we don\u0027t have a logical switch in OVN NB database?","commit_id":"1daffa9634a813ccbcf00a4c4c9dbd2c504d326d"}],"networking_ovn/ml2/mech_driver.py":[{"author":{"_account_id":6773,"name":"Lucas Alvares Gomes","email":"lucasagomes@gmail.com","username":"lucasagomes"},"change_message_id":"ea4fecef3328cad0b5f819b75d6246aa78d7af8c","unresolved":false,"context_lines":[{"line_number":348,"context_line":"        # https://bugs.launchpad.net/neutron/+bug/1739798 is fixed."},{"line_number":349,"context_line":"        if context._plugin_context.session.is_active:"},{"line_number":350,"context_line":"            return"},{"line_number":351,"context_line":"        subnets \u003d []"},{"line_number":352,"context_line":"        if context._original_network.get(\u0027mtu\u0027) !\u003d context.current.get(\u0027mtu\u0027):"},{"line_number":353,"context_line":"            subnets \u003d context._plugin.get_subnets_by_network("},{"line_number":354,"context_line":"                context._plugin_context,"},{"line_number":355,"context_line":"                context._network[\u0027id\u0027])"},{"line_number":356,"context_line":"        self._ovn_client.update_network(context.current, subnets)"},{"line_number":357,"context_line":""},{"line_number":358,"context_line":"    def delete_network_postcommit(self, context):"}],"source_content_type":"text/x-python","patch_set":4,"id":"dfbec78f_902ade8d","line":355,"range":{"start_line":351,"start_character":0,"end_line":355,"end_character":39},"updated":"2019-05-09 08:58:18.000000000","message":"Can we move this to ovn_client.update_network() ?\n\nWe are trying to keep all the logic in the same place, also the maintenance task relies on the the methods from OVNClient to fix the inconsistencies.\n\nSee: https://github.com/openstack/networking-ovn/blob/b2c6cda688471dd9fb5085df6ff07c3c5290660b/networking_ovn/common/maintenance.py#L104-L106","commit_id":"6d82b34a3d93c9b89d4612be0b45e61666a340b3"},{"author":{"_account_id":11082,"name":"Kamil Sambor","email":"ksambor@redhat.com","username":"ksambor"},"change_message_id":"0b2f2f3dbc98e2fbe74be38f5f941a1427f8722e","unresolved":false,"context_lines":[{"line_number":348,"context_line":"        # https://bugs.launchpad.net/neutron/+bug/1739798 is fixed."},{"line_number":349,"context_line":"        if context._plugin_context.session.is_active:"},{"line_number":350,"context_line":"            return"},{"line_number":351,"context_line":"        subnets \u003d []"},{"line_number":352,"context_line":"        if context._original_network.get(\u0027mtu\u0027) !\u003d context.current.get(\u0027mtu\u0027):"},{"line_number":353,"context_line":"            subnets \u003d context._plugin.get_subnets_by_network("},{"line_number":354,"context_line":"                context._plugin_context,"},{"line_number":355,"context_line":"                context._network[\u0027id\u0027])"},{"line_number":356,"context_line":"        self._ovn_client.update_network(context.current, subnets)"},{"line_number":357,"context_line":""},{"line_number":358,"context_line":"    def delete_network_postcommit(self, context):"}],"source_content_type":"text/x-python","patch_set":4,"id":"dfbec78f_dac7fa11","line":355,"range":{"start_line":351,"start_character":0,"end_line":355,"end_character":39},"in_reply_to":"dfbec78f_902ade8d","updated":"2019-05-10 09:29:38.000000000","message":"Done","commit_id":"6d82b34a3d93c9b89d4612be0b45e61666a340b3"}],"networking_ovn/tests/functional/test_mech_driver.py":[{"author":{"_account_id":6773,"name":"Lucas Alvares Gomes","email":"lucasagomes@gmail.com","username":"lucasagomes"},"change_message_id":"ece6f71b542cd396b77c00e4dbec0544071ce093","unresolved":false,"context_lines":[{"line_number":164,"context_line":"            dhcp_options.get(\u0027subnet\u0027).get(\u0027options\u0027).get(\u0027mtu\u0027),"},{"line_number":165,"context_line":"            mtu_value)"},{"line_number":166,"context_line":"        data \u003d {\u0027network\u0027: {\u0027mtu\u0027: mtu_value}}"},{"line_number":167,"context_line":"        self.new_update_request(\u0027networks\u0027, data,"},{"line_number":168,"context_line":"                                self.n1[\u0027network\u0027][\u0027id\u0027], self.fmt)"},{"line_number":169,"context_line":"        dhcp_options \u003d \\"},{"line_number":170,"context_line":"            self.mech_driver._ovn_client._nb_idl.get_subnet_dhcp_options("},{"line_number":171,"context_line":"                self.sub[\u0027subnet\u0027][\u0027id\u0027])"}],"source_content_type":"text/x-python","patch_set":4,"id":"dfbec78f_93bbc80c","line":168,"range":{"start_line":167,"start_character":0,"end_line":168,"end_character":67},"updated":"2019-05-09 09:14:57.000000000","message":"When we invoke this new_update_request() method we need to also called get_response() or the update won\u0027t go thru.\n\nFor example:\n\nreq \u003d self.new_update_request(\u0027networks\u0027, data, ...)\nres \u003d req.get_response(self.api)          \nself.assertEqual(200, res.status_int)","commit_id":"6d82b34a3d93c9b89d4612be0b45e61666a340b3"},{"author":{"_account_id":11082,"name":"Kamil Sambor","email":"ksambor@redhat.com","username":"ksambor"},"change_message_id":"0b2f2f3dbc98e2fbe74be38f5f941a1427f8722e","unresolved":false,"context_lines":[{"line_number":164,"context_line":"            dhcp_options.get(\u0027subnet\u0027).get(\u0027options\u0027).get(\u0027mtu\u0027),"},{"line_number":165,"context_line":"            mtu_value)"},{"line_number":166,"context_line":"        data \u003d {\u0027network\u0027: {\u0027mtu\u0027: mtu_value}}"},{"line_number":167,"context_line":"        self.new_update_request(\u0027networks\u0027, data,"},{"line_number":168,"context_line":"                                self.n1[\u0027network\u0027][\u0027id\u0027], self.fmt)"},{"line_number":169,"context_line":"        dhcp_options \u003d \\"},{"line_number":170,"context_line":"            self.mech_driver._ovn_client._nb_idl.get_subnet_dhcp_options("},{"line_number":171,"context_line":"                self.sub[\u0027subnet\u0027][\u0027id\u0027])"}],"source_content_type":"text/x-python","patch_set":4,"id":"dfbec78f_facafe17","line":168,"range":{"start_line":167,"start_character":0,"end_line":168,"end_character":67},"in_reply_to":"dfbec78f_93bbc80c","updated":"2019-05-10 09:29:38.000000000","message":"Done","commit_id":"6d82b34a3d93c9b89d4612be0b45e61666a340b3"},{"author":{"_account_id":6773,"name":"Lucas Alvares Gomes","email":"lucasagomes@gmail.com","username":"lucasagomes"},"change_message_id":"ece6f71b542cd396b77c00e4dbec0544071ce093","unresolved":false,"context_lines":[{"line_number":170,"context_line":"            self.mech_driver._ovn_client._nb_idl.get_subnet_dhcp_options("},{"line_number":171,"context_line":"                self.sub[\u0027subnet\u0027][\u0027id\u0027])"},{"line_number":172,"context_line":"        self.nb_api.get_subnet_dhcp_options(self.sub[\u0027subnet\u0027][\u0027id\u0027])"},{"line_number":173,"context_line":"        self.assertEqual(dhcp_options.get(\u0027subnet\u0027).get(\u0027options\u0027).get(\u0027mtu\u0027),"},{"line_number":174,"context_line":"                         mtu_value)"}],"source_content_type":"text/x-python","patch_set":4,"id":"dfbec78f_73c0947c","line":173,"range":{"start_line":173,"start_character":25,"end_line":173,"end_character":77},"updated":"2019-05-09 09:14:57.000000000","message":"This will be a string, needs to be converted to integer before comparing","commit_id":"6d82b34a3d93c9b89d4612be0b45e61666a340b3"},{"author":{"_account_id":11082,"name":"Kamil Sambor","email":"ksambor@redhat.com","username":"ksambor"},"change_message_id":"0b2f2f3dbc98e2fbe74be38f5f941a1427f8722e","unresolved":false,"context_lines":[{"line_number":170,"context_line":"            self.mech_driver._ovn_client._nb_idl.get_subnet_dhcp_options("},{"line_number":171,"context_line":"                self.sub[\u0027subnet\u0027][\u0027id\u0027])"},{"line_number":172,"context_line":"        self.nb_api.get_subnet_dhcp_options(self.sub[\u0027subnet\u0027][\u0027id\u0027])"},{"line_number":173,"context_line":"        self.assertEqual(dhcp_options.get(\u0027subnet\u0027).get(\u0027options\u0027).get(\u0027mtu\u0027),"},{"line_number":174,"context_line":"                         mtu_value)"}],"source_content_type":"text/x-python","patch_set":4,"id":"dfbec78f_9ad182d0","line":173,"range":{"start_line":173,"start_character":25,"end_line":173,"end_character":77},"in_reply_to":"dfbec78f_73c0947c","updated":"2019-05-10 09:29:38.000000000","message":"Done","commit_id":"6d82b34a3d93c9b89d4612be0b45e61666a340b3"},{"author":{"_account_id":6773,"name":"Lucas Alvares Gomes","email":"lucasagomes@gmail.com","username":"lucasagomes"},"change_message_id":"0677a0c913b3a7228ca388f7e363872acd516945","unresolved":false,"context_lines":[{"line_number":136,"context_line":"    def setUp(self):"},{"line_number":137,"context_line":"        super(TestNetworkMTUUpdate, self).setUp()"},{"line_number":138,"context_line":"        self._ovn_client \u003d self.mech_driver._ovn_client"},{"line_number":139,"context_line":"        self.ovs_host \u003d \u0027ovs-host\u0027"},{"line_number":140,"context_line":"        self.dpdk_host \u003d \u0027dpdk-host\u0027"},{"line_number":141,"context_line":"        self.invalid_dpdk_host \u003d \u0027invalid-host\u0027"},{"line_number":142,"context_line":"        self.vhu_mode \u003d \u0027server\u0027"},{"line_number":143,"context_line":"        self.add_fake_chassis(self.ovs_host)"},{"line_number":144,"context_line":"        self.add_fake_chassis("},{"line_number":145,"context_line":"            self.dpdk_host,"},{"line_number":146,"context_line":"            external_ids\u003d{\u0027datapath-type\u0027: \u0027netdev\u0027,"},{"line_number":147,"context_line":"                          \u0027iface-types\u0027: \u0027dummy,dummy-internal,dpdkvhostuser\u0027})"},{"line_number":148,"context_line":""},{"line_number":149,"context_line":"        self.add_fake_chassis("},{"line_number":150,"context_line":"            self.invalid_dpdk_host,"},{"line_number":151,"context_line":"            external_ids\u003d{\u0027datapath-type\u0027: \u0027netdev\u0027,"},{"line_number":152,"context_line":"                          \u0027iface-types\u0027: \u0027dummy,dummy-internal,geneve,vxlan\u0027})"},{"line_number":153,"context_line":"        self.n1 \u003d self._make_network(self.fmt, \u0027n1\u0027, True)"},{"line_number":154,"context_line":"        res \u003d self._create_subnet(self.fmt, self.n1[\u0027network\u0027][\u0027id\u0027],"},{"line_number":155,"context_line":"                                  \u002710.0.0.0/24\u0027)"}],"source_content_type":"text/x-python","patch_set":6,"id":"dfbec78f_bd87a00f","line":152,"range":{"start_line":139,"start_character":0,"end_line":152,"end_character":78},"updated":"2019-05-10 10:11:51.000000000","message":"This whole block could be deleted. We are not testing DPDK nor we need to add extra chassis for this test","commit_id":"66a637fc2740f7ad2e61276620f089fcd9d8584e"},{"author":{"_account_id":6773,"name":"Lucas Alvares Gomes","email":"lucasagomes@gmail.com","username":"lucasagomes"},"change_message_id":"0677a0c913b3a7228ca388f7e363872acd516945","unresolved":false,"context_lines":[{"line_number":157,"context_line":""},{"line_number":158,"context_line":"    def test_update_network_mtu(self):"},{"line_number":159,"context_line":"        mtu_value \u003d self.n1[\u0027network\u0027][\u0027mtu\u0027] - 100"},{"line_number":160,"context_line":"        dhcp_options \u003d \\"},{"line_number":161,"context_line":"            self.mech_driver._ovn_client._nb_idl.get_subnet_dhcp_options("},{"line_number":162,"context_line":"                self.sub[\u0027subnet\u0027][\u0027id\u0027])"},{"line_number":163,"context_line":"        self.assertNotEqual("}],"source_content_type":"text/x-python","patch_set":6,"id":"dfbec78f_5da3049f","line":160,"range":{"start_line":160,"start_character":23,"end_line":160,"end_character":24},"updated":"2019-05-10 10:11:51.000000000","message":"nit: Let\u0027s use parentheses for joining lines","commit_id":"66a637fc2740f7ad2e61276620f089fcd9d8584e"},{"author":{"_account_id":6773,"name":"Lucas Alvares Gomes","email":"lucasagomes@gmail.com","username":"lucasagomes"},"change_message_id":"0677a0c913b3a7228ca388f7e363872acd516945","unresolved":false,"context_lines":[{"line_number":168,"context_line":"            \u0027networks\u0027, data, self.n1[\u0027network\u0027][\u0027id\u0027], self.fmt)"},{"line_number":169,"context_line":"        res \u003d req.get_response(self.api)"},{"line_number":170,"context_line":"        self.assertEqual(200, res.status_int)"},{"line_number":171,"context_line":"        dhcp_options \u003d \\"},{"line_number":172,"context_line":"            self.mech_driver._ovn_client._nb_idl.get_subnet_dhcp_options("},{"line_number":173,"context_line":"                self.sub[\u0027subnet\u0027][\u0027id\u0027])"},{"line_number":174,"context_line":"        self.nb_api.get_subnet_dhcp_options(self.sub[\u0027subnet\u0027][\u0027id\u0027])"}],"source_content_type":"text/x-python","patch_set":6,"id":"dfbec78f_ddb854c9","line":171,"range":{"start_line":171,"start_character":23,"end_line":171,"end_character":24},"updated":"2019-05-10 10:11:51.000000000","message":"nit: Let\u0027s use parentheses for joining lines","commit_id":"66a637fc2740f7ad2e61276620f089fcd9d8584e"},{"author":{"_account_id":8655,"name":"Jakub Libosvar","email":"libosvar@redhat.com","username":"jlibosva"},"change_message_id":"707fd2aa22dca65043dd69fd567998185f9dcc07","unresolved":false,"context_lines":[{"line_number":149,"context_line":"                self.sub[\u0027subnet\u0027][\u0027id\u0027])"},{"line_number":150,"context_line":"        )"},{"line_number":151,"context_line":"        self.assertNotEqual("},{"line_number":152,"context_line":"            dhcp_options.get(\u0027subnet\u0027).get(\u0027options\u0027).get(\u0027mtu\u0027),"},{"line_number":153,"context_line":"            mtu_value)"},{"line_number":154,"context_line":"        data \u003d {\u0027network\u0027: {\u0027mtu\u0027: mtu_value}}"},{"line_number":155,"context_line":"        req \u003d self.new_update_request("}],"source_content_type":"text/x-python","patch_set":10,"id":"dfbec78f_b6b1b649","line":152,"range":{"start_line":152,"start_character":25,"end_line":152,"end_character":64},"updated":"2019-05-15 12:57:10.000000000","message":"can you just do [\u0027subnet\u0027][\u0027options\u0027][\u0027mtu\u0027] ? In case e.g. \u0027subnet\u0027 is missing, you\u0027ll obtain None so later you raise AttributeError anyways","commit_id":"ad2277741d91620f12ffdaae1f6b3fcdac0b1535"},{"author":{"_account_id":11082,"name":"Kamil Sambor","email":"ksambor@redhat.com","username":"ksambor"},"change_message_id":"6e1a7b9c0846282e47b09ee9bd3641ed97ea8567","unresolved":false,"context_lines":[{"line_number":149,"context_line":"                self.sub[\u0027subnet\u0027][\u0027id\u0027])"},{"line_number":150,"context_line":"        )"},{"line_number":151,"context_line":"        self.assertNotEqual("},{"line_number":152,"context_line":"            dhcp_options.get(\u0027subnet\u0027).get(\u0027options\u0027).get(\u0027mtu\u0027),"},{"line_number":153,"context_line":"            mtu_value)"},{"line_number":154,"context_line":"        data \u003d {\u0027network\u0027: {\u0027mtu\u0027: mtu_value}}"},{"line_number":155,"context_line":"        req \u003d self.new_update_request("}],"source_content_type":"text/x-python","patch_set":10,"id":"dfbec78f_968cb2d7","line":152,"range":{"start_line":152,"start_character":25,"end_line":152,"end_character":64},"in_reply_to":"dfbec78f_b6b1b649","updated":"2019-05-15 15:53:59.000000000","message":"Done","commit_id":"ad2277741d91620f12ffdaae1f6b3fcdac0b1535"},{"author":{"_account_id":8655,"name":"Jakub Libosvar","email":"libosvar@redhat.com","username":"jlibosva"},"change_message_id":"707fd2aa22dca65043dd69fd567998185f9dcc07","unresolved":false,"context_lines":[{"line_number":155,"context_line":"        req \u003d self.new_update_request("},{"line_number":156,"context_line":"            \u0027networks\u0027, data, self.n1[\u0027network\u0027][\u0027id\u0027], self.fmt)"},{"line_number":157,"context_line":"        res \u003d req.get_response(self.api)"},{"line_number":158,"context_line":"        self.assertEqual(200, res.status_int)"},{"line_number":159,"context_line":"        dhcp_options \u003d ("},{"line_number":160,"context_line":"            self.mech_driver._ovn_client._nb_idl.get_subnet_dhcp_options("},{"line_number":161,"context_line":"                self.sub[\u0027subnet\u0027][\u0027id\u0027])"}],"source_content_type":"text/x-python","patch_set":10,"id":"dfbec78f_b69a16b6","line":158,"range":{"start_line":158,"start_character":25,"end_line":158,"end_character":28},"updated":"2019-05-15 12:57:10.000000000","message":"nit: httplib.OK\n\nmaybe you can even remove the assert because if the request didn\u0027t get through, you\u0027re gonna fail on L164","commit_id":"ad2277741d91620f12ffdaae1f6b3fcdac0b1535"},{"author":{"_account_id":11082,"name":"Kamil Sambor","email":"ksambor@redhat.com","username":"ksambor"},"change_message_id":"6e1a7b9c0846282e47b09ee9bd3641ed97ea8567","unresolved":false,"context_lines":[{"line_number":155,"context_line":"        req \u003d self.new_update_request("},{"line_number":156,"context_line":"            \u0027networks\u0027, data, self.n1[\u0027network\u0027][\u0027id\u0027], self.fmt)"},{"line_number":157,"context_line":"        res \u003d req.get_response(self.api)"},{"line_number":158,"context_line":"        self.assertEqual(200, res.status_int)"},{"line_number":159,"context_line":"        dhcp_options \u003d ("},{"line_number":160,"context_line":"            self.mech_driver._ovn_client._nb_idl.get_subnet_dhcp_options("},{"line_number":161,"context_line":"                self.sub[\u0027subnet\u0027][\u0027id\u0027])"}],"source_content_type":"text/x-python","patch_set":10,"id":"dfbec78f_36c146e6","line":158,"range":{"start_line":158,"start_character":25,"end_line":158,"end_character":28},"in_reply_to":"dfbec78f_b69a16b6","updated":"2019-05-15 15:53:59.000000000","message":"Done","commit_id":"ad2277741d91620f12ffdaae1f6b3fcdac0b1535"},{"author":{"_account_id":6773,"name":"Lucas Alvares Gomes","email":"lucasagomes@gmail.com","username":"lucasagomes"},"change_message_id":"de7521c30979e11cdef947e3088aa033bacdd1a6","unresolved":false,"context_lines":[{"line_number":163,"context_line":"        self.nb_api.get_subnet_dhcp_options(self.sub[\u0027subnet\u0027][\u0027id\u0027])"},{"line_number":164,"context_line":"        self.assertEqual("},{"line_number":165,"context_line":"            int(dhcp_options.get(\u0027subnet\u0027).get(\u0027options\u0027).get(\u0027mtu\u0027)),"},{"line_number":166,"context_line":"            mtu_value)"}],"source_content_type":"text/x-python","patch_set":10,"id":"dfbec78f_958cacd7","line":166,"updated":"2019-05-15 10:07:27.000000000","message":"Suggestion: You may consider also adding a negative test where the MTU doesn\u0027t change and we verify that the subnet hasn\u0027t been updated. \n\nYou can do it by verifying the \"updated_at\" field from the subnet object before and after the update.","commit_id":"ad2277741d91620f12ffdaae1f6b3fcdac0b1535"},{"author":{"_account_id":11082,"name":"Kamil Sambor","email":"ksambor@redhat.com","username":"ksambor"},"change_message_id":"6e1a7b9c0846282e47b09ee9bd3641ed97ea8567","unresolved":false,"context_lines":[{"line_number":163,"context_line":"        self.nb_api.get_subnet_dhcp_options(self.sub[\u0027subnet\u0027][\u0027id\u0027])"},{"line_number":164,"context_line":"        self.assertEqual("},{"line_number":165,"context_line":"            int(dhcp_options.get(\u0027subnet\u0027).get(\u0027options\u0027).get(\u0027mtu\u0027)),"},{"line_number":166,"context_line":"            mtu_value)"}],"source_content_type":"text/x-python","patch_set":10,"id":"dfbec78f_40650b45","line":166,"in_reply_to":"dfbec78f_958cacd7","updated":"2019-05-15 15:53:59.000000000","message":"Done","commit_id":"ad2277741d91620f12ffdaae1f6b3fcdac0b1535"},{"author":{"_account_id":6773,"name":"Lucas Alvares Gomes","email":"lucasagomes@gmail.com","username":"lucasagomes"},"change_message_id":"88bbd9bf548436b5720303f1dea3cbf5b84cb574","unresolved":false,"context_lines":[{"line_number":170,"context_line":"        data \u003d {\u0027network\u0027: {\u0027mtu\u0027: mtu_value}}"},{"line_number":171,"context_line":"        req \u003d self.new_update_request("},{"line_number":172,"context_line":"            \u0027networks\u0027, data, self.n1[\u0027network\u0027][\u0027id\u0027], self.fmt)"},{"line_number":173,"context_line":"        req.get_response(self.api)"},{"line_number":174,"context_line":"        second_revision \u003d db_rev.get_revision_row(self.sub[\u0027subnet\u0027][\u0027id\u0027])"},{"line_number":175,"context_line":"        self.assertEqual("},{"line_number":176,"context_line":"            base_revision.updated_at,"}],"source_content_type":"text/x-python","patch_set":11,"id":"dfbec78f_00d073c8","line":173,"updated":"2019-05-15 15:59:53.000000000","message":"nit: check the API response. Different than the method above we are not checking if anything was actually updated in the network object (so it won\u0027t fail even if the update itself failed)","commit_id":"1daffa9634a813ccbcf00a4c4c9dbd2c504d326d"},{"author":{"_account_id":8655,"name":"Jakub Libosvar","email":"libosvar@redhat.com","username":"jlibosva"},"change_message_id":"9cb34fd27cd79c2dfc440630095cd27ca0936915","unresolved":false,"context_lines":[{"line_number":170,"context_line":"        data \u003d {\u0027network\u0027: {\u0027mtu\u0027: mtu_value}}"},{"line_number":171,"context_line":"        req \u003d self.new_update_request("},{"line_number":172,"context_line":"            \u0027networks\u0027, data, self.n1[\u0027network\u0027][\u0027id\u0027], self.fmt)"},{"line_number":173,"context_line":"        req.get_response(self.api)"},{"line_number":174,"context_line":"        second_revision \u003d db_rev.get_revision_row(self.sub[\u0027subnet\u0027][\u0027id\u0027])"},{"line_number":175,"context_line":"        self.assertEqual("},{"line_number":176,"context_line":"            base_revision.updated_at,"}],"source_content_type":"text/x-python","patch_set":11,"id":"dfbec78f_1e3a14e6","line":173,"in_reply_to":"dfbec78f_00d073c8","updated":"2019-05-15 18:00:56.000000000","message":"If update fails then the revision is not bumped, no?","commit_id":"1daffa9634a813ccbcf00a4c4c9dbd2c504d326d"},{"author":{"_account_id":6773,"name":"Lucas Alvares Gomes","email":"lucasagomes@gmail.com","username":"lucasagomes"},"change_message_id":"fb519260d6aaef843d49bb58f29747248a73c053","unresolved":false,"context_lines":[{"line_number":170,"context_line":"        data \u003d {\u0027network\u0027: {\u0027mtu\u0027: mtu_value}}"},{"line_number":171,"context_line":"        req \u003d self.new_update_request("},{"line_number":172,"context_line":"            \u0027networks\u0027, data, self.n1[\u0027network\u0027][\u0027id\u0027], self.fmt)"},{"line_number":173,"context_line":"        req.get_response(self.api)"},{"line_number":174,"context_line":"        second_revision \u003d db_rev.get_revision_row(self.sub[\u0027subnet\u0027][\u0027id\u0027])"},{"line_number":175,"context_line":"        self.assertEqual("},{"line_number":176,"context_line":"            base_revision.updated_at,"}],"source_content_type":"text/x-python","patch_set":11,"id":"dfbec78f_d4d21d28","line":173,"in_reply_to":"dfbec78f_1e3a14e6","updated":"2019-05-15 19:52:28.000000000","message":"The update_at doesn\u0027t bump. This test is asserting that the subnets[0] aren\u0027t updated if the MTU on the Network didn\u0027t change in the update.\n\n[0] In OVN, the MTU is stored in the DHCP_Options table from the OVSDB which, in Neutron terminology, is a subnet.","commit_id":"1daffa9634a813ccbcf00a4c4c9dbd2c504d326d"},{"author":{"_account_id":24791,"name":"Maciej Jozefczyk","email":"jeicam.pl@gmail.com","username":"maciej.jozefczyk"},"change_message_id":"a97940db9f0c340705d726b40a949d48e0e5451c","unresolved":false,"context_lines":[{"line_number":170,"context_line":"        data \u003d {\u0027network\u0027: {\u0027mtu\u0027: mtu_value}}"},{"line_number":171,"context_line":"        req \u003d self.new_update_request("},{"line_number":172,"context_line":"            \u0027networks\u0027, data, self.n1[\u0027network\u0027][\u0027id\u0027], self.fmt)"},{"line_number":173,"context_line":"        req.get_response(self.api)"},{"line_number":174,"context_line":"        second_revision \u003d db_rev.get_revision_row(self.sub[\u0027subnet\u0027][\u0027id\u0027])"},{"line_number":175,"context_line":"        self.assertEqual("},{"line_number":176,"context_line":"            base_revision.updated_at,"}],"source_content_type":"text/x-python","patch_set":11,"id":"bfb3d3c7_f2ce1582","line":173,"in_reply_to":"dfbec78f_7490114b","updated":"2019-05-17 07:09:49.000000000","message":"+1 about checking API response but anyway looks good","commit_id":"1daffa9634a813ccbcf00a4c4c9dbd2c504d326d"},{"author":{"_account_id":8655,"name":"Jakub Libosvar","email":"libosvar@redhat.com","username":"jlibosva"},"change_message_id":"694b78c52c6b8b36c34cec0a2e7566e406b677a1","unresolved":false,"context_lines":[{"line_number":170,"context_line":"        data \u003d {\u0027network\u0027: {\u0027mtu\u0027: mtu_value}}"},{"line_number":171,"context_line":"        req \u003d self.new_update_request("},{"line_number":172,"context_line":"            \u0027networks\u0027, data, self.n1[\u0027network\u0027][\u0027id\u0027], self.fmt)"},{"line_number":173,"context_line":"        req.get_response(self.api)"},{"line_number":174,"context_line":"        second_revision \u003d db_rev.get_revision_row(self.sub[\u0027subnet\u0027][\u0027id\u0027])"},{"line_number":175,"context_line":"        self.assertEqual("},{"line_number":176,"context_line":"            base_revision.updated_at,"}],"source_content_type":"text/x-python","patch_set":11,"id":"dfbec78f_7490114b","line":173,"in_reply_to":"dfbec78f_d4d21d28","updated":"2019-05-15 19:57:09.000000000","message":"Aha, thanks for the explanation. I read the L175 that the revisions are different :)","commit_id":"1daffa9634a813ccbcf00a4c4c9dbd2c504d326d"}],"networking_ovn/tests/functional/test_metadata_agent.py":[{"author":{"_account_id":17776,"name":"Reedip","email":"reedip.banerjee@gmail.com","username":"Reedip"},"change_message_id":"6d2390c7c2b447cd41f65e9e0aba4bf0912e5833","unresolved":false,"context_lines":[{"line_number":176,"context_line":"                        (self.agent.ovn_bridge, BR_NEW))"},{"line_number":177,"context_line":"        n_utils.wait_until_true("},{"line_number":178,"context_line":"            lambda: BR_NEW \u003d\u003d self.agent.ovn_bridge,"},{"line_number":179,"context_line":"            timeout\u003d15,"},{"line_number":180,"context_line":"            exception\u003dexc)"}],"source_content_type":"text/x-python","patch_set":10,"id":"dfbec78f_449be816","line":179,"range":{"start_line":179,"start_character":20,"end_line":179,"end_character":22},"updated":"2019-05-15 07:14:53.000000000","message":"is this change related?","commit_id":"ad2277741d91620f12ffdaae1f6b3fcdac0b1535"},{"author":{"_account_id":6773,"name":"Lucas Alvares Gomes","email":"lucasagomes@gmail.com","username":"lucasagomes"},"change_message_id":"de7521c30979e11cdef947e3088aa033bacdd1a6","unresolved":false,"context_lines":[{"line_number":176,"context_line":"                        (self.agent.ovn_bridge, BR_NEW))"},{"line_number":177,"context_line":"        n_utils.wait_until_true("},{"line_number":178,"context_line":"            lambda: BR_NEW \u003d\u003d self.agent.ovn_bridge,"},{"line_number":179,"context_line":"            timeout\u003d15,"},{"line_number":180,"context_line":"            exception\u003dexc)"}],"source_content_type":"text/x-python","patch_set":10,"id":"dfbec78f_d5d8e4ef","line":179,"range":{"start_line":179,"start_character":20,"end_line":179,"end_character":22},"in_reply_to":"dfbec78f_449be816","updated":"2019-05-15 10:07:27.000000000","message":"Doesn\u0027t look like","commit_id":"ad2277741d91620f12ffdaae1f6b3fcdac0b1535"},{"author":{"_account_id":11082,"name":"Kamil Sambor","email":"ksambor@redhat.com","username":"ksambor"},"change_message_id":"6e1a7b9c0846282e47b09ee9bd3641ed97ea8567","unresolved":false,"context_lines":[{"line_number":176,"context_line":"                        (self.agent.ovn_bridge, BR_NEW))"},{"line_number":177,"context_line":"        n_utils.wait_until_true("},{"line_number":178,"context_line":"            lambda: BR_NEW \u003d\u003d self.agent.ovn_bridge,"},{"line_number":179,"context_line":"            timeout\u003d15,"},{"line_number":180,"context_line":"            exception\u003dexc)"}],"source_content_type":"text/x-python","patch_set":10,"id":"dfbec78f_b04d3e3f","line":179,"range":{"start_line":179,"start_character":20,"end_line":179,"end_character":22},"in_reply_to":"dfbec78f_d5d8e4ef","updated":"2019-05-15 15:53:59.000000000","message":"Done","commit_id":"ad2277741d91620f12ffdaae1f6b3fcdac0b1535"}]}
