[Engine-devel] Things to be done to support Ubuntu hosts
by Zhou Zheng Sheng
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 .
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.
[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
10 years, 10 months
[Engine-devel] Question about Engine user session timeout
by Vojtech Szocs
Hi guys,
I see two different config values for dealing with Engine user session timeout.
First, from packaging/etc/engine-config/engine-config.properties file:
- UserSessionTimeOutInterval.description=Session timeout interval in minutes, after which it will be expired and clean. A negative value indicates the session should never timeout.
- UserSessionTimeOutInvalidationInterval.description=Session timeout invalidation interval in minutes. Specifies the interval in which the invalidation check should occur.
Then, in org.ovirt.engine.core.common.config.ConfigValues enum:
- UserSessionTimeOutInterval (default 30)
- UserSessionTimeOutInvalidationInterval (default 30)
Looking at Backend#Initialize, both of these values are used when scheduling "cleanExpiredUsersSessions" job:
- UserSessionTimeOutInterval = initialDelay param, i.e. the initial delay before the first activation [SchedulerUtil#scheduleAFixedDelayJob]
- UserSessionTimeOutInvalidationInterval = taskDelay param, i.e. the delay between jobs [SchedulerUtil#scheduleAFixedDelayJob]
So if I read this correctly, if UserSessionTimeOutInterval=100 then UserSessionTimeOutInvalidationInterval is relevant only after first 100min of Engine uptime.
Why do we have two different config values for Engine user session timeout? i.e. why don't we use same value for both initialDelay & taskDelay param?
Thanks,
Vojtech
10 years, 10 months
[Engine-devel] [UX] how to design a bar/line chart?
by Tomas Jelinek
Hi all,
There is a feature request [1] which aims to replace the resource utilization graphs (for example the cpu utilization from vm tab) by some which shows not only
the actual percentage which is not so useful by some monitor graph.
I have the following concerns:
- I can think of a bar chart or a line chart and not sure what would be better.
- Not sure if replacing the current chart with a bar/line chart would make the statistics readable enough. Maybe if you hover the chart it could pop up a bigger version of the chart? Or not needed?
- Would it be enough to have it in one color? Or should it be something like "the bigger the utilization the more red"?
Please advise from the UX perspective. As soon as the final design will be a bit more clear I will provide a feature page.
Thank you,
Tomas
[1]: https://bugzilla.redhat.com/show_bug.cgi?id=803251
10 years, 11 months
[Engine-devel] Using REST API in web UI - design proposal review call
by Vojtech Szocs
Hi everyone,
we're moving towards using REST API in web UI (i.e. WebAdmin and UserPortal) and would like to hear your opinion on the matter.
The initial meeting (conference call) is scheduled on Wednesday, November 20 at 14:30 CET / 15:30 TLV / 08:30 Boston timezone.
I'll send the meeting invite with details in a separate email. Everyone is welcome to join and share his (her) thoughts.
Regards,
Vojtech
PS: don't be scared to join just because there's "web UI" in meeting name! This is mostly about the general concept and design of oVirt SDK for JavaScript.
10 years, 11 months
[Engine-devel] REST API in web UI - design proposal review call
by Vojtech Szocs
------=_Part_26065156_1804954053.1384790432845
Content-Type: text/plain; charset=utf-8
Content-Transfer-Encoding: 7bit
The following is a new meeting request:
Subject: REST API in web UI - design proposal review call
Organizer: "Vojtech Szocs" <vszocs(a)redhat.com>
Time: Wednesday, November 20, 2013, 2:30:00 PM - 4:30:00 PM GMT +01:00 Belgrade, Bratislava, Budapest, Ljubljana, Prague
Required:
Optional: engine-devel(a)ovirt.org
*~*~*~*~*~*~*~*~*~*
Hi guys,
we're moving towards using REST API in web UI (i.e. WebAdmin and UserPortal) and would like to hear your opinion on the matter.
This is a review call to summarize and discuss "Using REST API In Web UI" feature design proposal: http://www.ovirt.org/Features/Design/Using_REST_API_In_Web_UI
Meeting agenda:
- review current state, i.e. using GWT RPC
- review main aspects of design proposal
- discussion / feel free to ask questions anytime during the meeting
Estimated duration: ~2 hrs.
To join this meeting, dial into the Intercall bridge and use following conference code: 712 886 7405 # [https://www.intercallonline.com/listNumbersByCode.action?confCode=7128867405]
Everyone is welcome to join and share his (her) thoughts.
Regards,
Vojtech
------=_Part_26065156_1804954053.1384790432845
Content-Type: text/calendar; charset=utf-8; method=REQUEST; name=meeting.ics
Content-Transfer-Encoding: 7bit
BEGIN:VCALENDAR
PRODID:Zimbra-Calendar-Provider
VERSION:2.0
METHOD:REQUEST
BEGIN:VTIMEZONE
TZID:Europe/Belgrade
BEGIN:STANDARD
DTSTART:16010101T030000
TZOFFSETTO:+0100
TZOFFSETFROM:+0200
RRULE:FREQ=YEARLY;WKST=MO;INTERVAL=1;BYMONTH=10;BYDAY=-1SU
TZNAME:CET
END:STANDARD
BEGIN:DAYLIGHT
DTSTART:16010101T020000
TZOFFSETTO:+0200
TZOFFSETFROM:+0100
RRULE:FREQ=YEARLY;WKST=MO;INTERVAL=1;BYMONTH=3;BYDAY=-1SU
TZNAME:CEST
END:DAYLIGHT
END:VTIMEZONE
BEGIN:VEVENT
UID:8ec06680-c452-4cd9-a6fe-b94dd32a813d
SUMMARY:REST API in web UI - design proposal review call
ATTENDEE;CN=engine-devel;ROLE=OPT-PARTICIPANT;PARTSTAT=NEEDS-ACTION;RSVP=TRU
E:mailto:engine-devel@ovirt.org
ORGANIZER;CN=Vojtech Szocs:mailto:vszocs@redhat.com
DTSTART;TZID="Europe/Belgrade":20131120T143000
DTEND;TZID="Europe/Belgrade":20131120T163000
STATUS:CONFIRMED
CLASS:PUBLIC
X-MICROSOFT-CDO-INTENDEDSTATUS:BUSY
TRANSP:OPAQUE
LAST-MODIFIED:20131118T160032Z
DTSTAMP:20131118T160032Z
SEQUENCE:0
DESCRIPTION:The following is a new meeting request:\n\nSubject: REST API in
web UI - design proposal review call \nOrganizer: "Vojtech Szocs" <vszocs@re
dhat.com> \n\nTime: Wednesday\, November 20\, 2013\, 2:30:00 PM - 4:30:00 PM
GMT +01:00 Belgrade\, Bratislava\, Budapest\, Ljubljana\, Prague\n \nRequir
ed: \nOptional: engine-devel(a)ovirt.org \n\n*~*~*~*~*~*~*~*~*~*\n\nHi guys\,
\n\nwe're moving towards using REST API in web UI (i.e. WebAdmin and UserPor
tal) and would like to hear your opinion on the matter.\n\nThis is a review
call to summarize and discuss "Using REST API In Web UI" feature design prop
osal: http://www.ovirt.org/Features/Design/Using_REST_API_In_Web_UI\n\nMeeti
ng agenda:\n- review current state\, i.e. using GWT RPC\n- review main aspec
ts of design proposal\n- discussion / feel free to ask questions anytime dur
ing the meeting\n\nEstimated duration: ~2 hrs.\n\nTo join this meeting\, dia
l into the Intercall bridge and use following conference code: 712 886 7405
# [https://www.intercallonline.com/listNumbersByCode.action?confCode=7128867
405]\n\nEveryone is welcome to join and share his (her) thoughts.\n\nRegards
\,\nVojtech\n
BEGIN:VALARM
ACTION:DISPLAY
TRIGGER;RELATED=START:-PT5M
DESCRIPTION:Reminder
END:VALARM
END:VEVENT
END:VCALENDAR
------=_Part_26065156_1804954053.1384790432845--
10 years, 11 months
[Engine-devel] oVirt 3.3.2 beta status
by Sandro Bonazzola
Hi,
we're going to branch and build oVirt 3.3.2 beta on Nov 27th.
A bug tracker is available at [1] and it shows only 2 bugs blocking the release:
Bug 1029792 - VDSM does not report the qemu version in capabilities, if qemu-kvm-rhev is used
Bug 1029885 - cloud-init testcase does not work in engine 3.3.1
The following is a list of the bugs still open with target 3.3.2 or 3.3:
Whiteboard Bug ID Summary
991267 [RFE] Add TUI information to log file.
infra 987982 When adding a host through the REST API, the error message says that "rootPassword" is required, but ...
infra 1017267 Plaintext user passwords in async_tasks database
infra 1020344 Power Managent with cisco_ucs problem
infra 1009899 exportDbSchema scripts generates output file with wrong name
infra 1029792 VDSM does not report the qemu version in capabilities, if qemu-kvm-rhev is used
integration 1026933 pre-populate ISO domain with virtio-win ISO
integration 1026930 Package virtio-win and put it in ovirt repositories
integration 1030437 RFE: Configuration of email notifications
integration 1022440 AIO - configure the AIO host to be a gluster cluster/host
integration 902979 ovirt-live - firefox doesn't trust the installed engine
integration 1021805 oVirt Live - use motd to show the admin password
network 988002 [oVirt] [network] Add button shouldn't appear on specific network
network 987916 [oVirt] [provider] Dialog doesn't update unless focus lost
network 987999 [oVirt] [provider] Add button shouldn't appear on specific provider
network 906313 [oVirt-webadmin] [setupNetworks] "No valid Operation for <network_name> and Unassigned Logical Networks panel"
network 1023722 [oVirt-webadmin][network] Network roles in cluster management should be radio buttons
network 997197 Some AppErrors messages are grammatically incorrect (singular vs plural)
storage 1016118 async between masterVersion : can't connect to StoragePool
storage 987917 [oVirt] [glance] API version not specified in provider dialog
storage 1029069 Live storage migration snapshot removal fails, probably due to unexpected qemu-img output
ux 906394 [oVirt-webadmin] [network] Loading animation in network main tab 'hosts' and 'vms' subtab is stuck on first view...
virt 1007940 Cannot clone from snapshot while using GlusterFS as POSIX Storage Domain
Please set the target to 3.3.2 and add the bug to the tracker if you think that 3.3.2 should not be released without it fixed.
Please also update the target to 3.3.3 or any next release for bugs that won't be in 3.3.2: it will ease gathering the blocking bugs for next releases.
For those who want to help testing the bugs, I suggest to add yourself as QA contact for the bug and add yourself to the testing page [2].
[1] https://bugzilla.redhat.com/1027349
[2] http://www.ovirt.org/Testing/Ovirt_3.3.2_testing
--
Sandro Bonazzola
Better technology. Faster innovation. Powered by community collaboration.
See how it works at redhat.com
10 years, 11 months
[Engine-devel] [QE] ovirt-engine 3.3.1-2 published in beta repository
by Sandro Bonazzola
Hi,
ovirt-engine 3.3.1-2 has been published in beta repository and is ready for testing.
Bugs fixed in this version:
{{BZ|1023739}} - Cannot create same Local SD path on different Hosts
{{BZ|1009391}} - Change multi-monitor setting in VM Console option dialog for 3.2 compatible cluster
{{BZ|1025313}} - support relative answer file name<br>
{{BZ|1028748}} - answer files are world-readable and contain passwords
Other fixes:
Fixed a bug which caused failure to run VM with VNC console
--
Sandro Bonazzola
Better technology. Faster innovation. Powered by community collaboration.
See how it works at redhat.com
10 years, 11 months