Skip to content

Commit 4fd4c7f

Browse files
authored
Merge pull request #2267 from vincepri/update-refs-nicely
⚠️ Add support to auto-update external references
2 parents 12b2539 + 9ad583b commit 4fd4c7f

File tree

22 files changed

+334
-99
lines changed

22 files changed

+334
-99
lines changed

Makefile

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -103,12 +103,10 @@ help: ## Display this help
103103

104104
.PHONY: test
105105
test: ## Run tests
106-
## TODO(vincepri): Remove the fetch for external binaries once kubebuilder has a release.
107106
source ./scripts/fetch_ext_bins.sh; fetch_tools; setup_envs; go test -v ./...
108107

109108
.PHONY: test-integration
110109
test-integration: ## Run integration tests
111-
## TODO(vincepri): Remove the fetch for external binaries once kubebuilder has a release.
112110
source ./scripts/fetch_ext_bins.sh; fetch_tools; setup_envs; go test -v -tags=integration ./test/integration/...
113111

114112
.PHONY: test-capd-e2e-full

bootstrap/kubeadm/config/crd/kustomization.yaml

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,7 @@
1+
commonLabels:
2+
cluster.x-k8s.io/v1alpha2: v1alpha2
3+
cluster.x-k8s.io/v1alpha3: v1alpha3
4+
15
# This kustomization.yaml is not intended to be run by itself,
26
# since it depends on service name and namespace that are out of this kustomize package.
37
# It should be run by config/

cmd/clusterctl/pkg/client/cluster/inventory.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,7 @@ import (
2020
"time"
2121

2222
"github.com/pkg/errors"
23-
apiextensionsv1 "k8s.io/apiextensions-apiserver/pkg/apis/apiextensions/v1beta1"
23+
apiextensionsv1 "k8s.io/apiextensions-apiserver/pkg/apis/apiextensions/v1"
2424
apierrors "k8s.io/apimachinery/pkg/api/errors"
2525
apimeta "k8s.io/apimachinery/pkg/api/meta"
2626
"k8s.io/apimachinery/pkg/util/sets"

cmd/clusterctl/pkg/client/cluster/objectgraph.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,7 @@ import (
2121

2222
"github.com/pkg/errors"
2323
corev1 "k8s.io/api/core/v1"
24-
apiextensionsv1 "k8s.io/apiextensions-apiserver/pkg/apis/apiextensions/v1beta1"
24+
apiextensionsv1 "k8s.io/apiextensions-apiserver/pkg/apis/apiextensions/v1"
2525
apierrors "k8s.io/apimachinery/pkg/api/errors"
2626
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
2727
"k8s.io/apimachinery/pkg/apis/meta/v1/unstructured"

cmd/clusterctl/pkg/internal/scheme/scheme.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,7 @@ limitations under the License.
1717
package scheme
1818

1919
import (
20-
apiextensionsv1 "k8s.io/apiextensions-apiserver/pkg/apis/apiextensions/v1beta1"
20+
apiextensionsv1 "k8s.io/apiextensions-apiserver/pkg/apis/apiextensions/v1"
2121
"k8s.io/apimachinery/pkg/runtime"
2222
clientgoscheme "k8s.io/client-go/kubernetes/scheme"
2323
clusterv1 "sigs.k8s.io/cluster-api/api/v1alpha3"

cmd/clusterctl/pkg/internal/test/fake_objects.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,7 @@ import (
2121
"strings"
2222

2323
corev1 "k8s.io/api/core/v1"
24-
apiextensionslv1 "k8s.io/apiextensions-apiserver/pkg/apis/apiextensions/v1beta1"
24+
apiextensionslv1 "k8s.io/apiextensions-apiserver/pkg/apis/apiextensions/v1"
2525
"k8s.io/apimachinery/pkg/api/meta"
2626
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
2727
"k8s.io/apimachinery/pkg/runtime"

cmd/clusterctl/pkg/internal/test/fake_proxy.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,7 @@ limitations under the License.
1717
package test
1818

1919
import (
20-
apiextensionslv1 "k8s.io/apiextensions-apiserver/pkg/apis/apiextensions/v1beta1"
20+
apiextensionslv1 "k8s.io/apiextensions-apiserver/pkg/apis/apiextensions/v1"
2121
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
2222
"k8s.io/apimachinery/pkg/apis/meta/v1/unstructured"
2323
"k8s.io/apimachinery/pkg/runtime"

controllers/cluster_controller_phases.go

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -29,6 +29,7 @@ import (
2929
"sigs.k8s.io/cluster-api/controllers/external"
3030
capierrors "sigs.k8s.io/cluster-api/errors"
3131
"sigs.k8s.io/cluster-api/util"
32+
utilconversion "sigs.k8s.io/cluster-api/util/conversion"
3233
"sigs.k8s.io/cluster-api/util/kubeconfig"
3334
"sigs.k8s.io/cluster-api/util/patch"
3435
"sigs.k8s.io/cluster-api/util/secret"
@@ -62,6 +63,10 @@ func (r *ClusterReconciler) reconcilePhase(_ context.Context, cluster *clusterv1
6263
func (r *ClusterReconciler) reconcileExternal(ctx context.Context, cluster *clusterv1.Cluster, ref *corev1.ObjectReference) (external.ReconcileOutput, error) {
6364
logger := r.Log.WithValues("cluster", cluster.Name, "namespace", cluster.Namespace)
6465

66+
if err := utilconversion.ConvertReferenceAPIContract(ctx, r.Client, ref); err != nil {
67+
return external.ReconcileOutput{}, err
68+
}
69+
6570
obj, err := external.Get(ctx, r.Client, ref, cluster.Namespace)
6671
if err != nil {
6772
if apierrors.IsNotFound(errors.Cause(err)) {

controllers/cluster_controller_phases_test.go

Lines changed: 9 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -23,10 +23,12 @@ import (
2323

2424
. "github.com/onsi/gomega"
2525
corev1 "k8s.io/api/core/v1"
26+
apiextensionsv1 "k8s.io/apiextensions-apiserver/pkg/apis/apiextensions/v1"
2627
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
2728
"k8s.io/apimachinery/pkg/apis/meta/v1/unstructured"
2829
"k8s.io/client-go/kubernetes/scheme"
2930
clusterv1 "sigs.k8s.io/cluster-api/api/v1alpha3"
31+
"sigs.k8s.io/cluster-api/controllers/external"
3032
capierrors "sigs.k8s.io/cluster-api/errors"
3133
"sigs.k8s.io/controller-runtime/pkg/client"
3234
"sigs.k8s.io/controller-runtime/pkg/client/fake"
@@ -50,7 +52,7 @@ func TestClusterReconcilePhases(t *testing.T) {
5052
},
5153
InfrastructureRef: &corev1.ObjectReference{
5254
APIVersion: "infrastructure.cluster.x-k8s.io/v1alpha3",
53-
Kind: "InfrastructureConfig",
55+
Kind: "InfrastructureMachine",
5456
Name: "test",
5557
},
5658
},
@@ -76,7 +78,7 @@ func TestClusterReconcilePhases(t *testing.T) {
7678
name: "returns no error if infra config is marked for deletion",
7779
cluster: cluster,
7880
infraRef: map[string]interface{}{
79-
"kind": "InfrastructureConfig",
81+
"kind": "InfrastructureMachine",
8082
"apiVersion": "infrastructure.cluster.x-k8s.io/v1alpha3",
8183
"metadata": map[string]interface{}{
8284
"name": "test",
@@ -90,7 +92,7 @@ func TestClusterReconcilePhases(t *testing.T) {
9092
name: "returns no error if infrastructure is marked ready on cluster",
9193
cluster: cluster,
9294
infraRef: map[string]interface{}{
93-
"kind": "InfrastructureConfig",
95+
"kind": "InfrastructureMachine",
9496
"apiVersion": "infrastructure.cluster.x-k8s.io/v1alpha3",
9597
"metadata": map[string]interface{}{
9698
"name": "test",
@@ -104,7 +106,7 @@ func TestClusterReconcilePhases(t *testing.T) {
104106
name: "returns error if infrastructure has the paused annotation",
105107
cluster: cluster,
106108
infraRef: map[string]interface{}{
107-
"kind": "InfrastructureConfig",
109+
"kind": "InfrastructureMachine",
108110
"apiVersion": "infrastructure.cluster.x-k8s.io/v1alpha3",
109111
"metadata": map[string]interface{}{
110112
"name": "test",
@@ -122,13 +124,14 @@ func TestClusterReconcilePhases(t *testing.T) {
122124
t.Run(tt.name, func(t *testing.T) {
123125
g := NewWithT(t)
124126
g.Expect(clusterv1.AddToScheme(scheme.Scheme)).To(Succeed())
127+
g.Expect(apiextensionsv1.AddToScheme(scheme.Scheme)).To(Succeed())
125128

126129
var c client.Client
127130
if tt.infraRef != nil {
128131
infraConfig := &unstructured.Unstructured{Object: tt.infraRef}
129-
c = fake.NewFakeClientWithScheme(scheme.Scheme, tt.cluster, infraConfig)
132+
c = fake.NewFakeClientWithScheme(scheme.Scheme, external.TestGenericInfrastructureCRD, tt.cluster, infraConfig)
130133
} else {
131-
c = fake.NewFakeClientWithScheme(scheme.Scheme, tt.cluster)
134+
c = fake.NewFakeClientWithScheme(scheme.Scheme, external.TestGenericInfrastructureCRD, tt.cluster)
132135
}
133136
r := &ClusterReconciler{
134137
Client: c,

controllers/external/testing.go

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,7 @@ import (
2020
apiextensionsv1 "k8s.io/apiextensions-apiserver/pkg/apis/apiextensions/v1"
2121
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
2222
"k8s.io/utils/pointer"
23+
clusterv1 "sigs.k8s.io/cluster-api/api/v1alpha3"
2324
)
2425

2526
var (
@@ -30,6 +31,9 @@ var (
3031
},
3132
ObjectMeta: metav1.ObjectMeta{
3233
Name: "genericmachines.bootstrap.cluster.x-k8s.io",
34+
Labels: map[string]string{
35+
clusterv1.GroupVersion.String(): "v1alpha3",
36+
},
3337
},
3438
Spec: apiextensionsv1.CustomResourceDefinitionSpec{
3539
Group: "bootstrap.cluster.x-k8s.io",
@@ -69,6 +73,9 @@ var (
6973
},
7074
ObjectMeta: metav1.ObjectMeta{
7175
Name: "genericmachinetemplates.bootstrap.cluster.x-k8s.io",
76+
Labels: map[string]string{
77+
clusterv1.GroupVersion.String(): "v1alpha3",
78+
},
7279
},
7380
Spec: apiextensionsv1.CustomResourceDefinitionSpec{
7481
Group: "bootstrap.cluster.x-k8s.io",
@@ -108,6 +115,9 @@ var (
108115
},
109116
ObjectMeta: metav1.ObjectMeta{
110117
Name: "genericmachines.infrastructure.cluster.x-k8s.io",
118+
Labels: map[string]string{
119+
clusterv1.GroupVersion.String(): "v1alpha3",
120+
},
111121
},
112122
Spec: apiextensionsv1.CustomResourceDefinitionSpec{
113123
Group: "infrastructure.cluster.x-k8s.io",
@@ -147,6 +157,9 @@ var (
147157
},
148158
ObjectMeta: metav1.ObjectMeta{
149159
Name: "genericmachinetemplates.infrastructure.cluster.x-k8s.io",
160+
Labels: map[string]string{
161+
clusterv1.GroupVersion.String(): "v1alpha3",
162+
},
150163
},
151164
Spec: apiextensionsv1.CustomResourceDefinitionSpec{
152165
Group: "infrastructure.cluster.x-k8s.io",

0 commit comments

Comments
 (0)