Revision 1a0dacf6 src/Ganeti/Query/Instance.hs
b/src/Ganeti/Query/Instance.hs | ||
---|---|---|
177 | 177 |
[ (FieldDefinition "disk_usage" "DiskUsage" QFTUnit |
178 | 178 |
"Total disk space used by instance on each of its nodes; this is not the\ |
179 | 179 |
\ disk size visible to the instance, but the usage on the node", |
180 |
FieldSimple (rsNormal . getDiskSizeRequirements), QffNormal)
|
|
180 |
FieldConfig getDiskSizeRequirements, QffNormal)
|
|
181 | 181 |
, (FieldDefinition "disk.count" "Disks" QFTNumber |
182 | 182 |
"Number of disks", |
183 | 183 |
FieldSimple (rsNormal . length . instDisks), QffNormal) |
184 | 184 |
, (FieldDefinition "disk.sizes" "Disk_sizes" QFTOther |
185 | 185 |
"List of disk sizes", |
186 |
FieldSimple (rsNormal . map diskSize . instDisks), QffNormal)
|
|
186 |
FieldConfig getDiskSizes, QffNormal)
|
|
187 | 187 |
, (FieldDefinition "disk.spindles" "Disk_spindles" QFTOther |
188 | 188 |
"List of disk spindles", |
189 |
FieldSimple (rsNormal . map (MaybeForJSON . diskSpindles) . |
|
190 |
instDisks), |
|
191 |
QffNormal) |
|
189 |
FieldConfig getDiskSpindles, QffNormal) |
|
192 | 190 |
, (FieldDefinition "disk.names" "Disk_names" QFTOther |
193 | 191 |
"List of disk names", |
194 |
FieldSimple (rsNormal . map (MaybeForJSON . diskName) . |
|
195 |
instDisks), |
|
196 |
QffNormal) |
|
192 |
FieldConfig getDiskNames, QffNormal) |
|
197 | 193 |
, (FieldDefinition "disk.uuids" "Disk_UUIDs" QFTOther |
198 | 194 |
"List of disk UUIDs", |
199 |
FieldSimple (rsNormal . map diskUuid . instDisks), QffNormal)
|
|
195 |
FieldConfig getDiskUuids, QffNormal)
|
|
200 | 196 |
] ++ |
201 | 197 |
|
202 | 198 |
-- Per-disk parameter fields |
203 |
instantiateIndexedFields C.maxDisks |
|
204 |
[ (fieldDefinitionCompleter "disk.size/%d" "Disk/%d" QFTUnit |
|
205 |
"Disk size of %s disk", |
|
206 |
getIndexedField instDisks diskSize, QffNormal) |
|
207 |
, (fieldDefinitionCompleter "disk.spindles/%d" "DiskSpindles/%d" QFTNumber |
|
208 |
"Spindles of %s disk", |
|
209 |
getIndexedOptionalField instDisks diskSpindles, QffNormal) |
|
210 |
, (fieldDefinitionCompleter "disk.name/%d" "DiskName/%d" QFTText |
|
211 |
"Name of %s disk", |
|
212 |
getIndexedOptionalField instDisks diskName, QffNormal) |
|
213 |
, (fieldDefinitionCompleter "disk.uuid/%d" "DiskUUID/%d" QFTText |
|
214 |
"UUID of %s disk", |
|
215 |
getIndexedField instDisks diskUuid, QffNormal) |
|
216 |
] ++ |
|
199 |
--instantiateIndexedFields C.maxDisks
|
|
200 |
--[ (fieldDefinitionCompleter "disk.size/%d" "Disk/%d" QFTUnit
|
|
201 |
-- "Disk size of %s disk",
|
|
202 |
-- getIndexedField instDisks diskSize, QffNormal)
|
|
203 |
--, (fieldDefinitionCompleter "disk.spindles/%d" "DiskSpindles/%d" QFTNumber
|
|
204 |
-- "Spindles of %s disk",
|
|
205 |
-- getIndexedOptionalField instDisks diskSpindles, QffNormal)
|
|
206 |
--, (fieldDefinitionCompleter "disk.name/%d" "DiskName/%d" QFTText
|
|
207 |
-- "Name of %s disk",
|
|
208 |
-- getIndexedOptionalField instDisks diskName, QffNormal)
|
|
209 |
--, (fieldDefinitionCompleter "disk.uuid/%d" "DiskUUID/%d" QFTText
|
|
210 |
-- "UUID of %s disk",
|
|
211 |
-- getIndexedField instDisks diskUuid, QffNormal)
|
|
212 |
--] ++
|
|
217 | 213 |
|
218 | 214 |
-- Aggregate nic parameter fields |
219 | 215 |
[ (FieldDefinition "nic.count" "NICs" QFTNumber |
... | ... | |
358 | 354 |
getDefaultNicParams cfg = |
359 | 355 |
(Map.!) (fromContainer . clusterNicparams . configCluster $ cfg) C.ppDefault |
360 | 356 |
|
357 |
-- | Retrieves the real disk size requirements for all the disks of the |
|
358 |
-- instance. This includes the metadata etc. and is different from the values |
|
359 |
-- visible to the instance. |
|
360 |
getDiskSizeRequirements :: ConfigData -> Instance -> ResultEntry |
|
361 |
getDiskSizeRequirements cfg inst = |
|
362 |
rsErrorNoData . liftA (sum . map getSizes) . getInstDisks cfg $ instName inst |
|
363 |
where |
|
364 |
getSizes :: Disk -> Int |
|
365 |
getSizes disk = |
|
366 |
case instDiskTemplate inst of |
|
367 |
DTDrbd8 -> diskSize disk + C.drbdMetaSize |
|
368 |
DTDiskless -> 0 |
|
369 |
DTBlock -> 0 |
|
370 |
_ -> diskSize disk |
|
371 |
|
|
372 |
-- | Get a list of disk sizes for an instance |
|
373 |
getDiskSizes :: ConfigData -> Instance -> ResultEntry |
|
374 |
getDiskSizes cfg = |
|
375 |
rsErrorNoData . liftA (map diskSize) . getInstDisks cfg . instName |
|
376 |
|
|
377 |
-- | Get a list of disk spindles |
|
378 |
getDiskSpindles :: ConfigData -> Instance -> ResultEntry |
|
379 |
getDiskSpindles cfg = |
|
380 |
rsErrorNoData . liftA (map (MaybeForJSON . diskSpindles)) . |
|
381 |
getInstDisks cfg . instName |
|
382 |
|
|
383 |
-- | Get a list of disk names for an instance |
|
384 |
getDiskNames :: ConfigData -> Instance -> ResultEntry |
|
385 |
getDiskNames cfg = |
|
386 |
rsErrorNoData . liftA (map (MaybeForJSON . diskName)) . |
|
387 |
getInstDisks cfg . instName |
|
388 |
|
|
389 |
-- | Get a list of disk UUIDs for an instance |
|
390 |
getDiskUuids :: ConfigData -> Instance -> ResultEntry |
|
391 |
getDiskUuids cfg = |
|
392 |
rsErrorNoData . liftA (map diskUuid) . getInstDisks cfg . instName |
|
393 |
|
|
361 | 394 |
-- | Returns a field that retrieves a given NIC's network name. |
362 | 395 |
getIndexedNicNetworkNameField :: Int -> FieldGetter Instance Runtime |
363 | 396 |
getIndexedNicNetworkNameField index = |
Also available in: Unified diff