Fix improper handling of machine_type in ovirt inventory (#16251)

Currently the machine_type will not work if the instance type is set in ovirt. In that case, inst.get_instance_type will be an object and will fails while converting to json. This only work if the instance type is not set in ovirt where inst.get_instance_type is a Null value. The current change make sure that correct "instance type" is passed when instance is set in ovirt and Null when it's not set in ovirt.
(cherry picked from commit 1f3d82dd18)
This commit is contained in:
Nijin Ashok 2016-10-23 05:44:09 +05:30 committed by Michael Scherer
parent f5240d2953
commit e97a00de9e

View file

@ -211,7 +211,7 @@ class OVirtInventory(object):
'ovirt_uuid': inst.get_id(), 'ovirt_uuid': inst.get_id(),
'ovirt_id': inst.get_id(), 'ovirt_id': inst.get_id(),
'ovirt_image': inst.get_os().get_type(), 'ovirt_image': inst.get_os().get_type(),
'ovirt_machine_type': inst.get_instance_type(), 'ovirt_machine_type': self.get_machine_type(inst),
'ovirt_ips': ips, 'ovirt_ips': ips,
'ovirt_name': inst.get_name(), 'ovirt_name': inst.get_name(),
'ovirt_description': inst.get_description(), 'ovirt_description': inst.get_description(),
@ -230,6 +230,11 @@ class OVirtInventory(object):
""" """
return [x.get_name() for x in inst.get_tags().list()] return [x.get_name() for x in inst.get_tags().list()]
def get_machine_type(self,inst):
inst_type = inst.get_instance_type()
if inst_type:
return self.driver.instancetypes.get(id=inst_type.id).name
# noinspection PyBroadException,PyUnusedLocal # noinspection PyBroadException,PyUnusedLocal
def get_instance(self, instance_name): def get_instance(self, instance_name):
"""Gets details about a specific instance """ """Gets details about a specific instance """