code: func expandClusterVMComponentProtectionSettings(d *schema.ResourceData) *types.ClusterVmComponentProtectionSettings {
  	obj := &types.ClusterVmComponentProtectionSettings{
  		VmReactionOnAPDCleared:    d.Get("ha_datastore_apd_recovery_action").(string),
  		VmStorageProtectionForAPD: d.Get("ha_datastore_apd_response").(string),
  		VmStorageProtectionForPDL: d.Get("ha_datastore_pdl_response").(string),
  		VmTerminateDelayForAPDSec: int32(d.Get("ha_datastore_apd_response_delay").(int)),
  	}
  
  	if d.Get("ha_datastore_apd_response").(string) != string(types.ClusterVmComponentProtectionSettingsStorageVmReactionDisabled) {
  		// Flag EnableAPDTimeoutForHosts to ensure that APD is enabled for all
  		// hosts in the cluster and our other settings here will be effective. Note
  		// that this setting is not persisted to state or the vSphere backend and
  		// is actually a host operation, not a cluster operation. It's here to
  		// ensure that the settings specified here are otherwise effective. We may
  		// need to revisit this if we introduce more robust host management
  		// capabilities in the provider.
  		obj.EnableAPDTimeoutForHosts = structure.BoolPtr(true)
  	}
  
  	return obj
  }
docs: // expandClusterVMComponentProtectionSettings reads certain ResourceData keys and returns a
  // ClusterVmComponentProtectionSettings.