On Thu, Dec 5, 2013 at 10:30 AM, Thomas Thrainer <[email protected]> wrote:
> I'm not quite sure why we should write this simple logic in this way. Is it
> really easier to read than an if-elif-elif-else cascade? I doubt so. And the
> few extra characters/lines won't hurt, IMHO.
eh... I agree it's not the best. How about this?
diff --git a/lib/cmdlib/instance.py b/lib/cmdlib/instance.py
index d3070c4..49288f9 100644
--- a/lib/cmdlib/instance.py
+++ b/lib/cmdlib/instance.py
@@ -849,19 +849,20 @@ class LUInstanceCreate(LogicalUnit):
# build the full file storage dir path
joinargs = []
- cfg_storage = {
- constants.DT_FILE: self.cfg.GetFileStorageDir,
- constants.DT_SHARED_FILE: self.cfg.GetSharedFileStorageDir,
- constants.DT_GLUSTER: self.cfg.GetGlusterStorageDir,
- }.get(self.op.disk_template, lambda: None)()
+ try:
+ cfg_storage = {
+ constants.DT_FILE: self.cfg.GetFileStorageDir,
+ constants.DT_SHARED_FILE: self.cfg.GetSharedFileStorageDir,
+ constants.DT_GLUSTER: self.cfg.GetGlusterStorageDir,
+ }[self.op.disk_template]()
- if not cfg_storage:
+ except KeyError:
raise errors.OpPrereqError(
"Cluster file storage dir for {tpl} storage type not defined".format(
tpl=repr(self.op.disk_template)
),
errors.ECODE_STATE
- )
+ )
joinargs.append(cfg_storage)
--
Raffa Santi
Google Germany GmbH
Dienerstr. 12
80331 München
Registergericht und -nummer: Hamburg, HRB 86891
Sitz der Gesellschaft: Hamburg
Geschäftsführer: Graham Law, Christine Elizabeth Flores