Reviewed-by: Daniel Barboza <danielhb(a)linux.vnet.ibm.com>
On 03/05/2014 06:04 PM, Aline Manera wrote:
From: Aline Manera <alinefm(a)br.ibm.com>
When creating a logical storage pool, a volume group is created with the same
name.
And when deleting the storage pool the volume group keeps on the system. Which
is the correct behavior as the storage pool is only a concept and deleting it
should not affect the file system.
To avoid problems while creating a pool with an existent volume group name,
verify if a volume group exists with the given pool name and if so, warn the
user about it.
Also convert an error message parameter to string instead of virStoragePool
instance and update the po files as new messages were added.
Signed-off-by: Aline Manera <alinefm(a)br.ibm.com>
Signed-off-by: Royce Lv <lvroyce(a)linux.vnet.ibm.com>
---
po/en_US.po | 12 +++++++++++-
po/kimchi.pot | 12 +++++++++++-
po/pt_BR.po | 12 +++++++++++-
po/zh_CN.po | 12 +++++++++++-
src/kimchi/i18n.py | 2 +-
src/kimchi/model/storagepools.py | 19 ++++++++++++++++++-
6 files changed, 63 insertions(+), 6 deletions(-)
diff --git a/po/en_US.po b/po/en_US.po
index d9df56d..23881da 100644
--- a/po/en_US.po
+++ b/po/en_US.po
@@ -6,7 +6,7 @@ msgid ""
msgstr ""
"Project-Id-Version: kimchi 0.1\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2014-03-03 17:18-0300\n"
+"POT-Creation-Date: 2014-03-05 17:45-0300\n"
"PO-Revision-Date: 2013-07-11 17:32-0400\n"
"Last-Translator: CrÃstian Viana <vianac(a)linux.vnet.ibm.com>\n"
"Language-Team: English\n"
@@ -985,6 +985,12 @@ msgid "Unable to delete pool %(name)s as it is associated with
some templates"
msgstr ""
#, python-format
+msgid ""
+"A volume group named '%(name)s' already exists. Please, choose another
name "
+"to create the logical pool."
+msgstr ""
+
+#, python-format
msgid "Storage volume %(name)s already exists"
msgstr ""
@@ -1037,6 +1043,10 @@ msgid "Unable to resize storage volume %(name)s. Details:
%(err)s"
msgstr ""
#, python-format
+msgid "Storage type %(type)s does not support volume create and delete"
+msgstr ""
+
+#, python-format
msgid "Interface %(name)s does not exist"
msgstr ""
diff --git a/po/kimchi.pot b/po/kimchi.pot
index df89712..06236d2 100755
--- a/po/kimchi.pot
+++ b/po/kimchi.pot
@@ -8,7 +8,7 @@ msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2014-03-03 17:18-0300\n"
+"POT-Creation-Date: 2014-03-05 17:45-0300\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <LL(a)li.org>\n"
@@ -972,6 +972,12 @@ msgid "Unable to delete pool %(name)s as it is associated with
some templates"
msgstr ""
#, python-format
+msgid ""
+"A volume group named '%(name)s' already exists. Please, choose another
name "
+"to create the logical pool."
+msgstr ""
+
+#, python-format
msgid "Storage volume %(name)s already exists"
msgstr ""
@@ -1024,6 +1030,10 @@ msgid "Unable to resize storage volume %(name)s. Details:
%(err)s"
msgstr ""
#, python-format
+msgid "Storage type %(type)s does not support volume create and delete"
+msgstr ""
+
+#, python-format
msgid "Interface %(name)s does not exist"
msgstr ""
diff --git a/po/pt_BR.po b/po/pt_BR.po
index f00edd8..06db056 100644
--- a/po/pt_BR.po
+++ b/po/pt_BR.po
@@ -20,7 +20,7 @@ msgid ""
msgstr ""
"Project-Id-Version: kimchi 1.0\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2014-03-03 17:18-0300\n"
+"POT-Creation-Date: 2014-03-05 17:45-0300\n"
"PO-Revision-Date: 2013-06-27 10:48+0000\n"
"Last-Translator: CrÃstian Viana <vianac(a)linux.vnet.ibm.com>\n"
"Language-Team: Aline Manera <alinefm(a)br.ibm.com>\n"
@@ -1000,6 +1000,12 @@ msgid "Unable to delete pool %(name)s as it is associated
with some templates"
msgstr ""
#, python-format
+msgid ""
+"A volume group named '%(name)s' already exists. Please, choose another
name "
+"to create the logical pool."
+msgstr ""
+
+#, python-format
msgid "Storage volume %(name)s already exists"
msgstr ""
@@ -1052,6 +1058,10 @@ msgid "Unable to resize storage volume %(name)s. Details:
%(err)s"
msgstr ""
#, python-format
+msgid "Storage type %(type)s does not support volume create and delete"
+msgstr ""
+
+#, python-format
msgid "Interface %(name)s does not exist"
msgstr ""
diff --git a/po/zh_CN.po b/po/zh_CN.po
index 366c6bf..38a3c6c 100644
--- a/po/zh_CN.po
+++ b/po/zh_CN.po
@@ -20,7 +20,7 @@ msgid ""
msgstr ""
"Project-Id-Version: kimchi 0.1\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2014-03-03 17:18-0300\n"
+"POT-Creation-Date: 2014-03-05 17:45-0300\n"
"PO-Revision-Date: 2013-06-27 10:48+0000\n"
"Last-Translator: ShaoHe Feng <shaohef(a)linux.vnet.ibm.com>\n"
"Language-Team: ShaoHe Feng <shaohef(a)linux.vnet.ibm.com>\n"
@@ -990,6 +990,12 @@ msgid "Unable to delete pool %(name)s as it is associated with
some templates"
msgstr ""
#, python-format
+msgid ""
+"A volume group named '%(name)s' already exists. Please, choose another
name "
+"to create the logical pool."
+msgstr ""
+
+#, python-format
msgid "Storage volume %(name)s already exists"
msgstr ""
@@ -1042,6 +1048,10 @@ msgid "Unable to resize storage volume %(name)s. Details:
%(err)s"
msgstr ""
#, python-format
+msgid "Storage type %(type)s does not support volume create and delete"
+msgstr ""
+
+#, python-format
msgid "Interface %(name)s does not exist"
msgstr ""
diff --git a/src/kimchi/i18n.py b/src/kimchi/i18n.py
index 36785e6..cbfcf5d 100644
--- a/src/kimchi/i18n.py
+++ b/src/kimchi/i18n.py
@@ -138,7 +138,7 @@ messages = {
"KCHPOOL0033E": _("Unable to deactivate NFS storage pool %(name)s.
NFS server %(server)s is unreachable."),
"KCHPOOL0034E": _("Unable to deactivate pool %(name)s as it is
associated with some templates"),
"KCHPOOL0035E": _("Unable to delete pool %(name)s as it is
associated with some templates"),
-
+ "KCHPOOL0036E": _("A volume group named '%(name)s' already
exists. Please, choose another name to create the logical pool."),
"KCHVOL0001E": _("Storage volume %(name)s already exists"),
"KCHVOL0002E": _("Storage volume %(name)s does not exist in storage
pool %(pool)s"),
diff --git a/src/kimchi/model/storagepools.py b/src/kimchi/model/storagepools.py
index 8edf62e..3ae62cf 100644
--- a/src/kimchi/model/storagepools.py
+++ b/src/kimchi/model/storagepools.py
@@ -71,6 +71,22 @@ class StoragePoolsModel(object):
if name == ISO_POOL_NAME:
raise InvalidOperation("KCHPOOL0031E")
+ # The user may want to create a logical pool with the same name
+ # used before but a volume group will already exist with this name
+ # So check the volume group does not exist to create the pool
+ if params['type'] == 'logical':
+ vgdisplay_cmd = ['vgdisplay', name]
+ output, error, returncode = run_command(vgdisplay_cmd)
+ # From vgdisplay error codes:
+ # 1 error reading VGDA
+ # 2 volume group doesn't exist
+ # 3 not all physical volumes of volume group online
+ # 4 volume group not found
+ # 5 no volume groups found at all
+ # 6 error reading VGDA from lvmtab
+ if returncode not in [2, 4, 5]:
+ raise InvalidOperation("KCHPOOL0036E", {'name':
name})
+
if params['type'] == 'kimchi-iso':
task_id = self._do_deep_scan(params)
@@ -172,7 +188,8 @@ class StoragePoolModel(object):
return 0
except libvirt.libvirtError as e:
raise OperationFailed("KCHPOOL0008E",
- {'name': pool, 'err':
e.get_error_message()})
+ {'name': pool.name(),
+ 'err': e.get_error_message()})
def _get_storage_source(self, pool_type, pool_xml):
source = {}