Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
45 changes: 41 additions & 4 deletions .golangci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -59,7 +59,7 @@ linters-settings:
ifshort:
# Maximum length of variable declaration measured in number of characters, after which linter won't suggest using short syntax.
max-decl-chars: 50
goimports:
gci:
local-prefixes: sigs.k8s.io/cluster-api-provider-openstack
importas:
no-unaliased: true
Expand All @@ -78,10 +78,39 @@ linters-settings:
# Controller Runtime
- pkg: sigs.k8s.io/controller-runtime
alias: ctrl
# CAPO
- pkg: sigs.k8s.io/cluster-api-provider-openstack/api/v1alpha3
alias: infrav1alpha3
- pkg: sigs.k8s.io/cluster-api-provider-openstack/api/v1alpha4
alias: infrav1alpha4
- pkg: sigs.k8s.io/cluster-api-provider-openstack/api/v1beta1
alias: infrav1
# CAPI
- pkg: sigs.k8s.io/cluster-api/api/v1alpha3
alias: clusterv1alpha3
- pkg: sigs.k8s.io/cluster-api/api/v1alpha4
alias: clusterv1alpha4
- pkg: sigs.k8s.io/cluster-api/api/v1beta1
alias: clusterv1
# CABPK
- pkg: sigs.k8s.io/cluster-api/bootstrap/kubeadm/api/v1alpha3
alias: bootstrapv1alpha3
- pkg: sigs.k8s.io/cluster-api/bootstrap/kubeadm/api/v1alpha4
alias: bootstrapv1alpha4
- pkg: sigs.k8s.io/cluster-api/bootstrap/kubeadm/api/v1beta1
alias: bootstrapv1
# KCP
- pkg: sigs.k8s.io/cluster-api/controlplane/kubeadm/api/v1alpha3
alias: controlplanev1alpha3
- pkg: sigs.k8s.io/cluster-api/controlplane/kubeadm/api/v1alpha4
alias: controlplanev1alpha4
- pkg: sigs.k8s.io/cluster-api/controlplane/kubeadm/api/v1beta1
alias: controlplanev1

staticcheck:
go: "1.16"
go: "1.17"
stylecheck:
go: "1.16"
go: "1.17"
nestif:
# minimal complexity of if statements to report, 5 by default
# TODO(sbuerin) fix remaining findings and set to 5 after:
Expand Down Expand Up @@ -112,12 +141,20 @@ issues:
- revive
path: test/e2e/shared/defaults.go
text: "exported: exported const .* should have comment \\(or a comment on this block\\) or be unexported"
- linters:
- revive
text: "var-naming: don't use underscores in Go names;"
path: .*(api|types)\/.*\/.*conversion.*\.go$
- linters:
- stylecheck
text: "ST1003: should not use underscores in Go names;"
path: .*(api|types)\/.*\/.*conversion.*\.go$

run:
timeout: 10m
build-tags:
- e2e

skip-files:
- "zz_generated.*\\.go$"
- ".*conversion.*\\.go$"
allow-parallel-runners: true
56 changes: 28 additions & 28 deletions api/v1alpha3/conversion.go
Original file line number Diff line number Diff line change
Expand Up @@ -21,98 +21,98 @@ import (
conversion "k8s.io/apimachinery/pkg/conversion"
ctrlconversion "sigs.k8s.io/controller-runtime/pkg/conversion"

"sigs.k8s.io/cluster-api-provider-openstack/api/v1beta1"
infrav1 "sigs.k8s.io/cluster-api-provider-openstack/api/v1beta1"
)

var _ ctrlconversion.Convertible = &OpenStackCluster{}

func (r *OpenStackCluster) ConvertTo(dstRaw ctrlconversion.Hub) error {
dst := dstRaw.(*v1beta1.OpenStackCluster)
dst := dstRaw.(*infrav1.OpenStackCluster)

return Convert_v1alpha3_OpenStackCluster_To_v1beta1_OpenStackCluster(r, dst, nil)
}

func (r *OpenStackCluster) ConvertFrom(srcRaw ctrlconversion.Hub) error {
src := srcRaw.(*v1beta1.OpenStackCluster)
src := srcRaw.(*infrav1.OpenStackCluster)

return Convert_v1beta1_OpenStackCluster_To_v1alpha3_OpenStackCluster(src, r, nil)
}

var _ ctrlconversion.Convertible = &OpenStackClusterList{}

func (r *OpenStackClusterList) ConvertTo(dstRaw ctrlconversion.Hub) error {
dst := dstRaw.(*v1beta1.OpenStackClusterList)
dst := dstRaw.(*infrav1.OpenStackClusterList)

return Convert_v1alpha3_OpenStackClusterList_To_v1beta1_OpenStackClusterList(r, dst, nil)
}

func (r *OpenStackClusterList) ConvertFrom(srcRaw ctrlconversion.Hub) error {
src := srcRaw.(*v1beta1.OpenStackClusterList)
src := srcRaw.(*infrav1.OpenStackClusterList)

return Convert_v1beta1_OpenStackClusterList_To_v1alpha3_OpenStackClusterList(src, r, nil)
}

var _ ctrlconversion.Convertible = &OpenStackMachine{}

func (r *OpenStackMachine) ConvertTo(dstRaw ctrlconversion.Hub) error {
dst := dstRaw.(*v1beta1.OpenStackMachine)
dst := dstRaw.(*infrav1.OpenStackMachine)

return Convert_v1alpha3_OpenStackMachine_To_v1beta1_OpenStackMachine(r, dst, nil)
}

func (r *OpenStackMachine) ConvertFrom(srcRaw ctrlconversion.Hub) error {
src := srcRaw.(*v1beta1.OpenStackMachine)
src := srcRaw.(*infrav1.OpenStackMachine)

return Convert_v1beta1_OpenStackMachine_To_v1alpha3_OpenStackMachine(src, r, nil)
}

var _ ctrlconversion.Convertible = &OpenStackMachineList{}

func (r *OpenStackMachineList) ConvertTo(dstRaw ctrlconversion.Hub) error {
dst := dstRaw.(*v1beta1.OpenStackMachineList)
dst := dstRaw.(*infrav1.OpenStackMachineList)

return Convert_v1alpha3_OpenStackMachineList_To_v1beta1_OpenStackMachineList(r, dst, nil)
}

func (r *OpenStackMachineList) ConvertFrom(srcRaw ctrlconversion.Hub) error {
src := srcRaw.(*v1beta1.OpenStackMachineList)
src := srcRaw.(*infrav1.OpenStackMachineList)

return Convert_v1beta1_OpenStackMachineList_To_v1alpha3_OpenStackMachineList(src, r, nil)
}

var _ ctrlconversion.Convertible = &OpenStackMachineTemplate{}

func (r *OpenStackMachineTemplate) ConvertTo(dstRaw ctrlconversion.Hub) error {
dst := dstRaw.(*v1beta1.OpenStackMachineTemplate)
dst := dstRaw.(*infrav1.OpenStackMachineTemplate)

return Convert_v1alpha3_OpenStackMachineTemplate_To_v1beta1_OpenStackMachineTemplate(r, dst, nil)
}

func (r *OpenStackMachineTemplate) ConvertFrom(srcRaw ctrlconversion.Hub) error {
src := srcRaw.(*v1beta1.OpenStackMachineTemplate)
src := srcRaw.(*infrav1.OpenStackMachineTemplate)

return Convert_v1beta1_OpenStackMachineTemplate_To_v1alpha3_OpenStackMachineTemplate(src, r, nil)
}

var _ ctrlconversion.Convertible = &OpenStackMachineTemplateList{}

func (r *OpenStackMachineTemplateList) ConvertTo(dstRaw ctrlconversion.Hub) error {
dst := dstRaw.(*v1beta1.OpenStackMachineTemplateList)
dst := dstRaw.(*infrav1.OpenStackMachineTemplateList)

return Convert_v1alpha3_OpenStackMachineTemplateList_To_v1beta1_OpenStackMachineTemplateList(r, dst, nil)
}

func (r *OpenStackMachineTemplateList) ConvertFrom(srcRaw ctrlconversion.Hub) error {
src := srcRaw.(*v1beta1.OpenStackMachineTemplateList)
src := srcRaw.(*infrav1.OpenStackMachineTemplateList)

return Convert_v1beta1_OpenStackMachineTemplateList_To_v1alpha3_OpenStackMachineTemplateList(src, r, nil)
}

// Convert_v1alpha3_OpenStackClusterSpec_To_v1beta1_OpenStackClusterSpec has to be added by us because we dropped
// the useOctavia parameter. We don't have to migrate this parameter to v1beta1 so there is nothing to do.
func Convert_v1alpha3_OpenStackClusterSpec_To_v1beta1_OpenStackClusterSpec(in *OpenStackClusterSpec, out *v1beta1.OpenStackClusterSpec, s conversion.Scope) error {
func Convert_v1alpha3_OpenStackClusterSpec_To_v1beta1_OpenStackClusterSpec(in *OpenStackClusterSpec, out *infrav1.OpenStackClusterSpec, s conversion.Scope) error {
if in.CloudsSecret != nil {
out.IdentityRef = &v1beta1.OpenStackIdentityReference{
out.IdentityRef = &infrav1.OpenStackIdentityReference{
Kind: "Secret",
Name: in.CloudsSecret.Name,
}
Expand All @@ -122,7 +122,7 @@ func Convert_v1alpha3_OpenStackClusterSpec_To_v1beta1_OpenStackClusterSpec(in *O

// Convert_v1beta1_OpenStackClusterSpec_To_v1alpha3_OpenStackClusterSpec has to be added by us because we have to
// convert the Type of CloudsSecret from SecretReference to string.
func Convert_v1beta1_OpenStackClusterSpec_To_v1alpha3_OpenStackClusterSpec(in *v1beta1.OpenStackClusterSpec, out *OpenStackClusterSpec, s conversion.Scope) error {
func Convert_v1beta1_OpenStackClusterSpec_To_v1alpha3_OpenStackClusterSpec(in *infrav1.OpenStackClusterSpec, out *OpenStackClusterSpec, s conversion.Scope) error {
if in.IdentityRef != nil {
out.CloudsSecret = &corev1.SecretReference{
Name: in.IdentityRef.Name,
Expand All @@ -144,9 +144,9 @@ func Convert_v1beta1_OpenStackClusterSpec_To_v1alpha3_OpenStackClusterSpec(in *v

// Convert_v1alpha3_OpenStackMachineSpec_To_v1beta1_OpenStackMachineSpec is an autogenerated conversion function.
// v1beta1 drops the field .UserDataSecret which is why we reuqire to define the function here.
func Convert_v1alpha3_OpenStackMachineSpec_To_v1beta1_OpenStackMachineSpec(in *OpenStackMachineSpec, out *v1beta1.OpenStackMachineSpec, s conversion.Scope) error {
func Convert_v1alpha3_OpenStackMachineSpec_To_v1beta1_OpenStackMachineSpec(in *OpenStackMachineSpec, out *infrav1.OpenStackMachineSpec, s conversion.Scope) error {
if in.CloudsSecret != nil {
out.IdentityRef = &v1beta1.OpenStackIdentityReference{
out.IdentityRef = &infrav1.OpenStackIdentityReference{
Name: in.CloudsSecret.Name,
Kind: "Secret",
}
Expand All @@ -156,14 +156,14 @@ func Convert_v1alpha3_OpenStackMachineSpec_To_v1beta1_OpenStackMachineSpec(in *O

// Convert_v1beta1_Network_To_v1alpha3_Network has to be added by us for the new portOpts
// parameter in v1beta1. There is no intention to support this parameter in v1alpha3, so the field is just dropped.
func Convert_v1beta1_Network_To_v1alpha3_Network(in *v1beta1.Network, out *Network, s conversion.Scope) error {
func Convert_v1beta1_Network_To_v1alpha3_Network(in *infrav1.Network, out *Network, s conversion.Scope) error {
return autoConvert_v1beta1_Network_To_v1alpha3_Network(in, out, s)
}

// Convert_v1beta1_OpenStackMachineSpec_To_v1alpha3_OpenStackMachineSpec has to be added by us for the new ports
// parameter in v1beta1. There is no intention to support this parameter in v1alpha3, so the field is just dropped.
// Further, we want to convert the Type of CloudsSecret from SecretReference to string.
func Convert_v1beta1_OpenStackMachineSpec_To_v1alpha3_OpenStackMachineSpec(in *v1beta1.OpenStackMachineSpec, out *OpenStackMachineSpec, s conversion.Scope) error {
func Convert_v1beta1_OpenStackMachineSpec_To_v1alpha3_OpenStackMachineSpec(in *infrav1.OpenStackMachineSpec, out *OpenStackMachineSpec, s conversion.Scope) error {
if in.IdentityRef != nil {
out.CloudsSecret = &corev1.SecretReference{
Name: in.IdentityRef.Name,
Expand All @@ -174,11 +174,11 @@ func Convert_v1beta1_OpenStackMachineSpec_To_v1alpha3_OpenStackMachineSpec(in *v

// Convert_v1beta1_OpenStackClusterStatus_To_v1alpha3_OpenStackClusterStatus has to be added
// in order to drop the FailureReason and FailureMessage fields that are not present in v1alpha3.
func Convert_v1beta1_OpenStackClusterStatus_To_v1alpha3_OpenStackClusterStatus(in *v1beta1.OpenStackClusterStatus, out *OpenStackClusterStatus, s conversion.Scope) error {
func Convert_v1beta1_OpenStackClusterStatus_To_v1alpha3_OpenStackClusterStatus(in *infrav1.OpenStackClusterStatus, out *OpenStackClusterStatus, s conversion.Scope) error {
return autoConvert_v1beta1_OpenStackClusterStatus_To_v1alpha3_OpenStackClusterStatus(in, out, s)
}

func Convert_Slice_v1beta1_Network_To_Slice_v1alpha3_Network(in *[]v1beta1.Network, out *[]Network, s conversion.Scope) error {
func Convert_Slice_v1beta1_Network_To_Slice_v1alpha3_Network(in *[]infrav1.Network, out *[]Network, s conversion.Scope) error {
for i := range *in {
inNet := &(*in)[i]
outNet := new(Network)
Expand All @@ -190,10 +190,10 @@ func Convert_Slice_v1beta1_Network_To_Slice_v1alpha3_Network(in *[]v1beta1.Netwo
return nil
}

func Convert_Slice_v1alpha3_Network_To_Slice_v1beta1_Network(in *[]Network, out *[]v1beta1.Network, s conversion.Scope) error {
func Convert_Slice_v1alpha3_Network_To_Slice_v1beta1_Network(in *[]Network, out *[]infrav1.Network, s conversion.Scope) error {
for i := range *in {
inNet := &(*in)[i]
outNet := new(v1beta1.Network)
outNet := new(infrav1.Network)
if err := autoConvert_v1alpha3_Network_To_v1beta1_Network(inNet, outNet, s); err != nil {
return err
}
Expand All @@ -202,7 +202,7 @@ func Convert_Slice_v1alpha3_Network_To_Slice_v1beta1_Network(in *[]Network, out
return nil
}

func Convert_v1alpha3_SubnetFilter_To_v1beta1_SubnetFilter(in *SubnetFilter, out *v1beta1.SubnetFilter, s conversion.Scope) error {
func Convert_v1alpha3_SubnetFilter_To_v1beta1_SubnetFilter(in *SubnetFilter, out *infrav1.SubnetFilter, s conversion.Scope) error {
out.Name = in.Name
out.Description = in.Description
if in.ProjectID != "" {
Expand All @@ -223,12 +223,12 @@ func Convert_v1alpha3_SubnetFilter_To_v1beta1_SubnetFilter(in *SubnetFilter, out
return nil
}

func Convert_v1beta1_SubnetFilter_To_v1alpha3_SubnetFilter(in *v1beta1.SubnetFilter, out *SubnetFilter, s conversion.Scope) error {
func Convert_v1beta1_SubnetFilter_To_v1alpha3_SubnetFilter(in *infrav1.SubnetFilter, out *SubnetFilter, s conversion.Scope) error {
out.TenantID = in.ProjectID
return autoConvert_v1beta1_SubnetFilter_To_v1alpha3_SubnetFilter(in, out, s)
}

func Convert_v1alpha3_Filter_To_v1beta1_NetworkFilter(in *Filter, out *v1beta1.NetworkFilter, s conversion.Scope) error {
func Convert_v1alpha3_Filter_To_v1beta1_NetworkFilter(in *Filter, out *infrav1.NetworkFilter, s conversion.Scope) error {
out.Name = in.Name
out.Description = in.Description
if in.ProjectID != "" {
Expand All @@ -244,7 +244,7 @@ func Convert_v1alpha3_Filter_To_v1beta1_NetworkFilter(in *Filter, out *v1beta1.N
return nil
}

func Convert_v1beta1_NetworkFilter_To_v1alpha3_Filter(in *v1beta1.NetworkFilter, out *Filter, s conversion.Scope) error {
func Convert_v1beta1_NetworkFilter_To_v1alpha3_Filter(in *infrav1.NetworkFilter, out *Filter, s conversion.Scope) error {
out.Name = in.Name
out.Description = in.Description
out.ProjectID = in.ProjectID
Expand Down
22 changes: 11 additions & 11 deletions api/v1alpha3/conversion_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -21,19 +21,19 @@ import (

fuzz "github.com/google/gofuzz"
"github.com/onsi/gomega"

"k8s.io/apimachinery/pkg/api/apitesting/fuzzer"
runtime "k8s.io/apimachinery/pkg/runtime"
runtimeserializer "k8s.io/apimachinery/pkg/runtime/serializer"
v1beta1 "sigs.k8s.io/cluster-api-provider-openstack/api/v1beta1"
utilconversion "sigs.k8s.io/cluster-api/util/conversion"

infrav1 "sigs.k8s.io/cluster-api-provider-openstack/api/v1beta1"
)

func TestFuzzyConversion(t *testing.T) {
g := gomega.NewWithT(t)
scheme := runtime.NewScheme()
g.Expect(AddToScheme(scheme)).To(gomega.Succeed())
g.Expect(v1beta1.AddToScheme(scheme)).To(gomega.Succeed())
g.Expect(infrav1.AddToScheme(scheme)).To(gomega.Succeed())

fuzzerFuncs := func(_ runtimeserializer.CodecFactory) []interface{} {
return []interface{}{
Expand Down Expand Up @@ -90,30 +90,30 @@ func TestFuzzyConversion(t *testing.T) {
},

// Don't test hub-spoke-hub conversion of v1beta1 fields which are not in v1alpha3
func(v1beta1ClusterSpec *v1beta1.OpenStackClusterSpec, c fuzz.Continue) {
func(v1beta1ClusterSpec *infrav1.OpenStackClusterSpec, c fuzz.Continue) {
c.FuzzNoCustom(v1beta1ClusterSpec)

v1beta1ClusterSpec.APIServerFixedIP = ""
v1beta1ClusterSpec.AllowAllInClusterTraffic = false
v1beta1ClusterSpec.DisableAPIServerFloatingIP = false
},
func(v1beta1MachineSpec *v1beta1.OpenStackMachineSpec, c fuzz.Continue) {
func(v1beta1MachineSpec *infrav1.OpenStackMachineSpec, c fuzz.Continue) {
c.FuzzNoCustom(v1beta1MachineSpec)

v1beta1MachineSpec.Ports = nil
},
func(v1beta1Network *v1beta1.Network, c fuzz.Continue) {
func(v1beta1Network *infrav1.Network, c fuzz.Continue) {
c.FuzzNoCustom(v1beta1Network)

v1beta1Network.PortOpts = nil
},
func(v1beta1ClusterStatus *v1beta1.OpenStackClusterStatus, c fuzz.Continue) {
func(v1beta1ClusterStatus *infrav1.OpenStackClusterStatus, c fuzz.Continue) {
c.FuzzNoCustom(v1beta1ClusterStatus)

v1beta1ClusterStatus.FailureMessage = nil
v1beta1ClusterStatus.FailureReason = nil
},
func(v1beta1OpenStackIdentityRef *v1beta1.OpenStackIdentityReference, c fuzz.Continue) {
func(v1beta1OpenStackIdentityRef *infrav1.OpenStackIdentityReference, c fuzz.Continue) {
c.FuzzNoCustom(v1beta1OpenStackIdentityRef)

// IdentityRef was assumed to be a Secret in v1alpha3
Expand All @@ -124,21 +124,21 @@ func TestFuzzyConversion(t *testing.T) {

t.Run("for OpenStackCluster", utilconversion.FuzzTestFunc(utilconversion.FuzzTestFuncInput{
Scheme: scheme,
Hub: &v1beta1.OpenStackCluster{},
Hub: &infrav1.OpenStackCluster{},
Spoke: &OpenStackCluster{},
FuzzerFuncs: []fuzzer.FuzzerFuncs{fuzzerFuncs},
}))

t.Run("for OpenStackMachine", utilconversion.FuzzTestFunc(utilconversion.FuzzTestFuncInput{
Scheme: scheme,
Hub: &v1beta1.OpenStackMachine{},
Hub: &infrav1.OpenStackMachine{},
Spoke: &OpenStackMachine{},
FuzzerFuncs: []fuzzer.FuzzerFuncs{fuzzerFuncs},
}))

t.Run("for OpenStackMachineTemplate", utilconversion.FuzzTestFunc(utilconversion.FuzzTestFuncInput{
Scheme: scheme,
Hub: &v1beta1.OpenStackMachineTemplate{},
Hub: &infrav1.OpenStackMachineTemplate{},
Spoke: &OpenStackMachineTemplate{},
FuzzerFuncs: []fuzzer.FuzzerFuncs{fuzzerFuncs},
}))
Expand Down
14 changes: 7 additions & 7 deletions api/v1alpha3/openstackcluster_conversion.go
Original file line number Diff line number Diff line change
Expand Up @@ -17,17 +17,17 @@ limitations under the License.
package v1alpha3

import (
apiconversion "k8s.io/apimachinery/pkg/conversion"
apiv1alpha3 "sigs.k8s.io/cluster-api/api/v1alpha3"
apiv1beta1 "sigs.k8s.io/cluster-api/api/v1beta1"
"k8s.io/apimachinery/pkg/conversion"
clusterv1alpha3 "sigs.k8s.io/cluster-api/api/v1alpha3"
clusterv1 "sigs.k8s.io/cluster-api/api/v1beta1"
)

// Convert_v1alpha3_APIEndpoint_To_v1beta1_APIEndpoint is an autogenerated conversion function.
func Convert_v1alpha3_APIEndpoint_To_v1beta1_APIEndpoint(in *apiv1alpha3.APIEndpoint, out *apiv1beta1.APIEndpoint, s apiconversion.Scope) error {
return apiv1alpha3.Convert_v1alpha3_APIEndpoint_To_v1beta1_APIEndpoint(in, out, s)
func Convert_v1alpha3_APIEndpoint_To_v1beta1_APIEndpoint(in *clusterv1alpha3.APIEndpoint, out *clusterv1.APIEndpoint, s conversion.Scope) error {
return clusterv1alpha3.Convert_v1alpha3_APIEndpoint_To_v1beta1_APIEndpoint(in, out, s)
}

// Convert_v1beta1_APIEndpoint_To_v1alpha3_APIEndpoint is an autogenerated conversion function.
func Convert_v1beta1_APIEndpoint_To_v1alpha3_APIEndpoint(in *apiv1beta1.APIEndpoint, out *apiv1alpha3.APIEndpoint, s apiconversion.Scope) error {
return apiv1alpha3.Convert_v1beta1_APIEndpoint_To_v1alpha3_APIEndpoint(in, out, s)
func Convert_v1beta1_APIEndpoint_To_v1alpha3_APIEndpoint(in *clusterv1.APIEndpoint, out *clusterv1alpha3.APIEndpoint, s conversion.Scope) error {
return clusterv1alpha3.Convert_v1beta1_APIEndpoint_To_v1alpha3_APIEndpoint(in, out, s)
}
Loading