)]}'
{"/PATCHSET_LEVEL":[{"author":{"_account_id":16688,"name":"Rodolfo Alonso","email":"ralonsoh@redhat.com","username":"rodolfo-alonso-hernandez"},"change_message_id":"075af6a8fa32ffc5566e55d22148a68ccf81b92f","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":2,"id":"1159e3e7_7678c3ad","updated":"2024-09-10 09:36:54.000000000","message":"Hi Brian, should this patch be in WIP? I think","commit_id":"5e11c35c4e4a257392d3cbfe55d4225ce053f3bf"},{"author":{"_account_id":1131,"name":"Brian Haley","email":"haleyb.dev@gmail.com","username":"brian-haley"},"change_message_id":"0520c8d206a0e2eab6129b9ce6dc5c930d999b08","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":2,"id":"e8ef5017_bbc5c052","updated":"2024-09-09 05:19:48.000000000","message":"recheck another unrelated test failure","commit_id":"5e11c35c4e4a257392d3cbfe55d4225ce053f3bf"},{"author":{"_account_id":1131,"name":"Brian Haley","email":"haleyb.dev@gmail.com","username":"brian-haley"},"change_message_id":"bb1fa3db2adfb41716690a4673df4f70dd9696d4","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":2,"id":"cb6972c2_ac616713","updated":"2024-09-09 02:48:29.000000000","message":"recheck unrelated test failure","commit_id":"5e11c35c4e4a257392d3cbfe55d4225ce053f3bf"},{"author":{"_account_id":16688,"name":"Rodolfo Alonso","email":"ralonsoh@redhat.com","username":"rodolfo-alonso-hernandez"},"change_message_id":"c7962003a62583a30a0674920ec52adc2f783534","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":2,"id":"ca111ec7_2bb9b064","in_reply_to":"1159e3e7_7678c3ad","updated":"2024-09-10 09:37:42.000000000","message":"(sorry, I didn\u0027t finish the comment)\nI think this patch is ready to be reviewed.","commit_id":"5e11c35c4e4a257392d3cbfe55d4225ce053f3bf"},{"author":{"_account_id":1131,"name":"Brian Haley","email":"haleyb.dev@gmail.com","username":"brian-haley"},"change_message_id":"55376820cecc0d35d3ade3b145c09d225bc44db0","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":3,"id":"91ca67af_9b6c32ee","updated":"2024-09-11 13:29:13.000000000","message":"I did finally catch an occurrence in the neutron test patch, and this seemed to help.\n\nhttps://77e7c67e12e39f70b2a3-a22e2178400a1d74c0dfc0d0570ba9cf.ssl.cf1.rackcdn.com/928472/3/check/neutron-ovn-tempest-ovs-master-1/e304322/controller/logs/tempest_log.txt\n\n2024-09-10 22:19:06.315 142648 WARNING tempest.scenario.manager [-] Instance has compute ports that are not ACTIVE, waiting for state to change on each: [{\u0027id\u0027: \u0027f7cc3bea-fa5f-45eb-97a0-72cb04a57814\u0027, \u0027name\u0027: \u0027\u0027, \u0027network_id\u0027: \u0027ddc2e629-64d9-4ccb-bb7e-c800aa538cd5\u0027, \u0027tenant_id\u0027: \u00276ba74da510ae4763b3170c75db6cea62\u0027, \u0027mac_address\u0027: \u0027fa:16:3e:e9:d7:9e\u0027, \u0027admin_state_up\u0027: True, \u0027status\u0027: \u0027DOWN\u0027, \u0027device_id\u0027: \u0027f2316b7e-e094-4d63-9991-0b615a6610af\u0027, \u0027device_owner\u0027: \u0027compute:nova\u0027, \u0027fixed_ips\u0027: [{\u0027subnet_id\u0027: \u00271a699b92-956c-4dd4-ab3c-a9b18225f85e\u0027, \u0027ip_address\u0027: \u002710.1.0.3\u0027}], \u0027allowed_address_pairs\u0027: [], \u0027extra_dhcp_opts\u0027: [], \u0027security_groups\u0027: [\u0027408eeb70-aa79-410d-bc87-2d375f780ab2\u0027, \u0027579209c9-a146-46d6-9d2a-01b5feeecf2b\u0027], \u0027description\u0027: \u0027\u0027, \u0027binding:vnic_type\u0027: \u0027normal\u0027, \u0027binding:profile\u0027: {}, \u0027binding:host_id\u0027: \u0027np0038455732\u0027, \u0027binding:vif_type\u0027: \u0027ovs\u0027, \u0027binding:vif_details\u0027: {\u0027port_filter\u0027: True, \u0027connectivity\u0027: \u0027l2\u0027, \u0027bridge_name\u0027: \u0027br-int\u0027, \u0027datapath_type\u0027: \u0027system\u0027, \u0027bound_drivers\u0027: {\u00270\u0027: \u0027ovn\u0027}}, \u0027port_security_enabled\u0027: True, \u0027qos_policy_id\u0027: None, \u0027qos_network_policy_id\u0027: None, \u0027dns_name\u0027: \u0027tempest-server-tempest-testsecuritygroupsbasicops-344666981-acc\u0027, \u0027dns_assignment\u0027: [{\u0027ip_address\u0027: \u002710.1.0.3\u0027, \u0027hostname\u0027: \u0027tempest-server-tempest-testsecuritygroupsbasicops-344666981-acc\u0027, \u0027fqdn\u0027: \u0027tempest-server-tempest-testsecuritygroupsbasicops-344666981-acc.openstackgate.local.\u0027}], \u0027dns_domain\u0027: \u0027\u0027, \u0027resource_request\u0027: None, \u0027tags\u0027: [], \u0027created_at\u0027: \u00272024-09-10T22:18:54Z\u0027, \u0027updated_at\u0027: \u00272024-09-10T22:18:55Z\u0027, \u0027revision_number\u0027: 4, \u0027project_id\u0027: \u00276ba74da510ae4763b3170c75db6cea62\u0027}]\n\n2024-09-10 22:19:08.465 142648 DEBUG tempest.scenario.manager [-] Port transitioned to ACTIVE: {\u0027id\u0027: \u0027f7cc3bea-fa5f-45eb-97a0-72cb04a57814\u0027, \u0027name\u0027: \u0027\u0027, \u0027network_id\u0027: \u0027ddc2e629-64d9-4ccb-bb7e-c800aa538cd5\u0027, \u0027tenant_id\u0027: \u00276ba74da510ae4763b3170c75db6cea62\u0027, \u0027mac_address\u0027: \u0027fa:16:3e:e9:d7:9e\u0027, \u0027admin_state_up\u0027: True, \u0027status\u0027: \u0027ACTIVE\u0027, \u0027device_id\u0027: \u0027f2316b7e-e094-4d63-9991-0b615a6610af\u0027, \u0027device_owner\u0027: \u0027compute:nova\u0027, \u0027fixed_ips\u0027: [{\u0027subnet_id\u0027: \u00271a699b92-956c-4dd4-ab3c-a9b18225f85e\u0027, \u0027ip_address\u0027: \u002710.1.0.3\u0027}], \u0027allowed_address_pairs\u0027: [], \u0027extra_dhcp_opts\u0027: [], \u0027security_groups\u0027: [\u0027408eeb70-aa79-410d-bc87-2d375f780ab2\u0027, \u0027579209c9-a146-46d6-9d2a-01b5feeecf2b\u0027], \u0027description\u0027: \u0027\u0027, \u0027binding:vnic_type\u0027: \u0027normal\u0027, \u0027binding:profile\u0027: {}, \u0027binding:host_id\u0027: \u0027np0038455732\u0027, \u0027binding:vif_type\u0027: \u0027ovs\u0027, \u0027binding:vif_details\u0027: {\u0027port_filter\u0027: True, \u0027connectivity\u0027: \u0027l2\u0027, \u0027bridge_name\u0027: \u0027br-int\u0027, \u0027datapath_type\u0027: \u0027system\u0027, \u0027bound_drivers\u0027: {\u00270\u0027: \u0027ovn\u0027}}, \u0027port_security_enabled\u0027: True, \u0027qos_policy_id\u0027: None, \u0027qos_network_policy_id\u0027: None, \u0027dns_name\u0027: \u0027tempest-server-tempest-testsecuritygroupsbasicops-344666981-acc\u0027, \u0027dns_assignment\u0027: [{\u0027ip_address\u0027: \u002710.1.0.3\u0027, \u0027hostname\u0027: \u0027tempest-server-tempest-testsecuritygroupsbasicops-344666981-acc\u0027, \u0027fqdn\u0027: \u0027tempest-server-tempest-testsecuritygroupsbasicops-344666981-acc.openstackgate.local.\u0027}], \u0027dns_domain\u0027: \u0027\u0027, \u0027resource_request\u0027: None, \u0027tags\u0027: [], \u0027created_at\u0027: \u00272024-09-10T22:18:54Z\u0027, \u0027updated_at\u0027: \u00272024-09-10T22:19:04Z\u0027, \u0027revision_number\u0027: 5, \u0027project_id\u0027: \u00276ba74da510ae4763b3170c75db6cea62\u0027} get_server_port_id_and_ip4 /opt/stack/tempest/tempest/scenario/manager.py:1130\n\nSo it took a 2-second wait to transition.","commit_id":"65b28bc4ea3170ff080dff851172568807bee0a6"},{"author":{"_account_id":22873,"name":"Martin Kopec","email":"mkopec@redhat.com","username":"mkopec"},"change_message_id":"fa8e2489f7a2be495b9d26c3becc30c7855b40aa","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":3,"id":"4de92099_c35d71eb","updated":"2024-09-11 07:27:16.000000000","message":"lgtm, thanks for fixing this","commit_id":"65b28bc4ea3170ff080dff851172568807bee0a6"},{"author":{"_account_id":9656,"name":"Ihar Hrachyshka","email":"ihrachys@redhat.com","username":"ihrachys","status":"Red Hat Networking Systems Engineer"},"change_message_id":"226fbaba3fdb9f000981353d7f05fcb13bb56d8a","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":4,"id":"4ee23c41_b82dd076","updated":"2024-09-12 21:09:57.000000000","message":"If the author *insists* on the current form, I think we can proceed with the way it\u0027s posted: it improves the status quo.\n\nBut I still think that - while the patch will handle 90% of situations when ports are not ready, it would be better to cover 100% of the situations by spinning on the intended state (which is comprised of EACH port being active at the same time.) If I may indulge in unjustified comparisons, it\u0027s a difference between adding a time.sleep() to handle a race and adding an actual wait-until-loop: one is practically enough; the other is both practically and theoretically correct.","commit_id":"985fba7189d7ad22afe408ada778b038a4cad7a8"},{"author":{"_account_id":1131,"name":"Brian Haley","email":"haleyb.dev@gmail.com","username":"brian-haley"},"change_message_id":"a1a32b9805b010ec5d1c2d6988cbba7407657337","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":4,"id":"4c062f33_3bff81f0","updated":"2024-09-11 17:17:45.000000000","message":"Saw the same success with this latest patch.\n\nhttps://70404efb4f895bd2db23-ef2b5e3ff1ade07f52be0b2b8ecb6156.ssl.cf2.rackcdn.com/928472/3/check/neutron-ovn-tempest-ovs-master-2/eaa1d08/controller/logs/tempest_log.txt\n\n2024-09-11 16:21:08.100 144544 WARNING tempest.scenario.manager [-] Instance has compute ports that are not ACTIVE, waiting for state to change on each: [{\u0027id\u0027: \u002799b39d64-1bcc-4d5c-ac61-f5225691c6eb\u0027, \u0027name\u0027: \u0027\u0027, \u0027network_id\u0027: \u002730adbd38-9b2e-4b34-9ba6-302dad8b76d1\u0027, \u0027tenant_id\u0027: \u0027098898e5049546b29afcf19c52ef5e04\u0027, \u0027mac_address\u0027: \u0027fa:16:3e:23:f0:74\u0027, \u0027admin_state_up\u0027: True, \u0027status\u0027: \u0027DOWN\u0027, \u0027device_id\u0027: \u00274a66d08f-2885-4726-9600-f6cb8e2156ad\u0027, \u0027device_owner\u0027: \u0027compute:nova\u0027, \u0027fixed_ips\u0027: [{\u0027subnet_id\u0027: \u00270ab7ed87-3645-40aa-acbd-3d52eb7e2604\u0027, \u0027ip_address\u0027: \u002710.1.0.14\u0027}], \u0027allowed_address_pairs\u0027: [], \u0027extra_dhcp_opts\u0027: [], \u0027security_groups\u0027: [\u00270e7f73c7-700e-4aa5-8881-381fb37e427e\u0027], \u0027description\u0027: \u0027\u0027, \u0027binding:vnic_type\u0027: \u0027normal\u0027, \u0027binding:profile\u0027: {}, \u0027binding:host_id\u0027: \u0027np0038465441\u0027, \u0027binding:vif_type\u0027: \u0027ovs\u0027, \u0027binding:vif_details\u0027: {\u0027port_filter\u0027: True, \u0027connectivity\u0027: \u0027l2\u0027, \u0027bridge_name\u0027: \u0027br-int\u0027, \u0027datapath_type\u0027: \u0027system\u0027, \u0027bound_drivers\u0027: {\u00270\u0027: \u0027ovn\u0027}}, \u0027port_security_enabled\u0027: True, \u0027qos_policy_id\u0027: None, \u0027qos_network_policy_id\u0027: None, \u0027dns_name\u0027: \u0027tempest-testnetworkbasicops-server-1281748411\u0027, \u0027dns_assignment\u0027: [{\u0027ip_address\u0027: \u002710.1.0.14\u0027, \u0027hostname\u0027: \u0027tempest-testnetworkbasicops-server-1281748411\u0027, \u0027fqdn\u0027: \u0027tempest-testnetworkbasicops-server-1281748411.openstackgate.local.\u0027}], \u0027dns_domain\u0027: \u0027\u0027, \u0027resource_request\u0027: None, \u0027tags\u0027: [], \u0027created_at\u0027: \u00272024-09-11T16:20:56Z\u0027, \u0027updated_at\u0027: \u00272024-09-11T16:20:57Z\u0027, \u0027revision_number\u0027: 4, \u0027project_id\u0027: \u0027098898e5049546b29afcf19c52ef5e04\u0027}]\n2024-09-11 16:21:08.147 144544 INFO tempest.lib.common.rest_client [req-eb7f500e-6fb9-4e05-970c-4c7ac589edb4 req-eb7f500e-6fb9-4e05-970c-4c7ac589edb4 ] Request (TestNetworkBasicOps:test_hotplug_nic): 200 GET https://10.209.0.247/networking/v2.0/ports/99b39d64-1bcc-4d5c-ac61-f5225691c6eb 0.047s\n\n2024-09-11 16:21:08.148 144544 DEBUG tempest.scenario.manager [-] Port transitioned to ACTIVE: {\u0027id\u0027: \u002799b39d64-1bcc-4d5c-ac61-f5225691c6eb\u0027, \u0027name\u0027: \u0027\u0027, \u0027network_id\u0027: \u002730adbd38-9b2e-4b34-9ba6-302dad8b76d1\u0027, \u0027tenant_id\u0027: \u0027098898e5049546b29afcf19c52ef5e04\u0027, \u0027mac_address\u0027: \u0027fa:16:3e:23:f0:74\u0027, \u0027admin_state_up\u0027: True, \u0027status\u0027: \u0027ACTIVE\u0027, \u0027device_id\u0027: \u00274a66d08f-2885-4726-9600-f6cb8e2156ad\u0027, \u0027device_owner\u0027: \u0027compute:nova\u0027, \u0027fixed_ips\u0027: [{\u0027subnet_id\u0027: \u00270ab7ed87-3645-40aa-acbd-3d52eb7e2604\u0027, \u0027ip_address\u0027: \u002710.1.0.14\u0027}], \u0027allowed_address_pairs\u0027: [], \u0027extra_dhcp_opts\u0027: [], \u0027security_groups\u0027: [\u00270e7f73c7-700e-4aa5-8881-381fb37e427e\u0027], \u0027description\u0027: \u0027\u0027, \u0027binding:vnic_type\u0027: \u0027normal\u0027, \u0027binding:profile\u0027: {}, \u0027binding:host_id\u0027: \u0027np0038465441\u0027, \u0027binding:vif_type\u0027: \u0027ovs\u0027, \u0027binding:vif_details\u0027: {\u0027port_filter\u0027: True, \u0027connectivity\u0027: \u0027l2\u0027, \u0027bridge_name\u0027: \u0027br-int\u0027, \u0027datapath_type\u0027: \u0027system\u0027, \u0027bound_drivers\u0027: {\u00270\u0027: \u0027ovn\u0027}}, \u0027port_security_enabled\u0027: True, \u0027qos_policy_id\u0027: None, \u0027qos_network_policy_id\u0027: None, \u0027dns_name\u0027: \u0027tempest-testnetworkbasicops-server-1281748411\u0027, \u0027dns_assignment\u0027: [{\u0027ip_address\u0027: \u002710.1.0.14\u0027, \u0027hostname\u0027: \u0027tempest-testnetworkbasicops-server-1281748411\u0027, \u0027fqdn\u0027: \u0027tempest-testnetworkbasicops-server-1281748411.openstackgate.local.\u0027}], \u0027dns_domain\u0027: \u0027\u0027, \u0027resource_request\u0027: None, \u0027tags\u0027: [], \u0027created_at\u0027: \u00272024-09-11T16:20:56Z\u0027, \u0027updated_at\u0027: \u00272024-09-11T16:21:06Z\u0027, \u0027revision_number\u0027: 5, \u0027project_id\u0027: \u0027098898e5049546b29afcf19c52ef5e04\u0027} get_server_port_id_and_ip4 /opt/stack/tempest/tempest/scenario/manager.py:1128\n2024-09-11 16:21:08.238 144544 INFO tempest.lib.common.rest_client [req-9acc3180-7111-470d-8fb4-a5c9a444b12e req-9acc3180-7111-470d-8fb4-a5c9a444b12e ] Request (TestNetworkBasicOps:test_hotplug_nic): 200 GET https://10.209.0.247/networking/v2.0/ports?device_id\u003d4a66d08f-2885-4726-9600-f6cb8e2156ad 0.090s\n\nAnd from my DNM patch it only fails about 1/10 of the time.","commit_id":"985fba7189d7ad22afe408ada778b038a4cad7a8"},{"author":{"_account_id":9656,"name":"Ihar Hrachyshka","email":"ihrachys@redhat.com","username":"ihrachys","status":"Red Hat Networking Systems Engineer"},"change_message_id":"55918f16d681328f2488e0356e1c62d925f9c175","unresolved":true,"context_lines":[],"source_content_type":"","patch_set":4,"id":"689df244_a09c8579","in_reply_to":"4ee23c41_b82dd076","updated":"2024-09-12 21:11:48.000000000","message":"(I will - maybe - post an update on top of it to adjust the logic to wait-until-true approach if the author and reviewers merge the current version.)","commit_id":"985fba7189d7ad22afe408ada778b038a4cad7a8"},{"author":{"_account_id":9656,"name":"Ihar Hrachyshka","email":"ihrachys@redhat.com","username":"ihrachys","status":"Red Hat Networking Systems Engineer"},"change_message_id":"8a41396742332768bb70fd1040b2428539788a92","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":4,"id":"e87670ff_ed3a243d","in_reply_to":"689df244_a09c8579","updated":"2024-09-13 00:27:23.000000000","message":"Done","commit_id":"985fba7189d7ad22afe408ada778b038a4cad7a8"},{"author":{"_account_id":9656,"name":"Ihar Hrachyshka","email":"ihrachys@redhat.com","username":"ihrachys","status":"Red Hat Networking Systems Engineer"},"change_message_id":"2dd0e343bfdf97f6925393c9a326fbb3c049e530","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":5,"id":"ffad9769_d9add4fa","updated":"2024-09-13 00:27:13.000000000","message":"Thanks a lot for the latest refresh. I appreciate it.","commit_id":"9d5d220401b7c8879b40967d45c1c5e3614ba079"},{"author":{"_account_id":16688,"name":"Rodolfo Alonso","email":"ralonsoh@redhat.com","username":"rodolfo-alonso-hernandez"},"change_message_id":"8c1e680ea75ad55d30b457c6abb8231fde2a1941","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":5,"id":"aa5ef35f_6f1b02d5","updated":"2024-09-13 10:07:07.000000000","message":"recheck tempest-multinode-full-py3","commit_id":"9d5d220401b7c8879b40967d45c1c5e3614ba079"},{"author":{"_account_id":1131,"name":"Brian Haley","email":"haleyb.dev@gmail.com","username":"brian-haley"},"change_message_id":"29dbdf174033fea8c2b78d60c27e14ce21d44b7e","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":5,"id":"7a72654f_6873c27e","updated":"2024-09-13 14:37:42.000000000","message":"recheck unrelated POST_FAILURE","commit_id":"9d5d220401b7c8879b40967d45c1c5e3614ba079"},{"author":{"_account_id":1131,"name":"Brian Haley","email":"haleyb.dev@gmail.com","username":"brian-haley"},"change_message_id":"4bfcd5ed27fd130cbb17d85fa3cec431625c351e","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":6,"id":"42ab7073_3d87126a","updated":"2024-09-20 15:31:49.000000000","message":"DNM test patch finally triggered this code and showed a recovery from the \"not ACTIVE\" state to \"all ACTIVE\", so this is good to go imho","commit_id":"d6437c9dd175371cd13d0a5d3222205a8863bda5"},{"author":{"_account_id":9656,"name":"Ihar Hrachyshka","email":"ihrachys@redhat.com","username":"ihrachys","status":"Red Hat Networking Systems Engineer"},"change_message_id":"dd64f5611a1b79dddb8eb234a98ca4a404271288","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":6,"id":"12c69f0a_6e0d9c8c","updated":"2024-09-21 01:06:32.000000000","message":"In nova-cpu log:\n\n```\nSep 20 23:10:27.491248 np0038577605 nova-compute[42271]: ERROR nova.compute.manager [None req-0a06151a-e4e9-45c6-a4d2-69f2736adc79 None None] Error updating resources for node np0038577605.: nova.exception.Invalid: Invalid \u0027[compute] cpu_shared_set\u0027 config: one or more of the configured CPUs is not online. Online cpuset(s): [0, 1, 2, 3], configured cpuset(s): [2, 3, 4, 5, 6, 7]\nSep 20 23:10:27.491248 np0038577605 nova-compute[42271]: ERROR nova.compute.manager Traceback (most recent call last):\nSep 20 23:10:27.491248 np0038577605 nova-compute[42271]: ERROR nova.compute.manager   File \"/opt/stack/nova/nova/compute/manager.py\", line 10583, in _update_available_resource_for_node\nSep 20 23:10:27.491248 np0038577605 nova-compute[42271]: ERROR nova.compute.manager     self.rt.update_available_resource(context, nodename,\nSep 20 23:10:27.491248 np0038577605 nova-compute[42271]: ERROR nova.compute.manager   File \"/opt/stack/nova/nova/compute/resource_tracker.py\", line 911, in update_available_resource\nSep 20 23:10:27.491248 np0038577605 nova-compute[42271]: ERROR nova.compute.manager     resources \u003d self.driver.get_available_resource(nodename)\nSep 20 23:10:27.491248 np0038577605 nova-compute[42271]: ERROR nova.compute.manager   File \"/opt/stack/nova/nova/virt/libvirt/driver.py\", line 10023, in get_available_resource\nSep 20 23:10:27.491248 np0038577605 nova-compute[42271]: ERROR nova.compute.manager     data[\"vcpus\"] \u003d len(self._get_vcpu_available())\nSep 20 23:10:27.491248 np0038577605 nova-compute[42271]: ERROR nova.compute.manager   File \"/opt/stack/nova/nova/virt/libvirt/driver.py\", line 8222, in _get_vcpu_available\nSep 20 23:10:27.491248 np0038577605 nova-compute[42271]: ERROR nova.compute.manager     raise exception.Invalid(msg % {\nSep 20 23:10:27.491248 np0038577605 nova-compute[42271]: ERROR nova.compute.manager nova.exception.Invalid: Invalid \u0027[compute] cpu_shared_set\u0027 config: one or more of the configured CPUs is not online. Online cpuset(s): [0, 1, 2, 3], configured cpuset(s): [2, 3, 4, 5, 6, 7]\n```\n\nI think there\u0027s some issue in the provider?","commit_id":"d6437c9dd175371cd13d0a5d3222205a8863bda5"},{"author":{"_account_id":1131,"name":"Brian Haley","email":"haleyb.dev@gmail.com","username":"brian-haley"},"change_message_id":"dbbbca9e4ed5803d8fa0f9af8c0574a658c3b026","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":6,"id":"e631526f_75c2b15c","updated":"2024-09-16 16:51:38.000000000","message":"Seems as though this addresses the issue:\n\nhttps://review.opendev.org/c/openstack/python-openstackclient/+/929236\n\nBut picking that up would require a release of OSC. There is a lot of chatter in the #openstack-release channel about this so will just need to wait and see.","commit_id":"d6437c9dd175371cd13d0a5d3222205a8863bda5"},{"author":{"_account_id":1131,"name":"Brian Haley","email":"haleyb.dev@gmail.com","username":"brian-haley"},"change_message_id":"0713a7bf58ba9e068a45823af52d2b1a7a5de91a","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":6,"id":"d4f26d55_8bba51e1","updated":"2024-09-16 01:30:36.000000000","message":"The nova-migration job is failing in more than just this patch, so not worth it to re-check until it is addressed","commit_id":"d6437c9dd175371cd13d0a5d3222205a8863bda5"},{"author":{"_account_id":8556,"name":"Ghanshyam Maan","display_name":"Ghanshyam Maan","email":"gmaan.os14@gmail.com","username":"ghanshyam"},"change_message_id":"90fa2a43e3ecc1c1345291b864caf1ce9b527ab6","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":6,"id":"c51242b0_a29ac671","updated":"2024-09-20 16:42:44.000000000","message":"lgtm, thanks","commit_id":"d6437c9dd175371cd13d0a5d3222205a8863bda5"},{"author":{"_account_id":9656,"name":"Ihar Hrachyshka","email":"ihrachys@redhat.com","username":"ihrachys","status":"Red Hat Networking Systems Engineer"},"change_message_id":"fb4e8bf4d5a6ec5347c6edb49fba9099b572b7f9","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":6,"id":"1df78551_c3a07db7","updated":"2024-09-21 01:06:36.000000000","message":"recheck","commit_id":"d6437c9dd175371cd13d0a5d3222205a8863bda5"},{"author":{"_account_id":1131,"name":"Brian Haley","email":"haleyb.dev@gmail.com","username":"brian-haley"},"change_message_id":"f21c5f691b18d4c07ec99f367168251bbb3d1eb4","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":6,"id":"996d15dc_cb51ee48","updated":"2024-09-13 22:44:27.000000000","message":"recheck Proxy.evacuate_server() got an unexpected keyword argument \u0027password\u0027","commit_id":"d6437c9dd175371cd13d0a5d3222205a8863bda5"},{"author":{"_account_id":1131,"name":"Brian Haley","email":"haleyb.dev@gmail.com","username":"brian-haley"},"change_message_id":"f20eb91c875f96427db26d610e0f097985d929bc","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":6,"id":"cb17b973_6245e829","updated":"2024-09-15 16:31:52.000000000","message":"recheck nova live migration","commit_id":"d6437c9dd175371cd13d0a5d3222205a8863bda5"},{"author":{"_account_id":1131,"name":"Brian Haley","email":"haleyb.dev@gmail.com","username":"brian-haley"},"change_message_id":"f5f0691c40db9416e497482849b5afb632c2d52c","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":6,"id":"8c27b0a5_e4d9c100","updated":"2024-09-20 20:43:21.000000000","message":"recheck nova live migration transient error i hope","commit_id":"d6437c9dd175371cd13d0a5d3222205a8863bda5"},{"author":{"_account_id":16688,"name":"Rodolfo Alonso","email":"ralonsoh@redhat.com","username":"rodolfo-alonso-hernandez"},"change_message_id":"5da397bd4bce262664c2051244723ef3f5647300","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":6,"id":"be5a1f35_48e49d5d","updated":"2024-09-14 16:48:56.000000000","message":"recheck nova-live-migration","commit_id":"d6437c9dd175371cd13d0a5d3222205a8863bda5"},{"author":{"_account_id":22873,"name":"Martin Kopec","email":"mkopec@redhat.com","username":"mkopec"},"change_message_id":"a7bf3f3f2371c0ef9e92658d5289cdc9df7fce0f","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":6,"id":"8ec511dc_90689f7f","updated":"2024-09-17 15:21:53.000000000","message":"recheck nova-live-migration job might be fixed","commit_id":"d6437c9dd175371cd13d0a5d3222205a8863bda5"},{"author":{"_account_id":1131,"name":"Brian Haley","email":"haleyb.dev@gmail.com","username":"brian-haley"},"change_message_id":"ee8c50fde9bf52ae55f35bb5013b2721f1f52abf","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":6,"id":"13bbcb3e_e2ffc569","updated":"2024-09-19 16:21:08.000000000","message":"recheck see if nova is happy","commit_id":"d6437c9dd175371cd13d0a5d3222205a8863bda5"},{"author":{"_account_id":1131,"name":"Brian Haley","email":"haleyb.dev@gmail.com","username":"brian-haley"},"change_message_id":"dcda817d1d21b64573861dfbca2a93ac7eea66a1","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":6,"id":"7bb604f8_c34af15b","updated":"2024-09-20 12:35:48.000000000","message":"recheck see if nova is happy","commit_id":"d6437c9dd175371cd13d0a5d3222205a8863bda5"},{"author":{"_account_id":1131,"name":"Brian Haley","email":"haleyb.dev@gmail.com","username":"brian-haley"},"change_message_id":"765d01620e5e9baa5d6a6249a146792442ccaef7","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":6,"id":"25a26513_c199107a","updated":"2024-09-17 19:41:04.000000000","message":"recheck think nova live migration requirements bump did merge now","commit_id":"d6437c9dd175371cd13d0a5d3222205a8863bda5"},{"author":{"_account_id":1131,"name":"Brian Haley","email":"haleyb.dev@gmail.com","username":"brian-haley"},"change_message_id":"e6d8c6ea433e8c32ad5db70d3d1228679ff77b95","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":6,"id":"5f77c83a_cf86c24e","updated":"2024-09-21 17:11:18.000000000","message":"recheck unrelated failure","commit_id":"d6437c9dd175371cd13d0a5d3222205a8863bda5"},{"author":{"_account_id":16688,"name":"Rodolfo Alonso","email":"ralonsoh@redhat.com","username":"rodolfo-alonso-hernandez"},"change_message_id":"093547d6050efd630f675e910f855c400ddc65cd","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":6,"id":"072f1ea7_9f3872f2","in_reply_to":"25a26513_c199107a","updated":"2024-09-18 06:11:24.000000000","message":"we are still hitting the same error","commit_id":"d6437c9dd175371cd13d0a5d3222205a8863bda5"}],"tempest/common/waiters.py":[{"author":{"_account_id":9656,"name":"Ihar Hrachyshka","email":"ihrachys@redhat.com","username":"ihrachys","status":"Red Hat Networking Systems Engineer"},"change_message_id":"2dd0e343bfdf97f6925393c9a326fbb3c049e530","unresolved":true,"context_lines":[{"line_number":679,"context_line":"    :param is_active: A function to call to the check port active status."},{"line_number":680,"context_line":"    :param kwargs: Additional arguments, if any, to pass to list_ports()"},{"line_number":681,"context_line":"    \"\"\""},{"line_number":682,"context_line":"    start_time \u003d time.time()"},{"line_number":683,"context_line":"    while (time.time() - start_time \u003c\u003d client.build_timeout):"},{"line_number":684,"context_line":"        ports \u003d client.list_ports(device_id\u003dserver_id, **kwargs)[\u0027ports\u0027]"},{"line_number":685,"context_line":"        if all(is_active(port) for port in ports):"}],"source_content_type":"text/x-python","patch_set":5,"id":"dd9e5cdd_69015699","line":682,"updated":"2024-09-13 00:27:13.000000000","message":"there\u0027s probably some space to deduplicate code with the waiter above, but it can wait.","commit_id":"9d5d220401b7c8879b40967d45c1c5e3614ba079"},{"author":{"_account_id":1131,"name":"Brian Haley","email":"haleyb.dev@gmail.com","username":"brian-haley"},"change_message_id":"c69b978e6c0c737308b178b8818c21b922014e2b","unresolved":false,"context_lines":[{"line_number":679,"context_line":"    :param is_active: A function to call to the check port active status."},{"line_number":680,"context_line":"    :param kwargs: Additional arguments, if any, to pass to list_ports()"},{"line_number":681,"context_line":"    \"\"\""},{"line_number":682,"context_line":"    start_time \u003d time.time()"},{"line_number":683,"context_line":"    while (time.time() - start_time \u003c\u003d client.build_timeout):"},{"line_number":684,"context_line":"        ports \u003d client.list_ports(device_id\u003dserver_id, **kwargs)[\u0027ports\u0027]"},{"line_number":685,"context_line":"        if all(is_active(port) for port in ports):"}],"source_content_type":"text/x-python","patch_set":5,"id":"3b5feefe_792477b3","line":682,"in_reply_to":"dd9e5cdd_69015699","updated":"2024-09-13 00:33:22.000000000","message":"I will leave that for other tempesters (tempii ?)","commit_id":"9d5d220401b7c8879b40967d45c1c5e3614ba079"},{"author":{"_account_id":1131,"name":"Brian Haley","email":"haleyb.dev@gmail.com","username":"brian-haley"},"change_message_id":"123cc6f6726ba6813282b6a2e47efa302a219277","unresolved":false,"context_lines":[{"line_number":685,"context_line":"        if all(is_active(port) for port in ports):"},{"line_number":686,"context_line":"            return ports"},{"line_number":687,"context_line":"        LOG.warning(\"Server ID %s has ports that are not ACTIVE, waiting \""},{"line_number":688,"context_line":"                    \"for state to change on all: %s\", server_id, ports)"},{"line_number":689,"context_line":"        time.sleep(client.build_interval)"},{"line_number":690,"context_line":"    LOG.error(\"Server ID %s ports have failed to transition to ACTIVE, \""},{"line_number":691,"context_line":"              \"timing out: %s\", server_id, ports)"}],"source_content_type":"text/x-python","patch_set":5,"id":"a0f7ded8_648dee55","line":688,"updated":"2024-09-13 14:50:35.000000000","message":"The only thing I could have done here is log when all ports are active. I only say this since in my testing patch I can see this warning but no resolution. My original patch did that. Or we can just LOG.debug since it\u0027s useful either way. Since I just did a recheck I\u0027ll just add this.","commit_id":"9d5d220401b7c8879b40967d45c1c5e3614ba079"}],"tempest/scenario/manager.py":[{"author":{"_account_id":9656,"name":"Ihar Hrachyshka","email":"ihrachys@redhat.com","username":"ihrachys","status":"Red Hat Networking Systems Engineer"},"change_message_id":"79b4151177143c370846dd9349d816ed737508e0","unresolved":true,"context_lines":[{"line_number":1099,"context_line":"        if ip_addr and not kwargs.get(\u0027fixed_ips\u0027):"},{"line_number":1100,"context_line":"            kwargs[\u0027fixed_ips\u0027] \u003d \u0027ip_address\u003d%s\u0027 % ip_addr"},{"line_number":1101,"context_line":"        client \u003d self.os_admin.ports_client"},{"line_number":1102,"context_line":"        ports \u003d client.list_ports(device_id\u003dserver[\u0027id\u0027], **kwargs)[\u0027ports\u0027]"},{"line_number":1103,"context_line":""},{"line_number":1104,"context_line":"        # A port can have more than one IP address in some cases."},{"line_number":1105,"context_line":"        # If the network is dual-stack (IPv4 + IPv6), this port is associated"}],"source_content_type":"text/x-python","patch_set":2,"id":"b0d5de0a_57d2cc7f","line":1102,"updated":"2024-09-10 14:52:36.000000000","message":"it is a subjective preference, so feel free to ignore, but\n\nI\u0027d wait on \"all list_ports are _is_active\" and not \"first list, then for all ports that are not _is_active, wait on status; then refetch ports\". (The latter can in theory end up with some ports unexpectedly not ACTIVE - if neutron transitions some of the - previously validated - ports back to DOWN.\n\nSo I\u0027d do:\n\n```\nwhile True:\n   ports \u003d list_ports()\n   if not all(_is_active(port) for port in ports):\n        sleep() or raise Timeout\n        continue\n...\ndo_stuff_with(ports)\n```","commit_id":"5e11c35c4e4a257392d3cbfe55d4225ce053f3bf"},{"author":{"_account_id":9656,"name":"Ihar Hrachyshka","email":"ihrachys@redhat.com","username":"ihrachys","status":"Red Hat Networking Systems Engineer"},"change_message_id":"bbb204d20c51142fae242c4f1e41a5929ebe4e7a","unresolved":true,"context_lines":[{"line_number":1099,"context_line":"        if ip_addr and not kwargs.get(\u0027fixed_ips\u0027):"},{"line_number":1100,"context_line":"            kwargs[\u0027fixed_ips\u0027] \u003d \u0027ip_address\u003d%s\u0027 % ip_addr"},{"line_number":1101,"context_line":"        client \u003d self.os_admin.ports_client"},{"line_number":1102,"context_line":"        ports \u003d client.list_ports(device_id\u003dserver[\u0027id\u0027], **kwargs)[\u0027ports\u0027]"},{"line_number":1103,"context_line":""},{"line_number":1104,"context_line":"        # A port can have more than one IP address in some cases."},{"line_number":1105,"context_line":"        # If the network is dual-stack (IPv4 + IPv6), this port is associated"}],"source_content_type":"text/x-python","patch_set":2,"id":"d6a6cabb_4d581783","line":1102,"in_reply_to":"b0d5de0a_57d2cc7f","updated":"2024-09-10 14:54:43.000000000","message":"```\nwhile True:\n   ports \u003d list_ports()\n   if not all(_is_active(port) for port in ports):\n        sleep() or raise Timeout\n        continue\n   break\n...\ndo_stuff_with(ports)\n```","commit_id":"5e11c35c4e4a257392d3cbfe55d4225ce053f3bf"},{"author":{"_account_id":1131,"name":"Brian Haley","email":"haleyb.dev@gmail.com","username":"brian-haley"},"change_message_id":"964f56332f4567fc689d13924450ae56d0f42d70","unresolved":false,"context_lines":[{"line_number":1099,"context_line":"        if ip_addr and not kwargs.get(\u0027fixed_ips\u0027):"},{"line_number":1100,"context_line":"            kwargs[\u0027fixed_ips\u0027] \u003d \u0027ip_address\u003d%s\u0027 % ip_addr"},{"line_number":1101,"context_line":"        client \u003d self.os_admin.ports_client"},{"line_number":1102,"context_line":"        ports \u003d client.list_ports(device_id\u003dserver[\u0027id\u0027], **kwargs)[\u0027ports\u0027]"},{"line_number":1103,"context_line":""},{"line_number":1104,"context_line":"        # A port can have more than one IP address in some cases."},{"line_number":1105,"context_line":"        # If the network is dual-stack (IPv4 + IPv6), this port is associated"}],"source_content_type":"text/x-python","patch_set":2,"id":"41301833_0db3079b","line":1102,"in_reply_to":"d6a6cabb_4d581783","updated":"2024-09-10 21:17:21.000000000","message":"Yeah, I see what you mean. I\u0027ll move this logic below but still use the waiter function so we don\u0027t add additional code here. Should have basically the same effect.","commit_id":"5e11c35c4e4a257392d3cbfe55d4225ce053f3bf"},{"author":{"_account_id":16688,"name":"Rodolfo Alonso","email":"ralonsoh@redhat.com","username":"rodolfo-alonso-hernandez"},"change_message_id":"075af6a8fa32ffc5566e55d22148a68ccf81b92f","unresolved":true,"context_lines":[{"line_number":1121,"context_line":"            LOG.warning(\"Instance has compute ports that are not ACTIVE, \""},{"line_number":1122,"context_line":"                        \"waiting for state to change on each: %s\", inactive)"},{"line_number":1123,"context_line":"            for port_id in inactive:"},{"line_number":1124,"context_line":"                waiters.wait_for_port_status("},{"line_number":1125,"context_line":"                    client\u003dclient, port_id\u003dport_id, status\u003d\"ACTIVE\")"},{"line_number":1126,"context_line":"            # Refresh the port list"},{"line_number":1127,"context_line":"            ports \u003d client.list_ports("}],"source_content_type":"text/x-python","patch_set":2,"id":"00e52bb2_9941d3d2","line":1124,"range":{"start_line":1124,"start_character":24,"end_line":1124,"end_character":44},"updated":"2024-09-10 09:36:54.000000000","message":"The exception raise by this method is not informative enough. I think that if we fail here, we should add information of the VM and the port.","commit_id":"5e11c35c4e4a257392d3cbfe55d4225ce053f3bf"},{"author":{"_account_id":1131,"name":"Brian Haley","email":"haleyb.dev@gmail.com","username":"brian-haley"},"change_message_id":"964f56332f4567fc689d13924450ae56d0f42d70","unresolved":false,"context_lines":[{"line_number":1121,"context_line":"            LOG.warning(\"Instance has compute ports that are not ACTIVE, \""},{"line_number":1122,"context_line":"                        \"waiting for state to change on each: %s\", inactive)"},{"line_number":1123,"context_line":"            for port_id in inactive:"},{"line_number":1124,"context_line":"                waiters.wait_for_port_status("},{"line_number":1125,"context_line":"                    client\u003dclient, port_id\u003dport_id, status\u003d\"ACTIVE\")"},{"line_number":1126,"context_line":"            # Refresh the port list"},{"line_number":1127,"context_line":"            ports \u003d client.list_ports("}],"source_content_type":"text/x-python","patch_set":2,"id":"33088da2_7f07688e","line":1124,"range":{"start_line":1124,"start_character":24,"end_line":1124,"end_character":44},"in_reply_to":"00e52bb2_9941d3d2","updated":"2024-09-10 21:17:21.000000000","message":"Done","commit_id":"5e11c35c4e4a257392d3cbfe55d4225ce053f3bf"},{"author":{"_account_id":9656,"name":"Ihar Hrachyshka","email":"ihrachys@redhat.com","username":"ihrachys","status":"Red Hat Networking Systems Engineer"},"change_message_id":"79b4151177143c370846dd9349d816ed737508e0","unresolved":true,"context_lines":[{"line_number":1134,"context_line":"                        _is_active(p))]"},{"line_number":1135,"context_line":"        inactive \u003d [p for p in ports if p[\u0027status\u0027] !\u003d \u0027ACTIVE\u0027]"},{"line_number":1136,"context_line":"        if inactive:"},{"line_number":1137,"context_line":"            LOG.warning(\"Instance has ports that are not ACTIVE: %s\", inactive)"},{"line_number":1138,"context_line":""},{"line_number":1139,"context_line":"        self.assertNotEmpty(port_map,"},{"line_number":1140,"context_line":"                            \"No IPv4 addresses found in: %s\" % ports)"}],"source_content_type":"text/x-python","patch_set":2,"id":"1cfa7f35_2557e660","line":1137,"updated":"2024-09-10 14:52:36.000000000","message":"at this point this should probably not be a warning? since the only non-ACTIVE ports are now BM ports, as expected.","commit_id":"5e11c35c4e4a257392d3cbfe55d4225ce053f3bf"},{"author":{"_account_id":1131,"name":"Brian Haley","email":"haleyb.dev@gmail.com","username":"brian-haley"},"change_message_id":"964f56332f4567fc689d13924450ae56d0f42d70","unresolved":false,"context_lines":[{"line_number":1134,"context_line":"                        _is_active(p))]"},{"line_number":1135,"context_line":"        inactive \u003d [p for p in ports if p[\u0027status\u0027] !\u003d \u0027ACTIVE\u0027]"},{"line_number":1136,"context_line":"        if inactive:"},{"line_number":1137,"context_line":"            LOG.warning(\"Instance has ports that are not ACTIVE: %s\", inactive)"},{"line_number":1138,"context_line":""},{"line_number":1139,"context_line":"        self.assertNotEmpty(port_map,"},{"line_number":1140,"context_line":"                            \"No IPv4 addresses found in: %s\" % ports)"}],"source_content_type":"text/x-python","patch_set":2,"id":"b44720b7_f276b7f2","line":1137,"in_reply_to":"1cfa7f35_2557e660","updated":"2024-09-10 21:17:21.000000000","message":"Done","commit_id":"5e11c35c4e4a257392d3cbfe55d4225ce053f3bf"},{"author":{"_account_id":9656,"name":"Ihar Hrachyshka","email":"ihrachys@redhat.com","username":"ihrachys","status":"Red Hat Networking Systems Engineer"},"change_message_id":"ca6e87482ec840f5c06dc7e7197a2f0aa76153e0","unresolved":true,"context_lines":[{"line_number":1115,"context_line":"        # If there are inactive compute ports, wait for each one to change"},{"line_number":1116,"context_line":"        # state. This will raise a TimeoutException if that does not happen."},{"line_number":1117,"context_line":"        client \u003d self.os_admin.ports_client"},{"line_number":1118,"context_line":"        while True:"},{"line_number":1119,"context_line":"            ports \u003d client.list_ports("},{"line_number":1120,"context_line":"                device_id\u003dserver[\u0027id\u0027], **kwargs)[\u0027ports\u0027]"},{"line_number":1121,"context_line":"            inactive \u003d [p for p in ports if not _is_active(p)]"}],"source_content_type":"text/x-python","patch_set":3,"id":"c157a670_83b111e7","line":1118,"updated":"2024-09-11 14:15:49.000000000","message":"the way the code is written, I think there\u0027s a chance the loop will never exit, because there\u0027s no timeout for it. Yes, it will raise on wait_for_port_status timeout; but if e.g. ports flip back and forth, then wait_for_port_status will succeed, and yet - not all ports will be active on each list_ports iteration.\n\nI think we should have a guardrail to exit the loop (with a timeout raised) if it takes too long.","commit_id":"65b28bc4ea3170ff080dff851172568807bee0a6"},{"author":{"_account_id":1131,"name":"Brian Haley","email":"haleyb.dev@gmail.com","username":"brian-haley"},"change_message_id":"4877881900c8e5a0cbf2a085b96cb9a1cd836acf","unresolved":false,"context_lines":[{"line_number":1115,"context_line":"        # If there are inactive compute ports, wait for each one to change"},{"line_number":1116,"context_line":"        # state. This will raise a TimeoutException if that does not happen."},{"line_number":1117,"context_line":"        client \u003d self.os_admin.ports_client"},{"line_number":1118,"context_line":"        while True:"},{"line_number":1119,"context_line":"            ports \u003d client.list_ports("},{"line_number":1120,"context_line":"                device_id\u003dserver[\u0027id\u0027], **kwargs)[\u0027ports\u0027]"},{"line_number":1121,"context_line":"            inactive \u003d [p for p in ports if not _is_active(p)]"}],"source_content_type":"text/x-python","patch_set":3,"id":"772a4d1f_4967893f","line":1118,"in_reply_to":"badd4a7a_238019eb","updated":"2024-09-11 14:58:48.000000000","message":"I\u0027m just going to do that ^^, new PS coming, code behaves identical (except for not detecting if port goes back to DOWN, which shouldn\u0027t happen).","commit_id":"65b28bc4ea3170ff080dff851172568807bee0a6"},{"author":{"_account_id":1131,"name":"Brian Haley","email":"haleyb.dev@gmail.com","username":"brian-haley"},"change_message_id":"f0be7d812fd2cbe1fc5405e957dca08b496e721a","unresolved":true,"context_lines":[{"line_number":1115,"context_line":"        # If there are inactive compute ports, wait for each one to change"},{"line_number":1116,"context_line":"        # state. This will raise a TimeoutException if that does not happen."},{"line_number":1117,"context_line":"        client \u003d self.os_admin.ports_client"},{"line_number":1118,"context_line":"        while True:"},{"line_number":1119,"context_line":"            ports \u003d client.list_ports("},{"line_number":1120,"context_line":"                device_id\u003dserver[\u0027id\u0027], **kwargs)[\u0027ports\u0027]"},{"line_number":1121,"context_line":"            inactive \u003d [p for p in ports if not _is_active(p)]"}],"source_content_type":"text/x-python","patch_set":3,"id":"badd4a7a_238019eb","line":1118,"in_reply_to":"c157a670_83b111e7","updated":"2024-09-11 14:40:16.000000000","message":"Understood. I am really just tempted to change it how it was in PS1 - check ports; loop for not ACTIVE ones; then reload ports. If the test still fails then we\u0027ll need to debug that as a new bug.","commit_id":"65b28bc4ea3170ff080dff851172568807bee0a6"},{"author":{"_account_id":9656,"name":"Ihar Hrachyshka","email":"ihrachys@redhat.com","username":"ihrachys","status":"Red Hat Networking Systems Engineer"},"change_message_id":"b3d1d3233ba8d7ec27a22f910374312160f07abc","unresolved":true,"context_lines":[{"line_number":1117,"context_line":"        client \u003d self.os_admin.ports_client"},{"line_number":1118,"context_line":"        ports \u003d client.list_ports(device_id\u003dserver[\u0027id\u0027], **kwargs)[\u0027ports\u0027]"},{"line_number":1119,"context_line":"        inactive \u003d [p for p in ports if not _is_active(p)]"},{"line_number":1120,"context_line":"        if inactive:"},{"line_number":1121,"context_line":"            LOG.warning(\"Instance has compute ports that are not ACTIVE, \""},{"line_number":1122,"context_line":"                        \"waiting for state to change on each: %s\","},{"line_number":1123,"context_line":"                        inactive)"}],"source_content_type":"text/x-python","patch_set":4,"id":"57e18299_a695967f","line":1120,"updated":"2024-09-11 15:29:57.000000000","message":"I think the previous version that would spin until all ports are active was more hardened. The only issue I had before is that the loop didn\u0027t have a timeout handling. I\u0027d prefer if timeout is handled but the loop is back...\n\nThe current version does not handle the port flipping scenario.","commit_id":"985fba7189d7ad22afe408ada778b038a4cad7a8"},{"author":{"_account_id":1131,"name":"Brian Haley","email":"haleyb.dev@gmail.com","username":"brian-haley"},"change_message_id":"80222a285faf1f6384ee1a65ad7be2bdbe9c62a4","unresolved":true,"context_lines":[{"line_number":1117,"context_line":"        client \u003d self.os_admin.ports_client"},{"line_number":1118,"context_line":"        ports \u003d client.list_ports(device_id\u003dserver[\u0027id\u0027], **kwargs)[\u0027ports\u0027]"},{"line_number":1119,"context_line":"        inactive \u003d [p for p in ports if not _is_active(p)]"},{"line_number":1120,"context_line":"        if inactive:"},{"line_number":1121,"context_line":"            LOG.warning(\"Instance has compute ports that are not ACTIVE, \""},{"line_number":1122,"context_line":"                        \"waiting for state to change on each: %s\","},{"line_number":1123,"context_line":"                        inactive)"}],"source_content_type":"text/x-python","patch_set":4,"id":"a9a25ce5_b5bb8138","line":1120,"in_reply_to":"57e18299_a695967f","updated":"2024-09-11 16:18:06.000000000","message":"The code below does wait until the !ACTIVE ports are ACTIVE though by doing a \u0027port show\u0027 until success. The subsequent \u0027port list\u0027 has to reflect that or there is something really wrong in the neutron DB code. IMO I don\u0027t think the port can flip back to DOWN, maybe Rodolfo can give his opinion on that.","commit_id":"985fba7189d7ad22afe408ada778b038a4cad7a8"},{"author":{"_account_id":1131,"name":"Brian Haley","email":"haleyb.dev@gmail.com","username":"brian-haley"},"change_message_id":"08339ecd342408ffef138d8ec71e8edb872d22c2","unresolved":true,"context_lines":[{"line_number":1117,"context_line":"        client \u003d self.os_admin.ports_client"},{"line_number":1118,"context_line":"        ports \u003d client.list_ports(device_id\u003dserver[\u0027id\u0027], **kwargs)[\u0027ports\u0027]"},{"line_number":1119,"context_line":"        inactive \u003d [p for p in ports if not _is_active(p)]"},{"line_number":1120,"context_line":"        if inactive:"},{"line_number":1121,"context_line":"            LOG.warning(\"Instance has compute ports that are not ACTIVE, \""},{"line_number":1122,"context_line":"                        \"waiting for state to change on each: %s\","},{"line_number":1123,"context_line":"                        inactive)"}],"source_content_type":"text/x-python","patch_set":4,"id":"c93b0811_09b4f589","line":1120,"in_reply_to":"910c6149_0f2d8964","updated":"2024-09-12 14:36:16.000000000","message":"\u003e 1) I agree with checking all ports at once. Retrieving one port or many\n\u003e (a limited list) takes the same API time. So I would retrieve all VM ports\n\u003e in each loop and check all of them.\n\nPart of my goal was to not reinvent the wheel here, as wait_for_port_status() has all the logic. And we are typically (always?) only dealing with a single port here, so a show(port) would be quicker than a list(all server ports), right?\n\n\u003e 2) We cannot use only \"wait_for_port_status\". As you mention in the next lines,\n\u003e baremetal ports will be always as DOWN. We need to use the _is_active method.\n\nI only pass the non-baremetal ports to wait_for_port_status(), so this is not an issue. They are basically ignored in this function, except for the one LOG.debug listing them.\n\n\u003e I would just use a wait_until_true method here and the predicate would be a\n\u003e method listing all ports (client.list_ports) and checking that all pass\n\u003e _is_active. If not, recheck again. This wait_until_true should have an\n\u003e exception message informing about what VM ports didn\u0027t reach the active status\n\u003e (active status \u003d\u003d pass _is_active).\n\nwait_for_port_status() is doing all of this already. And I\u0027m printing a message if it fails, including the server info.\n\nSo far in testing I\u0027ve seen this add 3 additional API calls:\n\n  list_ports() - one not ACTIVE\n  show_port() - still not ACTIVE, sleep 1 second\n  show_port() - ACTIVE, done\n  list_ports() - to refresh\n\nThe \u0027while True\u0027 code might have shortened this to 2 additional calls from 3.\n\nI am not trying to dismiss your concerns, I just think they are already addressed.","commit_id":"985fba7189d7ad22afe408ada778b038a4cad7a8"},{"author":{"_account_id":16688,"name":"Rodolfo Alonso","email":"ralonsoh@redhat.com","username":"rodolfo-alonso-hernandez"},"change_message_id":"86b5a56e42bd320808256c78fb5814778a68f138","unresolved":true,"context_lines":[{"line_number":1117,"context_line":"        client \u003d self.os_admin.ports_client"},{"line_number":1118,"context_line":"        ports \u003d client.list_ports(device_id\u003dserver[\u0027id\u0027], **kwargs)[\u0027ports\u0027]"},{"line_number":1119,"context_line":"        inactive \u003d [p for p in ports if not _is_active(p)]"},{"line_number":1120,"context_line":"        if inactive:"},{"line_number":1121,"context_line":"            LOG.warning(\"Instance has compute ports that are not ACTIVE, \""},{"line_number":1122,"context_line":"                        \"waiting for state to change on each: %s\","},{"line_number":1123,"context_line":"                        inactive)"}],"source_content_type":"text/x-python","patch_set":4,"id":"910c6149_0f2d8964","line":1120,"in_reply_to":"a9a25ce5_b5bb8138","updated":"2024-09-12 08:48:09.000000000","message":"1) I agree with checking all ports at once. Retrieving one port or many (a limited list) takes the same API time. So I would retrieve all VM ports in each loop and check all of them.\n\n2) We cannot use only \"wait_for_port_status\". As you mention in the next lines, baremetal ports will be always as DOWN. We need to use the ``_is_active`` method.\n\nI would just use a ``wait_until_true`` method here and the predicate would be a method listing all ports (``client.list_ports``) and checking that all pass ``_is_active``. If not, recheck again. This ``wait_until_true`` should have an exception message informing about what VM ports didn\u0027t reach the active status (active status \u003d\u003d pass ``_is_active``).","commit_id":"985fba7189d7ad22afe408ada778b038a4cad7a8"},{"author":{"_account_id":1131,"name":"Brian Haley","email":"haleyb.dev@gmail.com","username":"brian-haley"},"change_message_id":"c69b978e6c0c737308b178b8818c21b922014e2b","unresolved":false,"context_lines":[{"line_number":1117,"context_line":"        client \u003d self.os_admin.ports_client"},{"line_number":1118,"context_line":"        ports \u003d client.list_ports(device_id\u003dserver[\u0027id\u0027], **kwargs)[\u0027ports\u0027]"},{"line_number":1119,"context_line":"        inactive \u003d [p for p in ports if not _is_active(p)]"},{"line_number":1120,"context_line":"        if inactive:"},{"line_number":1121,"context_line":"            LOG.warning(\"Instance has compute ports that are not ACTIVE, \""},{"line_number":1122,"context_line":"                        \"waiting for state to change on each: %s\","},{"line_number":1123,"context_line":"                        inactive)"}],"source_content_type":"text/x-python","patch_set":4,"id":"63f53397_9d9de9da","line":1120,"in_reply_to":"c93b0811_09b4f589","updated":"2024-09-13 00:33:22.000000000","message":"Done","commit_id":"985fba7189d7ad22afe408ada778b038a4cad7a8"}]}
