/*
Copyright The Kubernetes Authors.

Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at

    http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
*/

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

package v1alpha3

// ResourcePoolStatusRequestSpecApplyConfiguration represents a declarative configuration of the ResourcePoolStatusRequestSpec type for use
// with apply.
//
// ResourcePoolStatusRequestSpec defines the filters for the pool status request.
type ResourcePoolStatusRequestSpecApplyConfiguration struct {
	// Driver specifies the DRA driver name to filter pools.
	// Only pools from ResourceSlices with this driver will be included.
	// Must be a DNS subdomain (e.g., "gpu.example.com").
	Driver *string `json:"driver,omitempty"`
	// PoolName optionally filters to a specific pool name.
	// If not specified, all pools from the specified driver are included.
	// When specified, must be a non-empty valid resource pool name
	// (DNS subdomains separated by "/").
	PoolName *string `json:"poolName,omitempty"`
	// Limit optionally specifies the maximum number of pools to return in the status.
	// If more pools match the filter criteria, the response will be truncated
	// (i.e., len(status.pools) < status.poolCount).
	//
	// Default: 100
	// Minimum: 1
	// Maximum: 1000
	Limit *int32 `json:"limit,omitempty"`
	// DefaultPartitionTypeAttribute optionally names a device attribute (by its
	// fully qualified name, e.g. "gpu.example.com/profile") to use as the default
	// grouping attribute for partitionable devices whose slice has not declared
	// one themselves.
	//
	// A slice's own PartitionTypeAttribute always takes precedence. This default
	// applies only to devices whose slice does not declare one, so that a request
	// can still get an accurate partitionSummary from a driver that has not
	// been updated to declare it. When neither the slice nor this default names
	// an attribute, a partitionable pool reports no partitionSummary.
	//
	// Must include the domain qualifier.
	DefaultPartitionTypeAttribute *string `json:"defaultPartitionTypeAttribute,omitempty"`
}

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

// WithDriver sets the Driver 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 Driver field is set to the value of the last call.
func (b *ResourcePoolStatusRequestSpecApplyConfiguration) WithDriver(value string) *ResourcePoolStatusRequestSpecApplyConfiguration {
	b.Driver = &value
	return b
}

// WithPoolName sets the PoolName 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 PoolName field is set to the value of the last call.
func (b *ResourcePoolStatusRequestSpecApplyConfiguration) WithPoolName(value string) *ResourcePoolStatusRequestSpecApplyConfiguration {
	b.PoolName = &value
	return b
}

// WithLimit sets the Limit 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 Limit field is set to the value of the last call.
func (b *ResourcePoolStatusRequestSpecApplyConfiguration) WithLimit(value int32) *ResourcePoolStatusRequestSpecApplyConfiguration {
	b.Limit = &value
	return b
}

// WithDefaultPartitionTypeAttribute sets the DefaultPartitionTypeAttribute 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 DefaultPartitionTypeAttribute field is set to the value of the last call.
func (b *ResourcePoolStatusRequestSpecApplyConfiguration) WithDefaultPartitionTypeAttribute(value string) *ResourcePoolStatusRequestSpecApplyConfiguration {
	b.DefaultPartitionTypeAttribute = &value
	return b
}
