)]}'
{"/PATCHSET_LEVEL":[{"author":{"_account_id":4393,"name":"Dan Smith","email":"dms@danplanet.com","username":"danms"},"change_message_id":"7a6a88880221b6afc357f131ad1609bde98b288c","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":1,"id":"4178c73b_2708fd02","updated":"2024-07-17 16:44:22.000000000","message":"We shouldn\u0027t merge this just yet, but I\u0027m getting it up to start the process.","commit_id":"cf13c622c0beac938c5cc136b1b76c4c20485630"},{"author":{"_account_id":9816,"name":"Takashi Kajinami","email":"kajinamit@oss.nttdata.com","username":"kajinamit"},"change_message_id":"4be0fc0a48ee6a9da2183b382d833087d851e730","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":2,"id":"0176f3de_2f5c0984","updated":"2024-08-06 16:07:01.000000000","message":"I\u0027m merging this now to avoid stacking too many patches pending on this. We can be open for feedback and can address any in follow-up. Bare direct import should be good for the initial step, IMO.","commit_id":"15370fb95acfdf6388a69f6963c70f9b83e05e08"},{"author":{"_account_id":28522,"name":"Hervé Beraud","email":"herveberaud.pro@gmail.com","username":"hberaud"},"change_message_id":"37bd750fd4e59f9c2224e2cb64943602599e4340","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":2,"id":"9cf0d7ad_04ba9260","updated":"2024-08-01 09:10:13.000000000","message":"LGTM FWIW.\nAs this patch is complex and as I\u0027m not the most experienced guy about this topic, do you want to wait for more feedback from more experienced people or do you want proceed?","commit_id":"15370fb95acfdf6388a69f6963c70f9b83e05e08"},{"author":{"_account_id":9816,"name":"Takashi Kajinami","email":"kajinamit@oss.nttdata.com","username":"kajinamit"},"change_message_id":"5bda02571d9c5ed38a4e58cbde38ca4248d20fc1","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":2,"id":"2294e4bf_334d2e37","updated":"2024-07-23 14:11:12.000000000","message":"My comments may not be strict blockers and can be left for follow-up.","commit_id":"15370fb95acfdf6388a69f6963c70f9b83e05e08"},{"author":{"_account_id":4393,"name":"Dan Smith","email":"dms@danplanet.com","username":"danms"},"change_message_id":"5066dfbd7b9aadfcd1ee4e37ef2c8eeaa1ceb0a3","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":2,"id":"22e226b7_17e820b4","in_reply_to":"9cf0d7ad_04ba9260","updated":"2024-08-01 13:38:26.000000000","message":"This patch is a direct import from nova (and glance) so it\u0027s safe to approve, IMHO. The rest after this are just iterative improvements, and I\u0027ve tested them against nova here:\n\nhttps://review.opendev.org/c/openstack/nova/+/925026\n\n(note only the devstack jobs are expected to pass). Once this starts to land I\u0027ll get more serious about that effort with each of the other projects, which should help shake out any issues introduced by the iteration.\n\nSo I\u0027m comfortable with you approving this and the later ones. However, as I\u0027ve said, if it would make *you* more comfortable to have some SMEs here reviewing, I can certainly try to whip up some, just let me know.\n\nThanks!","commit_id":"15370fb95acfdf6388a69f6963c70f9b83e05e08"}],"oslo_utils/imageutils/format_inspector.py":[{"author":{"_account_id":4690,"name":"melanie witt","display_name":"melwitt","email":"melwittt@gmail.com","username":"melwitt"},"change_message_id":"4661e151af2afa1257dd2295dac435094d2b9e26","unresolved":true,"context_lines":[{"line_number":254,"context_line":"#  72  0x48   Incompatible features bitfield (6 bytes)"},{"line_number":255,"context_line":"#"},{"line_number":256,"context_line":"# https://gitlab.com/qemu-project/qemu/-/blob/master/docs/interop/qcow2.txt"},{"line_number":257,"context_line":"class QcowInspector(FileInspector):"},{"line_number":258,"context_line":"    \"\"\"QEMU QCOW2 Format"},{"line_number":259,"context_line":""},{"line_number":260,"context_line":"    This should only require about 32 bytes of the beginning of the file"}],"source_content_type":"text/x-python","patch_set":1,"id":"34c02e5f_9da1c4f6","line":257,"range":{"start_line":257,"start_character":6,"end_line":257,"end_character":19},"updated":"2024-07-19 03:44:49.000000000","message":"Wondering if we should take the opportunity to rename this to `Qcow2Inspector` given the existence of the \"old QEMU image format\" `qcow` that I assume we will need to add an inspector for:\nhttps://www.qemu.org/docs/master/system/qemu-block-drivers.html#cmdoption-image-formats-arg-qcow\nThis ^ could be named QcowInspector ... or maybe OldQcowInspector?","commit_id":"cf13c622c0beac938c5cc136b1b76c4c20485630"},{"author":{"_account_id":4393,"name":"Dan Smith","email":"dms@danplanet.com","username":"danms"},"change_message_id":"0b15465abae9ef106b5edc9300dc16809123e599","unresolved":true,"context_lines":[{"line_number":254,"context_line":"#  72  0x48   Incompatible features bitfield (6 bytes)"},{"line_number":255,"context_line":"#"},{"line_number":256,"context_line":"# https://gitlab.com/qemu-project/qemu/-/blob/master/docs/interop/qcow2.txt"},{"line_number":257,"context_line":"class QcowInspector(FileInspector):"},{"line_number":258,"context_line":"    \"\"\"QEMU QCOW2 Format"},{"line_number":259,"context_line":""},{"line_number":260,"context_line":"    This should only require about 32 bytes of the beginning of the file"}],"source_content_type":"text/x-python","patch_set":1,"id":"2e81de54_f91dfdf2","line":257,"range":{"start_line":257,"start_character":6,"end_line":257,"end_character":19},"in_reply_to":"34c02e5f_9da1c4f6","updated":"2024-07-19 13:27:43.000000000","message":"Yeah I was thinking about that after our convo. It\u0027s in the list of ALL as `qcow2` (because that\u0027s what we need to match `qemu-img`) and the class name isn\u0027t really used anywhere else. So I think whoever adds the qcow(1) inspector could just rename the class in the process. I was just trying to make this as straight of an import as possible so any other patches that get cooked up in the other places before this merged would at least apply on top of this import.","commit_id":"cf13c622c0beac938c5cc136b1b76c4c20485630"},{"author":{"_account_id":9816,"name":"Takashi Kajinami","email":"kajinamit@oss.nttdata.com","username":"kajinamit"},"change_message_id":"5bda02571d9c5ed38a4e58cbde38ca4248d20fc1","unresolved":true,"context_lines":[{"line_number":29,"context_line":"LOG \u003d logging.getLogger(__name__)"},{"line_number":30,"context_line":""},{"line_number":31,"context_line":""},{"line_number":32,"context_line":"def chunked_reader(fileobj, chunk_size\u003d512):"},{"line_number":33,"context_line":"    while True:"},{"line_number":34,"context_line":"        chunk \u003d fileobj.read(chunk_size)"},{"line_number":35,"context_line":"        if not chunk:"}],"source_content_type":"text/x-python","patch_set":2,"id":"d83b31ae_98613866","line":32,"range":{"start_line":32,"start_character":4,"end_line":32,"end_character":18},"updated":"2024-07-23 14:11:12.000000000","message":"I\u0027m wondering if this can be _chunked_reader if this is not supposed to be used by external modules.","commit_id":"15370fb95acfdf6388a69f6963c70f9b83e05e08"},{"author":{"_account_id":4393,"name":"Dan Smith","email":"dms@danplanet.com","username":"danms"},"change_message_id":"851df0c969e75d298d1e1ed6a56f59a5327c6fc2","unresolved":false,"context_lines":[{"line_number":29,"context_line":"LOG \u003d logging.getLogger(__name__)"},{"line_number":30,"context_line":""},{"line_number":31,"context_line":""},{"line_number":32,"context_line":"def chunked_reader(fileobj, chunk_size\u003d512):"},{"line_number":33,"context_line":"    while True:"},{"line_number":34,"context_line":"        chunk \u003d fileobj.read(chunk_size)"},{"line_number":35,"context_line":"        if not chunk:"}],"source_content_type":"text/x-python","patch_set":2,"id":"f358fc7b_8ab924d2","line":32,"range":{"start_line":32,"start_character":4,"end_line":32,"end_character":18},"in_reply_to":"bc2c2be4_690c1e52","updated":"2024-07-23 17:07:58.000000000","message":"Done","commit_id":"15370fb95acfdf6388a69f6963c70f9b83e05e08"},{"author":{"_account_id":4393,"name":"Dan Smith","email":"dms@danplanet.com","username":"danms"},"change_message_id":"87f20bae77d58f22f077fb377fb868696f501ce6","unresolved":true,"context_lines":[{"line_number":29,"context_line":"LOG \u003d logging.getLogger(__name__)"},{"line_number":30,"context_line":""},{"line_number":31,"context_line":""},{"line_number":32,"context_line":"def chunked_reader(fileobj, chunk_size\u003d512):"},{"line_number":33,"context_line":"    while True:"},{"line_number":34,"context_line":"        chunk \u003d fileobj.read(chunk_size)"},{"line_number":35,"context_line":"        if not chunk:"}],"source_content_type":"text/x-python","patch_set":2,"id":"bc2c2be4_690c1e52","line":32,"range":{"start_line":32,"start_character":4,"end_line":32,"end_character":18},"in_reply_to":"d83b31ae_98613866","updated":"2024-07-23 16:30:57.000000000","message":"Sure, makes sense to me. Although it\u0027s not likely a problem, if you\u0027re okay with it I\u0027d like to do that in a separate patch just to keep the import-as-it-is as clean as possible.","commit_id":"15370fb95acfdf6388a69f6963c70f9b83e05e08"},{"author":{"_account_id":9816,"name":"Takashi Kajinami","email":"kajinamit@oss.nttdata.com","username":"kajinamit"},"change_message_id":"5bda02571d9c5ed38a4e58cbde38ca4248d20fc1","unresolved":true,"context_lines":[{"line_number":117,"context_line":"        # retain all that work and assist in future debug, we have a separate"},{"line_number":118,"context_line":"        # debug flag that can be passed from a manual tool to turn it on."},{"line_number":119,"context_line":"        if tracing:"},{"line_number":120,"context_line":"            self._log \u003d logging.getLogger(str(self))"},{"line_number":121,"context_line":"        else:"},{"line_number":122,"context_line":"            self._log \u003d TraceDisabled()"},{"line_number":123,"context_line":"        self._capture_regions \u003d {}"}],"source_content_type":"text/x-python","patch_set":2,"id":"052a0cdf_be336a45","line":120,"range":{"start_line":120,"start_character":12,"end_line":120,"end_character":52},"updated":"2024-07-23 14:11:12.000000000","message":"I\u0027m wondering if we can use LOG, and create the `_trace` method which does nothing in case tracing is False and use it.\n```\ndef _trace(self, *args, **kwargs):\n    if self.tracing:\n        LOG.debug(*args, **kwargs)\n```\n\nThe current implementation may use different logger name per format, not per service which can confuse deployment using syslog.","commit_id":"15370fb95acfdf6388a69f6963c70f9b83e05e08"},{"author":{"_account_id":4393,"name":"Dan Smith","email":"dms@danplanet.com","username":"danms"},"change_message_id":"87f20bae77d58f22f077fb377fb868696f501ce6","unresolved":true,"context_lines":[{"line_number":117,"context_line":"        # retain all that work and assist in future debug, we have a separate"},{"line_number":118,"context_line":"        # debug flag that can be passed from a manual tool to turn it on."},{"line_number":119,"context_line":"        if tracing:"},{"line_number":120,"context_line":"            self._log \u003d logging.getLogger(str(self))"},{"line_number":121,"context_line":"        else:"},{"line_number":122,"context_line":"            self._log \u003d TraceDisabled()"},{"line_number":123,"context_line":"        self._capture_regions \u003d {}"}],"source_content_type":"text/x-python","patch_set":2,"id":"6be9f185_8977f451","line":120,"range":{"start_line":120,"start_character":12,"end_line":120,"end_character":52},"in_reply_to":"052a0cdf_be336a45","updated":"2024-07-23 16:30:57.000000000","message":"I think this has mostly become unused at this point, so I can probably strip it out now. I used this heavily while developing this years ago, and assumed I would need to be able to turn this on in production to diagnose issues, but none have ever really popped up.","commit_id":"15370fb95acfdf6388a69f6963c70f9b83e05e08"},{"author":{"_account_id":9816,"name":"Takashi Kajinami","email":"kajinamit@oss.nttdata.com","username":"kajinamit"},"change_message_id":"2f785b32974fbf8b53a32abdb8a4746054419385","unresolved":true,"context_lines":[{"line_number":117,"context_line":"        # retain all that work and assist in future debug, we have a separate"},{"line_number":118,"context_line":"        # debug flag that can be passed from a manual tool to turn it on."},{"line_number":119,"context_line":"        if tracing:"},{"line_number":120,"context_line":"            self._log \u003d logging.getLogger(str(self))"},{"line_number":121,"context_line":"        else:"},{"line_number":122,"context_line":"            self._log \u003d TraceDisabled()"},{"line_number":123,"context_line":"        self._capture_regions \u003d {}"}],"source_content_type":"text/x-python","patch_set":2,"id":"fe09f1d9_b7c31471","line":120,"range":{"start_line":120,"start_character":12,"end_line":120,"end_character":52},"in_reply_to":"60b7323d_70ad75ef","updated":"2024-07-29 14:27:26.000000000","message":"Let\u0027s address this is a follow-up.","commit_id":"15370fb95acfdf6388a69f6963c70f9b83e05e08"},{"author":{"_account_id":4393,"name":"Dan Smith","email":"dms@danplanet.com","username":"danms"},"change_message_id":"851df0c969e75d298d1e1ed6a56f59a5327c6fc2","unresolved":false,"context_lines":[{"line_number":117,"context_line":"        # retain all that work and assist in future debug, we have a separate"},{"line_number":118,"context_line":"        # debug flag that can be passed from a manual tool to turn it on."},{"line_number":119,"context_line":"        if tracing:"},{"line_number":120,"context_line":"            self._log \u003d logging.getLogger(str(self))"},{"line_number":121,"context_line":"        else:"},{"line_number":122,"context_line":"            self._log \u003d TraceDisabled()"},{"line_number":123,"context_line":"        self._capture_regions \u003d {}"}],"source_content_type":"text/x-python","patch_set":2,"id":"60b7323d_70ad75ef","line":120,"range":{"start_line":120,"start_character":12,"end_line":120,"end_character":52},"in_reply_to":"6be9f185_8977f451","updated":"2024-07-23 17:07:58.000000000","message":"Ah, still used in the very complex VHDX inspector, so yeah I\u0027ll do what you suggest here.","commit_id":"15370fb95acfdf6388a69f6963c70f9b83e05e08"},{"author":{"_account_id":4393,"name":"Dan Smith","email":"dms@danplanet.com","username":"danms"},"change_message_id":"5066dfbd7b9aadfcd1ee4e37ef2c8eeaa1ceb0a3","unresolved":false,"context_lines":[{"line_number":117,"context_line":"        # retain all that work and assist in future debug, we have a separate"},{"line_number":118,"context_line":"        # debug flag that can be passed from a manual tool to turn it on."},{"line_number":119,"context_line":"        if tracing:"},{"line_number":120,"context_line":"            self._log \u003d logging.getLogger(str(self))"},{"line_number":121,"context_line":"        else:"},{"line_number":122,"context_line":"            self._log \u003d TraceDisabled()"},{"line_number":123,"context_line":"        self._capture_regions \u003d {}"}],"source_content_type":"text/x-python","patch_set":2,"id":"77e38a98_4e9bbfdc","line":120,"range":{"start_line":120,"start_character":12,"end_line":120,"end_character":52},"in_reply_to":"fe09f1d9_b7c31471","updated":"2024-08-01 13:38:26.000000000","message":"Done here: https://review.opendev.org/c/openstack/oslo.utils/+/924766/2/oslo_utils/imageutils/format_inspector.py","commit_id":"15370fb95acfdf6388a69f6963c70f9b83e05e08"}]}
