Revision 5030cff3 lib/bootstrap.py

b/lib/bootstrap.py
334 334
  _WaitForSshDaemon(node, netutils.GetDaemonPort(constants.SSH), family)
335 335

  
336 336

  
337
def _InitFileStorage(file_storage_dir):
337
def _PrepareFileStorage(enabled_disk_templates, file_storage_dir):
338
  """Checks if file storage is enabled and inits the dir.
339

  
340
  """
341
  if utils.storage.IsFileStorageEnabled(enabled_disk_templates):
342
    file_storage_dir = _InitFileStorageDir(file_storage_dir)
343
  else:
344
    file_storage_dir = ""
345
  return file_storage_dir
346

  
347

  
348
def _InitFileStorageDir(file_storage_dir):
338 349
  """Initialize if needed the file storage.
339 350

  
340 351
  @param file_storage_dir: the user-supplied value
......
360 371
    raise errors.OpPrereqError("The file storage directory '%s' is not"
361 372
                               " a directory." % file_storage_dir,
362 373
                               errors.ECODE_ENVIRON)
374

  
375
  # FIXME: check here if the file_storage_dir is in the set of allowed dirs
363 376
  return file_storage_dir
364 377

  
365 378

  
379
def _InitCheckEnabledDiskTemplates(enabled_disk_templates):
380
  """Checks the sanity of the enabled disk templates.
381

  
382
  """
383
  if not enabled_disk_templates:
384
    raise errors.OpPrereqError("Enabled disk templates list must contain at"
385
                               " least one member", errors.ECODE_INVAL)
386
  invalid_disk_templates = \
387
    set(enabled_disk_templates) - constants.DISK_TEMPLATES
388
  if invalid_disk_templates:
389
    raise errors.OpPrereqError("Enabled disk templates list contains invalid"
390
                               " entries: %s" % invalid_disk_templates,
391
                               errors.ECODE_INVAL)
392

  
393

  
366 394
def InitCluster(cluster_name, mac_prefix, # pylint: disable=R0913, R0914
367 395
                master_netmask, master_netdev, file_storage_dir,
368 396
                shared_file_storage_dir, candidate_pool_size, secondary_ip=None,
......
396 424
                               " entries: %s" % invalid_hvs,
397 425
                               errors.ECODE_INVAL)
398 426

  
399
  if not enabled_disk_templates:
400
    raise errors.OpPrereqError("Enabled disk templates list must contain at"
401
                               " least one member", errors.ECODE_INVAL)
402
  invalid_disk_templates = \
403
    set(enabled_disk_templates) - constants.DISK_TEMPLATES
404
  if invalid_disk_templates:
405
    raise errors.OpPrereqError("Enabled disk templates list contains invalid"
406
                               " entries: %s" % invalid_disk_templates,
407
                               errors.ECODE_INVAL)
427
  _InitCheckEnabledDiskTemplates(enabled_disk_templates)
408 428

  
409 429
  try:
410 430
    ipcls = netutils.IPAddress.GetClassFromIpVersion(primary_ip_version)
......
489 509
                             " had exitcode %s and error '%s'" %
490 510
                             (result.cmd, result.exit_code, result.output))
491 511

  
492
  if constants.ENABLE_FILE_STORAGE:
493
    file_storage_dir = _InitFileStorage(file_storage_dir)
494
  else:
495
    file_storage_dir = ""
512
  file_storage_dir = _PrepareFileStorage(enabled_disk_templates,
513
                                         file_storage_dir)
496 514

  
497 515
  if constants.ENABLE_SHARED_FILE_STORAGE:
498
    shared_file_storage_dir = _InitFileStorage(shared_file_storage_dir)
516
    shared_file_storage_dir = _InitFileStorageDir(shared_file_storage_dir)
499 517
  else:
500 518
    shared_file_storage_dir = ""
501 519

  

Also available in: Unified diff