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 <[email protected]> --- 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 _______________________________________________ Ovirt-devel mailing list [email protected] https://www.redhat.com/mailman/listinfo/ovirt-devel
