)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"542fc217c7174c41cb412197203231ba4a6a000a","unresolved":true,"context_lines":[{"line_number":22,"context_line":"consistency across OpenStack tools. The size parameter can be provided"},{"line_number":23,"context_line":"explicitly or calculated automatically from files."},{"line_number":24,"context_line":""},{"line_number":25,"context_line":"Assisted-By: Cursor (claude-3.5-sonnet)"},{"line_number":26,"context_line":"Change-Id: Ie92c4544e058f5c12c485595554c084772982a7b"},{"line_number":27,"context_line":"Signed-off-by: Abhishek Kekane \u003cakekane@redhat.com\u003e"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":3,"id":"8c6da66d_198c266c","line":25,"updated":"2026-08-05 09:27:25.000000000","message":"Hmm, this might explain the top-level comment","commit_id":"5905307bbfee544fa4a11590ee48f3a8e63a1303"},{"author":{"_account_id":9303,"name":"Abhishek Kekane","email":"akekane@redhat.com","username":"abhishekkekane"},"change_message_id":"a960b37f2f54dacd8e0f328bad784fe994c7b4d2","unresolved":false,"context_lines":[{"line_number":22,"context_line":"consistency across OpenStack tools. The size parameter can be provided"},{"line_number":23,"context_line":"explicitly or calculated automatically from files."},{"line_number":24,"context_line":""},{"line_number":25,"context_line":"Assisted-By: Cursor (claude-3.5-sonnet)"},{"line_number":26,"context_line":"Change-Id: Ie92c4544e058f5c12c485595554c084772982a7b"},{"line_number":27,"context_line":"Signed-off-by: Abhishek Kekane \u003cakekane@redhat.com\u003e"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":3,"id":"fdfef0a1_cade3747","line":25,"in_reply_to":"8c6da66d_198c266c","updated":"2026-08-05 11:46:58.000000000","message":"Done","commit_id":"5905307bbfee544fa4a11590ee48f3a8e63a1303"}],"/PATCHSET_LEVEL":[{"author":{"_account_id":9303,"name":"Abhishek Kekane","email":"akekane@redhat.com","username":"abhishekkekane"},"change_message_id":"164acfd8e96b714302dba2c6d94a6dc5af524586","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":2,"id":"70fcce11_9afb17fa","updated":"2026-06-29 16:29:55.000000000","message":"recheck","commit_id":"f97ea97587fd4323515ca8d3dab9eb89e6be5e3f"},{"author":{"_account_id":9303,"name":"Abhishek Kekane","email":"akekane@redhat.com","username":"abhishekkekane"},"change_message_id":"a960b37f2f54dacd8e0f328bad784fe994c7b4d2","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":3,"id":"eaed58cc_3a163c66","updated":"2026-08-05 11:46:58.000000000","message":"Hi Stephen,\n\nSorry for the noise on the earlier patch. I’ve gone through the change carefully and cleaned it up in the new PS.","commit_id":"5905307bbfee544fa4a11590ee48f3a8e63a1303"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"542fc217c7174c41cb412197203231ba4a6a000a","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":3,"id":"786c88cf_889f5338","updated":"2026-08-05 09:27:25.000000000","message":"I don\u0027t know whether to blame the model or user, but this is not a great patch as it stands 😅 It feels like something LLM-generated that you have pushed without sufficient review from your end, @akekane@redhat.com, and there\u0027s a lot of stuff wrong/missing here that I would expect a long-term contributor to see and recognise (like the reno). Please ensure you review patches from Claude or whatever thoroughly before pushing them in the future 🙏","commit_id":"5905307bbfee544fa4a11590ee48f3a8e63a1303"},{"author":{"_account_id":9303,"name":"Abhishek Kekane","email":"akekane@redhat.com","username":"abhishekkekane"},"change_message_id":"a960b37f2f54dacd8e0f328bad784fe994c7b4d2","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":3,"id":"eea235e5_4247e81b","in_reply_to":"5c7f4498_04bda9eb","updated":"2026-08-05 11:46:58.000000000","message":"verified locally: unit tests pass, and smoke tests confirm create/stage with --size, create without --size (SDK calculates it from file or data), and that X-OpenStack-Image-Size is sent on upload/stage.","commit_id":"5905307bbfee544fa4a11590ee48f3a8e63a1303"},{"author":{"_account_id":9303,"name":"Abhishek Kekane","email":"akekane@redhat.com","username":"abhishekkekane"},"change_message_id":"00f07543a1e1ab53a09a721fdab4d401602a304a","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":3,"id":"5c7f4498_04bda9eb","in_reply_to":"786c88cf_889f5338","updated":"2026-08-05 10:52:19.000000000","message":"Ack, sorry for the inconvenience. Generally I use to manually confirm in local environment. This time i pushed it as it.","commit_id":"5905307bbfee544fa4a11590ee48f3a8e63a1303"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"c76ddcd6497e13e64a1dccbbe1ac0bf73637bdf2","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":3,"id":"20b3b47b_0e889ba5","in_reply_to":"eaed58cc_3a163c66","updated":"2026-08-06 10:49:16.000000000","message":"Ack. Thanks, Abhishek 🙏","commit_id":"5905307bbfee544fa4a11590ee48f3a8e63a1303"},{"author":{"_account_id":9303,"name":"Abhishek Kekane","email":"akekane@redhat.com","username":"abhishekkekane"},"change_message_id":"d991a085e3dbbb61ae433b884498fcc3a4b96b02","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":4,"id":"ce7d4f4e_41de0ee5","updated":"2026-08-06 12:35:36.000000000","message":"Thank you for inputs Stepehn, will push new PS soon!!","commit_id":"c35447a0b094c974f0b8d30237c00211c00b71a9"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"c76ddcd6497e13e64a1dccbbe1ac0bf73637bdf2","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":4,"id":"d490b079_f7b174b0","updated":"2026-08-06 10:49:16.000000000","message":"This is much better, thanks. Couple of outstanding comments","commit_id":"c35447a0b094c974f0b8d30237c00211c00b71a9"},{"author":{"_account_id":9303,"name":"Abhishek Kekane","email":"akekane@redhat.com","username":"abhishekkekane"},"change_message_id":"47fdfb2dcca4d50069f4b67101291c723741717d","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":5,"id":"071b31ba_9c151d2c","updated":"2026-08-07 06:15:06.000000000","message":"recheck","commit_id":"3e8727cb90c0e75acc155521a5c1d4d8d150a004"},{"author":{"_account_id":9303,"name":"Abhishek Kekane","email":"akekane@redhat.com","username":"abhishekkekane"},"change_message_id":"a218bd2a4c24df17a5e366afc275f7496d0f01b9","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":5,"id":"3c81688f_629da710","updated":"2026-08-06 15:00:53.000000000","message":"recheck looks like pip has some errors","commit_id":"3e8727cb90c0e75acc155521a5c1d4d8d150a004"}],"doc/source/cli/command-objects/image-size-parameter.rst":[{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"542fc217c7174c41cb412197203231ba4a6a000a","unresolved":true,"context_lines":[{"line_number":1,"context_line":"Image Size Parameter"},{"line_number":2,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":3,"context_line":""},{"line_number":4,"context_line":"The OpenStack Image service now supports specifying the size of image data during"}],"source_content_type":"text/x-rst","patch_set":3,"id":"8cf1e1a0_9330126e","line":1,"updated":"2026-08-05 09:27:25.000000000","message":"This directory is for documenting individual commands. If we want to document this option, we should do so in the command itself. Can you drop this?","commit_id":"5905307bbfee544fa4a11590ee48f3a8e63a1303"},{"author":{"_account_id":9303,"name":"Abhishek Kekane","email":"akekane@redhat.com","username":"abhishekkekane"},"change_message_id":"a960b37f2f54dacd8e0f328bad784fe994c7b4d2","unresolved":false,"context_lines":[{"line_number":1,"context_line":"Image Size Parameter"},{"line_number":2,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":3,"context_line":""},{"line_number":4,"context_line":"The OpenStack Image service now supports specifying the size of image data during"}],"source_content_type":"text/x-rst","patch_set":3,"id":"47659e14_b26274ea","line":1,"in_reply_to":"8cf1e1a0_9330126e","updated":"2026-08-05 11:46:58.000000000","message":"Done","commit_id":"5905307bbfee544fa4a11590ee48f3a8e63a1303"}],"doc/source/cli/index.rst":[{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"542fc217c7174c41cb412197203231ba4a6a000a","unresolved":true,"context_lines":[{"line_number":13,"context_line":"   interactive"},{"line_number":14,"context_line":"   decoder"},{"line_number":15,"context_line":"   backwards-incompatible"},{"line_number":16,"context_line":"   command-objects/image-size-parameter"}],"source_content_type":"text/x-rst","patch_set":3,"id":"7b37a272_55db1c1c","line":16,"updated":"2026-08-05 09:27:25.000000000","message":"Let\u0027s drop this","commit_id":"5905307bbfee544fa4a11590ee48f3a8e63a1303"},{"author":{"_account_id":9303,"name":"Abhishek Kekane","email":"akekane@redhat.com","username":"abhishekkekane"},"change_message_id":"a960b37f2f54dacd8e0f328bad784fe994c7b4d2","unresolved":false,"context_lines":[{"line_number":13,"context_line":"   interactive"},{"line_number":14,"context_line":"   decoder"},{"line_number":15,"context_line":"   backwards-incompatible"},{"line_number":16,"context_line":"   command-objects/image-size-parameter"}],"source_content_type":"text/x-rst","patch_set":3,"id":"502f946a_2b3088f7","line":16,"in_reply_to":"7b37a272_55db1c1c","updated":"2026-08-05 11:46:58.000000000","message":"Done","commit_id":"5905307bbfee544fa4a11590ee48f3a8e63a1303"}],"openstackclient/image/v2/image.py":[{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"542fc217c7174c41cb412197203231ba4a6a000a","unresolved":true,"context_lines":[{"line_number":87,"context_line":"        and hasattr(file_obj, \u0027tell\u0027)"},{"line_number":88,"context_line":"        and file_obj.seekable()"},{"line_number":89,"context_line":"    ):"},{"line_number":90,"context_line":"        try:"},{"line_number":91,"context_line":"            curr \u003d file_obj.tell()"},{"line_number":92,"context_line":"            file_obj.seek(0, os.SEEK_END)"},{"line_number":93,"context_line":"            size \u003d file_obj.tell()"},{"line_number":94,"context_line":"            file_obj.seek(curr)"},{"line_number":95,"context_line":"            return int(size)"},{"line_number":96,"context_line":"        except OSError as e:"},{"line_number":97,"context_line":"            if e.errno \u003d\u003d errno.ESPIPE:"},{"line_number":98,"context_line":"                # Illegal seek. This means the file object"}],"source_content_type":"text/x-python","patch_set":3,"id":"4ee315ba_01f73b17","line":95,"range":{"start_line":90,"start_character":12,"end_line":95,"end_character":28},"updated":"2026-08-05 09:27:25.000000000","message":"What was wrong with `os.path.getsize`? If there\u0027s a good reason not to use it, we should document that reason here","commit_id":"5905307bbfee544fa4a11590ee48f3a8e63a1303"},{"author":{"_account_id":9303,"name":"Abhishek Kekane","email":"akekane@redhat.com","username":"abhishekkekane"},"change_message_id":"a960b37f2f54dacd8e0f328bad784fe994c7b4d2","unresolved":false,"context_lines":[{"line_number":87,"context_line":"        and hasattr(file_obj, \u0027tell\u0027)"},{"line_number":88,"context_line":"        and file_obj.seekable()"},{"line_number":89,"context_line":"    ):"},{"line_number":90,"context_line":"        try:"},{"line_number":91,"context_line":"            curr \u003d file_obj.tell()"},{"line_number":92,"context_line":"            file_obj.seek(0, os.SEEK_END)"},{"line_number":93,"context_line":"            size \u003d file_obj.tell()"},{"line_number":94,"context_line":"            file_obj.seek(curr)"},{"line_number":95,"context_line":"            return int(size)"},{"line_number":96,"context_line":"        except OSError as e:"},{"line_number":97,"context_line":"            if e.errno \u003d\u003d errno.ESPIPE:"},{"line_number":98,"context_line":"                # Illegal seek. This means the file object"}],"source_content_type":"text/x-python","patch_set":3,"id":"00a6fcff_47ef4f2d","line":95,"range":{"start_line":90,"start_character":12,"end_line":95,"end_character":28},"in_reply_to":"4ee315ba_01f73b17","updated":"2026-08-05 11:46:58.000000000","message":"Agreed — nothing wrong with it. Restored the behavior.","commit_id":"5905307bbfee544fa4a11590ee48f3a8e63a1303"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"542fc217c7174c41cb412197203231ba4a6a000a","unresolved":true,"context_lines":[{"line_number":124,"context_line":"        except OSError:"},{"line_number":125,"context_line":"            pass"},{"line_number":126,"context_line":"    return None"},{"line_number":127,"context_line":""},{"line_number":128,"context_line":""},{"line_number":129,"context_line":"def _create_image_with_upload_size("},{"line_number":130,"context_line":"    image_client: Any,"},{"line_number":131,"context_line":"    upload_size: int | None,"},{"line_number":132,"context_line":"    **kwargs: Any,"},{"line_number":133,"context_line":") -\u003e _image.Image:"},{"line_number":134,"context_line":"    # Pass size separately so the SDK sends x-openstack-image-size on"},{"line_number":135,"context_line":"    # upload. Putting it in **kwargs would set a read-only Glance attr."},{"line_number":136,"context_line":"    if upload_size is not None:"},{"line_number":137,"context_line":"        return image_client.create_image(size\u003dupload_size, **kwargs)"},{"line_number":138,"context_line":"    return image_client.create_image(**kwargs)"},{"line_number":139,"context_line":""},{"line_number":140,"context_line":""},{"line_number":141,"context_line":"def _stage_image_with_upload_size("},{"line_number":142,"context_line":"    image_client: Any,"},{"line_number":143,"context_line":"    image: _image.Image,"},{"line_number":144,"context_line":"    upload_size: int | None,"},{"line_number":145,"context_line":"    **kwargs: Any,"},{"line_number":146,"context_line":") -\u003e None:"},{"line_number":147,"context_line":"    # Same as create: size is an upload header, not image metadata."},{"line_number":148,"context_line":"    if upload_size is not None:"},{"line_number":149,"context_line":"        image_client.stage_image(image, size\u003dupload_size, **kwargs)"},{"line_number":150,"context_line":"    else:"},{"line_number":151,"context_line":"        image_client.stage_image(image, **kwargs)"},{"line_number":152,"context_line":""},{"line_number":153,"context_line":""},{"line_number":154,"context_line":"def _format_image("},{"line_number":155,"context_line":"    image: _image.Image, human_readable: bool \u003d False"}],"source_content_type":"text/x-python","patch_set":3,"id":"2ca82da4_03e34096","line":152,"range":{"start_line":127,"start_character":1,"end_line":152,"end_character":1},"updated":"2026-08-05 09:27:25.000000000","message":"These both have a single caller. Can you inline them?","commit_id":"5905307bbfee544fa4a11590ee48f3a8e63a1303"},{"author":{"_account_id":9303,"name":"Abhishek Kekane","email":"akekane@redhat.com","username":"abhishekkekane"},"change_message_id":"a960b37f2f54dacd8e0f328bad784fe994c7b4d2","unresolved":false,"context_lines":[{"line_number":124,"context_line":"        except OSError:"},{"line_number":125,"context_line":"            pass"},{"line_number":126,"context_line":"    return None"},{"line_number":127,"context_line":""},{"line_number":128,"context_line":""},{"line_number":129,"context_line":"def _create_image_with_upload_size("},{"line_number":130,"context_line":"    image_client: Any,"},{"line_number":131,"context_line":"    upload_size: int | None,"},{"line_number":132,"context_line":"    **kwargs: Any,"},{"line_number":133,"context_line":") -\u003e _image.Image:"},{"line_number":134,"context_line":"    # Pass size separately so the SDK sends x-openstack-image-size on"},{"line_number":135,"context_line":"    # upload. Putting it in **kwargs would set a read-only Glance attr."},{"line_number":136,"context_line":"    if upload_size is not None:"},{"line_number":137,"context_line":"        return image_client.create_image(size\u003dupload_size, **kwargs)"},{"line_number":138,"context_line":"    return image_client.create_image(**kwargs)"},{"line_number":139,"context_line":""},{"line_number":140,"context_line":""},{"line_number":141,"context_line":"def _stage_image_with_upload_size("},{"line_number":142,"context_line":"    image_client: Any,"},{"line_number":143,"context_line":"    image: _image.Image,"},{"line_number":144,"context_line":"    upload_size: int | None,"},{"line_number":145,"context_line":"    **kwargs: Any,"},{"line_number":146,"context_line":") -\u003e None:"},{"line_number":147,"context_line":"    # Same as create: size is an upload header, not image metadata."},{"line_number":148,"context_line":"    if upload_size is not None:"},{"line_number":149,"context_line":"        image_client.stage_image(image, size\u003dupload_size, **kwargs)"},{"line_number":150,"context_line":"    else:"},{"line_number":151,"context_line":"        image_client.stage_image(image, **kwargs)"},{"line_number":152,"context_line":""},{"line_number":153,"context_line":""},{"line_number":154,"context_line":"def _format_image("},{"line_number":155,"context_line":"    image: _image.Image, human_readable: bool \u003d False"}],"source_content_type":"text/x-python","patch_set":3,"id":"76994223_2a238900","line":152,"range":{"start_line":127,"start_character":1,"end_line":152,"end_character":1},"in_reply_to":"2ca82da4_03e34096","updated":"2026-08-05 11:46:58.000000000","message":"We now set kwargs[\u0027size\u0027] inline only when --size is provided and upload data is present.","commit_id":"5905307bbfee544fa4a11590ee48f3a8e63a1303"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"542fc217c7174c41cb412197203231ba4a6a000a","unresolved":true,"context_lines":[{"line_number":607,"context_line":"        if parsed_args.progress and parsed_args.filename:"},{"line_number":608,"context_line":"            # NOTE(stephenfin): we only show a progress bar if the user"},{"line_number":609,"context_line":"            # requested it *and* we\u0027re reading from a file (not stdin)"},{"line_number":610,"context_line":"            try:"},{"line_number":611,"context_line":"                with open(parsed_args.filename, \u0027rb\u0027) as f:"},{"line_number":612,"context_line":"                    filesize \u003d get_file_size(f)"},{"line_number":613,"context_line":"                if filesize is not None:"},{"line_number":614,"context_line":"                    kwargs[\u0027validate_checksum\u0027] \u003d False"},{"line_number":615,"context_line":"                    kwargs[\u0027data\u0027] \u003d progressbar.VerboseFileWrapper("},{"line_number":616,"context_line":"                        fp, filesize"},{"line_number":617,"context_line":"                    )"},{"line_number":618,"context_line":"                else:"},{"line_number":619,"context_line":"                    kwargs[\u0027data\u0027] \u003d fp"},{"line_number":620,"context_line":"            except OSError:"},{"line_number":621,"context_line":"                kwargs[\u0027data\u0027] \u003d fp"},{"line_number":622,"context_line":"        elif parsed_args.filename:"},{"line_number":623,"context_line":"            kwargs[\u0027filename\u0027] \u003d parsed_args.filename"}],"source_content_type":"text/x-python","patch_set":3,"id":"99814acb_24819953","line":620,"range":{"start_line":610,"start_character":0,"end_line":620,"end_character":27},"updated":"2026-08-05 09:27:25.000000000","message":"I\u0027m not sure why any of this is required? 😕","commit_id":"5905307bbfee544fa4a11590ee48f3a8e63a1303"},{"author":{"_account_id":9303,"name":"Abhishek Kekane","email":"akekane@redhat.com","username":"abhishekkekane"},"change_message_id":"a960b37f2f54dacd8e0f328bad784fe994c7b4d2","unresolved":false,"context_lines":[{"line_number":607,"context_line":"        if parsed_args.progress and parsed_args.filename:"},{"line_number":608,"context_line":"            # NOTE(stephenfin): we only show a progress bar if the user"},{"line_number":609,"context_line":"            # requested it *and* we\u0027re reading from a file (not stdin)"},{"line_number":610,"context_line":"            try:"},{"line_number":611,"context_line":"                with open(parsed_args.filename, \u0027rb\u0027) as f:"},{"line_number":612,"context_line":"                    filesize \u003d get_file_size(f)"},{"line_number":613,"context_line":"                if filesize is not None:"},{"line_number":614,"context_line":"                    kwargs[\u0027validate_checksum\u0027] \u003d False"},{"line_number":615,"context_line":"                    kwargs[\u0027data\u0027] \u003d progressbar.VerboseFileWrapper("},{"line_number":616,"context_line":"                        fp, filesize"},{"line_number":617,"context_line":"                    )"},{"line_number":618,"context_line":"                else:"},{"line_number":619,"context_line":"                    kwargs[\u0027data\u0027] \u003d fp"},{"line_number":620,"context_line":"            except OSError:"},{"line_number":621,"context_line":"                kwargs[\u0027data\u0027] \u003d fp"},{"line_number":622,"context_line":"        elif parsed_args.filename:"},{"line_number":623,"context_line":"            kwargs[\u0027filename\u0027] \u003d parsed_args.filename"}],"source_content_type":"text/x-python","patch_set":3,"id":"ea271dfb_bc35e271","line":620,"range":{"start_line":610,"start_character":0,"end_line":620,"end_character":27},"in_reply_to":"99814acb_24819953","updated":"2026-08-05 11:46:58.000000000","message":"OSC no longer recalculates size from the file. If --size is omitted, openstacksdk calculates it when possible.","commit_id":"5905307bbfee544fa4a11590ee48f3a8e63a1303"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"542fc217c7174c41cb412197203231ba4a6a000a","unresolved":true,"context_lines":[{"line_number":680,"context_line":"            if signer.padding_method:"},{"line_number":681,"context_line":"                kwargs[\u0027img_signature_key_type\u0027] \u003d signer.padding_method"},{"line_number":682,"context_line":""},{"line_number":683,"context_line":"        upload_size \u003d _resolve_upload_size("},{"line_number":684,"context_line":"            parsed_args,"},{"line_number":685,"context_line":"            has_upload_data\u003dbool(parsed_args.filename or fp),"},{"line_number":686,"context_line":"        )"},{"line_number":687,"context_line":"        image \u003d _create_image_with_upload_size("},{"line_number":688,"context_line":"            image_client, upload_size, **kwargs"},{"line_number":689,"context_line":"        )"}],"source_content_type":"text/x-python","patch_set":3,"id":"9c607f8a_b8008b7f","line":686,"range":{"start_line":683,"start_character":0,"end_line":686,"end_character":9},"updated":"2026-08-05 09:27:25.000000000","message":"This recalculate file size, despite us having done so above. Couldn\u0027t this be simplified?","commit_id":"5905307bbfee544fa4a11590ee48f3a8e63a1303"},{"author":{"_account_id":9303,"name":"Abhishek Kekane","email":"akekane@redhat.com","username":"abhishekkekane"},"change_message_id":"a960b37f2f54dacd8e0f328bad784fe994c7b4d2","unresolved":false,"context_lines":[{"line_number":680,"context_line":"            if signer.padding_method:"},{"line_number":681,"context_line":"                kwargs[\u0027img_signature_key_type\u0027] \u003d signer.padding_method"},{"line_number":682,"context_line":""},{"line_number":683,"context_line":"        upload_size \u003d _resolve_upload_size("},{"line_number":684,"context_line":"            parsed_args,"},{"line_number":685,"context_line":"            has_upload_data\u003dbool(parsed_args.filename or fp),"},{"line_number":686,"context_line":"        )"},{"line_number":687,"context_line":"        image \u003d _create_image_with_upload_size("},{"line_number":688,"context_line":"            image_client, upload_size, **kwargs"},{"line_number":689,"context_line":"        )"}],"source_content_type":"text/x-python","patch_set":3,"id":"1efde84e_f5c254a2","line":686,"range":{"start_line":683,"start_character":0,"end_line":686,"end_character":9},"in_reply_to":"9c607f8a_b8008b7f","updated":"2026-08-05 11:46:58.000000000","message":"Done","commit_id":"5905307bbfee544fa4a11590ee48f3a8e63a1303"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"542fc217c7174c41cb412197203231ba4a6a000a","unresolved":true,"context_lines":[{"line_number":1754,"context_line":"        if parsed_args.progress and parsed_args.filename:"},{"line_number":1755,"context_line":"            # NOTE(stephenfin): we only show a progress bar if the user"},{"line_number":1756,"context_line":"            # requested it *and* we\u0027re reading from a file (not stdin)"},{"line_number":1757,"context_line":"            try:"},{"line_number":1758,"context_line":"                with open(parsed_args.filename, \u0027rb\u0027) as f:"},{"line_number":1759,"context_line":"                    filesize \u003d get_file_size(f)"},{"line_number":1760,"context_line":"                if filesize is not None:"},{"line_number":1761,"context_line":"                    kwargs[\u0027data\u0027] \u003d progressbar.VerboseFileWrapper("},{"line_number":1762,"context_line":"                        fp, filesize"},{"line_number":1763,"context_line":"                    )"},{"line_number":1764,"context_line":"                else:"},{"line_number":1765,"context_line":"                    kwargs[\u0027data\u0027] \u003d fp"},{"line_number":1766,"context_line":"            except OSError:"},{"line_number":1767,"context_line":"                kwargs[\u0027data\u0027] \u003d fp"},{"line_number":1768,"context_line":"        elif parsed_args.filename:"},{"line_number":1769,"context_line":"            kwargs[\u0027filename\u0027] \u003d parsed_args.filename"},{"line_number":1770,"context_line":"        elif fp:"},{"line_number":1771,"context_line":"            kwargs[\u0027data\u0027] \u003d fp"},{"line_number":1772,"context_line":""},{"line_number":1773,"context_line":"        upload_size \u003d _resolve_upload_size("},{"line_number":1774,"context_line":"            parsed_args,"},{"line_number":1775,"context_line":"            has_upload_data\u003dbool(parsed_args.filename or fp),"},{"line_number":1776,"context_line":"        )"},{"line_number":1777,"context_line":"        _stage_image_with_upload_size("},{"line_number":1778,"context_line":"            image_client, image, upload_size, **kwargs"},{"line_number":1779,"context_line":"        )"}],"source_content_type":"text/x-python","patch_set":3,"id":"3e922f10_01e42d26","line":1776,"range":{"start_line":1757,"start_character":0,"end_line":1776,"end_character":9},"updated":"2026-08-05 09:27:25.000000000","message":"Same comments as above","commit_id":"5905307bbfee544fa4a11590ee48f3a8e63a1303"},{"author":{"_account_id":9303,"name":"Abhishek Kekane","email":"akekane@redhat.com","username":"abhishekkekane"},"change_message_id":"a960b37f2f54dacd8e0f328bad784fe994c7b4d2","unresolved":false,"context_lines":[{"line_number":1754,"context_line":"        if parsed_args.progress and parsed_args.filename:"},{"line_number":1755,"context_line":"            # NOTE(stephenfin): we only show a progress bar if the user"},{"line_number":1756,"context_line":"            # requested it *and* we\u0027re reading from a file (not stdin)"},{"line_number":1757,"context_line":"            try:"},{"line_number":1758,"context_line":"                with open(parsed_args.filename, \u0027rb\u0027) as f:"},{"line_number":1759,"context_line":"                    filesize \u003d get_file_size(f)"},{"line_number":1760,"context_line":"                if filesize is not None:"},{"line_number":1761,"context_line":"                    kwargs[\u0027data\u0027] \u003d progressbar.VerboseFileWrapper("},{"line_number":1762,"context_line":"                        fp, filesize"},{"line_number":1763,"context_line":"                    )"},{"line_number":1764,"context_line":"                else:"},{"line_number":1765,"context_line":"                    kwargs[\u0027data\u0027] \u003d fp"},{"line_number":1766,"context_line":"            except OSError:"},{"line_number":1767,"context_line":"                kwargs[\u0027data\u0027] \u003d fp"},{"line_number":1768,"context_line":"        elif parsed_args.filename:"},{"line_number":1769,"context_line":"            kwargs[\u0027filename\u0027] \u003d parsed_args.filename"},{"line_number":1770,"context_line":"        elif fp:"},{"line_number":1771,"context_line":"            kwargs[\u0027data\u0027] \u003d fp"},{"line_number":1772,"context_line":""},{"line_number":1773,"context_line":"        upload_size \u003d _resolve_upload_size("},{"line_number":1774,"context_line":"            parsed_args,"},{"line_number":1775,"context_line":"            has_upload_data\u003dbool(parsed_args.filename or fp),"},{"line_number":1776,"context_line":"        )"},{"line_number":1777,"context_line":"        _stage_image_with_upload_size("},{"line_number":1778,"context_line":"            image_client, image, upload_size, **kwargs"},{"line_number":1779,"context_line":"        )"}],"source_content_type":"text/x-python","patch_set":3,"id":"1c20d1a2_3c48fbdf","line":1776,"range":{"start_line":1757,"start_character":0,"end_line":1776,"end_character":9},"in_reply_to":"3e922f10_01e42d26","updated":"2026-08-05 11:46:58.000000000","message":"Done","commit_id":"5905307bbfee544fa4a11590ee48f3a8e63a1303"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"c76ddcd6497e13e64a1dccbbe1ac0bf73637bdf2","unresolved":true,"context_lines":[{"line_number":353,"context_line":"        )"},{"line_number":354,"context_line":"        parser.add_argument("},{"line_number":355,"context_line":"            \"--size\","},{"line_number":356,"context_line":"            metavar\u003d\"\u003csize\u003e\","},{"line_number":357,"context_line":"            type\u003dint,"},{"line_number":358,"context_line":"            help\u003d_("},{"line_number":359,"context_line":"                \"Size of image data in bytes. Providing this can improve \""}],"source_content_type":"text/x-python","patch_set":4,"id":"faa8e97b_81540594","line":356,"updated":"2026-08-06 10:49:16.000000000","message":"Do we want to set a minimum? I assume you can\u0027t specify a size of `0`?","commit_id":"c35447a0b094c974f0b8d30237c00211c00b71a9"},{"author":{"_account_id":9303,"name":"Abhishek Kekane","email":"akekane@redhat.com","username":"abhishekkekane"},"change_message_id":"d991a085e3dbbb61ae433b884498fcc3a4b96b02","unresolved":false,"context_lines":[{"line_number":353,"context_line":"        )"},{"line_number":354,"context_line":"        parser.add_argument("},{"line_number":355,"context_line":"            \"--size\","},{"line_number":356,"context_line":"            metavar\u003d\"\u003csize\u003e\","},{"line_number":357,"context_line":"            type\u003dint,"},{"line_number":358,"context_line":"            help\u003d_("},{"line_number":359,"context_line":"                \"Size of image data in bytes. Providing this can improve \""}],"source_content_type":"text/x-python","patch_set":4,"id":"9571edd4_d595989e","line":356,"in_reply_to":"faa8e97b_81540594","updated":"2026-08-06 12:35:36.000000000","message":"Done","commit_id":"c35447a0b094c974f0b8d30237c00211c00b71a9"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"c76ddcd6497e13e64a1dccbbe1ac0bf73637bdf2","unresolved":true,"context_lines":[{"line_number":526,"context_line":"                \"Uploading data and using container are not allowed at \""},{"line_number":527,"context_line":"                \"the same time\""},{"line_number":528,"context_line":"            )"},{"line_number":529,"context_line":"            raise exceptions.CommandError(msg)"},{"line_number":530,"context_line":""},{"line_number":531,"context_line":"        if parsed_args.progress and parsed_args.filename:"},{"line_number":532,"context_line":"            # NOTE(stephenfin): we only show a progress bar if the user"}],"source_content_type":"text/x-python","patch_set":4,"id":"7c3cc723_4953db05","line":529,"updated":"2026-08-06 10:49:16.000000000","message":"This is probably the place to add the option check (see below)","commit_id":"c35447a0b094c974f0b8d30237c00211c00b71a9"},{"author":{"_account_id":9303,"name":"Abhishek Kekane","email":"akekane@redhat.com","username":"abhishekkekane"},"change_message_id":"d991a085e3dbbb61ae433b884498fcc3a4b96b02","unresolved":false,"context_lines":[{"line_number":526,"context_line":"                \"Uploading data and using container are not allowed at \""},{"line_number":527,"context_line":"                \"the same time\""},{"line_number":528,"context_line":"            )"},{"line_number":529,"context_line":"            raise exceptions.CommandError(msg)"},{"line_number":530,"context_line":""},{"line_number":531,"context_line":"        if parsed_args.progress and parsed_args.filename:"},{"line_number":532,"context_line":"            # NOTE(stephenfin): we only show a progress bar if the user"}],"source_content_type":"text/x-python","patch_set":4,"id":"0f89fe9f_7ec3fef1","line":529,"in_reply_to":"7c3cc723_4953db05","updated":"2026-08-06 12:35:36.000000000","message":"Done","commit_id":"c35447a0b094c974f0b8d30237c00211c00b71a9"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"c76ddcd6497e13e64a1dccbbe1ac0bf73637bdf2","unresolved":true,"context_lines":[{"line_number":600,"context_line":""},{"line_number":601,"context_line":"        # Pass size only when uploading data. The SDK calculates size"},{"line_number":602,"context_line":"        # automatically when possible if it is not provided."},{"line_number":603,"context_line":"        if parsed_args.size is not None and (parsed_args.filename or fp):"},{"line_number":604,"context_line":"            kwargs[\u0027size\u0027] \u003d parsed_args.size"},{"line_number":605,"context_line":""},{"line_number":606,"context_line":"        image \u003d image_client.create_image(**kwargs)"}],"source_content_type":"text/x-python","patch_set":4,"id":"8d569bfb_5a9978bf","line":603,"updated":"2026-08-06 10:49:16.000000000","message":"We can simplify this since `fp` will always be set if `parsed_args.filename` is set, per [line 516 above](https://review.opendev.org/c/openstack/python-openstackclient/+/956769/4/openstackclient/image/v2/image.py#516)\n\n```suggestion\n        if parsed_args.size is not None and fp:\n```\nDo we want to raise an error if `fp` is not present though?","commit_id":"c35447a0b094c974f0b8d30237c00211c00b71a9"},{"author":{"_account_id":9303,"name":"Abhishek Kekane","email":"akekane@redhat.com","username":"abhishekkekane"},"change_message_id":"d991a085e3dbbb61ae433b884498fcc3a4b96b02","unresolved":false,"context_lines":[{"line_number":600,"context_line":""},{"line_number":601,"context_line":"        # Pass size only when uploading data. The SDK calculates size"},{"line_number":602,"context_line":"        # automatically when possible if it is not provided."},{"line_number":603,"context_line":"        if parsed_args.size is not None and (parsed_args.filename or fp):"},{"line_number":604,"context_line":"            kwargs[\u0027size\u0027] \u003d parsed_args.size"},{"line_number":605,"context_line":""},{"line_number":606,"context_line":"        image \u003d image_client.create_image(**kwargs)"}],"source_content_type":"text/x-python","patch_set":4,"id":"4afdb10b_d9f3acd2","line":603,"in_reply_to":"8d569bfb_5a9978bf","updated":"2026-08-06 12:35:36.000000000","message":"We also raise if fp is missing when --size is set.","commit_id":"c35447a0b094c974f0b8d30237c00211c00b71a9"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"c76ddcd6497e13e64a1dccbbe1ac0bf73637bdf2","unresolved":true,"context_lines":[{"line_number":1683,"context_line":""},{"line_number":1684,"context_line":"        # Pass size only when uploading data. The SDK calculates size"},{"line_number":1685,"context_line":"        # automatically when possible if it is not provided."},{"line_number":1686,"context_line":"        if parsed_args.size is not None and (parsed_args.filename or fp):"},{"line_number":1687,"context_line":"            kwargs[\u0027size\u0027] \u003d parsed_args.size"},{"line_number":1688,"context_line":""},{"line_number":1689,"context_line":"        image_client.stage_image(image, **kwargs)"}],"source_content_type":"text/x-python","patch_set":4,"id":"88cc6da7_ed9e5636","line":1686,"updated":"2026-08-06 10:49:16.000000000","message":"`fp` is always populated so this can probably be simplified to:\n\n```suggestion\n        if parsed_args.size is not None:\n```\n\nI assume `size` is a valid option for the stage API?","commit_id":"c35447a0b094c974f0b8d30237c00211c00b71a9"},{"author":{"_account_id":9303,"name":"Abhishek Kekane","email":"akekane@redhat.com","username":"abhishekkekane"},"change_message_id":"d991a085e3dbbb61ae433b884498fcc3a4b96b02","unresolved":false,"context_lines":[{"line_number":1683,"context_line":""},{"line_number":1684,"context_line":"        # Pass size only when uploading data. The SDK calculates size"},{"line_number":1685,"context_line":"        # automatically when possible if it is not provided."},{"line_number":1686,"context_line":"        if parsed_args.size is not None and (parsed_args.filename or fp):"},{"line_number":1687,"context_line":"            kwargs[\u0027size\u0027] \u003d parsed_args.size"},{"line_number":1688,"context_line":""},{"line_number":1689,"context_line":"        image_client.stage_image(image, **kwargs)"}],"source_content_type":"text/x-python","patch_set":4,"id":"c3a598a6_3546ca36","line":1686,"in_reply_to":"88cc6da7_ed9e5636","updated":"2026-08-06 12:35:36.000000000","message":"Yes — size is supported by the stage API (SDK sets X-OpenStack-Image-Size on stage). Same --size without data error as create.","commit_id":"c35447a0b094c974f0b8d30237c00211c00b71a9"}],"openstackclient/tests/unit/image/v2/test_image.py":[{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"c76ddcd6497e13e64a1dccbbe1ac0bf73637bdf2","unresolved":true,"context_lines":[{"line_number":244,"context_line":"            \u0027--file\u0027,"},{"line_number":245,"context_line":"            imagefile.name,"},{"line_number":246,"context_line":"            \u0027--size\u0027,"},{"line_number":247,"context_line":"            \u00272048\u0027,"},{"line_number":248,"context_line":"            ("},{"line_number":249,"context_line":"                \u0027--unprotected\u0027"},{"line_number":250,"context_line":"                if not self.new_image.is_protected"},{"line_number":251,"context_line":"                else \u0027--protected\u0027"},{"line_number":252,"context_line":"            ),"},{"line_number":253,"context_line":"            ("},{"line_number":254,"context_line":"                \u0027--public\u0027"},{"line_number":255,"context_line":"                if self.new_image.visibility \u003d\u003d \u0027public\u0027"},{"line_number":256,"context_line":"                else \u0027--private\u0027"},{"line_number":257,"context_line":"            ),"},{"line_number":258,"context_line":"            \u0027--property\u0027,"},{"line_number":259,"context_line":"            \u0027Alpha\u003d1\u0027,"},{"line_number":260,"context_line":"            \u0027--property\u0027,"}],"source_content_type":"text/x-python","patch_set":4,"id":"d961afec_a6de9e5f","line":257,"range":{"start_line":247,"start_character":19,"end_line":257,"end_character":14},"updated":"2026-08-06 10:49:16.000000000","message":"Why do we need this logic? The image is created per test in `setUp` so it should be consistent. I was looking for a subclass that overrode `setUp` but there doesn\u0027t seem to be any?\n\nLater: ah, I see you copied this from other tests. Maybe check does `create_one_image` randomize these values and if not, drop this logic.","commit_id":"c35447a0b094c974f0b8d30237c00211c00b71a9"},{"author":{"_account_id":9303,"name":"Abhishek Kekane","email":"akekane@redhat.com","username":"abhishekkekane"},"change_message_id":"d991a085e3dbbb61ae433b884498fcc3a4b96b02","unresolved":false,"context_lines":[{"line_number":244,"context_line":"            \u0027--file\u0027,"},{"line_number":245,"context_line":"            imagefile.name,"},{"line_number":246,"context_line":"            \u0027--size\u0027,"},{"line_number":247,"context_line":"            \u00272048\u0027,"},{"line_number":248,"context_line":"            ("},{"line_number":249,"context_line":"                \u0027--unprotected\u0027"},{"line_number":250,"context_line":"                if not self.new_image.is_protected"},{"line_number":251,"context_line":"                else \u0027--protected\u0027"},{"line_number":252,"context_line":"            ),"},{"line_number":253,"context_line":"            ("},{"line_number":254,"context_line":"                \u0027--public\u0027"},{"line_number":255,"context_line":"                if self.new_image.visibility \u003d\u003d \u0027public\u0027"},{"line_number":256,"context_line":"                else \u0027--private\u0027"},{"line_number":257,"context_line":"            ),"},{"line_number":258,"context_line":"            \u0027--property\u0027,"},{"line_number":259,"context_line":"            \u0027Alpha\u003d1\u0027,"},{"line_number":260,"context_line":"            \u0027--property\u0027,"}],"source_content_type":"text/x-python","patch_set":4,"id":"b4c90d4d_d70c5317","line":257,"range":{"start_line":247,"start_character":19,"end_line":257,"end_character":14},"in_reply_to":"d961afec_a6de9e5f","updated":"2026-08-06 12:35:36.000000000","message":"create_one_image randomizes is_protected and visibility, so the conditional args are needed for a stable match against self.new_image (same pattern as test_image_create_file).","commit_id":"c35447a0b094c974f0b8d30237c00211c00b71a9"}],"releasenotes/notes/set-size-on-upload-1234567890abcdef.yaml":[{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"542fc217c7174c41cb412197203231ba4a6a000a","unresolved":true,"context_lines":[{"line_number":5,"context_line":""},{"line_number":6,"context_line":"    - Add `--size` parameter to `openstack image create` command"},{"line_number":7,"context_line":"    - Add `--size` parameter to `openstack image stage` command"},{"line_number":8,"context_line":"    - Automatically calculate and pass size when `--size` is not provided but `--file` is present"},{"line_number":9,"context_line":"    - Pass size as `x-openstack-image-size` header to Glance API (not as a Glance image attribute)"},{"line_number":10,"context_line":"    - Add comprehensive unit tests for size parameter functionality"},{"line_number":11,"context_line":""}],"source_content_type":"text/x-yaml","patch_set":3,"id":"c302adfe_28f14f24","line":8,"updated":"2026-08-05 09:27:25.000000000","message":"This is already the case. It\u0027s not a new feature","commit_id":"5905307bbfee544fa4a11590ee48f3a8e63a1303"},{"author":{"_account_id":9303,"name":"Abhishek Kekane","email":"akekane@redhat.com","username":"abhishekkekane"},"change_message_id":"a960b37f2f54dacd8e0f328bad784fe994c7b4d2","unresolved":false,"context_lines":[{"line_number":5,"context_line":""},{"line_number":6,"context_line":"    - Add `--size` parameter to `openstack image create` command"},{"line_number":7,"context_line":"    - Add `--size` parameter to `openstack image stage` command"},{"line_number":8,"context_line":"    - Automatically calculate and pass size when `--size` is not provided but `--file` is present"},{"line_number":9,"context_line":"    - Pass size as `x-openstack-image-size` header to Glance API (not as a Glance image attribute)"},{"line_number":10,"context_line":"    - Add comprehensive unit tests for size parameter functionality"},{"line_number":11,"context_line":""}],"source_content_type":"text/x-yaml","patch_set":3,"id":"ba681021_29a9e5ea","line":8,"in_reply_to":"c302adfe_28f14f24","updated":"2026-08-05 11:46:58.000000000","message":"Done","commit_id":"5905307bbfee544fa4a11590ee48f3a8e63a1303"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"542fc217c7174c41cb412197203231ba4a6a000a","unresolved":true,"context_lines":[{"line_number":6,"context_line":"    - Add `--size` parameter to `openstack image create` command"},{"line_number":7,"context_line":"    - Add `--size` parameter to `openstack image stage` command"},{"line_number":8,"context_line":"    - Automatically calculate and pass size when `--size` is not provided but `--file` is present"},{"line_number":9,"context_line":"    - Pass size as `x-openstack-image-size` header to Glance API (not as a Glance image attribute)"},{"line_number":10,"context_line":"    - Add comprehensive unit tests for size parameter functionality"},{"line_number":11,"context_line":""},{"line_number":12,"context_line":"    This change allows users to explicitly specify the size of image data being"}],"source_content_type":"text/x-yaml","patch_set":3,"id":"62e09b3e_7445ca40","line":9,"updated":"2026-08-05 09:27:25.000000000","message":"This is nothing to do with OSC (and not really user facing).","commit_id":"5905307bbfee544fa4a11590ee48f3a8e63a1303"},{"author":{"_account_id":9303,"name":"Abhishek Kekane","email":"akekane@redhat.com","username":"abhishekkekane"},"change_message_id":"a960b37f2f54dacd8e0f328bad784fe994c7b4d2","unresolved":false,"context_lines":[{"line_number":6,"context_line":"    - Add `--size` parameter to `openstack image create` command"},{"line_number":7,"context_line":"    - Add `--size` parameter to `openstack image stage` command"},{"line_number":8,"context_line":"    - Automatically calculate and pass size when `--size` is not provided but `--file` is present"},{"line_number":9,"context_line":"    - Pass size as `x-openstack-image-size` header to Glance API (not as a Glance image attribute)"},{"line_number":10,"context_line":"    - Add comprehensive unit tests for size parameter functionality"},{"line_number":11,"context_line":""},{"line_number":12,"context_line":"    This change allows users to explicitly specify the size of image data being"}],"source_content_type":"text/x-yaml","patch_set":3,"id":"3c6d2c13_ba65e476","line":9,"in_reply_to":"62e09b3e_7445ca40","updated":"2026-08-05 11:46:58.000000000","message":"Done","commit_id":"5905307bbfee544fa4a11590ee48f3a8e63a1303"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"542fc217c7174c41cb412197203231ba4a6a000a","unresolved":true,"context_lines":[{"line_number":7,"context_line":"    - Add `--size` parameter to `openstack image stage` command"},{"line_number":8,"context_line":"    - Automatically calculate and pass size when `--size` is not provided but `--file` is present"},{"line_number":9,"context_line":"    - Pass size as `x-openstack-image-size` header to Glance API (not as a Glance image attribute)"},{"line_number":10,"context_line":"    - Add comprehensive unit tests for size parameter functionality"},{"line_number":11,"context_line":""},{"line_number":12,"context_line":"    This change allows users to explicitly specify the size of image data being"},{"line_number":13,"context_line":"    uploaded, which can improve performance and reliability of image uploads."}],"source_content_type":"text/x-yaml","patch_set":3,"id":"2e8a8621_948a1af1","line":10,"updated":"2026-08-05 09:27:25.000000000","message":"This is not user facing","commit_id":"5905307bbfee544fa4a11590ee48f3a8e63a1303"},{"author":{"_account_id":9303,"name":"Abhishek Kekane","email":"akekane@redhat.com","username":"abhishekkekane"},"change_message_id":"a960b37f2f54dacd8e0f328bad784fe994c7b4d2","unresolved":false,"context_lines":[{"line_number":7,"context_line":"    - Add `--size` parameter to `openstack image stage` command"},{"line_number":8,"context_line":"    - Automatically calculate and pass size when `--size` is not provided but `--file` is present"},{"line_number":9,"context_line":"    - Pass size as `x-openstack-image-size` header to Glance API (not as a Glance image attribute)"},{"line_number":10,"context_line":"    - Add comprehensive unit tests for size parameter functionality"},{"line_number":11,"context_line":""},{"line_number":12,"context_line":"    This change allows users to explicitly specify the size of image data being"},{"line_number":13,"context_line":"    uploaded, which can improve performance and reliability of image uploads."}],"source_content_type":"text/x-yaml","patch_set":3,"id":"64d16520_c3dda051","line":10,"in_reply_to":"2e8a8621_948a1af1","updated":"2026-08-05 11:46:58.000000000","message":"Done","commit_id":"5905307bbfee544fa4a11590ee48f3a8e63a1303"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"542fc217c7174c41cb412197203231ba4a6a000a","unresolved":true,"context_lines":[],"source_content_type":"","patch_set":3,"id":"63c7f6a0_5eb371ae","line":35,"range":{"start_line":24,"start_character":0,"end_line":35,"end_character":1},"updated":"2026-08-05 09:27:25.000000000","message":"You don\u0027t need to include no-op release notes","commit_id":"5905307bbfee544fa4a11590ee48f3a8e63a1303"},{"author":{"_account_id":9303,"name":"Abhishek Kekane","email":"akekane@redhat.com","username":"abhishekkekane"},"change_message_id":"a960b37f2f54dacd8e0f328bad784fe994c7b4d2","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":3,"id":"ad403e15_180ab5a4","line":35,"range":{"start_line":24,"start_character":0,"end_line":35,"end_character":1},"in_reply_to":"63c7f6a0_5eb371ae","updated":"2026-08-05 11:46:58.000000000","message":"Done","commit_id":"5905307bbfee544fa4a11590ee48f3a8e63a1303"}]}
