[Engine-devel] Things to be done to support Ubuntu hosts
Zhou Zheng Sheng
zhshzhou at linux.vnet.ibm.com
Wed Nov 20 01:53:17 UTC 2013
on 2013/11/16 02:52, Alon Bar-Lev wrote:
>
>
> ----- Original Message -----
>> From: "Zhou Zheng Sheng" <zhshzhou at linux.vnet.ibm.com>
>> To: "engine-devel" <engine-devel at ovirt.org>
>> Cc: "Itamar Heim" <iheim at redhat.com>, "Alon Bar-Lev" <alonbl at 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.
>
Great! Do we have plan to implement apt-get support in ovirt-host-deploy?
>>
>> 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 at 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 at 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 at 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 at linux.vnet.ibm.com
>> Telephone: 86-10-82454397
>>
>>
>
--
Thanks and best regards!
Zhou Zheng Sheng / 周征晟
E-mail: zhshzhou at linux.vnet.ibm.com
Telephone: 86-10-82454397
More information about the Engine-devel
mailing list