)]}'
{"/PATCHSET_LEVEL":[{"author":{"_account_id":32053,"name":"Denys Mishchenko","email":"denis@mischenko.org.ua","username":"arddennis"},"change_message_id":"198382d1f621f600da6a2b8a9e14bc1db47a729c","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":4,"id":"deac7efd_b1fd70e5","updated":"2022-10-26 17:35:32.000000000","message":"I am not sure that ...image.update_image(image.id... is a good idea, but I didn\u0027t managed to workaround it in any other manner. Always result in 409 resource conflict. At the end id refer to exact image, so might be enough.\n\nAs for the other changes, they are mostly to fix logic when update_payload being overwritten if this option is not in properties argument and defined as a is_protected argument. Visibility on existing images was ignored at all.","commit_id":"32a29aeef0376ce261c904e955975f6e753e8b6a"},{"author":{"_account_id":32962,"name":"Jakob Meng","email":"code@jakobmeng.de","username":"jakobmeng@web.de"},"change_message_id":"1910a946186ee929eb7e7d6ace9d428eefabb6d7","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":5,"id":"ccfc0687_b106bc70","updated":"2022-10-26 18:47:28.000000000","message":"Thank you for your patch, Denys! Added a couple of comments below and voted \u0027-1\u0027 simply to mark it as \"needs more work\".","commit_id":"b50132027b505e526810f91cfe7f0e75a611a5d3"},{"author":{"_account_id":32053,"name":"Denys Mishchenko","email":"denis@mischenko.org.ua","username":"arddennis"},"change_message_id":"431776bb5fa3b05abcc912527b140437add76ac7","unresolved":true,"context_lines":[],"source_content_type":"","patch_set":8,"id":"62dafd81_61fef259","updated":"2022-10-26 21:08:12.000000000","message":"I tried to fix according to comments. Still have a questions: \n- regarding initial checksum definition as empty list\n- documentation update. Clarifications needed.","commit_id":"bbcddf4332d251e9b668825a3769087c610e6e37"},{"author":{"_account_id":32053,"name":"Denys Mishchenko","email":"denis@mischenko.org.ua","username":"arddennis"},"change_message_id":"3ed917440a23cc40cd647bcbd4299ff78d4f172d","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":8,"id":"f3feac96_7c7cb59c","in_reply_to":"62dafd81_61fef259","updated":"2022-11-02 13:24:09.000000000","message":"Done","commit_id":"bbcddf4332d251e9b668825a3769087c610e6e37"},{"author":{"_account_id":32962,"name":"Jakob Meng","email":"code@jakobmeng.de","username":"jakobmeng@web.de"},"change_message_id":"980ef9dae7f36cb089dd93184e3da598ae38caeb","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":13,"id":"990315c8_10e2d62b","updated":"2022-10-28 12:30:48.000000000","message":"Latest patchset readds code to update kernel and ramdisk because this works in devstack, see ci output of https://review.opendev.org/c/openstack/ansible-collections-openstack/+/862864","commit_id":"86ff66165f6ebf934a1b7bc1b7ab8a7e80ec4a9d"},{"author":{"_account_id":32053,"name":"Denys Mishchenko","email":"denis@mischenko.org.ua","username":"arddennis"},"change_message_id":"2aa055ad6614a5f5bbac26b43c904fab99c087a2","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":13,"id":"4c71c4a9_d5c1972e","updated":"2022-10-30 21:27:25.000000000","message":"it works for me and looks good. I thought we are waiting on the image.id instead of image object comment. Either solve it on the skd side and change back to use of the object or agree with (at least temporary) use of image.id.\n\nFor me it is already OK","commit_id":"86ff66165f6ebf934a1b7bc1b7ab8a7e80ec4a9d"}],"plugins/modules/image.py":[{"author":{"_account_id":32962,"name":"Jakob Meng","email":"code@jakobmeng.de","username":"jakobmeng@web.de"},"change_message_id":"1910a946186ee929eb7e7d6ace9d428eefabb6d7","unresolved":true,"context_lines":[{"line_number":507,"context_line":""},{"line_number":508,"context_line":"    def _build_update(self, image):"},{"line_number":509,"context_line":"        if self.params[\u0027is_protected\u0027] is not None and \\"},{"line_number":510,"context_line":"           self.params[\u0027is_protected\u0027] !\u003d image[\u0027is_protected\u0027]:"},{"line_number":511,"context_line":"            update_payload \u003d dict(is_protected\u003dself.params[\u0027is_protected\u0027])"},{"line_number":512,"context_line":"        else:"},{"line_number":513,"context_line":"            update_payload \u003d dict()"}],"source_content_type":"text/x-python","patch_set":5,"id":"243e8b06_6a8cb464","line":510,"updated":"2022-10-26 18:47:28.000000000","message":"This check is not necessary because line 517 does exactly that.","commit_id":"b50132027b505e526810f91cfe7f0e75a611a5d3"},{"author":{"_account_id":32053,"name":"Denys Mishchenko","email":"denis@mischenko.org.ua","username":"arddennis"},"change_message_id":"431776bb5fa3b05abcc912527b140437add76ac7","unresolved":true,"context_lines":[{"line_number":507,"context_line":""},{"line_number":508,"context_line":"    def _build_update(self, image):"},{"line_number":509,"context_line":"        if self.params[\u0027is_protected\u0027] is not None and \\"},{"line_number":510,"context_line":"           self.params[\u0027is_protected\u0027] !\u003d image[\u0027is_protected\u0027]:"},{"line_number":511,"context_line":"            update_payload \u003d dict(is_protected\u003dself.params[\u0027is_protected\u0027])"},{"line_number":512,"context_line":"        else:"},{"line_number":513,"context_line":"            update_payload \u003d dict()"}],"source_content_type":"text/x-python","patch_set":5,"id":"34d55b6f_4d433212","line":510,"in_reply_to":"243e8b06_6a8cb464","updated":"2022-10-26 21:08:12.000000000","message":"indeed. For some reason I started to debug why protected and visibility is not being changed and didn\u0027t pay attention that the same var is being updated.","commit_id":"b50132027b505e526810f91cfe7f0e75a611a5d3"},{"author":{"_account_id":32962,"name":"Jakob Meng","email":"code@jakobmeng.de","username":"jakobmeng@web.de"},"change_message_id":"5ca758206a5dadc62aa6829d16a72234ad50aee8","unresolved":false,"context_lines":[{"line_number":507,"context_line":""},{"line_number":508,"context_line":"    def _build_update(self, image):"},{"line_number":509,"context_line":"        if self.params[\u0027is_protected\u0027] is not None and \\"},{"line_number":510,"context_line":"           self.params[\u0027is_protected\u0027] !\u003d image[\u0027is_protected\u0027]:"},{"line_number":511,"context_line":"            update_payload \u003d dict(is_protected\u003dself.params[\u0027is_protected\u0027])"},{"line_number":512,"context_line":"        else:"},{"line_number":513,"context_line":"            update_payload \u003d dict()"}],"source_content_type":"text/x-python","patch_set":5,"id":"d70dad2e_aa71f529","line":510,"in_reply_to":"34d55b6f_4d433212","updated":"2022-10-28 07:56:03.000000000","message":"Done","commit_id":"b50132027b505e526810f91cfe7f0e75a611a5d3"},{"author":{"_account_id":32962,"name":"Jakob Meng","email":"code@jakobmeng.de","username":"jakobmeng@web.de"},"change_message_id":"1910a946186ee929eb7e7d6ace9d428eefabb6d7","unresolved":true,"context_lines":[{"line_number":518,"context_line":"            k_image \u003d self.conn.image.find_image("},{"line_number":519,"context_line":"                name_or_id\u003dself.params[k], ignore_missing\u003dFalse)"},{"line_number":520,"context_line":"            update_payload[k_id] \u003d k_image.id"},{"line_number":521,"context_line":"        update_payload.update({k: v for k, v in update_payload.items()"},{"line_number":522,"context_line":"                               if v is not None and image[k] !\u003d v})"},{"line_number":523,"context_line":"        for p, v in self.params[\u0027properties\u0027].items():"},{"line_number":524,"context_line":"            if p not in image or image[p] !\u003d v:"}],"source_content_type":"text/x-python","patch_set":5,"id":"e2682ea6_ce5e8d47","line":521,"updated":"2022-10-26 18:47:28.000000000","message":"The previous code worked just fine, why replace it?","commit_id":"b50132027b505e526810f91cfe7f0e75a611a5d3"},{"author":{"_account_id":32962,"name":"Jakob Meng","email":"code@jakobmeng.de","username":"jakobmeng@web.de"},"change_message_id":"5ca758206a5dadc62aa6829d16a72234ad50aee8","unresolved":false,"context_lines":[{"line_number":518,"context_line":"            k_image \u003d self.conn.image.find_image("},{"line_number":519,"context_line":"                name_or_id\u003dself.params[k], ignore_missing\u003dFalse)"},{"line_number":520,"context_line":"            update_payload[k_id] \u003d k_image.id"},{"line_number":521,"context_line":"        update_payload.update({k: v for k, v in update_payload.items()"},{"line_number":522,"context_line":"                               if v is not None and image[k] !\u003d v})"},{"line_number":523,"context_line":"        for p, v in self.params[\u0027properties\u0027].items():"},{"line_number":524,"context_line":"            if p not in image or image[p] !\u003d v:"}],"source_content_type":"text/x-python","patch_set":5,"id":"40284c41_86a6caff","line":521,"in_reply_to":"9125533e_add99f5c","updated":"2022-10-28 07:56:03.000000000","message":"Done","commit_id":"b50132027b505e526810f91cfe7f0e75a611a5d3"},{"author":{"_account_id":32053,"name":"Denys Mishchenko","email":"denis@mischenko.org.ua","username":"arddennis"},"change_message_id":"431776bb5fa3b05abcc912527b140437add76ac7","unresolved":true,"context_lines":[{"line_number":518,"context_line":"            k_image \u003d self.conn.image.find_image("},{"line_number":519,"context_line":"                name_or_id\u003dself.params[k], ignore_missing\u003dFalse)"},{"line_number":520,"context_line":"            update_payload[k_id] \u003d k_image.id"},{"line_number":521,"context_line":"        update_payload.update({k: v for k, v in update_payload.items()"},{"line_number":522,"context_line":"                               if v is not None and image[k] !\u003d v})"},{"line_number":523,"context_line":"        for p, v in self.params[\u0027properties\u0027].items():"},{"line_number":524,"context_line":"            if p not in image or image[p] !\u003d v:"}],"source_content_type":"text/x-python","patch_set":5,"id":"9125533e_add99f5c","line":521,"in_reply_to":"e2682ea6_ce5e8d47","updated":"2022-10-26 21:08:12.000000000","message":"same as previously. This code indeed works fine.","commit_id":"b50132027b505e526810f91cfe7f0e75a611a5d3"},{"author":{"_account_id":32962,"name":"Jakob Meng","email":"code@jakobmeng.de","username":"jakobmeng@web.de"},"change_message_id":"1910a946186ee929eb7e7d6ace9d428eefabb6d7","unresolved":true,"context_lines":[{"line_number":526,"context_line":"        if (self.params[\u0027tags\u0027]"},{"line_number":527,"context_line":"                and set(image[\u0027tags\u0027]) !\u003d set(self.params[\u0027tags\u0027])):"},{"line_number":528,"context_line":"            update_payload[\u0027tags\u0027] \u003d self.params[\u0027tags\u0027]"},{"line_number":529,"context_line":"        visibility \u003d self._resolve_visibility()"},{"line_number":530,"context_line":"        if visibility and image[\u0027visibility\u0027] !\u003d visibility:"},{"line_number":531,"context_line":"            update_payload[\u0027visibility\u0027] \u003d visibility"},{"line_number":532,"context_line":"        # If both name and id are defined,then we might change the name"}],"source_content_type":"text/x-python","patch_set":5,"id":"38677e5d_871e99b9","line":529,"updated":"2022-10-26 18:47:28.000000000","message":"Better assign it in the first line of this function like is_protected is handled. This saves a lot of code.","commit_id":"b50132027b505e526810f91cfe7f0e75a611a5d3"},{"author":{"_account_id":32053,"name":"Denys Mishchenko","email":"denis@mischenko.org.ua","username":"arddennis"},"change_message_id":"431776bb5fa3b05abcc912527b140437add76ac7","unresolved":true,"context_lines":[{"line_number":526,"context_line":"        if (self.params[\u0027tags\u0027]"},{"line_number":527,"context_line":"                and set(image[\u0027tags\u0027]) !\u003d set(self.params[\u0027tags\u0027])):"},{"line_number":528,"context_line":"            update_payload[\u0027tags\u0027] \u003d self.params[\u0027tags\u0027]"},{"line_number":529,"context_line":"        visibility \u003d self._resolve_visibility()"},{"line_number":530,"context_line":"        if visibility and image[\u0027visibility\u0027] !\u003d visibility:"},{"line_number":531,"context_line":"            update_payload[\u0027visibility\u0027] \u003d visibility"},{"line_number":532,"context_line":"        # If both name and id are defined,then we might change the name"}],"source_content_type":"text/x-python","patch_set":5,"id":"570c9692_63ceffdb","line":529,"in_reply_to":"38677e5d_871e99b9","updated":"2022-10-26 21:08:12.000000000","message":"moved to the dict declaration. I am curious, why don\u0027t process all available params? Initially it was only is_protected, then I added visibility. What about min_disk and min_ram?","commit_id":"b50132027b505e526810f91cfe7f0e75a611a5d3"},{"author":{"_account_id":32962,"name":"Jakob Meng","email":"code@jakobmeng.de","username":"jakobmeng@web.de"},"change_message_id":"2778da7ebd13e9352d4235ac83bf0d54b52d1429","unresolved":false,"context_lines":[{"line_number":526,"context_line":"        if (self.params[\u0027tags\u0027]"},{"line_number":527,"context_line":"                and set(image[\u0027tags\u0027]) !\u003d set(self.params[\u0027tags\u0027])):"},{"line_number":528,"context_line":"            update_payload[\u0027tags\u0027] \u003d self.params[\u0027tags\u0027]"},{"line_number":529,"context_line":"        visibility \u003d self._resolve_visibility()"},{"line_number":530,"context_line":"        if visibility and image[\u0027visibility\u0027] !\u003d visibility:"},{"line_number":531,"context_line":"            update_payload[\u0027visibility\u0027] \u003d visibility"},{"line_number":532,"context_line":"        # If both name and id are defined,then we might change the name"}],"source_content_type":"text/x-python","patch_set":5,"id":"2a0ba205_57d53789","line":529,"in_reply_to":"570c9692_63ceffdb","updated":"2022-10-28 08:04:34.000000000","message":"Latest patchset does so. Main reason simply is that nobody cared to implement this update 😬","commit_id":"b50132027b505e526810f91cfe7f0e75a611a5d3"},{"author":{"_account_id":32962,"name":"Jakob Meng","email":"code@jakobmeng.de","username":"jakobmeng@web.de"},"change_message_id":"1910a946186ee929eb7e7d6ace9d428eefabb6d7","unresolved":true,"context_lines":[{"line_number":529,"context_line":"        visibility \u003d self._resolve_visibility()"},{"line_number":530,"context_line":"        if visibility and image[\u0027visibility\u0027] !\u003d visibility:"},{"line_number":531,"context_line":"            update_payload[\u0027visibility\u0027] \u003d visibility"},{"line_number":532,"context_line":"        # If both name and id are defined,then we might change the name"},{"line_number":533,"context_line":"        if self.params[\u0027id\u0027] and \\"},{"line_number":534,"context_line":"           self.params[\u0027name\u0027] and \\"},{"line_number":535,"context_line":"           self.params[\u0027name\u0027] !\u003d image[\u0027name\u0027]:"}],"source_content_type":"text/x-python","patch_set":5,"id":"5bd9b411_9c9b66b7","line":532,"updated":"2022-10-26 18:47:28.000000000","message":"While we are at it, we should also mark in the docs above which parameters actually cannot be updated, like we did for server module.","commit_id":"b50132027b505e526810f91cfe7f0e75a611a5d3"},{"author":{"_account_id":10969,"name":"Shnaidman Sagi (Sergey)","display_name":"Shnaidman Sagi","email":"sshnaidm@redhat.com","username":"sergsh"},"change_message_id":"fa2c42eec93a0b5e344098052d81d3ba8df606e3","unresolved":true,"context_lines":[{"line_number":529,"context_line":"        visibility \u003d self._resolve_visibility()"},{"line_number":530,"context_line":"        if visibility and image[\u0027visibility\u0027] !\u003d visibility:"},{"line_number":531,"context_line":"            update_payload[\u0027visibility\u0027] \u003d visibility"},{"line_number":532,"context_line":"        # If both name and id are defined,then we might change the name"},{"line_number":533,"context_line":"        if self.params[\u0027id\u0027] and \\"},{"line_number":534,"context_line":"           self.params[\u0027name\u0027] and \\"},{"line_number":535,"context_line":"           self.params[\u0027name\u0027] !\u003d image[\u0027name\u0027]:"}],"source_content_type":"text/x-python","patch_set":5,"id":"e2fc043a_7bdc836a","line":532,"in_reply_to":"121c32f0_906ffab8","updated":"2022-10-27 16:25:31.000000000","message":"@Denys, I think it was meant to put comment in description of the parameter in DOCUMENTATION part if it can be updated or not. For example: https://opendev.org/openstack/ansible-collections-openstack/src/branch/master/plugins/modules/server.py#L115","commit_id":"b50132027b505e526810f91cfe7f0e75a611a5d3"},{"author":{"_account_id":32053,"name":"Denys Mishchenko","email":"denis@mischenko.org.ua","username":"arddennis"},"change_message_id":"431776bb5fa3b05abcc912527b140437add76ac7","unresolved":true,"context_lines":[{"line_number":529,"context_line":"        visibility \u003d self._resolve_visibility()"},{"line_number":530,"context_line":"        if visibility and image[\u0027visibility\u0027] !\u003d visibility:"},{"line_number":531,"context_line":"            update_payload[\u0027visibility\u0027] \u003d visibility"},{"line_number":532,"context_line":"        # If both name and id are defined,then we might change the name"},{"line_number":533,"context_line":"        if self.params[\u0027id\u0027] and \\"},{"line_number":534,"context_line":"           self.params[\u0027name\u0027] and \\"},{"line_number":535,"context_line":"           self.params[\u0027name\u0027] !\u003d image[\u0027name\u0027]:"}],"source_content_type":"text/x-python","patch_set":5,"id":"121c32f0_906ffab8","line":532,"in_reply_to":"5bd9b411_9c9b66b7","updated":"2022-10-26 21:08:12.000000000","message":"could you please elaborate a bit. I need to be able to rename images. If id is provided I think this should be possible.  Or you mean that id, file etc can\u0027t be used to update image updated?","commit_id":"b50132027b505e526810f91cfe7f0e75a611a5d3"},{"author":{"_account_id":32962,"name":"Jakob Meng","email":"code@jakobmeng.de","username":"jakobmeng@web.de"},"change_message_id":"5ca758206a5dadc62aa6829d16a72234ad50aee8","unresolved":false,"context_lines":[{"line_number":529,"context_line":"        visibility \u003d self._resolve_visibility()"},{"line_number":530,"context_line":"        if visibility and image[\u0027visibility\u0027] !\u003d visibility:"},{"line_number":531,"context_line":"            update_payload[\u0027visibility\u0027] \u003d visibility"},{"line_number":532,"context_line":"        # If both name and id are defined,then we might change the name"},{"line_number":533,"context_line":"        if self.params[\u0027id\u0027] and \\"},{"line_number":534,"context_line":"           self.params[\u0027name\u0027] and \\"},{"line_number":535,"context_line":"           self.params[\u0027name\u0027] !\u003d image[\u0027name\u0027]:"}],"source_content_type":"text/x-python","patch_set":5,"id":"f33e3807_5c63f0cd","line":532,"in_reply_to":"e2fc043a_7bdc836a","updated":"2022-10-28 07:56:03.000000000","message":"Yeah, this comment was more towards Rafael and me. But thank you for updating the DOCUMENTATION string anyway :D","commit_id":"b50132027b505e526810f91cfe7f0e75a611a5d3"},{"author":{"_account_id":32962,"name":"Jakob Meng","email":"code@jakobmeng.de","username":"jakobmeng@web.de"},"change_message_id":"1910a946186ee929eb7e7d6ace9d428eefabb6d7","unresolved":true,"context_lines":[{"line_number":533,"context_line":"        if self.params[\u0027id\u0027] and \\"},{"line_number":534,"context_line":"           self.params[\u0027name\u0027] and \\"},{"line_number":535,"context_line":"           self.params[\u0027name\u0027] !\u003d image[\u0027name\u0027]:"},{"line_number":536,"context_line":"            update_payload[\u0027name\u0027] \u003d self.params[\u0027name\u0027]"},{"line_number":537,"context_line":"        return update_payload"},{"line_number":538,"context_line":""},{"line_number":539,"context_line":"    def run(self):"}],"source_content_type":"text/x-python","patch_set":5,"id":"790a3ca1_714dbbe6","line":536,"updated":"2022-10-26 18:47:28.000000000","message":"Please add tests for updating the name and changing the visibility to [1].\n\n[1] https://opendev.org/openstack/ansible-collections-openstack/src/branch/master/ci/roles/image/tasks/main.yml","commit_id":"b50132027b505e526810f91cfe7f0e75a611a5d3"},{"author":{"_account_id":32962,"name":"Jakob Meng","email":"code@jakobmeng.de","username":"jakobmeng@web.de"},"change_message_id":"2778da7ebd13e9352d4235ac83bf0d54b52d1429","unresolved":false,"context_lines":[{"line_number":533,"context_line":"        if self.params[\u0027id\u0027] and \\"},{"line_number":534,"context_line":"           self.params[\u0027name\u0027] and \\"},{"line_number":535,"context_line":"           self.params[\u0027name\u0027] !\u003d image[\u0027name\u0027]:"},{"line_number":536,"context_line":"            update_payload[\u0027name\u0027] \u003d self.params[\u0027name\u0027]"},{"line_number":537,"context_line":"        return update_payload"},{"line_number":538,"context_line":""},{"line_number":539,"context_line":"    def run(self):"}],"source_content_type":"text/x-python","patch_set":5,"id":"114356cd_e3f17a55","line":536,"in_reply_to":"790a3ca1_714dbbe6","updated":"2022-10-28 08:04:34.000000000","message":"Thank you very much 😄","commit_id":"b50132027b505e526810f91cfe7f0e75a611a5d3"},{"author":{"_account_id":32962,"name":"Jakob Meng","email":"code@jakobmeng.de","username":"jakobmeng@web.de"},"change_message_id":"1910a946186ee929eb7e7d6ace9d428eefabb6d7","unresolved":true,"context_lines":[{"line_number":558,"context_line":""},{"line_number":559,"context_line":"        image \u003d None"},{"line_number":560,"context_line":"        if image_name_or_id:"},{"line_number":561,"context_line":"            image \u003d self.conn.image.find_image(image_name_or_id)"},{"line_number":562,"context_line":""},{"line_number":563,"context_line":"        changed \u003d False"},{"line_number":564,"context_line":"        if self.params[\u0027state\u0027] \u003d\u003d \u0027present\u0027:"}],"source_content_type":"text/x-python","patch_set":5,"id":"5d79f4ec_db68eb30","line":561,"updated":"2022-10-26 18:47:28.000000000","message":"Good catch! Why wasnt this caught by CI? 😕\n\nSimply removing image_filters is not the solution though, it is still a module parameter. We probably want to keep it for backward compat and change this find_image call instead. Any opinions, Rafael?","commit_id":"b50132027b505e526810f91cfe7f0e75a611a5d3"},{"author":{"_account_id":32962,"name":"Jakob Meng","email":"code@jakobmeng.de","username":"jakobmeng@web.de"},"change_message_id":"901ae9eef20fc0186a942eac5a4283b71d9851ca","unresolved":false,"context_lines":[{"line_number":558,"context_line":""},{"line_number":559,"context_line":"        image \u003d None"},{"line_number":560,"context_line":"        if image_name_or_id:"},{"line_number":561,"context_line":"            image \u003d self.conn.image.find_image(image_name_or_id)"},{"line_number":562,"context_line":""},{"line_number":563,"context_line":"        changed \u003d False"},{"line_number":564,"context_line":"        if self.params[\u0027state\u0027] \u003d\u003d \u0027present\u0027:"}],"source_content_type":"text/x-python","patch_set":5,"id":"f66cb024_2b45c18d","line":561,"in_reply_to":"134ca4fe_9553a5a3","updated":"2022-10-28 08:42:59.000000000","message":"Reverted to sdk\u0027s cloud layer function get_image() because that is the only function providing a filters argument.","commit_id":"b50132027b505e526810f91cfe7f0e75a611a5d3"},{"author":{"_account_id":34208,"name":"Rafael Castillo","email":"rcastill@redhat.com","username":"rcastill"},"change_message_id":"a24f23cefaebe9893e849b2dc8f8f49b5fb10a70","unresolved":true,"context_lines":[{"line_number":558,"context_line":""},{"line_number":559,"context_line":"        image \u003d None"},{"line_number":560,"context_line":"        if image_name_or_id:"},{"line_number":561,"context_line":"            image \u003d self.conn.image.find_image(image_name_or_id)"},{"line_number":562,"context_line":""},{"line_number":563,"context_line":"        changed \u003d False"},{"line_number":564,"context_line":"        if self.params[\u0027state\u0027] \u003d\u003d \u0027present\u0027:"}],"source_content_type":"text/x-python","patch_set":5,"id":"d0691bca_b78ab5d4","line":561,"in_reply_to":"5d79f4ec_db68eb30","updated":"2022-10-26 19:02:36.000000000","message":"Yes, it seems I missed this. We might want to switch to cloud layer here and add a test for the checksum functionality.","commit_id":"b50132027b505e526810f91cfe7f0e75a611a5d3"},{"author":{"_account_id":32053,"name":"Denys Mishchenko","email":"denis@mischenko.org.ua","username":"arddennis"},"change_message_id":"431776bb5fa3b05abcc912527b140437add76ac7","unresolved":true,"context_lines":[{"line_number":558,"context_line":""},{"line_number":559,"context_line":"        image \u003d None"},{"line_number":560,"context_line":"        if image_name_or_id:"},{"line_number":561,"context_line":"            image \u003d self.conn.image.find_image(image_name_or_id)"},{"line_number":562,"context_line":""},{"line_number":563,"context_line":"        changed \u003d False"},{"line_number":564,"context_line":"        if self.params[\u0027state\u0027] \u003d\u003d \u0027present\u0027:"}],"source_content_type":"text/x-python","patch_set":5,"id":"134ca4fe_9553a5a3","line":561,"in_reply_to":"d0691bca_b78ab5d4","updated":"2022-10-26 21:08:12.000000000","message":"I proposed the fix. Also there was a typo where instead of checksum empty list was always assigned. Or I didn\u0027t manage to understand how actual checksum is passed to find_image function.","commit_id":"b50132027b505e526810f91cfe7f0e75a611a5d3"},{"author":{"_account_id":32962,"name":"Jakob Meng","email":"code@jakobmeng.de","username":"jakobmeng@web.de"},"change_message_id":"1910a946186ee929eb7e7d6ace9d428eefabb6d7","unresolved":true,"context_lines":[{"line_number":577,"context_line":"            update_payload \u003d self._build_update(image)"},{"line_number":578,"context_line":""},{"line_number":579,"context_line":"            if update_payload:"},{"line_number":580,"context_line":"                # object results in 409 conflict response, while id refers to"},{"line_number":581,"context_line":"                # exact image to be updated and works. Might be related to skd issue"},{"line_number":582,"context_line":"                self.conn.image.update_image(image.id, **update_payload)"},{"line_number":583,"context_line":"                changed \u003d True"}],"source_content_type":"text/x-python","patch_set":5,"id":"006189ce_cbc85560","line":580,"updated":"2022-10-26 18:47:28.000000000","message":"This works as expected [1]. Which version of openstacksdk are you using?\n\n[1] https://storage.bhs.cloud.ovh.net/v1/AUTH_dcaab5e32b234d56b626f72581e3644c/zuul_opendev_logs_ce7/861955/4/check/ansible-collections-openstack-functional-devstack/ce73292/job-output.txt","commit_id":"b50132027b505e526810f91cfe7f0e75a611a5d3"},{"author":{"_account_id":34208,"name":"Rafael Castillo","email":"rcastill@redhat.com","username":"rcastill"},"change_message_id":"a24f23cefaebe9893e849b2dc8f8f49b5fb10a70","unresolved":true,"context_lines":[{"line_number":577,"context_line":"            update_payload \u003d self._build_update(image)"},{"line_number":578,"context_line":""},{"line_number":579,"context_line":"            if update_payload:"},{"line_number":580,"context_line":"                # object results in 409 conflict response, while id refers to"},{"line_number":581,"context_line":"                # exact image to be updated and works. Might be related to skd issue"},{"line_number":582,"context_line":"                self.conn.image.update_image(image.id, **update_payload)"},{"line_number":583,"context_line":"                changed \u003d True"}],"source_content_type":"text/x-python","patch_set":5,"id":"c9a5291e_17c61604","line":580,"in_reply_to":"006189ce_cbc85560","updated":"2022-10-26 19:02:36.000000000","message":"It might also be useful to know what cloud it\u0027s happening in (if it\u0027s public).","commit_id":"b50132027b505e526810f91cfe7f0e75a611a5d3"},{"author":{"_account_id":32053,"name":"Denys Mishchenko","email":"denis@mischenko.org.ua","username":"arddennis"},"change_message_id":"431776bb5fa3b05abcc912527b140437add76ac7","unresolved":true,"context_lines":[{"line_number":577,"context_line":"            update_payload \u003d self._build_update(image)"},{"line_number":578,"context_line":""},{"line_number":579,"context_line":"            if update_payload:"},{"line_number":580,"context_line":"                # object results in 409 conflict response, while id refers to"},{"line_number":581,"context_line":"                # exact image to be updated and works. Might be related to skd issue"},{"line_number":582,"context_line":"                self.conn.image.update_image(image.id, **update_payload)"},{"line_number":583,"context_line":"                changed \u003d True"}],"source_content_type":"text/x-python","patch_set":5,"id":"4bc4be37_fc2bd8d4","line":580,"in_reply_to":"006189ce_cbc85560","updated":"2022-10-26 21:08:12.000000000","message":"openstacksdk\u003d\u003d0.102.0","commit_id":"b50132027b505e526810f91cfe7f0e75a611a5d3"},{"author":{"_account_id":32962,"name":"Jakob Meng","email":"code@jakobmeng.de","username":"jakobmeng@web.de"},"change_message_id":"b091ac018207a8799d9c01024d5875a782768b9c","unresolved":true,"context_lines":[{"line_number":577,"context_line":"            update_payload \u003d self._build_update(image)"},{"line_number":578,"context_line":""},{"line_number":579,"context_line":"            if update_payload:"},{"line_number":580,"context_line":"                # object results in 409 conflict response, while id refers to"},{"line_number":581,"context_line":"                # exact image to be updated and works. Might be related to skd issue"},{"line_number":582,"context_line":"                self.conn.image.update_image(image.id, **update_payload)"},{"line_number":583,"context_line":"                changed \u003d True"}],"source_content_type":"text/x-python","patch_set":5,"id":"23544e89_0ea86d12","line":580,"in_reply_to":"4bc4be37_fc2bd8d4","updated":"2022-10-28 12:32:20.000000000","message":"\u003e [28.10.22 11:22] \u003card_\u003e jm1: The script to reproduce https://paste.opendev.org/show/817369/\n\u003e [28.10.22 12:00] \u003card_\u003e jm1: gtema: here is a log output https://paste.opendev.org/show/bpAMU2si0ezvN8Ckf3KP/ I tried to sanitize it... but it is on the sandbox in a private network, so should not have any sensitive data.\n\u003e [28.10.22 14:04] \u003cgtema\u003e jm1 ard_ - I am able to reproduce it now in the unittest, still digging where is it coming from. It is definitely a victim of magic properties handling","commit_id":"b50132027b505e526810f91cfe7f0e75a611a5d3"},{"author":{"_account_id":28619,"name":"Dmitriy Rabotyagov","email":"noonedeadpunk@gmail.com","username":"noonedeadpunk"},"change_message_id":"54c0217ebe4f4d84355c5be6a9d917385002c45f","unresolved":true,"context_lines":[{"line_number":21,"context_line":"   id:"},{"line_number":22,"context_line":"     description:"},{"line_number":23,"context_line":"        - The ID of the image when uploading an image"},{"line_number":24,"context_line":"        - This image attribute cannot be used to update the image"},{"line_number":25,"context_line":"     type: str"},{"line_number":26,"context_line":"   checksum:"},{"line_number":27,"context_line":"     description:"}],"source_content_type":"text/x-python","patch_set":13,"id":"8bb499e8_28146e7e","line":24,"range":{"start_line":24,"start_character":8,"end_line":24,"end_character":65},"updated":"2022-10-31 11:00:58.000000000","message":"When I read this it feels like user can not provide this attribute to the module if they want to update image. However looking at code I have impression that this attribute will be silently ignored during image payload update.\n\nThere\u0027s a typo -`cannot` vs `can not`.\n\nThus, I\u0027d suggest some re-phrasing, like:\n\n`This image attribute can not be updated` or `This image attribute will be silently ignored during image update`.","commit_id":"86ff66165f6ebf934a1b7bc1b7ab8a7e80ec4a9d"},{"author":{"_account_id":32962,"name":"Jakob Meng","email":"code@jakobmeng.de","username":"jakobmeng@web.de"},"change_message_id":"77ee4af1d5c50beecfbfdb8b24f2f83c93f9772d","unresolved":false,"context_lines":[{"line_number":21,"context_line":"   id:"},{"line_number":22,"context_line":"     description:"},{"line_number":23,"context_line":"        - The ID of the image when uploading an image"},{"line_number":24,"context_line":"        - This image attribute cannot be used to update the image"},{"line_number":25,"context_line":"     type: str"},{"line_number":26,"context_line":"   checksum:"},{"line_number":27,"context_line":"     description:"}],"source_content_type":"text/x-python","patch_set":13,"id":"8fe6bd96_8fbb6280","line":24,"range":{"start_line":24,"start_character":8,"end_line":24,"end_character":65},"in_reply_to":"6a2b432d_9241ead2","updated":"2022-11-02 13:10:12.000000000","message":"Latest patchset fixes the other occurrences as well. Using \u0027cannot\u0027 is perfectly fine:\n\n\"Both cannot and can not are perfectly fine, but cannot is far more common and is therefore recommended, especially in any kind of formal writing.\" [1]\n\n[1] https://www.merriam-webster.com/words-at-play/cannot-vs-can-not-is-there-a-difference","commit_id":"86ff66165f6ebf934a1b7bc1b7ab8a7e80ec4a9d"},{"author":{"_account_id":32053,"name":"Denys Mishchenko","email":"denis@mischenko.org.ua","username":"arddennis"},"change_message_id":"725fd5c129c02543a4f6d3863b8d759050da8ae1","unresolved":true,"context_lines":[{"line_number":21,"context_line":"   id:"},{"line_number":22,"context_line":"     description:"},{"line_number":23,"context_line":"        - The ID of the image when uploading an image"},{"line_number":24,"context_line":"        - This image attribute cannot be used to update the image"},{"line_number":25,"context_line":"     type: str"},{"line_number":26,"context_line":"   checksum:"},{"line_number":27,"context_line":"     description:"}],"source_content_type":"text/x-python","patch_set":13,"id":"6a2b432d_9241ead2","line":24,"range":{"start_line":24,"start_character":8,"end_line":24,"end_character":65},"in_reply_to":"8bb499e8_28146e7e","updated":"2022-10-31 11:35:11.000000000","message":"corrected description. Now it states that there is no way to change the id. And added a description to the name object that it can be used to update image name.","commit_id":"86ff66165f6ebf934a1b7bc1b7ab8a7e80ec4a9d"}]}
