in libcloud/compute/drivers/cloudsigma.py [0:0]
def _to_node(self, data):
if data:
try:
state = self.NODE_STATE_MAP[data["status"]]
except KeyError:
state = NodeState.UNKNOWN
if "server" not in data:
# Response does not contain server UUID if the server
# creation failed because of insufficient funds.
return None
public_ips = []
if "nic:0:dhcp" in data:
if isinstance(data["nic:0:dhcp"], list):
public_ips = data["nic:0:dhcp"]
else:
public_ips = [data["nic:0:dhcp"]]
extra = {}
extra_keys = [
("cpu", "int"),
("smp", "auto"),
("mem", "int"),
("status", "str"),
]
for key, value_type in extra_keys:
if key in data:
value = data[key]
if value_type == "int":
value = int(value)
elif value_type == "auto":
try:
value = int(value)
except ValueError:
pass
extra.update({key: value})
if "vnc:ip" in data and "vnc:password" in data:
extra.update({"vnc_ip": data["vnc:ip"], "vnc_password": data["vnc:password"]})
node = Node(
id=data["server"],
name=data["name"],
state=state,
public_ips=public_ips,
private_ips=None,
driver=self.connection.driver,
extra=extra,
)
return node
return None