)]}'
{"nova/tests/image/fake.py":[{"author":{"_account_id":6549,"name":"Zhi Yan Liu","email":"lzy.dev@gmail.com","username":"lzy-dev"},"change_message_id":"4762d88a50677bf16c66c2ed8c7cb010bc1c4387","unresolved":false,"context_lines":[{"line_number":261,"context_line":"        pass"},{"line_number":262,"context_line":""},{"line_number":263,"context_line":"    image_service \u003d FakeImageService()"},{"line_number":264,"context_line":"    image_service.get_locations \u003d mock.MagicMock("},{"line_number":265,"context_line":"        **{\u0027side_effect\u0027: _fake_get_locations})"},{"line_number":266,"context_line":"    stubs.Set(nova.image.glance, \u0027get_remote_image_service\u0027,"},{"line_number":267,"context_line":"              lambda x, y: (image_service, y))"}],"source_content_type":"text/x-python","patch_set":10,"id":"AAAAUH%2F%2Br9E%3D","line":264,"updated":"2014-01-23 08:29:35.000000000","message":"We already have a fake get_locations() at line #236, what about change there instead?","commit_id":"4e1909ec5c624a23cd038392cbc228401108b907"}],"nova/tests/virt/vmwareapi/test_copy_imagehandler.py":[{"author":{"_account_id":1653,"name":"garyk","email":"gkotton@vmware.com","username":"garyk"},"change_message_id":"b82bfb691e8d88ab5019b4a17b020e2a5f9ff24b","unresolved":false,"context_lines":[{"line_number":15,"context_line":"#    under the License."},{"line_number":16,"context_line":""},{"line_number":17,"context_line":"import mock"},{"line_number":18,"context_line":"import uuid"},{"line_number":19,"context_line":""},{"line_number":20,"context_line":"from nova import context"},{"line_number":21,"context_line":"from nova import test"}],"source_content_type":"text/x-python","patch_set":11,"id":"AAAAUH%2F%2BcWo%3D","line":18,"updated":"2014-01-26 10:59:49.000000000","message":"uuid is not a thrid party import","commit_id":"82aa284243ade5583c49068699aed901ada68f56"}],"nova/tests/virt/vmwareapi/test_driver_api.py":[{"author":{"_account_id":1653,"name":"garyk","email":"gkotton@vmware.com","username":"garyk"},"change_message_id":"b82bfb691e8d88ab5019b4a17b020e2a5f9ff24b","unresolved":false,"context_lines":[{"line_number":407,"context_line":"        uuids \u003d self.conn.list_instance_uuids()"},{"line_number":408,"context_line":"        self.assertEqual(len(uuids), 0)"},{"line_number":409,"context_line":""},{"line_number":410,"context_line":"    # def test_instance_dir_disk_created(self):"},{"line_number":411,"context_line":"    #     \"\"\"Test image file is cached when even when use_linked_clone"},{"line_number":412,"context_line":"    #         is False"},{"line_number":413,"context_line":"    #     \"\"\""}],"source_content_type":"text/x-python","patch_set":11,"id":"AAAAUH%2F%2BcWk%3D","line":410,"updated":"2014-01-26 10:59:49.000000000","message":"this should be deleted","commit_id":"82aa284243ade5583c49068699aed901ada68f56"}],"nova/virt/imagehandler/__init__.py":[{"author":{"_account_id":6549,"name":"Zhi Yan Liu","email":"lzy.dev@gmail.com","username":"lzy-dev"},"change_message_id":"4762d88a50677bf16c66c2ed8c7cb010bc1c4387","unresolved":false,"context_lines":[{"line_number":31,"context_line":""},{"line_number":32,"context_line":"image_opts \u003d ["},{"line_number":33,"context_line":"    cfg.ListOpt(\u0027image_handlers\u0027,"},{"line_number":34,"context_line":"                default\u003d[\u0027vmware_copy_handler\u0027,"},{"line_number":35,"context_line":"                         \u0027vmware_download_handler\u0027,"},{"line_number":36,"context_line":"                         \u0027download\u0027],"},{"line_number":37,"context_line":"                help\u003d\u0027Specifies which image handler extension names to use \u0027"}],"source_content_type":"text/x-python","patch_set":10,"id":"AAAAUH%2F%2Br8A%3D","line":34,"updated":"2014-01-23 08:29:35.000000000","message":"IMO we don\u0027t need to enable this handler by default.","commit_id":"4e1909ec5c624a23cd038392cbc228401108b907"},{"author":{"_account_id":1653,"name":"garyk","email":"gkotton@vmware.com","username":"garyk"},"change_message_id":"b82bfb691e8d88ab5019b4a17b020e2a5f9ff24b","unresolved":false,"context_lines":[{"line_number":31,"context_line":""},{"line_number":32,"context_line":"image_opts \u003d ["},{"line_number":33,"context_line":"    cfg.ListOpt(\u0027image_handlers\u0027,"},{"line_number":34,"context_line":"                default\u003d[\u0027vmware_download_handler\u0027,"},{"line_number":35,"context_line":"                         \u0027download\u0027],"},{"line_number":36,"context_line":"                help\u003d\u0027Specifies which image handler extension names to use \u0027"},{"line_number":37,"context_line":"                     \u0027for handling images. The first extension in the list \u0027"}],"source_content_type":"text/x-python","patch_set":11,"id":"AAAAUH%2F%2BcWg%3D","line":34,"updated":"2014-01-26 10:59:49.000000000","message":"why do you need this change?","commit_id":"82aa284243ade5583c49068699aed901ada68f56"}],"nova/virt/vmwareapi/imagehandler/copy.py":[{"author":{"_account_id":6549,"name":"Zhi Yan Liu","email":"lzy.dev@gmail.com","username":"lzy-dev"},"change_message_id":"4762d88a50677bf16c66c2ed8c7cb010bc1c4387","unresolved":false,"context_lines":[{"line_number":85,"context_line":"        applicable_drivers \u003d [vmwareapi.VMwareESXDriver,"},{"line_number":86,"context_line":"                              vmwareapi.VMwareVCDriver]"},{"line_number":87,"context_line":"        if driver is None or type(driver) not in applicable_drivers:"},{"line_number":88,"context_line":"            msg \u003d _(\"Can\u0027t handle images of driver: %s\"), driver"},{"line_number":89,"context_line":"            LOG.warn(msg)"},{"line_number":90,"context_line":"            raise Exception(msg)"},{"line_number":91,"context_line":"        super(CopyImageHandler, self).__init__(driver, *args, **kwargs)"}],"source_content_type":"text/x-python","patch_set":10,"id":"AAAAUH%2F%2Br1Y%3D","line":88,"updated":"2014-01-23 08:29:35.000000000","message":"msg \u003d (_(\"Can\u0027t handle images of driver: %s\"), driver) ?","commit_id":"4e1909ec5c624a23cd038392cbc228401108b907"},{"author":{"_account_id":6549,"name":"Zhi Yan Liu","email":"lzy.dev@gmail.com","username":"lzy-dev"},"change_message_id":"4762d88a50677bf16c66c2ed8c7cb010bc1c4387","unresolved":false,"context_lines":[{"line_number":105,"context_line":"                get_src_info(location.get(\u0027url\u0027)))"},{"line_number":106,"context_line":"        except Exception as exc:"},{"line_number":107,"context_line":"            LOG.error(_(\"Unable parse location url %(url)s for \""},{"line_number":108,"context_line":"                        \"image %(image)s\") % {\u0027url\u0027: location,"},{"line_number":109,"context_line":"                                              \u0027image\u0027: image_id})"},{"line_number":110,"context_line":"            return False"},{"line_number":111,"context_line":""}],"source_content_type":"text/x-python","patch_set":10,"id":"AAAAUH%2F%2Br1E%3D","line":108,"updated":"2014-01-23 08:29:35.000000000","message":"... \u0027url\u0027: location.get(\u0027url\u0027),","commit_id":"4e1909ec5c624a23cd038392cbc228401108b907"},{"author":{"_account_id":6549,"name":"Zhi Yan Liu","email":"lzy.dev@gmail.com","username":"lzy-dev"},"change_message_id":"4762d88a50677bf16c66c2ed8c7cb010bc1c4387","unresolved":false,"context_lines":[{"line_number":110,"context_line":"            return False"},{"line_number":111,"context_line":""},{"line_number":112,"context_line":"        session \u003d kwargs.get(\u0027session\u0027)"},{"line_number":113,"context_line":"        service_content \u003d session._get_vim().retrieve_service_content()"},{"line_number":114,"context_line":"        search_index_moref \u003d service_content.searchIndex"},{"line_number":115,"context_line":"        src_moref \u003d session._call_method(session._get_vim(),"},{"line_number":116,"context_line":"                                         \u0027FindByInventoryPath\u0027,"}],"source_content_type":"text/x-python","patch_set":10,"id":"AAAAUH%2F%2Br44%3D","line":113,"updated":"2014-01-23 08:29:35.000000000","message":"IMO, do a check will be more safe:\n\n  if session is None:\n    LOG.error(...)\n    return False","commit_id":"4e1909ec5c624a23cd038392cbc228401108b907"},{"author":{"_account_id":6549,"name":"Zhi Yan Liu","email":"lzy.dev@gmail.com","username":"lzy-dev"},"change_message_id":"4762d88a50677bf16c66c2ed8c7cb010bc1c4387","unresolved":false,"context_lines":[{"line_number":125,"context_line":"        dest_moref \u003d session._call_method(session._get_vim(),"},{"line_number":126,"context_line":"                                          \u0027FindByInventoryPath\u0027,"},{"line_number":127,"context_line":"                                          search_index_moref,"},{"line_number":128,"context_line":"                                          inventoryPath\u003ddest_dc_path)"},{"line_number":129,"context_line":"        if dest_moref is None:"},{"line_number":130,"context_line":"            LOG.error(_(\"Unable to find the moref for datacenter %s\"),"},{"line_number":131,"context_line":"                      dest_dc_path)"}],"source_content_type":"text/x-python","patch_set":10,"id":"AAAAUH%2F%2Br4k%3D","line":128,"updated":"2014-01-23 08:29:35.000000000","message":"does _call_method() can take care None value of inventoryPath param?","commit_id":"4e1909ec5c624a23cd038392cbc228401108b907"},{"author":{"_account_id":6549,"name":"Zhi Yan Liu","email":"lzy.dev@gmail.com","username":"lzy-dev"},"change_message_id":"4762d88a50677bf16c66c2ed8c7cb010bc1c4387","unresolved":false,"context_lines":[{"line_number":131,"context_line":"                      dest_dc_path)"},{"line_number":132,"context_line":"            return False"},{"line_number":133,"context_line":""},{"line_number":134,"context_line":"        src_file_path \u003d \u0027[%s] %s\u0027 % (src_file_path, src_ds_name)"},{"line_number":135,"context_line":"        path \u003d \u0027[%s] %s\u0027 % (path, kwargs.get(\u0027datastore_name\u0027))"},{"line_number":136,"context_line":"        copy_task \u003d session._call_method("},{"line_number":137,"context_line":"            session._get_vim(),"}],"source_content_type":"text/x-python","patch_set":10,"id":"AAAAUH%2F%2Br4c%3D","line":134,"updated":"2014-01-23 08:29:35.000000000","message":"Should be this?\n\n    src_file_path \u003d \u0027[%s] %s\u0027 % (src_ds_name, src_file_path)","commit_id":"4e1909ec5c624a23cd038392cbc228401108b907"},{"author":{"_account_id":6549,"name":"Zhi Yan Liu","email":"lzy.dev@gmail.com","username":"lzy-dev"},"change_message_id":"4762d88a50677bf16c66c2ed8c7cb010bc1c4387","unresolved":false,"context_lines":[{"line_number":132,"context_line":"            return False"},{"line_number":133,"context_line":""},{"line_number":134,"context_line":"        src_file_path \u003d \u0027[%s] %s\u0027 % (src_file_path, src_ds_name)"},{"line_number":135,"context_line":"        path \u003d \u0027[%s] %s\u0027 % (path, kwargs.get(\u0027datastore_name\u0027))"},{"line_number":136,"context_line":"        copy_task \u003d session._call_method("},{"line_number":137,"context_line":"            session._get_vim(),"},{"line_number":138,"context_line":"            \"CopyDatastoreFile_Task\","}],"source_content_type":"text/x-python","patch_set":10,"id":"AAAAUH%2F%2Br4M%3D","line":135,"updated":"2014-01-23 08:29:35.000000000","message":"path \u003d \u0027[%s] %s\u0027 % (kwargs.get(\u0027datastore_name\u0027), path) ?","commit_id":"4e1909ec5c624a23cd038392cbc228401108b907"},{"author":{"_account_id":6549,"name":"Zhi Yan Liu","email":"lzy.dev@gmail.com","username":"lzy-dev"},"change_message_id":"4762d88a50677bf16c66c2ed8c7cb010bc1c4387","unresolved":false,"context_lines":[{"line_number":135,"context_line":"        path \u003d \u0027[%s] %s\u0027 % (path, kwargs.get(\u0027datastore_name\u0027))"},{"line_number":136,"context_line":"        copy_task \u003d session._call_method("},{"line_number":137,"context_line":"            session._get_vim(),"},{"line_number":138,"context_line":"            \"CopyDatastoreFile_Task\","},{"line_number":139,"context_line":"            service_content.fileManager,"},{"line_number":140,"context_line":"            sourceName\u003dsrc_file_path,"},{"line_number":141,"context_line":"            sourceDatacenter\u003dsrc_moref,"}],"source_content_type":"text/x-python","patch_set":10,"id":"AAAAUH%2F%2Brqw%3D","line":138,"updated":"2014-01-23 08:29:35.000000000","message":"Some thoughts like to share with you.\n\nIn the commit message I saw you said \"The next step would be to use directly the image without any copy.\", so may I know why you like implement this and \"zero-copy\" handler be separated?\n\nMaybe I miss something but I think we can combine them to one handler with an option, like \"use_thin_copy\". The reason to me:\n\n1. IMO the most implement code will be similar/same, the main different probably just is that we call \"CopyVirtualDisk_Task\" or \"CopyDatastoreFile_Task\" at here. I\u0027d like to know what\u0027s the special function you want to implement in \"zero-copy\" which different with this, did you planed to auto set image \"protected\" flag in there?\n\n2. From admin/operator\u0027s perspective, if we have \"vmware_linked/thin_copy_handler\", do you think they still like to  use \"vmware_copy_handler\" ? Of cause I believe they will need \"full-copy\" in some case, so which way you like to go: we separate them via different handler or an option for \"vmware_copy_handler\"?\n\nI\u0027d like to know your thoughts.\n\nthanks.","commit_id":"4e1909ec5c624a23cd038392cbc228401108b907"},{"author":{"_account_id":6549,"name":"Zhi Yan Liu","email":"lzy.dev@gmail.com","username":"lzy-dev"},"change_message_id":"4762d88a50677bf16c66c2ed8c7cb010bc1c4387","unresolved":false,"context_lines":[{"line_number":149,"context_line":"    def _remove_image(self, context, image_id, image_meta, path,"},{"line_number":150,"context_line":"                      user_id\u003dNone, project_id\u003dNone, location\u003dNone,"},{"line_number":151,"context_line":"                      **kwargs):"},{"line_number":152,"context_line":"        raise NotImplementedError()"},{"line_number":153,"context_line":""},{"line_number":154,"context_line":"    def _move_image(self, context, image_id, image_meta, src_path, dst_path,"},{"line_number":155,"context_line":"                    user_id\u003dNone, project_id\u003dNone, location\u003dNone,"}],"source_content_type":"text/x-python","patch_set":10,"id":"AAAAUH%2F%2Br14%3D","line":152,"updated":"2014-01-23 08:29:35.000000000","message":"Seems we can implement these two function in this patch also, right?","commit_id":"4e1909ec5c624a23cd038392cbc228401108b907"},{"author":{"_account_id":1653,"name":"garyk","email":"gkotton@vmware.com","username":"garyk"},"change_message_id":"b82bfb691e8d88ab5019b4a17b020e2a5f9ff24b","unresolved":false,"context_lines":[{"line_number":53,"context_line":"            query \u003d file_path[1]"},{"line_number":54,"context_line":"            file_path \u003d file_path[0]"},{"line_number":55,"context_line":"        else:"},{"line_number":56,"context_line":"            msg \u003d (_(\"Location URL %s must contain a file path\"), location_url)"},{"line_number":57,"context_line":"            raise exception.InvalidInput(reason\u003dmsg)"},{"line_number":58,"context_line":"    if not file_path.startswith(DS_URL_PREFIX):"},{"line_number":59,"context_line":"        msg \u003d (_(\"Location URL %(url)s must start with %(prefix)s\") %"}],"source_content_type":"text/x-python","patch_set":11,"id":"AAAAUH%2F%2BcWc%3D","line":56,"updated":"2014-01-26 10:59:49.000000000","message":", should be a % here","commit_id":"82aa284243ade5583c49068699aed901ada68f56"},{"author":{"_account_id":1653,"name":"garyk","email":"gkotton@vmware.com","username":"garyk"},"change_message_id":"b82bfb691e8d88ab5019b4a17b020e2a5f9ff24b","unresolved":false,"context_lines":[{"line_number":62,"context_line":"    file_path \u003d file_path[len(DS_URL_PREFIX):]"},{"line_number":63,"context_line":"    # src datacenter name"},{"line_number":64,"context_line":"    params \u003d urlparse.parse_qs(query)"},{"line_number":65,"context_line":"    dc_path \u003d params[\u0027dcPath\u0027]"},{"line_number":66,"context_line":"    if len(dc_path) \u003e 0:"},{"line_number":67,"context_line":"        dc_path \u003d dc_path.pop()"},{"line_number":68,"context_line":"    else:"}],"source_content_type":"text/x-python","patch_set":11,"id":"AAAAUH%2F%2BcVI%3D","line":65,"updated":"2014-01-26 10:59:49.000000000","message":"any reason not to use params.get(\u0027dcPath\u0027)","commit_id":"82aa284243ade5583c49068699aed901ada68f56"},{"author":{"_account_id":1653,"name":"garyk","email":"gkotton@vmware.com","username":"garyk"},"change_message_id":"b82bfb691e8d88ab5019b4a17b020e2a5f9ff24b","unresolved":false,"context_lines":[{"line_number":66,"context_line":"    if len(dc_path) \u003e 0:"},{"line_number":67,"context_line":"        dc_path \u003d dc_path.pop()"},{"line_number":68,"context_line":"    else:"},{"line_number":69,"context_line":"        msg \u003d (_(\"Location URL %(url)s must contain a datacenter path\"),"},{"line_number":70,"context_line":"               location_url)"},{"line_number":71,"context_line":"        raise exception.InvalidInput(reason\u003dmsg)"},{"line_number":72,"context_line":"    # src datastore"}],"source_content_type":"text/x-python","patch_set":11,"id":"AAAAUH%2F%2BcWU%3D","line":69,"updated":"2014-01-26 10:59:49.000000000","message":", should be a % here","commit_id":"82aa284243ade5583c49068699aed901ada68f56"},{"author":{"_account_id":1653,"name":"garyk","email":"gkotton@vmware.com","username":"garyk"},"change_message_id":"b82bfb691e8d88ab5019b4a17b020e2a5f9ff24b","unresolved":false,"context_lines":[{"line_number":70,"context_line":"               location_url)"},{"line_number":71,"context_line":"        raise exception.InvalidInput(reason\u003dmsg)"},{"line_number":72,"context_line":"    # src datastore"},{"line_number":73,"context_line":"    ds_name \u003d params[\u0027dsName\u0027]"},{"line_number":74,"context_line":"    if len(ds_name) \u003e 0:"},{"line_number":75,"context_line":"        ds_name \u003d ds_name.pop()"},{"line_number":76,"context_line":"    else:"}],"source_content_type":"text/x-python","patch_set":11,"id":"AAAAUH%2F%2BcVU%3D","line":73,"updated":"2014-01-26 10:59:49.000000000","message":"and reason not to use params.get(\u0027dsName\u0027)?","commit_id":"82aa284243ade5583c49068699aed901ada68f56"},{"author":{"_account_id":1653,"name":"garyk","email":"gkotton@vmware.com","username":"garyk"},"change_message_id":"b82bfb691e8d88ab5019b4a17b020e2a5f9ff24b","unresolved":false,"context_lines":[{"line_number":74,"context_line":"    if len(ds_name) \u003e 0:"},{"line_number":75,"context_line":"        ds_name \u003d ds_name.pop()"},{"line_number":76,"context_line":"    else:"},{"line_number":77,"context_line":"        msg \u003d (_(\"Location URL %(url)s must contain a datastore name\"),"},{"line_number":78,"context_line":"               location_url)"},{"line_number":79,"context_line":"        raise exception.InvalidInput(reason\u003dmsg)"},{"line_number":80,"context_line":"    return dc_path, ds_name, file_path"}],"source_content_type":"text/x-python","patch_set":11,"id":"AAAAUH%2F%2BcWQ%3D","line":77,"updated":"2014-01-26 10:59:49.000000000","message":"ditto","commit_id":"82aa284243ade5583c49068699aed901ada68f56"},{"author":{"_account_id":1653,"name":"garyk","email":"gkotton@vmware.com","username":"garyk"},"change_message_id":"b82bfb691e8d88ab5019b4a17b020e2a5f9ff24b","unresolved":false,"context_lines":[{"line_number":86,"context_line":"        applicable_drivers \u003d [vmwareapi.VMwareESXDriver,"},{"line_number":87,"context_line":"                              vmwareapi.VMwareVCDriver]"},{"line_number":88,"context_line":"        if driver is None or type(driver) not in applicable_drivers:"},{"line_number":89,"context_line":"            msg \u003d (_(\"Can\u0027t handle images of driver: %s\") % driver)"},{"line_number":90,"context_line":"            LOG.warn(msg)"},{"line_number":91,"context_line":"            raise Exception(msg)"},{"line_number":92,"context_line":"        super(CopyImageHandler, self).__init__(driver, *args, **kwargs)"}],"source_content_type":"text/x-python","patch_set":11,"id":"AAAAUH%2F%2BcWM%3D","line":89,"updated":"2014-01-26 10:59:49.000000000","message":"minor nit - you do not need the extra ( and )","commit_id":"82aa284243ade5583c49068699aed901ada68f56"},{"author":{"_account_id":1653,"name":"garyk","email":"gkotton@vmware.com","username":"garyk"},"change_message_id":"b82bfb691e8d88ab5019b4a17b020e2a5f9ff24b","unresolved":false,"context_lines":[{"line_number":105,"context_line":"        # Sanity check"},{"line_number":106,"context_line":"        session \u003d kwargs.get(\u0027session\u0027)"},{"line_number":107,"context_line":"        if session is None:"},{"line_number":108,"context_line":"            LOG.error(_(\"Cannot fetch image %s with null session\") % image_id)"},{"line_number":109,"context_line":"            return"},{"line_number":110,"context_line":"        cache_folder \u003d kwargs.get(\u0027cache_folder\u0027)"},{"line_number":111,"context_line":"        if cache_folder is None:"}],"source_content_type":"text/x-python","patch_set":11,"id":"AAAAUH%2F%2BcWI%3D","line":108,"updated":"2014-01-26 10:59:49.000000000","message":"please use  a , instead of %","commit_id":"82aa284243ade5583c49068699aed901ada68f56"},{"author":{"_account_id":1653,"name":"garyk","email":"gkotton@vmware.com","username":"garyk"},"change_message_id":"b82bfb691e8d88ab5019b4a17b020e2a5f9ff24b","unresolved":false,"context_lines":[{"line_number":109,"context_line":"            return"},{"line_number":110,"context_line":"        cache_folder \u003d kwargs.get(\u0027cache_folder\u0027)"},{"line_number":111,"context_line":"        if cache_folder is None:"},{"line_number":112,"context_line":"            LOG.error(_(\"Cannot fetch image %s with null cache folder\")"},{"line_number":113,"context_line":"                      % image_id)"},{"line_number":114,"context_line":"            return"},{"line_number":115,"context_line":"        cached_fname \u003d kwargs.get(\u0027cached_fname\u0027)"}],"source_content_type":"text/x-python","patch_set":11,"id":"AAAAUH%2F%2BcWE%3D","line":112,"updated":"2014-01-26 10:59:49.000000000","message":"ditto","commit_id":"82aa284243ade5583c49068699aed901ada68f56"},{"author":{"_account_id":1653,"name":"garyk","email":"gkotton@vmware.com","username":"garyk"},"change_message_id":"b82bfb691e8d88ab5019b4a17b020e2a5f9ff24b","unresolved":false,"context_lines":[{"line_number":114,"context_line":"            return"},{"line_number":115,"context_line":"        cached_fname \u003d kwargs.get(\u0027cached_fname\u0027)"},{"line_number":116,"context_line":"        if cached_fname is None:"},{"line_number":117,"context_line":"            LOG.error(_(\"Cannot fetch image % with null cache filename\")"},{"line_number":118,"context_line":"                      % image_id)"},{"line_number":119,"context_line":"            return"},{"line_number":120,"context_line":"        dst_dc_path \u003d kwargs.get(\"datacenter_name\")"}],"source_content_type":"text/x-python","patch_set":11,"id":"AAAAUH%2F%2BcWA%3D","line":117,"updated":"2014-01-26 10:59:49.000000000","message":"ditto","commit_id":"82aa284243ade5583c49068699aed901ada68f56"},{"author":{"_account_id":1653,"name":"garyk","email":"gkotton@vmware.com","username":"garyk"},"change_message_id":"b82bfb691e8d88ab5019b4a17b020e2a5f9ff24b","unresolved":false,"context_lines":[{"line_number":119,"context_line":"            return"},{"line_number":120,"context_line":"        dst_dc_path \u003d kwargs.get(\"datacenter_name\")"},{"line_number":121,"context_line":"        if dst_dc_path is None:"},{"line_number":122,"context_line":"            LOG.error(_(\"Cannot fetch image %s with null datacenter path\") %"},{"line_number":123,"context_line":"                      image_id)"},{"line_number":124,"context_line":"            return"},{"line_number":125,"context_line":"        dst_ds_name \u003d kwargs.get(\u0027datastore_name\u0027)"}],"source_content_type":"text/x-python","patch_set":11,"id":"AAAAUH%2F%2BcV8%3D","line":122,"updated":"2014-01-26 10:59:49.000000000","message":"ditto","commit_id":"82aa284243ade5583c49068699aed901ada68f56"},{"author":{"_account_id":1653,"name":"garyk","email":"gkotton@vmware.com","username":"garyk"},"change_message_id":"b82bfb691e8d88ab5019b4a17b020e2a5f9ff24b","unresolved":false,"context_lines":[{"line_number":124,"context_line":"            return"},{"line_number":125,"context_line":"        dst_ds_name \u003d kwargs.get(\u0027datastore_name\u0027)"},{"line_number":126,"context_line":"        if dst_ds_name is None:"},{"line_number":127,"context_line":"            LOG.error(_(\"Cannot fetch image %s with null datastore name\") %"},{"line_number":128,"context_line":"                      image_id)"},{"line_number":129,"context_line":"            return"},{"line_number":130,"context_line":"        disk_type \u003d kwargs.get(\u0027disk_type\u0027)"}],"source_content_type":"text/x-python","patch_set":11,"id":"AAAAUH%2F%2BcV4%3D","line":127,"updated":"2014-01-26 10:59:49.000000000","message":"ditto","commit_id":"82aa284243ade5583c49068699aed901ada68f56"},{"author":{"_account_id":1653,"name":"garyk","email":"gkotton@vmware.com","username":"garyk"},"change_message_id":"b82bfb691e8d88ab5019b4a17b020e2a5f9ff24b","unresolved":false,"context_lines":[{"line_number":129,"context_line":"            return"},{"line_number":130,"context_line":"        disk_type \u003d kwargs.get(\u0027disk_type\u0027)"},{"line_number":131,"context_line":"        if disk_type is None:"},{"line_number":132,"context_line":"            LOG.error(_(\"Cannot fetch image %s with null disk type\")"},{"line_number":133,"context_line":"                      % disk_type)"},{"line_number":134,"context_line":"            return"},{"line_number":135,"context_line":"        vmdk_file_size_in_kb \u003d kwargs.get(\u0027vmdk_file_size_in_kb\u0027)"}],"source_content_type":"text/x-python","patch_set":11,"id":"AAAAUH%2F%2BcV0%3D","line":132,"updated":"2014-01-26 10:59:49.000000000","message":"ditto","commit_id":"82aa284243ade5583c49068699aed901ada68f56"},{"author":{"_account_id":1653,"name":"garyk","email":"gkotton@vmware.com","username":"garyk"},"change_message_id":"b82bfb691e8d88ab5019b4a17b020e2a5f9ff24b","unresolved":false,"context_lines":[{"line_number":134,"context_line":"            return"},{"line_number":135,"context_line":"        vmdk_file_size_in_kb \u003d kwargs.get(\u0027vmdk_file_size_in_kb\u0027)"},{"line_number":136,"context_line":"        if vmdk_file_size_in_kb is None:"},{"line_number":137,"context_line":"            LOG.error(_(\u0027Cannot fetch image %s with null file size\u0027)"},{"line_number":138,"context_line":"                      % image_id)"},{"line_number":139,"context_line":"            return"},{"line_number":140,"context_line":"        adapter_type \u003d kwargs.get(\u0027adapter_type\u0027)"}],"source_content_type":"text/x-python","patch_set":11,"id":"AAAAUH%2F%2BcVw%3D","line":137,"updated":"2014-01-26 10:59:49.000000000","message":"ditto","commit_id":"82aa284243ade5583c49068699aed901ada68f56"},{"author":{"_account_id":1653,"name":"garyk","email":"gkotton@vmware.com","username":"garyk"},"change_message_id":"b82bfb691e8d88ab5019b4a17b020e2a5f9ff24b","unresolved":false,"context_lines":[{"line_number":139,"context_line":"            return"},{"line_number":140,"context_line":"        adapter_type \u003d kwargs.get(\u0027adapter_type\u0027)"},{"line_number":141,"context_line":"        if adapter_type is None:"},{"line_number":142,"context_line":"            LOG.error(_(\u0027Cannot fetch image %s with null adapter type\u0027)"},{"line_number":143,"context_line":"                      % image_id)"},{"line_number":144,"context_line":"            return"},{"line_number":145,"context_line":"        thin_copy \u003d kwargs.get(\u0027thin_copy\u0027)"}],"source_content_type":"text/x-python","patch_set":11,"id":"AAAAUH%2F%2BcVs%3D","line":142,"updated":"2014-01-26 10:59:49.000000000","message":"ditto","commit_id":"82aa284243ade5583c49068699aed901ada68f56"},{"author":{"_account_id":1653,"name":"garyk","email":"gkotton@vmware.com","username":"garyk"},"change_message_id":"b82bfb691e8d88ab5019b4a17b020e2a5f9ff24b","unresolved":false,"context_lines":[{"line_number":144,"context_line":"            return"},{"line_number":145,"context_line":"        thin_copy \u003d kwargs.get(\u0027thin_copy\u0027)"},{"line_number":146,"context_line":"        if thin_copy is None:"},{"line_number":147,"context_line":"            LOG.error(_(\u0027Cannot fetch image %s with null thin copy flag\u0027)"},{"line_number":148,"context_line":"                      % image_id)"},{"line_number":149,"context_line":"            return"},{"line_number":150,"context_line":""}],"source_content_type":"text/x-python","patch_set":11,"id":"AAAAUH%2F%2BcVo%3D","line":147,"updated":"2014-01-26 10:59:49.000000000","message":"ditto","commit_id":"82aa284243ade5583c49068699aed901ada68f56"},{"author":{"_account_id":1653,"name":"garyk","email":"gkotton@vmware.com","username":"garyk"},"change_message_id":"b82bfb691e8d88ab5019b4a17b020e2a5f9ff24b","unresolved":false,"context_lines":[{"line_number":154,"context_line":"                _parse_location_info(location.get(\u0027url\u0027)))"},{"line_number":155,"context_line":"        except Exception:"},{"line_number":156,"context_line":"            LOG.error(_(\"Unable parse location url %(url)s for \""},{"line_number":157,"context_line":"                        \"image %(image)s\") % {\u0027url\u0027: location.get(\u0027url\u0027),"},{"line_number":158,"context_line":"                                              \u0027image\u0027: image_id})"},{"line_number":159,"context_line":"            return"},{"line_number":160,"context_line":"        if src_dc_path is None or src_ds_name is None or src_file_path is None:"}],"source_content_type":"text/x-python","patch_set":11,"id":"AAAAUH%2F%2BcVk%3D","line":157,"updated":"2014-01-26 10:59:49.000000000","message":"ditto","commit_id":"82aa284243ade5583c49068699aed901ada68f56"},{"author":{"_account_id":1653,"name":"garyk","email":"gkotton@vmware.com","username":"garyk"},"change_message_id":"b82bfb691e8d88ab5019b4a17b020e2a5f9ff24b","unresolved":false,"context_lines":[{"line_number":160,"context_line":"        if src_dc_path is None or src_ds_name is None or src_file_path is None:"},{"line_number":161,"context_line":"            LOG.error(_(\"Cannot fetch image %(image)s with datacenter \""},{"line_number":162,"context_line":"                        \"%(dc_path)s, datastore %(ds_name)s and file location \""},{"line_number":163,"context_line":"                        \"%(file)s\") % {\u0027image\u0027: image_id,"},{"line_number":164,"context_line":"                                       \u0027dc_path\u0027: src_dc_path,"},{"line_number":165,"context_line":"                                       \u0027ds_name\u0027: src_ds_name,"},{"line_number":166,"context_line":"                                       \u0027file\u0027: src_file_path})"}],"source_content_type":"text/x-python","patch_set":11,"id":"AAAAUH%2F%2BcVg%3D","line":163,"updated":"2014-01-26 10:59:49.000000000","message":"ditto","commit_id":"82aa284243ade5583c49068699aed901ada68f56"},{"author":{"_account_id":1653,"name":"garyk","email":"gkotton@vmware.com","username":"garyk"},"change_message_id":"b82bfb691e8d88ab5019b4a17b020e2a5f9ff24b","unresolved":false,"context_lines":[{"line_number":191,"context_line":"        cache_ds_dir \u003d \u0027[%s] %s/%s\u0027 % (dst_ds_name, cache_folder, image_id)"},{"line_number":192,"context_line":"        cache_file_ds_path \u003d \u0027%s/%s\u0027 % (cache_ds_dir, cached_fname)"},{"line_number":193,"context_line":""},{"line_number":194,"context_line":"        session._call_method(session._get_vim(),"},{"line_number":195,"context_line":"                             \"MakeDirectory\","},{"line_number":196,"context_line":"                             service_content.fileManager,"},{"line_number":197,"context_line":"                             name\u003dcache_ds_dir,"}],"source_content_type":"text/x-python","patch_set":11,"id":"AAAAUH%2F%2BcUw%3D","line":194,"updated":"2014-01-26 10:59:49.000000000","message":"Can you please look at https://review.openstack.org/#/c/65306/. This may require us to check that the directory does not already exist","commit_id":"82aa284243ade5583c49068699aed901ada68f56"},{"author":{"_account_id":1653,"name":"garyk","email":"gkotton@vmware.com","username":"garyk"},"change_message_id":"b82bfb691e8d88ab5019b4a17b020e2a5f9ff24b","unresolved":false,"context_lines":[{"line_number":214,"context_line":"                name\u003ddescriptor_ds_path,"},{"line_number":215,"context_line":"                datacenter\u003ddst_moref,"},{"line_number":216,"context_line":"                spec\u003dvmdk_create_spec)"},{"line_number":217,"context_line":"            session._wait_for_task(None, vmdk_create_task)"},{"line_number":218,"context_line":""},{"line_number":219,"context_line":"            file_delete_task \u003d session._call_method("},{"line_number":220,"context_line":"                session._get_vim(),"}],"source_content_type":"text/x-python","patch_set":11,"id":"AAAAUH%2F%2BcT0%3D","line":217,"updated":"2014-01-26 10:59:49.000000000","message":"None - this should be a UUID","commit_id":"82aa284243ade5583c49068699aed901ada68f56"},{"author":{"_account_id":1653,"name":"garyk","email":"gkotton@vmware.com","username":"garyk"},"change_message_id":"b82bfb691e8d88ab5019b4a17b020e2a5f9ff24b","unresolved":false,"context_lines":[{"line_number":222,"context_line":"                service_content.fileManager,"},{"line_number":223,"context_line":"                name\u003dcache_file_ds_path,"},{"line_number":224,"context_line":"                datacenter\u003ddst_moref)"},{"line_number":225,"context_line":"            session._wait_for_task(None, file_delete_task)"},{"line_number":226,"context_line":""},{"line_number":227,"context_line":"        # Copy the image to the cache directory"},{"line_number":228,"context_line":"        copy_task \u003d session._call_method("}],"source_content_type":"text/x-python","patch_set":11,"id":"AAAAUH%2F%2BcTw%3D","line":225,"updated":"2014-01-26 10:59:49.000000000","message":"ditto","commit_id":"82aa284243ade5583c49068699aed901ada68f56"},{"author":{"_account_id":1653,"name":"garyk","email":"gkotton@vmware.com","username":"garyk"},"change_message_id":"b82bfb691e8d88ab5019b4a17b020e2a5f9ff24b","unresolved":false,"context_lines":[{"line_number":238,"context_line":"            session._wait_for_task(None, copy_task)"},{"line_number":239,"context_line":"        except Exception as exc:"},{"line_number":240,"context_line":"            LOG.warn(_(\"Failed to move image %(image)s: %(exc)s\") %"},{"line_number":241,"context_line":"                     {\u0027image\u0027: image_id, \u0027exc\u0027: exc})"},{"line_number":242,"context_line":"        LOG.debug(_(\"Fetched image %s from glance image server\"), image_id)"},{"line_number":243,"context_line":"        return cache_file_ds_path"},{"line_number":244,"context_line":""}],"source_content_type":"text/x-python","patch_set":11,"id":"AAAAUH%2F%2BcUk%3D","line":241,"updated":"2014-01-26 10:59:49.000000000","message":"Should this be \"Failed to copy...\"?\nDo we want to continue if the operation has failed here?","commit_id":"82aa284243ade5583c49068699aed901ada68f56"}],"nova/virt/vmwareapi/imagehandler/download.py":[{"author":{"_account_id":1653,"name":"garyk","email":"gkotton@vmware.com","username":"garyk"},"change_message_id":"b82bfb691e8d88ab5019b4a17b020e2a5f9ff24b","unresolved":false,"context_lines":[{"line_number":52,"context_line":""},{"line_number":53,"context_line":"        session \u003d kwargs.get(\u0027session\u0027)"},{"line_number":54,"context_line":"        if session is None:"},{"line_number":55,"context_line":"            LOG.error(_(\"Cannot fetch image %s with null session\") % image_id)"},{"line_number":56,"context_line":"            return"},{"line_number":57,"context_line":"        dst_dc_path \u003d kwargs.get(\"datacenter_name\")"},{"line_number":58,"context_line":"        if dst_dc_path is None:"}],"source_content_type":"text/x-python","patch_set":11,"id":"AAAAUH%2F%2BcUg%3D","line":55,"updated":"2014-01-26 10:59:49.000000000","message":"please use , instead of %","commit_id":"82aa284243ade5583c49068699aed901ada68f56"},{"author":{"_account_id":1653,"name":"garyk","email":"gkotton@vmware.com","username":"garyk"},"change_message_id":"b82bfb691e8d88ab5019b4a17b020e2a5f9ff24b","unresolved":false,"context_lines":[{"line_number":56,"context_line":"            return"},{"line_number":57,"context_line":"        dst_dc_path \u003d kwargs.get(\"datacenter_name\")"},{"line_number":58,"context_line":"        if dst_dc_path is None:"},{"line_number":59,"context_line":"            LOG.error(_(\"Cannot fetch image %s with null datacenter path\") %"},{"line_number":60,"context_line":"                      image_id)"},{"line_number":61,"context_line":"            return"},{"line_number":62,"context_line":"        dst_ds_name \u003d kwargs.get(\u0027datastore_name\u0027)"}],"source_content_type":"text/x-python","patch_set":11,"id":"AAAAUH%2F%2BcUc%3D","line":59,"updated":"2014-01-26 10:59:49.000000000","message":"ditto","commit_id":"82aa284243ade5583c49068699aed901ada68f56"},{"author":{"_account_id":1653,"name":"garyk","email":"gkotton@vmware.com","username":"garyk"},"change_message_id":"b82bfb691e8d88ab5019b4a17b020e2a5f9ff24b","unresolved":false,"context_lines":[{"line_number":61,"context_line":"            return"},{"line_number":62,"context_line":"        dst_ds_name \u003d kwargs.get(\u0027datastore_name\u0027)"},{"line_number":63,"context_line":"        if dst_ds_name is None:"},{"line_number":64,"context_line":"            LOG.error(_(\"Cannot fetch image %s with null datastore name\") %"},{"line_number":65,"context_line":"                      image_id)"},{"line_number":66,"context_line":"            return"},{"line_number":67,"context_line":"        disk_type \u003d kwargs.get(\u0027disk_type\u0027)"}],"source_content_type":"text/x-python","patch_set":11,"id":"AAAAUH%2F%2BcUY%3D","line":64,"updated":"2014-01-26 10:59:49.000000000","message":"ditto","commit_id":"82aa284243ade5583c49068699aed901ada68f56"},{"author":{"_account_id":1653,"name":"garyk","email":"gkotton@vmware.com","username":"garyk"},"change_message_id":"b82bfb691e8d88ab5019b4a17b020e2a5f9ff24b","unresolved":false,"context_lines":[{"line_number":67,"context_line":"        disk_type \u003d kwargs.get(\u0027disk_type\u0027)"},{"line_number":68,"context_line":"        if disk_type is None:"},{"line_number":69,"context_line":"            LOG.error(_(\"Cannot fetch image %s with null disk type\")"},{"line_number":70,"context_line":"                      % disk_type)"},{"line_number":71,"context_line":"            return"},{"line_number":72,"context_line":"        vmdk_file_size_in_kb \u003d kwargs.get(\u0027vmdk_file_size_in_kb\u0027)"},{"line_number":73,"context_line":"        if vmdk_file_size_in_kb is None:"}],"source_content_type":"text/x-python","patch_set":11,"id":"AAAAUH%2F%2BcUQ%3D","line":70,"updated":"2014-01-26 10:59:49.000000000","message":"ditto","commit_id":"82aa284243ade5583c49068699aed901ada68f56"},{"author":{"_account_id":1653,"name":"garyk","email":"gkotton@vmware.com","username":"garyk"},"change_message_id":"b82bfb691e8d88ab5019b4a17b020e2a5f9ff24b","unresolved":false,"context_lines":[{"line_number":72,"context_line":"        vmdk_file_size_in_kb \u003d kwargs.get(\u0027vmdk_file_size_in_kb\u0027)"},{"line_number":73,"context_line":"        if vmdk_file_size_in_kb is None:"},{"line_number":74,"context_line":"            LOG.error(_(\u0027Cannot fetch image %s with null file size\u0027)"},{"line_number":75,"context_line":"                      % image_id)"},{"line_number":76,"context_line":"            return"},{"line_number":77,"context_line":"        adapter_type \u003d kwargs.get(\u0027adapter_type\u0027)"},{"line_number":78,"context_line":"        if adapter_type is None:"}],"source_content_type":"text/x-python","patch_set":11,"id":"AAAAUH%2F%2BcUM%3D","line":75,"updated":"2014-01-26 10:59:49.000000000","message":"ditto","commit_id":"82aa284243ade5583c49068699aed901ada68f56"},{"author":{"_account_id":1653,"name":"garyk","email":"gkotton@vmware.com","username":"garyk"},"change_message_id":"b82bfb691e8d88ab5019b4a17b020e2a5f9ff24b","unresolved":false,"context_lines":[{"line_number":77,"context_line":"        adapter_type \u003d kwargs.get(\u0027adapter_type\u0027)"},{"line_number":78,"context_line":"        if adapter_type is None:"},{"line_number":79,"context_line":"            LOG.error(_(\u0027Cannot fetch image %s with null adapter type\u0027)"},{"line_number":80,"context_line":"                      % image_id)"},{"line_number":81,"context_line":"            return"},{"line_number":82,"context_line":""},{"line_number":83,"context_line":"        if disk_type !\u003d \"sparse\":"}],"source_content_type":"text/x-python","patch_set":11,"id":"AAAAUH%2F%2BcUI%3D","line":80,"updated":"2014-01-26 10:59:49.000000000","message":"ditto","commit_id":"82aa284243ade5583c49068699aed901ada68f56"},{"author":{"_account_id":1653,"name":"garyk","email":"gkotton@vmware.com","username":"garyk"},"change_message_id":"b82bfb691e8d88ab5019b4a17b020e2a5f9ff24b","unresolved":false,"context_lines":[{"line_number":99,"context_line":"            if dst_moref is None:"},{"line_number":100,"context_line":"                LOG.error(_(\"Unable to find the moref for datacenter %s\"),"},{"line_number":101,"context_line":"                          dst_dc_path)"},{"line_number":102,"context_line":"                return"},{"line_number":103,"context_line":""},{"line_number":104,"context_line":"            # Create directory for the image in the temp directory"},{"line_number":105,"context_line":"            folder \u003d \u0027[%s] %s\u0027 % (dst_ds_name, path.rsplit(\u0027/\u0027, 1)[0])"}],"source_content_type":"text/x-python","patch_set":11,"id":"AAAAUH%2F%2BcUA%3D","line":102,"updated":"2014-01-26 10:59:49.000000000","message":"do we need to raise an exception here?","commit_id":"82aa284243ade5583c49068699aed901ada68f56"},{"author":{"_account_id":1653,"name":"garyk","email":"gkotton@vmware.com","username":"garyk"},"change_message_id":"b82bfb691e8d88ab5019b4a17b020e2a5f9ff24b","unresolved":false,"context_lines":[{"line_number":117,"context_line":"                name\u003ddescriptor_ds_path,"},{"line_number":118,"context_line":"                datacenter\u003ddst_moref,"},{"line_number":119,"context_line":"                spec\u003dvmdk_create_spec)"},{"line_number":120,"context_line":"            session._wait_for_task(None, vmdk_create_task)"},{"line_number":121,"context_line":""},{"line_number":122,"context_line":"            file_delete_task \u003d session._call_method("},{"line_number":123,"context_line":"                session._get_vim(),"}],"source_content_type":"text/x-python","patch_set":11,"id":"AAAAUH%2F%2BcT8%3D","line":120,"updated":"2014-01-26 10:59:49.000000000","message":"None - I think that this should be a UUID.","commit_id":"82aa284243ade5583c49068699aed901ada68f56"},{"author":{"_account_id":1653,"name":"garyk","email":"gkotton@vmware.com","username":"garyk"},"change_message_id":"b82bfb691e8d88ab5019b4a17b020e2a5f9ff24b","unresolved":false,"context_lines":[{"line_number":125,"context_line":"                service_content.fileManager,"},{"line_number":126,"context_line":"                name\u003dvmdk_ds_path,"},{"line_number":127,"context_line":"                datacenter\u003ddst_moref)"},{"line_number":128,"context_line":"            session._wait_for_task(None, file_delete_task)"},{"line_number":129,"context_line":""},{"line_number":130,"context_line":"        (image_service, image_id) \u003d glance.get_remote_image_service(context,"},{"line_number":131,"context_line":"                                                                    image_id)"}],"source_content_type":"text/x-python","patch_set":11,"id":"AAAAUH%2F%2BcT4%3D","line":128,"updated":"2014-01-26 10:59:49.000000000","message":"ditto","commit_id":"82aa284243ade5583c49068699aed901ada68f56"},{"author":{"_account_id":6549,"name":"Zhi Yan Liu","email":"lzy.dev@gmail.com","username":"lzy-dev"},"change_message_id":"dde64793b4903a197325030fbd547ba8b620a313","unresolved":false,"context_lines":[{"line_number":56,"context_line":"            read_file_handle \u003d read_write_util.GlanceFileRead(read_iter)"},{"line_number":57,"context_line":"            write_file_handle \u003d read_write_util.VMwareHTTPWriteFile("},{"line_number":58,"context_line":"                kwargs.get(\"host\"),"},{"line_number":59,"context_line":"                kwargs.get(\"datacenter_name\"),"},{"line_number":60,"context_line":"                kwargs.get(\"datastore_name\"),"},{"line_number":61,"context_line":"                kwargs.get(\"cookies\"),"},{"line_number":62,"context_line":"                path,"}],"source_content_type":"text/x-python","patch_set":28,"id":"AAAAVn%2F%2FJBc%3D","line":59,"updated":"2014-03-08 08:50:45.000000000","message":"do this in base change pls: https://review.openstack.org/#/c/63975/44/nova/virt/vmwareapi/imagehandler/download.py","commit_id":"0a8cdde641ebe21483164538e67586c0fefaa69c"}],"nova/virt/vmwareapi/vmops.py":[{"author":{"_account_id":1653,"name":"garyk","email":"gkotton@vmware.com","username":"garyk"},"change_message_id":"b82bfb691e8d88ab5019b4a17b020e2a5f9ff24b","unresolved":false,"context_lines":[{"line_number":418,"context_line":"                         \u0027upload_vmdk_name\u0027: vmdk_path,"},{"line_number":419,"context_line":"                         \u0027data_store_name\u0027: data_store_name},"},{"line_number":420,"context_line":"                      instance\u003dinstance)"},{"line_number":421,"context_line":"            return image_path"},{"line_number":422,"context_line":""},{"line_number":423,"context_line":"        def _copy_virtual_disk(source, dest):"},{"line_number":424,"context_line":"            \"\"\"Copy a sparse virtual disk to a thin virtual disk.\"\"\""}],"source_content_type":"text/x-python","patch_set":11,"id":"AAAAUH%2F%2BcVE%3D","line":421,"updated":"2014-01-26 10:59:49.000000000","message":"if image_path is None do we want to continue or should we raise an exception here","commit_id":"82aa284243ade5583c49068699aed901ada68f56"},{"author":{"_account_id":1653,"name":"garyk","email":"gkotton@vmware.com","username":"garyk"},"change_message_id":"b82bfb691e8d88ab5019b4a17b020e2a5f9ff24b","unresolved":false,"context_lines":[{"line_number":512,"context_line":"                    # It needs to move to the cache dir."},{"line_number":513,"context_line":"                    base_folder \u003d \u0027%s/%s\u0027 % (self._base_folder, upload_name)"},{"line_number":514,"context_line":"                    _move_image_to_cache_folder(tmp_upload_folder, base_folder)"},{"line_number":515,"context_line":"                    # self._delete_datastore_file(instance,"},{"line_number":516,"context_line":"                    #                             vm_util.build_datastore_path("},{"line_number":517,"context_line":"                    #                                 data_store_name,"},{"line_number":518,"context_line":"                    #                                 tmp_upload_folder),"}],"source_content_type":"text/x-python","patch_set":11,"id":"AAAAUH%2F%2BcU8%3D","line":515,"updated":"2014-01-26 10:59:49.000000000","message":"you can delete the commented out code","commit_id":"82aa284243ade5583c49068699aed901ada68f56"}]}
