)]}'
{"bin/disk-image-create":[{"author":{"_account_id":10035,"name":"greghaynes","email":"greg@greghaynes.net","username":"greghaynes"},"change_message_id":"d36975bf8d5941fee88f4a9deaea997acf79610d","unresolved":false,"context_lines":[{"line_number":432,"context_line":""},{"line_number":433,"context_line":"# Create the partitions and make them visible to the system"},{"line_number":434,"context_line":"IMAGE_BLOCK_DEVICE_WITHOUT_PART\u003d$(echo ${IMAGE_BLOCK_DEVICE} \\"},{"line_number":435,"context_line":"\t\t\t\t\t | sed -e \"s|^\\(.*\\)p5$|\\1|g\")"},{"line_number":436,"context_line":""},{"line_number":437,"context_line":"sudo partprobe $IMAGE_BLOCK_DEVICE_WITHOUT_PART"},{"line_number":438,"context_line":""}],"source_content_type":"application/x-shellscript","patch_set":1,"id":"3a98d1f4_bf9f365e","line":435,"updated":"2016-09-28 20:20:11.000000000","message":"nitpick - s/tab/space/","commit_id":"6b9b0379734f71c52eca983b1dc57850ef756be2"},{"author":{"_account_id":21741,"name":"Andreas Florath","email":"andreas@florath.net","username":"florath"},"change_message_id":"114fa9822cbcb2b00b9279fd5402be048b157f93","unresolved":false,"context_lines":[{"line_number":432,"context_line":""},{"line_number":433,"context_line":"# Create the partitions and make them visible to the system"},{"line_number":434,"context_line":"IMAGE_BLOCK_DEVICE_WITHOUT_PART\u003d$(echo ${IMAGE_BLOCK_DEVICE} \\"},{"line_number":435,"context_line":"\t\t\t\t\t | sed -e \"s|^\\(.*\\)p5$|\\1|g\")"},{"line_number":436,"context_line":""},{"line_number":437,"context_line":"sudo partprobe $IMAGE_BLOCK_DEVICE_WITHOUT_PART"},{"line_number":438,"context_line":""}],"source_content_type":"application/x-shellscript","patch_set":1,"id":"3a98d1f4_c9711846","line":435,"in_reply_to":"3a98d1f4_bf9f365e","updated":"2016-10-02 07:21:20.000000000","message":"Done","commit_id":"6b9b0379734f71c52eca983b1dc57850ef756be2"},{"author":{"_account_id":21741,"name":"Andreas Florath","email":"andreas@florath.net","username":"florath"},"change_message_id":"30ec092e496c387a3d7ee44ca2e0634c8536f7cb","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":8,"id":"9a629dbe_4130fd56","updated":"2016-11-08 06:44:18.000000000","message":"Greg: can you confirm that this was a merge from the master branch only?","commit_id":"65e2f01d18b86762066384b615567192bbf37bfa"}],"diskimage_builder/block_device/__init__.py":[{"author":{"_account_id":10035,"name":"greghaynes","email":"greg@greghaynes.net","username":"greghaynes"},"change_message_id":"e094e7227e27fc42a2d70ed1419d875f7e4bb76c","unresolved":false,"context_lines":[{"line_number":69,"context_line":"    method \u003d getattr(bd, \"cmd_\" + args.phase, None)"},{"line_number":70,"context_line":"    if callable(method):"},{"line_number":71,"context_line":"        # If so: call it."},{"line_number":72,"context_line":"        return method()"},{"line_number":73,"context_line":"    else:"},{"line_number":74,"context_line":"        logger.error(\"phase [%s] does not exists\" % args.phase)"},{"line_number":75,"context_line":"        return 1"}],"source_content_type":"text/x-python","patch_set":18,"id":"9a629dbe_e1af1e92","line":72,"updated":"2016-11-10 20:19:12.000000000","message":"I think here and below you\u0027re trying to cause the scipt to exit with the corresponding exit code? If so you need to sys.exit(method()), or on line 82 do sys.exit(main())","commit_id":"cb8c23fa04eb25619834d898660531fe08c205d7"}],"diskimage_builder/block_device/blockdevice.py":[{"author":{"_account_id":12459,"name":"Stephanie Miller","email":"stephane@alum.mit.edu","username":"cinerama"},"change_message_id":"b05e6bd816795598fa321f86663ab94f09fa9ee7","unresolved":false,"context_lines":[{"line_number":27,"context_line":""},{"line_number":28,"context_line":"class BlockDevice(object):"},{"line_number":29,"context_line":""},{"line_number":30,"context_line":"    # Currently there is only the need for a first element (which must"},{"line_number":31,"context_line":"    # be a list)."},{"line_number":32,"context_line":"    DefaultConfig \u003d ["},{"line_number":33,"context_line":"        [[\"local_loop\","},{"line_number":34,"context_line":"          {\"name\": \"rootdisk\"}]],"}],"source_content_type":"text/x-python","patch_set":3,"id":"fa6399be_e0077616","line":31,"range":{"start_line":30,"start_character":4,"end_line":31,"end_character":17},"updated":"2016-10-18 00:45:57.000000000","message":"This comment and the one below DefaultConfig should be updated to reflect the current status of the code.","commit_id":"2101286d1eeac7c73fda6273201fc45ccfbf9506"},{"author":{"_account_id":21741,"name":"Andreas Florath","email":"andreas@florath.net","username":"florath"},"change_message_id":"2a8780b9fbc81b4561e023ed363e52ac1d643777","unresolved":false,"context_lines":[{"line_number":80,"context_line":""},{"line_number":81,"context_line":"        # To be compatible with the current implementation, echo the"},{"line_number":82,"context_line":"        # result to stdout."},{"line_number":83,"context_line":"        print(\"%s\" % result[result.keys()[0]][\u0027device\u0027])"},{"line_number":84,"context_line":""},{"line_number":85,"context_line":"        self.write_state(result)"},{"line_number":86,"context_line":""}],"source_content_type":"text/x-python","patch_set":4,"id":"9a629dbe_0149a55f","line":83,"updated":"2016-11-08 06:23:00.000000000","message":"Yolanda: can you please explain, what do you want to archive with this? (IMHO this cannot work, because there is no defined order in python dictionaries.)","commit_id":"56aea9d4b3726be9a0ac4820f34272b15fa684d5"},{"author":{"_account_id":6133,"name":"yolanda.robla","email":"yroblamo@redhat.com","username":"yolanda.robla"},"change_message_id":"50fff8d9e66aee132332070f9e0efcada2998629","unresolved":false,"context_lines":[{"line_number":80,"context_line":""},{"line_number":81,"context_line":"        # To be compatible with the current implementation, echo the"},{"line_number":82,"context_line":"        # result to stdout."},{"line_number":83,"context_line":"        print(\"%s\" % result[result.keys()[0]][\u0027device\u0027])"},{"line_number":84,"context_line":""},{"line_number":85,"context_line":"        self.write_state(result)"},{"line_number":86,"context_line":""}],"source_content_type":"text/x-python","patch_set":4,"id":"9a629dbe_486d7d97","line":83,"in_reply_to":"9a629dbe_0149a55f","updated":"2016-11-08 07:39:23.000000000","message":"The reason is that you were hardcoding the value, and this was failing with provided jsons that were different from the default. So if you pass something like:\n\nexport DIB_BLOCK_DEVICE_CONFIG\u003d\u0027[\n        [[\"local_loop\",\n          {\"name\": \"rootdisk\"},\n          {\"name\": \"datadisk\"}]],\n        [[\"partitioning\",\n          {\"rootdisk\": {\n              \"label\": \"mbr\",\n              \"partitions\":\n              [{\"name\": \"part-01\",\n                \"flags\": [\"boot\"],\n                \"size\": \"1GiB\"},\n               {\"name\": \"rd-partition1\",\n                \"size\": \"100%\"}]}},\n          {\"datadisk\": {\n              \"label\": \"mbr\",\n              \"partitions\":\n              [{\"name\": \"data0\",\n                \"size\": \"33%\"},\n               {\"name\": \"data1\",\n                \"size\": \"33%\"},\n               {\"name\": \"data2\",\n                \"size\": \"33%\"}]}}]]]\u0027\n\nIt was failing, as the name was not rootdisk, but rd-partition1. It may be an error in the code that was referencing the partition, not the disk. But also the json allows to define your local_loop with the names you want, no \"rootdisk\" is enforced anyway, so I wanted just to pick the first local_loop found.","commit_id":"56aea9d4b3726be9a0ac4820f34272b15fa684d5"},{"author":{"_account_id":10035,"name":"greghaynes","email":"greg@greghaynes.net","username":"greghaynes"},"change_message_id":"e094e7227e27fc42a2d70ed1419d875f7e4bb76c","unresolved":false,"context_lines":[{"line_number":107,"context_line":"            if cfg_obj_name not in BlockDevice.cfg_type_map:"},{"line_number":108,"context_line":"                logger.error(\"Configured top level element [%s] \""},{"line_number":109,"context_line":"                             \"does not exists.\" % cfg_obj_name)"},{"line_number":110,"context_line":"                return 1"},{"line_number":111,"context_line":"            logger.debug(\"Object [%s]\" %"},{"line_number":112,"context_line":"                         BlockDevice.cfg_type_map[cfg_obj_name])"},{"line_number":113,"context_line":"            cfg_obj \u003d BlockDevice.cfg_type_map[cfg_obj_name]("}],"source_content_type":"text/x-python","patch_set":18,"id":"9a629dbe_e139de42","line":110,"updated":"2016-11-10 20:19:12.000000000","message":"I dont think this return can be useful (the callers don\u0027t check the return value) - did you mean to raise an exception?","commit_id":"cb8c23fa04eb25619834d898660531fe08c205d7"},{"author":{"_account_id":10035,"name":"greghaynes","email":"greg@greghaynes.net","username":"greghaynes"},"change_message_id":"e094e7227e27fc42a2d70ed1419d875f7e4bb76c","unresolved":false,"context_lines":[{"line_number":145,"context_line":"            logger.error(\"exception [%s]\" % bdse)"},{"line_number":146,"context_line":"            for rollback_cb in reversed(rollback):"},{"line_number":147,"context_line":"                rollback_cb()"},{"line_number":148,"context_line":"            sys.exit(1)"},{"line_number":149,"context_line":""},{"line_number":150,"context_line":"        # To be compatible with the current implementation, echo the"},{"line_number":151,"context_line":"        # result to stdout."}],"source_content_type":"text/x-python","patch_set":18,"id":"9a629dbe_8105827b","line":148,"updated":"2016-11-10 20:19:12.000000000","message":"Lets return 1 here and do the sys.exit in the caller as mentioned in the other comment - its nice to leave the command aspects in a single module","commit_id":"cb8c23fa04eb25619834d898660531fe08c205d7"}],"diskimage_builder/block_device/blockdevicesetupexception.py":[{"author":{"_account_id":10035,"name":"greghaynes","email":"greg@greghaynes.net","username":"greghaynes"},"change_message_id":"e094e7227e27fc42a2d70ed1419d875f7e4bb76c","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":18,"id":"9a629dbe_61730e4e","updated":"2016-11-10 20:19:12.000000000","message":"nitpick, but this seems overly specific for a single exception - theres a common pattern of making a module named exc high up in the module (diskimage_builder.exc, for exmaple) where all the exc\u0027s are stored for the sake of simplicity.","commit_id":"cb8c23fa04eb25619834d898660531fe08c205d7"}],"diskimage_builder/block_device/level0/localloop.py":[{"author":{"_account_id":10035,"name":"greghaynes","email":"greg@greghaynes.net","username":"greghaynes"},"change_message_id":"e094e7227e27fc42a2d70ed1419d875f7e4bb76c","unresolved":false,"context_lines":[{"line_number":71,"context_line":"    def _loopdev_attach(filename):"},{"line_number":72,"context_line":"        logger.info(\"loopdev attach\")"},{"line_number":73,"context_line":"        logger.debug(\"Calling [sudo losetup --show -f %s]\", filename)"},{"line_number":74,"context_line":"        subp \u003d subprocess.Popen([\"sudo\", \"losetup\", \"--show\", \"-f\","},{"line_number":75,"context_line":"                                 filename], stdout\u003dsubprocess.PIPE)"},{"line_number":76,"context_line":"        rval \u003d subp.wait()"},{"line_number":77,"context_line":"        if rval \u003d\u003d 0:"}],"source_content_type":"text/x-python","patch_set":18,"id":"9a629dbe_4478d82a","line":74,"updated":"2016-11-10 20:19:12.000000000","message":"Because were now calling this with sudo from disk-image-create, lets remove the sudo here.","commit_id":"cb8c23fa04eb25619834d898660531fe08c205d7"}],"diskimage_builder/block_device/level1/mbr.py":[{"author":{"_account_id":12459,"name":"Stephanie Miller","email":"stephane@alum.mit.edu","username":"cinerama"},"change_message_id":"b05e6bd816795598fa321f86663ab94f09fa9ee7","unresolved":false,"context_lines":[{"line_number":76,"context_line":"    In conjunction with a fixed and \u0027fits all\u0027 partition alignment the"},{"line_number":77,"context_line":"    major design focus is maximum performance for the installed image"},{"line_number":78,"context_line":"    (vs. minimal size)."},{"line_number":79,"context_line":"    Because of the choosen default alignment of 1MiB there will be"},{"line_number":80,"context_line":"    (1MiB - 512B) not used disk space for the MBR and also the same"},{"line_number":81,"context_line":"    size unused in every partition."},{"line_number":82,"context_line":"    Assuming that 512 byte blocks are used, the resulting layout looks"}],"source_content_type":"text/x-python","patch_set":3,"id":"fa6399be_a972c9ae","line":79,"range":{"start_line":79,"start_character":19,"end_line":79,"end_character":26},"updated":"2016-10-18 00:45:57.000000000","message":"s/choosen/chosen/","commit_id":"2101286d1eeac7c73fda6273201fc45ccfbf9506"},{"author":{"_account_id":12459,"name":"Stephanie Miller","email":"stephane@alum.mit.edu","username":"cinerama"},"change_message_id":"b05e6bd816795598fa321f86663ab94f09fa9ee7","unresolved":false,"context_lines":[{"line_number":77,"context_line":"    major design focus is maximum performance for the installed image"},{"line_number":78,"context_line":"    (vs. minimal size)."},{"line_number":79,"context_line":"    Because of the choosen default alignment of 1MiB there will be"},{"line_number":80,"context_line":"    (1MiB - 512B) not used disk space for the MBR and also the same"},{"line_number":81,"context_line":"    size unused in every partition."},{"line_number":82,"context_line":"    Assuming that 512 byte blocks are used, the resulting layout looks"},{"line_number":83,"context_line":"    like:"}],"source_content_type":"text/x-python","patch_set":3,"id":"fa6399be_296799eb","line":80,"range":{"start_line":80,"start_character":18,"end_line":80,"end_character":26},"updated":"2016-10-18 00:45:57.000000000","message":"\"unused\" might be a better choice of word here","commit_id":"2101286d1eeac7c73fda6273201fc45ccfbf9506"},{"author":{"_account_id":12459,"name":"Stephanie Miller","email":"stephane@alum.mit.edu","username":"cinerama"},"change_message_id":"b05e6bd816795598fa321f86663ab94f09fa9ee7","unresolved":false,"context_lines":[{"line_number":88,"context_line":"           X: EBR for partition N - 2047 blocks unused"},{"line_number":89,"context_line":"      X+2048: Start of data for partition N"},{"line_number":90,"context_line":""},{"line_number":91,"context_line":"    Direct (nativ) writing of MBR, EBR (partition table) is"},{"line_number":92,"context_line":"    implemented - no other paritioning library or tools is used -"},{"line_number":93,"context_line":"    to be sure to get the correct CHS and alignment for a wide range"},{"line_number":94,"context_line":"    of host systems."}],"source_content_type":"text/x-python","patch_set":3,"id":"fa6399be_c961bdaa","line":91,"range":{"start_line":91,"start_character":12,"end_line":91,"end_character":17},"updated":"2016-10-18 00:45:57.000000000","message":"native","commit_id":"2101286d1eeac7c73fda6273201fc45ccfbf9506"},{"author":{"_account_id":12459,"name":"Stephanie Miller","email":"stephane@alum.mit.edu","username":"cinerama"},"change_message_id":"b05e6bd816795598fa321f86663ab94f09fa9ee7","unresolved":false,"context_lines":[{"line_number":112,"context_line":"    # o There is the need for some offsets that are defined in the"},{"line_number":113,"context_line":"    #   MBR/EBR domain."},{"line_number":114,"context_line":"    MBR_offset_disk_id \u003d 440"},{"line_number":115,"context_line":"    MBR_offset_signatur \u003d 510"},{"line_number":116,"context_line":"    MBR_offset_first_partition_table_entry \u003d 446"},{"line_number":117,"context_line":"    MBR_partition_type_extended_chs \u003d 0x5"},{"line_number":118,"context_line":"    MBR_partition_type_extended_lba \u003d 0xF"}],"source_content_type":"text/x-python","patch_set":3,"id":"fa6399be_69f0b1ca","line":115,"range":{"start_line":115,"start_character":4,"end_line":115,"end_character":23},"updated":"2016-10-18 00:45:57.000000000","message":"Should be \"signature\" \u0026 will need to be changed elsewhere too.","commit_id":"2101286d1eeac7c73fda6273201fc45ccfbf9506"},{"author":{"_account_id":12459,"name":"Stephanie Miller","email":"stephane@alum.mit.edu","username":"cinerama"},"change_message_id":"b05e6bd816795598fa321f86663ab94f09fa9ee7","unresolved":false,"context_lines":[{"line_number":116,"context_line":"    MBR_offset_first_partition_table_entry \u003d 446"},{"line_number":117,"context_line":"    MBR_partition_type_extended_chs \u003d 0x5"},{"line_number":118,"context_line":"    MBR_partition_type_extended_lba \u003d 0xF"},{"line_number":119,"context_line":"    MBR_signatur \u003d 0xAA55"},{"line_number":120,"context_line":""},{"line_number":121,"context_line":"    def __init__(self, name, disk_size, alignment):"},{"line_number":122,"context_line":"        \"\"\"Initialize a disk partitioning MBR object."}],"source_content_type":"text/x-python","patch_set":3,"id":"fa6399be_b480604b","line":119,"range":{"start_line":119,"start_character":4,"end_line":119,"end_character":16},"updated":"2016-10-18 00:45:57.000000000","message":"signature","commit_id":"2101286d1eeac7c73fda6273201fc45ccfbf9506"},{"author":{"_account_id":12459,"name":"Stephanie Miller","email":"stephane@alum.mit.edu","username":"cinerama"},"change_message_id":"b05e6bd816795598fa321f86663ab94f09fa9ee7","unresolved":false,"context_lines":[{"line_number":142,"context_line":"        # Open existing file for writing (r+)"},{"line_number":143,"context_line":"        self.image_fd \u003d open(name, \"r+\")"},{"line_number":144,"context_line":"        self.write_mbr()"},{"line_number":145,"context_line":"        self.write_mbr_signatur(0)"},{"line_number":146,"context_line":"        self.extended_partition_abs_start \u003d self.align(1)"},{"line_number":147,"context_line":"        self.extended_partition_abs_next_free \\"},{"line_number":148,"context_line":"            \u003d self.extended_partition_abs_start"}],"source_content_type":"text/x-python","patch_set":3,"id":"fa6399be_34953088","line":145,"range":{"start_line":145,"start_character":23,"end_line":145,"end_character":30},"updated":"2016-10-18 00:45:57.000000000","message":"signature","commit_id":"2101286d1eeac7c73fda6273201fc45ccfbf9506"},{"author":{"_account_id":12459,"name":"Stephanie Miller","email":"stephane@alum.mit.edu","username":"cinerama"},"change_message_id":"b05e6bd816795598fa321f86663ab94f09fa9ee7","unresolved":false,"context_lines":[{"line_number":208,"context_line":"    def write_mbr_signatur(self, blockno):"},{"line_number":209,"context_line":"        \"\"\"Writes the MBR/EBR signature to a block"},{"line_number":210,"context_line":""},{"line_number":211,"context_line":"        The signatur consists of a 0xAA55 in the last two bytes of the"},{"line_number":212,"context_line":"        block."},{"line_number":213,"context_line":"        \"\"\""},{"line_number":214,"context_line":"        self.image_fd.seek(blockno *"}],"source_content_type":"text/x-python","patch_set":3,"id":"fa6399be_f410185c","line":211,"range":{"start_line":211,"start_character":12,"end_line":211,"end_character":19},"updated":"2016-10-18 00:45:57.000000000","message":"signature. I\u0027m going to stop marking these here but there are a few more.","commit_id":"2101286d1eeac7c73fda6273201fc45ccfbf9506"},{"author":{"_account_id":12459,"name":"Stephanie Miller","email":"stephane@alum.mit.edu","username":"cinerama"},"change_message_id":"b05e6bd816795598fa321f86663ab94f09fa9ee7","unresolved":false,"context_lines":[{"line_number":218,"context_line":""},{"line_number":219,"context_line":"    def write_partition_entry(self, bootflag, blockno, entry, ptype,"},{"line_number":220,"context_line":"                              lba_start, lba_length):"},{"line_number":221,"context_line":"        \"\"\"Writes a parition entry"},{"line_number":222,"context_line":""},{"line_number":223,"context_line":"        The entries are always the same and contain 16 bytes. The MBR"},{"line_number":224,"context_line":"        and also the EBR use the same format."}],"source_content_type":"text/x-python","patch_set":3,"id":"fa6399be_0fb815e5","line":221,"range":{"start_line":221,"start_character":20,"end_line":221,"end_character":28},"updated":"2016-10-18 00:45:57.000000000","message":"partition","commit_id":"2101286d1eeac7c73fda6273201fc45ccfbf9506"},{"author":{"_account_id":10035,"name":"greghaynes","email":"greg@greghaynes.net","username":"greghaynes"},"change_message_id":"43e8ba0f35f0c0408dab93612405c7b80878e825","unresolved":false,"context_lines":[{"line_number":140,"context_line":"        # 0 (MBR) there is no need to update the reference.)"},{"line_number":141,"context_line":"        self.disk_block_last_ref \u003d 0"},{"line_number":142,"context_line":"        # Open existing file for writing (r+)"},{"line_number":143,"context_line":"        self.image_fd \u003d open(name, \"r+b\")"},{"line_number":144,"context_line":"        self.write_mbr()"},{"line_number":145,"context_line":"        self.write_mbr_signature(0)"},{"line_number":146,"context_line":"        self.extended_partition_abs_start \u003d self.align(1)"}],"source_content_type":"text/x-python","patch_set":38,"id":"3a71b18c_4c7215af","line":143,"updated":"2016-12-07 17:31:58.000000000","message":"I really like the switch to context managers, but I think we should also move from here to the end of the constructor in to the __enter__ method. The idea being that this creates a safe class where you cant accidentally leak an fd by initializing it and not entering a context.","commit_id":"8d71475480db759ee57e76d448d4fc3ac999dd91"}],"diskimage_builder/block_device/level1/partitioning.py":[{"author":{"_account_id":11655,"name":"Julia Kreger","email":"juliaashleykreger@gmail.com","username":"jkreger","status":"Flying to the moon with a Jetpack!"},"change_message_id":"5877d44a2d35df458ac29e0f688e8b09f0476d68","unresolved":false,"context_lines":[{"line_number":88,"context_line":""},{"line_number":89,"context_line":"        There is no need to delete the partitions."},{"line_number":90,"context_line":"        \"\"\""},{"line_number":91,"context_line":"        return {self.name: True}"}],"source_content_type":"text/x-python","patch_set":9,"id":"ba5da102_93a1d948","line":91,"updated":"2016-11-03 12:46:45.000000000","message":"nit: Shouldn\u0027t this be a false or something as no action was taken and it is not supported?","commit_id":"1af012ad061259c1c54a82fcdc1825bfdaeaad50"},{"author":{"_account_id":21741,"name":"Andreas Florath","email":"andreas@florath.net","username":"florath"},"change_message_id":"7185156695de9e8b21d455c07675ddd398e1f128","unresolved":false,"context_lines":[{"line_number":88,"context_line":""},{"line_number":89,"context_line":"        There is no need to delete the partitions."},{"line_number":90,"context_line":"        \"\"\""},{"line_number":91,"context_line":"        return {self.name: True}"}],"source_content_type":"text/x-python","patch_set":9,"id":"9a629dbe_25db147e","line":91,"in_reply_to":"ba5da102_93a1d948","updated":"2016-11-08 07:13:33.000000000","message":"The idea is to be idempotent here. (In the new version there is even no result any more.)","commit_id":"1af012ad061259c1c54a82fcdc1825bfdaeaad50"},{"author":{"_account_id":10035,"name":"greghaynes","email":"greg@greghaynes.net","username":"greghaynes"},"change_message_id":"43e8ba0f35f0c0408dab93612405c7b80878e825","unresolved":false,"context_lines":[{"line_number":148,"context_line":"            logger.info(\"Not creating the partitions a second time.\")"},{"line_number":149,"context_line":"            return"},{"line_number":150,"context_line":""},{"line_number":151,"context_line":"        if self.label !\u003d \u0027mbr\u0027:"},{"line_number":152,"context_line":"            assert False"},{"line_number":153,"context_line":""},{"line_number":154,"context_line":"        disk_size \u003d self._size_of_block_dev(device_path)"}],"source_content_type":"text/x-python","patch_set":38,"id":"3a71b18c_e948338d","line":151,"updated":"2016-12-07 17:31:58.000000000","message":"This block can be replaced with assert self.label \u003d\u003d \u0027mbr\u0027 which will be more obvious on an assert failure.","commit_id":"8d71475480db759ee57e76d448d4fc3ac999dd91"}],"diskimage_builder/block_device/levelbase.py":[{"author":{"_account_id":21741,"name":"Andreas Florath","email":"andreas@florath.net","username":"florath"},"change_message_id":"33a58ccec03e010bf453f21360e509f66107817c","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":10,"id":"9a629dbe_454c8870","updated":"2016-11-08 07:06:44.000000000","message":"@Yolanda: I do not understand the propose of this patch. Can you please explain?","commit_id":"215173c4668be4d2bc03bdd1a43c354bc8923170"},{"author":{"_account_id":6133,"name":"yolanda.robla","email":"yroblamo@redhat.com","username":"yolanda.robla"},"change_message_id":"27b3a5bd05fd345fd52bda161e35ac51c60b7345","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":10,"id":"9a629dbe_6849615f","in_reply_to":"9a629dbe_454c8870","updated":"2016-11-08 07:33:00.000000000","message":"It was to adapt the code, to use data format proposed on spec 2. We needed to carry the name of the level, along with the number, to be used in call_sub_modules properly. You see, self.config was the values of the dictionary:\n        {\n            \"name\": \"rootdisk\"\n        }\n\nNo longer carried the name as you were doing with: \n        [[\"local_loop\",\n          {\"name\": \"rootdisk\"}]],","commit_id":"215173c4668be4d2bc03bdd1a43c354bc8923170"}],"diskimage_builder/lib/disk-image-create":[{"author":{"_account_id":10035,"name":"greghaynes","email":"greg@greghaynes.net","username":"greghaynes"},"change_message_id":"08d2e4bee1225c48f3e4e59457770e5774e115c6","unresolved":false,"context_lines":[{"line_number":369,"context_line":"DIB_BLOCK_DEVICE_SCRIPT\u003d$(which dib-block-device)"},{"line_number":370,"context_line":""},{"line_number":371,"context_line":"if [ -z ${IMAGE_BLOCK_DEVICE} ] ; then"},{"line_number":372,"context_line":"    IMAGE_BLOCK_DEVICE\u003d$(sudo -E ${DIB_BLOCK_DEVICE_SCRIPT} \\"},{"line_number":373,"context_line":"                             --phase\u003dcreate \\"},{"line_number":374,"context_line":"                             --config\u003d\"${DIB_BLOCK_DEVICE_CONFIG:-}\" \\"},{"line_number":375,"context_line":"                             --image-size\u003d\"${DIB_IMAGE_SIZE}\"KiB \\"}],"source_content_type":"application/x-shellscript","patch_set":22,"id":"7a77a97e_394d873e","line":372,"updated":"2016-11-17 16:14:17.000000000","message":"So I am going to backtrack on this - running it this way makes our functional testing story odd, as well as it creates a pretty large sudo surface area. I think a better idea is for us to call this without sudo, sudo for the operations we need to and also do things like chown the loopback device ASAP and not require sudo afterwards.","commit_id":"a1680e1e89b5320f812e7a34a5ad3792c16fb745"},{"author":{"_account_id":10035,"name":"greghaynes","email":"greg@greghaynes.net","username":"greghaynes"},"change_message_id":"ff881098da33e4d2e345521c89c2ef17cae664c7","unresolved":false,"context_lines":[{"line_number":369,"context_line":"# implemented using python.)"},{"line_number":370,"context_line":"if [[ $IMAGE_ELEMENT \u003d~ vm ]]; then"},{"line_number":371,"context_line":"    for EPATH in $(echo ${ELEMENTS_PATH} | tr \":\" \" \"); do"},{"line_number":372,"context_line":"\tPART_CFG_PATH\u003d${EPATH}/vm/environment.d/10-partitioning "},{"line_number":373,"context_line":"\t[ -e ${PART_CFG_PATH} ] \u0026\u0026 source ${PART_CFG_PATH}"},{"line_number":374,"context_line":"    done"},{"line_number":375,"context_line":"fi"}],"source_content_type":"application/x-shellscript","patch_set":48,"id":"5a3905b3_f623b6a5","line":372,"updated":"2017-01-24 18:10:30.000000000","message":"Please use spaces (not tabs) and fix the ending whitespace","commit_id":"161332c413d0927aee18edb2fb7630c1fd1fb7c3"},{"author":{"_account_id":7118,"name":"Ian Wienand","email":"iwienand@redhat.com","username":"iwienand"},"change_message_id":"12f7dbc38127946c07859b9a0947e1c5352a3c82","unresolved":false,"context_lines":[{"line_number":369,"context_line":"# implemented using python.)"},{"line_number":370,"context_line":"if [[ $IMAGE_ELEMENT \u003d~ vm ]]; then"},{"line_number":371,"context_line":"    for EPATH in $(echo ${ELEMENTS_PATH} | tr \":\" \" \"); do"},{"line_number":372,"context_line":"\tPART_CFG_PATH\u003d${EPATH}/vm/environment.d/10-partitioning "},{"line_number":373,"context_line":"\t[ -e ${PART_CFG_PATH} ] \u0026\u0026 source ${PART_CFG_PATH}"},{"line_number":374,"context_line":"    done"},{"line_number":375,"context_line":"fi"}],"source_content_type":"application/x-shellscript","patch_set":48,"id":"5a3905b3_da19667b","line":372,"in_reply_to":"5a3905b3_f623b6a5","updated":"2017-01-25 04:25:45.000000000","message":"master pep8 checks should pick this up (checking bin/ scripts) but we need a merge","commit_id":"161332c413d0927aee18edb2fb7630c1fd1fb7c3"}],"diskimage_builder/tests/functional/test_blockdevice_mbr.py":[{"author":{"_account_id":10035,"name":"greghaynes","email":"greg@greghaynes.net","username":"greghaynes"},"change_message_id":"43e8ba0f35f0c0408dab93612405c7b80878e825","unresolved":false,"context_lines":[{"line_number":53,"context_line":"    def _create_image(self):"},{"line_number":54,"context_line":"        tmp_dir \u003d tempfile.mkdtemp(prefix\u003d\"dib-bd-mbr-\")"},{"line_number":55,"context_line":"        image_path \u003d os.path.join(tmp_dir, \"image.raw\")"},{"line_number":56,"context_line":"        LocalLoop._image_create(image_path, TestMBR.disk_size_1G)"},{"line_number":57,"context_line":"        return tmp_dir, image_path"},{"line_number":58,"context_line":""},{"line_number":59,"context_line":"    def _run_partx(self, image_path):"}],"source_content_type":"text/x-python","patch_set":38,"id":"3a71b18c_6953436d","line":56,"updated":"2016-12-07 17:31:58.000000000","message":"This is sort of a nitpick but we really shouldnt be accessing private methods directly from tests. Maybe we should make this method public?","commit_id":"8d71475480db759ee57e76d448d4fc3ac999dd91"}],"doc/source/user_guide/building_an_image.rst":[{"author":{"_account_id":6133,"name":"yolanda.robla","email":"yroblamo@redhat.com","username":"yolanda.robla"},"change_message_id":"2ecb37a73f769468812c160e845b1cef824c455d","unresolved":false,"context_lines":[{"line_number":240,"context_line":"               {\"name\": \"data1\","},{"line_number":241,"context_line":"                \"size\": \"50%\"},"},{"line_number":242,"context_line":"               {\"name\": \"data2\","},{"line_number":243,"context_line":"                \"size\": \"100%\"}]}}]"},{"line_number":244,"context_line":""},{"line_number":245,"context_line":"On the `rootdisk` two partitions are created.  The size of the"},{"line_number":246,"context_line":"first is 1GiB, the second uses the remaining free space."}],"source_content_type":"text/x-rst","patch_set":1,"id":"5a8bc5a2_9f4ae924","line":243,"range":{"start_line":243,"start_character":25,"end_line":243,"end_character":28},"updated":"2016-09-26 15:52:16.000000000","message":"if you say that all partitions are about 1/3 of disk, should the size not be 33% for all?","commit_id":"6b9b0379734f71c52eca983b1dc57850ef756be2"},{"author":{"_account_id":10035,"name":"greghaynes","email":"greg@greghaynes.net","username":"greghaynes"},"change_message_id":"46a11220ed437dcd8ece1a3bc228f9b9f428d1fa","unresolved":false,"context_lines":[{"line_number":232,"context_line":""},{"line_number":233,"context_line":"Example:"},{"line_number":234,"context_line":""},{"line_number":235,"context_line":"::"},{"line_number":236,"context_line":"        [\"partitioning\","},{"line_number":237,"context_line":"          {\"rootdisk\": {"},{"line_number":238,"context_line":"              \"label\": \"mbr\","}],"source_content_type":"text/x-rst","patch_set":2,"id":"1a95cdbc_5878b38f","line":235,"updated":"2016-10-06 15:14:57.000000000","message":"The formatting on this isn\u0027t coming out correctly for some reason (see http://docs-draft.openstack.org/61/375261/2/check/gate-diskimage-builder-docs-ubuntu-xenial/b34bff0//doc/build/html/user_guide/building_an_image.html#module-partitioning )","commit_id":"1086b21390828eb37bf64ca232f00f1324548098"},{"author":{"_account_id":11655,"name":"Julia Kreger","email":"juliaashleykreger@gmail.com","username":"jkreger","status":"Flying to the moon with a Jetpack!"},"change_message_id":"5877d44a2d35df458ac29e0f688e8b09f0476d68","unresolved":false,"context_lines":[{"line_number":276,"context_line":"                    { \"name\": \"data0\", \"size\": \"33%\" },"},{"line_number":277,"context_line":"                    { \"name\": \"data1\", \"size\": \"50%\" },"},{"line_number":278,"context_line":"                    { \"name\": \"data2\", \"size\": \"100%\" }"},{"line_number":279,"context_line":"                "},{"line_number":280,"context_line":"                ],"},{"line_number":281,"context_line":"                \"label\": \"mbr\""},{"line_number":282,"context_line":"            }"}],"source_content_type":"text/x-rst","patch_set":9,"id":"ba5da102_b37a5dbb","line":279,"updated":"2016-11-03 12:46:45.000000000","message":"nit: empty line with whitespace","commit_id":"1af012ad061259c1c54a82fcdc1825bfdaeaad50"},{"author":{"_account_id":6133,"name":"yolanda.robla","email":"yroblamo@redhat.com","username":"yolanda.robla"},"change_message_id":"27b3a5bd05fd345fd52bda161e35ac51c60b7345","unresolved":false,"context_lines":[{"line_number":152,"context_line":""},{"line_number":153,"context_line":"::"},{"line_number":154,"context_line":""},{"line_number":155,"context_line":"{"},{"line_number":156,"context_line":"    \"local_loop\": ["},{"line_number":157,"context_line":"        {"},{"line_number":158,"context_line":"            \"name\": \"rootdisk\""}],"source_content_type":"text/x-rst","patch_set":10,"id":"ba5da102_6d751d31","line":155,"range":{"start_line":155,"start_character":0,"end_line":155,"end_character":1},"updated":"2016-11-08 07:33:00.000000000","message":"If currently we just support one local_loop, I don\u0027t see the point of documenting that double creation now, it can be confusing.","commit_id":"215173c4668be4d2bc03bdd1a43c354bc8923170"},{"author":{"_account_id":6133,"name":"yolanda.robla","email":"yroblamo@redhat.com","username":"yolanda.robla"},"change_message_id":"27b3a5bd05fd345fd52bda161e35ac51c60b7345","unresolved":false,"context_lines":[{"line_number":160,"context_line":"        {"},{"line_number":161,"context_line":"            \"name\": \"datadisk\","},{"line_number":162,"context_line":"            \"size\": \"7.5GiB\","},{"line_number":163,"context_line":"            \"directory\": \"/var/tmp\""},{"line_number":164,"context_line":"        }"},{"line_number":165,"context_line":"    ]"},{"line_number":166,"context_line":"}"}],"source_content_type":"text/x-rst","patch_set":10,"id":"ba5da102_6dac3d8d","line":163,"range":{"start_line":163,"start_character":13,"end_line":163,"end_character":22},"updated":"2016-11-08 07:33:00.000000000","message":"what\u0027s the purpose of it? Just specifying the path where to store the raw image? Cannot this just be handled by a global var or rely on default config?","commit_id":"215173c4668be4d2bc03bdd1a43c354bc8923170"},{"author":{"_account_id":6133,"name":"yolanda.robla","email":"yroblamo@redhat.com","username":"yolanda.robla"},"change_message_id":"a06a6b0e58339037891bda366212717e4929c2d3","unresolved":false,"context_lines":[{"line_number":152,"context_line":""},{"line_number":153,"context_line":"::"},{"line_number":154,"context_line":""},{"line_number":155,"context_line":"{"},{"line_number":156,"context_line":"    \"local_loop\": ["},{"line_number":157,"context_line":"        {"},{"line_number":158,"context_line":"            \"name\": \"rootdisk\""}],"source_content_type":"text/x-rst","patch_set":11,"id":"ba5da102_2d3ec529","line":155,"range":{"start_line":155,"start_character":0,"end_line":155,"end_character":1},"updated":"2016-11-04 09:53:40.000000000","message":"If that\u0027s currently not supported, I think that providing that sample could lead to confusion. Why not just document the local_loop with one entry, and add this documentation about multiple ones when it\u0027s really implemented?","commit_id":"282fb2f918d63b3df44fa38e02b6c92b6c8c7b8a"},{"author":{"_account_id":6133,"name":"yolanda.robla","email":"yroblamo@redhat.com","username":"yolanda.robla"},"change_message_id":"a06a6b0e58339037891bda366212717e4929c2d3","unresolved":false,"context_lines":[{"line_number":160,"context_line":"        {"},{"line_number":161,"context_line":"            \"name\": \"datadisk\","},{"line_number":162,"context_line":"            \"size\": \"7.5GiB\","},{"line_number":163,"context_line":"            \"directory\": \"/var/tmp\""},{"line_number":164,"context_line":"        }"},{"line_number":165,"context_line":"    ]"},{"line_number":166,"context_line":"}"}],"source_content_type":"text/x-rst","patch_set":11,"id":"ba5da102_ad1015ad","line":163,"range":{"start_line":163,"start_character":13,"end_line":163,"end_character":22},"updated":"2016-11-04 09:53:40.000000000","message":"why this needs to be specified per local_loop? If the only purpose is to specify a path where to store the temp raw image, cannot this be just a global setting?","commit_id":"282fb2f918d63b3df44fa38e02b6c92b6c8c7b8a"},{"author":{"_account_id":6133,"name":"yolanda.robla","email":"yroblamo@redhat.com","username":"yolanda.robla"},"change_message_id":"a06a6b0e58339037891bda366212717e4929c2d3","unresolved":false,"context_lines":[{"line_number":255,"context_line":""},{"line_number":256,"context_line":"::"},{"line_number":257,"context_line":""},{"line_number":258,"context_line":"    \"partitioning\": ["},{"line_number":259,"context_line":"        {"},{"line_number":260,"context_line":"            \"rootdisk\": {"},{"line_number":261,"context_line":"                \"partitions\": ["}],"source_content_type":"text/x-rst","patch_set":11,"id":"ba5da102_8d1c31c3","line":258,"range":{"start_line":258,"start_character":5,"end_line":258,"end_character":17},"updated":"2016-11-04 09:53:40.000000000","message":"same here, this can cause confusion. I\u0027d rather document the partition creation with one local_loop only.","commit_id":"282fb2f918d63b3df44fa38e02b6c92b6c8c7b8a"},{"author":{"_account_id":21741,"name":"Andreas Florath","email":"andreas@florath.net","username":"florath"},"change_message_id":"a4bff876ba021f530a8cb2abb760ca391aa20e6b","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":14,"id":"9a629dbe_c57c1875","updated":"2016-11-08 07:10:06.000000000","message":"@Yolanda: Why did you strip down the examples?","commit_id":"867a8c6841e29ba220d7e59b88c2ae78d2bfbba1"}],"releasenotes/notes/block-device-partitioning-237249e7ed2bad26.yaml":[{"author":{"_account_id":11655,"name":"Julia Kreger","email":"juliaashleykreger@gmail.com","username":"jkreger","status":"Flying to the moon with a Jetpack!"},"change_message_id":"5877d44a2d35df458ac29e0f688e8b09f0476d68","unresolved":false,"context_lines":[{"line_number":6,"context_line":"deprecations:"},{"line_number":7,"context_line":"  - The new partitions are created based on configuration rather than"},{"line_number":8,"context_line":"    on a list of provided commands for a special partitioning tool."},{"line_number":9,"context_line":"    Therefore elements using tools (like partitioning-sfdisk) must be"},{"line_number":10,"context_line":"    seen as deprecated."},{"line_number":11,"context_line":""}],"source_content_type":"text/x-yaml","patch_set":9,"id":"ba5da102_0e8be268","line":10,"range":{"start_line":9,"start_character":62,"end_line":10,"end_character":11},"updated":"2016-11-03 12:46:45.000000000","message":"Just a thought, but \"must be seen as\" seems a little odd to me, although if that is the direction DIB wishes to go, I think more explicit wording should be use, stating that they \"are deprecated.\"","commit_id":"1af012ad061259c1c54a82fcdc1825bfdaeaad50"},{"author":{"_account_id":10035,"name":"greghaynes","email":"greg@greghaynes.net","username":"greghaynes"},"change_message_id":"201a8578f51d6e35dcca36cec36440b2e167d323","unresolved":false,"context_lines":[{"line_number":6,"context_line":"deprecations:"},{"line_number":7,"context_line":"  - The new partitions are created based on configuration rather than"},{"line_number":8,"context_line":"    on a list of provided commands for a special partitioning tool."},{"line_number":9,"context_line":"    Therefore elements using tools (like partitioning-sfdisk) must be"},{"line_number":10,"context_line":"    seen as deprecated."},{"line_number":11,"context_line":""}],"source_content_type":"text/x-yaml","patch_set":9,"id":"ba5da102_5ff70d8c","line":10,"range":{"start_line":9,"start_character":62,"end_line":10,"end_character":11},"in_reply_to":"ba5da102_0e8be268","updated":"2016-11-04 16:17:32.000000000","message":"Agreed. The way I see this panning out is the level* interfaces become a pluggable API if someone really wants their own tool for partitioning, but until someone shows up wanting that we just say block_device.d is deprecated.\n\n\nThat might be a better way to say this BTW - the block_device.d phase is deprecated.","commit_id":"1af012ad061259c1c54a82fcdc1825bfdaeaad50"},{"author":{"_account_id":21741,"name":"Andreas Florath","email":"andreas@florath.net","username":"florath"},"change_message_id":"7185156695de9e8b21d455c07675ddd398e1f128","unresolved":false,"context_lines":[{"line_number":6,"context_line":"deprecations:"},{"line_number":7,"context_line":"  - The new partitions are created based on configuration rather than"},{"line_number":8,"context_line":"    on a list of provided commands for a special partitioning tool."},{"line_number":9,"context_line":"    Therefore elements using tools (like partitioning-sfdisk) must be"},{"line_number":10,"context_line":"    seen as deprecated."},{"line_number":11,"context_line":""}],"source_content_type":"text/x-yaml","patch_set":9,"id":"9a629dbe_05c5308d","line":10,"range":{"start_line":9,"start_character":62,"end_line":10,"end_character":11},"in_reply_to":"ba5da102_5ff70d8c","updated":"2016-11-08 07:13:33.000000000","message":"Done","commit_id":"1af012ad061259c1c54a82fcdc1825bfdaeaad50"}]}
