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.