code: func (vs *VSphere) cleanUpDummyVMs(dummyVMPrefix string) {
  	// Create context
  	ctx, cancel := context.WithCancel(context.Background())
  	defer cancel()
  	for {
  		time.Sleep(CleanUpDummyVMRoutineInterval * time.Minute)
  		vsi, err := vs.getVSphereInstanceForServer(vs.cfg.Workspace.VCenterIP, ctx)
  		if err != nil {
  			klog.V(4).Infof("Failed to get VSphere instance with err: %+v. Retrying again...", err)
  			continue
  		}
  		dc, err := vclib.GetDatacenter(ctx, vsi.conn, vs.cfg.Workspace.Datacenter)
  		if err != nil {
  			klog.V(4).Infof("Failed to get the datacenter: %s from VC. err: %+v", vs.cfg.Workspace.Datacenter, err)
  			continue
  		}
  		// Get the folder reference for global working directory where the dummy VM needs to be created.
  		vmFolder, err := dc.GetFolderByPath(ctx, vs.cfg.Workspace.Folder)
  		if err != nil {
  			klog.V(4).Infof("Unable to get the kubernetes folder: %q reference. err: %+v", vs.cfg.Workspace.Folder, err)
  			continue
  		}
  		// A write lock is acquired to make sure the cleanUp routine doesn't delete any VM's created by ongoing PVC requests.
  		cleanUpDummyVMs := func() {
  			cleanUpDummyVMLock.Lock()
  			defer cleanUpDummyVMLock.Unlock()
  			err = diskmanagers.CleanUpDummyVMs(ctx, vmFolder, dc)
  			if err != nil {
  				klog.V(4).Infof("Unable to clean up dummy VM's in the kubernetes cluster: %q. err: %+v", vs.cfg.Workspace.Folder, err)
  			}
  		}
  		cleanUpDummyVMs()
  	}
  }
docs: // A background routine which will be responsible for deleting stale dummy VM's.