{ name :: String -- ^ The instance name
, alias :: String -- ^ The shortened name
, mem :: Int -- ^ Memory of the instance
- , dsk :: Int -- ^ Disk size of instance
+ , dsk :: Int -- ^ Total disk usage of the instance
+ , disks :: [Int] -- ^ Sizes of the individual disks
, vcpus :: Int -- ^ Number of VCPUs
, runSt :: T.InstanceStatus -- ^ Original run status
, pNode :: T.Ndx -- ^ Original primary node
, alias = name_init
, mem = mem_init
, dsk = dsk_init
+ , disks = [dsk_init]
, vcpus = vcpus_init
, runSt = run_init
, pNode = pn
instBelowISpec :: Instance -> T.ISpec -> T.OpResult ()
instBelowISpec inst ispec
| mem inst > T.iSpecMemorySize ispec = Bad T.FailMem
- | dsk inst > T.iSpecDiskSize ispec = Bad T.FailDisk
+ | any (> T.iSpecDiskSize ispec) (disks inst) = Bad T.FailDisk
| vcpus inst > T.iSpecCpuCount ispec = Bad T.FailCPU
| otherwise = Ok ()
instAboveISpec :: Instance -> T.ISpec -> T.OpResult ()
instAboveISpec inst ispec
| mem inst < T.iSpecMemorySize ispec = Bad T.FailMem
- | dsk inst < T.iSpecDiskSize ispec = Bad T.FailDisk
+ | any (< T.iSpecDiskSize ispec) (disks inst) = Bad T.FailDisk
| vcpus inst < T.iSpecCpuCount ispec = Bad T.FailCPU
| otherwise = Ok ()