Revision bc782180 htools/Ganeti/HTools/Text.hs
b/htools/Ganeti/HTools/Text.hs | ||
---|---|---|
86 | 86 |
then "" |
87 | 87 |
else Container.nameOf nl sidx) |
88 | 88 |
in |
89 |
printf "%s|%d|%d|%d|%s|%s|%s|%s" |
|
89 |
printf "%s|%d|%d|%d|%s|%s|%s|%s|%s"
|
|
90 | 90 |
iname (Instance.mem inst) (Instance.dsk inst) |
91 | 91 |
(Instance.vcpus inst) (Instance.runSt inst) |
92 |
(if Instance.auto_balance inst then "Y" else "N") |
|
92 | 93 |
pnode snode (intercalate "," (Instance.tags inst)) |
93 | 94 |
|
94 | 95 |
-- | Generate instance file data from instance objects |
... | ... | |
134 | 135 |
-- | Load an instance from a field list. |
135 | 136 |
loadInst :: (Monad m) => |
136 | 137 |
NameAssoc -> [String] -> m (String, Instance.Instance) |
137 |
loadInst ktn [name, mem, dsk, vcpus, status, pnode, snode, tags] = do |
|
138 |
loadInst ktn [name, mem, dsk, vcpus, status, auto_bal, pnode, snode, tags] = do
|
|
138 | 139 |
pidx <- lookupNode ktn name pnode |
139 | 140 |
sidx <- (if null snode then return Node.noSecondary |
140 | 141 |
else lookupNode ktn name snode) |
141 | 142 |
vmem <- tryRead name mem |
142 | 143 |
vdsk <- tryRead name dsk |
143 | 144 |
vvcpus <- tryRead name vcpus |
145 |
auto_balance <- case auto_bal of |
|
146 |
"Y" -> return True |
|
147 |
"N" -> return False |
|
148 |
_ -> fail $ "Invalid auto_balance value '" ++ auto_bal ++ |
|
149 |
"' for instance " ++ name |
|
144 | 150 |
when (sidx == pidx) $ fail $ "Instance " ++ name ++ |
145 | 151 |
" has same primary and secondary node - " ++ pnode |
146 | 152 |
let vtags = sepSplit ',' tags |
147 | 153 |
newinst = Instance.create name vmem vdsk vvcpus status vtags |
148 |
True pidx sidx
|
|
154 |
auto_balance pidx sidx
|
|
149 | 155 |
return (name, newinst) |
150 | 156 |
loadInst _ s = fail $ "Invalid/incomplete instance data: '" ++ show s ++ "'" |
151 | 157 |
|
Also available in: Unified diff