From e51e0f88b31abe34417e66597da29d9e63df5364 Mon Sep 17 00:00:00 2001 From: Klaus Aehlig <aehlig@google.com> Date: Tue, 9 Apr 2013 14:29:59 +0200 Subject: [PATCH] Verify individual disks in Instance Instance policy on disks is specified on a per-disk basis. So extend the instance description by the sizes of the individual disks and modify the instance policy verification to correctly check individual disks. Signed-off-by: Klaus Aehlig <aehlig@google.com> Reviewed-by: Guido Trotter <ultrotter@google.com> --- src/Ganeti/HTools/Instance.hs | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/src/Ganeti/HTools/Instance.hs b/src/Ganeti/HTools/Instance.hs index 9c20af1b2..6dd6c6b2a 100644 --- a/src/Ganeti/HTools/Instance.hs +++ b/src/Ganeti/HTools/Instance.hs @@ -70,7 +70,8 @@ data Instance = Instance { 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 @@ -171,6 +172,7 @@ create name_init mem_init dsk_init vcpus_init run_init tags_init , alias = name_init , mem = mem_init , dsk = dsk_init + , disks = [dsk_init] , vcpus = vcpus_init , runSt = run_init , pNode = pn @@ -265,7 +267,7 @@ specOf Instance { mem = m, dsk = d, vcpus = c } = 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 () @@ -273,7 +275,7 @@ instBelowISpec inst ispec 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 () -- GitLab