From 90732990e059dfa6fb665b73b0b46e4e1b1d2bfd Mon Sep 17 00:00:00 2001 From: Cole Robinson Date: Sun, 15 Nov 2009 15:57:38 -0500 Subject: [PATCH] storagebrowser: If creating new VM, have new vol name be based on vm name. --- src/virtManager/create.py | 1 + src/virtManager/createvol.py | 26 ++++++++++++++++++++++++-- src/virtManager/storagebrowse.py | 8 ++++++++ 3 files changed, 33 insertions(+), 2 deletions(-) diff --git a/src/virtManager/create.py b/src/virtManager/create.py index de7361bf7..b5f9538d9 100644 --- a/src/virtManager/create.py +++ b/src/virtManager/create.py @@ -1679,6 +1679,7 @@ class vmmCreate(gobject.GObject): if self.storage_browser == None: self.storage_browser = vmmStorageBrowser(self.config, self.conn) + self.storage_browser.set_vm_name(self.get_config_name()) self.storage_browser.set_finish_cb(callback) self.storage_browser.set_browse_reason(reason) self.storage_browser.show(self.conn) diff --git a/src/virtManager/createvol.py b/src/virtManager/createvol.py index 9672d71fb..56af60a74 100644 --- a/src/virtManager/createvol.py +++ b/src/virtManager/createvol.py @@ -55,6 +55,7 @@ class vmmCreateVolume(gobject.GObject): _("An unexpected error occurred")) self.topwin.hide() + self.name_hint = None self.vol = None self.vol_class = Storage.StoragePool.get_volume_for_pool(parent_pool.get_type()) @@ -92,6 +93,9 @@ class vmmCreateVolume(gobject.GObject): self.set_modal(False) return 1 + def set_name_hint(self, hint): + self.name_hint = hint + def set_modal(self, modal): self.topwin.set_modal(bool(modal)) @@ -100,8 +104,26 @@ class vmmCreateVolume(gobject.GObject): self.vol_class = Storage.StoragePool.get_volume_for_pool(self.parent_pool.get_type()) + def default_vol_name(self): + if not self.name_hint: + return "" + + suffix = self.default_suffix() + try: + return Storage.StorageVolume.find_free_name(self.name_hint, + pool_object=self.parent_pool.pool, + suffix=suffix) + except: + return "" + + def default_suffix(self): + suffix = "" + if self.vol_class == Storage.FileVolume: + suffix = ".img" + return suffix + def reset_state(self): - self.window.get_widget("vol-name").set_text("") + self.window.get_widget("vol-name").set_text(self.default_vol_name()) self.window.get_widget("vol-create").set_sensitive(False) self.populate_vol_format() self.populate_vol_suffix() @@ -137,7 +159,7 @@ class vmmCreateVolume(gobject.GObject): model.append([f, f]) def populate_vol_suffix(self): - suffix = "" + suffix = self.default_suffix() if self.vol_class == Storage.FileVolume: suffix = ".img" self.window.get_widget("vol-name-suffix").set_text(suffix) diff --git a/src/virtManager/storagebrowse.py b/src/virtManager/storagebrowse.py index db637fc69..62259f095 100644 --- a/src/virtManager/storagebrowse.py +++ b/src/virtManager/storagebrowse.py @@ -61,6 +61,10 @@ class vmmStorageBrowser(gobject.GObject): # Add Volume wizard self.addvol = None + # Name of VM we are choosing storage for, can be used to recommend + # volume name if creating + self.vm_name = None + # Arguments to pass to util.browse_local for local storage self.browse_reason = None self.local_args = {} @@ -98,6 +102,9 @@ class vmmStorageBrowser(gobject.GObject): def set_local_arg(self, arg, val): self.local_args[arg] = val + def set_vm_name(self, name): + self.vm_name = name + def set_initial_state(self): pool_list = self.window.get_widget("pool-list") virtManager.host.init_pool_list(pool_list, self.pool_selected) @@ -253,6 +260,7 @@ class vmmStorageBrowser(gobject.GObject): else: self.addvol.set_parent_pool(pool) self.addvol.set_modal(True) + self.addvol.set_name_hint(self.vm_name) self.addvol.show() except Exception, e: self.show_err(_("Error launching volume wizard: %s") % str(e),