)]}'
{"oslo_utils/imageutils.py":[{"author":{"_account_id":6928,"name":"Ben Nemec","email":"openstack@nemebean.com","username":"bnemec"},"change_message_id":"70a15c4f2cc06cf5450bc66d93f27bee7af2b537","unresolved":false,"context_lines":[{"line_number":38,"context_line":"    The instance of :class:`QemuImgInfo` has properties: `image`,"},{"line_number":39,"context_line":"    `backing_file`, `file_format`, `virtual_size`, `cluster_size`,"},{"line_number":40,"context_line":"    `disk_size`, `snapshots` and `encrypted`."},{"line_number":41,"context_line":"    The parameter format can be set to \u0027json\u0027 or \u0027human\u0027. With \u0027json\u0027 format"},{"line_number":42,"context_line":"    output, qemu image information will be parsed more easily and readable."},{"line_number":43,"context_line":"    \"\"\""},{"line_number":44,"context_line":"    BACKING_FILE_RE \u003d re.compile((r\"^(.*?)\\s*\\(actual\\s+path\\s*:\""}],"source_content_type":"text/x-python","patch_set":3,"id":"1fa4df85_240a1e26","line":41,"updated":"2020-02-24 22:10:22.000000000","message":"I\u0027m curious, does json output fix this? I\u0027m wondering why we default to human when the description seems to suggest json is superior for this purpose.\n\nIf that disables the annoying output changes that qemu seems to like to introduce every few releases then I would push hard for that to be our new default. Maybe our lower-constraint for qemu is too old?","commit_id":"59390a145957943523f1af5edc154a8bd33da385"},{"author":{"_account_id":10135,"name":"Lee Yarwood","display_name":"Lee Yarwood","email":"lyarwood@redhat.com","username":"lyarwood"},"change_message_id":"716e22e2b4238bb119c57d14033a29aad231fedd","unresolved":false,"context_lines":[{"line_number":38,"context_line":"    The instance of :class:`QemuImgInfo` has properties: `image`,"},{"line_number":39,"context_line":"    `backing_file`, `file_format`, `virtual_size`, `cluster_size`,"},{"line_number":40,"context_line":"    `disk_size`, `snapshots` and `encrypted`."},{"line_number":41,"context_line":"    The parameter format can be set to \u0027json\u0027 or \u0027human\u0027. With \u0027json\u0027 format"},{"line_number":42,"context_line":"    output, qemu image information will be parsed more easily and readable."},{"line_number":43,"context_line":"    \"\"\""},{"line_number":44,"context_line":"    BACKING_FILE_RE \u003d re.compile((r\"^(.*?)\\s*\\(actual\\s+path\\s*:\""}],"source_content_type":"text/x-python","patch_set":3,"id":"1fa4df85_6d6f92c5","line":41,"in_reply_to":"1fa4df85_240a1e26","updated":"2020-02-25 09:38:56.000000000","message":"\u003e I\u0027m curious, does json output fix this? I\u0027m wondering why we\n \u003e default to human when the description seems to suggest json is\n \u003e superior for this purpose.\n\nYes it does, it also makes improvements like I133da07a5a9628b8a9338556939c858afae679f4 much easier. We should definitely change the default to JSON sooner rather than later IMHO.\n\n \u003e If that disables the annoying output changes that qemu seems to\n \u003e like to introduce every few releases then I would push hard for\n \u003e that to be our new default. Maybe our lower-constraint for qemu is\n \u003e too old?\n\nThe only lower-constraint for QEMU that I\u0027m aware of is in the code of the Libvirt driver within Nova. MIN_QEMU_VERSION currently sits at 2.11 and should be modern enough for us to default to JSON here:\n\nhttps://github.com/openstack/nova/blob/270a61e749f346669c05675d51353116638c33ba/nova/virt/libvirt/driver.py#L226","commit_id":"59390a145957943523f1af5edc154a8bd33da385"},{"author":{"_account_id":28522,"name":"Hervé Beraud","email":"herveberaud.pro@gmail.com","username":"hberaud"},"change_message_id":"7c2c246414d51b83de77974683162c18198769f6","unresolved":false,"context_lines":[{"line_number":38,"context_line":"    The instance of :class:`QemuImgInfo` has properties: `image`,"},{"line_number":39,"context_line":"    `backing_file`, `file_format`, `virtual_size`, `cluster_size`,"},{"line_number":40,"context_line":"    `disk_size`, `snapshots` and `encrypted`."},{"line_number":41,"context_line":"    The parameter format can be set to \u0027json\u0027 or \u0027human\u0027. With \u0027json\u0027 format"},{"line_number":42,"context_line":"    output, qemu image information will be parsed more easily and readable."},{"line_number":43,"context_line":"    \"\"\""},{"line_number":44,"context_line":"    BACKING_FILE_RE \u003d re.compile((r\"^(.*?)\\s*\\(actual\\s+path\\s*:\""}],"source_content_type":"text/x-python","patch_set":3,"id":"1fa4df85_ada02aa7","line":41,"in_reply_to":"1fa4df85_240a1e26","updated":"2020-02-25 10:01:35.000000000","message":"I totally agree with you and this is the way we chose with Lon to address the issue.\n\nLon proposed to move to json from the ironic side to avoid this kind of issue each new release.\n\nConcerning the lower constraint I don\u0027t know I need to investiguate why to don\u0027t use it as the default.","commit_id":"59390a145957943523f1af5edc154a8bd33da385"},{"author":{"_account_id":6928,"name":"Ben Nemec","email":"openstack@nemebean.com","username":"bnemec"},"change_message_id":"bf896ef541b899c11932babc0ba282dec1a46313","unresolved":false,"context_lines":[{"line_number":38,"context_line":"    The instance of :class:`QemuImgInfo` has properties: `image`,"},{"line_number":39,"context_line":"    `backing_file`, `file_format`, `virtual_size`, `cluster_size`,"},{"line_number":40,"context_line":"    `disk_size`, `snapshots` and `encrypted`."},{"line_number":41,"context_line":"    The parameter format can be set to \u0027json\u0027 or \u0027human\u0027. With \u0027json\u0027 format"},{"line_number":42,"context_line":"    output, qemu image information will be parsed more easily and readable."},{"line_number":43,"context_line":"    \"\"\""},{"line_number":44,"context_line":"    BACKING_FILE_RE \u003d re.compile((r\"^(.*?)\\s*\\(actual\\s+path\\s*:\""}],"source_content_type":"text/x-python","patch_set":3,"id":"1fa4df85_e1f706f5","line":41,"in_reply_to":"1fa4df85_ada02aa7","updated":"2020-02-25 16:46:32.000000000","message":"I would rather not do this from Ironic. In fact, I\u0027m not at all sure why we even made this configurable. It\u0027s an implementation detail internal to the class.\n\nThat said, fixing it with a regex will allow backporting if necessary so I\u0027m good with merging this and switching to json separately.","commit_id":"59390a145957943523f1af5edc154a8bd33da385"},{"author":{"_account_id":6928,"name":"Ben Nemec","email":"openstack@nemebean.com","username":"bnemec"},"change_message_id":"70a15c4f2cc06cf5450bc66d93f27bee7af2b537","unresolved":false,"context_lines":[{"line_number":47,"context_line":"    SIZE_RE \u003d re.compile(r\"([0-9]+[eE][-+][0-9]+|\\d*\\.?\\d+)\""},{"line_number":48,"context_line":"                         \"\\s*(\\w+)?(\\s*\\(\\s*(\\d+)\\s+bytes\\s*\\))?\","},{"line_number":49,"context_line":"                         re.I)"},{"line_number":50,"context_line":"    SCI_NOTATION \u003d re.compile(r\u0027([0-9]+[eE][-+][0-9]+)\u0027)"},{"line_number":51,"context_line":""},{"line_number":52,"context_line":"    def __init__(self, cmd_output\u003dNone, format\u003d\u0027human\u0027):"},{"line_number":53,"context_line":"        if format \u003d\u003d \u0027json\u0027:"}],"source_content_type":"text/x-python","patch_set":3,"id":"1fa4df85_8f752b9b","line":50,"updated":"2020-02-24 22:10:22.000000000","message":"I feel like we could just look for \"e\" in the value rather than introduce another regex. That would also eliminate the possibility of these two regexes getting out of sync.","commit_id":"59390a145957943523f1af5edc154a8bd33da385"},{"author":{"_account_id":28522,"name":"Hervé Beraud","email":"herveberaud.pro@gmail.com","username":"hberaud"},"change_message_id":"7c2c246414d51b83de77974683162c18198769f6","unresolved":false,"context_lines":[{"line_number":47,"context_line":"    SIZE_RE \u003d re.compile(r\"([0-9]+[eE][-+][0-9]+|\\d*\\.?\\d+)\""},{"line_number":48,"context_line":"                         \"\\s*(\\w+)?(\\s*\\(\\s*(\\d+)\\s+bytes\\s*\\))?\","},{"line_number":49,"context_line":"                         re.I)"},{"line_number":50,"context_line":"    SCI_NOTATION \u003d re.compile(r\u0027([0-9]+[eE][-+][0-9]+)\u0027)"},{"line_number":51,"context_line":""},{"line_number":52,"context_line":"    def __init__(self, cmd_output\u003dNone, format\u003d\u0027human\u0027):"},{"line_number":53,"context_line":"        if format \u003d\u003d \u0027json\u0027:"}],"source_content_type":"text/x-python","patch_set":3,"id":"1fa4df85_cda566b7","line":50,"in_reply_to":"1fa4df85_8f752b9b","updated":"2020-02-25 10:01:35.000000000","message":"I prefered used a regex here to avoid cases where notation could differ (1e+03 vs 1E+03 etc...) but we have 2 alternative to avoid to sync regexes, either we look for \"e\" on a lowercase\u0027d string or we reuse fragment in the both side with something like:\n\n```\nSCI_NOTATION \u003d \u0027([0-9]+[eE][-+][0-9]+)\u0027\nSIZE_RE \u003d re.compile(r\"({SCI_NOTATION}|\\d*\\.?\\d+)\"\n                      \"\\s*(\\w+)?(\\s*\\(\\s*(\\d+)\\s+bytes\\s*\\))?\".format(SCI_NOTATION), re.I)\nSCI_NOTATION_RE \u003d re.compiler(r\u0027{SCI_NOTATION}\u0027.format(SCI_NOTATION))\n```\n\nMy main concern is that scientific notation could differ, however I don\u0027t think that qemu will give us exotical output and notations and disk space should not be an outlier.\n\nSo I think you are right and we could easily look for \"e\" in a lowercase fashion.","commit_id":"59390a145957943523f1af5edc154a8bd33da385"},{"author":{"_account_id":6928,"name":"Ben Nemec","email":"openstack@nemebean.com","username":"bnemec"},"change_message_id":"bf896ef541b899c11932babc0ba282dec1a46313","unresolved":false,"context_lines":[{"line_number":47,"context_line":"    SIZE_RE \u003d re.compile(r\"([0-9]+[eE][-+][0-9]+|\\d*\\.?\\d+)\""},{"line_number":48,"context_line":"                         \"\\s*(\\w+)?(\\s*\\(\\s*(\\d+)\\s+bytes\\s*\\))?\","},{"line_number":49,"context_line":"                         re.I)"},{"line_number":50,"context_line":"    SCI_NOTATION \u003d re.compile(r\u0027([0-9]+[eE][-+][0-9]+)\u0027)"},{"line_number":51,"context_line":""},{"line_number":52,"context_line":"    def __init__(self, cmd_output\u003dNone, format\u003d\u0027human\u0027):"},{"line_number":53,"context_line":"        if format \u003d\u003d \u0027json\u0027:"}],"source_content_type":"text/x-python","patch_set":3,"id":"1fa4df85_c1cbeaa2","line":50,"in_reply_to":"1fa4df85_cda566b7","updated":"2020-02-25 16:46:32.000000000","message":"Yep, sounds good. Hopefully we won\u0027t have to worry about this long-term anyway.","commit_id":"59390a145957943523f1af5edc154a8bd33da385"}],"oslo_utils/tests/test_imageutils.py":[{"author":{"_account_id":10135,"name":"Lee Yarwood","display_name":"Lee Yarwood","email":"lyarwood@redhat.com","username":"lyarwood"},"change_message_id":"1f144f72600badf41404ece54144df085b767773","unresolved":false,"context_lines":[{"line_number":31,"context_line":"        (\u0027raw\u0027, dict(file_format\u003d\u0027raw\u0027)),"},{"line_number":32,"context_line":"    ]"},{"line_number":33,"context_line":""},{"line_number":34,"context_line":"    _virtual_size \u003d ["},{"line_number":35,"context_line":"        (\u002764M\u0027, dict(virtual_size\u003d\u002764M\u0027,"},{"line_number":36,"context_line":"                     exp_virtual_size\u003d67108864)),"},{"line_number":37,"context_line":"        (\u002764M_with_byte_hint\u0027, dict(virtual_size\u003d\u002764M (67108844 bytes)\u0027,"}],"source_content_type":"text/x-python","patch_set":4,"id":"1fa4df85_db451719","line":34,"range":{"start_line":34,"start_character":0,"end_line":34,"end_character":21},"updated":"2020-02-26 08:35:25.000000000","message":"nit - Shouldn\u0027t we also test this here?","commit_id":"ebf8368501500767fd4e6e13602bb88950a4484b"},{"author":{"_account_id":28522,"name":"Hervé Beraud","email":"herveberaud.pro@gmail.com","username":"hberaud"},"change_message_id":"672a8073a446e07b5fe7fe00eb902cfa8fc5ef10","unresolved":false,"context_lines":[{"line_number":31,"context_line":"        (\u0027raw\u0027, dict(file_format\u003d\u0027raw\u0027)),"},{"line_number":32,"context_line":"    ]"},{"line_number":33,"context_line":""},{"line_number":34,"context_line":"    _virtual_size \u003d ["},{"line_number":35,"context_line":"        (\u002764M\u0027, dict(virtual_size\u003d\u002764M\u0027,"},{"line_number":36,"context_line":"                     exp_virtual_size\u003d67108864)),"},{"line_number":37,"context_line":"        (\u002764M_with_byte_hint\u0027, dict(virtual_size\u003d\u002764M (67108844 bytes)\u0027,"}],"source_content_type":"text/x-python","patch_set":4,"id":"1fa4df85_a25102db","line":34,"range":{"start_line":34,"start_character":0,"end_line":34,"end_character":21},"in_reply_to":"1fa4df85_db451719","updated":"2020-02-26 09:18:57.000000000","message":"Indeed could be worth, I\u0027ll address that with a follow up commit","commit_id":"ebf8368501500767fd4e6e13602bb88950a4484b"}]}
