Statistics
| Branch: | Tag: | Revision:

root / src / Ganeti / Query / Group.hs @ 88772d17

History | View | Annotate | Download (3.3 kB)

1 40246fa0 Agata Murawska
{-| Implementation of the Ganeti Query2 node group queries.
2 40246fa0 Agata Murawska
3 40246fa0 Agata Murawska
 -}
4 40246fa0 Agata Murawska
5 40246fa0 Agata Murawska
{-
6 40246fa0 Agata Murawska
7 36162faf Iustin Pop
Copyright (C) 2012, 2013 Google Inc.
8 40246fa0 Agata Murawska
9 40246fa0 Agata Murawska
This program is free software; you can redistribute it and/or modify
10 40246fa0 Agata Murawska
it under the terms of the GNU General Public License as published by
11 40246fa0 Agata Murawska
the Free Software Foundation; either version 2 of the License, or
12 40246fa0 Agata Murawska
(at your option) any later version.
13 40246fa0 Agata Murawska
14 40246fa0 Agata Murawska
This program is distributed in the hope that it will be useful, but
15 40246fa0 Agata Murawska
WITHOUT ANY WARRANTY; without even the implied warranty of
16 40246fa0 Agata Murawska
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
17 40246fa0 Agata Murawska
General Public License for more details.
18 40246fa0 Agata Murawska
19 40246fa0 Agata Murawska
You should have received a copy of the GNU General Public License
20 40246fa0 Agata Murawska
along with this program; if not, write to the Free Software
21 40246fa0 Agata Murawska
Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
22 40246fa0 Agata Murawska
02110-1301, USA.
23 40246fa0 Agata Murawska
24 40246fa0 Agata Murawska
-}
25 40246fa0 Agata Murawska
26 40246fa0 Agata Murawska
module Ganeti.Query.Group
27 d286d795 Hrvoje Ribicic
  (fieldsMap) where
28 40246fa0 Agata Murawska
29 40246fa0 Agata Murawska
import Ganeti.Config
30 40246fa0 Agata Murawska
import Ganeti.Objects
31 40246fa0 Agata Murawska
import Ganeti.Query.Language
32 40246fa0 Agata Murawska
import Ganeti.Query.Common
33 40246fa0 Agata Murawska
import Ganeti.Query.Types
34 ce906289 Iustin Pop
import Ganeti.Utils (niceSort)
35 40246fa0 Agata Murawska
36 d286d795 Hrvoje Ribicic
groupFields :: FieldList NodeGroup NoDataRuntime
37 40246fa0 Agata Murawska
groupFields =
38 40246fa0 Agata Murawska
  [ (FieldDefinition "alloc_policy" "AllocPolicy" QFTText
39 40246fa0 Agata Murawska
       "Allocation policy for group",
40 f94a9680 Iustin Pop
     FieldSimple (rsNormal . groupAllocPolicy), QffNormal)
41 40246fa0 Agata Murawska
  , (FieldDefinition "custom_diskparams" "CustomDiskParameters" QFTOther
42 40246fa0 Agata Murawska
       "Custom disk parameters",
43 f94a9680 Iustin Pop
     FieldSimple (rsNormal . groupDiskparams), QffNormal)
44 40246fa0 Agata Murawska
  , (FieldDefinition "custom_ipolicy" "CustomInstancePolicy" QFTOther
45 40246fa0 Agata Murawska
       "Custom instance policy limitations",
46 f94a9680 Iustin Pop
     FieldSimple (rsNormal . groupIpolicy), QffNormal)
47 40246fa0 Agata Murawska
  , (FieldDefinition "custom_ndparams" "CustomNDParams" QFTOther
48 40246fa0 Agata Murawska
       "Custom node parameters",
49 f94a9680 Iustin Pop
     FieldSimple (rsNormal . groupNdparams), QffNormal)
50 40246fa0 Agata Murawska
  , (FieldDefinition "diskparams" "DiskParameters" QFTOther
51 90d033ef Iustin Pop
       "Disk parameters (merged)",
52 f94a9680 Iustin Pop
     FieldConfig (\cfg -> rsNormal . getGroupDiskParams cfg), QffNormal)
53 40246fa0 Agata Murawska
  , (FieldDefinition "ipolicy" "InstancePolicy" QFTOther
54 40246fa0 Agata Murawska
       "Instance policy limitations (merged)",
55 f94a9680 Iustin Pop
     FieldConfig (\cfg ng -> rsNormal (getGroupIpolicy cfg ng)), QffNormal)
56 40246fa0 Agata Murawska
  , (FieldDefinition "name" "Group" QFTText "Group name",
57 f94a9680 Iustin Pop
     FieldSimple (rsNormal . groupName), QffNormal)
58 40246fa0 Agata Murawska
  , (FieldDefinition "ndparams" "NDParams" QFTOther "Node parameters",
59 f94a9680 Iustin Pop
     FieldConfig (\cfg ng -> rsNormal (getGroupNdParams cfg ng)), QffNormal)
60 40246fa0 Agata Murawska
  , (FieldDefinition "node_cnt" "Nodes" QFTNumber "Number of nodes",
61 e7124835 Iustin Pop
     FieldConfig (\cfg -> rsNormal . length . getGroupNodes cfg . groupUuid),
62 f94a9680 Iustin Pop
     QffNormal)
63 40246fa0 Agata Murawska
  , (FieldDefinition "node_list" "NodeList" QFTOther "List of nodes",
64 40246fa0 Agata Murawska
     FieldConfig (\cfg -> rsNormal . map nodeName .
65 e7124835 Iustin Pop
                          getGroupNodes cfg . groupUuid), QffNormal)
66 40246fa0 Agata Murawska
  , (FieldDefinition "pinst_cnt" "Instances" QFTNumber
67 40246fa0 Agata Murawska
       "Number of primary instances",
68 40246fa0 Agata Murawska
     FieldConfig
69 e7124835 Iustin Pop
       (\cfg -> rsNormal . length . fst . getGroupInstances cfg . groupUuid),
70 f94a9680 Iustin Pop
     QffNormal)
71 40246fa0 Agata Murawska
  , (FieldDefinition "pinst_list" "InstanceList" QFTOther
72 40246fa0 Agata Murawska
       "List of primary instances",
73 ce906289 Iustin Pop
     FieldConfig (\cfg -> rsNormal . niceSort . map instName . fst .
74 e7124835 Iustin Pop
                          getGroupInstances cfg . groupUuid), QffNormal)
75 40246fa0 Agata Murawska
  ] ++
76 40246fa0 Agata Murawska
  map buildNdParamField allNDParamFields ++
77 40246fa0 Agata Murawska
  timeStampFields ++
78 40246fa0 Agata Murawska
  uuidFields "Group" ++
79 40246fa0 Agata Murawska
  serialFields "Group" ++
80 40246fa0 Agata Murawska
  tagsFields
81 40246fa0 Agata Murawska
82 40246fa0 Agata Murawska
-- | The group fields map.
83 d286d795 Hrvoje Ribicic
fieldsMap :: FieldMap NodeGroup NoDataRuntime
84 c92b4671 Klaus Aehlig
fieldsMap = fieldListToFieldMap groupFields