Drop initial code

This commit is contained in:
Danny Bessems
2026-01-15 09:58:01 +00:00
parent 227d957219
commit 1e7c9ba5cb
228 changed files with 19883 additions and 1 deletions

View File

@@ -0,0 +1,101 @@
package v1alpha1
import (
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
)
// GenericPoolReq defines a request for a set of nodes with specific sizing.
// This is provider-agnostic.
type GenericPoolReq struct {
// Name is the identifier for this node pool (e.g. "workers-gpu").
// +required
Name string `json:"name"`
// Quantity is the number of nodes desired.
// +required
// +kubebuilder:validation:Minimum=0
Quantity int `json:"quantity"`
// CpuCores is the number of vCPUs per node.
// +required
// +kubebuilder:validation:Minimum=1
CpuCores int `json:"cpuCores"`
// MemoryGB is the amount of RAM per node in Gigabytes.
// +required
// +kubebuilder:validation:Minimum=1
MemoryGB int `json:"memoryGb"`
// DiskGB is the root disk size per node in Gigabytes.
// +required
// +kubebuilder:validation:Minimum=10
DiskGB int `json:"diskGb"`
}
// ClusterBlueprintSpec defines the desired state of ClusterBlueprint
type ClusterBlueprintSpec struct {
// InfraBlueprintRef points to the InfraBlueprint (IBP) that manages
// the quotas and provider details for this cluster.
// +required
InfraBlueprintRef string `json:"infraBlueprintRef"`
// KubernetesVersion is the target RKE2/K3s version (e.g., v1.28.0+rke2r1).
// +required
KubernetesVersion string `json:"kubernetesVersion"`
// ControlPlaneHA determines if we provision 3 CP nodes (true) or 1 (false).
// +optional
ControlPlaneHA bool `json:"controlPlaneHA"`
// WorkerPools is the list of worker node groups to provision.
// +optional
WorkerPools []GenericPoolReq `json:"workerPools,omitempty"`
}
// IdentityStatus tracks the generated cloud provider identity
type IdentityStatus struct {
// SecretRef is the name of the generated secret used by this cluster.
SecretRef string `json:"secretRef,omitempty"`
// ServiceAccount is the name of the SA created on the provider (if applicable).
ServiceAccount string `json:"serviceAccount,omitempty"`
}
// ClusterBlueprintStatus defines the observed state of ClusterBlueprint
type ClusterBlueprintStatus struct {
// Ready indicates if the Helm Chart has been successfully applied.
Ready bool `json:"ready"`
// Identity tracks the cloud credentials generated for this cluster.
// +optional
Identity *IdentityStatus `json:"identity,omitempty"`
// Phase can be "Pending", "Provisioning", "Deployed", or "Failed"
// +optional
Phase string `json:"phase,omitempty"`
}
// +kubebuilder:object:root=true
// +kubebuilder:subresource:status
// +kubebuilder:resource:shortName=cbp
// +kubebuilder:printcolumn:name="Phase",type="string",JSONPath=".status.phase"
// +kubebuilder:printcolumn:name="K8s Version",type="string",JSONPath=".spec.kubernetesVersion"
// +kubebuilder:printcolumn:name="Infra",type="string",JSONPath=".spec.infraBlueprintRef"
type ClusterBlueprint struct {
metav1.TypeMeta `json:",inline"`
metav1.ObjectMeta `json:"metadata,omitempty"`
Spec ClusterBlueprintSpec `json:"spec,omitempty"`
Status ClusterBlueprintStatus `json:"status,omitempty"`
}
// +kubebuilder:object:root=true
type ClusterBlueprintList struct {
metav1.TypeMeta `json:",inline"`
metav1.ListMeta `json:"metadata,omitempty"`
Items []ClusterBlueprint `json:"items"`
}
func init() {
SchemeBuilder.Register(&ClusterBlueprint{}, &ClusterBlueprintList{})
}

View File

@@ -0,0 +1,36 @@
/*
Copyright 2026.
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
*/
// Package v1alpha1 contains API Schema definitions for the rig v1alpha1 API group.
// +kubebuilder:object:generate=true
// +groupName=rig.appstack.io
package v1alpha1
import (
"k8s.io/apimachinery/pkg/runtime/schema"
"sigs.k8s.io/controller-runtime/pkg/scheme"
)
var (
// GroupVersion is group version used to register these objects.
GroupVersion = schema.GroupVersion{Group: "rig.appstack.io", Version: "v1alpha1"}
// SchemeBuilder is used to add go types to the GroupVersionKind scheme.
SchemeBuilder = &scheme.Builder{GroupVersion: GroupVersion}
// AddToScheme adds the types in this group-version to the given scheme.
AddToScheme = SchemeBuilder.AddToScheme
)

View File

@@ -0,0 +1,59 @@
package v1alpha1
import (
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
)
// HarvesterBlueprintSpec defines the desired state of HarvesterBlueprint
type HarvesterBlueprintSpec struct {
// HarvesterURL is the endpoint of the Harvester cluster (e.g. https://10.x.x.x:6443).
// This replaces the need for auto-discovery.
// +required
HarvesterURL string `json:"harvesterUrl"`
// VmNamespace is the namespace in Harvester where VMs will be created.
// +required
VmNamespace string `json:"vmNamespace"`
// ImageName is the specific image name in Harvester to clone (e.g. image-abcde).
// +required
ImageName string `json:"imageName"`
// NetworkName is the VM Network to attach to the nodes.
// +required
NetworkName string `json:"networkName"`
// SshUser is the username to configure on the VM (e.g. ubuntu, rancher).
// +required
SshUser string `json:"sshUser"`
}
// HarvesterBlueprintStatus defines the observed state of HarvesterBlueprint
type HarvesterBlueprintStatus struct {
// Ready indicates the configuration is valid (optional future use)
Ready bool `json:"ready,omitempty"`
}
// +kubebuilder:object:root=true
// +kubebuilder:subresource:status
// +kubebuilder:resource:shortName=hbp
type HarvesterBlueprint struct {
metav1.TypeMeta `json:",inline"`
metav1.ObjectMeta `json:"metadata,omitempty"`
Spec HarvesterBlueprintSpec `json:"spec,omitempty"`
Status HarvesterBlueprintStatus `json:"status,omitempty"`
}
// +kubebuilder:object:root=true
// HarvesterBlueprintList contains a list of HarvesterBlueprint
type HarvesterBlueprintList struct {
metav1.TypeMeta `json:",inline"`
metav1.ListMeta `json:"metadata,omitempty"`
Items []HarvesterBlueprint `json:"items"`
}
func init() {
SchemeBuilder.Register(&HarvesterBlueprint{}, &HarvesterBlueprintList{})
}

View File

@@ -0,0 +1,112 @@
package v1alpha1
import (
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
)
// InfraQuota defines the resource limits for this infrastructure account
type InfraQuota struct {
// MaxCPU is the total number of cores allowed across all clusters
// +optional
MaxCPU int `json:"maxCpu,omitempty"`
// MaxMemoryGB is the total RAM (in GB) allowed across all clusters
// +optional
MaxMemoryGB int `json:"maxMemoryGb,omitempty"`
// MaxDiskGB is the total Storage (in GB) allowed across all clusters
// +optional
MaxDiskGB int `json:"maxDiskGb,omitempty"`
}
// InfraQuotaStatus tracks current usage
type InfraQuotaStatus struct {
// UsedCPU is the sum of cores currently provisioned
UsedCPU int `json:"usedCpu"`
// UsedMemoryGB is the sum of RAM currently provisioned
UsedMemoryGB int `json:"usedMemoryGb"`
// UsedDiskGB tracks storage consumption
UsedDiskGB int `json:"usedDiskGb"`
}
// ProviderRef points to the specific provider configuration (HBP or VBP)
type ProviderRef struct {
// Kind is the type of resource being referenced (e.g., HarvesterBlueprint)
// +required
Kind string `json:"kind"`
// Name is the name of resource being referenced
// +required
Name string `json:"name"`
// APIGroup defaults to rig.appstack.io if not specified
// +optional
APIGroup string `json:"apiGroup,omitempty"`
}
// InfraBlueprintSpec defines the desired state of InfraBlueprint
type InfraBlueprintSpec struct {
// RancherURL is the public URL of the Rancher Manager (e.g. https://rancher.example.com)
// This is injected into the Helm Chart to register the cluster.
// +required
RancherURL string `json:"rancherUrl"`
// CloudCredentialSecret is the name of the Secret containing the
// master cloud credentials (e.g., kubeconfig or username/password).
// +required
CloudCredentialSecret string `json:"cloudCredentialSecret"`
// ProviderRef points to the technical configuration (HarvesterBlueprint/VsphereBlueprint).
// +required
ProviderRef ProviderRef `json:"providerRef"`
// Quota defines the maximum resources allocatable by this Infra.
// +optional
Quota InfraQuota `json:"quota,omitempty"`
// UserData is the default cloud-init user data for all clusters in this Infra.
// +optional
UserData string `json:"userData,omitempty"`
}
// InfraBlueprintStatus defines the observed state of InfraBlueprint
type InfraBlueprintStatus struct {
// Ready indicates the provider connection is verified
Ready bool `json:"ready,omitempty"`
// Usage tracks the current resource consumption
Usage InfraQuotaStatus `json:"usage,omitempty"`
}
// +kubebuilder:object:root=true
// +kubebuilder:subresource:status
// +kubebuilder:resource:shortName=ibp
// +kubebuilder:printcolumn:name="Ready",type="boolean",JSONPath=".status.ready"
// +kubebuilder:printcolumn:name="MaxCPU",type="integer",JSONPath=".spec.quota.maxCpu"
// +kubebuilder:printcolumn:name="UsedCPU",type="integer",JSONPath=".status.usage.usedCpu"
// +kubebuilder:printcolumn:name="MaxMem(GB)",type="integer",JSONPath=".spec.quota.maxMemoryGb"
// +kubebuilder:printcolumn:name="UsedMem(GB)",type="integer",JSONPath=".status.usage.usedMemoryGb"
// +kubebuilder:printcolumn:name="MaxDisk(GB)",type="integer",JSONPath=".spec.quota.maxDiskGb"
// +kubebuilder:printcolumn:name="UsedDisk(GB)",type="integer",JSONPath=".status.usage.usedDiskGb"
type InfraBlueprint struct {
metav1.TypeMeta `json:",inline"`
metav1.ObjectMeta `json:"metadata,omitempty"`
Spec InfraBlueprintSpec `json:"spec,omitempty"`
Status InfraBlueprintStatus `json:"status,omitempty"`
}
// +kubebuilder:object:root=true
// InfraBlueprintList contains a list of InfraBlueprint
type InfraBlueprintList struct {
metav1.TypeMeta `json:",inline"`
metav1.ListMeta `json:"metadata,omitempty"`
Items []InfraBlueprint `json:"items"`
}
func init() {
SchemeBuilder.Register(&InfraBlueprint{}, &InfraBlueprintList{})
}

View File

@@ -0,0 +1,67 @@
package v1alpha1
import (
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
)
// VsphereBlueprintSpec defines the desired state of VsphereBlueprint
type VsphereBlueprintSpec struct {
// vCenter address (e.g. vcenter.example.com)
// +required
VCenter string `json:"vCenter"`
// Datacenter name (e.g. NL001)
// +required
Datacenter string `json:"datacenter"`
// Folder path where VMs will be organized (e.g. "ICT Digitalisation - Rancher")
// +required
Folder string `json:"folder"`
// ResourcePool path (e.g. "NL001 Development - Rancher/Resources")
// +required
ResourcePool string `json:"resourcePool"`
// DatastoreCluster or Datastore name (e.g. "NL001 Development - Rancher SDRS")
// +required
Datastore string `json:"datastore"`
// Network name to attach to (e.g. "nl001.vDS.Distri.Vlan.1542")
// +required
Network string `json:"network"`
// Template is the VM template name to clone from
// +required
Template string `json:"template"`
}
// VsphereBlueprintStatus defines the observed state
type VsphereBlueprintStatus struct {
Ready bool `json:"ready,omitempty"`
}
// +kubebuilder:object:root=true
// +kubebuilder:subresource:status
// +kubebuilder:resource:shortName=vbp
// VsphereBlueprint is the Schema for the vsphereblueprints API
type VsphereBlueprint struct {
metav1.TypeMeta `json:",inline"`
metav1.ObjectMeta `json:"metadata,omitempty"`
Spec VsphereBlueprintSpec `json:"spec,omitempty"`
Status VsphereBlueprintStatus `json:"status,omitempty"`
}
// +kubebuilder:object:root=true
// VsphereBlueprintList contains a list of VsphereBlueprint
type VsphereBlueprintList struct {
metav1.TypeMeta `json:",inline"`
metav1.ListMeta `json:"metadata,omitempty"`
Items []VsphereBlueprint `json:"items"`
}
func init() {
SchemeBuilder.Register(&VsphereBlueprint{}, &VsphereBlueprintList{})
}

View File

@@ -0,0 +1,469 @@
//go:build !ignore_autogenerated
/*
Copyright 2026.
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
*/
// Code generated by controller-gen. DO NOT EDIT.
package v1alpha1
import (
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 *ClusterBlueprint) DeepCopyInto(out *ClusterBlueprint) {
*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 ClusterBlueprint.
func (in *ClusterBlueprint) DeepCopy() *ClusterBlueprint {
if in == nil {
return nil
}
out := new(ClusterBlueprint)
in.DeepCopyInto(out)
return out
}
// DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object.
func (in *ClusterBlueprint) 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 *ClusterBlueprintList) DeepCopyInto(out *ClusterBlueprintList) {
*out = *in
out.TypeMeta = in.TypeMeta
in.ListMeta.DeepCopyInto(&out.ListMeta)
if in.Items != nil {
in, out := &in.Items, &out.Items
*out = make([]ClusterBlueprint, len(*in))
for i := range *in {
(*in)[i].DeepCopyInto(&(*out)[i])
}
}
}
// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ClusterBlueprintList.
func (in *ClusterBlueprintList) DeepCopy() *ClusterBlueprintList {
if in == nil {
return nil
}
out := new(ClusterBlueprintList)
in.DeepCopyInto(out)
return out
}
// DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object.
func (in *ClusterBlueprintList) 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 *ClusterBlueprintSpec) DeepCopyInto(out *ClusterBlueprintSpec) {
*out = *in
if in.WorkerPools != nil {
in, out := &in.WorkerPools, &out.WorkerPools
*out = make([]GenericPoolReq, len(*in))
copy(*out, *in)
}
}
// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ClusterBlueprintSpec.
func (in *ClusterBlueprintSpec) DeepCopy() *ClusterBlueprintSpec {
if in == nil {
return nil
}
out := new(ClusterBlueprintSpec)
in.DeepCopyInto(out)
return out
}
// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
func (in *ClusterBlueprintStatus) DeepCopyInto(out *ClusterBlueprintStatus) {
*out = *in
if in.Identity != nil {
in, out := &in.Identity, &out.Identity
*out = new(IdentityStatus)
**out = **in
}
}
// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ClusterBlueprintStatus.
func (in *ClusterBlueprintStatus) DeepCopy() *ClusterBlueprintStatus {
if in == nil {
return nil
}
out := new(ClusterBlueprintStatus)
in.DeepCopyInto(out)
return out
}
// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
func (in *GenericPoolReq) DeepCopyInto(out *GenericPoolReq) {
*out = *in
}
// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new GenericPoolReq.
func (in *GenericPoolReq) DeepCopy() *GenericPoolReq {
if in == nil {
return nil
}
out := new(GenericPoolReq)
in.DeepCopyInto(out)
return out
}
// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
func (in *HarvesterBlueprint) DeepCopyInto(out *HarvesterBlueprint) {
*out = *in
out.TypeMeta = in.TypeMeta
in.ObjectMeta.DeepCopyInto(&out.ObjectMeta)
out.Spec = in.Spec
out.Status = in.Status
}
// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new HarvesterBlueprint.
func (in *HarvesterBlueprint) DeepCopy() *HarvesterBlueprint {
if in == nil {
return nil
}
out := new(HarvesterBlueprint)
in.DeepCopyInto(out)
return out
}
// DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object.
func (in *HarvesterBlueprint) 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 *HarvesterBlueprintList) DeepCopyInto(out *HarvesterBlueprintList) {
*out = *in
out.TypeMeta = in.TypeMeta
in.ListMeta.DeepCopyInto(&out.ListMeta)
if in.Items != nil {
in, out := &in.Items, &out.Items
*out = make([]HarvesterBlueprint, len(*in))
for i := range *in {
(*in)[i].DeepCopyInto(&(*out)[i])
}
}
}
// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new HarvesterBlueprintList.
func (in *HarvesterBlueprintList) DeepCopy() *HarvesterBlueprintList {
if in == nil {
return nil
}
out := new(HarvesterBlueprintList)
in.DeepCopyInto(out)
return out
}
// DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object.
func (in *HarvesterBlueprintList) 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 *HarvesterBlueprintSpec) DeepCopyInto(out *HarvesterBlueprintSpec) {
*out = *in
}
// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new HarvesterBlueprintSpec.
func (in *HarvesterBlueprintSpec) DeepCopy() *HarvesterBlueprintSpec {
if in == nil {
return nil
}
out := new(HarvesterBlueprintSpec)
in.DeepCopyInto(out)
return out
}
// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
func (in *HarvesterBlueprintStatus) DeepCopyInto(out *HarvesterBlueprintStatus) {
*out = *in
}
// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new HarvesterBlueprintStatus.
func (in *HarvesterBlueprintStatus) DeepCopy() *HarvesterBlueprintStatus {
if in == nil {
return nil
}
out := new(HarvesterBlueprintStatus)
in.DeepCopyInto(out)
return out
}
// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
func (in *IdentityStatus) DeepCopyInto(out *IdentityStatus) {
*out = *in
}
// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new IdentityStatus.
func (in *IdentityStatus) DeepCopy() *IdentityStatus {
if in == nil {
return nil
}
out := new(IdentityStatus)
in.DeepCopyInto(out)
return out
}
// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
func (in *InfraBlueprint) DeepCopyInto(out *InfraBlueprint) {
*out = *in
out.TypeMeta = in.TypeMeta
in.ObjectMeta.DeepCopyInto(&out.ObjectMeta)
out.Spec = in.Spec
out.Status = in.Status
}
// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new InfraBlueprint.
func (in *InfraBlueprint) DeepCopy() *InfraBlueprint {
if in == nil {
return nil
}
out := new(InfraBlueprint)
in.DeepCopyInto(out)
return out
}
// DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object.
func (in *InfraBlueprint) 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 *InfraBlueprintList) DeepCopyInto(out *InfraBlueprintList) {
*out = *in
out.TypeMeta = in.TypeMeta
in.ListMeta.DeepCopyInto(&out.ListMeta)
if in.Items != nil {
in, out := &in.Items, &out.Items
*out = make([]InfraBlueprint, len(*in))
for i := range *in {
(*in)[i].DeepCopyInto(&(*out)[i])
}
}
}
// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new InfraBlueprintList.
func (in *InfraBlueprintList) DeepCopy() *InfraBlueprintList {
if in == nil {
return nil
}
out := new(InfraBlueprintList)
in.DeepCopyInto(out)
return out
}
// DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object.
func (in *InfraBlueprintList) 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 *InfraBlueprintSpec) DeepCopyInto(out *InfraBlueprintSpec) {
*out = *in
out.ProviderRef = in.ProviderRef
out.Quota = in.Quota
}
// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new InfraBlueprintSpec.
func (in *InfraBlueprintSpec) DeepCopy() *InfraBlueprintSpec {
if in == nil {
return nil
}
out := new(InfraBlueprintSpec)
in.DeepCopyInto(out)
return out
}
// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
func (in *InfraBlueprintStatus) DeepCopyInto(out *InfraBlueprintStatus) {
*out = *in
out.Usage = in.Usage
}
// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new InfraBlueprintStatus.
func (in *InfraBlueprintStatus) DeepCopy() *InfraBlueprintStatus {
if in == nil {
return nil
}
out := new(InfraBlueprintStatus)
in.DeepCopyInto(out)
return out
}
// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
func (in *InfraQuota) DeepCopyInto(out *InfraQuota) {
*out = *in
}
// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new InfraQuota.
func (in *InfraQuota) DeepCopy() *InfraQuota {
if in == nil {
return nil
}
out := new(InfraQuota)
in.DeepCopyInto(out)
return out
}
// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
func (in *InfraQuotaStatus) DeepCopyInto(out *InfraQuotaStatus) {
*out = *in
}
// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new InfraQuotaStatus.
func (in *InfraQuotaStatus) DeepCopy() *InfraQuotaStatus {
if in == nil {
return nil
}
out := new(InfraQuotaStatus)
in.DeepCopyInto(out)
return out
}
// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
func (in *ProviderRef) DeepCopyInto(out *ProviderRef) {
*out = *in
}
// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ProviderRef.
func (in *ProviderRef) DeepCopy() *ProviderRef {
if in == nil {
return nil
}
out := new(ProviderRef)
in.DeepCopyInto(out)
return out
}
// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
func (in *VsphereBlueprint) DeepCopyInto(out *VsphereBlueprint) {
*out = *in
out.TypeMeta = in.TypeMeta
in.ObjectMeta.DeepCopyInto(&out.ObjectMeta)
out.Spec = in.Spec
out.Status = in.Status
}
// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new VsphereBlueprint.
func (in *VsphereBlueprint) DeepCopy() *VsphereBlueprint {
if in == nil {
return nil
}
out := new(VsphereBlueprint)
in.DeepCopyInto(out)
return out
}
// DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object.
func (in *VsphereBlueprint) 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 *VsphereBlueprintList) DeepCopyInto(out *VsphereBlueprintList) {
*out = *in
out.TypeMeta = in.TypeMeta
in.ListMeta.DeepCopyInto(&out.ListMeta)
if in.Items != nil {
in, out := &in.Items, &out.Items
*out = make([]VsphereBlueprint, len(*in))
for i := range *in {
(*in)[i].DeepCopyInto(&(*out)[i])
}
}
}
// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new VsphereBlueprintList.
func (in *VsphereBlueprintList) DeepCopy() *VsphereBlueprintList {
if in == nil {
return nil
}
out := new(VsphereBlueprintList)
in.DeepCopyInto(out)
return out
}
// DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object.
func (in *VsphereBlueprintList) 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 *VsphereBlueprintSpec) DeepCopyInto(out *VsphereBlueprintSpec) {
*out = *in
}
// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new VsphereBlueprintSpec.
func (in *VsphereBlueprintSpec) DeepCopy() *VsphereBlueprintSpec {
if in == nil {
return nil
}
out := new(VsphereBlueprintSpec)
in.DeepCopyInto(out)
return out
}
// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
func (in *VsphereBlueprintStatus) DeepCopyInto(out *VsphereBlueprintStatus) {
*out = *in
}
// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new VsphereBlueprintStatus.
func (in *VsphereBlueprintStatus) DeepCopy() *VsphereBlueprintStatus {
if in == nil {
return nil
}
out := new(VsphereBlueprintStatus)
in.DeepCopyInto(out)
return out
}