)]}'
{"/PATCHSET_LEVEL":[{"author":{"_account_id":28619,"name":"Dmitriy Rabotyagov","email":"noonedeadpunk@gmail.com","username":"noonedeadpunk"},"change_message_id":"78802dd0bca28bb30ae918ea0c9e313ca5e565f0","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":3,"id":"a0b90f37_20545580","updated":"2026-05-20 11:09:10.000000000","message":"think it looks good, would love to see it merged. I have some optional nits though, but it\u0027s good to go otherwise.","commit_id":"c68a2eced89a1c6c179a137ff356bda0072c7b91"}],"ci/roles/compute_service/tasks/main.yml":[{"author":{"_account_id":28619,"name":"Dmitriy Rabotyagov","email":"noonedeadpunk@gmail.com","username":"noonedeadpunk"},"change_message_id":"78802dd0bca28bb30ae918ea0c9e313ca5e565f0","unresolved":true,"context_lines":[{"line_number":1,"context_line":"---"},{"line_number":2,"context_line":"- name: Fetch compute services"},{"line_number":3,"context_line":"  openstack.cloud.compute_service_info:"},{"line_number":4,"context_line":"    cloud: \u0027{{ cloud }}\u0027"},{"line_number":5,"context_line":"  register: compute_services"},{"line_number":6,"context_line":""},{"line_number":7,"context_line":"- name: Assert return values of compute_service_info module"}],"source_content_type":"text/x-yaml","patch_set":3,"id":"2bda6519_beaf2ec2","line":4,"range":{"start_line":4,"start_character":0,"end_line":4,"end_character":24},"updated":"2026-05-20 11:09:10.000000000","message":"why this change?","commit_id":"c68a2eced89a1c6c179a137ff356bda0072c7b91"},{"author":{"_account_id":38666,"name":"Patrick Pfurtscheller","display_name":"Patrick Pfurtscheller","email":"patrick@pfurtscheller.org","username":"PfurtschellerP"},"change_message_id":"26d4f35c9783a9e272babf1946440db4849741df","unresolved":false,"context_lines":[{"line_number":1,"context_line":"---"},{"line_number":2,"context_line":"- name: Fetch compute services"},{"line_number":3,"context_line":"  openstack.cloud.compute_service_info:"},{"line_number":4,"context_line":"    cloud: \u0027{{ cloud }}\u0027"},{"line_number":5,"context_line":"  register: compute_services"},{"line_number":6,"context_line":""},{"line_number":7,"context_line":"- name: Assert return values of compute_service_info module"}],"source_content_type":"text/x-yaml","patch_set":3,"id":"01f176a9_db5c8b9b","line":4,"range":{"start_line":4,"start_character":0,"end_line":4,"end_character":24},"in_reply_to":"2bda6519_beaf2ec2","updated":"2026-05-20 20:43:04.000000000","message":"Seems like linter did this accidentally. I\u0027ll revert it.","commit_id":"c68a2eced89a1c6c179a137ff356bda0072c7b91"},{"author":{"_account_id":28619,"name":"Dmitriy Rabotyagov","email":"noonedeadpunk@gmail.com","username":"noonedeadpunk"},"change_message_id":"78802dd0bca28bb30ae918ea0c9e313ca5e565f0","unresolved":true,"context_lines":[{"line_number":13,"context_line":""},{"line_number":14,"context_line":"- name: Fetch compute services with filters"},{"line_number":15,"context_line":"  openstack.cloud.compute_service_info:"},{"line_number":16,"context_line":"    cloud: \u0027{{ cloud }}\u0027"},{"line_number":17,"context_line":"    binary: \u0027nova-compute\u0027"},{"line_number":18,"context_line":"  register: compute_services"},{"line_number":19,"context_line":""},{"line_number":20,"context_line":"- name: Assert return values of compute_service_info module"}],"source_content_type":"text/x-yaml","patch_set":3,"id":"921788cb_95e06e88","line":17,"range":{"start_line":16,"start_character":0,"end_line":17,"end_character":26},"updated":"2026-05-20 11:09:10.000000000","message":"same here","commit_id":"c68a2eced89a1c6c179a137ff356bda0072c7b91"},{"author":{"_account_id":38666,"name":"Patrick Pfurtscheller","display_name":"Patrick Pfurtscheller","email":"patrick@pfurtscheller.org","username":"PfurtschellerP"},"change_message_id":"26d4f35c9783a9e272babf1946440db4849741df","unresolved":false,"context_lines":[{"line_number":13,"context_line":""},{"line_number":14,"context_line":"- name: Fetch compute services with filters"},{"line_number":15,"context_line":"  openstack.cloud.compute_service_info:"},{"line_number":16,"context_line":"    cloud: \u0027{{ cloud }}\u0027"},{"line_number":17,"context_line":"    binary: \u0027nova-compute\u0027"},{"line_number":18,"context_line":"  register: compute_services"},{"line_number":19,"context_line":""},{"line_number":20,"context_line":"- name: Assert return values of compute_service_info module"}],"source_content_type":"text/x-yaml","patch_set":3,"id":"cfbda7dc_97c9b514","line":17,"range":{"start_line":16,"start_character":0,"end_line":17,"end_character":26},"in_reply_to":"921788cb_95e06e88","updated":"2026-05-20 20:43:04.000000000","message":"Done","commit_id":"c68a2eced89a1c6c179a137ff356bda0072c7b91"},{"author":{"_account_id":28619,"name":"Dmitriy Rabotyagov","email":"noonedeadpunk@gmail.com","username":"noonedeadpunk"},"change_message_id":"78802dd0bca28bb30ae918ea0c9e313ca5e565f0","unresolved":true,"context_lines":[{"line_number":38,"context_line":"      - compute_service_disabled.compute_services | map(attribute\u003d\u0027disabled_reason\u0027) | unique | length \u003d\u003d 1"},{"line_number":39,"context_line":"      - compute_service_disabled.compute_services[0].status \u003d\u003d \"disabled\""},{"line_number":40,"context_line":"      - compute_service_disabled.compute_services[0].disabled_reason \u003d\u003d \"maintenance\""},{"line_number":41,"context_line":"      - compute_service_disabled.changed"},{"line_number":42,"context_line":""},{"line_number":43,"context_line":"- name: Disable compute service on a node again"},{"line_number":44,"context_line":"  openstack.cloud.compute_service:"}],"source_content_type":"text/x-yaml","patch_set":3,"id":"58356b46_0cd4fabb","line":41,"updated":"2026-05-20 11:09:10.000000000","message":"I\u0027d suggest using `changed` test instead of evaluating actual mapping, ie\n\n```suggestion\n      - compute_service_disabled is changed\n```\n\nhttps://docs.ansible.com/projects/ansible/latest/playbook_guide/playbooks_tests.html#testing-task-results","commit_id":"c68a2eced89a1c6c179a137ff356bda0072c7b91"},{"author":{"_account_id":38666,"name":"Patrick Pfurtscheller","display_name":"Patrick Pfurtscheller","email":"patrick@pfurtscheller.org","username":"PfurtschellerP"},"change_message_id":"26d4f35c9783a9e272babf1946440db4849741df","unresolved":false,"context_lines":[{"line_number":38,"context_line":"      - compute_service_disabled.compute_services | map(attribute\u003d\u0027disabled_reason\u0027) | unique | length \u003d\u003d 1"},{"line_number":39,"context_line":"      - compute_service_disabled.compute_services[0].status \u003d\u003d \"disabled\""},{"line_number":40,"context_line":"      - compute_service_disabled.compute_services[0].disabled_reason \u003d\u003d \"maintenance\""},{"line_number":41,"context_line":"      - compute_service_disabled.changed"},{"line_number":42,"context_line":""},{"line_number":43,"context_line":"- name: Disable compute service on a node again"},{"line_number":44,"context_line":"  openstack.cloud.compute_service:"}],"source_content_type":"text/x-yaml","patch_set":3,"id":"7b8e27d8_83944399","line":41,"in_reply_to":"58356b46_0cd4fabb","updated":"2026-05-20 20:43:04.000000000","message":"Done","commit_id":"c68a2eced89a1c6c179a137ff356bda0072c7b91"},{"author":{"_account_id":28619,"name":"Dmitriy Rabotyagov","email":"noonedeadpunk@gmail.com","username":"noonedeadpunk"},"change_message_id":"78802dd0bca28bb30ae918ea0c9e313ca5e565f0","unresolved":true,"context_lines":[{"line_number":52,"context_line":"- name: Assert idempotency of service disable"},{"line_number":53,"context_line":"  ansible.builtin.assert:"},{"line_number":54,"context_line":"    that:"},{"line_number":55,"context_line":"      - not compute_service_disabled_again.changed"},{"line_number":56,"context_line":""},{"line_number":57,"context_line":"- name: Re-enable compute service"},{"line_number":58,"context_line":"  openstack.cloud.compute_service:"}],"source_content_type":"text/x-yaml","patch_set":3,"id":"e07b43cd_6cba4e8a","line":55,"range":{"start_line":55,"start_character":8,"end_line":55,"end_character":50},"updated":"2026-05-20 11:09:10.000000000","message":"```suggestion\n      - compute_service_disabled_again is not changed\n```","commit_id":"c68a2eced89a1c6c179a137ff356bda0072c7b91"},{"author":{"_account_id":38666,"name":"Patrick Pfurtscheller","display_name":"Patrick Pfurtscheller","email":"patrick@pfurtscheller.org","username":"PfurtschellerP"},"change_message_id":"26d4f35c9783a9e272babf1946440db4849741df","unresolved":false,"context_lines":[{"line_number":52,"context_line":"- name: Assert idempotency of service disable"},{"line_number":53,"context_line":"  ansible.builtin.assert:"},{"line_number":54,"context_line":"    that:"},{"line_number":55,"context_line":"      - not compute_service_disabled_again.changed"},{"line_number":56,"context_line":""},{"line_number":57,"context_line":"- name: Re-enable compute service"},{"line_number":58,"context_line":"  openstack.cloud.compute_service:"}],"source_content_type":"text/x-yaml","patch_set":3,"id":"a7e62e72_0f2b18ad","line":55,"range":{"start_line":55,"start_character":8,"end_line":55,"end_character":50},"in_reply_to":"e07b43cd_6cba4e8a","updated":"2026-05-20 20:43:04.000000000","message":"Done","commit_id":"c68a2eced89a1c6c179a137ff356bda0072c7b91"},{"author":{"_account_id":28619,"name":"Dmitriy Rabotyagov","email":"noonedeadpunk@gmail.com","username":"noonedeadpunk"},"change_message_id":"78802dd0bca28bb30ae918ea0c9e313ca5e565f0","unresolved":true,"context_lines":[{"line_number":67,"context_line":"    that:"},{"line_number":68,"context_line":"      - compute_service_enabled.compute_services | map(attribute\u003d\u0027status\u0027) | unique | length \u003d\u003d 1"},{"line_number":69,"context_line":"      - compute_service_enabled.compute_services[0].status \u003d\u003d \"enabled\""},{"line_number":70,"context_line":"      - compute_service_enabled.changed"}],"source_content_type":"text/x-yaml","patch_set":3,"id":"3bb4e0e8_26a10a4e","line":70,"updated":"2026-05-20 11:09:10.000000000","message":"```suggestion\n      - compute_service_enabled is changed\n```","commit_id":"c68a2eced89a1c6c179a137ff356bda0072c7b91"},{"author":{"_account_id":38666,"name":"Patrick Pfurtscheller","display_name":"Patrick Pfurtscheller","email":"patrick@pfurtscheller.org","username":"PfurtschellerP"},"change_message_id":"26d4f35c9783a9e272babf1946440db4849741df","unresolved":false,"context_lines":[{"line_number":67,"context_line":"    that:"},{"line_number":68,"context_line":"      - compute_service_enabled.compute_services | map(attribute\u003d\u0027status\u0027) | unique | length \u003d\u003d 1"},{"line_number":69,"context_line":"      - compute_service_enabled.compute_services[0].status \u003d\u003d \"enabled\""},{"line_number":70,"context_line":"      - compute_service_enabled.changed"}],"source_content_type":"text/x-yaml","patch_set":3,"id":"e30763d6_445a8124","line":70,"in_reply_to":"3bb4e0e8_26a10a4e","updated":"2026-05-20 20:43:04.000000000","message":"Done","commit_id":"c68a2eced89a1c6c179a137ff356bda0072c7b91"}],"plugins/modules/compute_service.py":[{"author":{"_account_id":22629,"name":"Michal Nasiadka","email":"mnasiadka@gmail.com","username":"mnasiadka"},"change_message_id":"9febf5d99c3c224a7ba3aa4a2f852c7af21cf6b5","unresolved":true,"context_lines":[{"line_number":22,"context_line":"      - Binary name of the service (e.g. C(nova-compute))."},{"line_number":23,"context_line":"    type: str"},{"line_number":24,"context_line":"    required: true"},{"line_number":25,"context_line":"  status:"},{"line_number":26,"context_line":"    description:"},{"line_number":27,"context_line":"      - Desired status of the service."},{"line_number":28,"context_line":"    type: str"},{"line_number":29,"context_line":"    choices: [\u0027enabled\u0027, \u0027disabled\u0027]"},{"line_number":30,"context_line":"  disabled_reason:"},{"line_number":31,"context_line":"    description:"},{"line_number":32,"context_line":"      - Reason for disabling the service. Should be used with state `disabled`."}],"source_content_type":"text/x-python","patch_set":2,"id":"3a711677_52fca55a","line":29,"range":{"start_line":25,"start_character":0,"end_line":29,"end_character":36},"updated":"2025-12-18 06:56:27.000000000","message":"```suggestion\n  status:\n    description:\n      - Desired status of the service.\n    type: str\n    choices: [\u0027enabled\u0027, \u0027disabled\u0027]\n    default: enabled\n```","commit_id":"13294ff41ccd187a5ccfc86a9e3c171c844c0196"},{"author":{"_account_id":38666,"name":"Patrick Pfurtscheller","display_name":"Patrick Pfurtscheller","email":"patrick@pfurtscheller.org","username":"PfurtschellerP"},"change_message_id":"23526d04a720c16fd82a07c0f18f5c0509d9bc5b","unresolved":false,"context_lines":[{"line_number":22,"context_line":"      - Binary name of the service (e.g. C(nova-compute))."},{"line_number":23,"context_line":"    type: str"},{"line_number":24,"context_line":"    required: true"},{"line_number":25,"context_line":"  status:"},{"line_number":26,"context_line":"    description:"},{"line_number":27,"context_line":"      - Desired status of the service."},{"line_number":28,"context_line":"    type: str"},{"line_number":29,"context_line":"    choices: [\u0027enabled\u0027, \u0027disabled\u0027]"},{"line_number":30,"context_line":"  disabled_reason:"},{"line_number":31,"context_line":"    description:"},{"line_number":32,"context_line":"      - Reason for disabling the service. Should be used with state `disabled`."}],"source_content_type":"text/x-python","patch_set":2,"id":"a0b5a373_cd0fa4d1","line":29,"range":{"start_line":25,"start_character":0,"end_line":29,"end_character":36},"in_reply_to":"3a711677_52fca55a","updated":"2025-12-22 21:50:40.000000000","message":"Done","commit_id":"13294ff41ccd187a5ccfc86a9e3c171c844c0196"},{"author":{"_account_id":22629,"name":"Michal Nasiadka","email":"mnasiadka@gmail.com","username":"mnasiadka"},"change_message_id":"9febf5d99c3c224a7ba3aa4a2f852c7af21cf6b5","unresolved":true,"context_lines":[{"line_number":95,"context_line":""},{"line_number":96,"context_line":"class ComputeServiceModule(OpenStackModule):"},{"line_number":97,"context_line":"    argument_spec \u003d dict("},{"line_number":98,"context_line":"        host\u003ddict(),"},{"line_number":99,"context_line":"        binary\u003ddict(),"},{"line_number":100,"context_line":"        status\u003ddict(default\u003d\"enabled\", choices\u003d[\u0027enabled\u0027, \u0027disabled\u0027]),"},{"line_number":101,"context_line":"        disabled_reason\u003ddict(default\u003dNone)"}],"source_content_type":"text/x-python","patch_set":2,"id":"99ea6a63_2cbdb3df","line":98,"updated":"2025-12-18 06:56:27.000000000","message":"```suggestion\n        host\u003ddict(required\u003dTrue),\n```","commit_id":"13294ff41ccd187a5ccfc86a9e3c171c844c0196"},{"author":{"_account_id":38666,"name":"Patrick Pfurtscheller","display_name":"Patrick Pfurtscheller","email":"patrick@pfurtscheller.org","username":"PfurtschellerP"},"change_message_id":"23526d04a720c16fd82a07c0f18f5c0509d9bc5b","unresolved":false,"context_lines":[{"line_number":95,"context_line":""},{"line_number":96,"context_line":"class ComputeServiceModule(OpenStackModule):"},{"line_number":97,"context_line":"    argument_spec \u003d dict("},{"line_number":98,"context_line":"        host\u003ddict(),"},{"line_number":99,"context_line":"        binary\u003ddict(),"},{"line_number":100,"context_line":"        status\u003ddict(default\u003d\"enabled\", choices\u003d[\u0027enabled\u0027, \u0027disabled\u0027]),"},{"line_number":101,"context_line":"        disabled_reason\u003ddict(default\u003dNone)"}],"source_content_type":"text/x-python","patch_set":2,"id":"69614e10_7a1bc7dc","line":98,"in_reply_to":"99ea6a63_2cbdb3df","updated":"2025-12-22 21:50:40.000000000","message":"Done","commit_id":"13294ff41ccd187a5ccfc86a9e3c171c844c0196"},{"author":{"_account_id":22629,"name":"Michal Nasiadka","email":"mnasiadka@gmail.com","username":"mnasiadka"},"change_message_id":"9febf5d99c3c224a7ba3aa4a2f852c7af21cf6b5","unresolved":true,"context_lines":[{"line_number":96,"context_line":"class ComputeServiceModule(OpenStackModule):"},{"line_number":97,"context_line":"    argument_spec \u003d dict("},{"line_number":98,"context_line":"        host\u003ddict(),"},{"line_number":99,"context_line":"        binary\u003ddict(),"},{"line_number":100,"context_line":"        status\u003ddict(default\u003d\"enabled\", choices\u003d[\u0027enabled\u0027, \u0027disabled\u0027]),"},{"line_number":101,"context_line":"        disabled_reason\u003ddict(default\u003dNone)"},{"line_number":102,"context_line":"    )"}],"source_content_type":"text/x-python","patch_set":2,"id":"8591cc01_d8f6d096","line":99,"updated":"2025-12-18 06:56:27.000000000","message":"```suggestion\n        binary\u003ddict(required\u003dTrue),\n```","commit_id":"13294ff41ccd187a5ccfc86a9e3c171c844c0196"},{"author":{"_account_id":38666,"name":"Patrick Pfurtscheller","display_name":"Patrick Pfurtscheller","email":"patrick@pfurtscheller.org","username":"PfurtschellerP"},"change_message_id":"23526d04a720c16fd82a07c0f18f5c0509d9bc5b","unresolved":false,"context_lines":[{"line_number":96,"context_line":"class ComputeServiceModule(OpenStackModule):"},{"line_number":97,"context_line":"    argument_spec \u003d dict("},{"line_number":98,"context_line":"        host\u003ddict(),"},{"line_number":99,"context_line":"        binary\u003ddict(),"},{"line_number":100,"context_line":"        status\u003ddict(default\u003d\"enabled\", choices\u003d[\u0027enabled\u0027, \u0027disabled\u0027]),"},{"line_number":101,"context_line":"        disabled_reason\u003ddict(default\u003dNone)"},{"line_number":102,"context_line":"    )"}],"source_content_type":"text/x-python","patch_set":2,"id":"e842f56e_fbb1e2f1","line":99,"in_reply_to":"8591cc01_d8f6d096","updated":"2025-12-22 21:50:40.000000000","message":"Done","commit_id":"13294ff41ccd187a5ccfc86a9e3c171c844c0196"}]}
