diff --git a/api/v1beta1/ibmpowervs_conversion.go b/api/v1beta1/ibmpowervs_conversion.go index 19d7d324b..0b3b197f3 100644 --- a/api/v1beta1/ibmpowervs_conversion.go +++ b/api/v1beta1/ibmpowervs_conversion.go @@ -193,3 +193,18 @@ func Convert_v1beta2_IBMPowerVSMachineSpec_To_v1beta1_IBMPowerVSMachineSpec(in * return autoConvert_v1beta2_IBMPowerVSMachineSpec_To_v1beta1_IBMPowerVSMachineSpec(in, out, s) } + +func Convert_v1beta2_IBMPowerVSClusterSpec_To_v1beta1_IBMPowerVSClusterSpec(in *infrav1beta2.IBMPowerVSClusterSpec, out *IBMPowerVSClusterSpec, s apiconversion.Scope) error { + if in.ServiceInstance.ID != nil { + out.ServiceInstanceID = *in.ServiceInstance.ID + } + return autoConvert_v1beta2_IBMPowerVSClusterSpec_To_v1beta1_IBMPowerVSClusterSpec(in, out, s) +} + +func Convert_v1beta2_IBMPowerVSClusterStatus_To_v1beta1_IBMPowerVSClusterStatus(in *infrav1beta2.IBMPowerVSClusterStatus, out *IBMPowerVSClusterStatus, s apiconversion.Scope) error { + return autoConvert_v1beta2_IBMPowerVSClusterStatus_To_v1beta1_IBMPowerVSClusterStatus(in, out, s) +} + +func Convert_v1beta2_IBMPowerVSImageSpec_To_v1beta1_IBMPowerVSImageSpec(in *infrav1beta2.IBMPowerVSImageSpec, out *IBMPowerVSImageSpec, s apiconversion.Scope) error { + return autoConvert_v1beta2_IBMPowerVSImageSpec_To_v1beta1_IBMPowerVSImageSpec(in, out, s) +} diff --git a/api/v1beta1/ibmvpc_conversion.go b/api/v1beta1/ibmvpc_conversion.go index 7bb5b821e..98711ef85 100644 --- a/api/v1beta1/ibmvpc_conversion.go +++ b/api/v1beta1/ibmvpc_conversion.go @@ -215,3 +215,7 @@ func Convert_Slice_Pointer_v1beta2_IBMVPCResourceReference_To_Slice_Pointer_stri } return nil } + +func Convert_v1beta2_VPCLoadBalancerSpec_To_v1beta1_VPCLoadBalancerSpec(in *infrav1beta2.VPCLoadBalancerSpec, out *VPCLoadBalancerSpec, s apiconversion.Scope) error { + return autoConvert_v1beta2_VPCLoadBalancerSpec_To_v1beta1_VPCLoadBalancerSpec(in, out, s) +} diff --git a/api/v1beta1/zz_generated.conversion.go b/api/v1beta1/zz_generated.conversion.go index c97559f8a..b543be024 100644 --- a/api/v1beta1/zz_generated.conversion.go +++ b/api/v1beta1/zz_generated.conversion.go @@ -64,21 +64,11 @@ func RegisterConversions(s *runtime.Scheme) error { }); err != nil { return err } - if err := s.AddGeneratedConversionFunc((*v1beta2.IBMPowerVSClusterSpec)(nil), (*IBMPowerVSClusterSpec)(nil), func(a, b interface{}, scope conversion.Scope) error { - return Convert_v1beta2_IBMPowerVSClusterSpec_To_v1beta1_IBMPowerVSClusterSpec(a.(*v1beta2.IBMPowerVSClusterSpec), b.(*IBMPowerVSClusterSpec), scope) - }); err != nil { - return err - } if err := s.AddGeneratedConversionFunc((*IBMPowerVSClusterStatus)(nil), (*v1beta2.IBMPowerVSClusterStatus)(nil), func(a, b interface{}, scope conversion.Scope) error { return Convert_v1beta1_IBMPowerVSClusterStatus_To_v1beta2_IBMPowerVSClusterStatus(a.(*IBMPowerVSClusterStatus), b.(*v1beta2.IBMPowerVSClusterStatus), scope) }); err != nil { return err } - if err := s.AddGeneratedConversionFunc((*v1beta2.IBMPowerVSClusterStatus)(nil), (*IBMPowerVSClusterStatus)(nil), func(a, b interface{}, scope conversion.Scope) error { - return Convert_v1beta2_IBMPowerVSClusterStatus_To_v1beta1_IBMPowerVSClusterStatus(a.(*v1beta2.IBMPowerVSClusterStatus), b.(*IBMPowerVSClusterStatus), scope) - }); err != nil { - return err - } if err := s.AddGeneratedConversionFunc((*IBMPowerVSClusterTemplate)(nil), (*v1beta2.IBMPowerVSClusterTemplate)(nil), func(a, b interface{}, scope conversion.Scope) error { return Convert_v1beta1_IBMPowerVSClusterTemplate_To_v1beta2_IBMPowerVSClusterTemplate(a.(*IBMPowerVSClusterTemplate), b.(*v1beta2.IBMPowerVSClusterTemplate), scope) }); err != nil { @@ -144,11 +134,6 @@ func RegisterConversions(s *runtime.Scheme) error { }); err != nil { return err } - if err := s.AddGeneratedConversionFunc((*v1beta2.IBMPowerVSImageSpec)(nil), (*IBMPowerVSImageSpec)(nil), func(a, b interface{}, scope conversion.Scope) error { - return Convert_v1beta2_IBMPowerVSImageSpec_To_v1beta1_IBMPowerVSImageSpec(a.(*v1beta2.IBMPowerVSImageSpec), b.(*IBMPowerVSImageSpec), scope) - }); err != nil { - return err - } if err := s.AddGeneratedConversionFunc((*IBMPowerVSImageStatus)(nil), (*v1beta2.IBMPowerVSImageStatus)(nil), func(a, b interface{}, scope conversion.Scope) error { return Convert_v1beta1_IBMPowerVSImageStatus_To_v1beta2_IBMPowerVSImageStatus(a.(*IBMPowerVSImageStatus), b.(*v1beta2.IBMPowerVSImageStatus), scope) }); err != nil { @@ -404,11 +389,6 @@ func RegisterConversions(s *runtime.Scheme) error { }); err != nil { return err } - if err := s.AddGeneratedConversionFunc((*v1beta2.VPCLoadBalancerSpec)(nil), (*VPCLoadBalancerSpec)(nil), func(a, b interface{}, scope conversion.Scope) error { - return Convert_v1beta2_VPCLoadBalancerSpec_To_v1beta1_VPCLoadBalancerSpec(a.(*v1beta2.VPCLoadBalancerSpec), b.(*VPCLoadBalancerSpec), scope) - }); err != nil { - return err - } if err := s.AddGeneratedConversionFunc((*VPCVolume)(nil), (*v1beta2.VPCVolume)(nil), func(a, b interface{}, scope conversion.Scope) error { return Convert_v1beta1_VPCVolume_To_v1beta2_VPCVolume(a.(*VPCVolume), b.(*v1beta2.VPCVolume), scope) }); err != nil { @@ -439,6 +419,21 @@ func RegisterConversions(s *runtime.Scheme) error { }); err != nil { return err } + if err := s.AddConversionFunc((*v1beta2.IBMPowerVSClusterSpec)(nil), (*IBMPowerVSClusterSpec)(nil), func(a, b interface{}, scope conversion.Scope) error { + return Convert_v1beta2_IBMPowerVSClusterSpec_To_v1beta1_IBMPowerVSClusterSpec(a.(*v1beta2.IBMPowerVSClusterSpec), b.(*IBMPowerVSClusterSpec), scope) + }); err != nil { + return err + } + if err := s.AddConversionFunc((*v1beta2.IBMPowerVSClusterStatus)(nil), (*IBMPowerVSClusterStatus)(nil), func(a, b interface{}, scope conversion.Scope) error { + return Convert_v1beta2_IBMPowerVSClusterStatus_To_v1beta1_IBMPowerVSClusterStatus(a.(*v1beta2.IBMPowerVSClusterStatus), b.(*IBMPowerVSClusterStatus), scope) + }); err != nil { + return err + } + if err := s.AddConversionFunc((*v1beta2.IBMPowerVSImageSpec)(nil), (*IBMPowerVSImageSpec)(nil), func(a, b interface{}, scope conversion.Scope) error { + return Convert_v1beta2_IBMPowerVSImageSpec_To_v1beta1_IBMPowerVSImageSpec(a.(*v1beta2.IBMPowerVSImageSpec), b.(*IBMPowerVSImageSpec), scope) + }); err != nil { + return err + } if err := s.AddConversionFunc((*v1beta2.IBMPowerVSMachineSpec)(nil), (*IBMPowerVSMachineSpec)(nil), func(a, b interface{}, scope conversion.Scope) error { return Convert_v1beta2_IBMPowerVSMachineSpec_To_v1beta1_IBMPowerVSMachineSpec(a.(*v1beta2.IBMPowerVSMachineSpec), b.(*IBMPowerVSMachineSpec), scope) }); err != nil { @@ -449,6 +444,11 @@ func RegisterConversions(s *runtime.Scheme) error { }); err != nil { return err } + if err := s.AddConversionFunc((*v1beta2.VPCLoadBalancerSpec)(nil), (*VPCLoadBalancerSpec)(nil), func(a, b interface{}, scope conversion.Scope) error { + return Convert_v1beta2_VPCLoadBalancerSpec_To_v1beta1_VPCLoadBalancerSpec(a.(*v1beta2.VPCLoadBalancerSpec), b.(*VPCLoadBalancerSpec), scope) + }); err != nil { + return err + } return nil } @@ -486,7 +486,17 @@ func Convert_v1beta2_IBMPowerVSCluster_To_v1beta1_IBMPowerVSCluster(in *v1beta2. func autoConvert_v1beta1_IBMPowerVSClusterList_To_v1beta2_IBMPowerVSClusterList(in *IBMPowerVSClusterList, out *v1beta2.IBMPowerVSClusterList, s conversion.Scope) error { out.ListMeta = in.ListMeta - out.Items = *(*[]v1beta2.IBMPowerVSCluster)(unsafe.Pointer(&in.Items)) + if in.Items != nil { + in, out := &in.Items, &out.Items + *out = make([]v1beta2.IBMPowerVSCluster, len(*in)) + for i := range *in { + if err := Convert_v1beta1_IBMPowerVSCluster_To_v1beta2_IBMPowerVSCluster(&(*in)[i], &(*out)[i], s); err != nil { + return err + } + } + } else { + out.Items = nil + } return nil } @@ -497,7 +507,17 @@ func Convert_v1beta1_IBMPowerVSClusterList_To_v1beta2_IBMPowerVSClusterList(in * func autoConvert_v1beta2_IBMPowerVSClusterList_To_v1beta1_IBMPowerVSClusterList(in *v1beta2.IBMPowerVSClusterList, out *IBMPowerVSClusterList, s conversion.Scope) error { out.ListMeta = in.ListMeta - out.Items = *(*[]IBMPowerVSCluster)(unsafe.Pointer(&in.Items)) + if in.Items != nil { + in, out := &in.Items, &out.Items + *out = make([]IBMPowerVSCluster, len(*in)) + for i := range *in { + if err := Convert_v1beta2_IBMPowerVSCluster_To_v1beta1_IBMPowerVSCluster(&(*in)[i], &(*out)[i], s); err != nil { + return err + } + } + } else { + out.Items = nil + } return nil } @@ -526,14 +546,17 @@ func autoConvert_v1beta2_IBMPowerVSClusterSpec_To_v1beta1_IBMPowerVSClusterSpec( return err } out.ControlPlaneEndpoint = in.ControlPlaneEndpoint + // WARNING: in.ServiceInstance requires manual conversion: does not exist in peer-type + // WARNING: in.Zone requires manual conversion: does not exist in peer-type + // WARNING: in.ResourceGroup requires manual conversion: does not exist in peer-type + // WARNING: in.VPC requires manual conversion: does not exist in peer-type + // WARNING: in.VPCSubnets requires manual conversion: does not exist in peer-type + // WARNING: in.TransitGateway requires manual conversion: does not exist in peer-type + // WARNING: in.LoadBalancers requires manual conversion: does not exist in peer-type + // WARNING: in.CosInstance requires manual conversion: does not exist in peer-type return nil } -// Convert_v1beta2_IBMPowerVSClusterSpec_To_v1beta1_IBMPowerVSClusterSpec is an autogenerated conversion function. -func Convert_v1beta2_IBMPowerVSClusterSpec_To_v1beta1_IBMPowerVSClusterSpec(in *v1beta2.IBMPowerVSClusterSpec, out *IBMPowerVSClusterSpec, s conversion.Scope) error { - return autoConvert_v1beta2_IBMPowerVSClusterSpec_To_v1beta1_IBMPowerVSClusterSpec(in, out, s) -} - func autoConvert_v1beta1_IBMPowerVSClusterStatus_To_v1beta2_IBMPowerVSClusterStatus(in *IBMPowerVSClusterStatus, out *v1beta2.IBMPowerVSClusterStatus, s conversion.Scope) error { out.Ready = in.Ready return nil @@ -546,14 +569,18 @@ func Convert_v1beta1_IBMPowerVSClusterStatus_To_v1beta2_IBMPowerVSClusterStatus( func autoConvert_v1beta2_IBMPowerVSClusterStatus_To_v1beta1_IBMPowerVSClusterStatus(in *v1beta2.IBMPowerVSClusterStatus, out *IBMPowerVSClusterStatus, s conversion.Scope) error { out.Ready = in.Ready + // WARNING: in.ServiceInstance requires manual conversion: does not exist in peer-type + // WARNING: in.Network requires manual conversion: does not exist in peer-type + // WARNING: in.DHCPServer requires manual conversion: does not exist in peer-type + // WARNING: in.VPC requires manual conversion: does not exist in peer-type + // WARNING: in.VPCSubnet requires manual conversion: does not exist in peer-type + // WARNING: in.TransitGateway requires manual conversion: does not exist in peer-type + // WARNING: in.COSBucket requires manual conversion: does not exist in peer-type + // WARNING: in.LoadBalancers requires manual conversion: does not exist in peer-type + // WARNING: in.Conditions requires manual conversion: does not exist in peer-type return nil } -// Convert_v1beta2_IBMPowerVSClusterStatus_To_v1beta1_IBMPowerVSClusterStatus is an autogenerated conversion function. -func Convert_v1beta2_IBMPowerVSClusterStatus_To_v1beta1_IBMPowerVSClusterStatus(in *v1beta2.IBMPowerVSClusterStatus, out *IBMPowerVSClusterStatus, s conversion.Scope) error { - return autoConvert_v1beta2_IBMPowerVSClusterStatus_To_v1beta1_IBMPowerVSClusterStatus(in, out, s) -} - func autoConvert_v1beta1_IBMPowerVSClusterTemplate_To_v1beta2_IBMPowerVSClusterTemplate(in *IBMPowerVSClusterTemplate, out *v1beta2.IBMPowerVSClusterTemplate, s conversion.Scope) error { out.ObjectMeta = in.ObjectMeta if err := Convert_v1beta1_IBMPowerVSClusterTemplateSpec_To_v1beta2_IBMPowerVSClusterTemplateSpec(&in.Spec, &out.Spec, s); err != nil { @@ -582,7 +609,17 @@ func Convert_v1beta2_IBMPowerVSClusterTemplate_To_v1beta1_IBMPowerVSClusterTempl func autoConvert_v1beta1_IBMPowerVSClusterTemplateList_To_v1beta2_IBMPowerVSClusterTemplateList(in *IBMPowerVSClusterTemplateList, out *v1beta2.IBMPowerVSClusterTemplateList, s conversion.Scope) error { out.ListMeta = in.ListMeta - out.Items = *(*[]v1beta2.IBMPowerVSClusterTemplate)(unsafe.Pointer(&in.Items)) + if in.Items != nil { + in, out := &in.Items, &out.Items + *out = make([]v1beta2.IBMPowerVSClusterTemplate, len(*in)) + for i := range *in { + if err := Convert_v1beta1_IBMPowerVSClusterTemplate_To_v1beta2_IBMPowerVSClusterTemplate(&(*in)[i], &(*out)[i], s); err != nil { + return err + } + } + } else { + out.Items = nil + } return nil } @@ -593,7 +630,17 @@ func Convert_v1beta1_IBMPowerVSClusterTemplateList_To_v1beta2_IBMPowerVSClusterT func autoConvert_v1beta2_IBMPowerVSClusterTemplateList_To_v1beta1_IBMPowerVSClusterTemplateList(in *v1beta2.IBMPowerVSClusterTemplateList, out *IBMPowerVSClusterTemplateList, s conversion.Scope) error { out.ListMeta = in.ListMeta - out.Items = *(*[]IBMPowerVSClusterTemplate)(unsafe.Pointer(&in.Items)) + if in.Items != nil { + in, out := &in.Items, &out.Items + *out = make([]IBMPowerVSClusterTemplate, len(*in)) + for i := range *in { + if err := Convert_v1beta2_IBMPowerVSClusterTemplate_To_v1beta1_IBMPowerVSClusterTemplate(&(*in)[i], &(*out)[i], s); err != nil { + return err + } + } + } else { + out.Items = nil + } return nil } @@ -686,7 +733,17 @@ func Convert_v1beta2_IBMPowerVSImage_To_v1beta1_IBMPowerVSImage(in *v1beta2.IBMP func autoConvert_v1beta1_IBMPowerVSImageList_To_v1beta2_IBMPowerVSImageList(in *IBMPowerVSImageList, out *v1beta2.IBMPowerVSImageList, s conversion.Scope) error { out.ListMeta = in.ListMeta - out.Items = *(*[]v1beta2.IBMPowerVSImage)(unsafe.Pointer(&in.Items)) + if in.Items != nil { + in, out := &in.Items, &out.Items + *out = make([]v1beta2.IBMPowerVSImage, len(*in)) + for i := range *in { + if err := Convert_v1beta1_IBMPowerVSImage_To_v1beta2_IBMPowerVSImage(&(*in)[i], &(*out)[i], s); err != nil { + return err + } + } + } else { + out.Items = nil + } return nil } @@ -697,7 +754,17 @@ func Convert_v1beta1_IBMPowerVSImageList_To_v1beta2_IBMPowerVSImageList(in *IBMP func autoConvert_v1beta2_IBMPowerVSImageList_To_v1beta1_IBMPowerVSImageList(in *v1beta2.IBMPowerVSImageList, out *IBMPowerVSImageList, s conversion.Scope) error { out.ListMeta = in.ListMeta - out.Items = *(*[]IBMPowerVSImage)(unsafe.Pointer(&in.Items)) + if in.Items != nil { + in, out := &in.Items, &out.Items + *out = make([]IBMPowerVSImage, len(*in)) + for i := range *in { + if err := Convert_v1beta2_IBMPowerVSImage_To_v1beta1_IBMPowerVSImage(&(*in)[i], &(*out)[i], s); err != nil { + return err + } + } + } else { + out.Items = nil + } return nil } @@ -725,6 +792,7 @@ func Convert_v1beta1_IBMPowerVSImageSpec_To_v1beta2_IBMPowerVSImageSpec(in *IBMP func autoConvert_v1beta2_IBMPowerVSImageSpec_To_v1beta1_IBMPowerVSImageSpec(in *v1beta2.IBMPowerVSImageSpec, out *IBMPowerVSImageSpec, s conversion.Scope) error { out.ClusterName = in.ClusterName out.ServiceInstanceID = in.ServiceInstanceID + // WARNING: in.ServiceInstance requires manual conversion: does not exist in peer-type out.Bucket = (*string)(unsafe.Pointer(in.Bucket)) out.Object = (*string)(unsafe.Pointer(in.Object)) out.Region = (*string)(unsafe.Pointer(in.Region)) @@ -733,11 +801,6 @@ func autoConvert_v1beta2_IBMPowerVSImageSpec_To_v1beta1_IBMPowerVSImageSpec(in * return nil } -// Convert_v1beta2_IBMPowerVSImageSpec_To_v1beta1_IBMPowerVSImageSpec is an autogenerated conversion function. -func Convert_v1beta2_IBMPowerVSImageSpec_To_v1beta1_IBMPowerVSImageSpec(in *v1beta2.IBMPowerVSImageSpec, out *IBMPowerVSImageSpec, s conversion.Scope) error { - return autoConvert_v1beta2_IBMPowerVSImageSpec_To_v1beta1_IBMPowerVSImageSpec(in, out, s) -} - func autoConvert_v1beta1_IBMPowerVSImageStatus_To_v1beta2_IBMPowerVSImageStatus(in *IBMPowerVSImageStatus, out *v1beta2.IBMPowerVSImageStatus, s conversion.Scope) error { out.Ready = in.Ready out.ImageID = in.ImageID @@ -858,6 +921,7 @@ func autoConvert_v1beta1_IBMPowerVSMachineSpec_To_v1beta2_IBMPowerVSMachineSpec( func autoConvert_v1beta2_IBMPowerVSMachineSpec_To_v1beta1_IBMPowerVSMachineSpec(in *v1beta2.IBMPowerVSMachineSpec, out *IBMPowerVSMachineSpec, s conversion.Scope) error { out.ServiceInstanceID = in.ServiceInstanceID + // WARNING: in.ServiceInstance requires manual conversion: does not exist in peer-type out.SSHKey = in.SSHKey out.Image = (*IBMPowerVSResourceReference)(unsafe.Pointer(in.Image)) out.ImageRef = (*v1.LocalObjectReference)(unsafe.Pointer(in.ImageRef)) @@ -869,6 +933,7 @@ func autoConvert_v1beta2_IBMPowerVSMachineSpec_To_v1beta1_IBMPowerVSMachineSpec( return err } out.ProviderID = (*string)(unsafe.Pointer(in.ProviderID)) + // WARNING: in.Ignition requires manual conversion: does not exist in peer-type return nil } @@ -1112,7 +1177,17 @@ func Convert_v1beta2_IBMVPCCluster_To_v1beta1_IBMVPCCluster(in *v1beta2.IBMVPCCl func autoConvert_v1beta1_IBMVPCClusterList_To_v1beta2_IBMVPCClusterList(in *IBMVPCClusterList, out *v1beta2.IBMVPCClusterList, s conversion.Scope) error { out.ListMeta = in.ListMeta - out.Items = *(*[]v1beta2.IBMVPCCluster)(unsafe.Pointer(&in.Items)) + if in.Items != nil { + in, out := &in.Items, &out.Items + *out = make([]v1beta2.IBMVPCCluster, len(*in)) + for i := range *in { + if err := Convert_v1beta1_IBMVPCCluster_To_v1beta2_IBMVPCCluster(&(*in)[i], &(*out)[i], s); err != nil { + return err + } + } + } else { + out.Items = nil + } return nil } @@ -1123,7 +1198,17 @@ func Convert_v1beta1_IBMVPCClusterList_To_v1beta2_IBMVPCClusterList(in *IBMVPCCl func autoConvert_v1beta2_IBMVPCClusterList_To_v1beta1_IBMVPCClusterList(in *v1beta2.IBMVPCClusterList, out *IBMVPCClusterList, s conversion.Scope) error { out.ListMeta = in.ListMeta - out.Items = *(*[]IBMVPCCluster)(unsafe.Pointer(&in.Items)) + if in.Items != nil { + in, out := &in.Items, &out.Items + *out = make([]IBMVPCCluster, len(*in)) + for i := range *in { + if err := Convert_v1beta2_IBMVPCCluster_To_v1beta1_IBMVPCCluster(&(*in)[i], &(*out)[i], s); err != nil { + return err + } + } + } else { + out.Items = nil + } return nil } @@ -1138,7 +1223,15 @@ func autoConvert_v1beta1_IBMVPCClusterSpec_To_v1beta2_IBMVPCClusterSpec(in *IBMV out.VPC = in.VPC out.Zone = in.Zone out.ControlPlaneEndpoint = in.ControlPlaneEndpoint - out.ControlPlaneLoadBalancer = (*v1beta2.VPCLoadBalancerSpec)(unsafe.Pointer(in.ControlPlaneLoadBalancer)) + if in.ControlPlaneLoadBalancer != nil { + in, out := &in.ControlPlaneLoadBalancer, &out.ControlPlaneLoadBalancer + *out = new(v1beta2.VPCLoadBalancerSpec) + if err := Convert_v1beta1_VPCLoadBalancerSpec_To_v1beta2_VPCLoadBalancerSpec(*in, *out, s); err != nil { + return err + } + } else { + out.ControlPlaneLoadBalancer = nil + } return nil } @@ -1153,7 +1246,15 @@ func autoConvert_v1beta2_IBMVPCClusterSpec_To_v1beta1_IBMVPCClusterSpec(in *v1be out.VPC = in.VPC out.Zone = in.Zone out.ControlPlaneEndpoint = in.ControlPlaneEndpoint - out.ControlPlaneLoadBalancer = (*VPCLoadBalancerSpec)(unsafe.Pointer(in.ControlPlaneLoadBalancer)) + if in.ControlPlaneLoadBalancer != nil { + in, out := &in.ControlPlaneLoadBalancer, &out.ControlPlaneLoadBalancer + *out = new(VPCLoadBalancerSpec) + if err := Convert_v1beta2_VPCLoadBalancerSpec_To_v1beta1_VPCLoadBalancerSpec(*in, *out, s); err != nil { + return err + } + } else { + out.ControlPlaneLoadBalancer = nil + } return nil } @@ -1558,14 +1659,10 @@ func Convert_v1beta1_VPCLoadBalancerSpec_To_v1beta2_VPCLoadBalancerSpec(in *VPCL func autoConvert_v1beta2_VPCLoadBalancerSpec_To_v1beta1_VPCLoadBalancerSpec(in *v1beta2.VPCLoadBalancerSpec, out *VPCLoadBalancerSpec, s conversion.Scope) error { out.Name = in.Name + // WARNING: in.Public requires manual conversion: does not exist in peer-type return nil } -// Convert_v1beta2_VPCLoadBalancerSpec_To_v1beta1_VPCLoadBalancerSpec is an autogenerated conversion function. -func Convert_v1beta2_VPCLoadBalancerSpec_To_v1beta1_VPCLoadBalancerSpec(in *v1beta2.VPCLoadBalancerSpec, out *VPCLoadBalancerSpec, s conversion.Scope) error { - return autoConvert_v1beta2_VPCLoadBalancerSpec_To_v1beta1_VPCLoadBalancerSpec(in, out, s) -} - func autoConvert_v1beta1_VPCVolume_To_v1beta2_VPCVolume(in *VPCVolume, out *v1beta2.VPCVolume, s conversion.Scope) error { out.DeleteVolumeOnInstanceDelete = in.DeleteVolumeOnInstanceDelete out.Name = in.Name diff --git a/api/v1beta2/ibmpowervscluster_types.go b/api/v1beta2/ibmpowervscluster_types.go index afca653e0..15fd7c754 100644 --- a/api/v1beta2/ibmpowervscluster_types.go +++ b/api/v1beta2/ibmpowervscluster_types.go @@ -32,26 +32,109 @@ const ( // IBMPowerVSClusterSpec defines the desired state of IBMPowerVSCluster. type IBMPowerVSClusterSpec struct { - // INSERT ADDITIONAL SPEC FIELDS - desired state of cluster - // Important: Run "make" to regenerate code after modifying this file - // ServiceInstanceID is the id of the power cloud instance where the vsi instance will get deployed. - // +kubebuilder:validation:MinLength=1 + // Deprecated: use ServiceInstance instead ServiceInstanceID string `json:"serviceInstanceID"` // Network is the reference to the Network to use for this cluster. + // when the field is omitted, A DHCP service will be created in the Power VS server workspace and its private network will be used. Network IBMPowerVSResourceReference `json:"network"` // ControlPlaneEndpoint represents the endpoint used to communicate with the control plane. // +optional ControlPlaneEndpoint capiv1beta1.APIEndpoint `json:"controlPlaneEndpoint"` + + // serviceInstance is the reference to the Power VS server workspace on which the server instance(VM) will be created. + // Power VS server workspace is a container for all Power VS instances at a specific geographic region. + // serviceInstance can be created via IBM Cloud catalog or CLI. + // supported serviceInstance identifier in PowerVSResource are Name and ID and that can be obtained from IBM Cloud UI or IBM Cloud cli. + // More detail about Power VS service instance. + // https://cloud.ibm.com/docs/power-iaas?topic=power-iaas-creating-power-virtual-server + // when omitted system will dynamically create the service instance + // +optional + ServiceInstance *IBMPowerVSResourceReference `json:"serviceInstance,omitempty"` + + // zone is the name of Power VS zone where the cluster will be created + // possible values can be found here https://cloud.ibm.com/docs/power-iaas?topic=power-iaas-creating-power-virtual-server. + // when omitted syd04 will be set as default zone. + // +kubebuilder:default=dal10 + // +optional + Zone *string `json:"zone,omitempty"` + + // resourceGroup name under which the resources will be created. + // when omitted default resource group of the account will be used. + // +optional + ResourceGroup *string `json:"resourceGroup,omitempty"` + + // vpc contains information about IBM Cloud VPC resources. + // +optional + VPC *VPCResourceReference `json:"vpc,omitempty"` + + // vpcSubnets contains information about IBM Cloud VPC Subnet resources. + // +optional + VPCSubnets []Subnet `json:"vpcSubnets,omitempty"` + + // transitGateway contains information about IBM Cloud TransitGateway + // IBM Cloud TransitGateway helps in establishing network connectivity between IBM Cloud Power VS and VPC infrastructure + // more information about TransitGateway can be found here https://www.ibm.com/products/transit-gateway. + // +optional + TransitGateway *TransitGateway `json:"transitGateway,omitempty"` + + // loadBalancers is optional configuration for configuring loadbalancers to control plane or data plane nodes + // when specified a vpc loadbalancer will be created and controlPlaneEndpoint will be set with associated hostname of loadbalancer. + // when omitted user is expected to set controlPlaneEndpoint. + // +optional + LoadBalancers []VPCLoadBalancerSpec `json:"loadBalancers,omitempty"` + + // cosInstance contains options to configure a supporting IBM Cloud COS bucket for this + // cluster - currently used for nodes requiring Ignition + // (https://coreos.github.io/ignition/) for bootstrapping (requires + // BootstrapFormatIgnition feature flag to be enabled). + // +optional + CosInstance *CosInstance `json:"cosInstance,omitempty"` +} + +// ResourceReference identifies a resource with id. +type ResourceReference struct { + // id represents the id of the resource. + ID *string `json:"id,omitempty"` + // +kubebuilder:default=false + // controllerCreated indicates whether the resource is created by the controller. + ControllerCreated *bool `json:"controllerCreated,omitempty"` } // IBMPowerVSClusterStatus defines the observed state of IBMPowerVSCluster. type IBMPowerVSClusterStatus struct { - // INSERT ADDITIONAL STATUS FIELD - define observed state of cluster - // Important: Run "make" to regenerate code after modifying this file + // ready is true when the provider resource is ready. + // +kubebuilder:default=false Ready bool `json:"ready"` + + // serviceInstance is the reference to the Power VS service on which the server instance(VM) will be created. + ServiceInstance *ResourceReference `json:"serviceInstance,omitempty"` + + // networkID is the reference to the Power VS network to use for this cluster. + Network *ResourceReference `json:"network,omitempty"` + + // dhcpServer is the reference to the Power VS DHCP server. + DHCPServer *ResourceReference `json:"dhcpServer,omitempty"` + + // vpc is reference to IBM Cloud VPC resources. + VPC *ResourceReference `json:"vpc,omitempty"` + + // vpcSubnet is reference to IBM Cloud VPC subnet. + VPCSubnet map[string]ResourceReference `json:"vpcSubnet,omitempty"` + + // transitGateway is reference to IBM Cloud TransitGateway. + TransitGateway *ResourceReference `json:"transitGateway,omitempty"` + + // cosBucket is reference to IBM Cloud COS Bucket resource. + COSBucket *ResourceReference `json:"cosBucket,omitempty"` + + // loadBalancers reference to IBM Cloud VPC Loadbalancer. + LoadBalancers map[string]VPCLoadBalancerStatus `json:"loadBalancers,omitempty"` + + // Conditions defines current service state of the IBMPowerVSCluster. + Conditions capiv1beta1.Conditions `json:"conditions,omitempty"` } // +kubebuilder:object:root=true @@ -81,6 +164,67 @@ type IBMPowerVSClusterList struct { Items []IBMPowerVSCluster `json:"items"` } +// TransitGateway holds the TransitGateway information. +type TransitGateway struct { + Name *string `json:"name,omitempty"` + ID *string `json:"id,omitempty"` +} + +// VPCResourceReference is a reference to a specific VPC resource by ID or Name +// Only one of ID or Name may be specified. Specifying more than one will result in +// a validation error. +type VPCResourceReference struct { + // ID of resource + // +kubebuilder:validation:MinLength=1 + // +optional + ID *string `json:"id,omitempty"` + + // Name of resource + // +kubebuilder:validation:MinLength=1 + // +optional + Name *string `json:"name,omitempty"` + + // IBM Cloud VPC zone + Zone *string `json:"zone,omitempty"` + + // IBM Cloud VPC region + Region *string `json:"region,omitempty"` +} + +// CosInstance represents IBM Cloud COS instance. +type CosInstance struct { + // PresignedURLDuration defines the duration for which presigned URLs are valid. + // + // This is used to generate presigned URLs for S3 Bucket objects, which are used by + // control-plane and worker nodes to fetch bootstrap data. + // + // When enabled, the IAM instance profiles specified are not used. + // +optional + PresignedURLDuration *metav1.Duration `json:"presignedURLDuration,omitempty"` + + // Name defines name of IBM cloud COS instance to be created. + // +kubebuilder:validation:MinLength:=3 + // +kubebuilder:validation:MaxLength:=63 + // +kubebuilder:validation:Pattern=`^[a-z0-9][a-z0-9.-]{1,61}[a-z0-9]$` + Name string `json:"name,omitempty"` + + // bucketName is IBM cloud COS bucket name + BucketName string `json:"bucketName,omitempty"` + + // bucketRegion is IBM cloud COS bucket region + BucketRegion string `json:"bucketRegion,omitempty"` +} + +// GetConditions returns the observations of the operational state of the IBMPowerVSCluster resource. +func (r *IBMPowerVSCluster) GetConditions() capiv1beta1.Conditions { + return r.Status.Conditions +} + +// SetConditions sets the underlying service state of the IBMPowerVSCluster to the predescribed clusterv1.Conditions. +func (r *IBMPowerVSCluster) SetConditions(conditions capiv1beta1.Conditions) { + r.Status.Conditions = conditions +} + func init() { SchemeBuilder.Register(&IBMPowerVSCluster{}, &IBMPowerVSClusterList{}) } diff --git a/api/v1beta2/ibmpowervsimage_types.go b/api/v1beta2/ibmpowervsimage_types.go index ee330c067..9755922f7 100644 --- a/api/v1beta2/ibmpowervsimage_types.go +++ b/api/v1beta2/ibmpowervsimage_types.go @@ -38,8 +38,19 @@ type IBMPowerVSImageSpec struct { ClusterName string `json:"clusterName"` // ServiceInstanceID is the id of the power cloud instance where the image will get imported. + // Deprecated: use ServiceInstance instead ServiceInstanceID string `json:"serviceInstanceID"` + // serviceInstance is the reference to the Power VS server workspace on which the server instance(VM) will be created. + // Power VS server workspace is a container for all Power VS instances at a specific geographic region. + // serviceInstance can be created via IBM Cloud catalog or CLI. + // supported serviceInstance identifier in PowerVSResource are Name and ID and that can be obtained from IBM Cloud UI or IBM Cloud cli. + // More detail about Power VS service instance. + // https://cloud.ibm.com/docs/power-iaas?topic=power-iaas-creating-power-virtual-server + // when omitted system will dynamically create the service instance + // +optional + ServiceInstance *IBMPowerVSResourceReference `json:"serviceInstance,omitempty"` + // Cloud Object Storage bucket name; bucket-name[/optional/folder] Bucket *string `json:"bucket"` diff --git a/api/v1beta2/ibmpowervsmachine_types.go b/api/v1beta2/ibmpowervsmachine_types.go index 32cf13dd3..28dd8cc7f 100644 --- a/api/v1beta2/ibmpowervsmachine_types.go +++ b/api/v1beta2/ibmpowervsmachine_types.go @@ -48,9 +48,19 @@ type IBMPowerVSMachineSpec struct { // Important: Run "make" to regenerate code after modifying this file // ServiceInstanceID is the id of the power cloud instance where the vsi instance will get deployed. - // +kubebuilder:validation:MinLength=1 + // Deprecated: use ServiceInstance instead ServiceInstanceID string `json:"serviceInstanceID"` + // serviceInstance is the reference to the Power VS server workspace on which the server instance(VM) will be created. + // Power VS server workspace is a container for all Power VS instances at a specific geographic region. + // serviceInstance can be created via IBM Cloud catalog or CLI. + // supported serviceInstance identifier in PowerVSResource are Name and ID and that can be obtained from IBM Cloud UI or IBM Cloud cli. + // More detail about Power VS service instance. + // https://cloud.ibm.com/docs/power-iaas?topic=power-iaas-creating-power-virtual-server + // when omitted system will dynamically create the service instance + // +optional + ServiceInstance *IBMPowerVSResourceReference `json:"serviceInstance,omitempty"` + // SSHKey is the name of the SSH key pair provided to the vsi for authenticating users. SSHKey string `json:"sshKey,omitempty"` @@ -121,6 +131,20 @@ type IBMPowerVSMachineSpec struct { // ProviderID is the unique identifier as specified by the cloud provider. // +optional ProviderID *string `json:"providerID,omitempty"` + + // Ignition defined options related to the bootstrapping systems where Ignition is used. + // +optional + Ignition *Ignition `json:"ignition,omitempty"` +} + +// Ignition defines options related to the bootstrapping systems where Ignition is used. +type Ignition struct { + // Version defines which version of Ignition will be used to generate bootstrap data. + // + // +optional + // +kubebuilder:default="2.3" + // +kubebuilder:validation:Enum="2.3";"3.0";"3.1";"3.2";"3.3";"3.4" + Version string `json:"version,omitempty"` } // IBMPowerVSResourceReference is a reference to a specific PowerVS resource by ID, Name or RegEx diff --git a/api/v1beta2/ibmvpccluster_types.go b/api/v1beta2/ibmvpccluster_types.go index 993315002..a6163fba0 100644 --- a/api/v1beta2/ibmvpccluster_types.go +++ b/api/v1beta2/ibmvpccluster_types.go @@ -63,6 +63,22 @@ type VPCLoadBalancerSpec struct { // +kubebuilder:validation:Pattern=`^([a-z]|[a-z][-a-z0-9]*[a-z0-9])$` // +optional Name string `json:"name,omitempty"` + + // public indicates that load balancer is public or private + // +kubebuilder:default=true + // +optional + Public bool `json:"public,omitempty"` +} + +// VPCLoadBalancerStatus defines the status VPC load balancer. +type VPCLoadBalancerStatus struct { + // ID of VPC load balancer. + // +optional + ID *string `json:"id,omitempty"` + // +optional + Name *string `json:"name,omitempty"` + // State is the status of the load balancer. + State VPCLoadBalancerState `json:"state,omitempty"` } // IBMVPCClusterStatus defines the observed state of IBMVPCCluster. diff --git a/api/v1beta2/types.go b/api/v1beta2/types.go index d41c7816a..078094fb0 100644 --- a/api/v1beta2/types.go +++ b/api/v1beta2/types.go @@ -83,10 +83,10 @@ type NetworkInterface struct { // Subnet describes a subnet. type Subnet struct { - Ipv4CidrBlock *string `json:"cidr"` - Name *string `json:"name"` - ID *string `json:"id"` - Zone *string `json:"zone"` + Ipv4CidrBlock *string `json:"cidr,omitempty"` + Name *string `json:"name,omitempty"` + ID *string `json:"id,omitempty"` + Zone *string `json:"zone,omitempty"` } // VPCEndpoint describes a VPCEndpoint. diff --git a/api/v1beta2/zz_generated.deepcopy.go b/api/v1beta2/zz_generated.deepcopy.go index a0062f18c..b0c410415 100644 --- a/api/v1beta2/zz_generated.deepcopy.go +++ b/api/v1beta2/zz_generated.deepcopy.go @@ -21,19 +21,40 @@ limitations under the License. package v1beta2 import ( - "k8s.io/api/core/v1" + corev1 "k8s.io/api/core/v1" + "k8s.io/apimachinery/pkg/apis/meta/v1" "k8s.io/apimachinery/pkg/runtime" "sigs.k8s.io/cluster-api/api/v1beta1" "sigs.k8s.io/cluster-api/errors" ) +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *CosInstance) DeepCopyInto(out *CosInstance) { + *out = *in + if in.PresignedURLDuration != nil { + in, out := &in.PresignedURLDuration, &out.PresignedURLDuration + *out = new(v1.Duration) + **out = **in + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new CosInstance. +func (in *CosInstance) DeepCopy() *CosInstance { + if in == nil { + return nil + } + out := new(CosInstance) + in.DeepCopyInto(out) + return out +} + // DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. func (in *IBMPowerVSCluster) DeepCopyInto(out *IBMPowerVSCluster) { *out = *in out.TypeMeta = in.TypeMeta in.ObjectMeta.DeepCopyInto(&out.ObjectMeta) in.Spec.DeepCopyInto(&out.Spec) - out.Status = in.Status + in.Status.DeepCopyInto(&out.Status) } // DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new IBMPowerVSCluster. @@ -91,6 +112,48 @@ func (in *IBMPowerVSClusterSpec) DeepCopyInto(out *IBMPowerVSClusterSpec) { *out = *in in.Network.DeepCopyInto(&out.Network) out.ControlPlaneEndpoint = in.ControlPlaneEndpoint + if in.ServiceInstance != nil { + in, out := &in.ServiceInstance, &out.ServiceInstance + *out = new(IBMPowerVSResourceReference) + (*in).DeepCopyInto(*out) + } + if in.Zone != nil { + in, out := &in.Zone, &out.Zone + *out = new(string) + **out = **in + } + if in.ResourceGroup != nil { + in, out := &in.ResourceGroup, &out.ResourceGroup + *out = new(string) + **out = **in + } + if in.VPC != nil { + in, out := &in.VPC, &out.VPC + *out = new(VPCResourceReference) + (*in).DeepCopyInto(*out) + } + if in.VPCSubnets != nil { + in, out := &in.VPCSubnets, &out.VPCSubnets + *out = make([]Subnet, len(*in)) + for i := range *in { + (*in)[i].DeepCopyInto(&(*out)[i]) + } + } + if in.TransitGateway != nil { + in, out := &in.TransitGateway, &out.TransitGateway + *out = new(TransitGateway) + (*in).DeepCopyInto(*out) + } + if in.LoadBalancers != nil { + in, out := &in.LoadBalancers, &out.LoadBalancers + *out = make([]VPCLoadBalancerSpec, len(*in)) + copy(*out, *in) + } + if in.CosInstance != nil { + in, out := &in.CosInstance, &out.CosInstance + *out = new(CosInstance) + (*in).DeepCopyInto(*out) + } } // DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new IBMPowerVSClusterSpec. @@ -106,6 +169,57 @@ func (in *IBMPowerVSClusterSpec) DeepCopy() *IBMPowerVSClusterSpec { // DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. func (in *IBMPowerVSClusterStatus) DeepCopyInto(out *IBMPowerVSClusterStatus) { *out = *in + if in.ServiceInstance != nil { + in, out := &in.ServiceInstance, &out.ServiceInstance + *out = new(ResourceReference) + (*in).DeepCopyInto(*out) + } + if in.Network != nil { + in, out := &in.Network, &out.Network + *out = new(ResourceReference) + (*in).DeepCopyInto(*out) + } + if in.DHCPServer != nil { + in, out := &in.DHCPServer, &out.DHCPServer + *out = new(ResourceReference) + (*in).DeepCopyInto(*out) + } + if in.VPC != nil { + in, out := &in.VPC, &out.VPC + *out = new(ResourceReference) + (*in).DeepCopyInto(*out) + } + if in.VPCSubnet != nil { + in, out := &in.VPCSubnet, &out.VPCSubnet + *out = make(map[string]ResourceReference, len(*in)) + for key, val := range *in { + (*out)[key] = *val.DeepCopy() + } + } + if in.TransitGateway != nil { + in, out := &in.TransitGateway, &out.TransitGateway + *out = new(ResourceReference) + (*in).DeepCopyInto(*out) + } + if in.COSBucket != nil { + in, out := &in.COSBucket, &out.COSBucket + *out = new(ResourceReference) + (*in).DeepCopyInto(*out) + } + if in.LoadBalancers != nil { + in, out := &in.LoadBalancers, &out.LoadBalancers + *out = make(map[string]VPCLoadBalancerStatus, len(*in)) + for key, val := range *in { + (*out)[key] = *val.DeepCopy() + } + } + if in.Conditions != nil { + in, out := &in.Conditions, &out.Conditions + *out = make(v1beta1.Conditions, len(*in)) + for i := range *in { + (*in)[i].DeepCopyInto(&(*out)[i]) + } + } } // DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new IBMPowerVSClusterStatus. @@ -271,6 +385,11 @@ func (in *IBMPowerVSImageList) DeepCopyObject() runtime.Object { // DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. func (in *IBMPowerVSImageSpec) DeepCopyInto(out *IBMPowerVSImageSpec) { *out = *in + if in.ServiceInstance != nil { + in, out := &in.ServiceInstance, &out.ServiceInstance + *out = new(IBMPowerVSResourceReference) + (*in).DeepCopyInto(*out) + } if in.Bucket != nil { in, out := &in.Bucket, &out.Bucket *out = new(string) @@ -382,6 +501,11 @@ func (in *IBMPowerVSMachineList) DeepCopyObject() runtime.Object { // DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. func (in *IBMPowerVSMachineSpec) DeepCopyInto(out *IBMPowerVSMachineSpec) { *out = *in + if in.ServiceInstance != nil { + in, out := &in.ServiceInstance, &out.ServiceInstance + *out = new(IBMPowerVSResourceReference) + (*in).DeepCopyInto(*out) + } if in.Image != nil { in, out := &in.Image, &out.Image *out = new(IBMPowerVSResourceReference) @@ -389,7 +513,7 @@ func (in *IBMPowerVSMachineSpec) DeepCopyInto(out *IBMPowerVSMachineSpec) { } if in.ImageRef != nil { in, out := &in.ImageRef, &out.ImageRef - *out = new(v1.LocalObjectReference) + *out = new(corev1.LocalObjectReference) **out = **in } out.Processors = in.Processors @@ -399,6 +523,11 @@ func (in *IBMPowerVSMachineSpec) DeepCopyInto(out *IBMPowerVSMachineSpec) { *out = new(string) **out = **in } + if in.Ignition != nil { + in, out := &in.Ignition, &out.Ignition + *out = new(Ignition) + **out = **in + } } // DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new IBMPowerVSMachineSpec. @@ -416,7 +545,7 @@ func (in *IBMPowerVSMachineStatus) DeepCopyInto(out *IBMPowerVSMachineStatus) { *out = *in if in.Addresses != nil { in, out := &in.Addresses, &out.Addresses - *out = make([]v1.NodeAddress, len(*in)) + *out = make([]corev1.NodeAddress, len(*in)) copy(*out, *in) } if in.FailureReason != nil { @@ -554,7 +683,7 @@ func (in *IBMPowerVSMachineTemplateStatus) DeepCopyInto(out *IBMPowerVSMachineTe *out = *in if in.Capacity != nil { in, out := &in.Capacity, &out.Capacity - *out = make(v1.ResourceList, len(*in)) + *out = make(corev1.ResourceList, len(*in)) for key, val := range *in { (*out)[key] = val.DeepCopy() } @@ -903,7 +1032,7 @@ func (in *IBMVPCMachineStatus) DeepCopyInto(out *IBMVPCMachineStatus) { *out = *in if in.Addresses != nil { in, out := &in.Addresses, &out.Addresses - *out = make([]v1.NodeAddress, len(*in)) + *out = make([]corev1.NodeAddress, len(*in)) copy(*out, *in) } } @@ -1033,6 +1162,21 @@ func (in *IBMVPCResourceReference) DeepCopy() *IBMVPCResourceReference { return out } +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *Ignition) DeepCopyInto(out *Ignition) { + *out = *in +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new Ignition. +func (in *Ignition) DeepCopy() *Ignition { + if in == nil { + return nil + } + out := new(Ignition) + in.DeepCopyInto(out) + return out +} + // DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. func (in *NetworkInterface) DeepCopyInto(out *NetworkInterface) { *out = *in @@ -1048,6 +1192,31 @@ func (in *NetworkInterface) DeepCopy() *NetworkInterface { return out } +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *ResourceReference) DeepCopyInto(out *ResourceReference) { + *out = *in + if in.ID != nil { + in, out := &in.ID, &out.ID + *out = new(string) + **out = **in + } + if in.ControllerCreated != nil { + in, out := &in.ControllerCreated, &out.ControllerCreated + *out = new(bool) + **out = **in + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ResourceReference. +func (in *ResourceReference) DeepCopy() *ResourceReference { + if in == nil { + return nil + } + out := new(ResourceReference) + in.DeepCopyInto(out) + return out +} + // DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. func (in *Subnet) DeepCopyInto(out *Subnet) { *out = *in @@ -1083,6 +1252,31 @@ func (in *Subnet) DeepCopy() *Subnet { return out } +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *TransitGateway) DeepCopyInto(out *TransitGateway) { + *out = *in + if in.Name != nil { + in, out := &in.Name, &out.Name + *out = new(string) + **out = **in + } + if in.ID != nil { + in, out := &in.ID, &out.ID + *out = new(string) + **out = **in + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new TransitGateway. +func (in *TransitGateway) DeepCopy() *TransitGateway { + if in == nil { + return nil + } + out := new(TransitGateway) + in.DeepCopyInto(out) + return out +} + // DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. func (in *VPC) DeepCopyInto(out *VPC) { *out = *in @@ -1143,6 +1337,66 @@ func (in *VPCLoadBalancerSpec) DeepCopy() *VPCLoadBalancerSpec { return out } +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *VPCLoadBalancerStatus) DeepCopyInto(out *VPCLoadBalancerStatus) { + *out = *in + if in.ID != nil { + in, out := &in.ID, &out.ID + *out = new(string) + **out = **in + } + if in.Name != nil { + in, out := &in.Name, &out.Name + *out = new(string) + **out = **in + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new VPCLoadBalancerStatus. +func (in *VPCLoadBalancerStatus) DeepCopy() *VPCLoadBalancerStatus { + if in == nil { + return nil + } + out := new(VPCLoadBalancerStatus) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *VPCResourceReference) DeepCopyInto(out *VPCResourceReference) { + *out = *in + if in.ID != nil { + in, out := &in.ID, &out.ID + *out = new(string) + **out = **in + } + if in.Name != nil { + in, out := &in.Name, &out.Name + *out = new(string) + **out = **in + } + if in.Zone != nil { + in, out := &in.Zone, &out.Zone + *out = new(string) + **out = **in + } + if in.Region != nil { + in, out := &in.Region, &out.Region + *out = new(string) + **out = **in + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new VPCResourceReference. +func (in *VPCResourceReference) DeepCopy() *VPCResourceReference { + if in == nil { + return nil + } + out := new(VPCResourceReference) + in.DeepCopyInto(out) + return out +} + // DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. func (in *VPCVolume) DeepCopyInto(out *VPCVolume) { *out = *in diff --git a/config/crd/bases/infrastructure.cluster.x-k8s.io_ibmpowervsclusters.yaml b/config/crd/bases/infrastructure.cluster.x-k8s.io_ibmpowervsclusters.yaml index f8884b90a..e1396cca6 100644 --- a/config/crd/bases/infrastructure.cluster.x-k8s.io_ibmpowervsclusters.yaml +++ b/config/crd/bases/infrastructure.cluster.x-k8s.io_ibmpowervsclusters.yaml @@ -174,9 +174,91 @@ spec: - host - port type: object + cosInstance: + description: cosInstance contains options to configure a supporting + IBM Cloud COS bucket for this cluster - currently used for nodes + requiring Ignition (https://coreos.github.io/ignition/) for bootstrapping + (requires BootstrapFormatIgnition feature flag to be enabled). + properties: + bucketName: + description: bucketName is IBM cloud COS bucket name + type: string + bucketRegion: + description: bucketRegion is IBM cloud COS bucket region + type: string + name: + description: Name defines name of IBM cloud COS instance to be + created. + maxLength: 63 + minLength: 3 + pattern: ^[a-z0-9][a-z0-9.-]{1,61}[a-z0-9]$ + type: string + presignedURLDuration: + description: "PresignedURLDuration defines the duration for which + presigned URLs are valid. \n This is used to generate presigned + URLs for S3 Bucket objects, which are used by control-plane + and worker nodes to fetch bootstrap data. \n When enabled, the + IAM instance profiles specified are not used." + type: string + type: object + loadBalancers: + description: loadBalancers is optional configuration for configuring + loadbalancers to control plane or data plane nodes when specified + a vpc loadbalancer will be created and controlPlaneEndpoint will + be set with associated hostname of loadbalancer. when omitted user + is expected to set controlPlaneEndpoint. + items: + description: VPCLoadBalancerSpec defines the desired state of an + VPC load balancer. + properties: + name: + description: Name sets the name of the VPC load balancer. + maxLength: 63 + pattern: ^([a-z]|[a-z][-a-z0-9]*[a-z0-9])$ + type: string + public: + default: true + description: public indicates that load balancer is public or + private + type: boolean + type: object + type: array network: description: Network is the reference to the Network to use for this - cluster. + cluster. when the field is omitted, A DHCP service will be created + in the Power VS server workspace and its private network will be + used. + properties: + id: + description: ID of resource + minLength: 1 + type: string + name: + description: Name of resource + minLength: 1 + type: string + regex: + description: Regular expression to match resource, In case of + multiple resources matches the provided regular expression the + first matched resource will be selected + minLength: 1 + type: string + type: object + resourceGroup: + description: resourceGroup name under which the resources will be + created. when omitted default resource group of the account will + be used. + type: string + serviceInstance: + description: serviceInstance is the reference to the Power VS server + workspace on which the server instance(VM) will be created. Power + VS server workspace is a container for all Power VS instances at + a specific geographic region. serviceInstance can be created via + IBM Cloud catalog or CLI. supported serviceInstance identifier in + PowerVSResource are Name and ID and that can be obtained from IBM + Cloud UI or IBM Cloud cli. More detail about Power VS service instance. + https://cloud.ibm.com/docs/power-iaas?topic=power-iaas-creating-power-virtual-server + when omitted system will dynamically create the service instance properties: id: description: ID of resource @@ -194,9 +276,60 @@ spec: type: string type: object serviceInstanceID: - description: ServiceInstanceID is the id of the power cloud instance - where the vsi instance will get deployed. - minLength: 1 + description: 'ServiceInstanceID is the id of the power cloud instance + where the vsi instance will get deployed. Deprecated: use ServiceInstance + instead' + type: string + transitGateway: + description: transitGateway contains information about IBM Cloud TransitGateway + IBM Cloud TransitGateway helps in establishing network connectivity + between IBM Cloud Power VS and VPC infrastructure more information + about TransitGateway can be found here https://www.ibm.com/products/transit-gateway. + properties: + id: + type: string + name: + type: string + type: object + vpc: + description: vpc contains information about IBM Cloud VPC resources. + properties: + id: + description: ID of resource + minLength: 1 + type: string + name: + description: Name of resource + minLength: 1 + type: string + region: + description: IBM Cloud VPC region + type: string + zone: + description: IBM Cloud VPC zone + type: string + type: object + vpcSubnets: + description: vpcSubnets contains information about IBM Cloud VPC Subnet + resources. + items: + description: Subnet describes a subnet. + properties: + cidr: + type: string + id: + type: string + name: + type: string + zone: + type: string + type: object + type: array + zone: + default: dal10 + description: zone is the name of Power VS zone where the cluster will + be created possible values can be found here https://cloud.ibm.com/docs/power-iaas?topic=power-iaas-creating-power-virtual-server. + when omitted syd04 will be set as default zone. type: string required: - network @@ -205,11 +338,159 @@ spec: status: description: IBMPowerVSClusterStatus defines the observed state of IBMPowerVSCluster. properties: + conditions: + description: Conditions defines current service state of the IBMPowerVSCluster. + items: + description: Condition defines an observation of a Cluster API resource + operational state. + properties: + lastTransitionTime: + description: Last time the condition transitioned from one status + to another. This should be when the underlying condition changed. + If that is not known, then using the time when the API field + changed is acceptable. + format: date-time + type: string + message: + description: A human readable message indicating details about + the transition. This field may be empty. + type: string + reason: + description: The reason for the condition's last transition + in CamelCase. The specific API may choose whether or not this + field is considered a guaranteed API. This field may not be + empty. + type: string + severity: + description: Severity provides an explicit classification of + Reason code, so the users or machines can immediately understand + the current situation and act accordingly. The Severity field + MUST be set only when Status=False. + type: string + status: + description: Status of the condition, one of True, False, Unknown. + type: string + type: + description: Type of condition in CamelCase or in foo.example.com/CamelCase. + Many .condition.type values are consistent across resources + like Available, but because arbitrary conditions can be useful + (see .node.status.conditions), the ability to deconflict is + important. + type: string + required: + - lastTransitionTime + - status + - type + type: object + type: array + cosBucket: + description: cosBucket is reference to IBM Cloud COS Bucket resource. + properties: + controllerCreated: + default: false + description: controllerCreated indicates whether the resource + is created by the controller. + type: boolean + id: + description: id represents the id of the resource. + type: string + type: object + dhcpServer: + description: dhcpServer is the reference to the Power VS DHCP server. + properties: + controllerCreated: + default: false + description: controllerCreated indicates whether the resource + is created by the controller. + type: boolean + id: + description: id represents the id of the resource. + type: string + type: object + loadBalancers: + additionalProperties: + description: VPCLoadBalancerStatus defines the status VPC load balancer. + properties: + id: + description: ID of VPC load balancer. + type: string + name: + type: string + state: + description: State is the status of the load balancer. + type: string + type: object + description: loadBalancers reference to IBM Cloud VPC Loadbalancer. + type: object + network: + description: networkID is the reference to the Power VS network to + use for this cluster. + properties: + controllerCreated: + default: false + description: controllerCreated indicates whether the resource + is created by the controller. + type: boolean + id: + description: id represents the id of the resource. + type: string + type: object ready: - description: 'INSERT ADDITIONAL STATUS FIELD - define observed state - of cluster Important: Run "make" to regenerate code after modifying - this file' + default: false + description: ready is true when the provider resource is ready. type: boolean + serviceInstance: + description: serviceInstance is the reference to the Power VS service + on which the server instance(VM) will be created. + properties: + controllerCreated: + default: false + description: controllerCreated indicates whether the resource + is created by the controller. + type: boolean + id: + description: id represents the id of the resource. + type: string + type: object + transitGateway: + description: transitGateway is reference to IBM Cloud TransitGateway. + properties: + controllerCreated: + default: false + description: controllerCreated indicates whether the resource + is created by the controller. + type: boolean + id: + description: id represents the id of the resource. + type: string + type: object + vpc: + description: vpc is reference to IBM Cloud VPC resources. + properties: + controllerCreated: + default: false + description: controllerCreated indicates whether the resource + is created by the controller. + type: boolean + id: + description: id represents the id of the resource. + type: string + type: object + vpcSubnet: + additionalProperties: + description: ResourceReference identifies a resource with id. + properties: + controllerCreated: + default: false + description: controllerCreated indicates whether the resource + is created by the controller. + type: boolean + id: + description: id represents the id of the resource. + type: string + type: object + description: vpcSubnet is reference to IBM Cloud VPC subnet. + type: object required: - ready type: object diff --git a/config/crd/bases/infrastructure.cluster.x-k8s.io_ibmpowervsclustertemplates.yaml b/config/crd/bases/infrastructure.cluster.x-k8s.io_ibmpowervsclustertemplates.yaml index 243ba5813..8230b7873 100644 --- a/config/crd/bases/infrastructure.cluster.x-k8s.io_ibmpowervsclustertemplates.yaml +++ b/config/crd/bases/infrastructure.cluster.x-k8s.io_ibmpowervsclustertemplates.yaml @@ -198,9 +198,95 @@ spec: - host - port type: object + cosInstance: + description: cosInstance contains options to configure a supporting + IBM Cloud COS bucket for this cluster - currently used for + nodes requiring Ignition (https://coreos.github.io/ignition/) + for bootstrapping (requires BootstrapFormatIgnition feature + flag to be enabled). + properties: + bucketName: + description: bucketName is IBM cloud COS bucket name + type: string + bucketRegion: + description: bucketRegion is IBM cloud COS bucket region + type: string + name: + description: Name defines name of IBM cloud COS instance + to be created. + maxLength: 63 + minLength: 3 + pattern: ^[a-z0-9][a-z0-9.-]{1,61}[a-z0-9]$ + type: string + presignedURLDuration: + description: "PresignedURLDuration defines the duration + for which presigned URLs are valid. \n This is used + to generate presigned URLs for S3 Bucket objects, which + are used by control-plane and worker nodes to fetch + bootstrap data. \n When enabled, the IAM instance profiles + specified are not used." + type: string + type: object + loadBalancers: + description: loadBalancers is optional configuration for configuring + loadbalancers to control plane or data plane nodes when + specified a vpc loadbalancer will be created and controlPlaneEndpoint + will be set with associated hostname of loadbalancer. when + omitted user is expected to set controlPlaneEndpoint. + items: + description: VPCLoadBalancerSpec defines the desired state + of an VPC load balancer. + properties: + name: + description: Name sets the name of the VPC load balancer. + maxLength: 63 + pattern: ^([a-z]|[a-z][-a-z0-9]*[a-z0-9])$ + type: string + public: + default: true + description: public indicates that load balancer is + public or private + type: boolean + type: object + type: array network: description: Network is the reference to the Network to use - for this cluster. + for this cluster. when the field is omitted, A DHCP service + will be created in the Power VS server workspace and its + private network will be used. + properties: + id: + description: ID of resource + minLength: 1 + type: string + name: + description: Name of resource + minLength: 1 + type: string + regex: + description: Regular expression to match resource, In + case of multiple resources matches the provided regular + expression the first matched resource will be selected + minLength: 1 + type: string + type: object + resourceGroup: + description: resourceGroup name under which the resources + will be created. when omitted default resource group of + the account will be used. + type: string + serviceInstance: + description: serviceInstance is the reference to the Power + VS server workspace on which the server instance(VM) will + be created. Power VS server workspace is a container for + all Power VS instances at a specific geographic region. + serviceInstance can be created via IBM Cloud catalog or + CLI. supported serviceInstance identifier in PowerVSResource + are Name and ID and that can be obtained from IBM Cloud + UI or IBM Cloud cli. More detail about Power VS service + instance. https://cloud.ibm.com/docs/power-iaas?topic=power-iaas-creating-power-virtual-server + when omitted system will dynamically create the service + instance properties: id: description: ID of resource @@ -218,9 +304,62 @@ spec: type: string type: object serviceInstanceID: - description: ServiceInstanceID is the id of the power cloud - instance where the vsi instance will get deployed. - minLength: 1 + description: 'ServiceInstanceID is the id of the power cloud + instance where the vsi instance will get deployed. Deprecated: + use ServiceInstance instead' + type: string + transitGateway: + description: transitGateway contains information about IBM + Cloud TransitGateway IBM Cloud TransitGateway helps in establishing + network connectivity between IBM Cloud Power VS and VPC + infrastructure more information about TransitGateway can + be found here https://www.ibm.com/products/transit-gateway. + properties: + id: + type: string + name: + type: string + type: object + vpc: + description: vpc contains information about IBM Cloud VPC + resources. + properties: + id: + description: ID of resource + minLength: 1 + type: string + name: + description: Name of resource + minLength: 1 + type: string + region: + description: IBM Cloud VPC region + type: string + zone: + description: IBM Cloud VPC zone + type: string + type: object + vpcSubnets: + description: vpcSubnets contains information about IBM Cloud + VPC Subnet resources. + items: + description: Subnet describes a subnet. + properties: + cidr: + type: string + id: + type: string + name: + type: string + zone: + type: string + type: object + type: array + zone: + default: dal10 + description: zone is the name of Power VS zone where the cluster + will be created possible values can be found here https://cloud.ibm.com/docs/power-iaas?topic=power-iaas-creating-power-virtual-server. + when omitted syd04 will be set as default zone. type: string required: - network diff --git a/config/crd/bases/infrastructure.cluster.x-k8s.io_ibmpowervsimages.yaml b/config/crd/bases/infrastructure.cluster.x-k8s.io_ibmpowervsimages.yaml index 26cd46b0f..740a33fbc 100644 --- a/config/crd/bases/infrastructure.cluster.x-k8s.io_ibmpowervsimages.yaml +++ b/config/crd/bases/infrastructure.cluster.x-k8s.io_ibmpowervsimages.yaml @@ -201,9 +201,36 @@ spec: region: description: Cloud Object Storage region. type: string + serviceInstance: + description: serviceInstance is the reference to the Power VS server + workspace on which the server instance(VM) will be created. Power + VS server workspace is a container for all Power VS instances at + a specific geographic region. serviceInstance can be created via + IBM Cloud catalog or CLI. supported serviceInstance identifier in + PowerVSResource are Name and ID and that can be obtained from IBM + Cloud UI or IBM Cloud cli. More detail about Power VS service instance. + https://cloud.ibm.com/docs/power-iaas?topic=power-iaas-creating-power-virtual-server + when omitted system will dynamically create the service instance + properties: + id: + description: ID of resource + minLength: 1 + type: string + name: + description: Name of resource + minLength: 1 + type: string + regex: + description: Regular expression to match resource, In case of + multiple resources matches the provided regular expression the + first matched resource will be selected + minLength: 1 + type: string + type: object serviceInstanceID: - description: ServiceInstanceID is the id of the power cloud instance - where the image will get imported. + description: 'ServiceInstanceID is the id of the power cloud instance + where the image will get imported. Deprecated: use ServiceInstance + instead' type: string storageType: default: tier1 diff --git a/config/crd/bases/infrastructure.cluster.x-k8s.io_ibmpowervsmachines.yaml b/config/crd/bases/infrastructure.cluster.x-k8s.io_ibmpowervsmachines.yaml index 58193c244..12ab11ae5 100644 --- a/config/crd/bases/infrastructure.cluster.x-k8s.io_ibmpowervsmachines.yaml +++ b/config/crd/bases/infrastructure.cluster.x-k8s.io_ibmpowervsmachines.yaml @@ -327,6 +327,23 @@ spec: spec: description: IBMPowerVSMachineSpec defines the desired state of IBMPowerVSMachine. properties: + ignition: + description: Ignition defined options related to the bootstrapping + systems where Ignition is used. + properties: + version: + default: "2.3" + description: Version defines which version of Ignition will be + used to generate bootstrap data. + enum: + - "2.3" + - "3.0" + - "3.1" + - "3.2" + - "3.3" + - "3.4" + type: string + type: object image: description: Image the reference to the image which is used to create the instance. supported image identifier in IBMPowerVSResourceReference @@ -434,10 +451,36 @@ spec: description: ProviderID is the unique identifier as specified by the cloud provider. type: string + serviceInstance: + description: serviceInstance is the reference to the Power VS server + workspace on which the server instance(VM) will be created. Power + VS server workspace is a container for all Power VS instances at + a specific geographic region. serviceInstance can be created via + IBM Cloud catalog or CLI. supported serviceInstance identifier in + PowerVSResource are Name and ID and that can be obtained from IBM + Cloud UI or IBM Cloud cli. More detail about Power VS service instance. + https://cloud.ibm.com/docs/power-iaas?topic=power-iaas-creating-power-virtual-server + when omitted system will dynamically create the service instance + properties: + id: + description: ID of resource + minLength: 1 + type: string + name: + description: Name of resource + minLength: 1 + type: string + regex: + description: Regular expression to match resource, In case of + multiple resources matches the provided regular expression the + first matched resource will be selected + minLength: 1 + type: string + type: object serviceInstanceID: - description: ServiceInstanceID is the id of the power cloud instance - where the vsi instance will get deployed. - minLength: 1 + description: 'ServiceInstanceID is the id of the power cloud instance + where the vsi instance will get deployed. Deprecated: use ServiceInstance + instead' type: string sshKey: description: SSHKey is the name of the SSH key pair provided to the diff --git a/config/crd/bases/infrastructure.cluster.x-k8s.io_ibmpowervsmachinetemplates.yaml b/config/crd/bases/infrastructure.cluster.x-k8s.io_ibmpowervsmachinetemplates.yaml index 177bde157..9442ce91c 100644 --- a/config/crd/bases/infrastructure.cluster.x-k8s.io_ibmpowervsmachinetemplates.yaml +++ b/config/crd/bases/infrastructure.cluster.x-k8s.io_ibmpowervsmachinetemplates.yaml @@ -181,6 +181,23 @@ spec: description: IBMPowerVSMachineSpec defines the desired state of IBMPowerVSMachine. properties: + ignition: + description: Ignition defined options related to the bootstrapping + systems where Ignition is used. + properties: + version: + default: "2.3" + description: Version defines which version of Ignition + will be used to generate bootstrap data. + enum: + - "2.3" + - "3.0" + - "3.1" + - "3.2" + - "3.3" + - "3.4" + type: string + type: object image: description: Image the reference to the image which is used to create the instance. supported image identifier in IBMPowerVSResourceReference @@ -292,10 +309,38 @@ spec: description: ProviderID is the unique identifier as specified by the cloud provider. type: string + serviceInstance: + description: serviceInstance is the reference to the Power + VS server workspace on which the server instance(VM) will + be created. Power VS server workspace is a container for + all Power VS instances at a specific geographic region. + serviceInstance can be created via IBM Cloud catalog or + CLI. supported serviceInstance identifier in PowerVSResource + are Name and ID and that can be obtained from IBM Cloud + UI or IBM Cloud cli. More detail about Power VS service + instance. https://cloud.ibm.com/docs/power-iaas?topic=power-iaas-creating-power-virtual-server + when omitted system will dynamically create the service + instance + properties: + id: + description: ID of resource + minLength: 1 + type: string + name: + description: Name of resource + minLength: 1 + type: string + regex: + description: Regular expression to match resource, In + case of multiple resources matches the provided regular + expression the first matched resource will be selected + minLength: 1 + type: string + type: object serviceInstanceID: - description: ServiceInstanceID is the id of the power cloud - instance where the vsi instance will get deployed. - minLength: 1 + description: 'ServiceInstanceID is the id of the power cloud + instance where the vsi instance will get deployed. Deprecated: + use ServiceInstance instead' type: string sshKey: description: SSHKey is the name of the SSH key pair provided diff --git a/config/crd/bases/infrastructure.cluster.x-k8s.io_ibmvpcclusters.yaml b/config/crd/bases/infrastructure.cluster.x-k8s.io_ibmvpcclusters.yaml index 8c1b954dc..e01c678c9 100644 --- a/config/crd/bases/infrastructure.cluster.x-k8s.io_ibmvpcclusters.yaml +++ b/config/crd/bases/infrastructure.cluster.x-k8s.io_ibmvpcclusters.yaml @@ -246,6 +246,11 @@ spec: maxLength: 63 pattern: ^([a-z]|[a-z][-a-z0-9]*[a-z0-9])$ type: string + public: + default: true + description: public indicates that load balancer is public or + private + type: boolean type: object region: description: The IBM Cloud Region the cluster lives in. @@ -331,11 +336,6 @@ spec: type: string zone: type: string - required: - - cidr - - id - - name - - zone type: object vpc: description: 'INSERT ADDITIONAL STATUS FIELD - define observed state diff --git a/config/crd/bases/infrastructure.cluster.x-k8s.io_ibmvpcclustertemplates.yaml b/config/crd/bases/infrastructure.cluster.x-k8s.io_ibmvpcclustertemplates.yaml index ff08fd023..f33fe75af 100644 --- a/config/crd/bases/infrastructure.cluster.x-k8s.io_ibmvpcclustertemplates.yaml +++ b/config/crd/bases/infrastructure.cluster.x-k8s.io_ibmvpcclustertemplates.yaml @@ -96,6 +96,11 @@ spec: maxLength: 63 pattern: ^([a-z]|[a-z][-a-z0-9]*[a-z0-9])$ type: string + public: + default: true + description: public indicates that load balancer is public + or private + type: boolean type: object region: description: The IBM Cloud Region the cluster lives in.