in footmark/ecs/instance.py [0:0]
def read(self):
instance = {"gpu": {"amount": 0, "spec": ""}, "private_ip_address": self.private_ip_address}
for name, value in list(self.__dict__.items()):
if name in ["connection", "region_id", "region", "security_group_ids", "dedicated_host_attribute", "device_available",
"operation_locks", "recyclable", "sale_cycle", "serial_number", "stopped_mode",
"vlan_id", "spot_price_limit", "spot_strategy", "cluster_id", "instance_network_type", "start_time"]:
continue
if name == "instance_id":
instance['id'] = value
if name == "block_device_mappings":
volumes = []
for disk in value:
volumes.append({
"device_name": disk.device,
"attach_time": disk.attached_time,
"delete_on_termination": disk.delete_with_instance,
"status": disk.status,
"volume_id": disk.disk_id
})
value = volumes
if name == "security_groups":
groups = []
for sg in value:
groups.append({
"group_id": sg.security_group_id,
"group_name": sg.security_group_name
})
value = groups
# instance private ip contains private_ip_address and inner_ip_address(Classic)
if name == "vpc_attributes":
instance["vpc_id"] = value["vpc_id"]
instance["vswitch_id"] = value["vswitch_id"]
continue
if name == "network_interfaces":
value = value["network_interface"]
if name == "eip_address":
name = "eip"
if name == "gpuamount":
instance["gpu"]["amount"] = value
continue
if name == "gpuspec":
instance["gpu"]["specification"] = value
continue
if name == "zone_id":
name = "availability_zone"
instance[name] = value
return instance