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