)]}'
{"/PATCHSET_LEVEL":[{"author":{"_account_id":32962,"name":"Jakob Meng","email":"code@jakobmeng.de","username":"jakobmeng@web.de"},"change_message_id":"08ecceb50615062a4f3978719ec5e3136d8e6072","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":3,"id":"bc314b87_5922b323","updated":"2022-11-17 09:10:36.000000000","message":"Very nice, Rafael 👍","commit_id":"3bd1235e4a950a4dcde18b957a4d6c36157087a2"}],"ci/roles/server_group/tasks/main.yml":[{"author":{"_account_id":32962,"name":"Jakob Meng","email":"code@jakobmeng.de","username":"jakobmeng@web.de"},"change_message_id":"08ecceb50615062a4f3978719ec5e3136d8e6072","unresolved":true,"context_lines":[{"line_number":70,"context_line":"    cloud: \"{{ cloud }}\""},{"line_number":71,"context_line":"    name: ansible_group"},{"line_number":72,"context_line":"    state: absent"},{"line_number":73,"context_line":"  register: server_group"}],"source_content_type":"text/x-yaml","patch_set":3,"id":"0bd9be82_2968797b","line":73,"updated":"2022-11-17 09:10:36.000000000","message":"nit: drop","commit_id":"3bd1235e4a950a4dcde18b957a4d6c36157087a2"},{"author":{"_account_id":34208,"name":"Rafael Castillo","email":"rcastill@redhat.com","username":"rcastill"},"change_message_id":"afafa05100ee98e8a2e4d7a31b291273f3c34196","unresolved":false,"context_lines":[{"line_number":70,"context_line":"    cloud: \"{{ cloud }}\""},{"line_number":71,"context_line":"    name: ansible_group"},{"line_number":72,"context_line":"    state: absent"},{"line_number":73,"context_line":"  register: server_group"}],"source_content_type":"text/x-yaml","patch_set":3,"id":"19e1bf6e_32b65393","line":73,"in_reply_to":"0bd9be82_2968797b","updated":"2022-11-17 10:47:37.000000000","message":"Done","commit_id":"3bd1235e4a950a4dcde18b957a4d6c36157087a2"}],"plugins/modules/server_group.py":[{"author":{"_account_id":32962,"name":"Jakob Meng","email":"code@jakobmeng.de","username":"jakobmeng@web.de"},"change_message_id":"08ecceb50615062a4f3978719ec5e3136d8e6072","unresolved":true,"context_lines":[{"line_number":14,"context_line":"options:"},{"line_number":15,"context_line":"   state:"},{"line_number":16,"context_line":"     description:"},{"line_number":17,"context_line":"        - Indicate desired state of the resource. When I(state) is \u0027present\u0027,"},{"line_number":18,"context_line":"          then I(policies) is required."},{"line_number":19,"context_line":"     choices: [\u0027present\u0027, \u0027absent\u0027]"},{"line_number":20,"context_line":"     required: false"}],"source_content_type":"text/x-python","patch_set":3,"id":"24d224e8_6a8e0958","line":17,"updated":"2022-11-17 09:10:36.000000000","message":"C(present)","commit_id":"3bd1235e4a950a4dcde18b957a4d6c36157087a2"},{"author":{"_account_id":34208,"name":"Rafael Castillo","email":"rcastill@redhat.com","username":"rcastill"},"change_message_id":"afafa05100ee98e8a2e4d7a31b291273f3c34196","unresolved":false,"context_lines":[{"line_number":14,"context_line":"options:"},{"line_number":15,"context_line":"   state:"},{"line_number":16,"context_line":"     description:"},{"line_number":17,"context_line":"        - Indicate desired state of the resource. When I(state) is \u0027present\u0027,"},{"line_number":18,"context_line":"          then I(policies) is required."},{"line_number":19,"context_line":"     choices: [\u0027present\u0027, \u0027absent\u0027]"},{"line_number":20,"context_line":"     required: false"}],"source_content_type":"text/x-python","patch_set":3,"id":"21498ac1_0324c7eb","line":17,"in_reply_to":"24d224e8_6a8e0958","updated":"2022-11-17 10:47:37.000000000","message":"Done","commit_id":"3bd1235e4a950a4dcde18b957a4d6c36157087a2"},{"author":{"_account_id":32962,"name":"Jakob Meng","email":"code@jakobmeng.de","username":"jakobmeng@web.de"},"change_message_id":"08ecceb50615062a4f3978719ec5e3136d8e6072","unresolved":true,"context_lines":[{"line_number":15,"context_line":"   state:"},{"line_number":16,"context_line":"     description:"},{"line_number":17,"context_line":"        - Indicate desired state of the resource. When I(state) is \u0027present\u0027,"},{"line_number":18,"context_line":"          then I(policies) is required."},{"line_number":19,"context_line":"     choices: [\u0027present\u0027, \u0027absent\u0027]"},{"line_number":20,"context_line":"     required: false"},{"line_number":21,"context_line":"     default: present"}],"source_content_type":"text/x-python","patch_set":3,"id":"9c0ed57e_dce3a80f","line":18,"updated":"2022-11-17 09:10:36.000000000","message":"I(policy)","commit_id":"3bd1235e4a950a4dcde18b957a4d6c36157087a2"},{"author":{"_account_id":34208,"name":"Rafael Castillo","email":"rcastill@redhat.com","username":"rcastill"},"change_message_id":"afafa05100ee98e8a2e4d7a31b291273f3c34196","unresolved":false,"context_lines":[{"line_number":15,"context_line":"   state:"},{"line_number":16,"context_line":"     description:"},{"line_number":17,"context_line":"        - Indicate desired state of the resource. When I(state) is \u0027present\u0027,"},{"line_number":18,"context_line":"          then I(policies) is required."},{"line_number":19,"context_line":"     choices: [\u0027present\u0027, \u0027absent\u0027]"},{"line_number":20,"context_line":"     required: false"},{"line_number":21,"context_line":"     default: present"}],"source_content_type":"text/x-python","patch_set":3,"id":"36a6f65f_0d9ccef9","line":18,"in_reply_to":"9c0ed57e_dce3a80f","updated":"2022-11-17 10:47:37.000000000","message":"Done","commit_id":"3bd1235e4a950a4dcde18b957a4d6c36157087a2"},{"author":{"_account_id":32962,"name":"Jakob Meng","email":"code@jakobmeng.de","username":"jakobmeng@web.de"},"change_message_id":"08ecceb50615062a4f3978719ec5e3136d8e6072","unresolved":true,"context_lines":[{"line_number":17,"context_line":"        - Indicate desired state of the resource. When I(state) is \u0027present\u0027,"},{"line_number":18,"context_line":"          then I(policies) is required."},{"line_number":19,"context_line":"     choices: [\u0027present\u0027, \u0027absent\u0027]"},{"line_number":20,"context_line":"     required: false"},{"line_number":21,"context_line":"     default: present"},{"line_number":22,"context_line":"     type: str"},{"line_number":23,"context_line":"   name:"}],"source_content_type":"text/x-python","patch_set":3,"id":"2981ba68_e4cad376","line":20,"updated":"2022-11-17 09:10:36.000000000","message":"\u0027required: false\u0027 is the default, so drop here and below?","commit_id":"3bd1235e4a950a4dcde18b957a4d6c36157087a2"},{"author":{"_account_id":34208,"name":"Rafael Castillo","email":"rcastill@redhat.com","username":"rcastill"},"change_message_id":"afafa05100ee98e8a2e4d7a31b291273f3c34196","unresolved":false,"context_lines":[{"line_number":17,"context_line":"        - Indicate desired state of the resource. When I(state) is \u0027present\u0027,"},{"line_number":18,"context_line":"          then I(policies) is required."},{"line_number":19,"context_line":"     choices: [\u0027present\u0027, \u0027absent\u0027]"},{"line_number":20,"context_line":"     required: false"},{"line_number":21,"context_line":"     default: present"},{"line_number":22,"context_line":"     type: str"},{"line_number":23,"context_line":"   name:"}],"source_content_type":"text/x-python","patch_set":3,"id":"f27e8c61_d8072744","line":20,"in_reply_to":"2981ba68_e4cad376","updated":"2022-11-17 10:47:37.000000000","message":"Done","commit_id":"3bd1235e4a950a4dcde18b957a4d6c36157087a2"},{"author":{"_account_id":32962,"name":"Jakob Meng","email":"code@jakobmeng.de","username":"jakobmeng@web.de"},"change_message_id":"08ecceb50615062a4f3978719ec5e3136d8e6072","unresolved":true,"context_lines":[{"line_number":116,"context_line":"class ServerGroupModule(OpenStackModule):"},{"line_number":117,"context_line":"    argument_spec \u003d dict("},{"line_number":118,"context_line":"        name\u003ddict(required\u003dTrue),"},{"line_number":119,"context_line":"        policy\u003ddict(choices\u003d[\u0027anti-affinity\u0027, \u0027affinity\u0027, \u0027soft-anti-affinity\u0027,"},{"line_number":120,"context_line":"                             \u0027soft-affinity\u0027]),"},{"line_number":121,"context_line":"        state\u003ddict(default\u003d\u0027present\u0027, choices\u003d[\u0027absent\u0027, \u0027present\u0027]),"},{"line_number":122,"context_line":"        rules\u003ddict(type\u003d\u0027dict\u0027)"}],"source_content_type":"text/x-python","patch_set":3,"id":"81a2388d_7f4f929a","line":119,"updated":"2022-11-17 09:10:36.000000000","message":"Is this what we discussed about old api names?\n\nPlease add policies as an alias because maintaining backward compat is really easy for us here, no need to break users.","commit_id":"3bd1235e4a950a4dcde18b957a4d6c36157087a2"},{"author":{"_account_id":34208,"name":"Rafael Castillo","email":"rcastill@redhat.com","username":"rcastill"},"change_message_id":"afafa05100ee98e8a2e4d7a31b291273f3c34196","unresolved":true,"context_lines":[{"line_number":116,"context_line":"class ServerGroupModule(OpenStackModule):"},{"line_number":117,"context_line":"    argument_spec \u003d dict("},{"line_number":118,"context_line":"        name\u003ddict(required\u003dTrue),"},{"line_number":119,"context_line":"        policy\u003ddict(choices\u003d[\u0027anti-affinity\u0027, \u0027affinity\u0027, \u0027soft-anti-affinity\u0027,"},{"line_number":120,"context_line":"                             \u0027soft-affinity\u0027]),"},{"line_number":121,"context_line":"        state\u003ddict(default\u003d\u0027present\u0027, choices\u003d[\u0027absent\u0027, \u0027present\u0027]),"},{"line_number":122,"context_line":"        rules\u003ddict(type\u003d\u0027dict\u0027)"}],"source_content_type":"text/x-python","patch_set":3,"id":"e980496f_07dc11b9","line":119,"in_reply_to":"81a2388d_7f4f929a","updated":"2022-11-17 10:47:37.000000000","message":"policy is a string while policies was a list. The only way to avoid breakage was basically to keep them both separately and handle the special case in code. I decided to just drop policies since it\u0027s an ancient property and it kept the implementation small.","commit_id":"3bd1235e4a950a4dcde18b957a4d6c36157087a2"},{"author":{"_account_id":32962,"name":"Jakob Meng","email":"code@jakobmeng.de","username":"jakobmeng@web.de"},"change_message_id":"f8759a54897d8ae1572652b9f4e3d581e3d2484c","unresolved":true,"context_lines":[{"line_number":116,"context_line":"class ServerGroupModule(OpenStackModule):"},{"line_number":117,"context_line":"    argument_spec \u003d dict("},{"line_number":118,"context_line":"        name\u003ddict(required\u003dTrue),"},{"line_number":119,"context_line":"        policy\u003ddict(choices\u003d[\u0027anti-affinity\u0027, \u0027affinity\u0027, \u0027soft-anti-affinity\u0027,"},{"line_number":120,"context_line":"                             \u0027soft-affinity\u0027]),"},{"line_number":121,"context_line":"        state\u003ddict(default\u003d\u0027present\u0027, choices\u003d[\u0027absent\u0027, \u0027present\u0027]),"},{"line_number":122,"context_line":"        rules\u003ddict(type\u003d\u0027dict\u0027)"}],"source_content_type":"text/x-python","patch_set":3,"id":"fef01963_b95a62f7","line":119,"in_reply_to":"b5be8261_99b39320","updated":"2022-11-17 11:19:13.000000000","message":"E.g. \n\npolicies \u003c Available until version 2.63 \u003c is Rocky and earlier\nhttps://docs.openstack.org/nova/latest/reference/api-microversion-history.html\nhttps://docs.openstack.org/api-ref/compute/#create-server-group","commit_id":"3bd1235e4a950a4dcde18b957a4d6c36157087a2"},{"author":{"_account_id":32962,"name":"Jakob Meng","email":"code@jakobmeng.de","username":"jakobmeng@web.de"},"change_message_id":"7dc893fbb4719340417ba7bfde8b011b42511745","unresolved":true,"context_lines":[{"line_number":116,"context_line":"class ServerGroupModule(OpenStackModule):"},{"line_number":117,"context_line":"    argument_spec \u003d dict("},{"line_number":118,"context_line":"        name\u003ddict(required\u003dTrue),"},{"line_number":119,"context_line":"        policy\u003ddict(choices\u003d[\u0027anti-affinity\u0027, \u0027affinity\u0027, \u0027soft-anti-affinity\u0027,"},{"line_number":120,"context_line":"                             \u0027soft-affinity\u0027]),"},{"line_number":121,"context_line":"        state\u003ddict(default\u003d\u0027present\u0027, choices\u003d[\u0027absent\u0027, \u0027present\u0027]),"},{"line_number":122,"context_line":"        rules\u003ddict(type\u003d\u0027dict\u0027)"}],"source_content_type":"text/x-python","patch_set":3,"id":"b5be8261_99b39320","line":119,"in_reply_to":"e980496f_07dc11b9","updated":"2022-11-17 11:17:12.000000000","message":"Ah right, I missed the conflicting types. As this has not worked for a looong time, I am okay with dropping policies and replacing it with this new parameter policy.\n\nBut please explain in commit msg what and why you did it, e.g. best with links to compute api doc and naming the OpenStack release when policies got dropped. Basicly the links and docs we shared when talking about this.","commit_id":"3bd1235e4a950a4dcde18b957a4d6c36157087a2"},{"author":{"_account_id":32962,"name":"Jakob Meng","email":"code@jakobmeng.de","username":"jakobmeng@web.de"},"change_message_id":"16d78e15179540ae4e4fb5921dee25427df5aea4","unresolved":false,"context_lines":[{"line_number":116,"context_line":"class ServerGroupModule(OpenStackModule):"},{"line_number":117,"context_line":"    argument_spec \u003d dict("},{"line_number":118,"context_line":"        name\u003ddict(required\u003dTrue),"},{"line_number":119,"context_line":"        policy\u003ddict(choices\u003d[\u0027anti-affinity\u0027, \u0027affinity\u0027, \u0027soft-anti-affinity\u0027,"},{"line_number":120,"context_line":"                             \u0027soft-affinity\u0027]),"},{"line_number":121,"context_line":"        state\u003ddict(default\u003d\u0027present\u0027, choices\u003d[\u0027absent\u0027, \u0027present\u0027]),"},{"line_number":122,"context_line":"        rules\u003ddict(type\u003d\u0027dict\u0027)"}],"source_content_type":"text/x-python","patch_set":3,"id":"24dec37a_0e5b8363","line":119,"in_reply_to":"fef01963_b95a62f7","updated":"2022-11-17 12:34:25.000000000","message":"Thank you!","commit_id":"3bd1235e4a950a4dcde18b957a4d6c36157087a2"},{"author":{"_account_id":32962,"name":"Jakob Meng","email":"code@jakobmeng.de","username":"jakobmeng@web.de"},"change_message_id":"08ecceb50615062a4f3978719ec5e3136d8e6072","unresolved":true,"context_lines":[{"line_number":137,"context_line":""},{"line_number":138,"context_line":"        return False"},{"line_number":139,"context_line":""},{"line_number":140,"context_line":"    def _build_create_kwargs(self):"},{"line_number":141,"context_line":"        kwargs \u003d {k: self.params[k] for k in [\u0027name\u0027, \u0027policy\u0027, \u0027rules\u0027]"},{"line_number":142,"context_line":"                  if self.params[k] is not None}"},{"line_number":143,"context_line":"        return kwargs"}],"source_content_type":"text/x-python","patch_set":3,"id":"7bfe7786_f9e5a016","line":140,"updated":"2022-11-17 09:10:36.000000000","message":"nit: why adding a new function with 4 loc if it can be inlined with 2 loc?","commit_id":"3bd1235e4a950a4dcde18b957a4d6c36157087a2"},{"author":{"_account_id":34208,"name":"Rafael Castillo","email":"rcastill@redhat.com","username":"rcastill"},"change_message_id":"afafa05100ee98e8a2e4d7a31b291273f3c34196","unresolved":false,"context_lines":[{"line_number":137,"context_line":""},{"line_number":138,"context_line":"        return False"},{"line_number":139,"context_line":""},{"line_number":140,"context_line":"    def _build_create_kwargs(self):"},{"line_number":141,"context_line":"        kwargs \u003d {k: self.params[k] for k in [\u0027name\u0027, \u0027policy\u0027, \u0027rules\u0027]"},{"line_number":142,"context_line":"                  if self.params[k] is not None}"},{"line_number":143,"context_line":"        return kwargs"}],"source_content_type":"text/x-python","patch_set":3,"id":"c2d688e2_8382a6e7","line":140,"in_reply_to":"7bfe7786_f9e5a016","updated":"2022-11-17 10:47:37.000000000","message":"Done","commit_id":"3bd1235e4a950a4dcde18b957a4d6c36157087a2"}]}
