diff --git a/src/virtManager/createpool.py b/src/virtManager/createpool.py index 3f4cd5aa4..4f77f63a6 100644 --- a/src/virtManager/createpool.py +++ b/src/virtManager/createpool.py @@ -67,6 +67,8 @@ class vmmCreatePool(gobject.GObject): "on_pool_source_button_clicked" : self.browse_source_path, "on_pool_target_button_clicked" : self.browse_target_path, + "on_pool_hostname_activate" : self.hostname_changed, + "on_pool_name_focus_in_event": (self.update_doc, "name", "pool-info1"), # I cannot for the life of me get a combobox to abide @@ -137,6 +139,7 @@ class vmmCreatePool(gobject.GObject): target_list = self.window.get_widget("pool-target-path") # target_path, Label, pool class instance target_model = gtk.ListStore(str, str, object) + target_model.set_sort_column_id(0, gtk.SORT_ASCENDING) target_list.set_model(target_model) target_list.set_text_column(0) target_list.child.connect("focus-in-event", self.update_doc, @@ -146,6 +149,7 @@ class vmmCreatePool(gobject.GObject): source_list = self.window.get_widget("pool-source-path") # source_path, Label, pool class instance source_model = gtk.ListStore(str, str, object) + source_model.set_sort_column_id(0, gtk.SORT_ASCENDING) source_list.set_model(source_model) source_list.set_text_column(0) source_list.child.connect("focus-in-event", self.update_doc, @@ -172,6 +176,10 @@ class vmmCreatePool(gobject.GObject): self.window.get_widget("pool-build").set_active(False) + def hostname_changed(self, ignore): + # If a hostname was entered, try to lookup valid pool sources. + self.populate_pool_sources() + def populate_pool_type(self): model = self.window.get_widget("pool-type").get_model() model.clear() @@ -211,6 +219,15 @@ class vmmCreatePool(gobject.GObject): use_list = target_list use_model = target_model + elif self._pool.type == Storage.StoragePool.TYPE_NETFS: + host = self.get_config_host() + if host: + pool_list = self.list_pool_sources(host=host) + entry_list = map(lambda p: [p.source_path, p.source_path, p], + pool_list) + use_list = source_list + use_model = source_model + for e in entry_list: use_model.append(e) @@ -234,14 +251,15 @@ class vmmCreatePool(gobject.GObject): return clean_list - def list_pool_sources(self): + def list_pool_sources(self, host=None): name = self.get_config_name() pool_type = self._pool.type plist = [] try: plist = Storage.StoragePool.pool_list_from_sources(self.conn.vmm, - name, pool_type) + name, pool_type, + host=host) except Exception, e: logging.exception("Pool enumeration failed") diff --git a/src/vmm-create-pool.glade b/src/vmm-create-pool.glade index 09a053c1e..6c2bad75c 100644 --- a/src/vmm-create-pool.glade +++ b/src/vmm-create-pool.glade @@ -477,6 +477,7 @@ True + 1