code: func ReconfigureVM(
  	client *govmomi.Client,
  	vm *object.VirtualMachine,
  	spec types.VirtualMachineConfigSpec,
  	pod *object.StoragePod,
  ) error {
  	sdrsEnabled, err := StorageDRSEnabled(pod)
  	if err != nil {
  		return err
  	}
  	if !sdrsEnabled {
  		return fmt.Errorf("storage DRS is not enabled on datastore cluster %q", pod.Name())
  	}
  
  	log.Printf(
  		"[DEBUG] Reconfiguring virtual machine %q through Storage DRS API, on datastore cluster %q",
  		vm.InventoryPath,
  		pod.Name(),
  	)
  
  	sps := types.StoragePlacementSpec{
  		Type: string(types.StoragePlacementSpecPlacementTypeReconfigure),
  		PodSelectionSpec: types.StorageDrsPodSelectionSpec{
  			InitialVmConfig: expandVMPodConfigForPlacement(spec.DeviceChange, pod),
  		},
  		Vm:         types.NewReference(vm.Reference()),
  		ConfigSpec: &spec,
  	}
  
  	_, err = recommendAndApplySDRS(client, sps, provider.DefaultAPITimeout)
  	return err
  }
docs: // ReconfigureVM reconfigures a virtual machine via the StorageResourceManager
  // API, applying any disk modifications that will require going through Storage
  // DRS. It mimics our helper in the virtualmachine package in functionality.
  //
  // Note that this function will fail if there are no new disks in the spec,
  // check this first before using this function. If no disk create operations
  // are necessary, use the regular Reconfigure function in the virtualmachine
  // helper package.