)]}'
{"nova/virt/configdrive.py":[{"author":{"_account_id":2271,"name":"Michael Still","email":"mikal@stillhq.com","username":"mikalstill"},"change_message_id":"4493dc07da66ffd2b75971a0f1766b4d5db0a6ed","unresolved":false,"context_lines":[{"line_number":107,"context_line":"        utils.mkfs(\u0027vfat\u0027, path, label\u003d\u0027config-2\u0027)"},{"line_number":108,"context_line":"        self._inject_into_vfat(path)"},{"line_number":109,"context_line":""},{"line_number":110,"context_line":"    def _inject_into_vfat(self, path):"},{"line_number":111,"context_line":"        mounted \u003d False"},{"line_number":112,"context_line":"        try:"},{"line_number":113,"context_line":"            mountdir \u003d tempfile.mkdtemp(dir\u003dCONF.config_drive_tempdir,"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAAM3%2F%2F8yg%3D","line":110,"updated":"2012-12-19 10:06:47.000000000","message":"This should obviously not be a private method. I will fix that tomorrow.","commit_id":"0ccb28fbbaf1076a868247d195857d698900b807"},{"author":{"_account_id":5044,"name":"Mate Lakat","email":"mlakat@suse.com","username":"mate-lakat"},"change_message_id":"ee0f7282c7e460993637831d97807aee8b33bb23","unresolved":false,"context_lines":[{"line_number":121,"context_line":"        with open(path, \u0027w\u0027) as f:"},{"line_number":122,"context_line":"            f.truncate(64 * 1024 * 1024)"},{"line_number":123,"context_line":""},{"line_number":124,"context_line":"        utils.mkfs(\u0027vfat\u0027, path, label\u003d\u0027config-2\u0027)"},{"line_number":125,"context_line":"        mounted \u003d False"},{"line_number":126,"context_line":"        try:"},{"line_number":127,"context_line":"            mountdir \u003d tempfile.mkdtemp(dir\u003dCONF.config_drive_tempdir,"}],"source_content_type":"text/x-python","patch_set":5,"id":"AAAAM3%2F%2FwwU%3D","line":124,"updated":"2013-01-07 09:39:25.000000000","message":"I would skip pushing this newline.","commit_id":"6d5aceaf124dd8f8bd24c031601c4e32fd15ac24"},{"author":{"_account_id":2271,"name":"Michael Still","email":"mikal@stillhq.com","username":"mikalstill"},"change_message_id":"a61f7c14e110cf18196bbc2d2165b8a06eb9a99b","unresolved":false,"context_lines":[{"line_number":121,"context_line":"        with open(path, \u0027w\u0027) as f:"},{"line_number":122,"context_line":"            f.truncate(64 * 1024 * 1024)"},{"line_number":123,"context_line":""},{"line_number":124,"context_line":"        utils.mkfs(\u0027vfat\u0027, path, label\u003d\u0027config-2\u0027)"},{"line_number":125,"context_line":"        mounted \u003d False"},{"line_number":126,"context_line":"        try:"},{"line_number":127,"context_line":"            mountdir \u003d tempfile.mkdtemp(dir\u003dCONF.config_drive_tempdir,"}],"source_content_type":"text/x-python","patch_set":5,"id":"AAAAM3%2F%2Fps8%3D","line":124,"in_reply_to":"AAAAM3%2F%2FwwU%3D","updated":"2013-01-11 05:35:02.000000000","message":"Done","commit_id":"6d5aceaf124dd8f8bd24c031601c4e32fd15ac24"}],"nova/virt/xenapi/vm_utils.py":[{"author":{"_account_id":5044,"name":"Mate Lakat","email":"mlakat@suse.com","username":"mate-lakat"},"change_message_id":"c1ccc3581c9367bc3a0a5dd6ca003b781ed282a7","unresolved":false,"context_lines":[{"line_number":840,"context_line":""},{"line_number":841,"context_line":"        # 4. Create VBD between instance VM and swap VDI"},{"line_number":842,"context_line":"        create_vbd(session, vm_ref, vdi_ref, userdevice, bootable\u003dFalse)"},{"line_number":843,"context_line":""},{"line_number":844,"context_line":"        # 5. Return a reference to the VDI"},{"line_number":845,"context_line":"        return vdi_ref"},{"line_number":846,"context_line":"    except Exception:"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAAM3%2F%2F8c8%3D","line":843,"updated":"2012-12-19 17:04:53.000000000","message":"It would be better, if we don\u0027t have two vbds on the same vdi at the same time, so maybe we could extract just the vdi creation. (see later)","commit_id":"0ccb28fbbaf1076a868247d195857d698900b807"},{"author":{"_account_id":2271,"name":"Michael Still","email":"mikal@stillhq.com","username":"mikalstill"},"change_message_id":"8bade494a16851d30071bbb5e72026f917a5de66","unresolved":false,"context_lines":[{"line_number":840,"context_line":""},{"line_number":841,"context_line":"        # 4. Create VBD between instance VM and swap VDI"},{"line_number":842,"context_line":"        create_vbd(session, vm_ref, vdi_ref, userdevice, bootable\u003dFalse)"},{"line_number":843,"context_line":""},{"line_number":844,"context_line":"        # 5. Return a reference to the VDI"},{"line_number":845,"context_line":"        return vdi_ref"},{"line_number":846,"context_line":"    except Exception:"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAAM3%2F%2F8P4%3D","line":843,"in_reply_to":"AAAAM3%2F%2F8c8%3D","updated":"2012-12-19 18:38:27.000000000","message":"Done","commit_id":"0ccb28fbbaf1076a868247d195857d698900b807"},{"author":{"_account_id":5044,"name":"Mate Lakat","email":"mlakat@suse.com","username":"mate-lakat"},"change_message_id":"c1ccc3581c9367bc3a0a5dd6ca003b781ed282a7","unresolved":false,"context_lines":[{"line_number":874,"context_line":"    cdb \u003d configdrive.ConfigDriveBuilder(instance_md\u003dinst_md,"},{"line_number":875,"context_line":"                                         extra_md\u003dmetadata)"},{"line_number":876,"context_line":"    try:"},{"line_number":877,"context_line":"        vdi_ref \u003d _generate_disk(session, instance, vm_ref, userdevice,"},{"line_number":878,"context_line":"                                 \u0027config-2\u0027, \u0027configdrive\u0027, 64, \u0027vfat\u0027)"},{"line_number":879,"context_line":"        with vdi_attached_here(session, vdi_ref, read_only\u003dFalse) as dev:"},{"line_number":880,"context_line":"            configdrive._inject_into_vfat(dev)"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAAM3%2F%2F8fY%3D","line":877,"updated":"2012-12-19 17:04:53.000000000","message":"_generate_disk seems to create a vbd that connects vm_ref with the vdi","commit_id":"0ccb28fbbaf1076a868247d195857d698900b807"},{"author":{"_account_id":5044,"name":"Mate Lakat","email":"mlakat@suse.com","username":"mate-lakat"},"change_message_id":"c1ccc3581c9367bc3a0a5dd6ca003b781ed282a7","unresolved":false,"context_lines":[{"line_number":876,"context_line":"    try:"},{"line_number":877,"context_line":"        vdi_ref \u003d _generate_disk(session, instance, vm_ref, userdevice,"},{"line_number":878,"context_line":"                                 \u0027config-2\u0027, \u0027configdrive\u0027, 64, \u0027vfat\u0027)"},{"line_number":879,"context_line":"        with vdi_attached_here(session, vdi_ref, read_only\u003dFalse) as dev:"},{"line_number":880,"context_line":"            configdrive._inject_into_vfat(dev)"},{"line_number":881,"context_line":""},{"line_number":882,"context_line":"    finally:"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAAM3%2F%2F8fQ%3D","line":879,"updated":"2012-12-19 17:04:53.000000000","message":"And at this point we have another vbd for the same vdi, plugged into compute. (I need to look at it)","commit_id":"0ccb28fbbaf1076a868247d195857d698900b807"},{"author":{"_account_id":2271,"name":"Michael Still","email":"mikal@stillhq.com","username":"mikalstill"},"change_message_id":"8bade494a16851d30071bbb5e72026f917a5de66","unresolved":false,"context_lines":[{"line_number":876,"context_line":"    try:"},{"line_number":877,"context_line":"        vdi_ref \u003d _generate_disk(session, instance, vm_ref, userdevice,"},{"line_number":878,"context_line":"                                 \u0027config-2\u0027, \u0027configdrive\u0027, 64, \u0027vfat\u0027)"},{"line_number":879,"context_line":"        with vdi_attached_here(session, vdi_ref, read_only\u003dFalse) as dev:"},{"line_number":880,"context_line":"            configdrive._inject_into_vfat(dev)"},{"line_number":881,"context_line":""},{"line_number":882,"context_line":"    finally:"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAAM3%2F%2F8Pw%3D","line":879,"in_reply_to":"AAAAM3%2F%2F8aQ%3D","updated":"2012-12-19 18:38:27.000000000","message":"Cool. This is also irrelevant now, because I\u0027ve refactored this pretty heavily to get iso9660 support happening.","commit_id":"0ccb28fbbaf1076a868247d195857d698900b807"},{"author":{"_account_id":100,"name":"Johannes Erdfelt","email":"johannes@erdfelt.com","username":"johannes.erdfelt"},"change_message_id":"60a884ee0fa619c5543e019c9160e971ef413511","unresolved":false,"context_lines":[{"line_number":876,"context_line":"    try:"},{"line_number":877,"context_line":"        vdi_ref \u003d _generate_disk(session, instance, vm_ref, userdevice,"},{"line_number":878,"context_line":"                                 \u0027config-2\u0027, \u0027configdrive\u0027, 64, \u0027vfat\u0027)"},{"line_number":879,"context_line":"        with vdi_attached_here(session, vdi_ref, read_only\u003dFalse) as dev:"},{"line_number":880,"context_line":"            configdrive._inject_into_vfat(dev)"},{"line_number":881,"context_line":""},{"line_number":882,"context_line":"    finally:"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAAM3%2F%2F8aQ%3D","line":879,"in_reply_to":"AAAAM3%2F%2F8fQ%3D","updated":"2012-12-19 17:20:51.000000000","message":"You\u0027re right that one VDI is attached to two places, but since the instance is being built (and not powered on yet), only one will be active. This is (for better or worse) quite common in the xenapi driver.","commit_id":"0ccb28fbbaf1076a868247d195857d698900b807"},{"author":{"_account_id":100,"name":"Johannes Erdfelt","email":"johannes@erdfelt.com","username":"johannes.erdfelt"},"change_message_id":"60a884ee0fa619c5543e019c9160e971ef413511","unresolved":false,"context_lines":[{"line_number":880,"context_line":"            configdrive._inject_into_vfat(dev)"},{"line_number":881,"context_line":""},{"line_number":882,"context_line":"    finally:"},{"line_number":883,"context_line":"        cdb.cleanup()"},{"line_number":884,"context_line":""},{"line_number":885,"context_line":""},{"line_number":886,"context_line":"def create_kernel_image(context, session, instance, name_label, image_id,"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAAM3%2F%2F8aE%3D","line":883,"updated":"2012-12-19 17:20:51.000000000","message":"contextmanager all the things? (probably out of scope for this patch)","commit_id":"0ccb28fbbaf1076a868247d195857d698900b807"},{"author":{"_account_id":2271,"name":"Michael Still","email":"mikal@stillhq.com","username":"mikalstill"},"change_message_id":"8bade494a16851d30071bbb5e72026f917a5de66","unresolved":false,"context_lines":[{"line_number":880,"context_line":"            configdrive._inject_into_vfat(dev)"},{"line_number":881,"context_line":""},{"line_number":882,"context_line":"    finally:"},{"line_number":883,"context_line":"        cdb.cleanup()"},{"line_number":884,"context_line":""},{"line_number":885,"context_line":""},{"line_number":886,"context_line":"def create_kernel_image(context, session, instance, name_label, image_id,"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAAM3%2F%2F8Ps%3D","line":883,"in_reply_to":"AAAAM3%2F%2F8aE%3D","updated":"2012-12-19 18:38:27.000000000","message":"That\u0027s a good idea, but I think I should do that separately (and fix all the drivers at the same time).","commit_id":"0ccb28fbbaf1076a868247d195857d698900b807"},{"author":{"_account_id":1030,"name":"Chris Behrens","email":"cbehrens@codestud.com","username":"cbehrens"},"change_message_id":"c1c363df5ef47d2acf0e06fd6b0d2e0d0b1dcb82","unresolved":false,"context_lines":[{"line_number":881,"context_line":"            extra_md \u003d {}"},{"line_number":882,"context_line":"            if admin_password:"},{"line_number":883,"context_line":"                extra_md[\u0027admin_pass\u0027] \u003d admin_password"},{"line_number":884,"context_line":"            cdb \u003d configdrive.ConfigDriveBuilder(instance_md\u003dinst_md,"},{"line_number":885,"context_line":"                                                 content\u003dfiles,"},{"line_number":886,"context_line":"                                                 extra_md\u003dextra_md)"},{"line_number":887,"context_line":""}],"source_content_type":"text/x-python","patch_set":3,"id":"AAAAM3%2F%2FywM%3D","line":884,"updated":"2013-01-04 21:17:12.000000000","message":"This is _ConfigDriveBuilder() now it seems... and only takes 1 arg.  Need rebase.","commit_id":"14e152af6d8d60e9dfab942342401f6141f7326a"},{"author":{"_account_id":5044,"name":"Mate Lakat","email":"mlakat@suse.com","username":"mate-lakat"},"change_message_id":"69de049102713fbf1ac943f47a39e2a8f4f223e3","unresolved":false,"context_lines":[{"line_number":869,"context_line":"    ONE_MEG \u003d 1024 * 1024"},{"line_number":870,"context_line":"    vdi_ref \u003d create_vdi(session, sr_ref, instance, \u0027config-2\u0027,"},{"line_number":871,"context_line":"                         \u0027configdrive\u0027, 64 * ONE_MEG)"},{"line_number":872,"context_line":""},{"line_number":873,"context_line":"    try:"},{"line_number":874,"context_line":"        with vdi_attached_here(session, vdi_ref, read_only\u003dFalse) as dev:"},{"line_number":875,"context_line":"            dev_path \u003d utils.make_dev_path(dev)"}],"source_content_type":"text/x-python","patch_set":5,"id":"AAAAM3%2F%2FsKg%3D","line":872,"updated":"2013-01-09 14:39:05.000000000","message":"- I would extract this 64 constant to configdrive lib\n- \u0027configdrive\u0027 should be a new entry in ImageType","commit_id":"6d5aceaf124dd8f8bd24c031601c4e32fd15ac24"},{"author":{"_account_id":2271,"name":"Michael Still","email":"mikal@stillhq.com","username":"mikalstill"},"change_message_id":"a61f7c14e110cf18196bbc2d2165b8a06eb9a99b","unresolved":false,"context_lines":[{"line_number":869,"context_line":"    ONE_MEG \u003d 1024 * 1024"},{"line_number":870,"context_line":"    vdi_ref \u003d create_vdi(session, sr_ref, instance, \u0027config-2\u0027,"},{"line_number":871,"context_line":"                         \u0027configdrive\u0027, 64 * ONE_MEG)"},{"line_number":872,"context_line":""},{"line_number":873,"context_line":"    try:"},{"line_number":874,"context_line":"        with vdi_attached_here(session, vdi_ref, read_only\u003dFalse) as dev:"},{"line_number":875,"context_line":"            dev_path \u003d utils.make_dev_path(dev)"}],"source_content_type":"text/x-python","patch_set":5,"id":"AAAAM3%2F%2Fpsg%3D","line":872,"in_reply_to":"AAAAM3%2F%2FsKg%3D","updated":"2013-01-11 05:35:02.000000000","message":"Done, but please check that I understood what you wanted correctly with the ImageType class.","commit_id":"6d5aceaf124dd8f8bd24c031601c4e32fd15ac24"},{"author":{"_account_id":782,"name":"John Garbutt","email":"john@johngarbutt.com","username":"johngarbutt"},"change_message_id":"4798d936576e319ad54b9a16b0e18a371509df24","unresolved":false,"context_lines":[{"line_number":893,"context_line":"                                  \u0027of\u003d%s\u0027 % dev_path,"},{"line_number":894,"context_line":"                                  run_as_root\u003dTrue)"},{"line_number":895,"context_line":""},{"line_number":896,"context_line":"        create_vbd(session, vm_ref, vdi_ref, userdevice, bootable\u003dFalse)"},{"line_number":897,"context_line":"    except Exception:"},{"line_number":898,"context_line":"        with excutils.save_and_reraise_exception():"},{"line_number":899,"context_line":"            destroy_vdi(session, vdi_ref)"}],"source_content_type":"text/x-python","patch_set":5,"id":"AAAAM3%2F%2FqkU%3D","line":896,"updated":"2013-01-10 11:03:12.000000000","message":"Need to set read_only\u003dtrue here I think.\n\nYou might want to test what disk_type\u003dCD looks like, but hiding the config drive from the user as a disk might actually be preferable.","commit_id":"6d5aceaf124dd8f8bd24c031601c4e32fd15ac24"},{"author":{"_account_id":2271,"name":"Michael Still","email":"mikal@stillhq.com","username":"mikalstill"},"change_message_id":"a61f7c14e110cf18196bbc2d2165b8a06eb9a99b","unresolved":false,"context_lines":[{"line_number":893,"context_line":"                                  \u0027of\u003d%s\u0027 % dev_path,"},{"line_number":894,"context_line":"                                  run_as_root\u003dTrue)"},{"line_number":895,"context_line":""},{"line_number":896,"context_line":"        create_vbd(session, vm_ref, vdi_ref, userdevice, bootable\u003dFalse)"},{"line_number":897,"context_line":"    except Exception:"},{"line_number":898,"context_line":"        with excutils.save_and_reraise_exception():"},{"line_number":899,"context_line":"            destroy_vdi(session, vdi_ref)"}],"source_content_type":"text/x-python","patch_set":5,"id":"AAAAM3%2F%2Fpsc%3D","line":896,"in_reply_to":"AAAAM3%2F%2FqkU%3D","updated":"2013-01-11 05:35:02.000000000","message":"Done","commit_id":"6d5aceaf124dd8f8bd24c031601c4e32fd15ac24"}],"nova/virt/xenapi/vmops.py":[{"author":{"_account_id":5044,"name":"Mate Lakat","email":"mlakat@suse.com","username":"mate-lakat"},"change_message_id":"c1ccc3581c9367bc3a0a5dd6ca003b781ed282a7","unresolved":false,"context_lines":[{"line_number":523,"context_line":"                                        ephemeral_gb)"},{"line_number":524,"context_line":""},{"line_number":525,"context_line":"        # Attach (optional) configdrive v2 disk"},{"line_number":526,"context_line":"        if configdrive.required_by(instance):"},{"line_number":527,"context_line":"            vm_utils.generate_configdrive(self._session, instance, vm_ref,"},{"line_number":528,"context_line":"                                          DEVICE_CONFIGDRIVE)"},{"line_number":529,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAAM3%2F%2F8cg%3D","line":526,"updated":"2012-12-19 17:04:53.000000000","message":"It seems that the configdrive is repeated twice, which smells bad, but this seems to be a repeating pattern:\ngenerate_ephemeral DEVICE_EPHEMERAL....","commit_id":"0ccb28fbbaf1076a868247d195857d698900b807"},{"author":{"_account_id":2271,"name":"Michael Still","email":"mikal@stillhq.com","username":"mikalstill"},"change_message_id":"8bade494a16851d30071bbb5e72026f917a5de66","unresolved":false,"context_lines":[{"line_number":523,"context_line":"                                        ephemeral_gb)"},{"line_number":524,"context_line":""},{"line_number":525,"context_line":"        # Attach (optional) configdrive v2 disk"},{"line_number":526,"context_line":"        if configdrive.required_by(instance):"},{"line_number":527,"context_line":"            vm_utils.generate_configdrive(self._session, instance, vm_ref,"},{"line_number":528,"context_line":"                                          DEVICE_CONFIGDRIVE)"},{"line_number":529,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAAM3%2F%2F8Po%3D","line":526,"in_reply_to":"AAAAM3%2F%2F8cg%3D","updated":"2012-12-19 18:38:27.000000000","message":"Yeah, this was done just to be consistent with the other generate methods.","commit_id":"0ccb28fbbaf1076a868247d195857d698900b807"},{"author":{"_account_id":1030,"name":"Chris Behrens","email":"cbehrens@codestud.com","username":"cbehrens"},"change_message_id":"c1c363df5ef47d2acf0e06fd6b0d2e0d0b1dcb82","unresolved":false,"context_lines":[{"line_number":422,"context_line":"        # NOTE(mikal): file injection only happens if we are _not_ using a"},{"line_number":423,"context_line":"        # configdrive."},{"line_number":424,"context_line":"        if not configdrive.required_by(instance):"},{"line_number":425,"context_line":"            self.inject_instance_metadata(instance, vm_ref)"},{"line_number":426,"context_line":""},{"line_number":427,"context_line":"        return vm_ref"},{"line_number":428,"context_line":""}],"source_content_type":"text/x-python","patch_set":3,"id":"AAAAM3%2F%2FywU%3D","line":425,"updated":"2013-01-04 21:17:12.000000000","message":"I think I would leave this always injecting for now?  Would like to see enabling config drive not affect any other behavior and continuing to inject data into xenstore won\u0027t affect anything.  Agent isn\u0027t required for it.","commit_id":"14e152af6d8d60e9dfab942342401f6141f7326a"}]}
