From e97a00de9ef4c323f664415e6f7b95ff46e176ea Mon Sep 17 00:00:00 2001 From: Nijin Ashok Date: Sun, 23 Oct 2016 05:44:09 +0530 Subject: [PATCH] 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 1f3d82dd1809a1d4ba430786a75dccc6b3736ca6) --- contrib/inventory/ovirt.py | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/contrib/inventory/ovirt.py b/contrib/inventory/ovirt.py index f406704ed65..7f505d98260 100755 --- a/contrib/inventory/ovirt.py +++ b/contrib/inventory/ovirt.py @@ -211,7 +211,7 @@ class OVirtInventory(object): 'ovirt_uuid': inst.get_id(), 'ovirt_id': inst.get_id(), '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_name': inst.get_name(), 'ovirt_description': inst.get_description(), @@ -230,6 +230,11 @@ class OVirtInventory(object): """ 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 def get_instance(self, instance_name): """Gets details about a specific instance """