Change in vdsm[master]: v2v: support for importing Xen VMs via libvirt on RHEL hosts
shavivi at redhat.com
shavivi at redhat.com
Tue Dec 1 09:54:39 UTC 2015
Shahar Havivi has uploaded a new change for review.
Change subject: v2v: support for importing Xen VMs via libvirt on RHEL hosts
......................................................................
v2v: support for importing Xen VMs via libvirt on RHEL hosts
Adding support for import Xen virtual machines that are running on RHEL
via libvirt.
Change-Id: If544c0247003b6bc7189f72130553b9402dc915d
Signed-off-by: Shahar Havivi <shaharh at redhat.com>
---
M vdsm/v2v.py
1 file changed, 32 insertions(+), 1 deletion(-)
git pull ssh://gerrit.ovirt.org:29418/vdsm refs/changes/05/49505/1
diff --git a/vdsm/v2v.py b/vdsm/v2v.py
index 16644e4..2c6a36c 100644
--- a/vdsm/v2v.py
+++ b/vdsm/v2v.py
@@ -52,6 +52,10 @@
_V2V_DIR = os.path.join(P_VDSM_RUN, 'v2v')
_VIRT_V2V = CommandPath('virt-v2v', '/usr/bin/virt-v2v')
+_SSH_AGENT = CommandPath('ssh-agent', '/usr/bin/ssh-agent')
+_SSH_ADD = CommandPath('ssh-add', '/usr/bin/ssh-add')
+_XEN_SSH_PROTOCOL = 'xen+ssh'
+_SSH_AUTH_RE = '(SSH_AUTH_SOCK)=([^;]+).*'
_OVF_RESOURCE_CPU = 3
_OVF_RESOURCE_MEMORY = 4
_OVF_RESOURCE_NETWORK = 10
@@ -311,7 +315,6 @@
'''
do not use directly, use a factory method instead!
'''
- self._thread = None
self._vminfo = vminfo
self._id = job_id
self._irs = irs
@@ -323,6 +326,7 @@
self._current_disk = 1
self._aborted = False
self._prepared_volumes = []
+ self._ssh_auth_re = re.compile(_SSH_AUTH_RE)
self._uri = None
self._username = None
@@ -434,10 +438,36 @@
self._status = STATUS.DONE
logging.info('Job %r finished import successfully', self._id)
+ def _init_ssh_agent(self):
+ proc = execCmd([_SSH_AGENT.cmd], sync=False,
+ deathSignal=signal.SIGTERM, nice=NICENESS.HIGH,
+ ioclass=IOCLASS.IDLE)
+ proc.blocking = True
+ if proc.returncode is not None:
+ err = proc.stderr.read(1024)
+ raise V2VError('Error init ssh-agent, exit code: %r, msg: %s' %
+ proc.returncode, err)
+
+ m = self._ssh_auth_re.match(proc.stdout.read(1024))
+ # looking for: SSH_AUTH_SOCK=/tmp/ssh-VEE74ObhTWBT/agent.29917
+ env = {m.group(1): m.group(2)}
+
+ proc = execCmd([_SSH_ADD.cmd], sync=False, deathSignal=signal.SIGTERM,
+ nice=NICENESS.HIGH, ioclass=IOCLASS.IDLE, env=env)
+
+ if proc.returncode is not None:
+ err = proc.stderr.read(1024)
+ raise V2VError('Error init ssh-add, exit code: %r, msg: %s' %
+ proc.returncode, err)
+ return env
+
def _execution_environments(self):
env = {'LIBGUESTFS_BACKEND': 'direct'}
if 'virtio_iso_path' in self._vminfo:
env['VIRTIO_WIN'] = self._vminfo['virtio_iso_path']
+
+ if (self._uri.startswith(_XEN_SSH_PROTOCOL)):
+ env.update(self._init_ssh_agent())
return env
def _wait_for_process(self):
@@ -728,6 +758,7 @@
_, capacity, alloc = vol.info()
except libvirt.libvirtError:
logging.exception("Error getting disk size")
+
else:
disk['capacity'] = str(capacity)
disk['allocation'] = str(alloc)
--
To view, visit https://gerrit.ovirt.org/49505
To unsubscribe, visit https://gerrit.ovirt.org/settings
Gerrit-MessageType: newchange
Gerrit-Change-Id: If544c0247003b6bc7189f72130553b9402dc915d
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