def METHOD_NAME(self) -> None:
    log.debug("plugin: collecting vsphere resources")
    if not Config.vsphere.host:
        log.debug("no VSphere host given - skipping collection")
        return
    host = self.get_host()
    self.get_instances()
    log.debug(f"found {len(self.instances_dict)} instances and templates")
    self.graph.add_resource(self.graph.root, host)
    content = get_vsphere_client().client.RetrieveContent()
    datacenters = [entity for entity in content.rootFolder.childEntity if hasattr(entity, "vmFolder")]
    # datacenter are root folder objects
    for dc in datacenters:
        log.debug(f"Found datacenter - {dc._moId} - {dc.name}")
        dcObj = VSphereDataCenter(id=dc._moId, name=dc.name)
        self.graph.add_resource(host, dcObj)
        # get clusters in datacenter
        for cluster in dc.hostFolder.childEntity:
            log.debug(f"Found cluster - {cluster._moId} - {cluster.name}")
            clusterObj = VSphereCluster(id=cluster._moId, name=cluster.name)
            self.graph.add_resource(dcObj, clusterObj)
            try:
                rpool = cluster.resourcePool
                self.resource_pool(rpool, clusterObj)
            except Exception:
                log.warning(f"Resourcepool error for cluster {cluster._moId} {cluster.name}")
        for datastore in dc.datastoreFolder.childEntity:
            if datastore._wsdlName == "Datastore":
                log.debug(f"Found Datastore - {datastore._moId} - {datastore.name}")
                dsObj = VSphereDataStore(id=datastore._moId, name=datastore.name)
                self.graph.add_resource(dcObj, dsObj)
                for vm in datastore.vm:
                    vmObj = self.instances_dict[vm._moId]
                    self.graph.add_edge(dsObj, vmObj)
            elif datastore._wsdlName == "StoragePod":
                log.debug(f"Found DatastoreCluster - {datastore._moId} - {datastore.name}")
                dsc = VSphereDataStoreCluster(id=datastore._moId, name=datastore.name)
                self.graph.add_resource(dcObj, dsc)
                for store in datastore.childEntity:
                    log.debug(f"Found DatastoreCluster Datastore - {store._moId} - {store.name}")
                    if store._wsdlName == "Datastore":
                        dsObj = VSphereDataStore(id=store._moId, name=store.name)
                        self.graph.add_resource(dcObj, dsObj)
                        for vm in store.vm:
                            vmObj = self.instances_dict[vm._moId]
                            self.graph.add_edge(dsObj, vmObj)
        # get hosts from a cluster
        for host in cluster.host:  #
            log.debug(f"Found host - {host._moId} - {host.name}")
            hostObj = VSphereESXiHost(id=host._moId, name=host.name)
            self.graph.add_resource(clusterObj, hostObj)
            # get vms for each host and read from the vm list
            for vm in host.vm:
                if vm._moId in self.instances_dict:
                    vmObj = self.instances_dict[vm._moId]
                    log.debug(
                        f"lookup vm - {vm._moId} - {vmObj.name} and assign to host {host._moId} - {host.name}"
                    )
                    self.graph.add_edge(hostObj, vmObj)
                else:
                    log.warning(f"host {host._moId} - {host.name} reports {vm._moId} but instance not found")