This patch deprecates the option '--no-lvm-storage' of 'gnt-cluster modify'.
Technically, it is not fully removed, but kept in order to warn the user
that it is no longer supported and that she should use --enabled-disk-templates
instead. The consistency check between '--no-lvm-storage' and '--vg-name'
is replaced by one between '--enabled-disk-templates' and '--vg-name'.

Signed-off-by: Helga Velroyen <[email protected]>
---
 lib/client/gnt_cluster.py | 62 ++++++++++++++++++++++++++++++++---------------
 1 file changed, 43 insertions(+), 19 deletions(-)

diff --git a/lib/client/gnt_cluster.py b/lib/client/gnt_cluster.py
index 01ef3ba..8c2fb6e 100644
--- a/lib/client/gnt_cluster.py
+++ b/lib/client/gnt_cluster.py
@@ -62,6 +62,17 @@ _EPO_PING_TIMEOUT = 1 # 1 second
 _EPO_REACHABLE_TIMEOUT = 15 * 60 # 15 minutes
 
 
+def _CheckNoLvmStorageOptDeprecated(opts):
+  """Checks if the legacy option '--no-lvm-storage' is used."""
+  if not opts.lvm_storage:
+    ToStderr("The option --no-lvm-storage is no longer supported. If you want"
+             " to disable lvm-based storage cluster-wide, use the option"
+             " --enabled-disk-templates to disable all of these lvm-base disk "
+             "  templates: %s" %
+             utils.CommaJoin(utils.GetLvmDiskTemplates()))
+    return 1
+
+
 @UsesRPC
 def InitCluster(opts, args):
   """Initialize the cluster.
@@ -74,12 +85,22 @@ def InitCluster(opts, args):
   @return: the desired exit code
 
   """
-  if not opts.lvm_storage and opts.vg_name:
-    ToStderr("Options --no-lvm-storage and --vg-name conflict.")
+  if _CheckNoLvmStorageOptDeprecated(opts):
+    return 1
+  enabled_disk_templates = opts.enabled_disk_templates
+  if enabled_disk_templates:
+    enabled_disk_templates = enabled_disk_templates.split(",")
+  else:
+    enabled_disk_templates = list(constants.DEFAULT_ENABLED_DISK_TEMPLATES)
+
+  if opts.vg_name and not utils.IsLvmEnabled(enabled_disk_templates):
+    ToStderr("Use option --vg-name only if you are enabling at least one of 
the"
+             " following disk templates: %s" %
+             utils.CommaJoin(utils.GetLvmDiskTemplates()))
     return 1
 
   vg_name = opts.vg_name
-  if opts.lvm_storage and not opts.vg_name:
+  if utils.IsLvmEnabled(enabled_disk_templates) and not opts.vg_name:
     vg_name = constants.DEFAULT_VG
 
   if not opts.drbd_storage and opts.drbd_helper:
@@ -193,12 +214,6 @@ def InitCluster(opts, args):
 
   hv_state = dict(opts.hv_state)
 
-  enabled_disk_templates = opts.enabled_disk_templates
-  if enabled_disk_templates:
-    enabled_disk_templates = enabled_disk_templates.split(",")
-  else:
-    enabled_disk_templates = list(constants.DEFAULT_ENABLED_DISK_TEMPLATES)
-
   bootstrap.InitCluster(cluster_name=args[0],
                         secondary_ip=opts.secondary_ip,
                         vg_name=vg_name,
@@ -961,7 +976,7 @@ def SetClusterParams(opts, args):
   @return: the desired exit code
 
   """
-  if not (not opts.lvm_storage or opts.vg_name or
+  if not (opts.vg_name or
           not opts.drbd_storage or opts.drbd_helper or
           opts.enabled_hypervisors or opts.hvparams or
           opts.beparams or opts.nicparams or
@@ -991,13 +1006,26 @@ def SetClusterParams(opts, args):
     ToStderr("Please give at least one of the parameters.")
     return 1
 
-  vg_name = opts.vg_name
-  if not opts.lvm_storage and opts.vg_name:
-    ToStderr("Options --no-lvm-storage and --vg-name conflict.")
+  if _CheckNoLvmStorageOptDeprecated(opts):
     return 1
+  enabled_disk_templates = opts.enabled_disk_templates
+  vg_name = opts.vg_name
+  # Note that this only checks consistency between the vg_name and the
+  # enabled lvm-based disk templates if both parameters --vg-name and
+  # --enabled-disk-templates are used in this operation. If the option
+  # --enabled-disk-templates is not explicitly used, we cannot make a statement
+  # about the consistency with the already configured enabled disk templates
+  # at this point.
+  if enabled_disk_templates:
+    enabled_disk_templates = enabled_disk_templates.split(",")
+    if not utils.IsLvmEnabled(enabled_disk_templates) and opts.vg_name:
+      ToStderr("Use option --vg-name only if you are enabling at least one of"
+               " the following disk templates: %s" %
+               utils.CommaJoin(utils.GetLvmDiskTemplates()))
+      return 1
 
-  if not opts.lvm_storage:
-    vg_name = ""
+    if not utils.IsLvmEnabled(enabled_disk_templates):
+      vg_name = ""
 
   drbd_helper = opts.drbd_helper
   if not opts.drbd_storage and opts.drbd_helper:
@@ -1011,10 +1039,6 @@ def SetClusterParams(opts, args):
   if hvlist is not None:
     hvlist = hvlist.split(",")
 
-  enabled_disk_templates = opts.enabled_disk_templates
-  if enabled_disk_templates:
-    enabled_disk_templates = enabled_disk_templates.split(",")
-
   # a list of (name, dict) we can pass directly to dict() (or [])
   hvparams = dict(opts.hvparams)
   for hv_params in hvparams.values():
-- 
1.8.1.3

Reply via email to