Revision 6429e8d8 htools/Ganeti/HTools/Text.hs
b/htools/Ganeti/HTools/Text.hs | ||
---|---|---|
93 | 93 |
then "" |
94 | 94 |
else Container.nameOf nl sidx) |
95 | 95 |
in |
96 |
printf "%s|%d|%d|%d|%s|%s|%s|%s|%s" |
|
96 |
printf "%s|%d|%d|%d|%s|%s|%s|%s|%s|%s"
|
|
97 | 97 |
iname (Instance.mem inst) (Instance.dsk inst) |
98 | 98 |
(Instance.vcpus inst) (Instance.runSt inst) |
99 | 99 |
(if Instance.autoBalance inst then "Y" else "N") |
100 |
pnode snode (intercalate "," (Instance.tags inst)) |
|
100 |
pnode snode (dtToString (Instance.diskTemplate inst)) |
|
101 |
(intercalate "," (Instance.tags inst)) |
|
101 | 102 |
|
102 | 103 |
-- | Generate instance file data from instance objects. |
103 | 104 |
serializeInstances :: Node.List -> Instance.List -> String |
... | ... | |
148 | 149 |
loadNode _ s = fail $ "Invalid/incomplete node data: '" ++ show s ++ "'" |
149 | 150 |
|
150 | 151 |
-- | Load an instance from a field list. |
151 |
loadInst :: (Monad m) => |
|
152 |
NameAssoc -- ^ Association list with |
|
153 |
-- the current nodes |
|
154 |
-> [String] -- ^ Input data as a list of |
|
155 |
-- fields |
|
156 |
-> m (String, Instance.Instance) -- ^ The result, a tuple of |
|
157 |
-- instance name and the |
|
158 |
-- instance object |
|
159 |
loadInst ktn [name, mem, dsk, vcpus, status, auto_bal, pnode, snode, tags] = do |
|
152 |
loadInst :: NameAssoc -- ^ Association list with the current nodes |
|
153 |
-> [String] -- ^ Input data as a list of fields |
|
154 |
-> Result (String, Instance.Instance) -- ^ A tuple of |
|
155 |
-- instance name and |
|
156 |
-- the instance object |
|
157 |
loadInst ktn [ name, mem, dsk, vcpus, status, auto_bal, pnode, snode |
|
158 |
, dt, tags ] = do |
|
160 | 159 |
pidx <- lookupNode ktn name pnode |
161 | 160 |
sidx <- (if null snode then return Node.noSecondary |
162 | 161 |
else lookupNode ktn name snode) |
... | ... | |
168 | 167 |
"N" -> return False |
169 | 168 |
_ -> fail $ "Invalid auto_balance value '" ++ auto_bal ++ |
170 | 169 |
"' for instance " ++ name |
170 |
disk_template <- annotateResult ("Instance " ++ name) (dtFromString dt) |
|
171 | 171 |
when (sidx == pidx) $ fail $ "Instance " ++ name ++ |
172 | 172 |
" has same primary and secondary node - " ++ pnode |
173 | 173 |
let vtags = sepSplit ',' tags |
174 | 174 |
newinst = Instance.create name vmem vdsk vvcpus status vtags |
175 |
auto_balance pidx sidx DTDrbd8
|
|
175 |
auto_balance pidx sidx disk_template
|
|
176 | 176 |
return (name, newinst) |
177 | 177 |
loadInst _ s = fail $ "Invalid/incomplete instance data: '" ++ show s ++ "'" |
178 | 178 |
|
Also available in: Unified diff