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

package v1alpha1

import (
	machineconfigurationv1alpha1 "github.com/openshift/api/machineconfiguration/v1alpha1"
)

// OSImageStreamSetApplyConfiguration represents a declarative configuration of the OSImageStreamSet type for use
// with apply.
type OSImageStreamSetApplyConfiguration struct {
	// name is the required identifier of the stream.
	//
	// name is determined by the operator based on the OCI label of the
	// discovered OS or Extension Image.
	//
	// Must be a valid RFC 1123 subdomain between 1 and 253 characters in length,
	// consisting of lowercase alphanumeric characters, hyphens ('-'), and periods ('.').
	Name *string `json:"name,omitempty"`
	// osImage is a required OS Image referenced by digest.
	//
	// osImage contains the immutable, fundamental operating system components, including the kernel
	// and base utilities, that define the core environment for the node's host operating system.
	//
	// The format of the image pull spec is: host[:port][/namespace]/name@sha256:<digest>,
	// where the digest must be 64 characters long, and consist only of lowercase hexadecimal characters, a-f and 0-9.
	// The length of the whole spec must be between 1 to 447 characters.
	OSImage *machineconfigurationv1alpha1.ImageDigestFormat `json:"osImage,omitempty"`
	// osExtensionsImage is a required OS Extensions Image referenced by digest.
	//
	// osExtensionsImage bundles the extra repositories used to enable extensions, augmenting
	// the base operating system without modifying the underlying immutable osImage.
	//
	// The format of the image pull spec is: host[:port][/namespace]/name@sha256:<digest>,
	// where the digest must be 64 characters long, and consist only of lowercase hexadecimal characters, a-f and 0-9.
	// The length of the whole spec must be between 1 to 447 characters.
	OSExtensionsImage *machineconfigurationv1alpha1.ImageDigestFormat `json:"osExtensionsImage,omitempty"`
}

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

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

// WithOSImage sets the OSImage 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 OSImage field is set to the value of the last call.
func (b *OSImageStreamSetApplyConfiguration) WithOSImage(value machineconfigurationv1alpha1.ImageDigestFormat) *OSImageStreamSetApplyConfiguration {
	b.OSImage = &value
	return b
}

// WithOSExtensionsImage sets the OSExtensionsImage 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 OSExtensionsImage field is set to the value of the last call.
func (b *OSImageStreamSetApplyConfiguration) WithOSExtensionsImage(value machineconfigurationv1alpha1.ImageDigestFormat) *OSImageStreamSetApplyConfiguration {
	b.OSExtensionsImage = &value
	return b
}
