----- Original Message ----- > From: "Zhou Zheng Sheng" <zhshz...@linux.vnet.ibm.com> > To: "engine-devel" <engine-devel@ovirt.org> > Cc: "Itamar Heim" <ih...@redhat.com>, "Alon Bar-Lev" <alo...@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 <zhshz...@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 <zhshz...@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 <zhshz...@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: zhshz...@linux.vnet.ibm.com > Telephone: 86-10-82454397 > > _______________________________________________ Engine-devel mailing list Engine-devel@ovirt.org http://lists.ovirt.org/mailman/listinfo/engine-devel