[Ovirt-devel] [PATCH] Fixed errors when the user selects a different remove libvirt host.
Mike Burns
mburns at redhat.com
Wed Mar 24 17:59:23 UTC 2010
On Mon, 2009-12-21 at 11:49 -0500, Darryl L. Pierce wrote:
> 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.'''
Ack, pushed with modified message (s/remove/remote)
More information about the ovirt-devel
mailing list