Change in vdsm[master]: v2v: add mount windows iso drivers
shavivi at redhat.com
shavivi at redhat.com
Wed Jun 10 08:06:02 UTC 2015
Shahar Havivi has uploaded a new change for review.
Change subject: v2v: add mount windows iso drivers
......................................................................
v2v: add mount windows iso drivers
virt-v2v expect proprietary Windows drivers that is raise in
/usr/share/virtio-win.
We will enable user to set this drivers in iso domain and will mount
them to this location via this new verb.
Change-Id: I6d4d19a63dcf338f8d48f8e757d6a35ef92d6d54
Signed-off-by: Shahar Havivi <shaharh at redhat.com>
---
M vdsm/API.py
M vdsm/rpc/bindingxmlrpc.py
M vdsm/rpc/vdsmapi-schema.json
M vdsm/v2v.py
4 files changed, 39 insertions(+), 1 deletion(-)
git pull ssh://gerrit.ovirt.org:29418/vdsm refs/changes/28/42128/1
diff --git a/vdsm/API.py b/vdsm/API.py
index 80586c7..4e1018b 100644
--- a/vdsm/API.py
+++ b/vdsm/API.py
@@ -1400,6 +1400,9 @@
return v2v.convert_external_vm(uri, username, password, vminfo, jobid,
self._cif.irs)
+ def mountV2VWindowsDrivers(self, iso_path, umount=False):
+ return v2v.mount_windows_drivers(iso_path, umount)
+
def getConvertedVm(self, jobid):
return v2v.get_converted_vm(jobid)
diff --git a/vdsm/rpc/bindingxmlrpc.py b/vdsm/rpc/bindingxmlrpc.py
index 6bb7082..9ad75cb 100644
--- a/vdsm/rpc/bindingxmlrpc.py
+++ b/vdsm/rpc/bindingxmlrpc.py
@@ -373,6 +373,10 @@
api = API.Global()
return api.convertExternalVm(uri, username, password, vminfo, jobid)
+ def mountV2VWindowsDrivers(self, iso_path, umount=False):
+ api = API.Global()
+ return api.mountV2VWindowsDrivers(iso_path, umount)
+
def getConvertedVm(self, jobid):
api = API.Global()
return api.getConvertedVm(jobid)
@@ -1059,7 +1063,8 @@
(self.convertExternalVm, 'convertExternalVm'),
(self.getConvertedVm, 'getConvertedVm'),
(self.abortV2VJob, 'abortV2VJob'),
- (self.deleteV2VJob, 'deleteV2VJob'))
+ (self.deleteV2VJob, 'deleteV2VJob'),
+ (self.mountV2VWindowsDrivers, 'mountV2VWindowsDrivers'))
def getIrsMethods(self):
return ((self.domainActivate, 'activateStorageDomain'),
diff --git a/vdsm/rpc/vdsmapi-schema.json b/vdsm/rpc/vdsmapi-schema.json
index 53d3b1b..2194a2b 100644
--- a/vdsm/rpc/vdsmapi-schema.json
+++ b/vdsm/rpc/vdsmapi-schema.json
@@ -3898,6 +3898,21 @@
'data': {'jobid': 'UUID'}}
##
+# @Host.mountV2VWindowsDrivers:
+#
+# mount windows iso file that contains Windows drivers for proper virt-v2v
+# Windows conversion
+#
+# @iso_path: full path to windows drivers iso
+#
+# @umount: #optional if true unmount the drivers iso
+#
+# Since: 4.17.0
+##
+{'command': {'class': 'Host', 'name': 'mountV2VWindowsDrivers'},
+ 'data': {'iso_path': 'str', '*umount': 'bool'}}
+
+##
# @VMFullInfo:
#
# Full information about VM.
diff --git a/vdsm/v2v.py b/vdsm/v2v.py
index b6763da..5c44ac5 100644
--- a/vdsm/v2v.py
+++ b/vdsm/v2v.py
@@ -35,6 +35,7 @@
import libvirt
+from storage.mount import Mount, isMounted
from vdsm.constants import P_VDSM_RUN
from vdsm.define import errCode, doneCode
from vdsm import libvirtconnection
@@ -49,6 +50,7 @@
_V2V_DIR = os.path.join(P_VDSM_RUN, 'v2v')
_VIRT_V2V = CommandPath('virt-v2v', '/usr/bin/virt-v2v')
+_WIN_DRIVER_DIR = '/usr/share/virtio-win'
ImportProgress = namedtuple('ImportProgress',
['current_disk', 'disk_count', 'description'])
@@ -177,6 +179,19 @@
return {'status': doneCode, 'ovf': ovf}
+def mount_windows_drivers(iso_path, umount=False):
+ if not os.path.exists(iso_path):
+ raise InvalidInputError('Iso file not exists %s' % iso_path)
+
+ m = Mount(iso_path, _WIN_DRIVER_DIR)
+ if umount:
+ m.umount()
+ elif not isMounted(_WIN_DRIVER_DIR):
+ m.mount(mntOpts='loop')
+
+ return {'status': doneCode}
+
+
def delete_job(job_id):
try:
job = _get_job(job_id)
--
To view, visit https://gerrit.ovirt.org/42128
To unsubscribe, visit https://gerrit.ovirt.org/settings
Gerrit-MessageType: newchange
Gerrit-Change-Id: I6d4d19a63dcf338f8d48f8e757d6a35ef92d6d54
Gerrit-PatchSet: 1
Gerrit-Project: vdsm
Gerrit-Branch: master
Gerrit-Owner: Shahar Havivi <shavivi at redhat.com>
More information about the vdsm-patches
mailing list