)]}'
{"id":"openstack%2Fcodegenerator~1003750","triplet_id":"openstack%2Fcodegenerator~master~If0ba0e817919d6cafe3d52a18c45419a3cec2cda","project":"openstack/codegenerator","branch":"master","hashtags":[],"change_id":"If0ba0e817919d6cafe3d52a18c45419a3cec2cda","subject":"feat(rust-tui): Enable ResourceBehaviour tier for remaining services","status":"MERGED","created":"2026-09-03 11:10:48.000000000","updated":"2026-09-03 14:45:41.000000000","submitted":"2026-09-03 14:44:19.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":"1003750","meta_rev_id":"e14a165294575f96bb1911497aa9daf9c9efe6b8","_number":1003750,"virtual_id_number":1003750,"owner":{"_account_id":27900,"name":"Artem Goncharov","email":"artem.goncharov@gmail.com","username":"gtema"},"actions":{},"labels":{"Verified":{"approved":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"all":[{"value":0,"_account_id":27900,"name":"Artem Goncharov","email":"artem.goncharov@gmail.com","username":"gtema"},{"tag":"autogenerated:zuul:gate","value":2,"date":"2026-09-03 14:44:19.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":27900,"name":"Artem Goncharov","email":"artem.goncharov@gmail.com","username":"gtema"},"all":[{"value":2,"date":"2026-09-03 13:59:01.000000000","permitted_voting_range":{"min":2,"max":2},"_account_id":27900,"name":"Artem Goncharov","email":"artem.goncharov@gmail.com","username":"gtema"},{"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":27900,"name":"Artem Goncharov","email":"artem.goncharov@gmail.com","username":"gtema"},"all":[{"value":1,"date":"2026-09-03 13:59:01.000000000","permitted_voting_range":{"min":1,"max":1},"_account_id":27900,"name":"Artem Goncharov","email":"artem.goncharov@gmail.com","username":"gtema"},{"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":{"REVIEWER":[{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},{"_account_id":27900,"name":"Artem Goncharov","email":"artem.goncharov@gmail.com","username":"gtema"}]},"pending_reviewers":{},"reviewer_updates":[{"updated":"2026-09-03 13:03:23.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":"963b68cd984cfa5f848043de59e8bf70452dfe07","tag":"autogenerated:gerrit:newPatchSet","author":{"_account_id":27900,"name":"Artem Goncharov","email":"artem.goncharov@gmail.com","username":"gtema"},"date":"2026-09-03 11:10:48.000000000","message":"Uploaded patch set 1.","accounts_in_message":[],"_revision_number":1},{"id":"dc60ca43df44504c04653037e8d3ad3a932c24c7","tag":"autogenerated:zuul:check","author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"date":"2026-09-03 13:03:23.000000000","message":"Patch Set 1: Verified+1\n\nBuild succeeded (check pipeline).\nhttps://zuul.opendev.org/t/openstack/buildset/836a19e106e743c8b14815e64bc2af41\n\n- openstack-tox-docs https://zuul.opendev.org/t/openstack/build/60b03cca12f547a5a01fd928be3fb2a5 : SUCCESS in 4m 00s\n- openstack-tox-pep8 https://zuul.opendev.org/t/openstack/build/65bc0cbe7f5f4ba6a1a6472162a12bfa : SUCCESS in 5m 24s\n- openstack-tox-py311 https://zuul.opendev.org/t/openstack/build/cf9e711696d14a83afab615b9215d667 : SUCCESS in 3m 53s\n- codegenerator-openapi-baremetal-tips-with-api-ref https://zuul.opendev.org/t/openstack/build/3bbe7cf8d2f144e785829e964b33fe7e : SUCCESS in 3m 31s\n- codegenerator-openapi-block-storage-tips-with-api-ref https://zuul.opendev.org/t/openstack/build/af2b4c7edb0e4cdf9dd01cb50b710c0e : SUCCESS in 7m 47s\n- codegenerator-openapi-compute-tips-with-api-ref https://zuul.opendev.org/t/openstack/build/793222d6f01c4b7fbdef8efab7169ad3 : SUCCESS in 8m 18s\n- codegenerator-openapi-container-infrastructure-management-tips-with-api-ref https://zuul.opendev.org/t/openstack/build/6ea236e853324818be1343b886e70220 : SUCCESS in 5m 44s\n- codegenerator-openapi-dns-tips-with-api-ref https://zuul.opendev.org/t/openstack/build/c2f758eb95364a30a82c2e94eaac6d99 : SUCCESS in 3m 43s\n- codegenerator-openapi-identity-tips-with-api-ref https://zuul.opendev.org/t/openstack/build/fdc452f057854f62837099cc7d1d3a30 : SUCCESS in 6m 33s\n- codegenerator-openapi-identity-tips https://zuul.opendev.org/t/openstack/build/2d0bdbba14f540f6a94c41096c46b8a5 : SUCCESS in 3m 11s\n- codegenerator-openapi-image-tips-with-api-ref https://zuul.opendev.org/t/openstack/build/cb445fc574c94b6bb222a6cb0d7dcd8a : SUCCESS in 6m 23s\n- codegenerator-openapi-key-manager-tips https://zuul.opendev.org/t/openstack/build/62ede4073eb1429c9568bf9c93d6c838 : SUCCESS in 4m 32s\n- codegenerator-openapi-load-balancing-tips-with-api-ref https://zuul.opendev.org/t/openstack/build/6ed9de75358f4c7a8210bbe641dbfa98 : SUCCESS in 7m 17s\n- codegenerator-openapi-network-tips-with-api-ref https://zuul.opendev.org/t/openstack/build/9e5196cc05a744a4b9e1783c28838e65 : SUCCESS in 8m 06s\n- codegenerator-openapi-object-store-static https://zuul.opendev.org/t/openstack/build/deb6cbdfe0b84d6a900395be194f9e60 : SUCCESS in 2m 14s\n- codegenerator-openapi-placement-tips-with-api-ref https://zuul.opendev.org/t/openstack/build/e983f77ce98c48e5bb446671510ad8f4 : SUCCESS in 4m 48s\n- codegenerator-openapi-shared-file-system-tips-with-api-ref https://zuul.opendev.org/t/openstack/build/8c5773ad649d4d01996f35c7a5c5c268 : SUCCESS in 6m 33s\n- codegenerator-tox-publish-openapi-specs https://zuul.opendev.org/t/openstack/build/60320f791cb84208b8b74386bbbb62f7 : SUCCESS in 4m 03s\n- codegenerator-rust-all https://zuul.opendev.org/t/openstack/build/a23d5dcf87c64490baa8d90ca309b6d7 : SUCCESS in 45m 02s","accounts_in_message":[],"_revision_number":1},{"id":"2e73c593548fa07245265dd89fd1009d32a731d1","author":{"_account_id":27900,"name":"Artem Goncharov","email":"artem.goncharov@gmail.com","username":"gtema"},"date":"2026-09-03 13:59:01.000000000","message":"Patch Set 1: Code-Review+2 Workflow+1","accounts_in_message":[],"_revision_number":1},{"id":"4990e8714477ef5bb25aa0ae759549796c88f1d3","tag":"autogenerated:zuul:gate","author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"date":"2026-09-03 13:59:39.000000000","message":"Patch Set 1: -Verified\n\nStarting gate jobs.","accounts_in_message":[],"_revision_number":1},{"id":"a4aced3427f6ab1d744c8d53c62f057196b2ae7b","tag":"autogenerated:zuul:gate","author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"date":"2026-09-03 14:44:19.000000000","message":"Patch Set 1: Verified+2\n\nBuild succeeded (gate pipeline).\nhttps://zuul.opendev.org/t/openstack/buildset/f6efbe3edd6a498dab8f0f3899afa638\n\n- openstack-tox-docs https://zuul.opendev.org/t/openstack/build/6a3f2176eb764c239fd0742bf06d0dc9 : SUCCESS in 3m 21s\n- openstack-tox-pep8 https://zuul.opendev.org/t/openstack/build/2904731b47604d9493d0dc856595ea51 : SUCCESS in 4m 55s\n- openstack-tox-py311 https://zuul.opendev.org/t/openstack/build/1e519ba7dbe9482eba580abc17b6d052 : SUCCESS in 3m 20s\n- codegenerator-openapi-baremetal-tips-with-api-ref https://zuul.opendev.org/t/openstack/build/bcaef61b3cf74c22bf9310b4e7e06ae0 : SUCCESS in 5m 12s\n- codegenerator-openapi-block-storage-tips-with-api-ref https://zuul.opendev.org/t/openstack/build/4127ed483de24618bac8e85ebf6cdcbe : SUCCESS in 7m 12s\n- codegenerator-openapi-compute-tips-with-api-ref https://zuul.opendev.org/t/openstack/build/ade2946d7fcd40c09f1abdb2d28c48e2 : SUCCESS in 8m 07s\n- codegenerator-openapi-container-infrastructure-management-tips-with-api-ref https://zuul.opendev.org/t/openstack/build/9760d387362546108d4b6dab3baa0393 : SUCCESS in 5m 53s\n- codegenerator-openapi-dns-tips-with-api-ref https://zuul.opendev.org/t/openstack/build/49ae769411554b59b07ac8b1f587d97f : SUCCESS in 3m 12s\n- codegenerator-openapi-identity-tips-with-api-ref https://zuul.opendev.org/t/openstack/build/c58b8b2bc6964ab785a684556df8314e : SUCCESS in 7m 41s\n- codegenerator-openapi-image-tips-with-api-ref https://zuul.opendev.org/t/openstack/build/0805a3c06fda49e299e74107069eee75 : SUCCESS in 6m 02s\n- codegenerator-openapi-key-manager-tips https://zuul.opendev.org/t/openstack/build/00e6fe068b93407b8c03ce1ee812f90e : SUCCESS in 4m 58s\n- codegenerator-openapi-load-balancing-tips-with-api-ref https://zuul.opendev.org/t/openstack/build/e86fd2fdf5e04c2fa10549cfc28374b3 : SUCCESS in 3m 25s\n- codegenerator-openapi-network-tips-with-api-ref https://zuul.opendev.org/t/openstack/build/ebb666237e3f40acbbfcf1505459a11a : SUCCESS in 8m 37s\n- codegenerator-openapi-object-store-static https://zuul.opendev.org/t/openstack/build/91b5586a4e014b98ae2ecb78407f3bff : SUCCESS in 1m 41s\n- codegenerator-openapi-placement-tips-with-api-ref https://zuul.opendev.org/t/openstack/build/bf40e21219b64004a4408c83eb4f9524 : SUCCESS in 6m 04s\n- codegenerator-openapi-shared-file-system-tips-with-api-ref https://zuul.opendev.org/t/openstack/build/8f8b91991d2f4157b2faca3cccffcfd1 : SUCCESS in 6m 09s\n- codegenerator-tox-publish-openapi-specs https://zuul.opendev.org/t/openstack/build/8b851bb7c4d44f2ba276e686c44b682f : SUCCESS in 3m 49s\n- codegenerator-rust-all https://zuul.opendev.org/t/openstack/build/c2dd930cce494b96870ece1f5e08dd28 : SUCCESS in 21m 21s","accounts_in_message":[],"_revision_number":1},{"id":"5f913621a5efff76cc5ed31f741007348156b46b","tag":"autogenerated:gerrit:merged","author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"date":"2026-09-03 14:44:19.000000000","message":"Change has been successfully merged","accounts_in_message":[],"_revision_number":1},{"id":"e14a165294575f96bb1911497aa9daf9c9efe6b8","tag":"autogenerated:zuul:promote","author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"date":"2026-09-03 14:45:41.000000000","message":"Patch Set 1:\n\nBuild succeeded (promote pipeline).\nhttps://zuul.opendev.org/t/openstack/buildset/dadf8beff8f04d0a94962b8c1accf507\n\n- promote-openstack-tox-docs https://zuul.opendev.org/t/openstack/build/75466d1e760d4b53b33aa16934030701 : SUCCESS in 55s\n- codegenerator-propose-rust-openstack-change https://zuul.opendev.org/t/openstack/build/f68c77cf7ade48b19d840d19611b25dd : SUCCESS in 1m 05s\n\nWarning:\n  File .ssh/known_hosts.old found in build home directory during playbook opendev.org/opendev/base-jobs/playbooks/base/post.yaml for job codegenerator-propose-rust-openstack-change.  Add to preserve-home-paths if safe, or otherwise remove.\n  File openstack/committed.toml found in build home directory during playbook opendev.org/opendev/base-jobs/playbooks/base/post.yaml for job codegenerator-propose-rust-openstack-change.  Add to preserve-home-paths if safe, or otherwise remove.\n  File openstack/typos.toml found in build home directory during playbook opendev.org/opendev/base-jobs/playbooks/base/post.yaml for job codegenerator-propose-rust-openstack-change.  Add to preserve-home-paths if safe, or otherwise remove.\n  File openstack/Cargo.lock found in build home directory during playbook opendev.org/opendev/base-jobs/playbooks/base/post.yaml for job codegenerator-propose-rust-openstack-change.  Add to preserve-home-paths if safe, or otherwise remove.\n  File openstack/README.md found in build home directory during playbook opendev.org/opendev/base-jobs/playbooks/base/post.yaml for job codegenerator-propose-rust-openstack-change.  Add to preserve-home-paths if safe, or otherwise remove.\n  File openstack/Cargo.toml found in build home directory during playbook opendev.org/opendev/base-jobs/playbooks/base/post.yaml for job codegenerator-propose-rust-openstack-change.  Add to preserve-home-paths if safe, or otherwise remove.\n  File .ssh/known_hosts.old found in build home directory during playbook opendev.org/opendev/base-jobs/playbooks/base/cleanup.yaml for job codegenerator-propose-rust-openstack-change.  Add to preserve-home-paths if safe, or otherwise remove.\n  File .ssh/known_hosts.old found in build home directory during playbook opendev.org/opendev/base-jobs/playbooks/base/post-logs.yaml for job codegenerator-propose-rust-openstack-change.  Add to preserve-home-paths if safe, or otherwise remove.","accounts_in_message":[],"_revision_number":1}],"current_revision_number":1,"current_revision":"6d8803b860554f5a981ac66f0a16a8e344f72b95","revisions":{"6d8803b860554f5a981ac66f0a16a8e344f72b95":{"kind":"REWORK","_number":1,"created":"2026-09-03 11:10:48.000000000","uploader":{"_account_id":27900,"name":"Artem Goncharov","email":"artem.goncharov@gmail.com","username":"gtema"},"ref":"refs/changes/50/1003750/1","fetch":{"anonymous http":{"url":"https://review.opendev.org/openstack/codegenerator","ref":"refs/changes/50/1003750/1","commands":{"Checkout":"git fetch https://review.opendev.org/openstack/codegenerator refs/changes/50/1003750/1 \u0026\u0026 git checkout FETCH_HEAD","Cherry Pick":"git fetch https://review.opendev.org/openstack/codegenerator refs/changes/50/1003750/1 \u0026\u0026 git cherry-pick FETCH_HEAD","Format Patch":"git fetch https://review.opendev.org/openstack/codegenerator refs/changes/50/1003750/1 \u0026\u0026 git format-patch -1 --stdout FETCH_HEAD","Pull":"git pull https://review.opendev.org/openstack/codegenerator refs/changes/50/1003750/1"}}},"commit":{"parents":[{"commit":"f72d2eedaa6949ffc1b7f35f4f8691eccac5187f","subject":"fix(rust-types): render nullable arrays as Option","web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/codegenerator/commit/f72d2eedaa6949ffc1b7f35f4f8691eccac5187f"}]}],"author":{"name":"Artem Goncharov","email":"artem.goncharov@gmail.com","date":"2026-09-03 11:06:10.000000000","tz":120},"committer":{"name":"Artem Goncharov","email":"artem.goncharov@gmail.com","date":"2026-09-03 11:10:31.000000000","tz":120},"subject":"feat(rust-tui): Enable ResourceBehaviour tier for remaining services","message":"feat(rust-tui): Enable ResourceBehaviour tier for remaining services\n\n`RustResourceBehaviourGenerator` derived the target\n`components/\u003cservice\u003e/` directory straight from the hyphenated metadata\nservice key, so `load-balancer.*` and `block-storage.*` resources\nresolved to non-existent `components/load-balancer/` and were silently\nskipped. Normalise the filesystem/module segment to underscores\n(`service_pascal`, which drives the emitted Rust type names, already\nhandles the hyphen via `get_rust_service_type_from_str`).\n\nAdd the `filter_type` needed by `generate_behaviour` to the top-level\n`extensions.rust-tui-view` blocks for identity (group/project/user) and\nblock-storage (backup/snapshot/volume); the filter structs already exist\nin the tree. No `filter_action_name` is added — those resources have no\n`handle_set_filter_action` today and the template correctly omits it.\n\nload-balancer metadata already carried\n`filter_type`/`filter_action_name`, so the path fix alone unblocks it.\n\nAssisted-By: Claude Sonnet 5 \u003cnoreply@anthropic.com\u003e\nChange-Id: If0ba0e817919d6cafe3d52a18c45419a3cec2cda\nSigned-off-by: Artem Goncharov \u003cartem.goncharov@gmail.com\u003e\n","web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/codegenerator/commit/6d8803b860554f5a981ac66f0a16a8e344f72b95"}],"resolve_conflicts_web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/codegenerator/commit/6d8803b860554f5a981ac66f0a16a8e344f72b95"}]},"branch":"refs/heads/master"}},"requirements":[],"submit_records":[{"rule_name":"gerrit~DefaultSubmitRule","status":"CLOSED","labels":[{"label":"Verified","status":"MAY","applied_by":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]}},{"label":"Code-Review","status":"MAY","applied_by":{"_account_id":27900,"name":"Artem Goncharov","email":"artem.goncharov@gmail.com","username":"gtema"}},{"label":"Workflow","status":"MAY","applied_by":{"_account_id":27900,"name":"Artem Goncharov","email":"artem.goncharov@gmail.com","username":"gtema"}}]}],"submit_requirements":[{"name":"Verified","description":"Verified in gate by CI","status":"SATISFIED","is_legacy":false,"submittability_expression_result":{"expression":"label:Verified\u003dMAX AND -label:Verified\u003dMIN","fulfilled":true,"status":"PASS","passing_atoms":["label:Verified\u003dMAX"],"failing_atoms":["label:Verified\u003dMIN"],"atom_explanations":{"label:Verified\u003dMAX":"","label:Verified\u003dMIN":""}}},{"name":"Code-Review","description":"Code reviewed by core reviewer","status":"SATISFIED","is_legacy":false,"submittability_expression_result":{"expression":"label:Code-Review\u003dMAX AND -label:Code-Review\u003dMIN","fulfilled":true,"status":"PASS","passing_atoms":["label:Code-Review\u003dMAX"],"failing_atoms":["label:Code-Review\u003dMIN"],"atom_explanations":{"label:Code-Review\u003dMAX":"","label:Code-Review\u003dMIN":""}}},{"name":"Workflow","description":"Approved for gate by core reviewer","status":"SATISFIED","is_legacy":false,"submittability_expression_result":{"expression":"label:Workflow\u003dMAX AND -label:Workflow\u003dMIN","fulfilled":true,"status":"PASS","passing_atoms":["label:Workflow\u003dMAX"],"failing_atoms":["label:Workflow\u003dMIN"],"atom_explanations":{"label:Workflow\u003dMAX":"","label:Workflow\u003dMIN":""}}}]}
