def _to_node()

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