)]}'
{"/PATCHSET_LEVEL":[{"author":{"_account_id":34208,"name":"Rafael Castillo","email":"rcastill@redhat.com","username":"rcastill"},"change_message_id":"d4a7fda8ddecf09e808ca4e6337b94318f5d283d","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":4,"id":"65be4f74_780aafc0","updated":"2022-07-14 21:46:08.000000000","message":"Wow, great job. This reads much better now.","commit_id":"1327b851ae74c8d1e86c790d2502b4cabd57331a"},{"author":{"_account_id":32962,"name":"Jakob Meng","email":"code@jakobmeng.de","username":"jakobmeng@web.de"},"change_message_id":"40ed09696a366fc56a5f5c60ab9eaff2d9c25070","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":7,"id":"ea4797c7_308ace60","updated":"2022-07-22 07:12:42.000000000","message":"By definition untested code is broken.. and it was 🙈 The latest patchset fixes issues with the server update mechanism, adds integration tests for updates etc.","commit_id":"673ebbc9b0df20ae21705d9b1111d426d9fa3539"},{"author":{"_account_id":34208,"name":"Rafael Castillo","email":"rcastill@redhat.com","username":"rcastill"},"change_message_id":"6de1c8e52587f6df952f60f6b1f46b83fa9aef80","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":11,"id":"2966f94e_d59e285a","updated":"2022-07-26 21:02:09.000000000","message":"Great patch! A few small things.","commit_id":"f0da67e6f65cc9d6b9254ac5db1c19490f31f327"},{"author":{"_account_id":32962,"name":"Jakob Meng","email":"code@jakobmeng.de","username":"jakobmeng@web.de"},"change_message_id":"0eb44baaf5f5c631c042ae7684fd9c5b306b8ae9","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":15,"id":"06638026_2527344c","updated":"2022-07-28 13:41:00.000000000","message":"recheck POST_FAILURE, really Zuul? You can do better!","commit_id":"4ca375d99508b4378b826387d4c61d71fe0b40fb"},{"author":{"_account_id":27900,"name":"Artem Goncharov","email":"artem.goncharov@gmail.com","username":"gtema"},"change_message_id":"0eb72f680c42bd4f10e7757c447073eef2e72977","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":15,"id":"29c98d05_b8ce8619","in_reply_to":"06638026_2527344c","updated":"2022-07-28 13:45:58.000000000","message":"surprisingly I have now all of a sudden same on my Zuul installation. Moon is on the wrong place now","commit_id":"4ca375d99508b4378b826387d4c61d71fe0b40fb"}],"ci/roles/server/tasks/main.yml":[{"author":{"_account_id":34208,"name":"Rafael Castillo","email":"rcastill@redhat.com","username":"rcastill"},"change_message_id":"6de1c8e52587f6df952f60f6b1f46b83fa9aef80","unresolved":true,"context_lines":[{"line_number":52,"context_line":"    flavor: \"{{ flavor }}\""},{"line_number":53,"context_line":"    network: \"{{ server_network }}\""},{"line_number":54,"context_line":"    auto_ip: false"},{"line_number":55,"context_line":"    metadata: \"key1\u003dvalue1,key2\u003dvalue2\""},{"line_number":56,"context_line":"    wait: true"},{"line_number":57,"context_line":"  register: server"},{"line_number":58,"context_line":""}],"source_content_type":"text/x-yaml","patch_set":11,"id":"a319224e_eeb08551","line":55,"updated":"2022-07-26 21:02:09.000000000","message":"I can see in the logs that the metadata gets set. Can we get an assertion below?","commit_id":"f0da67e6f65cc9d6b9254ac5db1c19490f31f327"},{"author":{"_account_id":32962,"name":"Jakob Meng","email":"code@jakobmeng.de","username":"jakobmeng@web.de"},"change_message_id":"b4fb2a44e044af7957f8afff756601bfa5112bf1","unresolved":false,"context_lines":[{"line_number":52,"context_line":"    flavor: \"{{ flavor }}\""},{"line_number":53,"context_line":"    network: \"{{ server_network }}\""},{"line_number":54,"context_line":"    auto_ip: false"},{"line_number":55,"context_line":"    metadata: \"key1\u003dvalue1,key2\u003dvalue2\""},{"line_number":56,"context_line":"    wait: true"},{"line_number":57,"context_line":"  register: server"},{"line_number":58,"context_line":""}],"source_content_type":"text/x-yaml","patch_set":11,"id":"2b0565d2_ad018223","line":55,"in_reply_to":"a319224e_eeb08551","updated":"2022-07-27 10:15:15.000000000","message":"Oh, this server did not even have basic assertions. Added them.","commit_id":"f0da67e6f65cc9d6b9254ac5db1c19490f31f327"},{"author":{"_account_id":34208,"name":"Rafael Castillo","email":"rcastill@redhat.com","username":"rcastill"},"change_message_id":"6de1c8e52587f6df952f60f6b1f46b83fa9aef80","unresolved":true,"context_lines":[{"line_number":307,"context_line":"      - \"\u0027key1\u0027 not in server_updated.server.metadata\""},{"line_number":308,"context_line":"      - server_updated.server.metadata[\u0027key2\u0027] \u003d\u003d \u0027value2\u0027"},{"line_number":309,"context_line":"      - server_updated.server.metadata[\u0027key3\u0027] \u003d\u003d \u0027value3\u0027"},{"line_number":310,"context_line":"      - server_updated.server.addresses.keys()|sort \u003d\u003d [\u0027ansible_server_network\u0027,\u0027public\u0027]"},{"line_number":311,"context_line":"      - server_updated.server.addresses.ansible_server_network|length \u003d\u003d 2"},{"line_number":312,"context_line":"      - server_updated.server.addresses.public|length \u003e 0"},{"line_number":313,"context_line":"      - port.port.fixed_ips[0].ip_address in"}],"source_content_type":"text/x-yaml","patch_set":11,"id":"485e5015_baadd3cb","line":310,"updated":"2022-07-26 21:02:09.000000000","message":"should use `server_network` instead of hardcoding","commit_id":"f0da67e6f65cc9d6b9254ac5db1c19490f31f327"},{"author":{"_account_id":32962,"name":"Jakob Meng","email":"code@jakobmeng.de","username":"jakobmeng@web.de"},"change_message_id":"b4fb2a44e044af7957f8afff756601bfa5112bf1","unresolved":false,"context_lines":[{"line_number":307,"context_line":"      - \"\u0027key1\u0027 not in server_updated.server.metadata\""},{"line_number":308,"context_line":"      - server_updated.server.metadata[\u0027key2\u0027] \u003d\u003d \u0027value2\u0027"},{"line_number":309,"context_line":"      - server_updated.server.metadata[\u0027key3\u0027] \u003d\u003d \u0027value3\u0027"},{"line_number":310,"context_line":"      - server_updated.server.addresses.keys()|sort \u003d\u003d [\u0027ansible_server_network\u0027,\u0027public\u0027]"},{"line_number":311,"context_line":"      - server_updated.server.addresses.ansible_server_network|length \u003d\u003d 2"},{"line_number":312,"context_line":"      - server_updated.server.addresses.public|length \u003e 0"},{"line_number":313,"context_line":"      - port.port.fixed_ips[0].ip_address in"}],"source_content_type":"text/x-yaml","patch_set":11,"id":"d1f4b639_1f5e60c9","line":310,"in_reply_to":"485e5015_baadd3cb","updated":"2022-07-27 10:15:15.000000000","message":"Good catch! Fixed other occurrences, too 😊","commit_id":"f0da67e6f65cc9d6b9254ac5db1c19490f31f327"}],"plugins/modules/server.py":[{"author":{"_account_id":32458,"name":"Ananya","display_name":"Ananya Banerjee","email":"anbanerj@redhat.com","username":"frenzyfriday"},"change_message_id":"9e5fa165e5264e1db5a05f31e7354ca98e3f08ae","unresolved":true,"context_lines":[{"line_number":832,"context_line":"        # self.conn.get_server is required for server.addresses and"},{"line_number":833,"context_line":"        # server.interface_ip which self.conn.compute.find_server"},{"line_number":834,"context_line":"        # does not return"},{"line_number":835,"context_line":"        server \u003d self.conn.get_server(self.params[\u0027name\u0027])"},{"line_number":836,"context_line":""},{"line_number":837,"context_line":"        if self.ansible.check_mode:"},{"line_number":838,"context_line":"            self.exit_json(changed\u003dself._will_change(state, server))"}],"source_content_type":"text/x-python","patch_set":6,"id":"c58a730b_00510935","line":835,"updated":"2022-07-21 11:52:25.000000000","message":"Should we not use find here? \nget will raise an exception if the server is not found. In case we have state\u003d\u003dabsent and name\u003d\u003cnot_existing_server\u003e do we want to raise exception? If it raises an exception line #870 will never be used (because server will never be None)","commit_id":"3333d146366e89a862bee25a8b46f3cca10b0693"},{"author":{"_account_id":32458,"name":"Ananya","display_name":"Ananya Banerjee","email":"anbanerj@redhat.com","username":"frenzyfriday"},"change_message_id":"8c9d9926c752be4608aa52ed9de604a269544a29","unresolved":false,"context_lines":[{"line_number":832,"context_line":"        # self.conn.get_server is required for server.addresses and"},{"line_number":833,"context_line":"        # server.interface_ip which self.conn.compute.find_server"},{"line_number":834,"context_line":"        # does not return"},{"line_number":835,"context_line":"        server \u003d self.conn.get_server(self.params[\u0027name\u0027])"},{"line_number":836,"context_line":""},{"line_number":837,"context_line":"        if self.ansible.check_mode:"},{"line_number":838,"context_line":"            self.exit_json(changed\u003dself._will_change(state, server))"}],"source_content_type":"text/x-python","patch_set":6,"id":"e155acb9_228dd458","line":835,"in_reply_to":"689b5c98_88cf8b33","updated":"2022-07-21 12:15:20.000000000","message":"Ah, it is the cloud layers get_server. Sorry, I thought it was the proxy layer method :D. Thanks!","commit_id":"3333d146366e89a862bee25a8b46f3cca10b0693"},{"author":{"_account_id":32962,"name":"Jakob Meng","email":"code@jakobmeng.de","username":"jakobmeng@web.de"},"change_message_id":"f0d2497230d3977950be3110e0168a60720754a0","unresolved":false,"context_lines":[{"line_number":832,"context_line":"        # self.conn.get_server is required for server.addresses and"},{"line_number":833,"context_line":"        # server.interface_ip which self.conn.compute.find_server"},{"line_number":834,"context_line":"        # does not return"},{"line_number":835,"context_line":"        server \u003d self.conn.get_server(self.params[\u0027name\u0027])"},{"line_number":836,"context_line":""},{"line_number":837,"context_line":"        if self.ansible.check_mode:"},{"line_number":838,"context_line":"            self.exit_json(changed\u003dself._will_change(state, server))"}],"source_content_type":"text/x-python","patch_set":6,"id":"689b5c98_88cf8b33","line":835,"in_reply_to":"c58a730b_00510935","updated":"2022-07-21 11:59:09.000000000","message":"We cannot use find_server because it does not return all fields we require, e.g. server.interface_ip and server.addresses are missing.\n\nIn case state\u003d\u003dabsent and user gives a server that does not exist, then we do not have to do anything. We do not want to raise an exception here because everything is as expected: The user requested that a server with the given name does not exist and it does not exist 😊","commit_id":"3333d146366e89a862bee25a8b46f3cca10b0693"},{"author":{"_account_id":10969,"name":"Shnaidman Sagi (Sergey)","display_name":"Shnaidman Sagi","email":"sshnaidm@redhat.com","username":"sergsh"},"change_message_id":"a201b8c9fb2fe068fcf0ccd49fdd1f3f3f80245b","unresolved":true,"context_lines":[{"line_number":97,"context_line":"        - Required when I(boot_from_volume\u003dtrue)."},{"line_number":98,"context_line":"        - This server attribute cannot be updated."},{"line_number":99,"context_line":"      type: str"},{"line_number":100,"context_line":"    image_exclude:"},{"line_number":101,"context_line":"      description:"},{"line_number":102,"context_line":"        - Text to use to filter image names, for the case, such as HP, where"},{"line_number":103,"context_line":"          there are multiple image names matching the common identifying"},{"line_number":104,"context_line":"          portions. image_exclude is a negative match filter - it is text that"},{"line_number":105,"context_line":"          may not exist in the image name."},{"line_number":106,"context_line":"        - This server attribute cannot be updated."},{"line_number":107,"context_line":"      type: str"},{"line_number":108,"context_line":"      default: \"(deprecated)\""},{"line_number":109,"context_line":"    key_name:"},{"line_number":110,"context_line":"      description:"},{"line_number":111,"context_line":"        - The key pair name to be used when creating a instance."}],"source_content_type":"text/x-python","patch_set":9,"id":"f4460637_8c29be94","line":108,"range":{"start_line":100,"start_character":0,"end_line":108,"end_character":29},"updated":"2022-07-25 21:21:04.000000000","message":"should we keep it if it was deprecated?","commit_id":"c3a4ca5fb1d71ad33e23c496ca48efab781f9be6"},{"author":{"_account_id":10969,"name":"Shnaidman Sagi (Sergey)","display_name":"Shnaidman Sagi","email":"sshnaidm@redhat.com","username":"sergsh"},"change_message_id":"92d139bd056eb0e03625f7363742591df5f6f78b","unresolved":false,"context_lines":[{"line_number":97,"context_line":"        - Required when I(boot_from_volume\u003dtrue)."},{"line_number":98,"context_line":"        - This server attribute cannot be updated."},{"line_number":99,"context_line":"      type: str"},{"line_number":100,"context_line":"    image_exclude:"},{"line_number":101,"context_line":"      description:"},{"line_number":102,"context_line":"        - Text to use to filter image names, for the case, such as HP, where"},{"line_number":103,"context_line":"          there are multiple image names matching the common identifying"},{"line_number":104,"context_line":"          portions. image_exclude is a negative match filter - it is text that"},{"line_number":105,"context_line":"          may not exist in the image name."},{"line_number":106,"context_line":"        - This server attribute cannot be updated."},{"line_number":107,"context_line":"      type: str"},{"line_number":108,"context_line":"      default: \"(deprecated)\""},{"line_number":109,"context_line":"    key_name:"},{"line_number":110,"context_line":"      description:"},{"line_number":111,"context_line":"        - The key pair name to be used when creating a instance."}],"source_content_type":"text/x-python","patch_set":9,"id":"07d7d799_7e09fc36","line":108,"range":{"start_line":100,"start_character":0,"end_line":108,"end_character":29},"in_reply_to":"523e458f_be24ee62","updated":"2022-07-26 13:33:06.000000000","message":"Oh I see, very confusing indeed.","commit_id":"c3a4ca5fb1d71ad33e23c496ca48efab781f9be6"},{"author":{"_account_id":32962,"name":"Jakob Meng","email":"code@jakobmeng.de","username":"jakobmeng@web.de"},"change_message_id":"167891ec115d1f91cebc65fa13c628ee0a346acd","unresolved":false,"context_lines":[{"line_number":97,"context_line":"        - Required when I(boot_from_volume\u003dtrue)."},{"line_number":98,"context_line":"        - This server attribute cannot be updated."},{"line_number":99,"context_line":"      type: str"},{"line_number":100,"context_line":"    image_exclude:"},{"line_number":101,"context_line":"      description:"},{"line_number":102,"context_line":"        - Text to use to filter image names, for the case, such as HP, where"},{"line_number":103,"context_line":"          there are multiple image names matching the common identifying"},{"line_number":104,"context_line":"          portions. image_exclude is a negative match filter - it is text that"},{"line_number":105,"context_line":"          may not exist in the image name."},{"line_number":106,"context_line":"        - This server attribute cannot be updated."},{"line_number":107,"context_line":"      type: str"},{"line_number":108,"context_line":"      default: \"(deprecated)\""},{"line_number":109,"context_line":"    key_name:"},{"line_number":110,"context_line":"      description:"},{"line_number":111,"context_line":"        - The key pair name to be used when creating a instance."}],"source_content_type":"text/x-python","patch_set":9,"id":"523e458f_be24ee62","line":108,"range":{"start_line":100,"start_character":0,"end_line":108,"end_character":29},"in_reply_to":"f4460637_8c29be94","updated":"2022-07-26 07:27:02.000000000","message":"I was confused by this, too. But \"(deprecated)\" does not mean this attribute is deprecated, it means that no images are included which have \"(deprecated)\" in its image name.","commit_id":"c3a4ca5fb1d71ad33e23c496ca48efab781f9be6"},{"author":{"_account_id":10969,"name":"Shnaidman Sagi (Sergey)","display_name":"Shnaidman Sagi","email":"sshnaidm@redhat.com","username":"sergsh"},"change_message_id":"a201b8c9fb2fe068fcf0ccd49fdd1f3f3f80245b","unresolved":true,"context_lines":[{"line_number":790,"context_line":"        config_drive\u003ddict(default\u003dFalse, type\u003d\u0027bool\u0027),"},{"line_number":791,"context_line":"        delete_ips\u003ddict(default\u003dFalse, type\u003d\u0027bool\u0027, aliases\u003d[\u0027delete_fip\u0027]),"},{"line_number":792,"context_line":"        description\u003ddict(type\u003d\u0027str\u0027),"},{"line_number":793,"context_line":"        flavor\u003ddict(),"},{"line_number":794,"context_line":"        flavor_include\u003ddict(),"},{"line_number":795,"context_line":"        flavor_ram\u003ddict(type\u003d\u0027int\u0027),"},{"line_number":796,"context_line":"        floating_ip_pools\u003ddict(type\u003d\u0027list\u0027, elements\u003d\u0027str\u0027),"}],"source_content_type":"text/x-python","patch_set":9,"id":"5834f21b_d174471f","line":793,"range":{"start_line":793,"start_character":19,"end_line":793,"end_character":21},"updated":"2022-07-25 21:21:04.000000000","message":"type\u003d\u0027str\u0027","commit_id":"c3a4ca5fb1d71ad33e23c496ca48efab781f9be6"},{"author":{"_account_id":10969,"name":"Shnaidman Sagi (Sergey)","display_name":"Shnaidman Sagi","email":"sshnaidm@redhat.com","username":"sergsh"},"change_message_id":"92d139bd056eb0e03625f7363742591df5f6f78b","unresolved":true,"context_lines":[{"line_number":790,"context_line":"        config_drive\u003ddict(default\u003dFalse, type\u003d\u0027bool\u0027),"},{"line_number":791,"context_line":"        delete_ips\u003ddict(default\u003dFalse, type\u003d\u0027bool\u0027, aliases\u003d[\u0027delete_fip\u0027]),"},{"line_number":792,"context_line":"        description\u003ddict(type\u003d\u0027str\u0027),"},{"line_number":793,"context_line":"        flavor\u003ddict(),"},{"line_number":794,"context_line":"        flavor_include\u003ddict(),"},{"line_number":795,"context_line":"        flavor_ram\u003ddict(type\u003d\u0027int\u0027),"},{"line_number":796,"context_line":"        floating_ip_pools\u003ddict(type\u003d\u0027list\u0027, elements\u003d\u0027str\u0027),"}],"source_content_type":"text/x-python","patch_set":9,"id":"e543de32_3cebfc6c","line":793,"range":{"start_line":793,"start_character":19,"end_line":793,"end_character":21},"in_reply_to":"4926eef9_1ff9d0b4","updated":"2022-07-26 13:33:06.000000000","message":"Although it appears in other arguments, let\u0027s be consistent.","commit_id":"c3a4ca5fb1d71ad33e23c496ca48efab781f9be6"},{"author":{"_account_id":32962,"name":"Jakob Meng","email":"code@jakobmeng.de","username":"jakobmeng@web.de"},"change_message_id":"167891ec115d1f91cebc65fa13c628ee0a346acd","unresolved":false,"context_lines":[{"line_number":790,"context_line":"        config_drive\u003ddict(default\u003dFalse, type\u003d\u0027bool\u0027),"},{"line_number":791,"context_line":"        delete_ips\u003ddict(default\u003dFalse, type\u003d\u0027bool\u0027, aliases\u003d[\u0027delete_fip\u0027]),"},{"line_number":792,"context_line":"        description\u003ddict(type\u003d\u0027str\u0027),"},{"line_number":793,"context_line":"        flavor\u003ddict(),"},{"line_number":794,"context_line":"        flavor_include\u003ddict(),"},{"line_number":795,"context_line":"        flavor_ram\u003ddict(type\u003d\u0027int\u0027),"},{"line_number":796,"context_line":"        floating_ip_pools\u003ddict(type\u003d\u0027list\u0027, elements\u003d\u0027str\u0027),"}],"source_content_type":"text/x-python","patch_set":9,"id":"4926eef9_1ff9d0b4","line":793,"range":{"start_line":793,"start_character":19,"end_line":793,"end_character":21},"in_reply_to":"5834f21b_d174471f","updated":"2022-07-26 07:27:02.000000000","message":"type\u003d\u0027str\u0027 is the default, no need to add it here.\n\nhttps://docs.ansible.com/ansible/latest/dev_guide/developing_program_flow_modules.html#argument-spec-dependencies","commit_id":"c3a4ca5fb1d71ad33e23c496ca48efab781f9be6"},{"author":{"_account_id":32962,"name":"Jakob Meng","email":"code@jakobmeng.de","username":"jakobmeng@web.de"},"change_message_id":"fbfecfad97e6c77398cab66b38f3ae82bfb9bc23","unresolved":false,"context_lines":[{"line_number":790,"context_line":"        config_drive\u003ddict(default\u003dFalse, type\u003d\u0027bool\u0027),"},{"line_number":791,"context_line":"        delete_ips\u003ddict(default\u003dFalse, type\u003d\u0027bool\u0027, aliases\u003d[\u0027delete_fip\u0027]),"},{"line_number":792,"context_line":"        description\u003ddict(type\u003d\u0027str\u0027),"},{"line_number":793,"context_line":"        flavor\u003ddict(),"},{"line_number":794,"context_line":"        flavor_include\u003ddict(),"},{"line_number":795,"context_line":"        flavor_ram\u003ddict(type\u003d\u0027int\u0027),"},{"line_number":796,"context_line":"        floating_ip_pools\u003ddict(type\u003d\u0027list\u0027, elements\u003d\u0027str\u0027),"}],"source_content_type":"text/x-python","patch_set":9,"id":"5ec9c096_c66b2249","line":793,"range":{"start_line":793,"start_character":19,"end_line":793,"end_character":21},"in_reply_to":"e543de32_3cebfc6c","updated":"2022-07-27 10:45:29.000000000","message":"A simple rule for consistency is \"do not include default options\", not \"do not include default options except for an arbitrary list of options where we did not follow this rule in the past and which are also not applied consistently and no, we do not tell you which options we talk about.\"\n\nThis will make all modules consistent:\n\nhttps://review.opendev.org/c/openstack/ansible-collections-openstack/+/851208","commit_id":"c3a4ca5fb1d71ad33e23c496ca48efab781f9be6"},{"author":{"_account_id":10969,"name":"Shnaidman Sagi (Sergey)","display_name":"Shnaidman Sagi","email":"sshnaidm@redhat.com","username":"sergsh"},"change_message_id":"a201b8c9fb2fe068fcf0ccd49fdd1f3f3f80245b","unresolved":true,"context_lines":[{"line_number":791,"context_line":"        delete_ips\u003ddict(default\u003dFalse, type\u003d\u0027bool\u0027, aliases\u003d[\u0027delete_fip\u0027]),"},{"line_number":792,"context_line":"        description\u003ddict(type\u003d\u0027str\u0027),"},{"line_number":793,"context_line":"        flavor\u003ddict(),"},{"line_number":794,"context_line":"        flavor_include\u003ddict(),"},{"line_number":795,"context_line":"        flavor_ram\u003ddict(type\u003d\u0027int\u0027),"},{"line_number":796,"context_line":"        floating_ip_pools\u003ddict(type\u003d\u0027list\u0027, elements\u003d\u0027str\u0027),"},{"line_number":797,"context_line":"        floating_ips\u003ddict(type\u003d\u0027list\u0027, elements\u003d\u0027str\u0027),"}],"source_content_type":"text/x-python","patch_set":9,"id":"81e892cb_ade7a32b","line":794,"range":{"start_line":794,"start_character":27,"end_line":794,"end_character":29},"updated":"2022-07-25 21:21:04.000000000","message":"type\u003d\u0027str\u0027","commit_id":"c3a4ca5fb1d71ad33e23c496ca48efab781f9be6"},{"author":{"_account_id":32962,"name":"Jakob Meng","email":"code@jakobmeng.de","username":"jakobmeng@web.de"},"change_message_id":"167891ec115d1f91cebc65fa13c628ee0a346acd","unresolved":false,"context_lines":[{"line_number":791,"context_line":"        delete_ips\u003ddict(default\u003dFalse, type\u003d\u0027bool\u0027, aliases\u003d[\u0027delete_fip\u0027]),"},{"line_number":792,"context_line":"        description\u003ddict(type\u003d\u0027str\u0027),"},{"line_number":793,"context_line":"        flavor\u003ddict(),"},{"line_number":794,"context_line":"        flavor_include\u003ddict(),"},{"line_number":795,"context_line":"        flavor_ram\u003ddict(type\u003d\u0027int\u0027),"},{"line_number":796,"context_line":"        floating_ip_pools\u003ddict(type\u003d\u0027list\u0027, elements\u003d\u0027str\u0027),"},{"line_number":797,"context_line":"        floating_ips\u003ddict(type\u003d\u0027list\u0027, elements\u003d\u0027str\u0027),"}],"source_content_type":"text/x-python","patch_set":9,"id":"9f486f25_fb07f2ab","line":794,"range":{"start_line":794,"start_character":27,"end_line":794,"end_character":29},"in_reply_to":"81e892cb_ade7a32b","updated":"2022-07-26 07:27:02.000000000","message":"type\u003d\u0027str\u0027 is the default, no need to add it here.\n\nhttps://docs.ansible.com/ansible/latest/dev_guide/developing_program_flow_modules.html#argument-spec-dependencies","commit_id":"c3a4ca5fb1d71ad33e23c496ca48efab781f9be6"},{"author":{"_account_id":10969,"name":"Shnaidman Sagi (Sergey)","display_name":"Shnaidman Sagi","email":"sshnaidm@redhat.com","username":"sergsh"},"change_message_id":"a201b8c9fb2fe068fcf0ccd49fdd1f3f3f80245b","unresolved":true,"context_lines":[{"line_number":795,"context_line":"        flavor_ram\u003ddict(type\u003d\u0027int\u0027),"},{"line_number":796,"context_line":"        floating_ip_pools\u003ddict(type\u003d\u0027list\u0027, elements\u003d\u0027str\u0027),"},{"line_number":797,"context_line":"        floating_ips\u003ddict(type\u003d\u0027list\u0027, elements\u003d\u0027str\u0027),"},{"line_number":798,"context_line":"        image\u003ddict(),"},{"line_number":799,"context_line":"        image_exclude\u003ddict(default\u003d\u0027(deprecated)\u0027),"},{"line_number":800,"context_line":"        key_name\u003ddict(),"},{"line_number":801,"context_line":"        metadata\u003ddict(type\u003d\u0027raw\u0027, aliases\u003d[\u0027meta\u0027]),"}],"source_content_type":"text/x-python","patch_set":9,"id":"09159558_873d82bc","line":798,"range":{"start_line":798,"start_character":16,"end_line":798,"end_character":20},"updated":"2022-07-25 21:21:04.000000000","message":"type\u003d\u0027str\u0027","commit_id":"c3a4ca5fb1d71ad33e23c496ca48efab781f9be6"},{"author":{"_account_id":32962,"name":"Jakob Meng","email":"code@jakobmeng.de","username":"jakobmeng@web.de"},"change_message_id":"167891ec115d1f91cebc65fa13c628ee0a346acd","unresolved":false,"context_lines":[{"line_number":795,"context_line":"        flavor_ram\u003ddict(type\u003d\u0027int\u0027),"},{"line_number":796,"context_line":"        floating_ip_pools\u003ddict(type\u003d\u0027list\u0027, elements\u003d\u0027str\u0027),"},{"line_number":797,"context_line":"        floating_ips\u003ddict(type\u003d\u0027list\u0027, elements\u003d\u0027str\u0027),"},{"line_number":798,"context_line":"        image\u003ddict(),"},{"line_number":799,"context_line":"        image_exclude\u003ddict(default\u003d\u0027(deprecated)\u0027),"},{"line_number":800,"context_line":"        key_name\u003ddict(),"},{"line_number":801,"context_line":"        metadata\u003ddict(type\u003d\u0027raw\u0027, aliases\u003d[\u0027meta\u0027]),"}],"source_content_type":"text/x-python","patch_set":9,"id":"4f18baa9_bfbfbbd5","line":798,"range":{"start_line":798,"start_character":16,"end_line":798,"end_character":20},"in_reply_to":"09159558_873d82bc","updated":"2022-07-26 07:27:02.000000000","message":"type\u003d\u0027str\u0027 is the default, no need to add it here.\n\nhttps://docs.ansible.com/ansible/latest/dev_guide/developing_program_flow_modules.html#argument-spec-dependencies","commit_id":"c3a4ca5fb1d71ad33e23c496ca48efab781f9be6"},{"author":{"_account_id":10969,"name":"Shnaidman Sagi (Sergey)","display_name":"Shnaidman Sagi","email":"sshnaidm@redhat.com","username":"sergsh"},"change_message_id":"a201b8c9fb2fe068fcf0ccd49fdd1f3f3f80245b","unresolved":true,"context_lines":[{"line_number":797,"context_line":"        floating_ips\u003ddict(type\u003d\u0027list\u0027, elements\u003d\u0027str\u0027),"},{"line_number":798,"context_line":"        image\u003ddict(),"},{"line_number":799,"context_line":"        image_exclude\u003ddict(default\u003d\u0027(deprecated)\u0027),"},{"line_number":800,"context_line":"        key_name\u003ddict(),"},{"line_number":801,"context_line":"        metadata\u003ddict(type\u003d\u0027raw\u0027, aliases\u003d[\u0027meta\u0027]),"},{"line_number":802,"context_line":"        name\u003ddict(required\u003dTrue),"},{"line_number":803,"context_line":"        network\u003ddict(),"}],"source_content_type":"text/x-python","patch_set":9,"id":"4b313757_372119bf","line":800,"range":{"start_line":800,"start_character":21,"end_line":800,"end_character":24},"updated":"2022-07-25 21:21:04.000000000","message":"type\u003d\u0027str\u0027","commit_id":"c3a4ca5fb1d71ad33e23c496ca48efab781f9be6"},{"author":{"_account_id":32962,"name":"Jakob Meng","email":"code@jakobmeng.de","username":"jakobmeng@web.de"},"change_message_id":"167891ec115d1f91cebc65fa13c628ee0a346acd","unresolved":false,"context_lines":[{"line_number":797,"context_line":"        floating_ips\u003ddict(type\u003d\u0027list\u0027, elements\u003d\u0027str\u0027),"},{"line_number":798,"context_line":"        image\u003ddict(),"},{"line_number":799,"context_line":"        image_exclude\u003ddict(default\u003d\u0027(deprecated)\u0027),"},{"line_number":800,"context_line":"        key_name\u003ddict(),"},{"line_number":801,"context_line":"        metadata\u003ddict(type\u003d\u0027raw\u0027, aliases\u003d[\u0027meta\u0027]),"},{"line_number":802,"context_line":"        name\u003ddict(required\u003dTrue),"},{"line_number":803,"context_line":"        network\u003ddict(),"}],"source_content_type":"text/x-python","patch_set":9,"id":"baa633ba_f1fdee90","line":800,"range":{"start_line":800,"start_character":21,"end_line":800,"end_character":24},"in_reply_to":"4b313757_372119bf","updated":"2022-07-26 07:27:02.000000000","message":"type\u003d\u0027str\u0027 is the default, no need to add it here.\n\nhttps://docs.ansible.com/ansible/latest/dev_guide/developing_program_flow_modules.html#argument-spec-dependencies","commit_id":"c3a4ca5fb1d71ad33e23c496ca48efab781f9be6"},{"author":{"_account_id":10969,"name":"Shnaidman Sagi (Sergey)","display_name":"Shnaidman Sagi","email":"sshnaidm@redhat.com","username":"sergsh"},"change_message_id":"a201b8c9fb2fe068fcf0ccd49fdd1f3f3f80245b","unresolved":true,"context_lines":[{"line_number":800,"context_line":"        key_name\u003ddict(),"},{"line_number":801,"context_line":"        metadata\u003ddict(type\u003d\u0027raw\u0027, aliases\u003d[\u0027meta\u0027]),"},{"line_number":802,"context_line":"        name\u003ddict(required\u003dTrue),"},{"line_number":803,"context_line":"        network\u003ddict(),"},{"line_number":804,"context_line":"        nics\u003ddict(default\u003d[], type\u003d\u0027list\u0027, elements\u003d\u0027raw\u0027),"},{"line_number":805,"context_line":"        reuse_ips\u003ddict(default\u003dTrue, type\u003d\u0027bool\u0027),"},{"line_number":806,"context_line":"        scheduler_hints\u003ddict(type\u003d\u0027dict\u0027),"}],"source_content_type":"text/x-python","patch_set":9,"id":"ecc1d3f6_7fd99a1c","line":803,"range":{"start_line":803,"start_character":19,"end_line":803,"end_character":23},"updated":"2022-07-25 21:21:04.000000000","message":"type\u003d\u0027str\u0027","commit_id":"c3a4ca5fb1d71ad33e23c496ca48efab781f9be6"},{"author":{"_account_id":32962,"name":"Jakob Meng","email":"code@jakobmeng.de","username":"jakobmeng@web.de"},"change_message_id":"167891ec115d1f91cebc65fa13c628ee0a346acd","unresolved":false,"context_lines":[{"line_number":800,"context_line":"        key_name\u003ddict(),"},{"line_number":801,"context_line":"        metadata\u003ddict(type\u003d\u0027raw\u0027, aliases\u003d[\u0027meta\u0027]),"},{"line_number":802,"context_line":"        name\u003ddict(required\u003dTrue),"},{"line_number":803,"context_line":"        network\u003ddict(),"},{"line_number":804,"context_line":"        nics\u003ddict(default\u003d[], type\u003d\u0027list\u0027, elements\u003d\u0027raw\u0027),"},{"line_number":805,"context_line":"        reuse_ips\u003ddict(default\u003dTrue, type\u003d\u0027bool\u0027),"},{"line_number":806,"context_line":"        scheduler_hints\u003ddict(type\u003d\u0027dict\u0027),"}],"source_content_type":"text/x-python","patch_set":9,"id":"33c5242e_70bf4d80","line":803,"range":{"start_line":803,"start_character":19,"end_line":803,"end_character":23},"in_reply_to":"ecc1d3f6_7fd99a1c","updated":"2022-07-26 07:27:02.000000000","message":"type\u003d\u0027str\u0027 is the default, no need to add it here.\n\nhttps://docs.ansible.com/ansible/latest/dev_guide/developing_program_flow_modules.html#argument-spec-dependencies","commit_id":"c3a4ca5fb1d71ad33e23c496ca48efab781f9be6"},{"author":{"_account_id":34208,"name":"Rafael Castillo","email":"rcastill@redhat.com","username":"rcastill"},"change_message_id":"6de1c8e52587f6df952f60f6b1f46b83fa9aef80","unresolved":true,"context_lines":[{"line_number":483,"context_line":"\u0027\u0027\u0027"},{"line_number":484,"context_line":""},{"line_number":485,"context_line":"RETURN \u003d \u0027\u0027\u0027"},{"line_number":486,"context_line":"server:"},{"line_number":487,"context_line":"    description: Dictionary describing the server."},{"line_number":488,"context_line":"    type: dict"},{"line_number":489,"context_line":"    returned: On success when I(state) is \u0027present\u0027."}],"source_content_type":"text/x-python","patch_set":11,"id":"5875c241_8ff0dfcb","line":486,"updated":"2022-07-26 21:02:09.000000000","message":"nit: reindent to 2 spaces","commit_id":"f0da67e6f65cc9d6b9254ac5db1c19490f31f327"},{"author":{"_account_id":32962,"name":"Jakob Meng","email":"code@jakobmeng.de","username":"jakobmeng@web.de"},"change_message_id":"b4fb2a44e044af7957f8afff756601bfa5112bf1","unresolved":false,"context_lines":[{"line_number":483,"context_line":"\u0027\u0027\u0027"},{"line_number":484,"context_line":""},{"line_number":485,"context_line":"RETURN \u003d \u0027\u0027\u0027"},{"line_number":486,"context_line":"server:"},{"line_number":487,"context_line":"    description: Dictionary describing the server."},{"line_number":488,"context_line":"    type: dict"},{"line_number":489,"context_line":"    returned: On success when I(state) is \u0027present\u0027."}],"source_content_type":"text/x-python","patch_set":11,"id":"5b4ce294_4d83cb50","line":486,"in_reply_to":"5875c241_8ff0dfcb","updated":"2022-07-27 10:15:15.000000000","message":"Indentation across the modules and ci roles is wild and inconsistent. I tried to follow Ansible\u0027s documentation here which is using 4 spaces for RETURN values.\n\nhttps://docs.ansible.com/ansible/latest/dev_guide/developing_modules_documenting.html","commit_id":"f0da67e6f65cc9d6b9254ac5db1c19490f31f327"},{"author":{"_account_id":34208,"name":"Rafael Castillo","email":"rcastill@redhat.com","username":"rcastill"},"change_message_id":"6de1c8e52587f6df952f60f6b1f46b83fa9aef80","unresolved":true,"context_lines":[{"line_number":894,"context_line":"            return {}"},{"line_number":895,"context_line":""},{"line_number":896,"context_line":"        if (auto_ip and server[\u0027interface_ip\u0027]"},{"line_number":897,"context_line":"           and not (floating_ip_pools or floating_ips)):"},{"line_number":898,"context_line":"            # Server has a floating ip address attached and"},{"line_number":899,"context_line":"            # no specific floating ip has been requested,"},{"line_number":900,"context_line":"            # so nothing to change."}],"source_content_type":"text/x-python","patch_set":11,"id":"9e2d2c7c_3d952ca2","line":897,"updated":"2022-07-26 21:02:09.000000000","message":"Seeing this makes me think auto_ip should not have a default set so we can take advantage of the mutually_exclusive checks we set. WDYT?","commit_id":"f0da67e6f65cc9d6b9254ac5db1c19490f31f327"},{"author":{"_account_id":34208,"name":"Rafael Castillo","email":"rcastill@redhat.com","username":"rcastill"},"change_message_id":"d9e5f75e59907551733436e1dfeb90972e75fa04","unresolved":false,"context_lines":[{"line_number":894,"context_line":"            return {}"},{"line_number":895,"context_line":""},{"line_number":896,"context_line":"        if (auto_ip and server[\u0027interface_ip\u0027]"},{"line_number":897,"context_line":"           and not (floating_ip_pools or floating_ips)):"},{"line_number":898,"context_line":"            # Server has a floating ip address attached and"},{"line_number":899,"context_line":"            # no specific floating ip has been requested,"},{"line_number":900,"context_line":"            # so nothing to change."}],"source_content_type":"text/x-python","patch_set":11,"id":"ad6a114e_1f286123","line":897,"in_reply_to":"13fad4a6_82e26167","updated":"2022-07-27 15:26:29.000000000","message":"Oh  sure, I didn\u0027t realize that would change the default behavior. This way is fine, then.","commit_id":"f0da67e6f65cc9d6b9254ac5db1c19490f31f327"},{"author":{"_account_id":32962,"name":"Jakob Meng","email":"code@jakobmeng.de","username":"jakobmeng@web.de"},"change_message_id":"b4fb2a44e044af7957f8afff756601bfa5112bf1","unresolved":true,"context_lines":[{"line_number":894,"context_line":"            return {}"},{"line_number":895,"context_line":""},{"line_number":896,"context_line":"        if (auto_ip and server[\u0027interface_ip\u0027]"},{"line_number":897,"context_line":"           and not (floating_ip_pools or floating_ips)):"},{"line_number":898,"context_line":"            # Server has a floating ip address attached and"},{"line_number":899,"context_line":"            # no specific floating ip has been requested,"},{"line_number":900,"context_line":"            # so nothing to change."}],"source_content_type":"text/x-python","patch_set":11,"id":"13fad4a6_82e26167","line":897,"in_reply_to":"9e2d2c7c_3d952ca2","updated":"2022-07-27 10:15:15.000000000","message":"mutually_exclusive ensures that options must not specified at the same time.\n\nIf we remove \"and not (floating_ip_pools or floating_ips))\" then a user could define one of those (floating_ip_pools or floating_ips) and the default of auto_ip would make sure that this branch is always take, which is not what we want.\n\nYou propose to change the default of auto_ip from True to None. This would change the behavior of the module. Atm by default a server always gets a floating ip if nothing else is specified. We would need to discuss this behavioural change more in-depth, imho we should do this in a follow-up patch.","commit_id":"f0da67e6f65cc9d6b9254ac5db1c19490f31f327"},{"author":{"_account_id":34208,"name":"Rafael Castillo","email":"rcastill@redhat.com","username":"rcastill"},"change_message_id":"6de1c8e52587f6df952f60f6b1f46b83fa9aef80","unresolved":true,"context_lines":[{"line_number":902,"context_line":""},{"line_number":903,"context_line":"        # Get floating ip addresses attached to the server"},{"line_number":904,"context_line":"        ips \u003d [interface_spec[\u0027addr\u0027]"},{"line_number":905,"context_line":"               for k, v in server.addresses.items()"},{"line_number":906,"context_line":"               for interface_spec in v"},{"line_number":907,"context_line":"               if (\u0027OS-EXT-IPS:type\u0027 in interface_spec"},{"line_number":908,"context_line":"                   and interface_spec[\u0027OS-EXT-IPS:type\u0027] \u003d\u003d \u0027floating\u0027)]"}],"source_content_type":"text/x-python","patch_set":11,"id":"6c687ce8_af3608d6","line":905,"updated":"2022-07-26 21:02:09.000000000","message":"can be `for v in server.addresses.values()` if not using the key.","commit_id":"f0da67e6f65cc9d6b9254ac5db1c19490f31f327"},{"author":{"_account_id":32962,"name":"Jakob Meng","email":"code@jakobmeng.de","username":"jakobmeng@web.de"},"change_message_id":"b4fb2a44e044af7957f8afff756601bfa5112bf1","unresolved":false,"context_lines":[{"line_number":902,"context_line":""},{"line_number":903,"context_line":"        # Get floating ip addresses attached to the server"},{"line_number":904,"context_line":"        ips \u003d [interface_spec[\u0027addr\u0027]"},{"line_number":905,"context_line":"               for k, v in server.addresses.items()"},{"line_number":906,"context_line":"               for interface_spec in v"},{"line_number":907,"context_line":"               if (\u0027OS-EXT-IPS:type\u0027 in interface_spec"},{"line_number":908,"context_line":"                   and interface_spec[\u0027OS-EXT-IPS:type\u0027] \u003d\u003d \u0027floating\u0027)]"}],"source_content_type":"text/x-python","patch_set":11,"id":"4295e8c5_2b076bd1","line":905,"in_reply_to":"6c687ce8_af3608d6","updated":"2022-07-27 10:15:15.000000000","message":"Done","commit_id":"f0da67e6f65cc9d6b9254ac5db1c19490f31f327"},{"author":{"_account_id":34208,"name":"Rafael Castillo","email":"rcastill@redhat.com","username":"rcastill"},"change_message_id":"6de1c8e52587f6df952f60f6b1f46b83fa9aef80","unresolved":true,"context_lines":[{"line_number":936,"context_line":"    def _build_update_security_groups(self, server):"},{"line_number":937,"context_line":"        update \u003d {}"},{"line_number":938,"context_line":""},{"line_number":939,"context_line":"        required_security_groups \u003d dict("},{"line_number":940,"context_line":"            (sg[\u0027id\u0027], sg) for sg in ["},{"line_number":941,"context_line":"                self.conn.network.find_security_group("},{"line_number":942,"context_line":"                    security_group_name_or_id, ignore_missing\u003dFalse)"}],"source_content_type":"text/x-python","patch_set":11,"id":"aad1d2cc_1ec3bf8e","line":939,"updated":"2022-07-26 21:02:09.000000000","message":"You may be able to simplify this method quite a bit if you use sets instead of dicts here. Should be fine since you\u0027re only ever interested in the ids, and not the whole security groups.","commit_id":"f0da67e6f65cc9d6b9254ac5db1c19490f31f327"},{"author":{"_account_id":32962,"name":"Jakob Meng","email":"code@jakobmeng.de","username":"jakobmeng@web.de"},"change_message_id":"b4fb2a44e044af7957f8afff756601bfa5112bf1","unresolved":false,"context_lines":[{"line_number":936,"context_line":"    def _build_update_security_groups(self, server):"},{"line_number":937,"context_line":"        update \u003d {}"},{"line_number":938,"context_line":""},{"line_number":939,"context_line":"        required_security_groups \u003d dict("},{"line_number":940,"context_line":"            (sg[\u0027id\u0027], sg) for sg in ["},{"line_number":941,"context_line":"                self.conn.network.find_security_group("},{"line_number":942,"context_line":"                    security_group_name_or_id, ignore_missing\u003dFalse)"}],"source_content_type":"text/x-python","patch_set":11,"id":"c0459833_28a1b4a5","line":939,"in_reply_to":"aad1d2cc_1ec3bf8e","updated":"2022-07-27 10:15:15.000000000","message":"No, I do not want to rely on sg objects in required_security_groups and assigned_security_groups being evaluated as equal or not-equal by Python. Comparing by id is a bit more code but safe and simple and does not rely on Python\u0027s object comparison mechanism.","commit_id":"f0da67e6f65cc9d6b9254ac5db1c19490f31f327"},{"author":{"_account_id":34208,"name":"Rafael Castillo","email":"rcastill@redhat.com","username":"rcastill"},"change_message_id":"6de1c8e52587f6df952f60f6b1f46b83fa9aef80","unresolved":true,"context_lines":[{"line_number":1063,"context_line":""},{"line_number":1064,"context_line":"        server \u003d self.conn.create_server(**args)"},{"line_number":1065,"context_line":""},{"line_number":1066,"context_line":"        if self.params[\u0027wait\u0027]:"},{"line_number":1067,"context_line":"            self.conn.compute.wait_for_server(server,"},{"line_number":1068,"context_line":"                                              wait\u003dself.params[\u0027timeout\u0027])"},{"line_number":1069,"context_line":""}],"source_content_type":"text/x-python","patch_set":11,"id":"d6c93984_1485743e","line":1066,"updated":"2022-07-26 21:02:09.000000000","message":"Why not pass `wait` and timeout to the create_server call above?","commit_id":"f0da67e6f65cc9d6b9254ac5db1c19490f31f327"},{"author":{"_account_id":32962,"name":"Jakob Meng","email":"code@jakobmeng.de","username":"jakobmeng@web.de"},"change_message_id":"b4fb2a44e044af7957f8afff756601bfa5112bf1","unresolved":false,"context_lines":[{"line_number":1063,"context_line":""},{"line_number":1064,"context_line":"        server \u003d self.conn.create_server(**args)"},{"line_number":1065,"context_line":""},{"line_number":1066,"context_line":"        if self.params[\u0027wait\u0027]:"},{"line_number":1067,"context_line":"            self.conn.compute.wait_for_server(server,"},{"line_number":1068,"context_line":"                                              wait\u003dself.params[\u0027timeout\u0027])"},{"line_number":1069,"context_line":""}],"source_content_type":"text/x-python","patch_set":11,"id":"30505a81_e0933b5c","line":1066,"in_reply_to":"d6c93984_1485743e","updated":"2022-07-27 10:15:15.000000000","message":"No idea. Changed.","commit_id":"f0da67e6f65cc9d6b9254ac5db1c19490f31f327"},{"author":{"_account_id":34208,"name":"Rafael Castillo","email":"rcastill@redhat.com","username":"rcastill"},"change_message_id":"6de1c8e52587f6df952f60f6b1f46b83fa9aef80","unresolved":true,"context_lines":[{"line_number":1072,"context_line":"    def _delete(self, server):"},{"line_number":1073,"context_line":"        self.conn.delete_server("},{"line_number":1074,"context_line":"            server.id,"},{"line_number":1075,"context_line":"            **dict((k, self.params[k])"},{"line_number":1076,"context_line":"                   for k in [\u0027wait\u0027, \u0027timeout\u0027, \u0027delete_ips\u0027]))"},{"line_number":1077,"context_line":""},{"line_number":1078,"context_line":"    def _update(self, server, update):"}],"source_content_type":"text/x-python","patch_set":11,"id":"171f11b2_aa8e6302","line":1075,"updated":"2022-07-26 21:02:09.000000000","message":"would be more concise to pass these directly instead of using a comprehension","commit_id":"f0da67e6f65cc9d6b9254ac5db1c19490f31f327"},{"author":{"_account_id":32962,"name":"Jakob Meng","email":"code@jakobmeng.de","username":"jakobmeng@web.de"},"change_message_id":"b4fb2a44e044af7957f8afff756601bfa5112bf1","unresolved":false,"context_lines":[{"line_number":1072,"context_line":"    def _delete(self, server):"},{"line_number":1073,"context_line":"        self.conn.delete_server("},{"line_number":1074,"context_line":"            server.id,"},{"line_number":1075,"context_line":"            **dict((k, self.params[k])"},{"line_number":1076,"context_line":"                   for k in [\u0027wait\u0027, \u0027timeout\u0027, \u0027delete_ips\u0027]))"},{"line_number":1077,"context_line":""},{"line_number":1078,"context_line":"    def _update(self, server, update):"}],"source_content_type":"text/x-python","patch_set":11,"id":"6c443ef6_99e0d764","line":1075,"in_reply_to":"171f11b2_aa8e6302","updated":"2022-07-27 10:15:15.000000000","message":"To me\n\n           wait\u003dself.params[\u0027wait\u0027],\n           timeout\u003dself.params[\u0027timeout\u0027],\n           delete_ips\u003dself.params[\u0027delete_ips\u0027]\n\nis more than\n\n            **dict((k, self.params[k])\n                   for k in [\u0027wait\u0027, \u0027timeout\u0027, \u0027delete_ips\u0027]))","commit_id":"f0da67e6f65cc9d6b9254ac5db1c19490f31f327"},{"author":{"_account_id":34208,"name":"Rafael Castillo","email":"rcastill@redhat.com","username":"rcastill"},"change_message_id":"6de1c8e52587f6df952f60f6b1f46b83fa9aef80","unresolved":true,"context_lines":[{"line_number":1094,"context_line":"        add_ips \u003d update.get(\u0027add_ips\u0027)"},{"line_number":1095,"context_line":"        if add_ips:"},{"line_number":1096,"context_line":"            # Add specific ips which have not been added"},{"line_number":1097,"context_line":"            server \u003d self.conn.add_ip_list(server, add_ips, **args)"},{"line_number":1098,"context_line":""},{"line_number":1099,"context_line":"        remove_ips \u003d update.get(\u0027remove_ips\u0027)"},{"line_number":1100,"context_line":"        if remove_ips:"}],"source_content_type":"text/x-python","patch_set":11,"id":"31db85ab_3151eb26","line":1097,"updated":"2022-07-26 21:02:09.000000000","message":"Either I\u0027m missing something here or this method[0] just... doesn\u0027t do what it\u0027s supposed to do?\n\n[0] \nhttps://opendev.org/openstack/openstacksdk/blame/branch/master/openstack/cloud/_floating_ip.py#L875","commit_id":"f0da67e6f65cc9d6b9254ac5db1c19490f31f327"},{"author":{"_account_id":32962,"name":"Jakob Meng","email":"code@jakobmeng.de","username":"jakobmeng@web.de"},"change_message_id":"b4fb2a44e044af7957f8afff756601bfa5112bf1","unresolved":true,"context_lines":[{"line_number":1094,"context_line":"        add_ips \u003d update.get(\u0027add_ips\u0027)"},{"line_number":1095,"context_line":"        if add_ips:"},{"line_number":1096,"context_line":"            # Add specific ips which have not been added"},{"line_number":1097,"context_line":"            server \u003d self.conn.add_ip_list(server, add_ips, **args)"},{"line_number":1098,"context_line":""},{"line_number":1099,"context_line":"        remove_ips \u003d update.get(\u0027remove_ips\u0027)"},{"line_number":1100,"context_line":"        if remove_ips:"}],"source_content_type":"text/x-python","patch_set":11,"id":"66947dab_53b36daa","line":1097,"in_reply_to":"31db85ab_3151eb26","updated":"2022-07-27 10:15:15.000000000","message":"omg... good catch! Should be fixed in openstacksdk.","commit_id":"f0da67e6f65cc9d6b9254ac5db1c19490f31f327"},{"author":{"_account_id":32962,"name":"Jakob Meng","email":"code@jakobmeng.de","username":"jakobmeng@web.de"},"change_message_id":"a7455b6589ba66b0e1b8aae6d0ca023061006337","unresolved":true,"context_lines":[{"line_number":1094,"context_line":"        add_ips \u003d update.get(\u0027add_ips\u0027)"},{"line_number":1095,"context_line":"        if add_ips:"},{"line_number":1096,"context_line":"            # Add specific ips which have not been added"},{"line_number":1097,"context_line":"            server \u003d self.conn.add_ip_list(server, add_ips, **args)"},{"line_number":1098,"context_line":""},{"line_number":1099,"context_line":"        remove_ips \u003d update.get(\u0027remove_ips\u0027)"},{"line_number":1100,"context_line":"        if remove_ips:"}],"source_content_type":"text/x-python","patch_set":11,"id":"869f6671_aa5be262","line":1097,"in_reply_to":"66947dab_53b36daa","updated":"2022-07-27 13:07:03.000000000","message":"Submitted a patch for openstacksdk: https://review.opendev.org/c/openstack/openstacksdk/+/851221","commit_id":"f0da67e6f65cc9d6b9254ac5db1c19490f31f327"},{"author":{"_account_id":32962,"name":"Jakob Meng","email":"code@jakobmeng.de","username":"jakobmeng@web.de"},"change_message_id":"5732a5b6c482803f7c451613119531cb22804b10","unresolved":false,"context_lines":[{"line_number":1094,"context_line":"        add_ips \u003d update.get(\u0027add_ips\u0027)"},{"line_number":1095,"context_line":"        if add_ips:"},{"line_number":1096,"context_line":"            # Add specific ips which have not been added"},{"line_number":1097,"context_line":"            server \u003d self.conn.add_ip_list(server, add_ips, **args)"},{"line_number":1098,"context_line":""},{"line_number":1099,"context_line":"        remove_ips \u003d update.get(\u0027remove_ips\u0027)"},{"line_number":1100,"context_line":"        if remove_ips:"}],"source_content_type":"text/x-python","patch_set":11,"id":"aabd8f74_252d4b34","line":1097,"in_reply_to":"869f6671_aa5be262","updated":"2022-07-28 08:15:55.000000000","message":"Patch landed.","commit_id":"f0da67e6f65cc9d6b9254ac5db1c19490f31f327"},{"author":{"_account_id":34208,"name":"Rafael Castillo","email":"rcastill@redhat.com","username":"rcastill"},"change_message_id":"6de1c8e52587f6df952f60f6b1f46b83fa9aef80","unresolved":false,"context_lines":[{"line_number":1204,"context_line":"                nics[-1][\u0027tag\u0027] \u003d net[\u0027tag\u0027]"},{"line_number":1205,"context_line":"        return nics"},{"line_number":1206,"context_line":""},{"line_number":1207,"context_line":"    def _will_change(self, state, server):"},{"line_number":1208,"context_line":"        if state \u003d\u003d \u0027present\u0027 and not server:"},{"line_number":1209,"context_line":"            return True"},{"line_number":1210,"context_line":"        elif state \u003d\u003d \u0027present\u0027 and server:"}],"source_content_type":"text/x-python","patch_set":11,"id":"eca83a4f_e17f4ac4","line":1207,"updated":"2022-07-26 21:02:09.000000000","message":"Like this a lot better than _system_state_change 😊","commit_id":"f0da67e6f65cc9d6b9254ac5db1c19490f31f327"},{"author":{"_account_id":32962,"name":"Jakob Meng","email":"code@jakobmeng.de","username":"jakobmeng@web.de"},"change_message_id":"b4fb2a44e044af7957f8afff756601bfa5112bf1","unresolved":false,"context_lines":[{"line_number":1204,"context_line":"                nics[-1][\u0027tag\u0027] \u003d net[\u0027tag\u0027]"},{"line_number":1205,"context_line":"        return nics"},{"line_number":1206,"context_line":""},{"line_number":1207,"context_line":"    def _will_change(self, state, server):"},{"line_number":1208,"context_line":"        if state \u003d\u003d \u0027present\u0027 and not server:"},{"line_number":1209,"context_line":"            return True"},{"line_number":1210,"context_line":"        elif state \u003d\u003d \u0027present\u0027 and server:"}],"source_content_type":"text/x-python","patch_set":11,"id":"03745ace_88c8b241","line":1207,"in_reply_to":"eca83a4f_e17f4ac4","updated":"2022-07-27 10:15:15.000000000","message":"I changed the name to easily be able to identify modules with this \"new\" update mechanism.","commit_id":"f0da67e6f65cc9d6b9254ac5db1c19490f31f327"}],"plugins/modules/server_info.py":[{"author":{"_account_id":10969,"name":"Shnaidman Sagi (Sergey)","display_name":"Shnaidman Sagi","email":"sshnaidm@redhat.com","username":"sergsh"},"change_message_id":"a201b8c9fb2fe068fcf0ccd49fdd1f3f3f80245b","unresolved":true,"context_lines":[{"line_number":29,"context_line":"    description: |"},{"line_number":30,"context_line":"      Used for further filtering of results. Either a string containing a"},{"line_number":31,"context_line":"      JMESPath expression or a dictionary of meta data. Elements of the latter"},{"line_number":32,"context_line":"      may, themselves, be dictionaries. Dictionary example:"},{"line_number":33,"context_line":"          {"},{"line_number":34,"context_line":"              \u0027last_name\u0027: \u0027Smith\u0027,"},{"line_number":35,"context_line":"              \u0027other\u0027: {"},{"line_number":36,"context_line":"                  \u0027gender\u0027: \u0027Female\u0027"},{"line_number":37,"context_line":"               }"},{"line_number":38,"context_line":"          }"},{"line_number":39,"context_line":"    type: dict"},{"line_number":40,"context_line":"  all_projects:"},{"line_number":41,"context_line":"    description:"},{"line_number":42,"context_line":"      - Whether to list servers from all projects or just the current auth"}],"source_content_type":"text/x-python","patch_set":9,"id":"264b194e_7069cd32","line":39,"range":{"start_line":32,"start_character":40,"end_line":39,"end_character":14},"updated":"2022-07-25 21:21:04.000000000","message":"examples are better to put in EXAMPLES below, ansible-docs might have problem parsing this","commit_id":"c3a4ca5fb1d71ad33e23c496ca48efab781f9be6"},{"author":{"_account_id":32962,"name":"Jakob Meng","email":"code@jakobmeng.de","username":"jakobmeng@web.de"},"change_message_id":"8199155ea66eec48ae38c03c357317e112d9a318","unresolved":true,"context_lines":[{"line_number":29,"context_line":"    description: |"},{"line_number":30,"context_line":"      Used for further filtering of results. Either a string containing a"},{"line_number":31,"context_line":"      JMESPath expression or a dictionary of meta data. Elements of the latter"},{"line_number":32,"context_line":"      may, themselves, be dictionaries. Dictionary example:"},{"line_number":33,"context_line":"          {"},{"line_number":34,"context_line":"              \u0027last_name\u0027: \u0027Smith\u0027,"},{"line_number":35,"context_line":"              \u0027other\u0027: {"},{"line_number":36,"context_line":"                  \u0027gender\u0027: \u0027Female\u0027"},{"line_number":37,"context_line":"               }"},{"line_number":38,"context_line":"          }"},{"line_number":39,"context_line":"    type: dict"},{"line_number":40,"context_line":"  all_projects:"},{"line_number":41,"context_line":"    description:"},{"line_number":42,"context_line":"      - Whether to list servers from all projects or just the current auth"}],"source_content_type":"text/x-python","patch_set":9,"id":"c9d9c4c7_ebc2918a","line":39,"range":{"start_line":32,"start_character":40,"end_line":39,"end_character":14},"in_reply_to":"264b194e_7069cd32","updated":"2022-07-26 07:43:00.000000000","message":"Let us find out!","commit_id":"c3a4ca5fb1d71ad33e23c496ca48efab781f9be6"},{"author":{"_account_id":10969,"name":"Shnaidman Sagi (Sergey)","display_name":"Shnaidman Sagi","email":"sshnaidm@redhat.com","username":"sergsh"},"change_message_id":"92d139bd056eb0e03625f7363742591df5f6f78b","unresolved":true,"context_lines":[{"line_number":29,"context_line":"    description: |"},{"line_number":30,"context_line":"      Used for further filtering of results. Either a string containing a"},{"line_number":31,"context_line":"      JMESPath expression or a dictionary of meta data. Elements of the latter"},{"line_number":32,"context_line":"      may, themselves, be dictionaries. Dictionary example:"},{"line_number":33,"context_line":"          {"},{"line_number":34,"context_line":"              \u0027last_name\u0027: \u0027Smith\u0027,"},{"line_number":35,"context_line":"              \u0027other\u0027: {"},{"line_number":36,"context_line":"                  \u0027gender\u0027: \u0027Female\u0027"},{"line_number":37,"context_line":"               }"},{"line_number":38,"context_line":"          }"},{"line_number":39,"context_line":"    type: dict"},{"line_number":40,"context_line":"  all_projects:"},{"line_number":41,"context_line":"    description:"},{"line_number":42,"context_line":"      - Whether to list servers from all projects or just the current auth"}],"source_content_type":"text/x-python","patch_set":9,"id":"ce8c4f35_21a28260","line":39,"range":{"start_line":32,"start_character":40,"end_line":39,"end_character":14},"in_reply_to":"c9d9c4c7_ebc2918a","updated":"2022-07-26 13:33:06.000000000","message":"TBH I\u0027m not sure we\u0027ll see it until it appears in Ansible website. Maybe there is an option to run ansible-docs to test. But anyway, it\u0027s related to examples and better be in examples, isn\u0027t it?","commit_id":"c3a4ca5fb1d71ad33e23c496ca48efab781f9be6"},{"author":{"_account_id":32962,"name":"Jakob Meng","email":"code@jakobmeng.de","username":"jakobmeng@web.de"},"change_message_id":"8ba00c7fba6d06d136c0d160a79932c4ba7f5600","unresolved":false,"context_lines":[{"line_number":29,"context_line":"    description: |"},{"line_number":30,"context_line":"      Used for further filtering of results. Either a string containing a"},{"line_number":31,"context_line":"      JMESPath expression or a dictionary of meta data. Elements of the latter"},{"line_number":32,"context_line":"      may, themselves, be dictionaries. Dictionary example:"},{"line_number":33,"context_line":"          {"},{"line_number":34,"context_line":"              \u0027last_name\u0027: \u0027Smith\u0027,"},{"line_number":35,"context_line":"              \u0027other\u0027: {"},{"line_number":36,"context_line":"                  \u0027gender\u0027: \u0027Female\u0027"},{"line_number":37,"context_line":"               }"},{"line_number":38,"context_line":"          }"},{"line_number":39,"context_line":"    type: dict"},{"line_number":40,"context_line":"  all_projects:"},{"line_number":41,"context_line":"    description:"},{"line_number":42,"context_line":"      - Whether to list servers from all projects or just the current auth"}],"source_content_type":"text/x-python","patch_set":9,"id":"94781c9f_e0aadf34","line":39,"range":{"start_line":32,"start_character":40,"end_line":39,"end_character":14},"in_reply_to":"ce8c4f35_21a28260","updated":"2022-07-28 07:47:36.000000000","message":"Moved examples to EXAMPLES and also added more tests with nested dicts for filters.","commit_id":"c3a4ca5fb1d71ad33e23c496ca48efab781f9be6"},{"author":{"_account_id":10969,"name":"Shnaidman Sagi (Sergey)","display_name":"Shnaidman Sagi","email":"sshnaidm@redhat.com","username":"sergsh"},"change_message_id":"a201b8c9fb2fe068fcf0ccd49fdd1f3f3f80245b","unresolved":true,"context_lines":[{"line_number":366,"context_line":""},{"line_number":367,"context_line":"    argument_spec \u003d dict("},{"line_number":368,"context_line":"        name\u003ddict(required\u003dFalse, aliases\u003d[\u0027server\u0027]),"},{"line_number":369,"context_line":"        detailed\u003ddict(required\u003dFalse, type\u003d\u0027bool\u0027, default\u003dFalse),"},{"line_number":370,"context_line":"        filters\u003ddict(required\u003dFalse, type\u003d\u0027dict\u0027, default\u003dNone),"},{"line_number":371,"context_line":"        all_projects\u003ddict(required\u003dFalse, type\u003d\u0027bool\u0027, default\u003dFalse),"},{"line_number":372,"context_line":"    )"}],"source_content_type":"text/x-python","patch_set":9,"id":"13b71639_eeea035b","line":369,"range":{"start_line":369,"start_character":23,"end_line":369,"end_character":37},"updated":"2022-07-25 21:21:04.000000000","message":"let\u0027s remove all these \"required\" where default is set","commit_id":"c3a4ca5fb1d71ad33e23c496ca48efab781f9be6"},{"author":{"_account_id":32962,"name":"Jakob Meng","email":"code@jakobmeng.de","username":"jakobmeng@web.de"},"change_message_id":"8199155ea66eec48ae38c03c357317e112d9a318","unresolved":false,"context_lines":[{"line_number":366,"context_line":""},{"line_number":367,"context_line":"    argument_spec \u003d dict("},{"line_number":368,"context_line":"        name\u003ddict(required\u003dFalse, aliases\u003d[\u0027server\u0027]),"},{"line_number":369,"context_line":"        detailed\u003ddict(required\u003dFalse, type\u003d\u0027bool\u0027, default\u003dFalse),"},{"line_number":370,"context_line":"        filters\u003ddict(required\u003dFalse, type\u003d\u0027dict\u0027, default\u003dNone),"},{"line_number":371,"context_line":"        all_projects\u003ddict(required\u003dFalse, type\u003d\u0027bool\u0027, default\u003dFalse),"},{"line_number":372,"context_line":"    )"}],"source_content_type":"text/x-python","patch_set":9,"id":"2d655738_500f9e6e","line":369,"range":{"start_line":369,"start_character":23,"end_line":369,"end_character":37},"in_reply_to":"13b71639_eeea035b","updated":"2022-07-26 07:43:00.000000000","message":"Fixed.","commit_id":"c3a4ca5fb1d71ad33e23c496ca48efab781f9be6"},{"author":{"_account_id":10969,"name":"Shnaidman Sagi (Sergey)","display_name":"Shnaidman Sagi","email":"sshnaidm@redhat.com","username":"sergsh"},"change_message_id":"a201b8c9fb2fe068fcf0ccd49fdd1f3f3f80245b","unresolved":true,"context_lines":[{"line_number":367,"context_line":"    argument_spec \u003d dict("},{"line_number":368,"context_line":"        name\u003ddict(required\u003dFalse, aliases\u003d[\u0027server\u0027]),"},{"line_number":369,"context_line":"        detailed\u003ddict(required\u003dFalse, type\u003d\u0027bool\u0027, default\u003dFalse),"},{"line_number":370,"context_line":"        filters\u003ddict(required\u003dFalse, type\u003d\u0027dict\u0027, default\u003dNone),"},{"line_number":371,"context_line":"        all_projects\u003ddict(required\u003dFalse, type\u003d\u0027bool\u0027, default\u003dFalse),"},{"line_number":372,"context_line":"    )"},{"line_number":373,"context_line":"    module_kwargs \u003d dict("}],"source_content_type":"text/x-python","patch_set":9,"id":"5f82c70f_ab572e58","line":370,"range":{"start_line":370,"start_character":50,"end_line":370,"end_character":62},"updated":"2022-07-25 21:21:04.000000000","message":"this doesn\u0027t make sense, it\u0027s by definition \"None\" if not set. maybe we want {} ?","commit_id":"c3a4ca5fb1d71ad33e23c496ca48efab781f9be6"},{"author":{"_account_id":32962,"name":"Jakob Meng","email":"code@jakobmeng.de","username":"jakobmeng@web.de"},"change_message_id":"8199155ea66eec48ae38c03c357317e112d9a318","unresolved":false,"context_lines":[{"line_number":367,"context_line":"    argument_spec \u003d dict("},{"line_number":368,"context_line":"        name\u003ddict(required\u003dFalse, aliases\u003d[\u0027server\u0027]),"},{"line_number":369,"context_line":"        detailed\u003ddict(required\u003dFalse, type\u003d\u0027bool\u0027, default\u003dFalse),"},{"line_number":370,"context_line":"        filters\u003ddict(required\u003dFalse, type\u003d\u0027dict\u0027, default\u003dNone),"},{"line_number":371,"context_line":"        all_projects\u003ddict(required\u003dFalse, type\u003d\u0027bool\u0027, default\u003dFalse),"},{"line_number":372,"context_line":"    )"},{"line_number":373,"context_line":"    module_kwargs \u003d dict("}],"source_content_type":"text/x-python","patch_set":9,"id":"4e22690b_6e05cedd","line":370,"range":{"start_line":370,"start_character":50,"end_line":370,"end_character":62},"in_reply_to":"5f82c70f_ab572e58","updated":"2022-07-26 07:43:00.000000000","message":"Correct, dropped the default parameter.","commit_id":"c3a4ca5fb1d71ad33e23c496ca48efab781f9be6"},{"author":{"_account_id":10969,"name":"Shnaidman Sagi (Sergey)","display_name":"Shnaidman Sagi","email":"sshnaidm@redhat.com","username":"sergsh"},"change_message_id":"a201b8c9fb2fe068fcf0ccd49fdd1f3f3f80245b","unresolved":true,"context_lines":[{"line_number":368,"context_line":"        name\u003ddict(required\u003dFalse, aliases\u003d[\u0027server\u0027]),"},{"line_number":369,"context_line":"        detailed\u003ddict(required\u003dFalse, type\u003d\u0027bool\u0027, default\u003dFalse),"},{"line_number":370,"context_line":"        filters\u003ddict(required\u003dFalse, type\u003d\u0027dict\u0027, default\u003dNone),"},{"line_number":371,"context_line":"        all_projects\u003ddict(required\u003dFalse, type\u003d\u0027bool\u0027, default\u003dFalse),"},{"line_number":372,"context_line":"    )"},{"line_number":373,"context_line":"    module_kwargs \u003d dict("},{"line_number":374,"context_line":"        supports_check_mode\u003dTrue"}],"source_content_type":"text/x-python","patch_set":9,"id":"0159cda5_0f4ad9a0","line":371,"range":{"start_line":371,"start_character":27,"end_line":371,"end_character":40},"updated":"2022-07-25 21:21:04.000000000","message":"ditto about \"required\"","commit_id":"c3a4ca5fb1d71ad33e23c496ca48efab781f9be6"},{"author":{"_account_id":32962,"name":"Jakob Meng","email":"code@jakobmeng.de","username":"jakobmeng@web.de"},"change_message_id":"8199155ea66eec48ae38c03c357317e112d9a318","unresolved":false,"context_lines":[{"line_number":368,"context_line":"        name\u003ddict(required\u003dFalse, aliases\u003d[\u0027server\u0027]),"},{"line_number":369,"context_line":"        detailed\u003ddict(required\u003dFalse, type\u003d\u0027bool\u0027, default\u003dFalse),"},{"line_number":370,"context_line":"        filters\u003ddict(required\u003dFalse, type\u003d\u0027dict\u0027, default\u003dNone),"},{"line_number":371,"context_line":"        all_projects\u003ddict(required\u003dFalse, type\u003d\u0027bool\u0027, default\u003dFalse),"},{"line_number":372,"context_line":"    )"},{"line_number":373,"context_line":"    module_kwargs \u003d dict("},{"line_number":374,"context_line":"        supports_check_mode\u003dTrue"}],"source_content_type":"text/x-python","patch_set":9,"id":"603dbc9f_665a0a6f","line":371,"range":{"start_line":371,"start_character":27,"end_line":371,"end_character":40},"in_reply_to":"0159cda5_0f4ad9a0","updated":"2022-07-26 07:43:00.000000000","message":"Done","commit_id":"c3a4ca5fb1d71ad33e23c496ca48efab781f9be6"},{"author":{"_account_id":10969,"name":"Shnaidman Sagi (Sergey)","display_name":"Shnaidman Sagi","email":"sshnaidm@redhat.com","username":"sergsh"},"change_message_id":"a201b8c9fb2fe068fcf0ccd49fdd1f3f3f80245b","unresolved":true,"context_lines":[{"line_number":375,"context_line":"    )"},{"line_number":376,"context_line":""},{"line_number":377,"context_line":"    def run(self):"},{"line_number":378,"context_line":"        args \u003d dict(name_or_id\u003dself.params[\u0027name\u0027])"},{"line_number":379,"context_line":"        for k in [\u0027detailed\u0027, \u0027filters\u0027, \u0027all_projects\u0027]:"},{"line_number":380,"context_line":"            args[k] \u003d self.params[k]"},{"line_number":381,"context_line":""}],"source_content_type":"text/x-python","patch_set":9,"id":"8228bb6a_d0eb125e","line":378,"range":{"start_line":378,"start_character":8,"end_line":378,"end_character":12},"updated":"2022-07-25 21:21:04.000000000","message":"in Python we usually name dicrionary \"kwargs\", might be confusing","commit_id":"c3a4ca5fb1d71ad33e23c496ca48efab781f9be6"},{"author":{"_account_id":32962,"name":"Jakob Meng","email":"code@jakobmeng.de","username":"jakobmeng@web.de"},"change_message_id":"8199155ea66eec48ae38c03c357317e112d9a318","unresolved":false,"context_lines":[{"line_number":375,"context_line":"    )"},{"line_number":376,"context_line":""},{"line_number":377,"context_line":"    def run(self):"},{"line_number":378,"context_line":"        args \u003d dict(name_or_id\u003dself.params[\u0027name\u0027])"},{"line_number":379,"context_line":"        for k in [\u0027detailed\u0027, \u0027filters\u0027, \u0027all_projects\u0027]:"},{"line_number":380,"context_line":"            args[k] \u003d self.params[k]"},{"line_number":381,"context_line":""}],"source_content_type":"text/x-python","patch_set":9,"id":"9fe710e7_20097d4b","line":378,"range":{"start_line":378,"start_character":8,"end_line":378,"end_character":12},"in_reply_to":"8228bb6a_d0eb125e","updated":"2022-07-26 07:43:00.000000000","message":"Who gets confused by such a variable name should not touch our code.\n\nBut changed it for consistency with other Python code.","commit_id":"c3a4ca5fb1d71ad33e23c496ca48efab781f9be6"},{"author":{"_account_id":34208,"name":"Rafael Castillo","email":"rcastill@redhat.com","username":"rcastill"},"change_message_id":"6de1c8e52587f6df952f60f6b1f46b83fa9aef80","unresolved":true,"context_lines":[{"line_number":64,"context_line":"\u0027\u0027\u0027"},{"line_number":65,"context_line":""},{"line_number":66,"context_line":"RETURN \u003d \u0027\u0027\u0027"},{"line_number":67,"context_line":"servers:"},{"line_number":68,"context_line":"    description: List of servers matching the filters"},{"line_number":69,"context_line":"    elements: dict"},{"line_number":70,"context_line":"    type: list"}],"source_content_type":"text/x-python","patch_set":11,"id":"ce75da55_19b1207f","line":67,"updated":"2022-07-26 21:02:09.000000000","message":"nit: reindent with 2 spaces","commit_id":"f0da67e6f65cc9d6b9254ac5db1c19490f31f327"},{"author":{"_account_id":32962,"name":"Jakob Meng","email":"code@jakobmeng.de","username":"jakobmeng@web.de"},"change_message_id":"b4fb2a44e044af7957f8afff756601bfa5112bf1","unresolved":false,"context_lines":[{"line_number":64,"context_line":"\u0027\u0027\u0027"},{"line_number":65,"context_line":""},{"line_number":66,"context_line":"RETURN \u003d \u0027\u0027\u0027"},{"line_number":67,"context_line":"servers:"},{"line_number":68,"context_line":"    description: List of servers matching the filters"},{"line_number":69,"context_line":"    elements: dict"},{"line_number":70,"context_line":"    type: list"}],"source_content_type":"text/x-python","patch_set":11,"id":"7adf70c0_73bc84d9","line":67,"in_reply_to":"ce75da55_19b1207f","updated":"2022-07-27 10:15:15.000000000","message":"Indentation across the modules and ci roles is wild and inconsistent. I tried to follow Ansible\u0027s documentation here which is using 4 spaces for RETURN values.\n\nhttps://docs.ansible.com/ansible/latest/dev_guide/developing_modules_documenting.html","commit_id":"f0da67e6f65cc9d6b9254ac5db1c19490f31f327"},{"author":{"_account_id":34208,"name":"Rafael Castillo","email":"rcastill@redhat.com","username":"rcastill"},"change_message_id":"6de1c8e52587f6df952f60f6b1f46b83fa9aef80","unresolved":true,"context_lines":[{"line_number":377,"context_line":"    def run(self):"},{"line_number":378,"context_line":"        kwargs \u003d dict(name_or_id\u003dself.params[\u0027name\u0027])"},{"line_number":379,"context_line":"        for k in [\u0027detailed\u0027, \u0027filters\u0027, \u0027all_projects\u0027]:"},{"line_number":380,"context_line":"            kwargs[k] \u003d self.params[k]"},{"line_number":381,"context_line":""},{"line_number":382,"context_line":"        self.exit(changed\u003dFalse,"},{"line_number":383,"context_line":"                  servers\u003d[server.to_dict(computed\u003dFalse) for server in"}],"source_content_type":"text/x-python","patch_set":11,"id":"2cac003e_77022679","line":380,"updated":"2022-07-26 21:02:09.000000000","message":"Should we check if these are None before we pass them to the sdk?","commit_id":"f0da67e6f65cc9d6b9254ac5db1c19490f31f327"},{"author":{"_account_id":32962,"name":"Jakob Meng","email":"code@jakobmeng.de","username":"jakobmeng@web.de"},"change_message_id":"b4fb2a44e044af7957f8afff756601bfa5112bf1","unresolved":false,"context_lines":[{"line_number":377,"context_line":"    def run(self):"},{"line_number":378,"context_line":"        kwargs \u003d dict(name_or_id\u003dself.params[\u0027name\u0027])"},{"line_number":379,"context_line":"        for k in [\u0027detailed\u0027, \u0027filters\u0027, \u0027all_projects\u0027]:"},{"line_number":380,"context_line":"            kwargs[k] \u003d self.params[k]"},{"line_number":381,"context_line":""},{"line_number":382,"context_line":"        self.exit(changed\u003dFalse,"},{"line_number":383,"context_line":"                  servers\u003d[server.to_dict(computed\u003dFalse) for server in"}],"source_content_type":"text/x-python","patch_set":11,"id":"630e0baa_ce37e91e","line":380,"in_reply_to":"2cac003e_77022679","updated":"2022-07-27 10:15:15.000000000","message":"True.","commit_id":"f0da67e6f65cc9d6b9254ac5db1c19490f31f327"}]}
