// Code generated by applyconfiguration-gen. DO NOT EDIT.

package v1

// AWSCSIDriverConfigSpecApplyConfiguration represents a declarative configuration of the AWSCSIDriverConfigSpec type for use
// with apply.
//
// AWSCSIDriverConfigSpec defines properties that can be configured for the AWS CSI driver.
type AWSCSIDriverConfigSpecApplyConfiguration struct {
	// kmsKeyARN sets the cluster default storage class to encrypt volumes with a user-defined KMS key,
	// rather than the default KMS key used by AWS.
	// The value may be either the ARN or Alias ARN of a KMS key.
	//
	// The ARN must follow the format: arn:<partition>:kms:<region>:<account-id>:(key|alias)/<key-id-or-alias>, where:
	// <partition> is the AWS partition (aws, aws-cn, aws-us-gov, aws-iso, aws-iso-b, aws-iso-e, aws-iso-f, or aws-eusc),
	// <region> is the AWS region,
	// <account-id> is a 12-digit numeric identifier for the AWS account,
	// <key-id-or-alias> is the KMS key ID or alias name.
	KMSKeyARN *string `json:"kmsKeyARN,omitempty"`
	// efsVolumeMetrics sets the configuration for collecting metrics from EFS volumes used by the EFS CSI Driver.
	EFSVolumeMetrics *AWSEFSVolumeMetricsApplyConfiguration `json:"efsVolumeMetrics,omitempty"`
}

// AWSCSIDriverConfigSpecApplyConfiguration constructs a declarative configuration of the AWSCSIDriverConfigSpec type for use with
// apply.
func AWSCSIDriverConfigSpec() *AWSCSIDriverConfigSpecApplyConfiguration {
	return &AWSCSIDriverConfigSpecApplyConfiguration{}
}

// WithKMSKeyARN sets the KMSKeyARN field in the declarative configuration to the given value
// and returns the receiver, so that objects can be built by chaining "With" function invocations.
// If called multiple times, the KMSKeyARN field is set to the value of the last call.
func (b *AWSCSIDriverConfigSpecApplyConfiguration) WithKMSKeyARN(value string) *AWSCSIDriverConfigSpecApplyConfiguration {
	b.KMSKeyARN = &value
	return b
}

// WithEFSVolumeMetrics sets the EFSVolumeMetrics field in the declarative configuration to the given value
// and returns the receiver, so that objects can be built by chaining "With" function invocations.
// If called multiple times, the EFSVolumeMetrics field is set to the value of the last call.
func (b *AWSCSIDriverConfigSpecApplyConfiguration) WithEFSVolumeMetrics(value *AWSEFSVolumeMetricsApplyConfiguration) *AWSCSIDriverConfigSpecApplyConfiguration {
	b.EFSVolumeMetrics = value
	return b
}
