From: Royce Lv <lvroyce(a)linux.vnet.ibm.com>
When adding vm storage, volume and path cannot be specified
at the same time. Fix it.
Signed-off-by: Royce Lv <lvroyce(a)linux.vnet.ibm.com>
---
src/kimchi/i18n.py | 1 +
src/kimchi/mockmodel.py | 2 ++
src/kimchi/model/vmstorages.py | 2 ++
3 files changed, 5 insertions(+)
diff --git a/src/kimchi/i18n.py b/src/kimchi/i18n.py
index 90ecc17..91684b6 100644
--- a/src/kimchi/i18n.py
+++ b/src/kimchi/i18n.py
@@ -246,6 +246,7 @@ messages = {
"KCHVMSTOR0014E": _("Controller type %(type)s limitation of %(limit)s
devices reached"),
"KCHVMSTOR0015E": _("Cannot lookup disk path information by given
pool/volume: %(error)s"),
"KCHVMSTOR0016E": _("Volume already been used by other vm"),
+ "KCHVMSTOR0017E": _("Only one of path or pool/volume can be specified
to add a new virtual machine disk"),
"KCHREPOS0001E": _("YUM Repository ID must be one word only
string."),
"KCHREPOS0002E": _("Repository URL must be an http://, ftp:// or
file:// URL."),
diff --git a/src/kimchi/mockmodel.py b/src/kimchi/mockmodel.py
index aecc2a1..a0920e0 100644
--- a/src/kimchi/mockmodel.py
+++ b/src/kimchi/mockmodel.py
@@ -665,6 +665,8 @@ class MockModel(object):
path = params.get('path')
if path and path.startswith('/') and not os.path.exists(path):
raise InvalidParameter("KCHVMSTOR0003E", {'value': path})
+ if path and params.get('pool'):
+ raise InvalidParameter("KCHVMSTOR0017E")
elif params.get('pool'):
try:
self.storagevolume_lookup(params['pool'], params['vol'])
diff --git a/src/kimchi/model/vmstorages.py b/src/kimchi/model/vmstorages.py
index 8c51716..cd985fa 100644
--- a/src/kimchi/model/vmstorages.py
+++ b/src/kimchi/model/vmstorages.py
@@ -154,6 +154,8 @@ class VMStoragesModel(object):
# Path will never be blank due to API.json verification.
# There is no need to cover this case here.
params['format'] = 'raw'
+ if not ('vol' in params) ^ ('path' in params):
+ raise InvalidParameter("KCHVMSTOR0017E")
if params.get('vol'):
try:
pool = params['pool']
--
1.8.3.2