Skip to content

Commit 913d6cb

Browse files
author
Harrison Katz
committed
Enable Deployment.ClusterName
1 parent 62264f9 commit 913d6cb

File tree

5 files changed

+111
-56
lines changed

5 files changed

+111
-56
lines changed

api/ngrok/v1alpha1/kubernetesoperator_types.go

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -42,8 +42,8 @@ type ngrokAPICommon struct {
4242
// NOTE: json tags are required. Any new fields you add must have json tags for the fields to be serialized.
4343

4444
type KubernetesOperatorDeployment struct {
45-
// Cluster is the name of the k8s cluster in which the operator is deployed
46-
Cluster string `json:"cluster,omitempty"`
45+
// ClusterName is the name of the k8s cluster in which the operator is deployed
46+
ClusterName string `json:"clusterName,omitempty"`
4747
// Name is the name of the k8s deployment for the operator
4848
Name string `json:"name,omitempty"`
4949
// The namespace in which the operator is deployed

cmd/api/main.go

Lines changed: 7 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -260,12 +260,9 @@ func runNormalMode(ctx context.Context, opts managerOpts, k8sClient client.Clien
260260
return fmt.Errorf("Unable to load ngrokClientSet: %w", err)
261261
}
262262

263-
// TODO(hkatz) for now we are hiding the k8sop API regstration behind the bindings feature flag
264-
if opts.enableFeatureBindings {
265-
// register the k8sop in the ngrok API
266-
if err := createKubernetesOperator(ctx, k8sClient, opts); err != nil {
267-
return fmt.Errorf("unable to create KubernetesOperator: %w", err)
268-
}
263+
// register the k8sop in the ngrok API
264+
if err := createKubernetesOperator(ctx, k8sClient, opts); err != nil {
265+
return fmt.Errorf("unable to create KubernetesOperator: %w", err)
269266
}
270267

271268
// k8sResourceDriver is the driver that will be used to interact with the k8s resources for all controllers
@@ -659,10 +656,10 @@ func createKubernetesOperator(ctx context.Context, client client.Client, opts ma
659656
_, err := controllerutil.CreateOrUpdate(ctx, client, k8sOperator, func() error {
660657
k8sOperator.Spec = ngrokv1alpha1.KubernetesOperatorSpec{
661658
Deployment: &ngrokv1alpha1.KubernetesOperatorDeployment{
662-
Cluster: opts.clusterName,
663-
Name: opts.releaseName,
664-
Namespace: opts.namespace,
665-
Version: version.GetVersion(),
659+
ClusterName: opts.clusterName,
660+
Name: opts.releaseName,
661+
Namespace: opts.namespace,
662+
Version: version.GetVersion(),
666663
},
667664
Region: opts.region,
668665
}

helm/ngrok-operator/templates/crds/ngrok.k8s.ngrok.com_kubernetesoperators.yaml

Lines changed: 3 additions & 3 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

internal/controller/ngrok/kubernetesoperator_controller.go

Lines changed: 7 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -136,11 +136,10 @@ func (r *KubernetesOperatorReconciler) create(ctx context.Context, ko *ngrokv1al
136136
EnabledFeatures: calculateFeaturesEnabled(ko),
137137
Region: ko.Spec.Region,
138138
Deployment: ngrok.KubernetesOperatorDeployment{
139-
// TODO(hkatz) clusterName
140-
// Cluster: ko.Spec.Deployment.Cluster,
141-
Name: ko.Spec.Deployment.Name,
142-
Namespace: ko.Spec.Deployment.Namespace,
143-
Version: ko.Spec.Deployment.Version,
139+
ClusterName: ko.Spec.Deployment.ClusterName,
140+
Name: ko.Spec.Deployment.Name,
141+
Namespace: ko.Spec.Deployment.Namespace,
142+
Version: ko.Spec.Deployment.Version,
144143
},
145144
}
146145

@@ -326,10 +325,9 @@ func ngrokK8sopMatchesKubernetesOperator(k8sop *ngrok.KubernetesOperator, ko *ng
326325
return false
327326
}
328327

329-
// TODO(hkatz) clusterName
330-
// if item.Deployment.Cluster != ko.Spec.Deployment.Cluster {
331-
// continue
332-
// }
328+
if k8sop.Deployment.ClusterName != ko.Spec.Deployment.ClusterName {
329+
return false
330+
}
333331

334332
if k8sop.Deployment.Name != ko.Spec.Deployment.Name {
335333
return false

internal/controller/ngrok/kubernetesoperator_controller_test.go

Lines changed: 92 additions & 32 deletions
Original file line numberDiff line numberDiff line change
@@ -29,15 +29,39 @@ func Test_ngrokK8sopMatchesKubernetesOperator(t *testing.T) {
2929
ngrokK8sop: &ngrok.KubernetesOperator{
3030
EnabledFeatures: []string{"Ingress"}, // API returns title cased features
3131
Deployment: ngrok.KubernetesOperatorDeployment{
32-
Name: "example",
33-
Namespace: "ngrok-operator",
32+
ClusterName: "my-cluster",
33+
Name: "example",
34+
Namespace: "ngrok-operator",
3435
},
3536
},
3637
koK8sop: &ngrokv1alpha1.KubernetesOperator{
3738
Spec: ngrokv1alpha1.KubernetesOperatorSpec{
3839
Deployment: &ngrokv1alpha1.KubernetesOperatorDeployment{
39-
Name: "example",
40-
Namespace: "ngrok-operator",
40+
ClusterName: "my-cluster",
41+
Name: "example",
42+
Namespace: "ngrok-operator",
43+
},
44+
EnabledFeatures: []string{ngrokv1alpha1.KubernetesOperatorFeatureIngress},
45+
},
46+
},
47+
},
48+
{
49+
name: "different clustername",
50+
want: false,
51+
ngrokK8sop: &ngrok.KubernetesOperator{
52+
EnabledFeatures: []string{"Ingress"}, // API returns title cased features
53+
Deployment: ngrok.KubernetesOperatorDeployment{
54+
ClusterName: "my-cluster",
55+
Name: "example",
56+
Namespace: "ngrok-operator",
57+
},
58+
},
59+
koK8sop: &ngrokv1alpha1.KubernetesOperator{
60+
Spec: ngrokv1alpha1.KubernetesOperatorSpec{
61+
Deployment: &ngrokv1alpha1.KubernetesOperatorDeployment{
62+
ClusterName: "different-cluster",
63+
Name: "example",
64+
Namespace: "ngrok-operator",
4165
},
4266
EnabledFeatures: []string{ngrokv1alpha1.KubernetesOperatorFeatureIngress},
4367
},
@@ -49,15 +73,17 @@ func Test_ngrokK8sopMatchesKubernetesOperator(t *testing.T) {
4973
ngrokK8sop: &ngrok.KubernetesOperator{
5074
EnabledFeatures: []string{"Ingress"}, // API returns title cased features
5175
Deployment: ngrok.KubernetesOperatorDeployment{
52-
Name: "example",
53-
Namespace: "ngrok-operator",
76+
ClusterName: "my-cluster",
77+
Name: "example",
78+
Namespace: "ngrok-operator",
5479
},
5580
},
5681
koK8sop: &ngrokv1alpha1.KubernetesOperator{
5782
Spec: ngrokv1alpha1.KubernetesOperatorSpec{
5883
Deployment: &ngrokv1alpha1.KubernetesOperatorDeployment{
59-
Name: "example",
60-
Namespace: "different-namespace",
84+
ClusterName: "my-cluster",
85+
Name: "example",
86+
Namespace: "different-namespace",
6187
},
6288
EnabledFeatures: []string{ngrokv1alpha1.KubernetesOperatorFeatureIngress},
6389
},
@@ -69,15 +95,39 @@ func Test_ngrokK8sopMatchesKubernetesOperator(t *testing.T) {
6995
ngrokK8sop: &ngrok.KubernetesOperator{
7096
EnabledFeatures: []string{"Ingress"}, // API returns title cased features
7197
Deployment: ngrok.KubernetesOperatorDeployment{
72-
Name: "example",
73-
Namespace: "ngrok-operator",
98+
ClusterName: "my-cluster",
99+
Name: "example",
100+
Namespace: "ngrok-operator",
101+
},
102+
},
103+
koK8sop: &ngrokv1alpha1.KubernetesOperator{
104+
Spec: ngrokv1alpha1.KubernetesOperatorSpec{
105+
Deployment: &ngrokv1alpha1.KubernetesOperatorDeployment{
106+
ClusterName: "my-cluster",
107+
Name: "different-name",
108+
Namespace: "ngrok-operator",
109+
},
110+
EnabledFeatures: []string{ngrokv1alpha1.KubernetesOperatorFeatureIngress},
111+
},
112+
},
113+
},
114+
{
115+
name: "same name, different clustername",
116+
want: false,
117+
ngrokK8sop: &ngrok.KubernetesOperator{
118+
EnabledFeatures: []string{"Ingress"}, // API returns title cased features
119+
Deployment: ngrok.KubernetesOperatorDeployment{
120+
ClusterName: "my-cluster",
121+
Name: "example",
122+
Namespace: "ngrok-operator",
74123
},
75124
},
76125
koK8sop: &ngrokv1alpha1.KubernetesOperator{
77126
Spec: ngrokv1alpha1.KubernetesOperatorSpec{
78127
Deployment: &ngrokv1alpha1.KubernetesOperatorDeployment{
79-
Name: "different-name",
80-
Namespace: "ngrok-operator",
128+
ClusterName: "different-cluster",
129+
Name: "example",
130+
Namespace: "ngrok-operator",
81131
},
82132
EnabledFeatures: []string{ngrokv1alpha1.KubernetesOperatorFeatureIngress},
83133
},
@@ -89,8 +139,9 @@ func Test_ngrokK8sopMatchesKubernetesOperator(t *testing.T) {
89139
ngrokK8sop: &ngrok.KubernetesOperator{
90140
EnabledFeatures: []string{"Ingress", "Bindings"}, // API returns title cased features
91141
Deployment: ngrok.KubernetesOperatorDeployment{
92-
Name: "example",
93-
Namespace: "ngrok-operator",
142+
ClusterName: "my-cluster",
143+
Name: "example",
144+
Namespace: "ngrok-operator",
94145
},
95146
Binding: &ngrok.KubernetesOperatorBinding{
96147
Name: "example",
@@ -99,8 +150,9 @@ func Test_ngrokK8sopMatchesKubernetesOperator(t *testing.T) {
99150
koK8sop: &ngrokv1alpha1.KubernetesOperator{
100151
Spec: ngrokv1alpha1.KubernetesOperatorSpec{
101152
Deployment: &ngrokv1alpha1.KubernetesOperatorDeployment{
102-
Name: "example",
103-
Namespace: "ngrok-operator",
153+
ClusterName: "my-cluster",
154+
Name: "example",
155+
Namespace: "ngrok-operator",
104156
},
105157
EnabledFeatures: []string{ngrokv1alpha1.KubernetesOperatorFeatureIngress, ngrokv1alpha1.KubernetesOperatorFeatureBindings},
106158
Binding: &ngrokv1alpha1.KubernetesOperatorBinding{
@@ -115,8 +167,9 @@ func Test_ngrokK8sopMatchesKubernetesOperator(t *testing.T) {
115167
ngrokK8sop: &ngrok.KubernetesOperator{
116168
EnabledFeatures: []string{"Ingress", "Bindings"}, // API returns title cased features
117169
Deployment: ngrok.KubernetesOperatorDeployment{
118-
Name: "example",
119-
Namespace: "ngrok-operator",
170+
ClusterName: "my-cluster",
171+
Name: "example",
172+
Namespace: "ngrok-operator",
120173
},
121174
Binding: &ngrok.KubernetesOperatorBinding{
122175
Name: "example",
@@ -125,8 +178,9 @@ func Test_ngrokK8sopMatchesKubernetesOperator(t *testing.T) {
125178
koK8sop: &ngrokv1alpha1.KubernetesOperator{
126179
Spec: ngrokv1alpha1.KubernetesOperatorSpec{
127180
Deployment: &ngrokv1alpha1.KubernetesOperatorDeployment{
128-
Name: "example",
129-
Namespace: "ngrok-operator",
181+
ClusterName: "my-cluster",
182+
Name: "example",
183+
Namespace: "ngrok-operator",
130184
},
131185
EnabledFeatures: []string{ngrokv1alpha1.KubernetesOperatorFeatureIngress, ngrokv1alpha1.KubernetesOperatorFeatureBindings},
132186
Binding: &ngrokv1alpha1.KubernetesOperatorBinding{
@@ -141,8 +195,9 @@ func Test_ngrokK8sopMatchesKubernetesOperator(t *testing.T) {
141195
ngrokK8sop: &ngrok.KubernetesOperator{
142196
EnabledFeatures: []string{"Ingress", "Bindings"}, // API returns title cased features
143197
Deployment: ngrok.KubernetesOperatorDeployment{
144-
Name: "example",
145-
Namespace: "ngrok-operator",
198+
ClusterName: "my-cluster",
199+
Name: "example",
200+
Namespace: "ngrok-operator",
146201
},
147202
Binding: &ngrok.KubernetesOperatorBinding{
148203
Name: "example",
@@ -151,8 +206,9 @@ func Test_ngrokK8sopMatchesKubernetesOperator(t *testing.T) {
151206
koK8sop: &ngrokv1alpha1.KubernetesOperator{
152207
Spec: ngrokv1alpha1.KubernetesOperatorSpec{
153208
Deployment: &ngrokv1alpha1.KubernetesOperatorDeployment{
154-
Name: "example",
155-
Namespace: "ngrok-operator",
209+
ClusterName: "my-cluster",
210+
Name: "example",
211+
Namespace: "ngrok-operator",
156212
},
157213
EnabledFeatures: []string{ngrokv1alpha1.KubernetesOperatorFeatureIngress},
158214
},
@@ -164,8 +220,9 @@ func Test_ngrokK8sopMatchesKubernetesOperator(t *testing.T) {
164220
ngrokK8sop: &ngrok.KubernetesOperator{
165221
EnabledFeatures: []string{"Ingress"}, // API returns title cased features
166222
Deployment: ngrok.KubernetesOperatorDeployment{
167-
Name: "example",
168-
Namespace: "ngrok-operator",
223+
ClusterName: "my-cluster",
224+
Name: "example",
225+
Namespace: "ngrok-operator",
169226
},
170227
Binding: &ngrok.KubernetesOperatorBinding{
171228
Name: "example",
@@ -174,8 +231,9 @@ func Test_ngrokK8sopMatchesKubernetesOperator(t *testing.T) {
174231
koK8sop: &ngrokv1alpha1.KubernetesOperator{
175232
Spec: ngrokv1alpha1.KubernetesOperatorSpec{
176233
Deployment: &ngrokv1alpha1.KubernetesOperatorDeployment{
177-
Name: "example",
178-
Namespace: "ngrok-operator",
234+
ClusterName: "my-cluster",
235+
Name: "example",
236+
Namespace: "ngrok-operator",
179237
},
180238
EnabledFeatures: []string{ngrokv1alpha1.KubernetesOperatorFeatureIngress, ngrokv1alpha1.KubernetesOperatorFeatureBindings},
181239
Binding: &ngrokv1alpha1.KubernetesOperatorBinding{
@@ -194,8 +252,9 @@ func Test_ngrokK8sopMatchesKubernetesOperator(t *testing.T) {
194252
ngrokK8sop: &ngrok.KubernetesOperator{
195253
EnabledFeatures: []string{"Ingress"}, // API returns title cased features
196254
Deployment: ngrok.KubernetesOperatorDeployment{
197-
Name: "example",
198-
Namespace: "ngrok-operator",
255+
ClusterName: "my-cluster",
256+
Name: "example",
257+
Namespace: "ngrok-operator",
199258
},
200259
Binding: &ngrok.KubernetesOperatorBinding{
201260
Name: "example",
@@ -204,8 +263,9 @@ func Test_ngrokK8sopMatchesKubernetesOperator(t *testing.T) {
204263
koK8sop: &ngrokv1alpha1.KubernetesOperator{
205264
Spec: ngrokv1alpha1.KubernetesOperatorSpec{
206265
Deployment: &ngrokv1alpha1.KubernetesOperatorDeployment{
207-
Name: "example",
208-
Namespace: "ngrok-operator",
266+
ClusterName: "my-cluster",
267+
Name: "example",
268+
Namespace: "ngrok-operator",
209269
},
210270
EnabledFeatures: []string{ngrokv1alpha1.KubernetesOperatorFeatureIngress, ngrokv1alpha1.KubernetesOperatorFeatureBindings},
211271
Binding: &ngrokv1alpha1.KubernetesOperatorBinding{

0 commit comments

Comments
 (0)