// Copyright (c) 2026 Tigera, Inc. All rights reserved.

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

package v3

// ClusterInformationSpecApplyConfiguration represents a declarative configuration of the ClusterInformationSpec type for use
// with apply.
//
// ClusterInformationSpec contains the values of describing the cluster.
type ClusterInformationSpecApplyConfiguration struct {
	// ClusterGUID is the GUID of the cluster
	ClusterGUID *string `json:"clusterGUID,omitempty"`
	// ClusterType describes the type of the cluster
	ClusterType *string `json:"clusterType,omitempty"`
	// CalicoVersion is the version of Calico that the cluster is running
	CalicoVersion *string `json:"calicoVersion,omitempty"`
	// DatastoreReady is used during significant datastore migrations to signal to components
	// such as Felix that it should wait before accessing the datastore.
	DatastoreReady *bool `json:"datastoreReady,omitempty"`
	// Variant declares which variant of Calico should be active.
	Variant *string `json:"variant,omitempty"`
}

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

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

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

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

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

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