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

package v1

import (
	configv1 "github.com/openshift/api/config/v1"
)

// SchedulerSpecApplyConfiguration represents a declarative configuration of the SchedulerSpec type for use
// with apply.
type SchedulerSpecApplyConfiguration struct {
	Policy                *ConfigMapNameReferenceApplyConfiguration `json:"policy,omitempty"`
	Profile               *configv1.SchedulerProfile                `json:"profile,omitempty"`
	ProfileCustomizations *ProfileCustomizationsApplyConfiguration  `json:"profileCustomizations,omitempty"`
	DefaultNodeSelector   *string                                   `json:"defaultNodeSelector,omitempty"`
	MastersSchedulable    *bool                                     `json:"mastersSchedulable,omitempty"`
}

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

// WithPolicy sets the Policy 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 Policy field is set to the value of the last call.
func (b *SchedulerSpecApplyConfiguration) WithPolicy(value *ConfigMapNameReferenceApplyConfiguration) *SchedulerSpecApplyConfiguration {
	b.Policy = value
	return b
}

// WithProfile sets the Profile 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 Profile field is set to the value of the last call.
func (b *SchedulerSpecApplyConfiguration) WithProfile(value configv1.SchedulerProfile) *SchedulerSpecApplyConfiguration {
	b.Profile = &value
	return b
}

// WithProfileCustomizations sets the ProfileCustomizations 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 ProfileCustomizations field is set to the value of the last call.
func (b *SchedulerSpecApplyConfiguration) WithProfileCustomizations(value *ProfileCustomizationsApplyConfiguration) *SchedulerSpecApplyConfiguration {
	b.ProfileCustomizations = value
	return b
}

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

// WithMastersSchedulable sets the MastersSchedulable 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 MastersSchedulable field is set to the value of the last call.
func (b *SchedulerSpecApplyConfiguration) WithMastersSchedulable(value bool) *SchedulerSpecApplyConfiguration {
	b.MastersSchedulable = &value
	return b
}
