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

package v1

import (
	metav1 "k8s.io/client-go/applyconfigurations/meta/v1"
)

// MachineConfigurationStatusApplyConfiguration represents a declarative configuration of the MachineConfigurationStatus type for use
// with apply.
type MachineConfigurationStatusApplyConfiguration struct {
	// observedGeneration is the last generation change you've dealt with
	ObservedGeneration *int64 `json:"observedGeneration,omitempty"`
	// conditions is a list of conditions and their status
	Conditions []metav1.ConditionApplyConfiguration `json:"conditions,omitempty"`
	// nodeDisruptionPolicyStatus status reflects what the latest cluster-validated policies are,
	// and will be used by the Machine Config Daemon during future node updates.
	NodeDisruptionPolicyStatus *NodeDisruptionPolicyStatusApplyConfiguration `json:"nodeDisruptionPolicyStatus,omitempty"`
	// managedBootImagesStatus reflects what the latest cluster-validated boot image configuration is
	// and will be used by Machine Config Controller while performing boot image updates.
	ManagedBootImagesStatus *ManagedBootImagesApplyConfiguration `json:"managedBootImagesStatus,omitempty"`
	// bootImageSkewEnforcementStatus reflects what the latest cluster-validated boot image skew enforcement
	// configuration is and will be used by Machine Config Controller while performing boot image skew enforcement.
	// When omitted, the MCO has no knowledge of how to enforce boot image skew. When the MCO does not know how
	// boot image skew should be enforced, cluster upgrades will be blocked until it can either automatically
	// determine skew enforcement or there is an explicit skew enforcement configuration provided in the
	// spec.bootImageSkewEnforcement field.
	BootImageSkewEnforcementStatus *BootImageSkewEnforcementStatusApplyConfiguration `json:"bootImageSkewEnforcementStatus,omitempty"`
}

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

// WithObservedGeneration sets the ObservedGeneration 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 ObservedGeneration field is set to the value of the last call.
func (b *MachineConfigurationStatusApplyConfiguration) WithObservedGeneration(value int64) *MachineConfigurationStatusApplyConfiguration {
	b.ObservedGeneration = &value
	return b
}

// WithConditions adds the given value to the Conditions field in the declarative configuration
// and returns the receiver, so that objects can be build by chaining "With" function invocations.
// If called multiple times, values provided by each call will be appended to the Conditions field.
func (b *MachineConfigurationStatusApplyConfiguration) WithConditions(values ...*metav1.ConditionApplyConfiguration) *MachineConfigurationStatusApplyConfiguration {
	for i := range values {
		if values[i] == nil {
			panic("nil value passed to WithConditions")
		}
		b.Conditions = append(b.Conditions, *values[i])
	}
	return b
}

// WithNodeDisruptionPolicyStatus sets the NodeDisruptionPolicyStatus 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 NodeDisruptionPolicyStatus field is set to the value of the last call.
func (b *MachineConfigurationStatusApplyConfiguration) WithNodeDisruptionPolicyStatus(value *NodeDisruptionPolicyStatusApplyConfiguration) *MachineConfigurationStatusApplyConfiguration {
	b.NodeDisruptionPolicyStatus = value
	return b
}

// WithManagedBootImagesStatus sets the ManagedBootImagesStatus 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 ManagedBootImagesStatus field is set to the value of the last call.
func (b *MachineConfigurationStatusApplyConfiguration) WithManagedBootImagesStatus(value *ManagedBootImagesApplyConfiguration) *MachineConfigurationStatusApplyConfiguration {
	b.ManagedBootImagesStatus = value
	return b
}

// WithBootImageSkewEnforcementStatus sets the BootImageSkewEnforcementStatus 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 BootImageSkewEnforcementStatus field is set to the value of the last call.
func (b *MachineConfigurationStatusApplyConfiguration) WithBootImageSkewEnforcementStatus(value *BootImageSkewEnforcementStatusApplyConfiguration) *MachineConfigurationStatusApplyConfiguration {
	b.BootImageSkewEnforcementStatus = value
	return b
}
