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