Statistics
| Branch: | Tag: | Revision:

root / src / Ganeti / Query / Group.hs @ e7124835

History | View | Annotate | Download (3.6 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 d5b2753a Iustin Pop
  ( Runtime
28 36162faf Iustin Pop
  , fieldsMap
29 d5b2753a Iustin Pop
  , collectLiveData
30 40246fa0 Agata Murawska
  ) where
31 40246fa0 Agata Murawska
32 40246fa0 Agata Murawska
import qualified Data.Map as Map
33 40246fa0 Agata Murawska
34 40246fa0 Agata Murawska
import Ganeti.Config
35 40246fa0 Agata Murawska
import Ganeti.Objects
36 40246fa0 Agata Murawska
import Ganeti.Query.Language
37 40246fa0 Agata Murawska
import Ganeti.Query.Common
38 40246fa0 Agata Murawska
import Ganeti.Query.Types
39 40246fa0 Agata Murawska
40 40246fa0 Agata Murawska
-- | There is no runtime.
41 36162faf Iustin Pop
data Runtime = Runtime
42 40246fa0 Agata Murawska
43 36162faf Iustin Pop
groupFields :: FieldList NodeGroup Runtime
44 40246fa0 Agata Murawska
groupFields =
45 40246fa0 Agata Murawska
  [ (FieldDefinition "alloc_policy" "AllocPolicy" QFTText
46 40246fa0 Agata Murawska
       "Allocation policy for group",
47 f94a9680 Iustin Pop
     FieldSimple (rsNormal . groupAllocPolicy), QffNormal)
48 40246fa0 Agata Murawska
  , (FieldDefinition "custom_diskparams" "CustomDiskParameters" QFTOther
49 40246fa0 Agata Murawska
       "Custom disk parameters",
50 f94a9680 Iustin Pop
     FieldSimple (rsNormal . groupDiskparams), QffNormal)
51 40246fa0 Agata Murawska
  , (FieldDefinition "custom_ipolicy" "CustomInstancePolicy" QFTOther
52 40246fa0 Agata Murawska
       "Custom instance policy limitations",
53 f94a9680 Iustin Pop
     FieldSimple (rsNormal . groupIpolicy), QffNormal)
54 40246fa0 Agata Murawska
  , (FieldDefinition "custom_ndparams" "CustomNDParams" QFTOther
55 40246fa0 Agata Murawska
       "Custom node parameters",
56 f94a9680 Iustin Pop
     FieldSimple (rsNormal . groupNdparams), QffNormal)
57 40246fa0 Agata Murawska
  , (FieldDefinition "diskparams" "DiskParameters" QFTOther
58 90d033ef Iustin Pop
       "Disk parameters (merged)",
59 f94a9680 Iustin Pop
     FieldConfig (\cfg -> rsNormal . getGroupDiskParams cfg), QffNormal)
60 40246fa0 Agata Murawska
  , (FieldDefinition "ipolicy" "InstancePolicy" QFTOther
61 40246fa0 Agata Murawska
       "Instance policy limitations (merged)",
62 f94a9680 Iustin Pop
     FieldConfig (\cfg ng -> rsNormal (getGroupIpolicy cfg ng)), QffNormal)
63 40246fa0 Agata Murawska
  , (FieldDefinition "name" "Group" QFTText "Group name",
64 f94a9680 Iustin Pop
     FieldSimple (rsNormal . groupName), QffNormal)
65 40246fa0 Agata Murawska
  , (FieldDefinition "ndparams" "NDParams" QFTOther "Node parameters",
66 f94a9680 Iustin Pop
     FieldConfig (\cfg ng -> rsNormal (getGroupNdParams cfg ng)), QffNormal)
67 40246fa0 Agata Murawska
  , (FieldDefinition "node_cnt" "Nodes" QFTNumber "Number of nodes",
68 e7124835 Iustin Pop
     FieldConfig (\cfg -> rsNormal . length . getGroupNodes cfg . groupUuid),
69 f94a9680 Iustin Pop
     QffNormal)
70 40246fa0 Agata Murawska
  , (FieldDefinition "node_list" "NodeList" QFTOther "List of nodes",
71 40246fa0 Agata Murawska
     FieldConfig (\cfg -> rsNormal . map nodeName .
72 e7124835 Iustin Pop
                          getGroupNodes cfg . groupUuid), QffNormal)
73 40246fa0 Agata Murawska
  , (FieldDefinition "pinst_cnt" "Instances" QFTNumber
74 40246fa0 Agata Murawska
       "Number of primary instances",
75 40246fa0 Agata Murawska
     FieldConfig
76 e7124835 Iustin Pop
       (\cfg -> rsNormal . length . fst . getGroupInstances cfg . groupUuid),
77 f94a9680 Iustin Pop
     QffNormal)
78 40246fa0 Agata Murawska
  , (FieldDefinition "pinst_list" "InstanceList" QFTOther
79 40246fa0 Agata Murawska
       "List of primary instances",
80 40246fa0 Agata Murawska
     FieldConfig (\cfg -> rsNormal . map instName . fst .
81 e7124835 Iustin Pop
                          getGroupInstances cfg . groupUuid), QffNormal)
82 40246fa0 Agata Murawska
  ] ++
83 40246fa0 Agata Murawska
  map buildNdParamField allNDParamFields ++
84 40246fa0 Agata Murawska
  timeStampFields ++
85 40246fa0 Agata Murawska
  uuidFields "Group" ++
86 40246fa0 Agata Murawska
  serialFields "Group" ++
87 40246fa0 Agata Murawska
  tagsFields
88 40246fa0 Agata Murawska
89 40246fa0 Agata Murawska
-- | The group fields map.
90 36162faf Iustin Pop
fieldsMap :: FieldMap NodeGroup Runtime
91 36162faf Iustin Pop
fieldsMap =
92 f94a9680 Iustin Pop
  Map.fromList $ map (\v@(f, _, _) -> (fdefName f, v)) groupFields
93 d5b2753a Iustin Pop
94 d5b2753a Iustin Pop
-- | Dummy function for collecting live data (which groups don't have).
95 d5b2753a Iustin Pop
collectLiveData :: Bool -> ConfigData -> [NodeGroup]
96 d5b2753a Iustin Pop
                -> IO [(NodeGroup, Runtime)]
97 d5b2753a Iustin Pop
collectLiveData _ _ = return . map (\n -> (n, Runtime))