From 1f3d82dd1809a1d4ba430786a75dccc6b3736ca6 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. --- 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 """