)]}'
{"id":"openstack%2Fnova~986032","triplet_id":"openstack%2Fnova~master~I48159f3d8b4e2e6999eaa84ae5cc37cc67362643","project":"openstack/nova","branch":"master","topic":"bp/instance-metadata-protection","attention_set":{"37432":{"account":{"_account_id":37432,"name":"Koya Watanabe","display_name":"Koya Watanabe","email":"koywatan@lycorp.co.jp","username":"koya-watanabe"},"last_update":"2026-04-24 08:44:26.000000000","reason":"A robot voted negatively on a label"}},"removed_from_attention_set":{},"hashtags":[],"change_id":"I48159f3d8b4e2e6999eaa84ae5cc37cc67362643","subject":"WIP: Add per-item policy enforcement for server tags and metadata","status":"NEW","created":"2026-04-24 06:13:25.000000000","updated":"2026-04-24 17:31:22.000000000","submit_type":"MERGE_IF_NECESSARY","mergeable":true,"submittable":false,"total_comment_count":0,"unresolved_comment_count":0,"has_review_started":true,"meta_rev_id":"9072c3a7eefd4d6aaa43ab54f1f9cfffb8b69c1a","_number":986032,"virtual_id_number":986032,"owner":{"_account_id":37432,"name":"Koya Watanabe","display_name":"Koya Watanabe","email":"koywatan@lycorp.co.jp","username":"koya-watanabe"},"actions":{},"labels":{"Verified":{"disliked":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"all":[{"tag":"autogenerated:zuul:check","value":-1,"date":"2026-04-24 15:32:10.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":"","value":-1,"default_value":0,"optional":true},"Code-Review":{"all":[{"value":0,"permitted_voting_range":{"min":-1,"max":1},"_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":{"all":[{"_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},"Review-Priority":{"all":[{"value":0,"permitted_voting_range":{"min":0,"max":1},"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]}],"values":{" 0":"Default Priority","+1":"Contributor Review Promise","+2":"Core Review Promise"},"description":"","default_value":0,"optional":true}},"removable_reviewers":[],"reviewers":{"CC":[{"_account_id":14384,"name":"Quobyte CI","email":"openstack-ci-external@quobyte.com","username":"quobyteci","tags":["SERVICE_USER"]}],"REVIEWER":[{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]}]},"pending_reviewers":{},"reviewer_updates":[{"updated":"2026-04-24 06:43:04.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":"CC"},{"updated":"2026-04-24 06:54:56.000000000","updated_by":{"_account_id":14384,"name":"Quobyte CI","email":"openstack-ci-external@quobyte.com","username":"quobyteci","tags":["SERVICE_USER"]},"reviewer":{"_account_id":14384,"name":"Quobyte CI","email":"openstack-ci-external@quobyte.com","username":"quobyteci","tags":["SERVICE_USER"]},"state":"CC"},{"updated":"2026-04-24 08:44:26.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":"f6029f4901ef756c8fe5dbb8555c65c15b3f5933","tag":"autogenerated:gerrit:newPatchSet","author":{"_account_id":37432,"name":"Koya Watanabe","display_name":"Koya Watanabe","email":"koywatan@lycorp.co.jp","username":"koya-watanabe"},"date":"2026-04-24 06:13:25.000000000","message":"Uploaded patch set 1.","accounts_in_message":[],"_revision_number":1},{"id":"b9311e680cb117587970da2295d27c7d673c8f1f","tag":"autogenerated:zuul:check-arm64","author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"date":"2026-04-24 06:43:04.000000000","message":"Patch Set 1:\n\nBuild succeeded (ARM64 pipeline).\nhttps://zuul.opendev.org/t/openstack/buildset/66c1ed51bead4f27bcd6356b85c0314d\n\n- openstack-tox-py310-arm64 https://zuul.opendev.org/t/openstack/build/b87d6d454bfb4ec086b8324be0d3e1c4 : FAILURE in 22m 52s (non-voting)\n- openstack-tox-py313-arm64 https://zuul.opendev.org/t/openstack/build/0dab33513272414ca0a192cfa2238954 : FAILURE in 12m 47s (non-voting)\n- openstack-tox-py314-arm64 https://zuul.opendev.org/t/openstack/build/f1b49811413643b382066215364417d2 : FAILURE in 25m 42s (non-voting)","accounts_in_message":[],"_revision_number":1},{"id":"5242cbf2151b283f0ecac59c8a857314981f5c41","author":{"_account_id":14384,"name":"Quobyte CI","email":"openstack-ci-external@quobyte.com","username":"quobyteci","tags":["SERVICE_USER"]},"date":"2026-04-24 06:54:56.000000000","message":"Patch Set 1:\n\nBuild Successful \n\n* quobyteci:  nova_quobyteci : SUCCESS, logs at: https://oscilogs.quobyte.com/logs/I48159f3d8b4e2e6999eaa84ae5cc37cc67362643 .","accounts_in_message":[],"_revision_number":1},{"id":"9e406b91d7857d684075f95e2ebb56a694aefe25","tag":"autogenerated:zuul:check","author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"date":"2026-04-24 08:44:26.000000000","message":"Patch Set 1: Verified-1\n\nBuild failed (check pipeline).  For information on how to proceed, see\nhttps://docs.opendev.org/opendev/infra-manual/latest/developers.html#automated-testing\nand https://docs.openstack.org/project-team-guide/testing.html#how-to-handle-test-failures\n\nhttps://zuul.opendev.org/t/openstack/buildset/e6e4e6c96e9a4ad98150d0e2c0b392a0\n\n- grenade-skip-level-always https://zuul.opendev.org/t/openstack/build/79cebe4e9d6543e0bda045f965073842 : SUCCESS in 1h 05m 38s\n- tempest-integrated-compute https://zuul.opendev.org/t/openstack/build/d924d9956b754335a18385d611b4a30f : SUCCESS in 1h 02m 44s\n- openstacksdk-functional-devstack https://zuul.opendev.org/t/openstack/build/96b1104c16464029844bb5de38134786 : SUCCESS in 1h 10m 35s\n- openstack-tox-cover https://zuul.opendev.org/t/openstack/build/34141477280945248d26f78e6cce7fa5 : FAILURE in 27m 55s\n- openstack-tox-pep8 https://zuul.opendev.org/t/openstack/build/34ad1cb5766c49e7bc41884c2ed693c4 : SUCCESS in 9m 40s\n- openstack-tox-py311 https://zuul.opendev.org/t/openstack/build/cab3bd9e317c4b38aadd9e4f7e6c65f7 : FAILURE in 14m 29s\n- openstack-tox-py313 https://zuul.opendev.org/t/openstack/build/6d22cb755cc54a6b92dd1ff614ea5e73 : FAILURE in 12m 39s\n- openstack-tox-py314 https://zuul.opendev.org/t/openstack/build/f0c88a24927e490fa7350608195e5f67 : FAILURE in 19m 50s (non-voting)\n- openstack-tox-docs https://zuul.opendev.org/t/openstack/build/0b3512f05b6242e58dbda50221b3510d : SUCCESS in 12m 22s\n- ironic-tempest-bios-ipmi-autodetect https://zuul.opendev.org/t/openstack/build/2a3757a288fa402d912de10997ba17c1 : SUCCESS in 33m 08s (non-voting)\n- nova-ceph-multistore https://zuul.opendev.org/t/openstack/build/51b68e2f12694c93acdc2a8840857d1c : SUCCESS in 1h 58m 28s\n- nova-live-migration https://zuul.opendev.org/t/openstack/build/41e96743fee540ba9b059f24a127d5c6 : SUCCESS in 51m 49s\n- nova-vtpm https://zuul.opendev.org/t/openstack/build/618fbcdcb81e446e8756fa735b0bd3cc : SUCCESS in 34m 36s\n- nova-graceful-shutdown https://zuul.opendev.org/t/openstack/build/17e848ab74414be7bdcc0f7e503e5f7b : SUCCESS in 48m 46s\n- nova-live-migration-ceph https://zuul.opendev.org/t/openstack/build/e9999c7f0b19433ca8a16f18b6305d50 : SUCCESS in 57m 02s\n- nova-multi-cell https://zuul.opendev.org/t/openstack/build/07e33b4da76643aa9548362e10b22c35 : FAILURE in 1h 42m 48s\n- nova-next https://zuul.opendev.org/t/openstack/build/de6b49722d4d4fa7943dac8f0bc518f9 : SUCCESS in 2h 23m 23s\n- nova-alt-configurations https://zuul.opendev.org/t/openstack/build/e786371c47b544e2b64037f4294ff469 : SUCCESS in 54m 30s\n- nova-tox-validate-backport https://zuul.opendev.org/t/openstack/build/65886f519caf4a7faf40a3773b8297fc : SUCCESS in 5m 43s (non-voting)\n- nova-tox-functional-py310 https://zuul.opendev.org/t/openstack/build/8da58eff22c4428dbdd1e108f7f3762c : SUCCESS in 25m 05s\n- nova-tox-functional-py313 https://zuul.opendev.org/t/openstack/build/28985c045c1348f5aa868d8617c71ad8 : SUCCESS in 23m 11s\n- nova-grenade-multinode https://zuul.opendev.org/t/openstack/build/cb78393434f2406faa4500c52341db8e : SUCCESS in 1h 27m 59s\n- tempest-ipv6-only https://zuul.opendev.org/t/openstack/build/e9a2e5f8779e425fbf12acff1efa0aa3 : SUCCESS in 44m 14s\n- cyborg-tempest https://zuul.opendev.org/t/openstack/build/1d9c74b7c2eb45fdbd79a0ef7c29ff15 : SUCCESS in 29m 34s (non-voting)\n- barbican-tempest-plugin-simple-crypto https://zuul.opendev.org/t/openstack/build/faf1e8cbb8b941ec912dab6d1c9929a8 : SUCCESS in 41m 14s (non-voting)\n- nova-tox-py313-threading https://zuul.opendev.org/t/openstack/build/f4dc550732914a95a54685086b99068c : FAILURE in 14m 07s","accounts_in_message":[],"_revision_number":1},{"id":"ef1398e2e9451327385bab62e753d1185a0cba1a","tag":"autogenerated:gerrit:newPatchSet","author":{"_account_id":37432,"name":"Koya Watanabe","display_name":"Koya Watanabe","email":"koywatan@lycorp.co.jp","username":"koya-watanabe"},"date":"2026-04-24 13:00:46.000000000","message":"Uploaded patch set 2: Commit message was updated.\n\nOutdated Votes:\n* Verified-1 (copy condition: \"NEVER\")\n","accounts_in_message":[],"_revision_number":2},{"id":"91178d32ddf0f825aaa07b4e94732454816a0470","tag":"autogenerated:gerrit:setTopic","author":{"_account_id":37432,"name":"Koya Watanabe","display_name":"Koya Watanabe","email":"koywatan@lycorp.co.jp","username":"koya-watanabe"},"date":"2026-04-24 13:10:56.000000000","message":"Topic set to bp/instance-metadata-protection","accounts_in_message":[],"_revision_number":2},{"id":"878d20fde4e51d369ac517a3f70b88c0150b73e1","author":{"_account_id":14384,"name":"Quobyte CI","email":"openstack-ci-external@quobyte.com","username":"quobyteci","tags":["SERVICE_USER"]},"date":"2026-04-24 13:42:37.000000000","message":"Patch Set 2:\n\nBuild Successful \n\n* quobyteci:  nova_quobyteci : SUCCESS, logs at: https://oscilogs.quobyte.com/logs/I48159f3d8b4e2e6999eaa84ae5cc37cc67362643 .","accounts_in_message":[],"_revision_number":2},{"id":"dfb3c090e9c5f71d27908f5a3bdb61aca00989f3","tag":"autogenerated:zuul:check","author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"date":"2026-04-24 15:32:10.000000000","message":"Patch Set 2: Verified-1\n\nBuild failed (check pipeline).  For information on how to proceed, see\nhttps://docs.opendev.org/opendev/infra-manual/latest/developers.html#automated-testing\nand https://docs.openstack.org/project-team-guide/testing.html#how-to-handle-test-failures\n\nhttps://zuul.opendev.org/t/openstack/buildset/a6f0b2f6d6784f17ad52e71d384c5c6e\n\n- grenade-skip-level-always https://zuul.opendev.org/t/openstack/build/3c06cdce94d942839f9cf189d614bde2 : SUCCESS in 1h 05m 50s\n- tempest-integrated-compute https://zuul.opendev.org/t/openstack/build/79c5807fdaa44a3e9750153accfbaec3 : SUCCESS in 2h 04m 47s\n- openstacksdk-functional-devstack https://zuul.opendev.org/t/openstack/build/2c59098d21b941429085c9f834c8b309 : SUCCESS in 1h 00m 26s\n- openstack-tox-cover https://zuul.opendev.org/t/openstack/build/59368e7145694eb78ceab660e0858b36 : FAILURE in 37m 47s\n- openstack-tox-pep8 https://zuul.opendev.org/t/openstack/build/c16a51305b6d482bb9f95b7919d4560c : SUCCESS in 7m 30s\n- openstack-tox-py311 https://zuul.opendev.org/t/openstack/build/207a79c4d8604e3c8fb053ede123655c : FAILURE in 14m 06s\n- openstack-tox-py313 https://zuul.opendev.org/t/openstack/build/39e4d7cc72dd41a9a08dc8314489dafc : FAILURE in 13m 02s\n- openstack-tox-py314 https://zuul.opendev.org/t/openstack/build/38c59f4b15b340368a21e8d90dad1686 : FAILURE in 24m 51s (non-voting)\n- openstack-tox-docs https://zuul.opendev.org/t/openstack/build/a0e714785fbc438596f207b262e4f518 : SUCCESS in 12m 22s\n- ironic-tempest-bios-ipmi-autodetect https://zuul.opendev.org/t/openstack/build/7945b3dbeea04d47bc4eb945fa98424b : SUCCESS in 1h 11m 15s (non-voting)\n- nova-ceph-multistore https://zuul.opendev.org/t/openstack/build/9d644800aee540a1a572b5aa09ca50d4 : SUCCESS in 1h 49m 05s\n- nova-live-migration https://zuul.opendev.org/t/openstack/build/6a3bc6afa76549efab7bf788927675a2 : SUCCESS in 57m 48s\n- nova-vtpm https://zuul.opendev.org/t/openstack/build/0ec621e6aaeb4861a0ed1c75c8484a79 : SUCCESS in 49m 29s\n- nova-graceful-shutdown https://zuul.opendev.org/t/openstack/build/68b6f8c7268f448e89f495f00b5c4eef : SUCCESS in 1h 05m 45s\n- nova-live-migration-ceph https://zuul.opendev.org/t/openstack/build/284515368e544b67b5e0eb422a9cba99 : SUCCESS in 55m 22s\n- nova-multi-cell https://zuul.opendev.org/t/openstack/build/3d1637e2dd6b460cab0fbd632f9ec136 : SUCCESS in 1h 59m 34s\n- nova-next https://zuul.opendev.org/t/openstack/build/e3ad97b6d2fb48dea3d8560f1b8c2129 : SUCCESS in 2h 27m 15s\n- nova-alt-configurations https://zuul.opendev.org/t/openstack/build/b71f22af6c694dd5b6b4fd6d3d1c4fb2 : SUCCESS in 52m 56s\n- nova-tox-validate-backport https://zuul.opendev.org/t/openstack/build/f131a1bb37e640f0ad629cec4487405e : SUCCESS in 5m 26s (non-voting)\n- nova-tox-functional-py310 https://zuul.opendev.org/t/openstack/build/5e59e93fac3a4314a31c0cbc08126b50 : SUCCESS in 29m 13s\n- nova-tox-functional-py313 https://zuul.opendev.org/t/openstack/build/7de8ca7e87124de1be0a73be1496b4f3 : SUCCESS in 27m 13s\n- nova-grenade-multinode https://zuul.opendev.org/t/openstack/build/a8e955545b6d4925a0a838ff79a2332e : SUCCESS in 1h 38m 47s\n- tempest-ipv6-only https://zuul.opendev.org/t/openstack/build/7fe45adec7914da8aaf1c9f6af1b2773 : SUCCESS in 57m 38s\n- cyborg-tempest https://zuul.opendev.org/t/openstack/build/fd12727cbd4d45a4b0b3744768078c27 : SUCCESS in 31m 28s (non-voting)\n- barbican-tempest-plugin-simple-crypto https://zuul.opendev.org/t/openstack/build/27a6059757fc4c6c9e7976570fd0bc77 : SUCCESS in 35m 06s (non-voting)\n- nova-tox-py313-threading https://zuul.opendev.org/t/openstack/build/2a8980e94f244629b228d44f7c66370d : FAILURE in 15m 20s","accounts_in_message":[],"_revision_number":2},{"id":"9072c3a7eefd4d6aaa43ab54f1f9cfffb8b69c1a","tag":"autogenerated:zuul:check-arm64","author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"date":"2026-04-24 17:31:22.000000000","message":"Patch Set 2:\n\nBuild succeeded (ARM64 pipeline).\nhttps://zuul.opendev.org/t/openstack/buildset/7d1bac655fc3471696738ba1542a5aff\n\n- openstack-tox-py310-arm64 https://zuul.opendev.org/t/openstack/build/d6c7913bfe4c4e9a83cff495f726f494 : FAILURE in 15m 36s (non-voting)\n- openstack-tox-py313-arm64 https://zuul.opendev.org/t/openstack/build/8e6634acdf9147a397162205e1308d5a : FAILURE in 11m 35s (non-voting)\n- openstack-tox-py314-arm64 https://zuul.opendev.org/t/openstack/build/67d197859ff8448784f9d537ea0c0134 : FAILURE in 19m 28s (non-voting)","accounts_in_message":[],"_revision_number":2}],"current_revision_number":2,"current_revision":"27251452fbed24918bee4ae71f22dbd8371382e5","revisions":{"a9e250d4328c7ec85982bfc6ef7a8b5b88ad635a":{"kind":"REWORK","_number":1,"created":"2026-04-24 06:13:25.000000000","uploader":{"_account_id":37432,"name":"Koya Watanabe","display_name":"Koya Watanabe","email":"koywatan@lycorp.co.jp","username":"koya-watanabe"},"ref":"refs/changes/32/986032/1","fetch":{"anonymous http":{"url":"https://review.opendev.org/openstack/nova","ref":"refs/changes/32/986032/1","commands":{"Checkout":"git fetch https://review.opendev.org/openstack/nova refs/changes/32/986032/1 \u0026\u0026 git checkout FETCH_HEAD","Cherry Pick":"git fetch https://review.opendev.org/openstack/nova refs/changes/32/986032/1 \u0026\u0026 git cherry-pick FETCH_HEAD","Format Patch":"git fetch https://review.opendev.org/openstack/nova refs/changes/32/986032/1 \u0026\u0026 git format-patch -1 --stdout FETCH_HEAD","Pull":"git pull https://review.opendev.org/openstack/nova refs/changes/32/986032/1"}}},"commit":{"parents":[{"commit":"8c08c4ece9becdeae537701276a125b74ac39bc0","subject":"Merge \"[py313-threading]Reenable test_show_simple_tenant_usage_policy\"","web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/nova/commit/8c08c4ece9becdeae537701276a125b74ac39bc0"}]}],"author":{"name":"Koya Watanabe","email":"koywatan@lycorp.co.jp","date":"2026-04-24 06:12:24.000000000","tz":540},"committer":{"name":"Koya Watanabe","email":"koywatan@lycorp.co.jp","date":"2026-04-24 06:13:20.000000000","tz":540},"subject":"WIP: Add per-item policy enforcement for server tags and metadata","message":"WIP: Add per-item policy enforcement for server tags and metadata\n\nProof-of-concept implementation for the spec proposed at:\nhttps://review.opendev.org/c/openstack/nova-specs/+/977339\n\nAdds authorize_per_item() to the policy engine, which allows\noperators to define oslo.policy rules scoped to individual\nmetadata keys or tag values (e.g. restricting who can set\na \"lifetime\" metadata key). Per-item rules are matched via\nregex (re.fullmatch) with \"any permit wins\" semantics.\n\nChange-Id: I48159f3d8b4e2e6999eaa84ae5cc37cc67362643\nSigned-off-by: Koya Watanabe \u003ckoywatan@lycorp.co.jp\u003e\n","web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/nova/commit/a9e250d4328c7ec85982bfc6ef7a8b5b88ad635a"}],"resolve_conflicts_web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/nova/commit/a9e250d4328c7ec85982bfc6ef7a8b5b88ad635a"}]},"branch":"refs/heads/master"},"27251452fbed24918bee4ae71f22dbd8371382e5":{"kind":"NO_CODE_CHANGE","_number":2,"created":"2026-04-24 13:00:46.000000000","uploader":{"_account_id":37432,"name":"Koya Watanabe","display_name":"Koya Watanabe","email":"koywatan@lycorp.co.jp","username":"koya-watanabe"},"ref":"refs/changes/32/986032/2","fetch":{"anonymous http":{"url":"https://review.opendev.org/openstack/nova","ref":"refs/changes/32/986032/2","commands":{"Checkout":"git fetch https://review.opendev.org/openstack/nova refs/changes/32/986032/2 \u0026\u0026 git checkout FETCH_HEAD","Cherry Pick":"git fetch https://review.opendev.org/openstack/nova refs/changes/32/986032/2 \u0026\u0026 git cherry-pick FETCH_HEAD","Format Patch":"git fetch https://review.opendev.org/openstack/nova refs/changes/32/986032/2 \u0026\u0026 git format-patch -1 --stdout FETCH_HEAD","Pull":"git pull https://review.opendev.org/openstack/nova refs/changes/32/986032/2"}}},"commit":{"parents":[{"commit":"8c08c4ece9becdeae537701276a125b74ac39bc0","subject":"Merge \"[py313-threading]Reenable test_show_simple_tenant_usage_policy\"","web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/nova/commit/8c08c4ece9becdeae537701276a125b74ac39bc0"}]}],"author":{"name":"Koya Watanabe","email":"koywatan@lycorp.co.jp","date":"2026-04-24 06:12:24.000000000","tz":540},"committer":{"name":"Koya Watanabe","email":"koywatan@lycorp.co.jp","date":"2026-04-24 12:59:19.000000000","tz":540},"subject":"WIP: Add per-item policy enforcement for server tags and metadata","message":"WIP: Add per-item policy enforcement for server tags and metadata\n\nProof-of-concept implementation for the spec proposed at:\nhttps://review.opendev.org/c/openstack/nova-specs/+/977339\n\nAdds authorize_per_item() to the policy engine, which allows\noperators to define oslo.policy rules scoped to individual\nmetadata keys or tag values (e.g. restricting who can set\na \"lifetime\" metadata key). Per-item rules are matched via\nregex (re.fullmatch) with \"any permit wins\" semantics.\n\nImplements: blueprint instance-metadata-protection\nChange-Id: I48159f3d8b4e2e6999eaa84ae5cc37cc67362643\nSigned-off-by: Koya Watanabe \u003ckoywatan@lycorp.co.jp\u003e\n","web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/nova/commit/27251452fbed24918bee4ae71f22dbd8371382e5"}],"resolve_conflicts_web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/nova/commit/27251452fbed24918bee4ae71f22dbd8371382e5"}]},"branch":"refs/heads/master"}},"requirements":[],"submit_records":[{"rule_name":"gerrit~DefaultSubmitRule","status":"OK","labels":[{"label":"Verified","status":"MAY","applied_by":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]}},{"label":"Code-Review","status":"MAY"},{"label":"Workflow","status":"MAY"},{"label":"Review-Priority","status":"MAY"}]}],"submit_requirements":[{"name":"Verified","description":"Verified in gate by CI","status":"UNSATISFIED","is_legacy":false,"submittability_expression_result":{"expression":"label:Verified\u003dMAX AND -label:Verified\u003dMIN","fulfilled":false,"status":"FAIL","passing_atoms":[],"failing_atoms":["label:Verified\u003dMAX","label:Verified\u003dMIN"],"atom_explanations":{"label:Verified\u003dMAX":"","label:Verified\u003dMIN":""}}},{"name":"Code-Review","description":"Code reviewed by core reviewer","status":"UNSATISFIED","is_legacy":false,"submittability_expression_result":{"expression":"label:Code-Review\u003dMAX AND -label:Code-Review\u003dMIN","fulfilled":false,"status":"FAIL","passing_atoms":[],"failing_atoms":["label:Code-Review\u003dMAX","label:Code-Review\u003dMIN"],"atom_explanations":{"label:Code-Review\u003dMAX":"","label:Code-Review\u003dMIN":""}}},{"name":"Review-Priority","description":"Review Priority","status":"NOT_APPLICABLE","is_legacy":false,"applicability_expression_result":{"fulfilled":false,"status":"FAIL"},"submittability_expression_result":{"expression":"is:true","fulfilled":true,"status":"NOT_EVALUATED","passing_atoms":[],"failing_atoms":[],"atom_explanations":{}}},{"name":"Workflow","description":"Approved for gate by core reviewer","status":"UNSATISFIED","is_legacy":false,"submittability_expression_result":{"expression":"label:Workflow\u003dMAX AND -label:Workflow\u003dMIN","fulfilled":false,"status":"FAIL","passing_atoms":[],"failing_atoms":["label:Workflow\u003dMAX","label:Workflow\u003dMIN"],"atom_explanations":{"label:Workflow\u003dMAX":"","label:Workflow\u003dMIN":""}}}]}
