Revision 78694255 hscan.hs

b/hscan.hs
93 93
      "show help"
94 94
    ]
95 95

  
96
-- | Serialize a single node
97
serializeNode :: String -> Node.Node -> String
98
serializeNode csf node =
99
    let name = Node.name node ++ csf
100
        t_mem = (truncate $ Node.t_mem node)::Int
101
        t_dsk = (truncate $ Node.t_dsk node)::Int
102
    in
103
      printf "%s|%d|%d|%d|%d|%d|%c" name
104
             t_mem (Node.n_mem node) (Node.f_mem node)
105
             t_dsk (Node.f_dsk node)
106
             (if Node.offline node then 'Y' else 'N')
107

  
96 108
-- | Generate node file data from node objects
97
serializeNodes :: Node.List -> String -> String
98
serializeNodes nl csf =
99
    let nodes = Container.elems nl
100
        nlines = map
101
                 (\node ->
102
                      let name = Node.name node ++ csf
103
                          t_mem = (truncate $ Node.t_mem node)::Int
104
                          t_dsk = (truncate $ Node.t_dsk node)::Int
105
                      in
106
                        printf "%s|%d|%d|%d|%d|%d|%c" name
107
                                   t_mem (Node.n_mem node) (Node.f_mem node)
108
                                   t_dsk (Node.f_dsk node)
109
                                   (if Node.offline node then 'Y' else 'N')
110
                 )
111
                 nodes
112
    in unlines nlines
109
serializeNodes :: String -> Node.List -> String
110
serializeNodes csf =
111
    unlines . map (serializeNode csf) . Container.elems
112

  
113
-- | Serialize a single instance
114
serializeInstance :: String -> Node.List -> Instance.Instance -> String
115
serializeInstance csf nl inst =
116
    let
117
        iname = Instance.name inst ++ csf
118
        pnode = Container.nameOf nl $ Instance.pnode inst
119
        snode = Container.nameOf nl $ Instance.snode inst
120
    in
121
      printf "%s|%d|%d|%s|%s|%s"
122
             iname (Instance.mem inst) (Instance.dsk inst)
123
             (Instance.run_st inst)
124
             pnode snode
113 125

  
114 126
-- | Generate instance file data from instance objects
115
serializeInstances :: Node.List -> Instance.List
116
                   -> String -> String
117
serializeInstances nl il csf =
118
    let instances = Container.elems il
119
        nlines = map
120
                 (\inst ->
121
                      let
122
                          iname = Instance.name inst ++ csf
123
                          pnode = Container.nameOf nl $ Instance.pnode inst
124
                          snode = Container.nameOf nl $ Instance.snode inst
125
                      in
126
                        printf "%s|%d|%d|%s|%s|%s"
127
                               iname (Instance.mem inst) (Instance.dsk inst)
128
                               (Instance.run_st inst)
129
                               pnode snode
130
                 )
131
                 instances
132
    in unlines nlines
127
serializeInstances :: String -> Node.List -> Instance.List -> String
128
serializeInstances csf nl =
129
    unlines . map (serializeInstance csf nl) . Container.elems
133 130

  
134 131
-- | Return a one-line summary of cluster state
135 132
printCluster :: Node.List -> Instance.List
......
139 136
        ccv = Cluster.compCV nl
140 137
        nodes = Container.elems nl
141 138
        insts = Container.elems il
142
        t_ram = truncate . sum . map Node.t_mem $ nodes
143
        t_dsk = truncate . sum . map Node.t_dsk $ nodes
139
        t_ram = sum . map Node.t_mem $ nodes
140
        t_dsk = sum . map Node.t_dsk $ nodes
144 141
        f_ram = sum . map Node.f_mem $ nodes
145 142
        f_dsk = sum . map Node.f_dsk $ nodes
146 143
    in
147
      printf "%5d %5d %5d %5d %6d %6d %6d %6d %.8f"
144
      printf "%5d %5d %5d %5d %6.0f %6d %6.0f %6d %.8f"
148 145
                 (length nodes) (length insts)
149 146
                 (length bad_nodes) (length bad_instances)
150
                 (t_ram::Integer) f_ram
151
                 ((t_dsk::Integer) `div` 1024) (f_dsk `div` 1024)
147
                 t_ram f_ram
148
                 (t_dsk / 1024) (f_dsk `div` 1024)
152 149
                 ccv
153 150

  
154 151

  
......
187 184
                   putStrLn $ printCluster fix_nl il
188 185
                   when (optShowNodes opts) $ do
189 186
                           putStr $ Cluster.printNodes fix_nl
190
                   let ndata = serializeNodes nl csf
191
                       idata = serializeInstances nl il csf
187
                   let ndata = serializeNodes csf nl
188
                       idata = serializeInstances csf nl il
192 189
                       oname = odir </> (fixSlash name)
193 190
                   writeFile (oname <.> "nodes") ndata
194 191
                   writeFile (oname <.> "instances") idata)

Also available in: Unified diff