commit 775d17b106a60f2548f5f10827d7451c01154289
Merge: c16915b d2129ac
Author: Guido Trotter <[email protected]>
Date:   Fri Jun 17 14:30:51 2011 +0300

    Merge branch 'devel-2.4'

    * devel-2.4:
      LUInstanceCreate: fix file storage dir calculation
      Check that filestorage is enabled when requested
      Remove self.op.file_storage_dir isabs check

    Conflicts:
        lib/cmdlib.py
              - use constants.DTS_FILEBASED
              - handle DT_SHARED_FILE correctly

diff --cc lib/cmdlib.py
index 759f01f,95153ac..cf61fdf
--- a/lib/cmdlib.py
+++ b/lib/cmdlib.py
@@@ -7864,9 -7096,9 +7864,12 @@@ class LUInstanceCreate(LogicalUnit)
        raise errors.OpPrereqError("Invalid file driver name '%s'" %
                                   self.op.file_driver, errors.ECODE_INVAL)

-     if self.op.file_storage_dir and os.path.isabs(self.op.file_storage_dir):
-       raise errors.OpPrereqError("File storage directory path not absolute",
-                                  errors.ECODE_INVAL)
+     if (self.op.disk_template == constants.DT_FILE and
+         not constants.ENABLE_FILE_STORAGE):
+       raise errors.OpPrereqError("File storage disabled")
++    elif (self.op.disk_template == constants.DT_SHARED_FILE and
++          not constants.ENABLE_SHARED_FILE_STORAGE):
++      raise errors.OpPrereqError("Shared file storage disabled")

      ### Node/iallocator related checks
      _CheckIAllocatorOrNode(self, "iallocator", "pnode")
@@@ -8225,6 -7446,27 +8228,32 @@@
        if name in os_defs and os_defs[name] == self.op.osparams[name]:
          del self.op.osparams[name]

+   def _CalculateFileStorageDir(self):
+     """Calculate final instance file storage dir.
+
+     """
+     # file storage dir calculation/check
+     self.instance_file_storage_dir = None
 -    if self.op.disk_template == constants.DT_FILE:
++    if self.op.disk_template in constants.DTS_FILEBASED:
+       # build the full file storage dir path
+       joinargs = []
+
 -      cfg_storagedir = self.cfg.GetFileStorageDir()
++      if self.op.disk_template == constants.DT_SHARED_FILE:
++        get_fsd_fn = self.cfg.GetSharedFileStorageDir
++      else:
++        get_fsd_fn = self.cfg.GetFileStorageDir
++
++      cfg_storagedir = get_fsd_fn()
+       if not cfg_storagedir:
+         raise errors.OpPrereqError("Cluster file storage dir not defined")
+       joinargs.append(cfg_storagedir)
+
+       if self.op.file_storage_dir is not None:
+         joinargs.append(self.op.file_storage_dir)
+
+       # pylint: disable-msg=W0142
+       self.instance_file_storage_dir = utils.PathJoin(*joinargs)
+
    def CheckPrereq(self):
      """Check prerequisites.

Reply via email to