Revision bc5d0215 lib/cmdlib.py

b/lib/cmdlib.py
3496 3496
    if self.op.master_netmask is not None:
3497 3497
      _ValidateNetmask(self.cfg, self.op.master_netmask)
3498 3498

  
3499
    if self.op.diskparams:
3500
      for dt_params in self.op.diskparams.values():
3501
        utils.ForceDictType(dt_params, constants.DISK_DT_TYPES)
3502

  
3499 3503
  def ExpandNames(self):
3500 3504
    # FIXME: in the future maybe other cluster params won't require checking on
3501 3505
    # all nodes to be modified.
......
3628 3632
        else:
3629 3633
          self.new_hvparams[hv_name].update(hv_dict)
3630 3634

  
3635
    # disk template parameters
3636
    self.new_diskparams = objects.FillDict(cluster.diskparams, {})
3637
    if self.op.diskparams:
3638
      for dt_name, dt_params in self.op.diskparams.items():
3639
        if dt_name not in self.op.diskparams:
3640
          self.new_diskparams[dt_name] = dt_params
3641
        else:
3642
          self.new_diskparams[dt_name].update(dt_params)
3643

  
3631 3644
    # os hypervisor parameters
3632 3645
    self.new_os_hvp = objects.FillDict(cluster.os_hvp, {})
3633 3646
    if self.op.os_hvp:
......
3746 3759
      self.cluster.osparams = self.new_osp
3747 3760
    if self.op.ndparams:
3748 3761
      self.cluster.ndparams = self.new_ndparams
3762
    if self.op.diskparams:
3763
      self.cluster.diskparams = self.new_diskparams
3749 3764

  
3750 3765
    if self.op.candidate_pool_size is not None:
3751 3766
      self.cluster.candidate_pool_size = self.op.candidate_pool_size
......
12463 12478
    if self.op.ndparams:
12464 12479
      utils.ForceDictType(self.op.ndparams, constants.NDS_PARAMETER_TYPES)
12465 12480

  
12481
    if self.op.diskparams:
12482
      for templ in constants.DISK_TEMPLATES:
12483
        if templ not in self.op.diskparams:
12484
          self.op.diskparams[templ] = {}
12485
        utils.ForceDictType(self.op.diskparams[templ], constants.DISK_DT_TYPES)
12486
    else:
12487
      self.op.diskparams = self.cfg.GetClusterInfo().diskparams
12488

  
12466 12489
  def BuildHooksEnv(self):
12467 12490
    """Build hooks env.
12468 12491

  
......
12485 12508
    group_obj = objects.NodeGroup(name=self.op.group_name, members=[],
12486 12509
                                  uuid=self.group_uuid,
12487 12510
                                  alloc_policy=self.op.alloc_policy,
12488
                                  ndparams=self.op.ndparams)
12511
                                  ndparams=self.op.ndparams,
12512
                                  diskparams=self.op.diskparams)
12489 12513

  
12490 12514
    self.cfg.AddNodeGroup(group_obj, self.proc.GetECId(), check_uuid=False)
12491 12515
    del self.remove_locks[locking.LEVEL_NODEGROUP]
......
12732 12756
  def CheckArguments(self):
12733 12757
    all_changes = [
12734 12758
      self.op.ndparams,
12759
      self.op.diskparams,
12735 12760
      self.op.alloc_policy,
12736 12761
      ]
12737 12762

  
......
12762 12787
      utils.ForceDictType(self.op.ndparams, constants.NDS_PARAMETER_TYPES)
12763 12788
      self.new_ndparams = new_ndparams
12764 12789

  
12790
    if self.op.diskparams:
12791
      self.new_diskparams = dict()
12792
      for templ in constants.DISK_TEMPLATES:
12793
        if templ not in self.op.diskparams:
12794
          self.op.diskparams[templ] = {}
12795
        new_templ_params = _GetUpdatedParams(self.group.diskparams[templ],
12796
                                             self.op.diskparams[templ])
12797
        utils.ForceDictType(new_templ_params, constants.DISK_DT_TYPES)
12798
        self.new_diskparams[templ] = new_templ_params
12799

  
12765 12800
  def BuildHooksEnv(self):
12766 12801
    """Build hooks env.
12767 12802

  
......
12788 12823
      self.group.ndparams = self.new_ndparams
12789 12824
      result.append(("ndparams", str(self.group.ndparams)))
12790 12825

  
12826
    if self.op.diskparams:
12827
      self.group.diskparams = self.new_diskparams
12828
      result.append(("diskparams", str(self.group.diskparams)))
12829

  
12791 12830
    if self.op.alloc_policy:
12792 12831
      self.group.alloc_policy = self.op.alloc_policy
12793 12832

  

Also available in: Unified diff