Revision da0aa302
b/lib/client/gnt_instance.py | ||
---|---|---|
395 | 395 |
op = opcodes.OpInstanceReinstall(instance_name=instance_name, |
396 | 396 |
os_type=os_name, |
397 | 397 |
force_variant=opts.force_variant, |
398 |
osparams=opts.osparams) |
|
398 |
osparams=opts.osparams, |
|
399 |
osparams_private=opts.osparams_private, |
|
400 |
osparams_secret=opts.osparams_secret) |
|
399 | 401 |
jex.QueueJob(instance_name, op) |
400 | 402 |
|
401 | 403 |
results = jex.WaitOrShow(not opts.submit_only) |
b/lib/cmdlib/instance_operation.py | ||
---|---|---|
292 | 292 |
errors.ECODE_INVAL) |
293 | 293 |
CheckInstanceState(self, instance, INSTANCE_DOWN, msg="cannot reinstall") |
294 | 294 |
|
295 |
# Handle OS parameters |
|
296 |
self._MergeValidateOsParams(instance) |
|
297 |
|
|
298 |
self.instance = instance |
|
299 |
|
|
300 |
def _MergeValidateOsParams(self, instance): |
|
301 |
"Handle the OS parameter merging and validation for the target instance." |
|
302 |
|
|
295 | 303 |
if self.op.os_type is not None: |
296 | 304 |
# OS verification |
297 | 305 |
CheckNodeHasOS(self, instance.primary_node, self.op.os_type, |
... | ... | |
302 | 310 |
|
303 | 311 |
node_uuids = list(instance.all_nodes) |
304 | 312 |
|
305 |
if self.op.osparams: |
|
306 |
i_osdict = GetUpdatedParams(instance.osparams, self.op.osparams) |
|
307 |
CheckOSParams(self, True, node_uuids, instance_os, i_osdict) |
|
308 |
self.os_inst = i_osdict # the new dict (without defaults) |
|
309 |
else: |
|
310 |
self.os_inst = None |
|
313 |
self.op.osparams = self.op.osparams or {} |
|
314 |
self.op.osparams_private = self.op.osparams_private or {} |
|
315 |
self.op.osparams_secret = self.op.osparams_secret or {} |
|
311 | 316 |
|
312 |
self.instance = instance |
|
317 |
# Handle the use of 'default' values. |
|
318 |
params_public = GetUpdatedParams(instance.osparams, self.op.osparams) |
|
319 |
params_private = GetUpdatedParams(instance.osparams_private, |
|
320 |
self.op.osparams_private) |
|
321 |
params_secret = self.op.osparams_secret |
|
322 |
|
|
323 |
cluster = self.cfg.GetClusterInfo() |
|
324 |
self.os_inst = cluster.SimpleFillOS( |
|
325 |
instance_os, |
|
326 |
params_public, |
|
327 |
os_params_private=params_private, |
|
328 |
os_params_secret=params_secret |
|
329 |
) |
|
330 |
|
|
331 |
CheckOSParams(self, True, node_uuids, instance_os, self.os_inst) |
|
313 | 332 |
|
314 | 333 |
def Exec(self, feedback_fn): |
315 | 334 |
"""Reinstall the instance. |
b/man/gnt-instance.rst | ||
---|---|---|
1297 | 1297 |
| **reinstall** [{-o|\--os-type} *os-type*] [\--select-os] [-f *force*] |
1298 | 1298 |
| [\--force-multiple] |
1299 | 1299 |
| [\--instance \| \--node \| \--primary \| \--secondary \| \--all] |
1300 |
| [{-O|\--os-parameters} *OS\_PARAMETERS*] [\--submit] [\--print-job-id] |
|
1300 |
| [{-O|\--os-parameters} *OS\_PARAMETERS*] |
|
1301 |
| [--os-parameters-private} *OS\_PARAMETERS*] |
|
1302 |
| [--os-parameters-secret} *OS\_PARAMETERS*] |
|
1303 |
| [\--submit] [\--print-job-id] |
|
1301 | 1304 |
| {*instance*...} |
1302 | 1305 |
|
1303 | 1306 |
Reinstalls the operating system on the given instance(s). The |
b/src/Ganeti/OpCodes.hs | ||
---|---|---|
474 | 474 |
, pForceVariant |
475 | 475 |
, pInstOs |
476 | 476 |
, pTempOsParams |
477 |
, pTempOsParamsPrivate |
|
478 |
, pTempOsParamsSecret |
|
477 | 479 |
], |
478 | 480 |
"instance_name") |
479 | 481 |
, ("OpInstanceRemove", |
b/src/Ganeti/OpParams.hs | ||
---|---|---|
190 | 190 |
, pInstTags |
191 | 191 |
, pMultiAllocInstances |
192 | 192 |
, pTempOsParams |
193 |
, pTempOsParamsPrivate |
|
194 |
, pTempOsParamsSecret |
|
193 | 195 |
, pTempHvParams |
194 | 196 |
, pTempBeParams |
195 | 197 |
, pIgnoreFailures |
... | ... | |
1210 | 1212 |
renameField "TempOsParams" . |
1211 | 1213 |
optionalField $ simpleField "osparams" [t| JSObject JSValue |] |
1212 | 1214 |
|
1215 |
pTempOsParamsPrivate :: Field |
|
1216 |
pTempOsParamsPrivate = |
|
1217 |
withDoc "Private OS parameters for instance reinstalls" . |
|
1218 |
optionalField $ |
|
1219 |
simpleField "osparams_private" [t| JSObject (Private JSValue) |] |
|
1220 |
|
|
1221 |
pTempOsParamsSecret :: Field |
|
1222 |
pTempOsParamsSecret = |
|
1223 |
withDoc "Secret OS parameters for instance reinstalls" . |
|
1224 |
optionalField $ |
|
1225 |
simpleField "osparams_secret" [t| JSObject (Private JSValue) |] |
|
1226 |
|
|
1213 | 1227 |
pShutdownTimeout :: Field |
1214 | 1228 |
pShutdownTimeout = |
1215 | 1229 |
withDoc "How long to wait for instance to shut down" . |
b/test/hs/Test/Ganeti/OpCodes.hs | ||
---|---|---|
301 | 301 |
"OP_INSTANCE_REINSTALL" -> |
302 | 302 |
OpCodes.OpInstanceReinstall <$> genFQDN <*> return Nothing <*> |
303 | 303 |
arbitrary <*> genMaybe genNameNE <*> genMaybe (pure emptyJSObject) |
304 |
<*> genMaybe arbitraryPrivateJSObj <*> genMaybe arbitraryPrivateJSObj |
|
304 | 305 |
"OP_INSTANCE_REMOVE" -> |
305 | 306 |
OpCodes.OpInstanceRemove <$> genFQDN <*> return Nothing <*> |
306 | 307 |
arbitrary <*> arbitrary |
Also available in: Unified diff