client/tools/rhn-virtualization/rhn-virtualization.spec | 6 ++
client/tools/rhn-virtualization/scripts/rhn-virtualization.cron | 2
client/tools/rhn-virtualization/virtualization/poller.py | 25 ++++------
3 files changed, 18 insertions(+), 15 deletions(-)
New commits:
commit bf4e0a4736186ea5473b425e23e55bf0c3420003
Author: Milan Zazrivec <mzazrivec(a)redhat.com>
Date: Fri Aug 10 10:50:09 2012 +0200
820862 - fix traceback on a fat rhev-3 host
This is to fix the following traceback:
Traceback (most recent call last):
File "/usr/lib64/python2.6/runpy.py", line 122, in _run_module_as_main
"__main__", fname, loader, pkg_name)
File "/usr/lib64/python2.6/runpy.py", line 34, in _run_code
exec code in run_globals
File "/usr/lib64/python2.6/trace.py", line 823, in <module>
main()
File "/usr/lib64/python2.6/trace.py", line 811, in main
t.runctx(code, globs, globs)
File "/usr/lib64/python2.6/trace.py", line 512, in runctx
exec cmd in globals, locals
File "/usr/share/rhn/virtualization/poller.py", line 290, in
<module>
domain_list = poll_through_vdsm()
File "/usr/share/rhn/virtualization/poller.py", line 140, in
poll_through_vdsm
import localvdsm
File "/usr/share/rhn/virtualization/localvdsm.py", line 35, in
<module>
raise ImportError('local vdsm not found')
Running
python /usr/share/rhn/virtualization/poller.py
from cron job would automatically add /usr/share/rhn/virtualization into
python's sys.path. vdsm's config.py imports constants.py but will get
incorrect (i.e. rhn-virtualization's) constants.py, hence the tb above
(the actual exception in fact is:
File "/usr/share/vdsm/config.py", line 67, in <module>
AttributeError: 'module' object has no attribute 'P_TRUSTSTORE'
).
We'll resolve the problem with:
1. Running the poller.py from cron using shell redirection
2. We won't be using (not even packaging) localvdsm.py on rhel-6 and beyond
diff --git a/client/tools/rhn-virtualization/rhn-virtualization.spec
b/client/tools/rhn-virtualization/rhn-virtualization.spec
index 3db107f..81ede77 100644
--- a/client/tools/rhn-virtualization/rhn-virtualization.spec
+++ b/client/tools/rhn-virtualization/rhn-virtualization.spec
@@ -79,7 +79,9 @@ make -f Makefile.rhn-virtualization
%install
rm -rf $RPM_BUILD_ROOT
make -f Makefile.rhn-virtualization DESTDIR=$RPM_BUILD_ROOT PKGDIR0=%{_initrddir}
install
-
+%if (0%{?rhel} && 0%{?rhel} > 5)
+find $RPM_BUILD_ROOT -name "localvdsm*" -exec rm -f '{}' ';'
+%endif
%clean
rm -rf $RPM_BUILD_ROOT
@@ -141,7 +143,9 @@ fi
%{rhn_dir}/virtualization/support.py*
%{rhn_dir}/actions/virt.py*
%{rhn_dir}/actions/image.py*
+%if 0%{?suse_version} || (0%{?rhel} && 0%{?rhel} < 6)
%{rhn_dir}/virtualization/localvdsm.py*
+%endif
%{rhn_conf_dir}/studio-*-template.xml
%config(noreplace) %{rhn_conf_dir}/image.cfg
%doc LICENSE
diff --git a/client/tools/rhn-virtualization/scripts/rhn-virtualization.cron
b/client/tools/rhn-virtualization/scripts/rhn-virtualization.cron
index cc825d0..69df173 100644
--- a/client/tools/rhn-virtualization/scripts/rhn-virtualization.cron
+++ b/client/tools/rhn-virtualization/scripts/rhn-virtualization.cron
@@ -1 +1 @@
-0-59/2 * * * * root python /usr/share/rhn/virtualization/poller.py
+0-59/2 * * * * root python < /usr/share/rhn/virtualization/poller.py
diff --git a/client/tools/rhn-virtualization/virtualization/poller.py
b/client/tools/rhn-virtualization/virtualization/poller.py
index e9e4e76..e78149f 100644
--- a/client/tools/rhn-virtualization/virtualization/poller.py
+++ b/client/tools/rhn-virtualization/virtualization/poller.py
@@ -127,7 +127,7 @@ def poll_hypervisor():
return state
-def poll_through_vdsm():
+def poll_through_vdsm(server):
"""
This method polls all the virt guests running on a VDSM enabled Host.
Libvirt is disabled by default on RHEV-M managed clients.
@@ -138,12 +138,6 @@ def poll_through_vdsm():
* The server should account for business rules similar to
xen/kvm.
"""
- import localvdsm
- try:
- server = localvdsm.connect()
- except:
- # VDSM raised an exception we're done here
- return {}
# Extract list of vm's. True returns full list
try:
domains = server.list(True)
@@ -279,16 +273,21 @@ if __name__ == "__main__":
# First, handle the options.
_parse_options()
- # check for VDSM status
- import commands
vdsm_enabled = False
- status, msg = commands.getstatusoutput("/etc/init.d/vdsmd status")
- if status == 0:
- vdsm_enabled = True
+ server = None
+ try:
+ from virtualization import localvdsm
+ import commands
+ status, msg = commands.getstatusoutput("/etc/init.d/vdsmd status")
+ if status == 0:
+ server = localvdsm.connect()
+ vdsm_enabled = True
+ except ImportError:
+ pass
# Crawl each of the domains on this host and obtain the new state.
if vdsm_enabled:
- domain_list = poll_through_vdsm()
+ domain_list = poll_through_vdsm(server)
elif libvirt:
domain_list = poll_hypervisor()
else:
Show replies by date