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