[Ovirt-devel] [PATCH] Fixed errors when the user selects a different remove libvirt host.
Darryl L. Pierce
dpierce at redhat.com
Mon Dec 21 16:49:47 UTC 2009
Now the app will show the current connection. When the user selects
a different host then any connection exception is caught and the
previous connection restored.
Signed-off-by: Darryl L. Pierce <dpierce at redhat.com>
---
nodeadmin/changehost.py | 6 ++++--
nodeadmin/configscreen.py | 5 ++++-
nodeadmin/libvirtworker.py | 16 +++++++++++++++-
3 files changed, 23 insertions(+), 4 deletions(-)
diff --git a/nodeadmin/changehost.py b/nodeadmin/changehost.py
index 23e6854..f604c03 100644
--- a/nodeadmin/changehost.py
+++ b/nodeadmin/changehost.py
@@ -27,7 +27,10 @@ CONNECTED_PAGE = 2
class ChangeHostConfigScreen(HostListConfigScreen):
def __init__(self):
- HostListConfigScreen.__init__(self, "Change Host")
+ HostListConfigScreen.__init__(self, "")
+
+ def get_title(self):
+ return "Currently: %s" % self.get_libvirt().get_url()
def get_elements_for_page(self, screen, page):
if page is CONNECTION_LIST_PAGE: return self.get_connection_list_page(screen)
@@ -36,7 +39,6 @@ class ChangeHostConfigScreen(HostListConfigScreen):
def process_input(self, page):
if page is CONNECTION_LIST_PAGE:
logging.info("Changing libvirt connection to %s" % self.get_selected_connection())
- libvirtworker.set_default_url(self.get_selected_connection())
self.get_libvirt().open_connection(self.get_selected_connection())
elif page is CONNECTED_PAGE: self.set_finished()
diff --git a/nodeadmin/configscreen.py b/nodeadmin/configscreen.py
index 02ab5b4..7a23325 100644
--- a/nodeadmin/configscreen.py
+++ b/nodeadmin/configscreen.py
@@ -37,6 +37,9 @@ class ConfigScreen:
self.__libvirt = LibvirtWorker()
self.__vm_config = VirtManagerConfig()
+ def get_title(self):
+ return self.__title
+
def get_hal(self):
return self.__hal
@@ -83,7 +86,7 @@ class ConfigScreen:
screen = SnackScreen()
elements = self.get_elements_for_page(screen, self.__current_page)
# TODO: need to set the form height to the number of elements on the page
- gridform = GridForm(screen, self.__title, 1, 10)
+ gridform = GridForm(screen, self.get_title(), 1, 10)
current_element = 0
for element in elements:
gridform.add(element, 0, current_element)
diff --git a/nodeadmin/libvirtworker.py b/nodeadmin/libvirtworker.py
index b35509f..3338f80 100644
--- a/nodeadmin/libvirtworker.py
+++ b/nodeadmin/libvirtworker.py
@@ -74,6 +74,8 @@ class LibvirtWorker:
def __init__(self, url = None):
if url is None: url = get_default_url()
logging.info("Connecting to libvirt: %s" % url)
+ self.__url = None
+ self.__conn = None
self.open_connection(url)
self.__capabilities = virtinst.CapabilitiesParser.parse(self.__conn.getCapabilities())
self.__net = virtinst.VirtualNetworkInterface(conn = self.__conn)
@@ -84,9 +86,21 @@ class LibvirtWorker:
'''Returns the underlying connection.'''
return self.__conn
+ def get_url(self):
+ return self.__url
+
def open_connection(self, url):
'''Lets the user change the url for the connection.'''
- self.__conn = libvirt.open(url)
+ old_conn = self.__conn
+ old_url = self.__url
+ try:
+ self.__conn = libvirt.open(url)
+ self.__url = url
+ set_default_url(url)
+ except Exception, error:
+ self.__conn = old_conn
+ self.__url = old_url
+ raise error
def list_domains(self, defined = True, started = True):
'''Lists all domains.'''
--
1.6.5.2
More information about the ovirt-devel
mailing list