def _to_node()

in libcloud/compute/drivers/vsphere.py [0:0]


    def _to_node(self, vm_id_host, interfaces):
        """
        id, name, state, public_ips, private_ips,
                driver, size=None, image=None, extra=None, created_at=None)
        """
        vm_id = vm_id_host[0]
        req = "/rest/vcenter/vm/" + vm_id
        vm = self._request(req).object["value"]
        name = vm["name"]
        state = self.NODE_STATE_MAP[vm["power_state"].lower()]

        # IP's
        private_ips = []
        nic_macs = set()

        for nic in vm["nics"]:
            nic_macs.add(nic["value"]["mac_address"])

        for interface in interfaces:
            if interface["mac"] in nic_macs:
                private_ips.append(interface["ip"])
                nic_macs.remove(interface["mac"])

                if len(nic_macs) == 0:
                    break
        public_ips = []  # should default_getaway be the public?

        driver = self.connection.driver

        # size
        total_size = 0
        gb_converter = 1024**3

        for disk in vm["disks"]:
            total_size += int(int(disk["value"]["capacity"] / gb_converter))
        ram = int(vm["memory"]["size_MiB"])
        cpus = int(vm["cpu"]["count"])
        id_to_hash = str(ram) + str(cpus) + str(total_size)
        size_id = hashlib.md5(id_to_hash.encode("utf-8")).hexdigest()  # nosec
        size_name = name + "-size"
        size_extra = {"cpus": cpus}
        size = NodeSize(
            id=size_id,
            name=size_name,
            ram=ram,
            disk=total_size,
            bandwidth=0,
            price=0,
            driver=driver,
            extra=size_extra,
        )

        # image
        image_name = vm["guest_OS"]
        image_id = image_name + "_id"
        image_extra = {"type": "guest_OS"}
        image = NodeImage(id=image_id, name=image_name, driver=driver, extra=image_extra)
        extra = {"snapshots": []}

        if len(vm_id_host) > 1:
            extra["host"] = vm_id_host[1].get("name", "")

        return Node(
            id=vm_id,
            name=name,
            state=state,
            public_ips=public_ips,
            private_ips=private_ips,
            driver=driver,
            size=size,
            image=image,
            extra=extra,
        )