in libcloud/compute/drivers/vultr.py [0:0]
def _to_node(self, data):
if "status" in data:
state = self.NODE_STATE_MAP.get(data["status"], NodeState.UNKNOWN)
if state == NodeState.RUNNING and data["power_status"] != "running":
state = NodeState.STOPPED
else:
state = NodeState.UNKNOWN
if "main_ip" in data and data["main_ip"] is not None:
public_ips = [data["main_ip"]]
else:
public_ips = []
# simple check that we have ip address in value
if len(data["internal_ip"]) > 0:
private_ips = [data["internal_ip"]]
else:
private_ips = []
created_at = parse_date(data["date_created"])
# response ordering
extra_keys = [
"location", # Location name
"default_password",
"pending_charges",
"cost_per_month",
"current_bandwidth_gb",
"allowed_bandwidth_gb",
"netmask_v4",
"gateway_v4",
"power_status",
"server_state",
"v6_networks",
# TODO: Does we really need kvm_url?
"kvm_url",
"auto_backups",
"tag",
# "OSID", # Operating system to use. See v1/os/list.
"APPID",
"FIREWALLGROUPID",
]
extra = self._helper.handle_extra(extra_keys, data)
resolve_data = VULTR_COMPUTE_INSTANCE_IMAGES.get(data["OSID"])
if resolve_data:
image = self._to_image(resolve_data)
else:
image = None
resolve_data = VULTR_COMPUTE_INSTANCE_SIZES.get(data["VPSPLANID"])
if resolve_data:
size = self._to_size(resolve_data)
else:
size = None
# resolve_data = VULTR_COMPUTE_INSTANCE_LOCATIONS.get(data['DCID'])
# if resolve_data:
# location = self._to_location(resolve_data)
# extra['location'] = location
node = Node(
id=data["SUBID"],
name=data["label"],
state=state,
public_ips=public_ips,
private_ips=private_ips,
image=image,
size=size,
extra=extra,
created_at=created_at,
driver=self,
)
return node