)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":10618,"name":"Pavel Kholkin","email":"p.v.holkin@mail.ru","username":"pkholkin"},"change_message_id":"0f7fc1945487f57f33bc1b81db27634ed220fea1","unresolved":false,"context_lines":[{"line_number":14,"context_line":"(Ploop device description: https://openvz.org/Ploop)"},{"line_number":15,"context_line":""},{"line_number":16,"context_line":"Change-Id: Ib21ab954a08027fb1f2aec13c2d95b5f080eccce"},{"line_number":17,"context_line":"Implements: pcs-support"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":9,"id":"da86d52c_fb6469ba","line":17,"updated":"2015-02-11 09:03:11.000000000","message":"Implements: blueprint pcs-support","commit_id":"a6f415f5eaf91f420fe243ba8b6e034b45af404c"}],"nova/tests/unit/test_configdrive2.py":[{"author":{"_account_id":1653,"name":"garyk","email":"gkotton@vmware.com","username":"garyk"},"change_message_id":"66fbdc3fe0da9b63bb5b804543a811b88c6349b6","unresolved":false,"context_lines":[{"line_number":95,"context_line":"                fileutils.delete_if_exists(imagefile)"},{"line_number":96,"context_line":""},{"line_number":97,"context_line":"    def test_create_configdrive_ext4_ploop(self):"},{"line_number":98,"context_line":"        CONF.set_override(\u0027config_drive_format\u0027, \u0027ext4\u0027)"},{"line_number":99,"context_line":"        CONF.set_override(\u0027virt_type\u0027, \u0027parallels\u0027, \u0027libvirt\u0027)"},{"line_number":100,"context_line":"        imagefile \u003d None"},{"line_number":101,"context_line":"        try:"}],"source_content_type":"text/x-python","patch_set":7,"id":"da86d52c_7be25e02","line":98,"updated":"2015-02-10 14:17:02.000000000","message":"please use  self.flags(config_drive_format\u003d\u0027ext4\u0027)","commit_id":"e9b868dae51d019ac45af7c7d4c13689a33f5d5d"},{"author":{"_account_id":1653,"name":"garyk","email":"gkotton@vmware.com","username":"garyk"},"change_message_id":"66fbdc3fe0da9b63bb5b804543a811b88c6349b6","unresolved":false,"context_lines":[{"line_number":96,"context_line":""},{"line_number":97,"context_line":"    def test_create_configdrive_ext4_ploop(self):"},{"line_number":98,"context_line":"        CONF.set_override(\u0027config_drive_format\u0027, \u0027ext4\u0027)"},{"line_number":99,"context_line":"        CONF.set_override(\u0027virt_type\u0027, \u0027parallels\u0027, \u0027libvirt\u0027)"},{"line_number":100,"context_line":"        imagefile \u003d None"},{"line_number":101,"context_line":"        try:"},{"line_number":102,"context_line":"            self.mox.StubOutWithMock(utils, \u0027execute\u0027)"}],"source_content_type":"text/x-python","patch_set":7,"id":"da86d52c_7bc97e78","line":99,"updated":"2015-02-10 14:17:02.000000000","message":"self.flags(virt_type\u003d\u0027parallels\u0027, group\u003d\u0027libvirt\u0027)","commit_id":"e9b868dae51d019ac45af7c7d4c13689a33f5d5d"},{"author":{"_account_id":1653,"name":"garyk","email":"gkotton@vmware.com","username":"garyk"},"change_message_id":"66fbdc3fe0da9b63bb5b804543a811b88c6349b6","unresolved":false,"context_lines":[{"line_number":98,"context_line":"        CONF.set_override(\u0027config_drive_format\u0027, \u0027ext4\u0027)"},{"line_number":99,"context_line":"        CONF.set_override(\u0027virt_type\u0027, \u0027parallels\u0027, \u0027libvirt\u0027)"},{"line_number":100,"context_line":"        imagefile \u003d None"},{"line_number":101,"context_line":"        try:"},{"line_number":102,"context_line":"            self.mox.StubOutWithMock(utils, \u0027execute\u0027)"},{"line_number":103,"context_line":"            self.mox.StubOutWithMock(utils, \u0027trycmd\u0027)"},{"line_number":104,"context_line":""}],"source_content_type":"text/x-python","patch_set":7,"id":"da86d52c_3baf0696","line":101,"updated":"2015-02-10 14:17:02.000000000","message":"why do we need the try catch here?","commit_id":"e9b868dae51d019ac45af7c7d4c13689a33f5d5d"},{"author":{"_account_id":1653,"name":"garyk","email":"gkotton@vmware.com","username":"garyk"},"change_message_id":"66fbdc3fe0da9b63bb5b804543a811b88c6349b6","unresolved":false,"context_lines":[{"line_number":99,"context_line":"        CONF.set_override(\u0027virt_type\u0027, \u0027parallels\u0027, \u0027libvirt\u0027)"},{"line_number":100,"context_line":"        imagefile \u003d None"},{"line_number":101,"context_line":"        try:"},{"line_number":102,"context_line":"            self.mox.StubOutWithMock(utils, \u0027execute\u0027)"},{"line_number":103,"context_line":"            self.mox.StubOutWithMock(utils, \u0027trycmd\u0027)"},{"line_number":104,"context_line":""},{"line_number":105,"context_line":"            utils.execute(\u0027ploop\u0027,"}],"source_content_type":"text/x-python","patch_set":7,"id":"da86d52c_dba18aaa","line":102,"updated":"2015-02-10 14:17:02.000000000","message":"please use mock instead of mox","commit_id":"e9b868dae51d019ac45af7c7d4c13689a33f5d5d"},{"author":{"_account_id":1653,"name":"garyk","email":"gkotton@vmware.com","username":"garyk"},"change_message_id":"4fdac925a361ccea07a8c2c1829feed746a5b9af","unresolved":false,"context_lines":[{"line_number":121,"context_line":"                          mock.ANY, run_as_root\u003dTrue)"},{"line_number":122,"context_line":"                ]"},{"line_number":123,"context_line":"        imagefile \u003d None"},{"line_number":124,"context_line":"        try:"},{"line_number":125,"context_line":"            imagefile \u003d self._create_ext4_ploop(calls)"},{"line_number":126,"context_line":"        finally:"},{"line_number":127,"context_line":"            if imagefile:"}],"source_content_type":"text/x-python","patch_set":9,"id":"da86d52c_13d13dfb","line":124,"updated":"2015-02-10 19:04:44.000000000","message":"why do we need the try catch?","commit_id":"a6f415f5eaf91f420fe243ba8b6e034b45af404c"},{"author":{"_account_id":13249,"name":"Alexander Burluka","email":"aburluka@parallels.com","username":"aburluka"},"change_message_id":"3972be31a7ba2f2a9fb1b870b91bbd9365d34e70","unresolved":false,"context_lines":[{"line_number":121,"context_line":"                          mock.ANY, run_as_root\u003dTrue)"},{"line_number":122,"context_line":"                ]"},{"line_number":123,"context_line":"        imagefile \u003d None"},{"line_number":124,"context_line":"        try:"},{"line_number":125,"context_line":"            imagefile \u003d self._create_ext4_ploop(calls)"},{"line_number":126,"context_line":"        finally:"},{"line_number":127,"context_line":"            if imagefile:"}],"source_content_type":"text/x-python","patch_set":9,"id":"da86d52c_d6c85c24","line":124,"in_reply_to":"da86d52c_13d13dfb","updated":"2015-02-11 09:51:02.000000000","message":"Sorry, that try/finally wrap around is not necessary anymore. I needed it while debugging that part.","commit_id":"a6f415f5eaf91f420fe243ba8b6e034b45af404c"},{"author":{"_account_id":2271,"name":"Michael Still","email":"mikal@stillhq.com","username":"mikalstill"},"change_message_id":"5517377a3f4bf6833a29147353f613ed5fd79f60","unresolved":false,"context_lines":[{"line_number":43,"context_line":""},{"line_number":44,"context_line":"    def test_create_configdrive_iso(self):"},{"line_number":45,"context_line":"        CONF.set_override(\u0027config_drive_format\u0027, \u0027iso9660\u0027)"},{"line_number":46,"context_line":"        self.flags(config_drive_format\u003d\u0027iso9660\u0027)"},{"line_number":47,"context_line":"        imagefile \u003d None"},{"line_number":48,"context_line":""},{"line_number":49,"context_line":"        try:"}],"source_content_type":"text/x-python","patch_set":19,"id":"5afe65bd_b2bac721","line":46,"range":{"start_line":46,"start_character":19,"end_line":46,"end_character":38},"updated":"2015-06-04 05:33:14.000000000","message":"Why is this needed?","commit_id":"b07ee92f89dd9609def70e76c6092651c5dcaf48"},{"author":{"_account_id":12408,"name":"Maxim Nestratov","email":"mnestratov@virtuozzo.com","username":"mnestratov"},"change_message_id":"97914c61c73cc22ea3bf0287b7b2abfeb7a2dd2b","unresolved":false,"context_lines":[{"line_number":43,"context_line":""},{"line_number":44,"context_line":"    def test_create_configdrive_iso(self):"},{"line_number":45,"context_line":"        CONF.set_override(\u0027config_drive_format\u0027, \u0027iso9660\u0027)"},{"line_number":46,"context_line":"        self.flags(config_drive_format\u003d\u0027iso9660\u0027)"},{"line_number":47,"context_line":"        imagefile \u003d None"},{"line_number":48,"context_line":""},{"line_number":49,"context_line":"        try:"}],"source_content_type":"text/x-python","patch_set":19,"id":"3afb71cf_e7c6bc15","line":46,"in_reply_to":"5afe65bd_b2bac721","updated":"2015-06-04 19:40:51.000000000","message":"I think the it is unnecessary. The author put it here by a mistake addressing garryk\u0027 comment in 7-th patchset to use self.flags instead of CONF.set_override in function test_create_configdrive_ext4_ploop.","commit_id":"b07ee92f89dd9609def70e76c6092651c5dcaf48"}],"nova/virt/configdrive.py":[{"author":{"_account_id":1779,"name":"Daniel Berrange","email":"berrange@redhat.com","username":"berrange"},"change_message_id":"dbce310f972f99010792bdf84dad483418c02aa1","unresolved":false,"context_lines":[{"line_number":191,"context_line":"            elif CONF.config_drive_format \u003d\u003d \u0027vfat\u0027:"},{"line_number":192,"context_line":"                self._make_vfat(path, tmpdir)"},{"line_number":193,"context_line":"            elif CONF.config_drive_format \u003d\u003d \"ploop\":"},{"line_number":194,"context_line":"                self._make_ploop(path, tmpdir)"},{"line_number":195,"context_line":"            else:"},{"line_number":196,"context_line":"                raise exception.ConfigDriveUnknownFormat("},{"line_number":197,"context_line":"                    format\u003dCONF.config_drive_format)"}],"source_content_type":"text/x-python","patch_set":2,"id":"fa81d914_c652de12","line":194,"updated":"2015-01-28 11:07:30.000000000","message":"Hmm, I\u0027m not entirely comfortable with this.\n\n\u0027iso9660\u0027 and \u0027vfat\u0027 both refer to the filesystem inside the config drive and is independent of host side image format, where as \u0027ploop\u0027 refers to the format of the host side image. You\u0027re actually creating an ext4 filesystem.\n\nAlso with existing hypervisor drivers either of iso9660 or vfat works with any hypervisor, so admins don\u0027t need todo anything out of the box to make this work. With this ploop setting, the parallels virt driver will work if-only-if you also set config_drive_format to the correct value which is a little sucky.\n\nI\u0027d like the goal to be \"just works out of the box\" for all virt drivers.\n\nThinking about this, we really have at least 3 independent variables here.\n\n 1. Device type - disk vs cdrom vs filesystem\n 2. Filesystem type - iso9660 vs vfat vs ext3 vs ....\n 3. Image type - raw, qcow2, ploop\n\nSome observations\n\n - Currently image type used is always \u0027raw\u0027 \n - Device type is implied - disk if vat, cdrom if iso9660\n - Filesystem type doesn\u0027t hugely matter when using a filesystem device.\n - This method doesn\u0027t really care about the device type exposed to the guest - it is just making images\n\nSo I think perhaps we should do this\n\n - Add a \u0027image_type\u0027 parameter to \u0027make_drive\u0027\n - Change \u0027config_drive_format\u0027 so that the default is None rather than iso9660, allow ext3 or ext4 as filesystem types\n - If config_drive_format is set then use that as the filesystem type\n - If config_drive_format is None, then decide based on image_type\n      if raw, then use iso9660, else if ploop then use ext4\n\nSo we\u0027d end up with something like this \n\n\n\n cfg.StrOpt(\u0027config_drive_format\u0027,\n\tdefault\u003dNone,\n\thelp\u003d\u0027Config drive format. One of iso9660, vfat, ext3, ext4, or unset to auto-detect \u0027),\n\n\n  FS_FORMAT_VFAT \u003d \"vfat\"\n  FS_FORMAT_ISO9660 \u003d \"iso9660\"\n  FS_FORMAT_EXT3 \u003d \"ext3\"\n  FS_FORMAT_EXT4 \u003d \"ext4\"\n\n IMAGE_TYPE_RAW \u003d \"raw\"\n IMAGE_TYPE_PLOOP \u003d \"ploop\"\n\n def make_drive(self, path, image_type\u003dIMAGE_TYPE_RAW)\n     fs_format \u003d CONF.config_drive_format\n     if fs_format is None:\n         if image_type \u003d\u003d IMAGE_TYPE_RAW\n           fs_format \u003d FS_FORMAT_ISO9660\n         elif image_type \u003d\u003d IMAGE_TyPE_PLOOP\n           fs_format \u003d FS_FORMAT_EXT4\n     if image_type \u003d\u003d IMAGE_TYPE_RAW:\n        if fs_format not in (FS_FORMAT_VFAT, FS_FORMAT_ISO9660)\n           ...raise exception about unsupported format...\n        if fs_format \u003d\u003d FS_FORMAT_VFAT\n           self._make_vfat(...)\n        else:\n           self._make_vfat(...)\n     else if image_type \u003d\u003d IMAGE_TYPE_PLOOP\n        if fs_format not in (FS_FORMAT_EXT3, FS_FORMAT_EXT4)\n           ...raise exception about unsupported format...\n        self._make_ploop(fs_format, ...)\n\n\nNow, the libvirt drive.py just needs to pass in a suitable image_type\u003dIMAGE_TYPE_PLOOP when using parallels container based guests and everything should \"just work\" in out of the box scenario.","commit_id":"347c27e67688363da9af988a6a7cc1359f3d5458"},{"author":{"_account_id":1779,"name":"Daniel Berrange","email":"berrange@redhat.com","username":"berrange"},"change_message_id":"448d0f0ecbaf7332b9740c2f197580c9c0223df5","unresolved":false,"context_lines":[{"line_number":149,"context_line":"                if mounted:"},{"line_number":150,"context_line":"                    utils.execute(\u0027umount\u0027, mountdir, run_as_root\u003dTrue)"},{"line_number":151,"context_line":""},{"line_number":152,"context_line":"    def _make_ext4_ploop(self, path, tmpdir):"},{"line_number":153,"context_line":"        os.mkdir(path)"},{"line_number":154,"context_line":"        utils.execute(\u0027ploop\u0027,"},{"line_number":155,"context_line":"                      \u0027init\u0027,"}],"source_content_type":"text/x-python","patch_set":6,"id":"da86d52c_67164a57","line":152,"updated":"2015-02-10 10:42:33.000000000","message":"Add a python doc string for this method just explaining what ploop is / what uses it, since people unfamiliar with libvirt parallels code might come across this and wonder what its about.","commit_id":"95d1c416363ec1dea0cd89ab0dca282eb544d5db"},{"author":{"_account_id":1779,"name":"Daniel Berrange","email":"berrange@redhat.com","username":"berrange"},"change_message_id":"448d0f0ecbaf7332b9740c2f197580c9c0223df5","unresolved":false,"context_lines":[{"line_number":182,"context_line":"                    utils.execute(\u0027ploop\u0027, \u0027umount\u0027,"},{"line_number":183,"context_line":"                            path + \u0027/disk.config.hds\u0027, run_as_root\u003dTrue)"},{"line_number":184,"context_line":""},{"line_number":185,"context_line":"    def make_drive(self, path, image_type\u003d\"raw\"):"},{"line_number":186,"context_line":"        \"\"\"Make the config drive."},{"line_number":187,"context_line":""},{"line_number":188,"context_line":"        :param path: the path to place the config drive image at"}],"source_content_type":"text/x-python","patch_set":6,"id":"da86d52c_6771eadf","line":185,"updated":"2015-02-10 10:42:33.000000000","message":"I\u0027m thinking we should probably add constants for the two valid image type values, to make it clearer to callers what\u0027s permissible.","commit_id":"95d1c416363ec1dea0cd89ab0dca282eb544d5db"},{"author":{"_account_id":1653,"name":"garyk","email":"gkotton@vmware.com","username":"garyk"},"change_message_id":"66fbdc3fe0da9b63bb5b804543a811b88c6349b6","unresolved":false,"context_lines":[{"line_number":33,"context_line":""},{"line_number":34,"context_line":"configdrive_opts \u003d ["},{"line_number":35,"context_line":"    cfg.StrOpt(\u0027config_drive_format\u0027,"},{"line_number":36,"context_line":"               default\u003dNone,"},{"line_number":37,"context_line":"               help\u003d\u0027Config drive format. One of iso9660, vfat, ext4, \u0027"},{"line_number":38,"context_line":"                    \u0027or unset to auto-detect\u0027),"},{"line_number":39,"context_line":"    # force_config_drive is a string option, to allow for future behaviors"}],"source_content_type":"text/x-python","patch_set":7,"id":"da86d52c_3b862614","line":36,"updated":"2015-02-10 14:17:02.000000000","message":"the default value is None. You do not need to add this.\nWhy are we changing this? This may break existing setups","commit_id":"e9b868dae51d019ac45af7c7d4c13689a33f5d5d"},{"author":{"_account_id":1779,"name":"Daniel Berrange","email":"berrange@redhat.com","username":"berrange"},"change_message_id":"a5d67223fbfb18c6857fcf07d7d4e67f49d566b8","unresolved":false,"context_lines":[{"line_number":33,"context_line":""},{"line_number":34,"context_line":"configdrive_opts \u003d ["},{"line_number":35,"context_line":"    cfg.StrOpt(\u0027config_drive_format\u0027,"},{"line_number":36,"context_line":"               default\u003dNone,"},{"line_number":37,"context_line":"               help\u003d\u0027Config drive format. One of iso9660, vfat, ext4, \u0027"},{"line_number":38,"context_line":"                    \u0027or unset to auto-detect\u0027),"},{"line_number":39,"context_line":"    # force_config_drive is a string option, to allow for future behaviors"}],"source_content_type":"text/x-python","patch_set":7,"id":"da86d52c_fe6e3bc8","line":36,"in_reply_to":"da86d52c_3b862614","updated":"2015-02-10 14:46:49.000000000","message":"The problem we\u0027re solving is that the default value needs to be different depending on the hypervisor setup in use. You can\u0027t have conditional default values in the config opt declaration, so this has to be None here.  See line 205 where we add the logic that ensures it still gets the right conditional default value. Existing deployments won\u0027t see any change in default value.","commit_id":"e9b868dae51d019ac45af7c7d4c13689a33f5d5d"},{"author":{"_account_id":1653,"name":"garyk","email":"gkotton@vmware.com","username":"garyk"},"change_message_id":"b7f9cea6b0833886337848cd14a5e5d55f792030","unresolved":false,"context_lines":[{"line_number":33,"context_line":""},{"line_number":34,"context_line":"configdrive_opts \u003d ["},{"line_number":35,"context_line":"    cfg.StrOpt(\u0027config_drive_format\u0027,"},{"line_number":36,"context_line":"               default\u003dNone,"},{"line_number":37,"context_line":"               help\u003d\u0027Config drive format. One of iso9660, vfat, ext4, \u0027"},{"line_number":38,"context_line":"                    \u0027or unset to auto-detect\u0027),"},{"line_number":39,"context_line":"    # force_config_drive is a string option, to allow for future behaviors"}],"source_content_type":"text/x-python","patch_set":7,"id":"da86d52c_feab9b86","line":36,"in_reply_to":"da86d52c_fe6e3bc8","updated":"2015-02-10 14:53:59.000000000","message":"The default\u003dNone is still not required.","commit_id":"e9b868dae51d019ac45af7c7d4c13689a33f5d5d"},{"author":{"_account_id":1653,"name":"garyk","email":"gkotton@vmware.com","username":"garyk"},"change_message_id":"4fdac925a361ccea07a8c2c1829feed746a5b9af","unresolved":false,"context_lines":[{"line_number":33,"context_line":""},{"line_number":34,"context_line":"configdrive_opts \u003d ["},{"line_number":35,"context_line":"    cfg.StrOpt(\u0027config_drive_format\u0027,"},{"line_number":36,"context_line":"               default\u003dNone,"},{"line_number":37,"context_line":"               help\u003d\u0027Config drive format. One of iso9660, vfat, ext4, \u0027"},{"line_number":38,"context_line":"                    \u0027or unset to auto-detect\u0027),"},{"line_number":39,"context_line":"    # force_config_drive is a string option, to allow for future behaviors"}],"source_content_type":"text/x-python","patch_set":9,"id":"da86d52c_13ca1d4f","line":36,"updated":"2015-02-10 19:04:44.000000000","message":"The default value is None. You do not need this.","commit_id":"a6f415f5eaf91f420fe243ba8b6e034b45af404c"},{"author":{"_account_id":2271,"name":"Michael Still","email":"mikal@stillhq.com","username":"mikalstill"},"change_message_id":"5517377a3f4bf6833a29147353f613ed5fd79f60","unresolved":false,"context_lines":[{"line_number":56,"context_line":""},{"line_number":57,"context_line":"FS_FORMAT_VFAT \u003d \u0027vfat\u0027"},{"line_number":58,"context_line":"FS_FORMAT_ISO9660 \u003d \u0027iso9660\u0027"},{"line_number":59,"context_line":"FS_FORMAT_EXT4 \u003d \u0027ext4\u0027"},{"line_number":60,"context_line":""},{"line_number":61,"context_line":"IMAGE_TYPE_RAW \u003d \u0027raw\u0027"},{"line_number":62,"context_line":"IMAGE_TYPE_PLOOP \u003d \u0027ploop\u0027"}],"source_content_type":"text/x-python","patch_set":19,"id":"5afe65bd_52edd323","line":59,"updated":"2015-06-04 05:33:14.000000000","message":"Why does ploop require its own config drive format? This is going to cause ongoing confusion for other hypervisors, as users will attempt to use this drive format for other drivers which don\u0027t have support. I think we need very solid reasons if we\u0027re going to do this.","commit_id":"b07ee92f89dd9609def70e76c6092651c5dcaf48"},{"author":{"_account_id":1849,"name":"Joe Gordon","email":"joe.gordon0@gmail.com","username":"jogo"},"change_message_id":"cb42cd8b67c5c74fbe8f7b78a1e7bfdc5781af8d","unresolved":false,"context_lines":[{"line_number":56,"context_line":""},{"line_number":57,"context_line":"FS_FORMAT_VFAT \u003d \u0027vfat\u0027"},{"line_number":58,"context_line":"FS_FORMAT_ISO9660 \u003d \u0027iso9660\u0027"},{"line_number":59,"context_line":"FS_FORMAT_EXT4 \u003d \u0027ext4\u0027"},{"line_number":60,"context_line":""},{"line_number":61,"context_line":"IMAGE_TYPE_RAW \u003d \u0027raw\u0027"},{"line_number":62,"context_line":"IMAGE_TYPE_PLOOP \u003d \u0027ploop\u0027"}],"source_content_type":"text/x-python","patch_set":19,"id":"5afe65bd_724b2f88","line":59,"in_reply_to":"5afe65bd_52edd323","updated":"2015-06-04 06:16:11.000000000","message":"I agree with Michael, I am not keen on adding yet another config_drive_format","commit_id":"b07ee92f89dd9609def70e76c6092651c5dcaf48"},{"author":{"_account_id":12408,"name":"Maxim Nestratov","email":"mnestratov@virtuozzo.com","username":"mnestratov"},"change_message_id":"7fd32e1ea47f65f1b75b8017fa5aeac986a10272","unresolved":false,"context_lines":[{"line_number":56,"context_line":""},{"line_number":57,"context_line":"FS_FORMAT_VFAT \u003d \u0027vfat\u0027"},{"line_number":58,"context_line":"FS_FORMAT_ISO9660 \u003d \u0027iso9660\u0027"},{"line_number":59,"context_line":"FS_FORMAT_EXT4 \u003d \u0027ext4\u0027"},{"line_number":60,"context_line":""},{"line_number":61,"context_line":"IMAGE_TYPE_RAW \u003d \u0027raw\u0027"},{"line_number":62,"context_line":"IMAGE_TYPE_PLOOP \u003d \u0027ploop\u0027"}],"source_content_type":"text/x-python","patch_set":19,"id":"3afb71cf_ca862765","line":59,"in_reply_to":"5afe65bd_724b2f88","updated":"2015-06-04 19:56:37.000000000","message":"The reason is simple. We don\u0027t support any different from ext3/ext4 for containers ploop. What about if we omit adding a new format and just call _make_ext4_ploop for ploop images as soon as it is the only reasonable format for ploop based config drive?","commit_id":"b07ee92f89dd9609def70e76c6092651c5dcaf48"},{"author":{"_account_id":1653,"name":"garyk","email":"gkotton@vmware.com","username":"garyk"},"change_message_id":"e18d1675b6117c04f96b60ca520d6b8130fa54e0","unresolved":false,"context_lines":[{"line_number":217,"context_line":"                if fs_format not in (FS_FORMAT_VFAT, FS_FORMAT_ISO9660):"},{"line_number":218,"context_line":"                    raise exception.ConfigDriveUnsupportedFormat("},{"line_number":219,"context_line":"                            format\u003dfs_format,"},{"line_number":220,"context_line":"                            virt_type\u003dCONF.libvirt.virt_type,"},{"line_number":221,"context_line":"                            image_type\u003dimage_type)"},{"line_number":222,"context_line":"                elif fs_format \u003d\u003d FS_FORMAT_ISO9660:"},{"line_number":223,"context_line":"                    self._make_iso9660(path, tmpdir)"}],"source_content_type":"text/x-python","patch_set":24,"id":"3afb71cf_c1217a9f","line":220,"updated":"2015-06-11 09:17:16.000000000","message":"this is a little odd in my opionion. This is meant to be generic code and it is using a libvirt configuration variable. That does not seem right.","commit_id":"a37cd85d2633b2f31875f12063a52b08b0b8f449"},{"author":{"_account_id":1779,"name":"Daniel Berrange","email":"berrange@redhat.com","username":"berrange"},"change_message_id":"eb3d6cc12beb4883086bd0fd55fe02eb3cad757b","unresolved":false,"context_lines":[{"line_number":217,"context_line":"                if fs_format not in (FS_FORMAT_VFAT, FS_FORMAT_ISO9660):"},{"line_number":218,"context_line":"                    raise exception.ConfigDriveUnsupportedFormat("},{"line_number":219,"context_line":"                            format\u003dfs_format,"},{"line_number":220,"context_line":"                            virt_type\u003dCONF.libvirt.virt_type,"},{"line_number":221,"context_line":"                            image_type\u003dimage_type)"},{"line_number":222,"context_line":"                elif fs_format \u003d\u003d FS_FORMAT_ISO9660:"},{"line_number":223,"context_line":"                    self._make_iso9660(path, tmpdir)"}],"source_content_type":"text/x-python","patch_set":24,"id":"3afb71cf_87115254","line":220,"in_reply_to":"3afb71cf_2c15e59a","updated":"2015-06-11 10:03:03.000000000","message":"Yeah, I think you can just leave that out - have the xception just reference CONF.config_drive_format and the path \u0026 image_type parameters","commit_id":"a37cd85d2633b2f31875f12063a52b08b0b8f449"},{"author":{"_account_id":12408,"name":"Maxim Nestratov","email":"mnestratov@virtuozzo.com","username":"mnestratov"},"change_message_id":"caa3d102e45a8be53e73474160a795bd8da3a48e","unresolved":false,"context_lines":[{"line_number":217,"context_line":"                if fs_format not in (FS_FORMAT_VFAT, FS_FORMAT_ISO9660):"},{"line_number":218,"context_line":"                    raise exception.ConfigDriveUnsupportedFormat("},{"line_number":219,"context_line":"                            format\u003dfs_format,"},{"line_number":220,"context_line":"                            virt_type\u003dCONF.libvirt.virt_type,"},{"line_number":221,"context_line":"                            image_type\u003dimage_type)"},{"line_number":222,"context_line":"                elif fs_format \u003d\u003d FS_FORMAT_ISO9660:"},{"line_number":223,"context_line":"                    self._make_iso9660(path, tmpdir)"}],"source_content_type":"text/x-python","patch_set":24,"id":"3afb71cf_2c15e59a","line":220,"in_reply_to":"3afb71cf_c1217a9f","updated":"2015-06-11 09:56:23.000000000","message":"Agree.","commit_id":"a37cd85d2633b2f31875f12063a52b08b0b8f449"}],"nova/virt/libvirt/blockinfo.py":[{"author":{"_account_id":1779,"name":"Daniel Berrange","email":"berrange@redhat.com","username":"berrange"},"change_message_id":"448d0f0ecbaf7332b9740c2f197580c9c0223df5","unresolved":false,"context_lines":[{"line_number":342,"context_line":""},{"line_number":343,"context_line":"       Config drive will be:"},{"line_number":344,"context_line":"       \u0027cdrom\u0027 in case of config_drive is set to iso9660;"},{"line_number":345,"context_line":"       \u0027vfat\u0027 in case of config_drive is set to vfat;"},{"line_number":346,"context_line":"       \u0027fs\u0027 in case of config_drive is set to ext4 (supported only for"},{"line_number":347,"context_line":"         parallels driver;"},{"line_number":348,"context_line":"       Autodetected from (cdrom, vfat, fs) in case of config_drive is None;"}],"source_content_type":"text/x-python","patch_set":6,"id":"da86d52c_c21d2468","line":345,"updated":"2015-02-10 10:42:33.000000000","message":"s/vfat/disk/ in the first occurrence.","commit_id":"95d1c416363ec1dea0cd89ab0dca282eb544d5db"},{"author":{"_account_id":1779,"name":"Daniel Berrange","email":"berrange@redhat.com","username":"berrange"},"change_message_id":"448d0f0ecbaf7332b9740c2f197580c9c0223df5","unresolved":false,"context_lines":[{"line_number":345,"context_line":"       \u0027vfat\u0027 in case of config_drive is set to vfat;"},{"line_number":346,"context_line":"       \u0027fs\u0027 in case of config_drive is set to ext4 (supported only for"},{"line_number":347,"context_line":"         parallels driver;"},{"line_number":348,"context_line":"       Autodetected from (cdrom, vfat, fs) in case of config_drive is None;"},{"line_number":349,"context_line":"       Otherwise, an exception of unknown format will be thrown."},{"line_number":350,"context_line":""},{"line_number":351,"context_line":"       Returns a string indicating the config drive type."}],"source_content_type":"text/x-python","patch_set":6,"id":"da86d52c_4221349e","line":348,"updated":"2015-02-10 10:42:33.000000000","message":"s/vfat/disk/ again","commit_id":"95d1c416363ec1dea0cd89ab0dca282eb544d5db"},{"author":{"_account_id":1779,"name":"Daniel Berrange","email":"berrange@redhat.com","username":"berrange"},"change_message_id":"448d0f0ecbaf7332b9740c2f197580c9c0223df5","unresolved":false,"context_lines":[{"line_number":375,"context_line":"                config_drive_type \u003d \u0027fs\u0027"},{"line_number":376,"context_line":"            else:"},{"line_number":377,"context_line":"                raise exception.ConfigDriveUnknownFormat("},{"line_number":378,"context_line":"                    format\u003dCONF.config_drive_format)"},{"line_number":379,"context_line":"    else:"},{"line_number":380,"context_line":"        raise exception.ConfigDriveUnknownFormat("},{"line_number":381,"context_line":"            format\u003dCONF.config_drive_format)"}],"source_content_type":"text/x-python","patch_set":6,"id":"da86d52c_42585432","line":378,"updated":"2015-02-10 10:42:33.000000000","message":"Missing an \u0027else\u0027 at a higher level to catch case where someone adds a new libvirt driver.","commit_id":"95d1c416363ec1dea0cd89ab0dca282eb544d5db"},{"author":{"_account_id":1779,"name":"Daniel Berrange","email":"berrange@redhat.com","username":"berrange"},"change_message_id":"f8bd797903693ea8a3c0703d34cfeb6a34851a9e","unresolved":false,"context_lines":[{"line_number":365,"context_line":"                image_type\u003dNone)"},{"line_number":366,"context_line":"    elif CONF.config_drive_format is None:"},{"line_number":367,"context_line":"        if CONF.libvirt.virt_type \u003d\u003d \u0027lxc\u0027:"},{"line_number":368,"context_line":"            config_drive_type \u003d \u0027vfat\u0027"},{"line_number":369,"context_line":"        elif CONF.libvirt.virt_type \u003d\u003d \u0027parallels\u0027:"},{"line_number":370,"context_line":"            if os_type \u003d\u003d vm_mode.HVM:"},{"line_number":371,"context_line":"                config_drive_type \u003d \u0027cdrom\u0027"}],"source_content_type":"text/x-python","patch_set":10,"id":"da86d52c_391ed270","line":368,"updated":"2015-02-12 10:56:42.000000000","message":"This doesnt\u0027 look correct as a return value - should be one of cdrom, disk or fs. Of course LXC doesn\u0027t currently do config drives, so this branch could be just removed entirely.","commit_id":"d2994867709670ba15857cb2cbbd7fb494b4fc7c"},{"author":{"_account_id":13249,"name":"Alexander Burluka","email":"aburluka@parallels.com","username":"aburluka"},"change_message_id":"40a7236b9966d576d555d16988f887dddb064ef3","unresolved":false,"context_lines":[{"line_number":365,"context_line":"                image_type\u003dNone)"},{"line_number":366,"context_line":"    elif CONF.config_drive_format is None:"},{"line_number":367,"context_line":"        if CONF.libvirt.virt_type \u003d\u003d \u0027lxc\u0027:"},{"line_number":368,"context_line":"            config_drive_type \u003d \u0027vfat\u0027"},{"line_number":369,"context_line":"        elif CONF.libvirt.virt_type \u003d\u003d \u0027parallels\u0027:"},{"line_number":370,"context_line":"            if os_type \u003d\u003d vm_mode.HVM:"},{"line_number":371,"context_line":"                config_drive_type \u003d \u0027cdrom\u0027"}],"source_content_type":"text/x-python","patch_set":10,"id":"da86d52c_54fd0d6d","line":368,"in_reply_to":"da86d52c_391ed270","updated":"2015-02-12 11:09:13.000000000","message":"I\u0027m sorry, this is a mistype. Should I remove it or change to \u0027disk\u0027? We tried to experiment and we were unable to make configuration drives work with LXC.","commit_id":"d2994867709670ba15857cb2cbbd7fb494b4fc7c"},{"author":{"_account_id":1779,"name":"Daniel Berrange","email":"berrange@redhat.com","username":"berrange"},"change_message_id":"0eb2651815d8c1638139ee6ad7eafb4c049ea4be","unresolved":false,"context_lines":[{"line_number":365,"context_line":"                image_type\u003dNone)"},{"line_number":366,"context_line":"    elif CONF.config_drive_format is None:"},{"line_number":367,"context_line":"        if CONF.libvirt.virt_type \u003d\u003d \u0027lxc\u0027:"},{"line_number":368,"context_line":"            config_drive_type \u003d \u0027vfat\u0027"},{"line_number":369,"context_line":"        elif CONF.libvirt.virt_type \u003d\u003d \u0027parallels\u0027:"},{"line_number":370,"context_line":"            if os_type \u003d\u003d vm_mode.HVM:"},{"line_number":371,"context_line":"                config_drive_type \u003d \u0027cdrom\u0027"}],"source_content_type":"text/x-python","patch_set":10,"id":"da86d52c_740e918d","line":368,"in_reply_to":"da86d52c_54fd0d6d","updated":"2015-02-12 11:10:49.000000000","message":"I think i\u0027d just remove it, since it isn\u0027t supported with LXC at all yet.","commit_id":"d2994867709670ba15857cb2cbbd7fb494b4fc7c"},{"author":{"_account_id":1653,"name":"garyk","email":"gkotton@vmware.com","username":"garyk"},"change_message_id":"e18d1675b6117c04f96b60ca520d6b8130fa54e0","unresolved":false,"context_lines":[{"line_number":366,"context_line":"                config_drive_type \u003d \u0027fs\u0027"},{"line_number":367,"context_line":"            else:"},{"line_number":368,"context_line":"                raise exception.ConfigDriveUnknownFormat("},{"line_number":369,"context_line":"                    format\u003dCONF.config_drive_format)"},{"line_number":370,"context_line":"        else:"},{"line_number":371,"context_line":"            config_drive_type \u003d \u0027cdrom\u0027"},{"line_number":372,"context_line":"    else:"}],"source_content_type":"text/x-python","patch_set":24,"id":"3afb71cf_219e0eb9","line":369,"updated":"2015-06-11 09:17:16.000000000","message":"The format here is None. Not sure how informative that is. Maybe consider having an exception that indicates the os_type","commit_id":"a37cd85d2633b2f31875f12063a52b08b0b8f449"},{"author":{"_account_id":12408,"name":"Maxim Nestratov","email":"mnestratov@virtuozzo.com","username":"mnestratov"},"change_message_id":"caa3d102e45a8be53e73474160a795bd8da3a48e","unresolved":false,"context_lines":[{"line_number":366,"context_line":"                config_drive_type \u003d \u0027fs\u0027"},{"line_number":367,"context_line":"            else:"},{"line_number":368,"context_line":"                raise exception.ConfigDriveUnknownFormat("},{"line_number":369,"context_line":"                    format\u003dCONF.config_drive_format)"},{"line_number":370,"context_line":"        else:"},{"line_number":371,"context_line":"            config_drive_type \u003d \u0027cdrom\u0027"},{"line_number":372,"context_line":"    else:"}],"source_content_type":"text/x-python","patch_set":24,"id":"3afb71cf_cc8411d4","line":369,"in_reply_to":"3afb71cf_219e0eb9","updated":"2015-06-11 09:56:23.000000000","message":"Again, agree.","commit_id":"a37cd85d2633b2f31875f12063a52b08b0b8f449"}],"nova/virt/vmwareapi/vmops.py":[{"author":{"_account_id":1653,"name":"garyk","email":"gkotton@vmware.com","username":"garyk"},"change_message_id":"66fbdc3fe0da9b63bb5b804543a811b88c6349b6","unresolved":false,"context_lines":[{"line_number":645,"context_line":""},{"line_number":646,"context_line":"    def _create_config_drive(self, instance, injected_files, admin_password,"},{"line_number":647,"context_line":"                             data_store_name, dc_name, upload_folder, cookies):"},{"line_number":648,"context_line":"        if CONF.config_drive_format not in (\u0027iso9660\u0027, None):"},{"line_number":649,"context_line":"            reason \u003d (_(\u0027Invalid config_drive_format \"%s\"\u0027) %"},{"line_number":650,"context_line":"                      CONF.config_drive_format)"},{"line_number":651,"context_line":"            raise exception.InstancePowerOnFailure(reason\u003dreason)"}],"source_content_type":"text/x-python","patch_set":7,"id":"da86d52c_7bc5fe3b","line":648,"updated":"2015-02-10 14:17:02.000000000","message":"I am not sure how None is supported here. This looks like it will break things...","commit_id":"e9b868dae51d019ac45af7c7d4c13689a33f5d5d"},{"author":{"_account_id":1779,"name":"Daniel Berrange","email":"berrange@redhat.com","username":"berrange"},"change_message_id":"f7ab9b4575a04fd4c2064df9fea4728073f1aec8","unresolved":false,"context_lines":[{"line_number":691,"context_line":""},{"line_number":692,"context_line":"    def _create_config_drive(self, instance, injected_files, admin_password,"},{"line_number":693,"context_line":"                             data_store_name, dc_name, upload_folder, cookies):"},{"line_number":694,"context_line":"        if CONF.config_drive_format not in (\u0027iso9660\u0027, None):"},{"line_number":695,"context_line":"            reason \u003d (_(\u0027Invalid config_drive_format \"%s\"\u0027) %"},{"line_number":696,"context_line":"                      CONF.config_drive_format)"},{"line_number":697,"context_line":"            raise exception.InstancePowerOnFailure(reason\u003dreason)"}],"source_content_type":"text/x-python","patch_set":23,"id":"3afb71cf_e9f72357","line":694,"updated":"2015-06-09 13:23:45.000000000","message":"I think you\u0027ll probably need to make this same change in hyperv/vmops.py as it has a similar check.","commit_id":"10c01931ec0906922987ed33ffffda1757d2c66c"},{"author":{"_account_id":12408,"name":"Maxim Nestratov","email":"mnestratov@virtuozzo.com","username":"mnestratov"},"change_message_id":"e8655f08461f571beeb86d310e3180e8c5571516","unresolved":false,"context_lines":[{"line_number":691,"context_line":""},{"line_number":692,"context_line":"    def _create_config_drive(self, instance, injected_files, admin_password,"},{"line_number":693,"context_line":"                             data_store_name, dc_name, upload_folder, cookies):"},{"line_number":694,"context_line":"        if CONF.config_drive_format not in (\u0027iso9660\u0027, None):"},{"line_number":695,"context_line":"            reason \u003d (_(\u0027Invalid config_drive_format \"%s\"\u0027) %"},{"line_number":696,"context_line":"                      CONF.config_drive_format)"},{"line_number":697,"context_line":"            raise exception.InstancePowerOnFailure(reason\u003dreason)"}],"source_content_type":"text/x-python","patch_set":23,"id":"3afb71cf_290c1b40","line":694,"in_reply_to":"3afb71cf_e9f72357","updated":"2015-06-09 13:26:51.000000000","message":"Ok","commit_id":"10c01931ec0906922987ed33ffffda1757d2c66c"}]}
