func expandBaseClusterDasAdmissionControlPolicy(
	d *schema.ResourceData,
	policy string,
	version viapi.VSphereVersion,
) types.BaseClusterDasAdmissionControlPolicy {
	var obj types.BaseClusterDasAdmissionControlPolicy

	switch policy {
	case clusterAdmissionControlTypeResourcePercentage:
		obj = expandClusterFailoverResourcesAdmissionControlPolicy(d, version)
	case clusterAdmissionControlTypeSlotPolicy:
		obj = expandClusterFailoverLevelAdmissionControlPolicy(d)
	case clusterAdmissionControlTypeFailoverHosts:
		obj = expandClusterFailoverHostAdmissionControlPolicy(d, version)
	case clusterAdmissionControlTypeDisabled:
		return nil
	}

	if version.Newer(viapi.VSphereVersion{Product: version.Product, Major: 6, Minor: 5}) {
		obj.GetClusterDasAdmissionControlPolicy().ResourceReductionToToleratePercent = int32(d.Get("ha_admission_control_host_failure_tolerance").(int))
	}

	return obj
}
func expandBaseClusterDasAdmissionControlPolicy(
	d *schema.ResourceData,
	policy string,
	version viapi.VSphereVersion,
) types.BaseClusterDasAdmissionControlPolicy {
	var obj types.BaseClusterDasAdmissionControlPolicy

	switch policy {
	case clusterAdmissionControlTypeResourcePercentage:
		obj = expandClusterFailoverResourcesAdmissionControlPolicy(d, version)
	case clusterAdmissionControlTypeSlotPolicy:
		obj = expandClusterFailoverLevelAdmissionControlPolicy(d)
	case clusterAdmissionControlTypeFailoverHosts:
		obj = expandClusterFailoverHostAdmissionControlPolicy(d, version)
	case clusterAdmissionControlTypeDisabled:
		return nil
	}

	if version.Newer(viapi.VSphereVersion{Product: version.Product, Major: 6, Minor: 5}) {
		obj.GetClusterDasAdmissionControlPolicy().ResourceReductionToToleratePercent = int32(d.Get("ha_admission_control_host_failure_tolerance").(int))
	}

	return obj
}
func expandBaseClusterDasAdmissionControlPolicy ( d * schema . ResourceData , policy string , version viapi . VSphereVersion , ) types . BaseClusterDasAdmissionControlPolicy { var obj types . BaseClusterDasAdmissionControlPolicy switch policy { case clusterAdmissionControlTypeResourcePercentage : obj = expandClusterFailoverResourcesAdmissionControlPolicy ( d , version ) case clusterAdmissionControlTypeSlotPolicy : obj = expandClusterFailoverLevelAdmissionControlPolicy ( d ) case clusterAdmissionControlTypeFailoverHosts : obj = expandClusterFailoverHostAdmissionControlPolicy ( d , version ) case clusterAdmissionControlTypeDisabled : return nil } if version . Newer ( viapi . VSphereVersion { Product : version . Product , Major : 6 , Minor : 5 } ) { obj . GetClusterDasAdmissionControlPolicy ( ) . ResourceReductionToToleratePercent = int32 ( d . Get ( " " ) . ( int ) ) } return obj }
// expandBaseClusterDasAdmissionControlPolicy reads certain ResourceData keys
// and returns a BaseClusterDasAdmissionControlPolicy.
expandBaseClusterDasAdmissionControlPolicy reads certain ResourceData keys and returns a BaseClusterDasAdmissionControlPolicy .