Revision 8c4c6a8a Ganeti/HTools/Cluster.hs

b/Ganeti/HTools/Cluster.hs
90 90
data Table = Table Node.List Instance.List Score [Placement]
91 91
             deriving (Show)
92 92

  
93
data CStats = CStats { cs_fmem :: Int -- ^ Cluster free mem
94
                     , cs_fdsk :: Int -- ^ Cluster free disk
95
                     , cs_amem :: Int -- ^ Cluster allocatable mem
96
                     , cs_adsk :: Int -- ^ Cluster allocatable disk
97
                     , cs_acpu :: Int -- ^ Cluster allocatable cpus
98
                     , cs_mmem :: Int -- ^ Max node allocatable mem
99
                     , cs_mdsk :: Int -- ^ Max node allocatable disk
100
                     , cs_mcpu :: Int -- ^ Max node allocatable cpu
93
data CStats = CStats { cs_fmem :: Int    -- ^ Cluster free mem
94
                     , cs_fdsk :: Int    -- ^ Cluster free disk
95
                     , cs_amem :: Int    -- ^ Cluster allocatable mem
96
                     , cs_adsk :: Int    -- ^ Cluster allocatable disk
97
                     , cs_acpu :: Int    -- ^ Cluster allocatable cpus
98
                     , cs_mmem :: Int    -- ^ Max node allocatable mem
99
                     , cs_mdsk :: Int    -- ^ Max node allocatable disk
100
                     , cs_mcpu :: Int    -- ^ Max node allocatable cpu
101
                     , cs_imem :: Int    -- ^ Instance used mem
102
                     , cs_idsk :: Int    -- ^ Instance used disk
103
                     , cs_icpu :: Int    -- ^ Instance used cpu
104
                     , cs_tmem :: Double -- ^ Cluster total mem
105
                     , cs_tdsk :: Double -- ^ Cluster total disk
106
                     , cs_tcpu :: Double -- ^ Cluster total cpus
107
                     , cs_xmem :: Int    -- ^ Unnacounted for mem
108
                     , cs_nmem :: Int    -- ^ Node own memory
101 109
                     }
102 110

  
103 111
-- * Utility functions
......
132 140
                     , cs_mmem = 0
133 141
                     , cs_mdsk = 0
134 142
                     , cs_mcpu = 0
143
                     , cs_imem = 0
144
                     , cs_idsk = 0
145
                     , cs_icpu = 0
146
                     , cs_tmem = 0
147
                     , cs_tdsk = 0
148
                     , cs_tcpu = 0
149
                     , cs_xmem = 0
150
                     , cs_nmem = 0
135 151
                     }
136 152

  
137 153
updateCStats :: CStats -> Node.Node -> CStats
138 154
updateCStats cs node =
139 155
    let CStats { cs_fmem = x_fmem, cs_fdsk = x_fdsk,
140 156
                 cs_amem = x_amem, cs_acpu = x_acpu, cs_adsk = x_adsk,
141
                 cs_mmem = x_mmem, cs_mdsk = x_mdsk, cs_mcpu = x_mcpu }
157
                 cs_mmem = x_mmem, cs_mdsk = x_mdsk, cs_mcpu = x_mcpu,
158
                 cs_imem = x_imem, cs_idsk = x_idsk, cs_icpu = x_icpu,
159
                 cs_tmem = x_tmem, cs_tdsk = x_tdsk, cs_tcpu = x_tcpu,
160
                 cs_xmem = x_xmem, cs_nmem = x_nmem
161
               }
142 162
            = cs
143 163
        inc_amem = Node.f_mem node - Node.r_mem node
144 164
        inc_amem' = if inc_amem > 0 then inc_amem else 0
145 165
        inc_adsk = Node.availDisk node
166
        inc_imem = truncate (Node.t_mem node) - Node.n_mem node
167
                   - Node.x_mem node - Node.f_mem node
168
        inc_icpu = Node.u_cpu node
169
        inc_idsk = truncate (Node.t_dsk node) - Node.f_dsk node
170

  
146 171
    in CStats { cs_fmem = x_fmem + Node.f_mem node
147 172
              , cs_fdsk = x_fdsk + Node.f_dsk node
148 173
              , cs_amem = x_amem + inc_amem'
......
151 176
              , cs_mmem = max x_mmem inc_amem'
152 177
              , cs_mdsk = max x_mdsk inc_adsk
153 178
              , cs_mcpu = x_mcpu
179
              , cs_imem = x_imem + inc_imem
180
              , cs_idsk = x_idsk + inc_idsk
181
              , cs_icpu = x_icpu + inc_icpu
182
              , cs_tmem = x_tmem + Node.t_mem node
183
              , cs_tdsk = x_tdsk + Node.t_dsk node
184
              , cs_tcpu = x_tcpu + Node.t_cpu node
185
              , cs_xmem = x_xmem + Node.x_mem node
186
              , cs_nmem = x_nmem + Node.n_mem node
154 187
              }
155 188

  
156 189
-- | Compute the total free disk and memory in the cluster.

Also available in: Unified diff