Revision b54ecf12

b/lib/cmdlib/instance_storage.py
510 510
                              logical_id=logical_id_fn(idx, disk_index, disk),
511 511
                              iv_name="disk/%d" % disk_index,
512 512
                              mode=disk[constants.IDISK_MODE],
513
                              params=params)
513
                              params=params,
514
                              spindles=disk.get(constants.IDISK_SPINDLES))
514 515
      disk_dev.name = disk.get(constants.IDISK_NAME, None)
515 516
      disk_dev.uuid = lu.cfg.GenerateUniqueID(lu.proc.GetECId())
516 517
      disks.append(disk_dev)
......
833 834
        disk.logical_id = new_id
834 835
      if changes:
835 836
        disk.Update(size=changes.get(constants.IDISK_SIZE, None),
836
                    mode=changes.get(constants.IDISK_MODE, None))
837
                    mode=changes.get(constants.IDISK_MODE, None),
838
                    spindles=changes.get(constants.IDISK_SPINDLES, None))
837 839

  
838 840
    # change primary node, if needed
839 841
    if self.op.nodes:
b/lib/objects.py
512 512

  
513 513
class Disk(ConfigObject):
514 514
  """Config object representing a block device."""
515
  __slots__ = ["name", "dev_type", "logical_id", "physical_id",
516
               "children", "iv_name", "size", "mode", "params"] + _UUID
515
  __slots__ = (["name", "dev_type", "logical_id", "physical_id",
516
                "children", "iv_name", "size", "mode", "params", "spindles"] +
517
               _UUID)
517 518

  
518 519
  def CreateOnSecondary(self):
519 520
    """Test if this device needs to be created on a secondary node."""
......
674 675
      raise errors.ProgrammerError("Disk.RecordGrow called for unsupported"
675 676
                                   " disk type %s" % self.dev_type)
676 677

  
677
  def Update(self, size=None, mode=None):
678
    """Apply changes to size and mode.
678
  def Update(self, size=None, mode=None, spindles=None):
679
    """Apply changes to size, spindles and mode.
679 680

  
680 681
    """
681 682
    if self.dev_type == constants.LD_DRBD8:
......
688 689
      self.size = size
689 690
    if mode is not None:
690 691
      self.mode = mode
692
    if spindles is not None:
693
      self.spindles = spindles
691 694

  
692 695
  def UnsetSize(self):
693 696
    """Sets recursively the size to zero for the disk and its children.
......
804 807
      val += ", not visible"
805 808
    else:
806 809
      val += ", visible as /dev/%s" % self.iv_name
810
    if self.spindles is not None:
811
      val += ", spindles=%s" % self.spindles
807 812
    if isinstance(self.size, int):
808 813
      val += ", size=%dm)>" % self.size
809 814
    else:
b/src/Ganeti/Objects.hs
426 426
  , diskSize       :: Int
427 427
  , diskMode       :: DiskMode
428 428
  , diskName       :: Maybe String
429
  , diskSpindles   :: Maybe Int
429 430
  , diskUuid       :: String
430 431
  } deriving (Show, Eq)
431 432

  
......
438 439
  , simpleField "size" [t| Int |]
439 440
  , defaultField [| DiskRdWr |] $ simpleField "mode" [t| DiskMode |]
440 441
  , optionalField $ simpleField "name" [t| String |]
442
  , optionalField $ simpleField "spindles" [t| Int |]
441 443
  ]
442 444
  ++ uuidFields)
443 445

  
b/test/hs/Test/Ganeti/Objects.hs
93 93
instance Arbitrary Disk where
94 94
  arbitrary = Disk <$> arbitrary <*> pure [] <*> arbitrary
95 95
                   <*> arbitrary <*> arbitrary <*> arbitrary
96
                   <*> arbitrary
96
                   <*> arbitrary <*> arbitrary
97 97

  
98 98
-- FIXME: we should generate proper values, >=0, etc., but this is
99 99
-- hard for partial ones, where all must be wrapped in a 'Maybe'
......
179 179
  size <- arbitrary
180 180
  mode <- arbitrary
181 181
  name <- genMaybe genName
182
  spindles <- arbitrary
182 183
  uuid <- genName
183
  let disk = Disk logicalid children ivname size mode name uuid
184
  let disk = Disk logicalid children ivname size mode name spindles uuid
184 185
  return disk
185 186

  
186 187
genDisk :: Gen Disk

Also available in: Unified diff