453 |
453 |
|
454 |
454 |
|
455 |
455 |
def _BuildInstanceHookEnv(name, primary_node, secondary_nodes, os_type, status,
|
456 |
|
memory, vcpus, nics, disk_template, disks):
|
|
456 |
memory, vcpus, nics, disk_template, disks,
|
|
457 |
bep, hvp, hypervisor):
|
457 |
458 |
"""Builds instance related env variables for hooks
|
458 |
459 |
|
459 |
460 |
This builds the hook environment from individual variables.
|
... | ... | |
479 |
480 |
@param disk_template: the distk template of the instance
|
480 |
481 |
@type disks: list
|
481 |
482 |
@param disks: the list of (size, mode) pairs
|
|
483 |
@type bep: dict
|
|
484 |
@param bep: the backend parameters for the instance
|
|
485 |
@type hvp: dict
|
|
486 |
@param hvp: the hypervisor parameters for the instance
|
|
487 |
@type hypervisor: string
|
|
488 |
@param hypervisor: the hypervisor for the instance
|
482 |
489 |
@rtype: dict
|
483 |
490 |
@return: the hook environment for this instance
|
484 |
491 |
|
... | ... | |
497 |
504 |
"INSTANCE_MEMORY": memory,
|
498 |
505 |
"INSTANCE_VCPUS": vcpus,
|
499 |
506 |
"INSTANCE_DISK_TEMPLATE": disk_template,
|
|
507 |
"INSTANCE_HYPERVISOR": hypervisor,
|
500 |
508 |
}
|
501 |
509 |
|
502 |
510 |
if nics:
|
... | ... | |
522 |
530 |
|
523 |
531 |
env["INSTANCE_DISK_COUNT"] = disk_count
|
524 |
532 |
|
|
533 |
for source, kind in [(bep, "BE"), (hvp, "HV")]:
|
|
534 |
for key, value in source.items():
|
|
535 |
env["INSTANCE_%s_%s" % (kind, key)] = value
|
|
536 |
|
525 |
537 |
return env
|
526 |
538 |
|
527 |
539 |
|
... | ... | |
540 |
552 |
@return: the hook environment dictionary
|
541 |
553 |
|
542 |
554 |
"""
|
543 |
|
bep = lu.cfg.GetClusterInfo().FillBE(instance)
|
|
555 |
cluster = lu.cfg.GetClusterInfo()
|
|
556 |
bep = cluster.FillBE(instance)
|
|
557 |
hvp = cluster.FillHV(instance)
|
544 |
558 |
args = {
|
545 |
559 |
'name': instance.name,
|
546 |
560 |
'primary_node': instance.primary_node,
|
... | ... | |
552 |
566 |
'nics': [(nic.ip, nic.bridge, nic.mac) for nic in instance.nics],
|
553 |
567 |
'disk_template': instance.disk_template,
|
554 |
568 |
'disks': [(disk.size, disk.mode) for disk in instance.disks],
|
|
569 |
'bep': bep,
|
|
570 |
'hvp': hvp,
|
|
571 |
'hypervisor': instance.hypervisor,
|
555 |
572 |
}
|
556 |
573 |
if override:
|
557 |
574 |
args.update(override)
|
... | ... | |
4341 |
4358 |
self.op.hvparams)
|
4342 |
4359 |
hv_type = hypervisor.GetHypervisor(self.op.hypervisor)
|
4343 |
4360 |
hv_type.CheckParameterSyntax(filled_hvp)
|
|
4361 |
self.hv_full = filled_hvp
|
4344 |
4362 |
|
4345 |
4363 |
# fill and remember the beparams dict
|
4346 |
4364 |
utils.ForceDictType(self.op.beparams, constants.BES_PARAMETER_TYPES)
|
... | ... | |
4518 |
4536 |
nics=[(n.ip, n.bridge, n.mac) for n in self.nics],
|
4519 |
4537 |
disk_template=self.op.disk_template,
|
4520 |
4538 |
disks=[(d["size"], d["mode"]) for d in self.disks],
|
|
4539 |
bep=self.be_full,
|
|
4540 |
hvp=self.hv_full,
|
|
4541 |
hypervisor=self.op.hypervisor,
|
4521 |
4542 |
))
|
4522 |
4543 |
|
4523 |
4544 |
nl = ([self.cfg.GetMasterNode(), self.op.pnode] +
|