----- Original Message -----
> From: "Zhou Zheng Sheng" <zhshzhou(a)linux.vnet.ibm.com>
> To: "engine-devel" <engine-devel(a)ovirt.org>
> Cc: "Itamar Heim" <iheim(a)redhat.com>, "Alon Bar-Lev"
<alonbl(a)redhat.com>
> Sent: Thursday, November 14, 2013 8:57:19 AM
> Subject: Things to be done to support Ubuntu hosts
>
> Hi,
>
> Recently Ubuntu support is added to VDSM, and .deb binray packages can
> be downloaded from
launchpad.net PPA [1]. Most of the key features such
> as storage management and VM lifecycle work on Ubuntu. The cross
> distribution network management patches are upstream as well. One big
> piece left is making ovirt-host-deploy support Ubuntu, so that we can
> manage Ubuntu hosts from Engine, thus close the gap on host side.
>
> In May 2013 I made some hacks to ovirt-host-deploy and otopi. I made it
> skipped parts not supported on Ubuntu and configure the environment
> manually, and successfully added Ubuntu host to Engine [2].
> Unfortunately I have no plans to continue on it, but I'd like to make a
> summary of the things I hacked to help anyone who wants to submit
> patches in future. I was to add a WIKI page but I found there were not
> many items, so a mail would be enough.
>
> 1. Package management operations
> Both otopi and ovirt-host-deploy query for dependency packages and
> install them on demand. The otopi package management just supports yum,
> we need to add apt-get support. Package names are different in Ubuntu,
> so I made a list mapping the names. The list in in VDSM source
> directory, debian/dependencyMap.txt .
Please try putting the following file on host:
/etc/ovirt-host-deploy.conf.d/10-ubuntu.conf
---
ODEPLOY/offlinePackager=bool:True
---
This will replace the disable section of packaging in your patch.
It will make host-deploy not to install any package and assume all is pre-installed.
>
> 2. Network configuration operations
> ovirt-host-deploy asks VDSM's configNetwork.py to create bridge network.
> Cross distribution support patches for configNetwork.py are under
> review. ovirt-host-deploy supports Ubuntu bridge configuration as long
> as they are merged.
This is not happening any more at 3.3, so no need to change anything.
I think that in 3.3 with the above offline packaging use, you can use vanilla
otopi/host-deploy.
Regards,
Alon Bar-Lev
>
> [1]
https://launchpad.net/~zhshzhou/+archive/vdsm-ubuntu
> [2]
http://www.ovirt.org/images/5/57/Shanghai-VDSM-on-Ubuntu.pdf
>
> Here goes the detailed hack patch. The hack was base on v1.0.1, I
> rebased it to the latest master. The rebased patch are not tested. If
> you find this email useless, it's actually a good news, which means
> there is not a lot of work and problems ahead ;-)
>
> Hack patch for ovirt-host-deploy.
>
> From 120493a242046d19794ef3da83b32486d372aa39 Mon Sep 17 00:00:00 2001
> From: Zhou Zheng Sheng <zhshzhou(a)linux.vnet.ibm.com>
> Date: Wed, 13 Nov 2013 18:02:26 +0800
> Subject: [PATCH] Ubuntu Hacks
>
> Change-Id: Ifb4ebc829101c92d06475619b1b5986e87b83d57
> Signed-off-by: Zhou Zheng Sheng <zhshzhou(a)linux.vnet.ibm.com>
> ---
> src/plugins/ovirt-host-deploy/gluster/packages.py | 17 +++++----
> src/plugins/ovirt-host-deploy/tune/tuned.py | 3 +-
> src/plugins/ovirt-host-deploy/vdsm/bridge.py | 45
> ++++++++++++-----------
> src/plugins/ovirt-host-deploy/vdsm/packages.py | 9 +++--
> src/plugins/ovirt-host-deploy/vdsm/pki.py | 3 +-
> src/plugins/ovirt-host-deploy/vdsm/software.py | 2 +
> src/plugins/ovirt-host-deploy/vdsm/vdsmid.py | 3 +-
> 7 files changed, 45 insertions(+), 37 deletions(-)
>
> diff --git a/src/plugins/ovirt-host-deploy/gluster/packages.py
> b/src/plugins/ovirt-host-deploy/gluster/packages.py
> index 1fecfda..eb37744 100644
> --- a/src/plugins/ovirt-host-deploy/gluster/packages.py
> +++ b/src/plugins/ovirt-host-deploy/gluster/packages.py
> @@ -60,13 +60,13 @@ class Plugin(plugin.PluginBase):
> ),
> )
> def _validation(self):
> - if not self.packager.queryPackages(patterns=('vdsm-gluster',)):
> - raise RuntimeError(
> - _(
> - 'Cannot locate gluster packages, '
> - 'possible cause is incorrect channels'
> - )
> - )
> + # if not self.packager.queryPackages(patterns=('vdsm-gluster',)):
> + # raise RuntimeError(
> + # _(
> + # 'Cannot locate gluster packages, '
> + # 'possible cause is incorrect channels'
> + # )
> + # )
> self._enabled = True
>
> @plugin.event(
> @@ -74,7 +74,8 @@ class Plugin(plugin.PluginBase):
> condition=lambda self: self._enabled,
> )
> def _packages(self):
> - self.packager.installUpdate(('vdsm-gluster',))
> + # self.packager.installUpdate(('vdsm-gluster',))
> + pass
>
> @plugin.event(
> stage=plugin.Stages.STAGE_CLOSEUP,
> diff --git a/src/plugins/ovirt-host-deploy/tune/tuned.py
> b/src/plugins/ovirt-host-deploy/tune/tuned.py
> index d8e00c5..d0dcea5 100644
> --- a/src/plugins/ovirt-host-deploy/tune/tuned.py
> +++ b/src/plugins/ovirt-host-deploy/tune/tuned.py
> @@ -70,7 +70,8 @@ class Plugin(plugin.PluginBase):
> condition=lambda self: self._enabled,
> )
> def _packages(self):
> - self.packager.installUpdate(('tuned',))
> + # self.packager.installUpdate(('tuned',))
> + pass
>
> @plugin.event(
> stage=plugin.Stages.STAGE_MISC,
> diff --git a/src/plugins/ovirt-host-deploy/vdsm/bridge.py
> b/src/plugins/ovirt-host-deploy/vdsm/bridge.py
> index 3789d62..64cce40 100644
> --- a/src/plugins/ovirt-host-deploy/vdsm/bridge.py
> +++ b/src/plugins/ovirt-host-deploy/vdsm/bridge.py
> @@ -595,7 +595,8 @@ class Plugin(plugin.PluginBase):
> stage=plugin.Stages.STAGE_INTERNAL_PACKAGES,
> )
> def _internal_packages(self):
> - self.packager.install(packages=('iproute',))
> + # self.packager.install(packages=('iproute',))
> + pass
>
> @plugin.event(
> stage=plugin.Stages.STAGE_VALIDATION,
> @@ -771,27 +772,27 @@ class Plugin(plugin.PluginBase):
> interface = self._getInterfaceToInstallBasedOnDestination(
> address=self.environment[odeploycons.VdsmEnv.ENGINE_ADDRESS]
> )
> - parameters =
> self._rhel_getInterfaceConfigParameters(name=interface)
> -
> - # The followin can be executed
> - # only at node as we won't reach here
> - # if we are not running on node
> - if (
> - self.environment[odeploycons.VdsmEnv.OVIRT_NODE] and
> - self._interfaceIsBridge(name=interface)
> - ):
> - nic = interface.replace('br', '', 1)
> - self._removeBridge(
> - name=interface,
> - interface=nic,
> - )
> - interface = nic
> -
> - self._createBridge(
> -
> name=self.environment[odeploycons.VdsmEnv.MANAGEMENT_BRIDGE_NAME],
> - interface=interface,
> - parameters=parameters,
> - )
> + # parameters =
> self._rhel_getInterfaceConfigParameters(name=interface)
> +
> + # # The followin can be executed
> + # # only at node as we won't reach here
> + # # if we are not running on node
> + # if (
> + # self.environment[odeploycons.VdsmEnv.OVIRT_NODE] and
> + # self._interfaceIsBridge(name=interface)
> + # ):
> + # nic = interface.replace('br', '', 1)
> + # self._removeBridge(
> + # name=interface,
> + # interface=nic,
> + # )
> + # interface = nic
> +
> + # self._createBridge(
> + #
> name=self.environment[odeploycons.VdsmEnv.MANAGEMENT_BRIDGE_NAME],
> + # interface=interface,
> + # parameters=parameters,
> + # )
>
> self._waitForRoute(
> host=(
> diff --git a/src/plugins/ovirt-host-deploy/vdsm/packages.py
> b/src/plugins/ovirt-host-deploy/vdsm/packages.py
> index d819caa..b526d4b 100644
> --- a/src/plugins/ovirt-host-deploy/vdsm/packages.py
> +++ b/src/plugins/ovirt-host-deploy/vdsm/packages.py
> @@ -68,7 +68,8 @@ class Plugin(plugin.PluginBase):
> stage=plugin.Stages.STAGE_VALIDATION,
> )
> def _validation(self):
> - result = self.packager.queryPackages(patterns=('vdsm',))
> + # result = self.packager.queryPackages(patterns=('vdsm',))
> + result = ({'version': '4.10.3', 'release':
'1'},)
> if not result:
> raise RuntimeError(
> _(
> @@ -106,8 +107,8 @@ class Plugin(plugin.PluginBase):
> self.services.state('vdsmd', False)
> if self.services.exists('supervdsmd'):
> self.services.state('supervdsmd', False)
> - self.packager.install(('qemu-kvm-tools',))
> - self.packager.installUpdate(('vdsm', 'vdsm-cli'))
> + # self.packager.install(('qemu-kvm-tools',))
> + # self.packager.installUpdate(('vdsm', 'vdsm-cli'))
>
> @plugin.event(
> stage=plugin.Stages.STAGE_CLOSEUP,
> @@ -119,7 +120,7 @@ class Plugin(plugin.PluginBase):
> self.services.state('libvirt-guests', False)
> self.services.startup('libvirt-guests', False)
>
> - self.services.startup('vdsmd', True)
> + # self.services.startup('vdsmd', True)
> if not self.services.supportsDependency:
> if self.services.exists('libvirtd'):
> self.services.startup('libvirtd', True)
> diff --git a/src/plugins/ovirt-host-deploy/vdsm/pki.py
> b/src/plugins/ovirt-host-deploy/vdsm/pki.py
> index f374a99..c013527 100644
> --- a/src/plugins/ovirt-host-deploy/vdsm/pki.py
> +++ b/src/plugins/ovirt-host-deploy/vdsm/pki.py
> @@ -208,7 +208,8 @@ class Plugin(plugin.PluginBase):
> condition=lambda self: self._enabled,
> )
> def _packages(self):
> - self.packager.install(('m2crypto',))
> + # self.packager.install(('m2crypto',))
> + pass
>
> @plugin.event(
> stage=plugin.Stages.STAGE_MISC,
> diff --git a/src/plugins/ovirt-host-deploy/vdsm/software.py
> b/src/plugins/ovirt-host-deploy/vdsm/software.py
> index 2f0ec80..a226816 100644
> --- a/src/plugins/ovirt-host-deploy/vdsm/software.py
> +++ b/src/plugins/ovirt-host-deploy/vdsm/software.py
> @@ -65,6 +65,8 @@ class Plugin(plugin.PluginBase):
> version=ver,
> )
> )
> + elif dist == 'Ubuntu':
> + pass
> else:
> raise RuntimeError(
> _('Distribution {distribution} is not supported').format(
> diff --git a/src/plugins/ovirt-host-deploy/vdsm/vdsmid.py
> b/src/plugins/ovirt-host-deploy/vdsm/vdsmid.py
> index 328ad17..465212a 100644
> --- a/src/plugins/ovirt-host-deploy/vdsm/vdsmid.py
> +++ b/src/plugins/ovirt-host-deploy/vdsm/vdsmid.py
> @@ -78,7 +78,8 @@ class Plugin(plugin.PluginBase):
> )
> def _packages(self):
> if platform.machine() in ('x86_64', 'i686'):
> - self.packager.install(('dmidecode',))
> + # self.packager.install(('dmidecode',))
> + pass
>
> @plugin.event(
> stage=plugin.Stages.STAGE_CUSTOMIZATION,
> --
> 1.7.11.7
>
>
> Hack patch for otopi.
>
> From 3e7022b740f24d8053d3e32c20fa6d492631db80 Mon Sep 17 00:00:00 2001
> From: Zhou Zheng Sheng <zhshzhou(a)linux.vnet.ibm.com>
> Date: Wed, 13 Nov 2013 17:55:39 +0800
> Subject: [PATCH] Ubuntu Hacks
>
> ---
> src/plugins/otopi/network/hostname.py | 3 ++-
> 1 file changed, 2 insertions(+), 1 deletion(-)
>
> diff --git a/src/plugins/otopi/network/hostname.py
> b/src/plugins/otopi/network/hostname.py
> index bb07627..28b4866 100644
> --- a/src/plugins/otopi/network/hostname.py
> +++ b/src/plugins/otopi/network/hostname.py
> @@ -63,7 +63,8 @@ class Plugin(plugin.PluginBase):
> stage=plugin.Stages.STAGE_INTERNAL_PACKAGES,
> )
> def _internal_packages(self):
> - self.packager.install(packages=['iproute'])
> + # self.packager.install(packages=['iproute'])
> + pass
>
> @plugin.event(
> stage=plugin.Stages.STAGE_VALIDATION,
> --
> 1.7.11.7
>
> --
> Thanks and best regards!
>
> Zhou Zheng Sheng / 周征晟
> E-mail: zhshzhou(a)linux.vnet.ibm.com
> Telephone: 86-10-82454397
>
>
--
Thanks and best regards!
Zhou Zheng Sheng / 周征晟
E-mail: zhshzhou(a)linux.vnet.ibm.com
Telephone: 86-10-82454397