Skip to content

Commit 8ae01c0

Browse files
committed
Add missing pieces for new dataplane key secret
1 parent 870ddef commit 8ae01c0

File tree

6 files changed

+67
-23
lines changed

6 files changed

+67
-23
lines changed

internal/controller/provisioner/handler.go

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -256,6 +256,8 @@ func (h *eventHandler) provisionResourceForAllGateways(
256256

257257
// deprovisionSecretsForAllGateways cleans up any secrets that a user deleted that were duplicated
258258
// for all Gateways. For example, NGINX Plus secrets.
259+
//
260+
//nolint:gocyclo // will refactor at some point
259261
func (h *eventHandler) deprovisionSecretsForAllGateways(ctx context.Context, secret string) error {
260262
var allErrs []error
261263

@@ -283,6 +285,10 @@ func (h *eventHandler) deprovisionSecretsForAllGateways(ctx context.Context, sec
283285
if err := h.provisioner.deleteObject(ctx, &corev1.Secret{ObjectMeta: resources.PlusClientSSLSecret}); err != nil {
284286
allErrs = append(allErrs, err)
285287
}
288+
case strings.HasSuffix(resources.DataplaneKeySecret.Name, secret):
289+
if err := h.provisioner.deleteObject(ctx, &corev1.Secret{ObjectMeta: resources.DataplaneKeySecret}); err != nil {
290+
allErrs = append(allErrs, err)
291+
}
286292
default:
287293
for _, dockerSecret := range resources.DockerSecrets {
288294
if strings.HasSuffix(dockerSecret.Name, secret) {

internal/controller/provisioner/handler_test.go

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,7 @@ func TestHandleEventBatch_Upsert(t *testing.T) {
2323
t.Parallel()
2424
g := NewWithT(t)
2525

26-
store := newStore([]string{dockerTestSecretName}, "", jwtTestSecretName, "", "")
26+
store := newStore([]string{dockerTestSecretName}, "", jwtTestSecretName, "", "", "")
2727
provisioner, fakeClient, _ := defaultNginxProvisioner()
2828
provisioner.cfg.StatusQueue = status.NewQueue()
2929

@@ -213,6 +213,7 @@ func TestHandleEventBatch_Delete(t *testing.T) {
213213
jwtTestSecretName,
214214
caTestSecretName,
215215
clientTestSecretName,
216+
nginxOneDataplaneKeySecretName,
216217
)
217218
provisioner, fakeClient, _ := defaultNginxProvisioner()
218219
provisioner.cfg.StatusQueue = status.NewQueue()

internal/controller/provisioner/provisioner.go

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -112,6 +112,7 @@ func NewNginxProvisioner(
112112
jwtSecretName,
113113
caSecretName,
114114
clientSSLSecretName,
115+
cfg.NginxOneConsoleTelemetryConfig.DataplaneKeySecretName,
115116
)
116117

117118
selector := metav1.LabelSelector{

internal/controller/provisioner/provisioner_test.go

Lines changed: 8 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -29,12 +29,13 @@ import (
2929
)
3030

3131
const (
32-
agentTLSTestSecretName = "agent-tls-secret"
33-
jwtTestSecretName = "jwt-secret"
34-
caTestSecretName = "ca-secret"
35-
clientTestSecretName = "client-secret"
36-
dockerTestSecretName = "docker-secret"
37-
ngfNamespace = "nginx-gateway"
32+
agentTLSTestSecretName = "agent-tls-secret"
33+
jwtTestSecretName = "jwt-secret"
34+
caTestSecretName = "ca-secret"
35+
clientTestSecretName = "client-secret"
36+
dockerTestSecretName = "docker-secret"
37+
ngfNamespace = "nginx-gateway"
38+
nginxOneDataplaneKeySecretName = "dataplane-key"
3839
)
3940

4041
func createScheme() *runtime.Scheme {
@@ -164,6 +165,7 @@ func defaultNginxProvisioner(
164165
jwtTestSecretName,
165166
caTestSecretName,
166167
clientTestSecretName,
168+
nginxOneDataplaneKeySecretName,
167169
),
168170
k8sClient: fakeClient,
169171
cfg: Config{

internal/controller/provisioner/store.go

Lines changed: 27 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -31,6 +31,7 @@ type NginxResources struct {
3131
PlusJWTSecret metav1.ObjectMeta
3232
PlusClientSSLSecret metav1.ObjectMeta
3333
PlusCASecret metav1.ObjectMeta
34+
DataplaneKeySecret metav1.ObjectMeta
3435
DockerSecrets []metav1.ObjectMeta
3536
}
3637

@@ -50,6 +51,9 @@ type store struct {
5051
caSecretName string
5152
clientSSLSecretName string
5253

54+
// NGINX One Dataplane key secret
55+
dataplaneKeySecretName string
56+
5357
lock sync.RWMutex
5458
}
5559

@@ -58,21 +62,23 @@ func newStore(
5862
agentTLSSecretName,
5963
jwtSecretName,
6064
caSecretName,
61-
clientSSLSecretName string,
65+
clientSSLSecretName,
66+
dataplaneKeySecretName string,
6267
) *store {
6368
dockerSecretNamesMap := make(map[string]struct{})
6469
for _, name := range dockerSecretNames {
6570
dockerSecretNamesMap[name] = struct{}{}
6671
}
6772

6873
return &store{
69-
gateways: make(map[types.NamespacedName]*gatewayv1.Gateway),
70-
nginxResources: make(map[types.NamespacedName]*NginxResources),
71-
dockerSecretNames: dockerSecretNamesMap,
72-
agentTLSSecretName: agentTLSSecretName,
73-
jwtSecretName: jwtSecretName,
74-
caSecretName: caSecretName,
75-
clientSSLSecretName: clientSSLSecretName,
74+
gateways: make(map[types.NamespacedName]*gatewayv1.Gateway),
75+
nginxResources: make(map[types.NamespacedName]*NginxResources),
76+
dockerSecretNames: dockerSecretNamesMap,
77+
agentTLSSecretName: agentTLSSecretName,
78+
jwtSecretName: jwtSecretName,
79+
caSecretName: caSecretName,
80+
clientSSLSecretName: clientSSLSecretName,
81+
dataplaneKeySecretName: dataplaneKeySecretName,
7682
}
7783
}
7884

@@ -226,6 +232,10 @@ func (s *store) registerSecretInGatewayConfig(obj *corev1.Secret, gatewayNSName
226232
s.nginxResources[gatewayNSName] = &NginxResources{
227233
PlusClientSSLSecret: obj.ObjectMeta,
228234
}
235+
case hasSuffix(obj.GetName(), s.dataplaneKeySecretName):
236+
s.nginxResources[gatewayNSName] = &NginxResources{
237+
DataplaneKeySecret: obj.ObjectMeta,
238+
}
229239
}
230240

231241
for secret := range s.dockerSecretNames {
@@ -246,6 +256,8 @@ func (s *store) registerSecretInGatewayConfig(obj *corev1.Secret, gatewayNSName
246256
cfg.PlusCASecret = obj.ObjectMeta
247257
case hasSuffix(obj.GetName(), s.clientSSLSecretName):
248258
cfg.PlusClientSSLSecret = obj.ObjectMeta
259+
case hasSuffix(obj.GetName(), s.dataplaneKeySecretName):
260+
cfg.DataplaneKeySecret = obj.ObjectMeta
249261
}
250262

251263
for secret := range s.dockerSecretNames {
@@ -357,6 +369,10 @@ func secretResourceMatches(resources *NginxResources, nsName types.NamespacedNam
357369
return true
358370
}
359371

372+
if resourceMatches(resources.DataplaneKeySecret, nsName) {
373+
return true
374+
}
375+
360376
return resourceMatches(resources.PlusCASecret, nsName)
361377
}
362378

@@ -437,6 +453,9 @@ func getResourceVersionForSecret(resources *NginxResources, secret *corev1.Secre
437453
if resources.PlusCASecret.GetName() == secret.GetName() {
438454
return resources.PlusCASecret.GetResourceVersion()
439455
}
456+
if resources.DataplaneKeySecret.GetName() == secret.GetName() {
457+
return resources.DataplaneKeySecret.GetResourceVersion()
458+
}
440459

441460
return ""
442461
}

internal/controller/provisioner/store_test.go

Lines changed: 23 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -23,21 +23,29 @@ func TestNewStore(t *testing.T) {
2323
t.Parallel()
2424
g := NewWithT(t)
2525

26-
store := newStore([]string{"docker-secret"}, "agent-tls-secret", "jwt-secret", "ca-secret", "client-ssl-secret")
26+
store := newStore(
27+
[]string{"docker-secret"},
28+
"agent-tls-secret",
29+
"jwt-secret",
30+
"ca-secret",
31+
"client-ssl-secret",
32+
"dataplane-key",
33+
)
2734

2835
g.Expect(store).NotTo(BeNil())
2936
g.Expect(store.dockerSecretNames).To(HaveKey("docker-secret"))
3037
g.Expect(store.agentTLSSecretName).To(Equal("agent-tls-secret"))
3138
g.Expect(store.jwtSecretName).To(Equal("jwt-secret"))
3239
g.Expect(store.caSecretName).To(Equal("ca-secret"))
3340
g.Expect(store.clientSSLSecretName).To(Equal("client-ssl-secret"))
41+
g.Expect(store.dataplaneKeySecretName).To(Equal("dataplane-key"))
3442
}
3543

3644
func TestUpdateGateway(t *testing.T) {
3745
t.Parallel()
3846
g := NewWithT(t)
3947

40-
store := newStore(nil, "", "", "", "")
48+
store := newStore(nil, "", "", "", "", "")
4149
gateway := &gatewayv1.Gateway{
4250
ObjectMeta: metav1.ObjectMeta{
4351
Name: "test-gateway",
@@ -56,7 +64,7 @@ func TestDeleteGateway(t *testing.T) {
5664
t.Parallel()
5765
g := NewWithT(t)
5866

59-
store := newStore(nil, "", "", "", "")
67+
store := newStore(nil, "", "", "", "", "")
6068
nsName := types.NamespacedName{Name: "test-gateway", Namespace: "default"}
6169
store.gateways[nsName] = &gatewayv1.Gateway{}
6270

@@ -70,7 +78,7 @@ func TestGetGateways(t *testing.T) {
7078
t.Parallel()
7179
g := NewWithT(t)
7280

73-
store := newStore(nil, "", "", "", "")
81+
store := newStore(nil, "", "", "", "", "")
7482
gateway1 := &gatewayv1.Gateway{
7583
ObjectMeta: metav1.ObjectMeta{
7684
Name: "test-gateway-1",
@@ -101,7 +109,14 @@ func TestRegisterResourceInGatewayConfig(t *testing.T) {
101109
t.Parallel()
102110
g := NewWithT(t)
103111

104-
store := newStore([]string{"docker-secret"}, "agent-tls-secret", "jwt-secret", "ca-secret", "client-ssl-secret")
112+
store := newStore(
113+
[]string{"docker-secret"},
114+
"agent-tls-secret",
115+
"jwt-secret",
116+
"ca-secret",
117+
"client-ssl-secret",
118+
"dataplane-key",
119+
)
105120
nsName := types.NamespacedName{Name: "test-gateway", Namespace: "default"}
106121

107122
registerAndGetResources := func(obj any) *NginxResources {
@@ -415,7 +430,7 @@ func TestDeleteResourcesForGateway(t *testing.T) {
415430
t.Parallel()
416431
g := NewWithT(t)
417432

418-
store := newStore(nil, "", "", "", "")
433+
store := newStore(nil, "", "", "", "", "")
419434
nsName := types.NamespacedName{Name: "test-gateway", Namespace: "default"}
420435
store.nginxResources[nsName] = &NginxResources{}
421436

@@ -427,7 +442,7 @@ func TestDeleteResourcesForGateway(t *testing.T) {
427442
func TestGatewayExistsForResource(t *testing.T) {
428443
t.Parallel()
429444

430-
store := newStore(nil, "", "", "", "")
445+
store := newStore(nil, "", "", "", "", "")
431446
gateway := &graph.Gateway{}
432447
store.nginxResources[types.NamespacedName{Name: "test-gateway", Namespace: "default"}] = &NginxResources{
433448
Gateway: gateway,
@@ -648,7 +663,7 @@ func TestGatewayExistsForResource(t *testing.T) {
648663
func TestGetResourceVersionForObject(t *testing.T) {
649664
t.Parallel()
650665

651-
store := newStore(nil, "", "", "", "")
666+
store := newStore(nil, "", "", "", "", "")
652667
nsName := types.NamespacedName{Name: "test-gateway", Namespace: "default"}
653668
store.nginxResources[nsName] = &NginxResources{
654669
Deployment: metav1.ObjectMeta{

0 commit comments

Comments
 (0)