diff --git a/lib/cmdlib.py b/lib/cmdlib.py index c337cf0a811f674ab982e80088d83f85057729d5..7438316794a37e3b7cc9edc9647356c6f26f8039 100644 --- a/lib/cmdlib.py +++ b/lib/cmdlib.py @@ -595,7 +595,7 @@ def _BuildInstanceHookEnvByObject(lu, instance, override=None): 'disks': [(disk.size, disk.mode) for disk in instance.disks], 'bep': bep, 'hvp': hvp, - 'hypervisor': instance.hypervisor, + 'hypervisor_name': instance.hypervisor, } if override: args.update(override) diff --git a/lib/opcodes.py b/lib/opcodes.py index 4de40ba4ef210c60752b452ba9fd9473e15464da..e7d34a8bd6bb47a681b369977f829177ce3e13c1 100644 --- a/lib/opcodes.py +++ b/lib/opcodes.py @@ -144,14 +144,9 @@ class OpCode(BaseOpCode): raise ValueError("Invalid data to LoadOpcode, missing OP_ID") op_id = data["OP_ID"] op_class = None - for item in globals().values(): - if (isinstance(item, type) and - issubclass(item, cls) and - hasattr(item, "OP_ID") and - getattr(item, "OP_ID") == op_id): - op_class = item - break - if op_class is None: + if op_id in OP_MAPPING: + op_class = OP_MAPPING[op_id] + else: raise ValueError("Invalid data to LoadOpCode: OP_ID %s unsupported" % op_id) op = op_class() @@ -604,3 +599,7 @@ class OpTestAllocator(OpCode): "mem_size", "disks", "disk_template", "os", "tags", "nics", "vcpus", "hypervisor", ] + +OP_MAPPING = dict([(v.OP_ID, v) for v in globals().values() + if (isinstance(v, type) and issubclass(v, OpCode) and + hasattr(v, "OP_ID"))])