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

package v1

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

// NetworkObservabilitySpecApplyConfiguration represents a declarative configuration of the NetworkObservabilitySpec type for use
// with apply.
//
// NetworkObservabilitySpec defines the configuration for network observability installation
type NetworkObservabilitySpecApplyConfiguration struct {
	// installationPolicy controls whether network observability is installed during cluster deployment.
	// Valid values are "InstallAndEnable" and "NoAction".
	// When set to "InstallAndEnable", ensure that network observability will be installed and enabled on the cluster. If already installed, no action taken, but if it gets uninstalled, it will install it again.
	// When set to "NoAction", nothing will be done regarding Network observability.
	// During the installation of NetworkObservability, the platform checks for any existing manual installations.
	// If a successful installation using the OLMv0 or OLMv1 API is detected, it will be used.
	// If the platform cannot determine how the current version was installed, or if the existing installation is incomplete, the installation process will stop.
	InstallationPolicy *configv1.NetworkObservabilityInstallationPolicy `json:"installationPolicy,omitempty"`
}

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

// WithInstallationPolicy sets the InstallationPolicy 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 InstallationPolicy field is set to the value of the last call.
func (b *NetworkObservabilitySpecApplyConfiguration) WithInstallationPolicy(value configv1.NetworkObservabilityInstallationPolicy) *NetworkObservabilitySpecApplyConfiguration {
	b.InstallationPolicy = &value
	return b
}
