Revision 7034694d

b/htools/Ganeti/HTools/Cluster.hs
120 120
data Table = Table Node.List Instance.List Score [Placement]
121 121
             deriving (Show, Read)
122 122

  
123
data CStats = CStats { csFmem :: Int    -- ^ Cluster free mem
124
                     , csFdsk :: Int    -- ^ Cluster free disk
125
                     , csAmem :: Int    -- ^ Cluster allocatable mem
126
                     , csAdsk :: Int    -- ^ Cluster allocatable disk
127
                     , csAcpu :: Int    -- ^ Cluster allocatable cpus
128
                     , csMmem :: Int    -- ^ Max node allocatable mem
129
                     , csMdsk :: Int    -- ^ Max node allocatable disk
130
                     , csMcpu :: Int    -- ^ Max node allocatable cpu
131
                     , csImem :: Int    -- ^ Instance used mem
132
                     , csIdsk :: Int    -- ^ Instance used disk
133
                     , csIcpu :: Int    -- ^ Instance used cpu
134
                     , csTmem :: Double -- ^ Cluster total mem
135
                     , csTdsk :: Double -- ^ Cluster total disk
136
                     , csTcpu :: Double -- ^ Cluster total cpus
137
                     , csVcpu :: Int    -- ^ Cluster virtual cpus (if
138
                                        -- node pCpu has been set,
139
                                        -- otherwise -1)
140
                     , csXmem :: Int    -- ^ Unnacounted for mem
141
                     , csNmem :: Int    -- ^ Node own memory
142
                     , csScore :: Score -- ^ The cluster score
143
                     , csNinst :: Int   -- ^ The total number of instances
123
data CStats = CStats { csFmem :: Integer -- ^ Cluster free mem
124
                     , csFdsk :: Integer -- ^ Cluster free disk
125
                     , csAmem :: Integer -- ^ Cluster allocatable mem
126
                     , csAdsk :: Integer -- ^ Cluster allocatable disk
127
                     , csAcpu :: Integer -- ^ Cluster allocatable cpus
128
                     , csMmem :: Integer -- ^ Max node allocatable mem
129
                     , csMdsk :: Integer -- ^ Max node allocatable disk
130
                     , csMcpu :: Integer -- ^ Max node allocatable cpu
131
                     , csImem :: Integer -- ^ Instance used mem
132
                     , csIdsk :: Integer -- ^ Instance used disk
133
                     , csIcpu :: Integer -- ^ Instance used cpu
134
                     , csTmem :: Double  -- ^ Cluster total mem
135
                     , csTdsk :: Double  -- ^ Cluster total disk
136
                     , csTcpu :: Double  -- ^ Cluster total cpus
137
                     , csVcpu :: Integer -- ^ Cluster virtual cpus (if
138
                                         -- node pCpu has been set,
139
                                         -- otherwise -1)
140
                     , csXmem :: Integer -- ^ Unnacounted for mem
141
                     , csNmem :: Integer -- ^ Node own memory
142
                     , csScore :: Score  -- ^ The cluster score
143
                     , csNinst :: Int    -- ^ The total number of instances
144 144
                     }
145 145
            deriving (Show, Read)
146 146

  
......
196 196
        inc_vcpu = Node.hiCpu node
197 197
        inc_acpu = Node.availCpu node
198 198

  
199
    in cs { csFmem = x_fmem + Node.fMem node
200
          , csFdsk = x_fdsk + Node.fDsk node
201
          , csAmem = x_amem + inc_amem'
202
          , csAdsk = x_adsk + inc_adsk
203
          , csAcpu = x_acpu + inc_acpu
204
          , csMmem = max x_mmem inc_amem'
205
          , csMdsk = max x_mdsk inc_adsk
206
          , csMcpu = max x_mcpu inc_acpu
207
          , csImem = x_imem + inc_imem
208
          , csIdsk = x_idsk + inc_idsk
209
          , csIcpu = x_icpu + inc_icpu
199
    in cs { csFmem = x_fmem + fromIntegral (Node.fMem node)
200
          , csFdsk = x_fdsk + fromIntegral (Node.fDsk node)
201
          , csAmem = x_amem + fromIntegral inc_amem'
202
          , csAdsk = x_adsk + fromIntegral inc_adsk
203
          , csAcpu = x_acpu + fromIntegral inc_acpu
204
          , csMmem = max x_mmem (fromIntegral inc_amem')
205
          , csMdsk = max x_mdsk (fromIntegral inc_adsk)
206
          , csMcpu = max x_mcpu (fromIntegral inc_acpu)
207
          , csImem = x_imem + fromIntegral inc_imem
208
          , csIdsk = x_idsk + fromIntegral inc_idsk
209
          , csIcpu = x_icpu + fromIntegral inc_icpu
210 210
          , csTmem = x_tmem + Node.tMem node
211 211
          , csTdsk = x_tdsk + Node.tDsk node
212 212
          , csTcpu = x_tcpu + Node.tCpu node
213
          , csVcpu = x_vcpu + inc_vcpu
214
          , csXmem = x_xmem + Node.xMem node
215
          , csNmem = x_nmem + Node.nMem node
213
          , csVcpu = x_vcpu + fromIntegral inc_vcpu
214
          , csXmem = x_xmem + fromIntegral (Node.xMem node)
215
          , csNmem = x_nmem + fromIntegral (Node.nMem node)
216 216
          , csNinst = x_ninst + length (Node.pList node)
217 217
          }
218 218

  
......
233 233
    let CStats {csImem = i_imem, csIdsk = i_idsk, csIcpu = i_icpu} = cini
234 234
        CStats {csImem = f_imem, csIdsk = f_idsk, csIcpu = f_icpu,
235 235
                csTmem = t_mem, csTdsk = t_dsk, csVcpu = v_cpu } = cfin
236
        rini = RSpec i_icpu i_imem i_idsk
237
        rfin = RSpec (f_icpu - i_icpu) (f_imem - i_imem) (f_idsk - i_idsk)
238
        un_cpu = v_cpu - f_icpu
239
        runa = RSpec un_cpu (truncate t_mem - f_imem) (truncate t_dsk - f_idsk)
236
        rini = RSpec (fromIntegral i_icpu) (fromIntegral i_imem)
237
               (fromIntegral i_idsk)
238
        rfin = RSpec (fromIntegral (f_icpu - i_icpu))
239
               (fromIntegral (f_imem - i_imem))
240
               (fromIntegral (f_idsk - i_idsk))
241
        un_cpu = fromIntegral (v_cpu - f_icpu)::Int
242
        runa = RSpec un_cpu (truncate t_mem - fromIntegral f_imem)
243
               (truncate t_dsk - fromIntegral f_idsk)
240 244
    in (rini, rfin, runa)
241 245

  
242 246
-- | The names and weights of the individual elements in the CV list

Also available in: Unified diff