)]}'
{"neutron_tempest_plugin/scenario/base.py":[{"author":{"_account_id":8655,"name":"Jakub Libosvar","email":"libosvar@redhat.com","username":"jlibosva"},"change_message_id":"5073d013540801de12f234f8bba564d9343246b2","unresolved":false,"context_lines":[{"line_number":379,"context_line":"        self.wait_for_server_status("},{"line_number":380,"context_line":"            server, constants.SERVER_STATUS_ACTIVE, client)"},{"line_number":381,"context_line":""},{"line_number":382,"context_line":"    def check_servers_hostnames(self, servers, use_pf_port\u003dTrue):"},{"line_number":383,"context_line":"        \"\"\"Compare hostnames of given servers with their names.\"\"\""},{"line_number":384,"context_line":"        try:"},{"line_number":385,"context_line":"            for server in servers:"}],"source_content_type":"text/x-python","patch_set":3,"id":"7faddb67_a25e5c73","line":382,"range":{"start_line":382,"start_character":58,"end_line":382,"end_character":63},"updated":"2019-07-16 12:01:47.000000000","message":"Maybe False would be a better default as port forwarding is too specific?","commit_id":"00a4e26452231f5c44d61b172365dee648ed9b96"},{"author":{"_account_id":11975,"name":"Slawek Kaplonski","email":"skaplons@redhat.com","username":"slaweq"},"change_message_id":"699f457d1d29b50ab404419db872bd8dda6f85c3","unresolved":false,"context_lines":[{"line_number":385,"context_line":"            for server in servers:"},{"line_number":386,"context_line":"                kwargs \u003d {}"},{"line_number":387,"context_line":"                if use_pf_port:"},{"line_number":388,"context_line":"                    kwargs[\u0027port\u0027] \u003d server[\u0027port_forwarding\u0027][\u0027external_port\u0027]"},{"line_number":389,"context_line":"                ssh_client \u003d ssh.Client("},{"line_number":390,"context_line":"                    self.fip[\u0027floating_ip_address\u0027],"},{"line_number":391,"context_line":"                    CONF.validation.image_ssh_user,"}],"source_content_type":"text/x-python","patch_set":3,"id":"7faddb67_ef475c4b","line":388,"updated":"2019-07-16 13:24:41.000000000","message":"You can simply do something like:\n\n    kwargs[\u0027port\u0027] \u003d server.get(\"port_forwarding\", {}).get(\"external_port\", 22)\n\nand than \"use_pf_port\" shouldn\u0027t be necessary IMO.","commit_id":"00a4e26452231f5c44d61b172365dee648ed9b96"},{"author":{"_account_id":8655,"name":"Jakub Libosvar","email":"libosvar@redhat.com","username":"jlibosva"},"change_message_id":"f9d0f56e9847cb65dec2f7d80bc88605a5983179","unresolved":false,"context_lines":[{"line_number":385,"context_line":"            for server in servers:"},{"line_number":386,"context_line":"                kwargs \u003d {}"},{"line_number":387,"context_line":"                if use_pf_port:"},{"line_number":388,"context_line":"                    kwargs[\u0027port\u0027] \u003d server[\u0027port_forwarding\u0027][\u0027external_port\u0027]"},{"line_number":389,"context_line":"                ssh_client \u003d ssh.Client("},{"line_number":390,"context_line":"                    self.fip[\u0027floating_ip_address\u0027],"},{"line_number":391,"context_line":"                    CONF.validation.image_ssh_user,"}],"source_content_type":"text/x-python","patch_set":3,"id":"7faddb67_d252473b","line":388,"in_reply_to":"7faddb67_ef475c4b","updated":"2019-07-16 14:52:47.000000000","message":"Done","commit_id":"00a4e26452231f5c44d61b172365dee648ed9b96"}],"neutron_tempest_plugin/scenario/test_floatingip.py":[{"author":{"_account_id":11975,"name":"Slawek Kaplonski","email":"skaplons@redhat.com","username":"slaweq"},"change_message_id":"b20b1b9675d229de0a72e89777147c9e34875291","unresolved":false,"context_lines":[{"line_number":397,"context_line":"        cls.secgroup \u003d cls.os_primary.network_client.create_security_group("},{"line_number":398,"context_line":"            name\u003ddata_utils.rand_name(\u0027secgroup\u0027))[\u0027security_group\u0027]"},{"line_number":399,"context_line":"        cls.create_loginable_secgroup_rule(secgroup_id\u003dcls.secgroup[\u0027id\u0027])"},{"line_number":400,"context_line":"        cls.create_pingable_secgroup_rule(secgroup_id\u003dcls.secgroup[\u0027id\u0027])"},{"line_number":401,"context_line":""},{"line_number":402,"context_line":"    @decorators.idempotent_id(\u00271bdd849b-03dd-4b8f-994f-457cf8a36f93\u0027)"},{"line_number":403,"context_line":"    def test_floating_ip_update(self):"}],"source_content_type":"text/x-python","patch_set":2,"id":"7faddb67_8ecef12a","line":400,"updated":"2019-07-16 08:01:13.000000000","message":"if You would inherit from FloatingIpTestCasesMixin than You wouldn\u0027t need all those resorce_setup to define here","commit_id":"1269be8560a93e1c362797ba0f4dae0a74a43576"},{"author":{"_account_id":8655,"name":"Jakub Libosvar","email":"libosvar@redhat.com","username":"jlibosva"},"change_message_id":"26709b780101965655e1cb6acb16de6308179199","unresolved":false,"context_lines":[{"line_number":397,"context_line":"        cls.secgroup \u003d cls.os_primary.network_client.create_security_group("},{"line_number":398,"context_line":"            name\u003ddata_utils.rand_name(\u0027secgroup\u0027))[\u0027security_group\u0027]"},{"line_number":399,"context_line":"        cls.create_loginable_secgroup_rule(secgroup_id\u003dcls.secgroup[\u0027id\u0027])"},{"line_number":400,"context_line":"        cls.create_pingable_secgroup_rule(secgroup_id\u003dcls.secgroup[\u0027id\u0027])"},{"line_number":401,"context_line":""},{"line_number":402,"context_line":"    @decorators.idempotent_id(\u00271bdd849b-03dd-4b8f-994f-457cf8a36f93\u0027)"},{"line_number":403,"context_line":"    def test_floating_ip_update(self):"}],"source_content_type":"text/x-python","patch_set":2,"id":"7faddb67_d1000c04","line":400,"in_reply_to":"7faddb67_8ecef12a","updated":"2019-07-16 08:20:10.000000000","message":"Done","commit_id":"1269be8560a93e1c362797ba0f4dae0a74a43576"},{"author":{"_account_id":23804,"name":"Daniel Alvarez","email":"dalvarez@redhat.com","username":"dalvarez"},"change_message_id":"2a84dcda3c6a1546bc9034d5b7d3051921981959","unresolved":false,"context_lines":[{"line_number":404,"context_line":"        \"\"\"Test updating FIP with another port."},{"line_number":405,"context_line":""},{"line_number":406,"context_line":"        The test creates two servers and attaches floating ip to first server."},{"line_number":407,"context_line":"        Then it checks server is accasible using the FIP. FIP is then"},{"line_number":408,"context_line":"        associated with the second server and connectivity is checked again."},{"line_number":409,"context_line":"        \"\"\""},{"line_number":410,"context_line":"        ports \u003d [self.create_port("}],"source_content_type":"text/x-python","patch_set":2,"id":"7faddb67_4e055945","line":407,"range":{"start_line":407,"start_character":33,"end_line":407,"end_character":42},"updated":"2019-07-16 08:01:30.000000000","message":"nit: accessible","commit_id":"1269be8560a93e1c362797ba0f4dae0a74a43576"},{"author":{"_account_id":8655,"name":"Jakub Libosvar","email":"libosvar@redhat.com","username":"jlibosva"},"change_message_id":"26709b780101965655e1cb6acb16de6308179199","unresolved":false,"context_lines":[{"line_number":404,"context_line":"        \"\"\"Test updating FIP with another port."},{"line_number":405,"context_line":""},{"line_number":406,"context_line":"        The test creates two servers and attaches floating ip to first server."},{"line_number":407,"context_line":"        Then it checks server is accasible using the FIP. FIP is then"},{"line_number":408,"context_line":"        associated with the second server and connectivity is checked again."},{"line_number":409,"context_line":"        \"\"\""},{"line_number":410,"context_line":"        ports \u003d [self.create_port("}],"source_content_type":"text/x-python","patch_set":2,"id":"7faddb67_f1050812","line":407,"range":{"start_line":407,"start_character":33,"end_line":407,"end_character":42},"in_reply_to":"7faddb67_4e055945","updated":"2019-07-16 08:20:10.000000000","message":"Done","commit_id":"1269be8560a93e1c362797ba0f4dae0a74a43576"},{"author":{"_account_id":11975,"name":"Slawek Kaplonski","email":"skaplons@redhat.com","username":"slaweq"},"change_message_id":"b20b1b9675d229de0a72e89777147c9e34875291","unresolved":false,"context_lines":[{"line_number":418,"context_line":"            networks\u003d[{\u0027port\u0027: port[\u0027id\u0027]}])[\u0027server\u0027]"},{"line_number":419,"context_line":"            for port in ports]"},{"line_number":420,"context_line":"        for server in servers:"},{"line_number":421,"context_line":"            waiters.wait_for_server_status(self.os_primary.servers_client,"},{"line_number":422,"context_line":"                                           server[\u0027id\u0027],"},{"line_number":423,"context_line":"                                           constants.SERVER_STATUS_ACTIVE)"},{"line_number":424,"context_line":""}],"source_content_type":"text/x-python","patch_set":2,"id":"7faddb67_cef1496d","line":421,"updated":"2019-07-16 08:01:13.000000000","message":"there is also \"wait_for_server_active()\" method available in https://github.com/openstack/neutron-tempest-plugin/blob/f83bb96a0d5436c88c32b8a50fc9643847d11066/neutron_tempest_plugin/scenario/base.py#L372","commit_id":"1269be8560a93e1c362797ba0f4dae0a74a43576"},{"author":{"_account_id":8655,"name":"Jakub Libosvar","email":"libosvar@redhat.com","username":"jlibosva"},"change_message_id":"26709b780101965655e1cb6acb16de6308179199","unresolved":false,"context_lines":[{"line_number":418,"context_line":"            networks\u003d[{\u0027port\u0027: port[\u0027id\u0027]}])[\u0027server\u0027]"},{"line_number":419,"context_line":"            for port in ports]"},{"line_number":420,"context_line":"        for server in servers:"},{"line_number":421,"context_line":"            waiters.wait_for_server_status(self.os_primary.servers_client,"},{"line_number":422,"context_line":"                                           server[\u0027id\u0027],"},{"line_number":423,"context_line":"                                           constants.SERVER_STATUS_ACTIVE)"},{"line_number":424,"context_line":""}],"source_content_type":"text/x-python","patch_set":2,"id":"7faddb67_51141c44","line":421,"in_reply_to":"7faddb67_cef1496d","updated":"2019-07-16 08:20:10.000000000","message":"Done","commit_id":"1269be8560a93e1c362797ba0f4dae0a74a43576"},{"author":{"_account_id":11975,"name":"Slawek Kaplonski","email":"skaplons@redhat.com","username":"slaweq"},"change_message_id":"b20b1b9675d229de0a72e89777147c9e34875291","unresolved":false,"context_lines":[{"line_number":431,"context_line":"        # The FIP is now associated with the port of the second server."},{"line_number":432,"context_line":"        self.check_connectivity(fip[\u0027floating_ip_address\u0027],"},{"line_number":433,"context_line":"                                CONF.validation.image_ssh_user,"},{"line_number":434,"context_line":"                                self.keypair[\u0027private_key\u0027])"}],"source_content_type":"text/x-python","patch_set":2,"id":"7faddb67_ce9629f1","line":434,"updated":"2019-07-16 08:01:13.000000000","message":"You can also set vm name and assert hostname of VMS after connectivity to each of VMs to be sure that FIP is actually moved from one server to the another.\nI did something like that for port_forwarding test: https://github.com/openstack/neutron-tempest-plugin/blob/master/neutron_tempest_plugin/scenario/test_port_forwardings.py#L81","commit_id":"1269be8560a93e1c362797ba0f4dae0a74a43576"},{"author":{"_account_id":8655,"name":"Jakub Libosvar","email":"libosvar@redhat.com","username":"jlibosva"},"change_message_id":"26709b780101965655e1cb6acb16de6308179199","unresolved":false,"context_lines":[{"line_number":431,"context_line":"        # The FIP is now associated with the port of the second server."},{"line_number":432,"context_line":"        self.check_connectivity(fip[\u0027floating_ip_address\u0027],"},{"line_number":433,"context_line":"                                CONF.validation.image_ssh_user,"},{"line_number":434,"context_line":"                                self.keypair[\u0027private_key\u0027])"}],"source_content_type":"text/x-python","patch_set":2,"id":"7faddb67_51b09c43","line":434,"in_reply_to":"7faddb67_ce9629f1","updated":"2019-07-16 08:20:10.000000000","message":"Done","commit_id":"1269be8560a93e1c362797ba0f4dae0a74a43576"},{"author":{"_account_id":1131,"name":"Brian Haley","email":"haleyb.dev@gmail.com","username":"brian-haley"},"change_message_id":"5bebc6e0230493926723c87ad9db3feaf9360d54","unresolved":false,"context_lines":[{"line_number":419,"context_line":"                                CONF.validation.image_ssh_user,"},{"line_number":420,"context_line":"                                self.keypair[\u0027private_key\u0027])"},{"line_number":421,"context_line":"        self.client.update_floatingip(self.fip[\u0027id\u0027], port_id\u003dports[1][\u0027id\u0027])"},{"line_number":422,"context_line":""},{"line_number":423,"context_line":"        # The FIP is now associated with the port of the second server."},{"line_number":424,"context_line":"        self.check_servers_hostnames(servers[-1:])"}],"source_content_type":"text/x-python","patch_set":4,"id":"7faddb67_28e80ae0","line":422,"updated":"2019-07-16 15:58:49.000000000","message":"How do we know the FIP NAT entry has been updated at this time?  Seems like there will be a possible race if the agent isn\u0027t done.","commit_id":"a9c24c30a5d4810b4844960a9b42f6307b40f147"},{"author":{"_account_id":8655,"name":"Jakub Libosvar","email":"libosvar@redhat.com","username":"jlibosva"},"change_message_id":"32f8d018d379003afb5ed5cc24e71bca4290a29c","unresolved":false,"context_lines":[{"line_number":419,"context_line":"                                CONF.validation.image_ssh_user,"},{"line_number":420,"context_line":"                                self.keypair[\u0027private_key\u0027])"},{"line_number":421,"context_line":"        self.client.update_floatingip(self.fip[\u0027id\u0027], port_id\u003dports[1][\u0027id\u0027])"},{"line_number":422,"context_line":""},{"line_number":423,"context_line":"        # The FIP is now associated with the port of the second server."},{"line_number":424,"context_line":"        self.check_servers_hostnames(servers[-1:])"}],"source_content_type":"text/x-python","patch_set":4,"id":"7faddb67_f2441876","line":422,"in_reply_to":"7faddb67_28e80ae0","updated":"2019-07-17 07:15:56.000000000","message":"You think we should add some loop like wait_until_true with a very small timeout?\n\nThe reason why I wanted to add this test was to catch race condition in networking-ovn where it didn\u0027t configure fip properly but later was recovered by running maintenance task. Seems like we have the race condition the other way around now in the test (FIP is not configured yet) :)","commit_id":"a9c24c30a5d4810b4844960a9b42f6307b40f147"},{"author":{"_account_id":8655,"name":"Jakub Libosvar","email":"libosvar@redhat.com","username":"jlibosva"},"change_message_id":"1504d73a9124d9b507bb3745d36ef746747d97e1","unresolved":false,"context_lines":[{"line_number":419,"context_line":"                                CONF.validation.image_ssh_user,"},{"line_number":420,"context_line":"                                self.keypair[\u0027private_key\u0027])"},{"line_number":421,"context_line":"        self.client.update_floatingip(self.fip[\u0027id\u0027], port_id\u003dports[1][\u0027id\u0027])"},{"line_number":422,"context_line":""},{"line_number":423,"context_line":"        # The FIP is now associated with the port of the second server."},{"line_number":424,"context_line":"        self.check_servers_hostnames(servers[-1:])"}],"source_content_type":"text/x-python","patch_set":4,"id":"7faddb67_cd25bd0a","line":422,"in_reply_to":"7faddb67_add3a103","updated":"2019-07-17 08:12:07.000000000","message":"@Daniel: I think false positives are fine as long as the test fails time to time and tells us something is wrong here.\n\nEven with whitebox testing you\u0027d need to periodically check if the desired configuration is in place and that could happen by running maintenance task too so I would argue checking OVN specific DB is any different than checking that we can connect to the VM with updated FIP - which is mech driver agnostic.\n\n@Slawek: Yes, I agree, that was my thinking too.","commit_id":"a9c24c30a5d4810b4844960a9b42f6307b40f147"},{"author":{"_account_id":23804,"name":"Daniel Alvarez","email":"dalvarez@redhat.com","username":"dalvarez"},"change_message_id":"812f20005280ae4ee7a43d0bb42e9ea7c5356ac3","unresolved":false,"context_lines":[{"line_number":419,"context_line":"                                CONF.validation.image_ssh_user,"},{"line_number":420,"context_line":"                                self.keypair[\u0027private_key\u0027])"},{"line_number":421,"context_line":"        self.client.update_floatingip(self.fip[\u0027id\u0027], port_id\u003dports[1][\u0027id\u0027])"},{"line_number":422,"context_line":""},{"line_number":423,"context_line":"        # The FIP is now associated with the port of the second server."},{"line_number":424,"context_line":"        self.check_servers_hostnames(servers[-1:])"}],"source_content_type":"text/x-python","patch_set":4,"id":"7faddb67_f820799d","line":422,"in_reply_to":"7faddb67_cd25bd0a","updated":"2019-07-17 08:40:44.000000000","message":"About the false positives: yes if they\u0027re not too frequent. If we have a failure ratio of 10% that may become unnoticed due to rechecks :) Remember that when we run this test alone, we get 100% of false positives :)\n\nAbout the whitebox testing: no need for checking periodically. If you execute the API call and straight away you verify the NB contents, then it\u0027s all good from neutron-server perspective.\nYou can argue that the NB contents can be correct due to the maintenance task but even if it takes us 5s to verify, the chance for the maint task for having kicked in is less than 2% (5s/300s which is the current interval). IMO, this would be a good way to make sure that all is as it should be.\nI agree, of course, that tempest is not the place for this and this is why I said tobiko or something else.\n\nAnother possibility that I\u0027d like to explore is to run tempest in networking-ovn gate with the maintenance task disabled. We want the maintenance task to be present in production as a safeguard mechanism but perhaps in tempest, it will do nothing but hiding issues. This is not perhaps the right place to discuss it but I\u0027m curious to hear from you guys about this.","commit_id":"a9c24c30a5d4810b4844960a9b42f6307b40f147"},{"author":{"_account_id":11975,"name":"Slawek Kaplonski","email":"skaplons@redhat.com","username":"slaweq"},"change_message_id":"902e757431b230c21e609ec0b243f61e2dc21d1e","unresolved":false,"context_lines":[{"line_number":419,"context_line":"                                CONF.validation.image_ssh_user,"},{"line_number":420,"context_line":"                                self.keypair[\u0027private_key\u0027])"},{"line_number":421,"context_line":"        self.client.update_floatingip(self.fip[\u0027id\u0027], port_id\u003dports[1][\u0027id\u0027])"},{"line_number":422,"context_line":""},{"line_number":423,"context_line":"        # The FIP is now associated with the port of the second server."},{"line_number":424,"context_line":"        self.check_servers_hostnames(servers[-1:])"}],"source_content_type":"text/x-python","patch_set":4,"id":"7faddb67_add3a103","line":422,"in_reply_to":"7faddb67_f2441876","updated":"2019-07-17 08:05:54.000000000","message":"@Jakub: so how often this maintenance task is running and can fix this problem in networking-ovn? IMO even with wait_until_true You can sometimes have the case when connectivity will be recovered by this maintenance task instead of \"normal\" configuration. But TBH, is it that bad if it\u0027s recovered after few seconds? Maybe simple usage of check_servers_hostnames() together with wait_until_true would be enough to ensure that FIP is switched to new port for sure.","commit_id":"a9c24c30a5d4810b4844960a9b42f6307b40f147"},{"author":{"_account_id":23804,"name":"Daniel Alvarez","email":"dalvarez@redhat.com","username":"dalvarez"},"change_message_id":"b8f7d8883794e88986690d2b311ac95837e30244","unresolved":false,"context_lines":[{"line_number":419,"context_line":"                                CONF.validation.image_ssh_user,"},{"line_number":420,"context_line":"                                self.keypair[\u0027private_key\u0027])"},{"line_number":421,"context_line":"        self.client.update_floatingip(self.fip[\u0027id\u0027], port_id\u003dports[1][\u0027id\u0027])"},{"line_number":422,"context_line":""},{"line_number":423,"context_line":"        # The FIP is now associated with the port of the second server."},{"line_number":424,"context_line":"        self.check_servers_hostnames(servers[-1:])"}],"source_content_type":"text/x-python","patch_set":4,"id":"7faddb67_2d92514d","line":422,"in_reply_to":"7faddb67_f2441876","updated":"2019-07-17 08:00:52.000000000","message":"I think that the only good way to verify the race condition in networking-ovn is through whitebox testing (tobiko or similar) and actually assert that the NAT entry is there right after updating the FIP minimizing the window for the maint task to kick in.\n\nThat said, I agree with Brian and this is racey. In loaded systems, even if neutron server writes to the NB database the new NAT entry, ovn-northd will have to populate the SB database and this has to be propagated and processed by ovn-controller in the chassis where the VM is bound to and install the right flows in the switch for the dataplane to converge.\n\nMy guess is that this test would not be green 100% if you run it on a multinode system with certain amount of load. At the very least, I\u0027d do the wait_until_true for a small timeout as you suggest.\nBut then, we may get false positives because it can be the maint task the one making the dataplane to converge.\n\nA side question that comes to my mind is: What if we make the maintenance task interval configurable in networking-ovn (I\u0027m against too many config options but we may have a good argument here)","commit_id":"a9c24c30a5d4810b4844960a9b42f6307b40f147"},{"author":{"_account_id":8655,"name":"Jakub Libosvar","email":"libosvar@redhat.com","username":"jlibosva"},"change_message_id":"43583c17b87081143c5a247a86242ccd0dba7cdb","unresolved":false,"context_lines":[{"line_number":419,"context_line":"                                CONF.validation.image_ssh_user,"},{"line_number":420,"context_line":"                                self.keypair[\u0027private_key\u0027])"},{"line_number":421,"context_line":"        self.client.update_floatingip(self.fip[\u0027id\u0027], port_id\u003dports[1][\u0027id\u0027])"},{"line_number":422,"context_line":""},{"line_number":423,"context_line":"        # The FIP is now associated with the port of the second server."},{"line_number":424,"context_line":"        self.check_servers_hostnames(servers[-1:])"}],"source_content_type":"text/x-python","patch_set":4,"id":"7faddb67_98714547","line":422,"in_reply_to":"7faddb67_f820799d","updated":"2019-07-17 09:04:17.000000000","message":"\u003e About the false positives: yes if they\u0027re not too frequent. If we\n \u003e have a failure ratio of 10% that may become unnoticed due to\n \u003e rechecks :) Remember that when we run this test alone, we get 100%\n \u003e of false positives :)\n\nIt was another test that had server creation after FIP was updated, that\u0027s why I wanted a new test that updates FIP and checks immediately.\n\n \u003e \n \u003e About the whitebox testing: no need for checking periodically. If\n \u003e you execute the API call and straight away you verify the NB\n \u003e contents, then it\u0027s all good from neutron-server perspective.\n\nThere is still small time window between API call getting processed and writing into OVN database, so it can happen you check NB content before neutron-server writes into it, no?\n\n \u003e You can argue that the NB contents can be correct due to the\n \u003e maintenance task but even if it takes us 5s to verify, the chance\n \u003e for the maint task for having kicked in is less than 2% (5s/300s\n \u003e which is the current interval). IMO, this would be a good way to\n \u003e make sure that all is as it should be.\n \u003e I agree, of course, that tempest is not the place for this and this\n \u003e is why I said tobiko or something else.\n\nIf you care about database content, we can have a test in functional tests that verifies update call to mech driver updates NB db with expected data. Functional test has no maintenance task running so there is only a single writer who could fix the stuff. However that would not cover the scenario of FIP updates that we\u0027re missing completely nowadays.\n\n \u003e \n \u003e Another possibility that I\u0027d like to explore is to run tempest in\n \u003e networking-ovn gate with the maintenance task disabled. We want the\n \u003e maintenance task to be present in production as a safeguard\n \u003e mechanism but perhaps in tempest, it will do nothing but hiding\n \u003e issues. This is not perhaps the right place to discuss it but I\u0027m\n \u003e curious to hear from you guys about this.\nThat\u0027s a good idea!","commit_id":"a9c24c30a5d4810b4844960a9b42f6307b40f147"},{"author":{"_account_id":6773,"name":"Lucas Alvares Gomes","email":"lucasagomes@gmail.com","username":"lucasagomes"},"change_message_id":"b021a913bcec4c6bf2238186edf6bda8fa0fd742","unresolved":false,"context_lines":[{"line_number":419,"context_line":"                                CONF.validation.image_ssh_user,"},{"line_number":420,"context_line":"                                self.keypair[\u0027private_key\u0027])"},{"line_number":421,"context_line":"        self.client.update_floatingip(self.fip[\u0027id\u0027], port_id\u003dports[1][\u0027id\u0027])"},{"line_number":422,"context_line":""},{"line_number":423,"context_line":"        # The FIP is now associated with the port of the second server."},{"line_number":424,"context_line":"        self.check_servers_hostnames(servers[-1:])"}],"source_content_type":"text/x-python","patch_set":4,"id":"7faddb67_387cd1ea","line":422,"in_reply_to":"7faddb67_f820799d","updated":"2019-07-17 09:15:36.000000000","message":"Hi,\n\nJumping on this :D\n\nI think that the wait_until_true() would be good here, by the time we update the FIP and the check, it seems to be clear that it can race.\n\nRegarding Daniel suggestion about disabling the maintenance when running tempest, this is an interesting idea. I like the idea because tempest is not really testing things under load, it\u0027s mostly checking correctness so if the maintenance fix something it can hide a potential problem (just like it happened with this patch).\n\nThere\u0027s two aspects of the maintenance work:\n\n1. The maintenance task itself that runs every 5 minutes. This is to ensure that we get eventual consistency between both databases and it can be disabled easily.\n\n2. The CheckRevisionNumbers OVSDB Command that aborts a commit in case the revision number if lower than the one already written in the OVN database. This prevents things like concurrent updates to the same resource. I don\u0027t believe we want to disable that.\n\nMy 0.2 cents.","commit_id":"a9c24c30a5d4810b4844960a9b42f6307b40f147"},{"author":{"_account_id":11975,"name":"Slawek Kaplonski","email":"skaplons@redhat.com","username":"slaweq"},"change_message_id":"e4d8d4c38b0b52a8b6073562f2188c81036cfe1d","unresolved":false,"context_lines":[{"line_number":424,"context_line":"            try:"},{"line_number":425,"context_line":"                self.check_servers_hostnames(servers[-1:])"},{"line_number":426,"context_line":"            except (AssertionError, exceptions.SSHTimeout):"},{"line_number":427,"context_line":"                return False"},{"line_number":428,"context_line":"            return True"},{"line_number":429,"context_line":""},{"line_number":430,"context_line":"        # The FIP is now associated with the port of the second server."}],"source_content_type":"text/x-python","patch_set":6,"id":"7faddb67_f2016a06","line":427,"updated":"2019-07-17 20:17:46.000000000","message":"one problem which I see here is that in check_servers_hostnames() in case of exception raised it will log console log of instance. If this will happened few times, log will be really noisy and possibly hard to debug.","commit_id":"0513bf03ac7da34ccc78275d1443b9954fe569ac"},{"author":{"_account_id":8655,"name":"Jakub Libosvar","email":"libosvar@redhat.com","username":"jlibosva"},"change_message_id":"6f0f3dff122c3adf16dc0fb70ce0cf14fb7765ee","unresolved":false,"context_lines":[{"line_number":424,"context_line":"            try:"},{"line_number":425,"context_line":"                self.check_servers_hostnames(servers[-1:])"},{"line_number":426,"context_line":"            except (AssertionError, exceptions.SSHTimeout):"},{"line_number":427,"context_line":"                return False"},{"line_number":428,"context_line":"            return True"},{"line_number":429,"context_line":""},{"line_number":430,"context_line":"        # The FIP is now associated with the port of the second server."}],"source_content_type":"text/x-python","patch_set":6,"id":"7faddb67_1be165ff","line":427,"in_reply_to":"7faddb67_098ba667","updated":"2019-07-24 11:37:29.000000000","message":"Done","commit_id":"0513bf03ac7da34ccc78275d1443b9954fe569ac"},{"author":{"_account_id":11975,"name":"Slawek Kaplonski","email":"skaplons@redhat.com","username":"slaweq"},"change_message_id":"e8a8276a84426ee893912fea9a9c0788dfaf1550","unresolved":false,"context_lines":[{"line_number":424,"context_line":"            try:"},{"line_number":425,"context_line":"                self.check_servers_hostnames(servers[-1:])"},{"line_number":426,"context_line":"            except (AssertionError, exceptions.SSHTimeout):"},{"line_number":427,"context_line":"                return False"},{"line_number":428,"context_line":"            return True"},{"line_number":429,"context_line":""},{"line_number":430,"context_line":"        # The FIP is now associated with the port of the second server."}],"source_content_type":"text/x-python","patch_set":6,"id":"7faddb67_098ba667","line":427,"in_reply_to":"7faddb67_c8ba6fbf","updated":"2019-07-18 20:43:50.000000000","message":"yes, and here You can just log this console output if it will reach timeout when waiting for true value.","commit_id":"0513bf03ac7da34ccc78275d1443b9954fe569ac"},{"author":{"_account_id":8655,"name":"Jakub Libosvar","email":"libosvar@redhat.com","username":"jlibosva"},"change_message_id":"053c50dc8f436f0a6eff8410bc3c581d79557715","unresolved":false,"context_lines":[{"line_number":424,"context_line":"            try:"},{"line_number":425,"context_line":"                self.check_servers_hostnames(servers[-1:])"},{"line_number":426,"context_line":"            except (AssertionError, exceptions.SSHTimeout):"},{"line_number":427,"context_line":"                return False"},{"line_number":428,"context_line":"            return True"},{"line_number":429,"context_line":""},{"line_number":430,"context_line":"        # The FIP is now associated with the port of the second server."}],"source_content_type":"text/x-python","patch_set":6,"id":"7faddb67_c8ba6fbf","line":427,"in_reply_to":"7faddb67_f2016a06","updated":"2019-07-18 15:32:42.000000000","message":"hmm, right. Do you think we should pass an option to not log errors explicitly?","commit_id":"0513bf03ac7da34ccc78275d1443b9954fe569ac"}]}
