def METHOD_NAME(self) -> None:
    """
    loop over VMs and add them as VSphereInstance to parent
    """
    content = get_vsphere_client().client.RetrieveContent()
    container = content.rootFolder  # starting point to look into
    view_type = [vim.VirtualMachine]  # object types to look for
    recursive = True  # whether we should look into it recursively
    container_view = content.viewManager.CreateContainerView(container, view_type, recursive)
    vms = container_view.view
    keys = self.get_keymap_from_vmlist(vms)
    instance_status_map: Dict[str, InstanceStatus] = {
        "pending": InstanceStatus.BUSY,
        "running": InstanceStatus.RUNNING,
        "shutting-down": InstanceStatus.BUSY,
        "terminated": InstanceStatus.TERMINATED,
        "stopping": InstanceStatus.BUSY,
        "notRunning": InstanceStatus.STOPPED,
    }
    # loop over the list of VMs
    for list_vm in vms:
        try:
            tags = self.get_custom_attributes(list_vm, keys)
            try:
                ctime = datetime.fromtimestamp(list_vm.config.createDate.timestamp())
            except AttributeError:
                ctime = None
            if list_vm.config.template:
                vm = VSphereTemplate(id=list_vm._moId, name=str(list_vm.name), ctime=ctime)
            else:
                vm = VSphereInstance(
                    id=list_vm._moId,
                    name=str(list_vm.name),
                    instance_cores=int(list_vm.config.hardware.numCPU),
                    instance_memory=int(list_vm.config.hardware.memoryMB / 1024),
                    tags=tags,
                    ctime=ctime,
                    instance_status=instance_status_map.get(list_vm.guest.guestState, InstanceStatus.UNKNOWN),
                )
        except Exception:
            log.exception(f"Error while collecting {list_vm}")
        else:
            log.debug(f"found {vm.id} - {vm}")
            self.instances_dict[vm.id] = vm
            self.graph.add_node(vm)