Revision 0e3baaf3 lib/cmdlib.py

b/lib/cmdlib.py
560 560
    _CheckOSVariant(result.payload, os_name)
561 561

  
562 562

  
563
def _RequireFileStorage():
564
  """Checks that file storage is enabled.
565

  
566
  @raise errors.OpPrereqError: when file storage is disabled
567

  
568
  """
569
  if not constants.ENABLE_FILE_STORAGE:
570
    raise errors.OpPrereqError("File storage disabled at configure time",
571
                               errors.ECODE_INVAL)
572

  
573

  
563 574
def _CheckDiskTemplate(template):
564 575
  """Ensure a given disk template is valid.
565 576

  
......
568 579
    msg = ("Invalid disk template name '%s', valid templates are: %s" %
569 580
           (template, utils.CommaJoin(constants.DISK_TEMPLATES)))
570 581
    raise errors.OpPrereqError(msg, errors.ECODE_INVAL)
571
  if template == constants.DT_FILE and not constants.ENABLE_FILE_STORAGE:
572
    raise errors.OpPrereqError("File storage disabled at configure time",
582
  if template == constants.DT_FILE:
583
    _RequireFileStorage()
584

  
585

  
586
def _CheckStorageType(storage_type):
587
  """Ensure a given storage type is valid.
588

  
589
  """
590
  if storage_type not in constants.VALID_STORAGE_TYPES:
591
    raise errors.OpPrereqError("Unknown storage type: %s" % storage_type,
573 592
                               errors.ECODE_INVAL)
593
  if storage_type == constants.ST_FILE:
594
    _RequireFileStorage()
595

  
574 596

  
575 597

  
576 598
def _CheckInstanceDown(lu, instance, reason):
......
3079 3101
  REQ_BGL = False
3080 3102
  _FIELDS_STATIC = utils.FieldSet(constants.SF_NODE)
3081 3103

  
3082
  def ExpandNames(self):
3083
    storage_type = self.op.storage_type
3084

  
3085
    if storage_type not in constants.VALID_STORAGE_TYPES:
3086
      raise errors.OpPrereqError("Unknown storage type: %s" % storage_type,
3087
                                 errors.ECODE_INVAL)
3104
  def CheckArguments(self):
3105
    _CheckStorageType(self.op.storage_type)
3088 3106

  
3089 3107
    _CheckOutputFields(static=self._FIELDS_STATIC,
3090 3108
                       dynamic=utils.FieldSet(*constants.VALID_STORAGE_FIELDS),
3091 3109
                       selected=self.op.output_fields)
3092 3110

  
3111
  def ExpandNames(self):
3093 3112
    self.needed_locks = {}
3094 3113
    self.share_locks[locking.LEVEL_NODE] = 1
3095 3114

  
......
3178 3197
  def CheckArguments(self):
3179 3198
    self.opnode_name = _ExpandNodeName(self.cfg, self.op.node_name)
3180 3199

  
3181
    storage_type = self.op.storage_type
3182
    if storage_type not in constants.VALID_STORAGE_TYPES:
3183
      raise errors.OpPrereqError("Unknown storage type: %s" % storage_type,
3184
                                 errors.ECODE_INVAL)
3200
    _CheckStorageType(self.op.storage_type)
3185 3201

  
3186 3202
  def ExpandNames(self):
3187 3203
    self.needed_locks = {
......
5808 5824
    if len(secondary_nodes) != 0:
5809 5825
      raise errors.ProgrammerError("Wrong template configuration")
5810 5826

  
5827
    _RequireFileStorage()
5828

  
5811 5829
    for idx, disk in enumerate(disk_info):
5812 5830
      disk_index = idx + base_index
5813 5831
      disk_dev = objects.Disk(dev_type=constants.LD_FILE, size=disk["size"],
......
6629 6647
    else:
6630 6648
      network_port = None
6631 6649

  
6632
    ##if self.op.vnc_bind_address is None:
6633
    ##  self.op.vnc_bind_address = constants.VNC_DEFAULT_BIND_ADDRESS
6650
    if constants.ENABLE_FILE_STORAGE:
6651
      # this is needed because os.path.join does not accept None arguments
6652
      if self.op.file_storage_dir is None:
6653
        string_file_storage_dir = ""
6654
      else:
6655
        string_file_storage_dir = self.op.file_storage_dir
6634 6656

  
6635
    # this is needed because os.path.join does not accept None arguments
6636
    if self.op.file_storage_dir is None:
6637
      string_file_storage_dir = ""
6657
      # build the full file storage dir path
6658
      file_storage_dir = utils.PathJoin(self.cfg.GetFileStorageDir(),
6659
                                        string_file_storage_dir, instance)
6638 6660
    else:
6639
      string_file_storage_dir = self.op.file_storage_dir
6640

  
6641
    # build the full file storage dir path
6642
    file_storage_dir = utils.PathJoin(self.cfg.GetFileStorageDir(),
6643
                                      string_file_storage_dir, instance)
6661
      file_storage_dir = ""
6644 6662

  
6645 6663

  
6646 6664
    disks = _GenerateDiskTemplate(self,
......
7660 7678
  def CheckArguments(self):
7661 7679
    self.op.node_name = _ExpandNodeName(self.cfg, self.op.node_name)
7662 7680

  
7681
    _CheckStorageType(self.op.storage_type)
7682

  
7663 7683
  def ExpandNames(self):
7664 7684
    self.needed_locks = {
7665 7685
      locking.LEVEL_NODE: [self.op.node_name],

Also available in: Unified diff