//go:build !ignore_autogenerated

// Copyright 2023 Clastix Labs
// SPDX-License-Identifier: Apache-2.0

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

package v1alpha1

import (
	apiv1alpha1 "github.com/clastix/kamaji/api/v1alpha1"
	"k8s.io/api/core/v1"
	metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
	runtime "k8s.io/apimachinery/pkg/runtime"
)

// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
func (in *AddonsSpec) DeepCopyInto(out *AddonsSpec) {
	*out = *in
	in.AddonsSpec.DeepCopyInto(&out.AddonsSpec)
	if in.CoreDNS != nil {
		in, out := &in.CoreDNS, &out.CoreDNS
		*out = new(CoreDNSAddonSpec)
		(*in).DeepCopyInto(*out)
	}
}

// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new AddonsSpec.
func (in *AddonsSpec) DeepCopy() *AddonsSpec {
	if in == nil {
		return nil
	}
	out := new(AddonsSpec)
	in.DeepCopyInto(out)
	return out
}

// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
func (in *ControlPlaneComponent) DeepCopyInto(out *ControlPlaneComponent) {
	*out = *in
	if in.ExtraVolumeMounts != nil {
		in, out := &in.ExtraVolumeMounts, &out.ExtraVolumeMounts
		*out = make([]v1.VolumeMount, len(*in))
		for i := range *in {
			(*in)[i].DeepCopyInto(&(*out)[i])
		}
	}
	if in.ExtraArgs != nil {
		in, out := &in.ExtraArgs, &out.ExtraArgs
		*out = make([]string, len(*in))
		copy(*out, *in)
	}
	in.Resources.DeepCopyInto(&out.Resources)
}

// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ControlPlaneComponent.
func (in *ControlPlaneComponent) DeepCopy() *ControlPlaneComponent {
	if in == nil {
		return nil
	}
	out := new(ControlPlaneComponent)
	in.DeepCopyInto(out)
	return out
}

// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
func (in *CoreDNSAddonSpec) DeepCopyInto(out *CoreDNSAddonSpec) {
	*out = *in
	if in.AddonSpec != nil {
		in, out := &in.AddonSpec, &out.AddonSpec
		*out = new(apiv1alpha1.AddonSpec)
		**out = **in
	}
	if in.DNSServiceIPs != nil {
		in, out := &in.DNSServiceIPs, &out.DNSServiceIPs
		*out = make([]string, len(*in))
		copy(*out, *in)
	}
}

// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new CoreDNSAddonSpec.
func (in *CoreDNSAddonSpec) DeepCopy() *CoreDNSAddonSpec {
	if in == nil {
		return nil
	}
	out := new(CoreDNSAddonSpec)
	in.DeepCopyInto(out)
	return out
}

// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
func (in *DeploymentComponent) DeepCopyInto(out *DeploymentComponent) {
	*out = *in
	if in.NodeSelector != nil {
		in, out := &in.NodeSelector, &out.NodeSelector
		*out = make(map[string]string, len(*in))
		for key, val := range *in {
			(*out)[key] = val
		}
	}
	in.AdditionalMetadata.DeepCopyInto(&out.AdditionalMetadata)
	in.PodAdditionalMetadata.DeepCopyInto(&out.PodAdditionalMetadata)
	in.Strategy.DeepCopyInto(&out.Strategy)
	if in.Affinity != nil {
		in, out := &in.Affinity, &out.Affinity
		*out = new(v1.Affinity)
		(*in).DeepCopyInto(*out)
	}
	if in.Tolerations != nil {
		in, out := &in.Tolerations, &out.Tolerations
		*out = make([]v1.Toleration, len(*in))
		for i := range *in {
			(*in)[i].DeepCopyInto(&(*out)[i])
		}
	}
	if in.TopologySpreadConstraints != nil {
		in, out := &in.TopologySpreadConstraints, &out.TopologySpreadConstraints
		*out = make([]v1.TopologySpreadConstraint, len(*in))
		for i := range *in {
			(*in)[i].DeepCopyInto(&(*out)[i])
		}
	}
	if in.ExtraInitContainers != nil {
		in, out := &in.ExtraInitContainers, &out.ExtraInitContainers
		*out = make([]v1.Container, len(*in))
		for i := range *in {
			(*in)[i].DeepCopyInto(&(*out)[i])
		}
	}
	if in.ExtraContainers != nil {
		in, out := &in.ExtraContainers, &out.ExtraContainers
		*out = make([]v1.Container, len(*in))
		for i := range *in {
			(*in)[i].DeepCopyInto(&(*out)[i])
		}
	}
	if in.ExtraVolumes != nil {
		in, out := &in.ExtraVolumes, &out.ExtraVolumes
		*out = make([]v1.Volume, len(*in))
		for i := range *in {
			(*in)[i].DeepCopyInto(&(*out)[i])
		}
	}
	if in.ExternalClusterReference != nil {
		in, out := &in.ExternalClusterReference, &out.ExternalClusterReference
		*out = new(ExternalClusterReference)
		**out = **in
	}
}

// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new DeploymentComponent.
func (in *DeploymentComponent) DeepCopy() *DeploymentComponent {
	if in == nil {
		return nil
	}
	out := new(DeploymentComponent)
	in.DeepCopyInto(out)
	return out
}

// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
func (in *ExternalClusterReference) DeepCopyInto(out *ExternalClusterReference) {
	*out = *in
}

// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ExternalClusterReference.
func (in *ExternalClusterReference) DeepCopy() *ExternalClusterReference {
	if in == nil {
		return nil
	}
	out := new(ExternalClusterReference)
	in.DeepCopyInto(out)
	return out
}

// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
func (in *IngressComponent) DeepCopyInto(out *IngressComponent) {
	*out = *in
	if in.ExtraLabels != nil {
		in, out := &in.ExtraLabels, &out.ExtraLabels
		*out = make(map[string]string, len(*in))
		for key, val := range *in {
			(*out)[key] = val
		}
	}
	if in.ExtraAnnotations != nil {
		in, out := &in.ExtraAnnotations, &out.ExtraAnnotations
		*out = make(map[string]string, len(*in))
		for key, val := range *in {
			(*out)[key] = val
		}
	}
}

// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new IngressComponent.
func (in *IngressComponent) DeepCopy() *IngressComponent {
	if in == nil {
		return nil
	}
	out := new(IngressComponent)
	in.DeepCopyInto(out)
	return out
}

// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
func (in *KamajiControlPlane) DeepCopyInto(out *KamajiControlPlane) {
	*out = *in
	out.TypeMeta = in.TypeMeta
	in.ObjectMeta.DeepCopyInto(&out.ObjectMeta)
	in.Spec.DeepCopyInto(&out.Spec)
	in.Status.DeepCopyInto(&out.Status)
}

// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new KamajiControlPlane.
func (in *KamajiControlPlane) DeepCopy() *KamajiControlPlane {
	if in == nil {
		return nil
	}
	out := new(KamajiControlPlane)
	in.DeepCopyInto(out)
	return out
}

// DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object.
func (in *KamajiControlPlane) DeepCopyObject() runtime.Object {
	if c := in.DeepCopy(); c != nil {
		return c
	}
	return nil
}

// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
func (in *KamajiControlPlaneFields) DeepCopyInto(out *KamajiControlPlaneFields) {
	*out = *in
	in.Addons.DeepCopyInto(&out.Addons)
	if in.AdmissionControllers != nil {
		in, out := &in.AdmissionControllers, &out.AdmissionControllers
		*out = make(apiv1alpha1.AdmissionControllers, len(*in))
		copy(*out, *in)
	}
	in.ControllerManager.DeepCopyInto(&out.ControllerManager)
	in.ApiServer.DeepCopyInto(&out.ApiServer)
	in.Scheduler.DeepCopyInto(&out.Scheduler)
	in.Kine.DeepCopyInto(&out.Kine)
	in.Kubelet.DeepCopyInto(&out.Kubelet)
	in.Network.DeepCopyInto(&out.Network)
	in.Deployment.DeepCopyInto(&out.Deployment)
}

// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new KamajiControlPlaneFields.
func (in *KamajiControlPlaneFields) DeepCopy() *KamajiControlPlaneFields {
	if in == nil {
		return nil
	}
	out := new(KamajiControlPlaneFields)
	in.DeepCopyInto(out)
	return out
}

// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
func (in *KamajiControlPlaneList) DeepCopyInto(out *KamajiControlPlaneList) {
	*out = *in
	out.TypeMeta = in.TypeMeta
	in.ListMeta.DeepCopyInto(&out.ListMeta)
	if in.Items != nil {
		in, out := &in.Items, &out.Items
		*out = make([]KamajiControlPlane, len(*in))
		for i := range *in {
			(*in)[i].DeepCopyInto(&(*out)[i])
		}
	}
}

// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new KamajiControlPlaneList.
func (in *KamajiControlPlaneList) DeepCopy() *KamajiControlPlaneList {
	if in == nil {
		return nil
	}
	out := new(KamajiControlPlaneList)
	in.DeepCopyInto(out)
	return out
}

// DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object.
func (in *KamajiControlPlaneList) DeepCopyObject() runtime.Object {
	if c := in.DeepCopy(); c != nil {
		return c
	}
	return nil
}

// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
func (in *KamajiControlPlaneSpec) DeepCopyInto(out *KamajiControlPlaneSpec) {
	*out = *in
	in.KamajiControlPlaneFields.DeepCopyInto(&out.KamajiControlPlaneFields)
	out.ControlPlaneEndpoint = in.ControlPlaneEndpoint
	if in.Replicas != nil {
		in, out := &in.Replicas, &out.Replicas
		*out = new(int32)
		**out = **in
	}
}

// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new KamajiControlPlaneSpec.
func (in *KamajiControlPlaneSpec) DeepCopy() *KamajiControlPlaneSpec {
	if in == nil {
		return nil
	}
	out := new(KamajiControlPlaneSpec)
	in.DeepCopyInto(out)
	return out
}

// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
func (in *KamajiControlPlaneStatus) DeepCopyInto(out *KamajiControlPlaneStatus) {
	*out = *in
	if in.ExternalManagedControlPlane != nil {
		in, out := &in.ExternalManagedControlPlane, &out.ExternalManagedControlPlane
		*out = new(bool)
		**out = **in
	}
	if in.Conditions != nil {
		in, out := &in.Conditions, &out.Conditions
		*out = make([]metav1.Condition, len(*in))
		for i := range *in {
			(*in)[i].DeepCopyInto(&(*out)[i])
		}
	}
}

// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new KamajiControlPlaneStatus.
func (in *KamajiControlPlaneStatus) DeepCopy() *KamajiControlPlaneStatus {
	if in == nil {
		return nil
	}
	out := new(KamajiControlPlaneStatus)
	in.DeepCopyInto(out)
	return out
}

// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
func (in *KamajiControlPlaneTemplate) DeepCopyInto(out *KamajiControlPlaneTemplate) {
	*out = *in
	out.TypeMeta = in.TypeMeta
	in.ObjectMeta.DeepCopyInto(&out.ObjectMeta)
	in.Spec.DeepCopyInto(&out.Spec)
}

// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new KamajiControlPlaneTemplate.
func (in *KamajiControlPlaneTemplate) DeepCopy() *KamajiControlPlaneTemplate {
	if in == nil {
		return nil
	}
	out := new(KamajiControlPlaneTemplate)
	in.DeepCopyInto(out)
	return out
}

// DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object.
func (in *KamajiControlPlaneTemplate) DeepCopyObject() runtime.Object {
	if c := in.DeepCopy(); c != nil {
		return c
	}
	return nil
}

// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
func (in *KamajiControlPlaneTemplateList) DeepCopyInto(out *KamajiControlPlaneTemplateList) {
	*out = *in
	out.TypeMeta = in.TypeMeta
	in.ListMeta.DeepCopyInto(&out.ListMeta)
	if in.Items != nil {
		in, out := &in.Items, &out.Items
		*out = make([]KamajiControlPlaneTemplate, len(*in))
		for i := range *in {
			(*in)[i].DeepCopyInto(&(*out)[i])
		}
	}
}

// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new KamajiControlPlaneTemplateList.
func (in *KamajiControlPlaneTemplateList) DeepCopy() *KamajiControlPlaneTemplateList {
	if in == nil {
		return nil
	}
	out := new(KamajiControlPlaneTemplateList)
	in.DeepCopyInto(out)
	return out
}

// DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object.
func (in *KamajiControlPlaneTemplateList) DeepCopyObject() runtime.Object {
	if c := in.DeepCopy(); c != nil {
		return c
	}
	return nil
}

// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
func (in *KamajiControlPlaneTemplateResource) DeepCopyInto(out *KamajiControlPlaneTemplateResource) {
	*out = *in
	in.ObjectMeta.DeepCopyInto(&out.ObjectMeta)
	in.Spec.DeepCopyInto(&out.Spec)
}

// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new KamajiControlPlaneTemplateResource.
func (in *KamajiControlPlaneTemplateResource) DeepCopy() *KamajiControlPlaneTemplateResource {
	if in == nil {
		return nil
	}
	out := new(KamajiControlPlaneTemplateResource)
	in.DeepCopyInto(out)
	return out
}

// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
func (in *KamajiControlPlaneTemplateSpec) DeepCopyInto(out *KamajiControlPlaneTemplateSpec) {
	*out = *in
	in.Template.DeepCopyInto(&out.Template)
}

// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new KamajiControlPlaneTemplateSpec.
func (in *KamajiControlPlaneTemplateSpec) DeepCopy() *KamajiControlPlaneTemplateSpec {
	if in == nil {
		return nil
	}
	out := new(KamajiControlPlaneTemplateSpec)
	in.DeepCopyInto(out)
	return out
}

// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
func (in *KineComponent) DeepCopyInto(out *KineComponent) {
	*out = *in
	if in.ExtraArgs != nil {
		in, out := &in.ExtraArgs, &out.ExtraArgs
		*out = make([]string, len(*in))
		copy(*out, *in)
	}
	in.Resources.DeepCopyInto(&out.Resources)
}

// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new KineComponent.
func (in *KineComponent) DeepCopy() *KineComponent {
	if in == nil {
		return nil
	}
	out := new(KineComponent)
	in.DeepCopyInto(out)
	return out
}

// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
func (in *LoadBalancerConfig) DeepCopyInto(out *LoadBalancerConfig) {
	*out = *in
	if in.LoadBalancerSourceRanges != nil {
		in, out := &in.LoadBalancerSourceRanges, &out.LoadBalancerSourceRanges
		*out = make([]string, len(*in))
		copy(*out, *in)
	}
	if in.LoadBalancerClass != nil {
		in, out := &in.LoadBalancerClass, &out.LoadBalancerClass
		*out = new(string)
		**out = **in
	}
}

// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new LoadBalancerConfig.
func (in *LoadBalancerConfig) DeepCopy() *LoadBalancerConfig {
	if in == nil {
		return nil
	}
	out := new(LoadBalancerConfig)
	in.DeepCopyInto(out)
	return out
}

// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
func (in *NetworkComponent) DeepCopyInto(out *NetworkComponent) {
	*out = *in
	if in.LoadBalancerConfig != nil {
		in, out := &in.LoadBalancerConfig, &out.LoadBalancerConfig
		*out = new(LoadBalancerConfig)
		(*in).DeepCopyInto(*out)
	}
	if in.Ingress != nil {
		in, out := &in.Ingress, &out.Ingress
		*out = new(IngressComponent)
		(*in).DeepCopyInto(*out)
	}
	if in.ServiceLabels != nil {
		in, out := &in.ServiceLabels, &out.ServiceLabels
		*out = make(map[string]string, len(*in))
		for key, val := range *in {
			(*out)[key] = val
		}
	}
	if in.ServiceAnnotations != nil {
		in, out := &in.ServiceAnnotations, &out.ServiceAnnotations
		*out = make(map[string]string, len(*in))
		for key, val := range *in {
			(*out)[key] = val
		}
	}
	if in.CertSANs != nil {
		in, out := &in.CertSANs, &out.CertSANs
		*out = make([]string, len(*in))
		copy(*out, *in)
	}
	if in.DNSServiceIPs != nil {
		in, out := &in.DNSServiceIPs, &out.DNSServiceIPs
		*out = make([]string, len(*in))
		copy(*out, *in)
	}
}

// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new NetworkComponent.
func (in *NetworkComponent) DeepCopy() *NetworkComponent {
	if in == nil {
		return nil
	}
	out := new(NetworkComponent)
	in.DeepCopyInto(out)
	return out
}
