)]}'
{"ironic_python_agent/disk_utils.py":[{"author":{"_account_id":10380,"name":"Josh Gachnang","email":"josh@pcsforeducation.com","username":"JoshNang"},"change_message_id":"a3538ab983233f833293a0faf9043440700fe230","unresolved":false,"context_lines":[{"line_number":38,"context_line":"    # Please take a look at the linux kernel documentation"},{"line_number":39,"context_line":"    # https://github.com/torvalds/linux/blob/master/Documentation/devices.txt."},{"line_number":40,"context_line":"    # KVM virtio volumes have major number 252 in CentOS, but 253 in Ubuntu."},{"line_number":41,"context_line":"    if (uspec.get(\u0027MAJOR\u0027) is not None"},{"line_number":42,"context_line":"        and int(uspec[\u0027MAJOR\u0027]) not in"},{"line_number":43,"context_line":"            (3, 8, 65, 66, 67, 68, 69, 70, 71,"},{"line_number":44,"context_line":"             104, 105, 106, 107, 108, 109, 110,"}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAAXH%2F%2FaaE%3D","line":41,"updated":"2014-04-22 00:46:58.000000000","message":"This is a bit hard to follow. How about something like:\n\n\ndisk_major_nums \u003d [\u00273\u0027, \u00278\u0027..]\n\nif uspec.get(\u0027MAJOR\u0027)) not in disk_major_nums:\n    \n    return False\n\nOr at the very least, split out the major nums into its own line.","commit_id":"4fe79d4d1772ac37b62ac6d9d71ff9c2034451d1"},{"author":{"_account_id":3009,"name":"Vladimir Kozhukalov","email":"kozhukalov@gmail.com","username":"kozhukalov"},"change_message_id":"68b2927d4abb45da9c416e1e5d276f061d25fdf3","unresolved":false,"context_lines":[{"line_number":38,"context_line":"    # Please take a look at the linux kernel documentation"},{"line_number":39,"context_line":"    # https://github.com/torvalds/linux/blob/master/Documentation/devices.txt."},{"line_number":40,"context_line":"    # KVM virtio volumes have major number 252 in CentOS, but 253 in Ubuntu."},{"line_number":41,"context_line":"    if (uspec.get(\u0027MAJOR\u0027) is not None"},{"line_number":42,"context_line":"        and int(uspec[\u0027MAJOR\u0027]) not in"},{"line_number":43,"context_line":"            (3, 8, 65, 66, 67, 68, 69, 70, 71,"},{"line_number":44,"context_line":"             104, 105, 106, 107, 108, 109, 110,"}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAAXH%2F%2FWeE%3D","line":41,"in_reply_to":"AAAAXH%2F%2FaaE%3D","updated":"2014-04-22 12:02:41.000000000","message":"it is not exactly the same what i meant. the case is as follows. Only if MAJOR number attribute is available (uspec.get(\u0027MAJOR\u0027) is not None) then we need to check whether it is in the list of valid major numbers. If it is not available then we need to skip this piece of filtering. What you\u0027ve suggested will lead to the situation when we\u0027ll filter device out if MAJOR number attribute is not set for this device. \n\nCorrect variant is (will change):\nif \u0027MAJOR\u0027 in uspec and uspec[\u0027MAJOR\u0027] not in disk_major_nums:","commit_id":"4fe79d4d1772ac37b62ac6d9d71ff9c2034451d1"},{"author":{"_account_id":8003,"name":"Aleksandr Gordeev","email":"agordeev@mirantis.com","username":"agordeev"},"change_message_id":"c69fe66a63fb3cd971634e3e8b713e1374839320","unresolved":false,"context_lines":[{"line_number":31,"context_line":"    # Filtering by udevspec"},{"line_number":32,"context_line":"    if uspec is None:"},{"line_number":33,"context_line":"        uspec \u003d udevreport(dev)"},{"line_number":34,"context_line":"    if uspec.get(\u0027ID_CDROM\u0027) \u003d\u003d \u00271\u0027:"},{"line_number":35,"context_line":"        return False"},{"line_number":36,"context_line":"    if uspec.get(\u0027DEVTYPE\u0027) \u003d\u003d \u0027partition\u0027:"},{"line_number":37,"context_line":"        return False"}],"source_content_type":"text/x-python","patch_set":3,"id":"AAAAXH%2F%2FVwg%3D","line":34,"updated":"2014-04-22 12:57:26.000000000","message":"I don\u0027t understand the reason of using get() here since it doesn\u0027t provides the default value. Why dict.get(key) instead of dict[key]?","commit_id":"7902a249f00f14f05ac34dff1fa4459a448496c9"},{"author":{"_account_id":3009,"name":"Vladimir Kozhukalov","email":"kozhukalov@gmail.com","username":"kozhukalov"},"change_message_id":"53ad7903aa726e46bc8fe5bb8965c4e8309801c1","unresolved":false,"context_lines":[{"line_number":31,"context_line":"    # Filtering by udevspec"},{"line_number":32,"context_line":"    if uspec is None:"},{"line_number":33,"context_line":"        uspec \u003d udevreport(dev)"},{"line_number":34,"context_line":"    if uspec.get(\u0027ID_CDROM\u0027) \u003d\u003d \u00271\u0027:"},{"line_number":35,"context_line":"        return False"},{"line_number":36,"context_line":"    if uspec.get(\u0027DEVTYPE\u0027) \u003d\u003d \u0027partition\u0027:"},{"line_number":37,"context_line":"        return False"}],"source_content_type":"text/x-python","patch_set":3,"id":"AAAAXH%2F%2FUHs%3D","line":34,"in_reply_to":"AAAAXH%2F%2FVwg%3D","updated":"2014-04-22 15:05:13.000000000","message":"the reason is to avoid raising exception. if ID_CDROM is not set, we don\u0027t want it to be a reason to filter device out.","commit_id":"7902a249f00f14f05ac34dff1fa4459a448496c9"},{"author":{"_account_id":8003,"name":"Aleksandr Gordeev","email":"agordeev@mirantis.com","username":"agordeev"},"change_message_id":"c69fe66a63fb3cd971634e3e8b713e1374839320","unresolved":false,"context_lines":[{"line_number":33,"context_line":"        uspec \u003d udevreport(dev)"},{"line_number":34,"context_line":"    if uspec.get(\u0027ID_CDROM\u0027) \u003d\u003d \u00271\u0027:"},{"line_number":35,"context_line":"        return False"},{"line_number":36,"context_line":"    if uspec.get(\u0027DEVTYPE\u0027) \u003d\u003d \u0027partition\u0027:"},{"line_number":37,"context_line":"        return False"},{"line_number":38,"context_line":"    # Please take a look at the linux kernel documentation"},{"line_number":39,"context_line":"    # https://github.com/torvalds/linux/blob/master/Documentation/devices.txt."}],"source_content_type":"text/x-python","patch_set":3,"id":"AAAAXH%2F%2FVwY%3D","line":36,"updated":"2014-04-22 12:57:26.000000000","message":"ditto","commit_id":"7902a249f00f14f05ac34dff1fa4459a448496c9"},{"author":{"_account_id":8003,"name":"Aleksandr Gordeev","email":"agordeev@mirantis.com","username":"agordeev"},"change_message_id":"c69fe66a63fb3cd971634e3e8b713e1374839320","unresolved":false,"context_lines":[{"line_number":41,"context_line":"    valid_majors \u003d (3, 8, 65, 66, 67, 68, 69, 70, 71,"},{"line_number":42,"context_line":"                    104, 105, 106, 107, 108, 109, 110,"},{"line_number":43,"context_line":"                    111, 202, 252, 253)"},{"line_number":44,"context_line":"    if \u0027MAJOR\u0027 in uspec and int(uspec[\u0027MAJOR\u0027]) not in valid_majors:"},{"line_number":45,"context_line":"        return False"},{"line_number":46,"context_line":""},{"line_number":47,"context_line":"    # Filtering by blockdev spec"}],"source_content_type":"text/x-python","patch_set":3,"id":"AAAAXH%2F%2FVjA%3D","line":44,"updated":"2014-04-22 12:57:26.000000000","message":"hah, it\u0027s possible to use dict.get() with non-valid default value ;)\n\nif int(uspec.get(\u0027MAJOR\u0027, -1)) not in valid_majors:","commit_id":"7902a249f00f14f05ac34dff1fa4459a448496c9"},{"author":{"_account_id":3009,"name":"Vladimir Kozhukalov","email":"kozhukalov@gmail.com","username":"kozhukalov"},"change_message_id":"53ad7903aa726e46bc8fe5bb8965c4e8309801c1","unresolved":false,"context_lines":[{"line_number":41,"context_line":"    valid_majors \u003d (3, 8, 65, 66, 67, 68, 69, 70, 71,"},{"line_number":42,"context_line":"                    104, 105, 106, 107, 108, 109, 110,"},{"line_number":43,"context_line":"                    111, 202, 252, 253)"},{"line_number":44,"context_line":"    if \u0027MAJOR\u0027 in uspec and int(uspec[\u0027MAJOR\u0027]) not in valid_majors:"},{"line_number":45,"context_line":"        return False"},{"line_number":46,"context_line":""},{"line_number":47,"context_line":"    # Filtering by blockdev spec"}],"source_content_type":"text/x-python","patch_set":3,"id":"AAAAXH%2F%2FUG8%3D","line":44,"in_reply_to":"AAAAXH%2F%2FVjA%3D","updated":"2014-04-22 15:05:13.000000000","message":"we want to check if MAJOR is valid only if it is set. if it is not set, we skip this filter at all.","commit_id":"7902a249f00f14f05ac34dff1fa4459a448496c9"},{"author":{"_account_id":8003,"name":"Aleksandr Gordeev","email":"agordeev@mirantis.com","username":"agordeev"},"change_message_id":"c69fe66a63fb3cd971634e3e8b713e1374839320","unresolved":false,"context_lines":[{"line_number":47,"context_line":"    # Filtering by blockdev spec"},{"line_number":48,"context_line":"    if bspec is None:"},{"line_number":49,"context_line":"        bspec \u003d blockdevreport(dev)"},{"line_number":50,"context_line":"    if bspec.get(\u0027ro\u0027) \u003d\u003d \u00271\u0027:"},{"line_number":51,"context_line":"        return False"},{"line_number":52,"context_line":""},{"line_number":53,"context_line":"    return True"}],"source_content_type":"text/x-python","patch_set":3,"id":"AAAAXH%2F%2FVuU%3D","line":50,"updated":"2014-04-22 12:57:26.000000000","message":"ditto","commit_id":"7902a249f00f14f05ac34dff1fa4459a448496c9"},{"author":{"_account_id":7711,"name":"Yuriy Zveryanskyy","email":"yzveryanskyy@mirantis.com","username":"yuriyz"},"change_message_id":"1a210988827c467d01dc73b3b1f55dea44c81150","unresolved":false,"context_lines":[{"line_number":89,"context_line":"        # ID_SERIAL_SHORT e.g. UH00_296679"},{"line_number":90,"context_line":"        # ID_WWN e.g. 0x50000392e9804d4b (optional)"},{"line_number":91,"context_line":"        # ID_CDROM e.g. 1 for cdrom device (optional)"},{"line_number":92,"context_line":"        if key in (\u0027MAJOR\u0027, \u0027MINOR\u0027, \u0027DEVNAME\u0027, \u0027DEVTYPE\u0027, \u0027DEVPATH\u0027,"},{"line_number":93,"context_line":"                   \u0027ID_BUS\u0027, \u0027ID_MODEL\u0027, \u0027ID_SERIAL_SHORT\u0027,"},{"line_number":94,"context_line":"                   \u0027ID_WWN\u0027, \u0027ID_CDROM\u0027):"},{"line_number":95,"context_line":"            spec[key] \u003d value"}],"source_content_type":"text/x-python","patch_set":3,"id":"AAAAXH%2F%2FCr4%3D","line":92,"updated":"2014-04-24 12:58:37.000000000","message":"Maybe better to use set() here?","commit_id":"7902a249f00f14f05ac34dff1fa4459a448496c9"},{"author":{"_account_id":3009,"name":"Vladimir Kozhukalov","email":"kozhukalov@gmail.com","username":"kozhukalov"},"change_message_id":"c3a01a7185fbd3151ff8d5e602c6da97983cab68","unresolved":false,"context_lines":[{"line_number":89,"context_line":"        # ID_SERIAL_SHORT e.g. UH00_296679"},{"line_number":90,"context_line":"        # ID_WWN e.g. 0x50000392e9804d4b (optional)"},{"line_number":91,"context_line":"        # ID_CDROM e.g. 1 for cdrom device (optional)"},{"line_number":92,"context_line":"        if key in (\u0027MAJOR\u0027, \u0027MINOR\u0027, \u0027DEVNAME\u0027, \u0027DEVTYPE\u0027, \u0027DEVPATH\u0027,"},{"line_number":93,"context_line":"                   \u0027ID_BUS\u0027, \u0027ID_MODEL\u0027, \u0027ID_SERIAL_SHORT\u0027,"},{"line_number":94,"context_line":"                   \u0027ID_WWN\u0027, \u0027ID_CDROM\u0027):"},{"line_number":95,"context_line":"            spec[key] \u003d value"}],"source_content_type":"text/x-python","patch_set":3,"id":"AAAAXX%2F%2F%2Bo0%3D","line":92,"in_reply_to":"AAAAXH%2F%2FCr4%3D","updated":"2014-04-24 21:42:44.000000000","message":"I think here it does not matter tuple or set","commit_id":"7902a249f00f14f05ac34dff1fa4459a448496c9"},{"author":{"_account_id":7711,"name":"Yuriy Zveryanskyy","email":"yzveryanskyy@mirantis.com","username":"yuriyz"},"change_message_id":"1a210988827c467d01dc73b3b1f55dea44c81150","unresolved":false,"context_lines":[{"line_number":123,"context_line":""},{"line_number":124,"context_line":""},{"line_number":125,"context_line":"def extrareport(dev):"},{"line_number":126,"context_line":"    \"\"\"Builds device report using different OS commands."},{"line_number":127,"context_line":""},{"line_number":128,"context_line":"    :param dev: A device file, e.g. /dev/sda."},{"line_number":129,"context_line":""}],"source_content_type":"text/x-python","patch_set":3,"id":"AAAAXH%2F%2FCv0%3D","line":126,"updated":"2014-04-24 12:58:37.000000000","message":"I see only using sysfs below.","commit_id":"7902a249f00f14f05ac34dff1fa4459a448496c9"},{"author":{"_account_id":7711,"name":"Yuriy Zveryanskyy","email":"yzveryanskyy@mirantis.com","username":"yuriyz"},"change_message_id":"1a210988827c467d01dc73b3b1f55dea44c81150","unresolved":false,"context_lines":[{"line_number":161,"context_line":"    device_idx \u003d lines[0].index(\u0027Device\u0027)"},{"line_number":162,"context_line":"    size_idx \u003d lines[0].index(\u0027Size\u0027)"},{"line_number":163,"context_line":""},{"line_number":164,"context_line":"    for line in lines[1:]:"},{"line_number":165,"context_line":"        uspec \u003d udevreport(line[device_idx])"},{"line_number":166,"context_line":"        bspec \u003d blockdevreport(line[device_idx])"},{"line_number":167,"context_line":"        espec \u003d extrareport(line[device_idx])"}],"source_content_type":"text/x-python","patch_set":3,"id":"AAAAXH%2F%2FCu4%3D","line":164,"updated":"2014-04-24 12:58:37.000000000","message":"device \u003d line[device_idx]\nuspec \u003d udevreport(device)\n ... etc","commit_id":"7902a249f00f14f05ac34dff1fa4459a448496c9"}]}
