)]}'
{"id":"openstack%2Fansible-collections-openstack~834147","triplet_id":"openstack%2Fansible-collections-openstack~stable%2F1.0.0~Ie14391f18c0f65833d00a4b4f6b1b314a0903d2b","project":"openstack/ansible-collections-openstack","branch":"stable/1.0.0","hashtags":[],"change_id":"Ie14391f18c0f65833d00a4b4f6b1b314a0903d2b","subject":"Handle aggregate host list set to None","status":"MERGED","created":"2022-03-18 07:59:56.000000000","updated":"2022-03-18 10:17:44.000000000","submitted":"2022-03-18 10:17:44.000000000","submitter":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"total_comment_count":0,"unresolved_comment_count":0,"has_review_started":true,"submission_id":"834147","cherry_pick_of_change":825667,"cherry_pick_of_patch_set":4,"meta_rev_id":"c4a09dceb221f14eadb56d00c044bb1b69c59af4","_number":834147,"virtual_id_number":834147,"owner":{"_account_id":32962,"name":"Jakob Meng","email":"code@jakobmeng.de","username":"jakobmeng@web.de"},"actions":{},"labels":{"Verified":{"approved":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"all":[{"value":0,"_account_id":32962,"name":"Jakob Meng","email":"code@jakobmeng.de","username":"jakobmeng@web.de"},{"tag":"autogenerated:zuul:gate","value":2,"date":"2022-03-18 10:17:44.000000000","permitted_voting_range":{"min":2,"max":2},"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]}],"values":{"-2":"Fails","-1":"Doesn\u0027t seem to work"," 0":"No score","+1":"Works for me","+2":"Verified"},"description":"","default_value":0,"optional":true},"Code-Review":{"approved":{"_account_id":32962,"name":"Jakob Meng","email":"code@jakobmeng.de","username":"jakobmeng@web.de"},"all":[{"value":2,"date":"2022-03-18 09:15:42.000000000","permitted_voting_range":{"min":2,"max":2},"_account_id":32962,"name":"Jakob Meng","email":"code@jakobmeng.de","username":"jakobmeng@web.de"},{"value":0,"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]}],"values":{"-2":"Do not merge","-1":"This patch needs further work before it can be merged"," 0":"No score","+1":"Looks good to me, but someone else must approve","+2":"Looks good to me (core reviewer)"},"description":"","default_value":0,"optional":true},"Workflow":{"approved":{"_account_id":32962,"name":"Jakob Meng","email":"code@jakobmeng.de","username":"jakobmeng@web.de"},"all":[{"value":1,"date":"2022-03-18 09:15:42.000000000","permitted_voting_range":{"min":1,"max":1},"_account_id":32962,"name":"Jakob Meng","email":"code@jakobmeng.de","username":"jakobmeng@web.de"},{"value":0,"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]}],"values":{"-1":"Work in progress"," 0":"Ready for reviews","+1":"Approved"},"description":"","default_value":0,"optional":true}},"removable_reviewers":[],"reviewers":{"CC":[{"_account_id":28048,"name":"Will Szumski","email":"will@stackhpc.com","username":"jovial"}],"REVIEWER":[{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},{"_account_id":32962,"name":"Jakob Meng","email":"code@jakobmeng.de","username":"jakobmeng@web.de"}]},"pending_reviewers":{},"reviewer_updates":[{"updated":"2022-03-18 07:59:56.000000000","updated_by":{"_account_id":32962,"name":"Jakob Meng","email":"code@jakobmeng.de","username":"jakobmeng@web.de"},"reviewer":{"_account_id":28048,"name":"Will Szumski","email":"will@stackhpc.com","username":"jovial"},"state":"CC"},{"updated":"2022-03-18 09:06:52.000000000","updated_by":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"reviewer":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"state":"REVIEWER"}],"messages":[{"id":"b345dce6698e5a96251f65e4ee1cb3c9124aa033","tag":"autogenerated:gerrit:newPatchSet","author":{"_account_id":32962,"name":"Jakob Meng","email":"code@jakobmeng.de","username":"jakobmeng@web.de"},"date":"2022-03-18 07:59:56.000000000","message":"Patch Set 1: Cherry Picked from branch master.","accounts_in_message":[],"_revision_number":1},{"id":"94560c4dec48e96f0b33fcaf71a560ca5dbcf06f","tag":"autogenerated:zuul:check","author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"date":"2022-03-18 09:06:52.000000000","message":"Patch Set 1: Verified+1\n\nBuild succeeded (check pipeline).\n\n- tox-pep8 https://zuul.opendev.org/t/openstack/build/1d6c414659d24445b3590948656adfc5 : SUCCESS in 4m 32s\n- openstack-tox-linters-ansible-devel https://zuul.opendev.org/t/openstack/build/d2b1451d8e474945812f0bbe409e6edb : FAILURE in 7m 54s (non-voting)\n- openstack-tox-linters-ansible-2.12 https://zuul.opendev.org/t/openstack/build/ee9457363792427ea41880532c7d574c : SUCCESS in 7m 31s\n- openstack-tox-linters-ansible-2.9 https://zuul.opendev.org/t/openstack/build/2893f78493464f9ba8262cc64349bc7c : SUCCESS in 7m 32s\n- ansible-collections-openstack-functional-devstack-releases https://zuul.opendev.org/t/openstack/build/4238bac742644a1192c219945ddde50b : SUCCESS in 48m 03s\n- ansible-collections-openstack-functional-devstack-ansible-2.9 https://zuul.opendev.org/t/openstack/build/6c2dc54363954927b31abb2b1d8b19d9 : SUCCESS in 48m 55s\n- ansible-collections-openstack-functional-devstack-ansible-2.12 https://zuul.opendev.org/t/openstack/build/d1119baa718749e28d5ff4581acd7e8d : SUCCESS in 54m 13s\n- ansible-collections-openstack-functional-devstack-ansible-devel https://zuul.opendev.org/t/openstack/build/75e7157882ae446ab032531f642ce5a8 : SUCCESS in 50m 03s (non-voting)\n- ansible-collections-openstack-functional-devstack-xena-ansible-2.12 https://zuul.opendev.org/t/openstack/build/869f9e29f96646e3babb7e3dc2b29512 : SUCCESS in 47m 41s\n- ansible-collections-openstack-functional-devstack-wallaby-ansible-2.12 https://zuul.opendev.org/t/openstack/build/ff22618225d9456da73e24ba2f4ddb07 : SUCCESS in 56m 03s\n- ansible-collections-openstack-functional-devstack-train-ansible-2.11 https://zuul.opendev.org/t/openstack/build/4378f9cbd5344c398fe5b0ceb18f49e4 : POST_FAILURE in 12m 27s (non-voting)","accounts_in_message":[],"_revision_number":1},{"id":"f6a7b4d65154a9f5d55837743e449b23ec85ece1","author":{"_account_id":32962,"name":"Jakob Meng","email":"code@jakobmeng.de","username":"jakobmeng@web.de"},"date":"2022-03-18 09:15:42.000000000","message":"Patch Set 1: Code-Review+2 Workflow+1","accounts_in_message":[],"_revision_number":1},{"id":"ac9f76b7bdde31e8cd74703f3d21b65490d95c2b","tag":"autogenerated:zuul:gate","author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"date":"2022-03-18 09:16:26.000000000","message":"Patch Set 1: -Verified\n\nStarting gate jobs.","accounts_in_message":[],"_revision_number":1},{"id":"40b5b3c571acb57bd03da4e3c3110a70e0b8593c","tag":"autogenerated:zuul:gate","author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"date":"2022-03-18 10:17:44.000000000","message":"Patch Set 1: Verified+2\n\nBuild succeeded (gate pipeline).\n\n- tox-pep8 https://zuul.opendev.org/t/openstack/build/e4d6f5816b32444f97743fda08e1944c : SUCCESS in 4m 42s\n- openstack-tox-linters-ansible-2.12 https://zuul.opendev.org/t/openstack/build/a6e9b31bd424485b917c96857581c7a7 : SUCCESS in 7m 54s\n- openstack-tox-linters-ansible-2.9 https://zuul.opendev.org/t/openstack/build/cf11a55d53064d08ad5f73e6274b9e4d : SUCCESS in 7m 01s\n- ansible-collections-openstack-functional-devstack-releases https://zuul.opendev.org/t/openstack/build/2875068e492248ada420d1f90fa073c7 : SUCCESS in 56m 41s\n- ansible-collections-openstack-functional-devstack-ansible-2.9 https://zuul.opendev.org/t/openstack/build/7e105a766824448aaacfe41ae96df7b3 : SUCCESS in 40m 25s\n- ansible-collections-openstack-functional-devstack-ansible-2.12 https://zuul.opendev.org/t/openstack/build/16fbbd0faa944b51825db4f0c75395e2 : SUCCESS in 51m 23s\n- ansible-collections-openstack-functional-devstack-wallaby-ansible-2.12 https://zuul.opendev.org/t/openstack/build/8fb833c9bd0e46b2bc3fd78ef2be2716 : SUCCESS in 57m 49s\n- ansible-collections-openstack-functional-devstack-xena-ansible-2.12 https://zuul.opendev.org/t/openstack/build/6298ecfc35ff447fb9d57a90b4d9091a : SUCCESS in 52m 57s","accounts_in_message":[],"_revision_number":1},{"id":"c4a09dceb221f14eadb56d00c044bb1b69c59af4","tag":"autogenerated:gerrit:merged","author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"date":"2022-03-18 10:17:44.000000000","message":"Change has been successfully merged","accounts_in_message":[],"_revision_number":1}],"current_revision_number":1,"current_revision":"406558dae9ea7238cfd6060920b45e9394326ef5","revisions":{"406558dae9ea7238cfd6060920b45e9394326ef5":{"kind":"REWORK","_number":1,"created":"2022-03-18 07:59:56.000000000","uploader":{"_account_id":32962,"name":"Jakob Meng","email":"code@jakobmeng.de","username":"jakobmeng@web.de"},"ref":"refs/changes/47/834147/1","fetch":{"anonymous http":{"url":"https://review.opendev.org/openstack/ansible-collections-openstack","ref":"refs/changes/47/834147/1","commands":{"Checkout":"git fetch https://review.opendev.org/openstack/ansible-collections-openstack refs/changes/47/834147/1 \u0026\u0026 git checkout FETCH_HEAD","Cherry Pick":"git fetch https://review.opendev.org/openstack/ansible-collections-openstack refs/changes/47/834147/1 \u0026\u0026 git cherry-pick FETCH_HEAD","Format Patch":"git fetch https://review.opendev.org/openstack/ansible-collections-openstack refs/changes/47/834147/1 \u0026\u0026 git format-patch -1 --stdout FETCH_HEAD","Pull":"git pull https://review.opendev.org/openstack/ansible-collections-openstack refs/changes/47/834147/1"}}},"commit":{"parents":[{"commit":"c8d89f81a5df987383c4d396f021350a6a23ef0a","subject":"Merge \"Fix assertion after stack deletion\" into stable/1.0.0","web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/ansible-collections-openstack/commit/c8d89f81a5df987383c4d396f021350a6a23ef0a"}]}],"author":{"name":"Will Szumski","email":"will@stackhpc.com","date":"2022-01-20 19:39:28.000000000","tz":0},"committer":{"name":"Jakob Meng","email":"code@jakobmeng.de","date":"2022-03-18 07:59:56.000000000","tz":0},"subject":"Handle aggregate host list set to None","message":"Handle aggregate host list set to None\n\nA freshly created host aggregate can have the host list set to None,\nconsequently you\u0027d hit:\n\n```\nfailed: [localhost] (item\u003d{\u0027name\u0027: \u0027gpu\u0027, \u0027hosts\u0027: [], \u0027metadata\u0027: {\u0027type\u0027: \u0027gpu\u0027}}) \u003d\u003e {\"ansible_loop_var\": \"item\", \"changed\": false, \"item\": {\"hosts\": [], \"metadata\": {\"type\": \"gpu\"}, \"name\": \"gpu\"}, \"module_stderr\": \"Traceback (most recent call last):\\n  File \\\"/var/lib/home/stackhpc/.ansible/tmp/ansible-tmp-1642696576.6728637-1456290-187052400642084/Ansiba\nllZ_host_aggregate.py\\\", line 100, in \u003cmodule\u003e\\n    _ansiballz_main()\\n  File \\\"/var/lib/home/stackhpc/.ansible/tmp/ansible-tmp-1642696576.6728637-1456290-187052400642084/AnsiballZ_host_aggregate.py\\\", line 92, in _ansiballz_main\\n    invoke_module(zipped_mod, temp_path, ANSIBALLZ_PARAMS)\\n  File \\\"/var/lib/home/stackhpc/.ansible/tmp/ansible-tmp-1642696576.672\n8637-1456290-187052400642084/AnsiballZ_host_aggregate.py\\\", line 41, in invoke_module\\n    run_name\u003d\u0027__main__\u0027, alter_sys\u003dTrue)\\n  File \\\"/usr/lib64/python3.6/runpy.py\\\", line 205, in run_module\\n    return _run_module_code(code, init_globals, run_name, mod_spec)\\n  File \\\"/usr/lib64/python3.6/runpy.py\\\", line 96, in _run_module_code\\n    mod_name, mod_spec, p\nkg_name, script_name)\\n  File \\\"/usr/lib64/python3.6/runpy.py\\\", line 85, in _run_code\\n    exec(code, run_globals)\\n  File \\\"/tmp/ansible_os_nova_host_aggregate_payload_qwjtdtjj/ansible_os_nova_host_aggregate_payload.zip/ansible_collections/openstack/cloud/plugins/modules/host_aggregate.py\\\", line 214, in \u003cmodule\u003e\\n  File \\\"/tmp/ansible_os_nova_host_aggregate\n_payload_qwjtdtjj/ansible_os_nova_host_aggregate_payload.zip/ansible_collections/openstack/cloud/plugins/modules/host_aggregate.py\\\", line 210, in main\\n  File \\\"/tmp/ansible_os_nova_host_aggregate_payload_qwjtdtjj/ansible_os_nova_host_aggregate_payload.zip/ansible_collections/openstack/cloud/plugins/module_utils/openstack.py\\\", line 407, in __call__\\n  File \\\n\"/tmp/ansible_os_nova_host_aggregate_payload_qwjtdtjj/ansible_os_nova_host_aggregate_payload.zip/ansible_collections/openstack/cloud/plugins/modules/host_aggregate.py\\\", line 176, in run\\n  File \\\"/tmp/ansible_os_nova_host_aggregate_payload_qwjtdtjj/ansible_os_nova_host_aggregate_payload.zip/ansible_collections/openstack/cloud/plugins/modules/host_aggregate.py\n\\\", line 138, in _update_hosts\\nTypeError: \u0027NoneType\u0027 object is not iterable\\n\", \"module_stdout\": \"\", \"msg\": \"MODULE FAILURE\\nSee stdout/stderr for the exact error\", \"rc\": 1}\n```\n\nI\u0027ve not investigated which API and library combinations elict this\nbehaviour, but it does seem to occur. We can safely handle this\npossibility in backwards compatible way.\n\nIt is possible to workaround this issue by invoking the module a second\ntime.\n\nChange-Id: Ie14391f18c0f65833d00a4b4f6b1b314a0903d2b\n","web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/ansible-collections-openstack/commit/406558dae9ea7238cfd6060920b45e9394326ef5"}],"resolve_conflicts_web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/ansible-collections-openstack/commit/406558dae9ea7238cfd6060920b45e9394326ef5"}]},"branch":"refs/heads/stable/1.0.0"}},"requirements":[],"submit_records":[{"status":"CLOSED","labels":[{"label":"Verified","status":"OK","applied_by":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]}},{"label":"Code-Review","status":"OK","applied_by":{"_account_id":32962,"name":"Jakob Meng","email":"code@jakobmeng.de","username":"jakobmeng@web.de"}},{"label":"Workflow","status":"OK","applied_by":{"_account_id":32962,"name":"Jakob Meng","email":"code@jakobmeng.de","username":"jakobmeng@web.de"}}]}],"submit_requirements":[{"name":"Verified","status":"SATISFIED","is_legacy":true,"submittability_expression_result":{"expression":"label:Verified\u003dCustom-Rule","fulfilled":true,"status":"PASS","passing_atoms":["label:Verified\u003dCustom-Rule"],"failing_atoms":[],"atom_explanations":{}}},{"name":"Workflow","status":"SATISFIED","is_legacy":true,"submittability_expression_result":{"expression":"label:Workflow\u003dCustom-Rule","fulfilled":true,"status":"PASS","passing_atoms":["label:Workflow\u003dCustom-Rule"],"failing_atoms":[],"atom_explanations":{}}},{"name":"Code-Review","status":"SATISFIED","is_legacy":true,"submittability_expression_result":{"expression":"label:Code-Review\u003dCustom-Rule","fulfilled":true,"status":"PASS","passing_atoms":["label:Code-Review\u003dCustom-Rule"],"failing_atoms":[],"atom_explanations":{}}}]}
