in libcloud/compute/drivers/equinixmetal.py [0:0]
def _to_node(self, data):
extra = {}
extra_keys = [
"created_at",
"updated_at",
"userdata",
"billing_cycle",
"locked",
"iqn",
"locked",
"project",
"description",
]
if "state" in data:
state = self.NODE_STATE_MAP.get(data["state"], NodeState.UNKNOWN)
else:
state = NodeState.UNKNOWN
if "ip_addresses" in data and data["ip_addresses"] is not None:
ips = self._parse_ips(data["ip_addresses"])
public_ips = ips["public"]
private_ips = ips["private"]
else:
public_ips = []
private_ips = []
if "operating_system" in data and data["operating_system"] is not None:
image = self._to_image(data["operating_system"])
extra["operating_system"] = data["operating_system"].get("name")
else:
image = None
if "plan" in data and data["plan"] is not None:
size = self._to_size(data["plan"])
extra["plan"] = data["plan"].get("slug")
else:
size = None
if "facility" in data:
extra["facility"] = data["facility"]
if "metro" in data and data["metro"] is not None:
extra["metro"] = data["metro"]
for key in extra_keys:
if key in data:
extra[key] = data[key]
node = Node(
id=data["id"],
name=data["hostname"],
state=state,
public_ips=public_ips,
private_ips=private_ips,
size=size,
image=image,
extra=extra,
driver=self,
)
return node