- instance_dict['vim_info'] = yaml.safe_dump(instance, default_flow_style=True, width=256)
- except yaml.YAMLError:
- # self.logger.error("Exception getting vm status: %s", str(e), exc_info=True)
- instance_dict['vim_info'] = str(instance)
- instances[instance.id] = instance_dict
+ if instance.state in ("pending"):
+ instance_dict["status"] = "BUILD"
+ elif instance.state in ("available", "running", "up"):
+ instance_dict["status"] = "ACTIVE"
+ else:
+ instance_dict["status"] = "ERROR"
+
+ instance_dict["error_msg"] = ""
+ instance_dict["interfaces"] = []
+
+ for interface in instance.interfaces:
+ interface_dict = {
+ "vim_interface_id": interface.id,
+ "vim_net_id": interface.subnet_id,
+ "mac_address": interface.mac_address,
+ }
+
+ if (
+ hasattr(interface, "publicIp")
+ and interface.publicIp is not None
+ ):
+ interface_dict["ip_address"] = (
+ interface.publicIp
+ + ";"
+ + interface.private_ip_address
+ )
+ else:
+ interface_dict[
+ "ip_address"
+ ] = interface.private_ip_address
+
+ instance_dict["interfaces"].append(interface_dict)
+ except Exception as e:
+ self.logger.error(
+ "Exception getting vm status: %s", str(e), exc_info=True
+ )
+ instance_dict["status"] = "DELETED"
+ instance_dict["error_msg"] = str(e)
+ finally:
+ instance_dictionary = vars(instance)
+ cleared_instance_dict = {
+ key: instance_dictionary[key]
+ for key in instance_dictionary
+ if not (isinstance(instance_dictionary[key], object))
+ }
+ instance_dict["vim_info"] = cleared_instance_dict
+
+ instances[instance.id] = instance_dict
+