Skip to content
This repository was archived by the owner on Jul 26, 2022. It is now read-only.

Commit 66af903

Browse files
Flydivernyjxpearce-godaddy
authored andcommitted
feat(secret): add ownerreference to remove created secret when external secret is removed (#95)
1 parent d04cf1d commit 66af903

File tree

3 files changed

+41
-10
lines changed

3 files changed

+41
-10
lines changed

lib/daemon.js

+14-4
Original file line numberDiff line numberDiff line change
@@ -30,14 +30,15 @@ class Daemon {
3030
this._pollers = {}
3131
}
3232

33-
_createPoller ({ namespace, secretDescriptors }) {
33+
_createPoller ({ namespace, secretDescriptors, ownerReference }) {
3434
return new Poller({
3535
backends: this._backends,
3636
intervalMilliseconds: this._pollerIntervalMilliseconds,
3737
kubeClient: this._kubeClient,
3838
logger: this._logger,
3939
namespace,
40-
secretDescriptors
40+
secretDescriptors,
41+
ownerReference
4142
})
4243
}
4344

@@ -52,7 +53,15 @@ class Daemon {
5253
// NOTE(jdaeli): hash this in case resource version becomes too long?
5354
const id = `${name}_${resourceVersion}`
5455
const secretDescriptors = [{ ...secretDescriptor, name }]
55-
return { id, namespace, secretDescriptors }
56+
const ownerReference = {
57+
apiVersion: object.apiVersion,
58+
controller: true,
59+
kind: object.kind,
60+
name: metadata.name,
61+
uid: metadata.uid
62+
}
63+
64+
return { id, namespace, secretDescriptors, ownerReference }
5665
}
5766

5867
/**
@@ -82,7 +91,8 @@ class Daemon {
8291

8392
const poller = this._createPoller({
8493
namespace: descriptor.namespace,
85-
secretDescriptors: descriptor.secretDescriptors
94+
secretDescriptors: descriptor.secretDescriptors,
95+
ownerReference: descriptor.ownerReference
8696
})
8797

8898
// handle duplicate ADDED events

lib/poller.js

+14-3
Original file line numberDiff line numberDiff line change
@@ -23,14 +23,22 @@ class Poller {
2323
* @param {string} namespace - Kubernetes namespace.
2424
* @param {SecretDescriptor[]} secretDescriptors - Kubernetes secret descriptors.
2525
*/
26-
constructor ({ backends, intervalMilliseconds, kubeClient, logger, namespace, secretDescriptors }) {
26+
constructor ({
27+
backends,
28+
intervalMilliseconds,
29+
kubeClient,
30+
logger,
31+
namespace,
32+
secretDescriptors,
33+
ownerReference
34+
}) {
2735
this._backends = backends
2836
this._intervalMilliseconds = intervalMilliseconds
2937
this._kubeClient = kubeClient
3038
this._logger = logger
3139
this._namespace = namespace
3240
this._secretDescriptors = secretDescriptors
33-
41+
this._ownerReference = ownerReference
3442
this._interval = null
3543
}
3644

@@ -46,7 +54,10 @@ class Poller {
4654
apiVersion: 'v1',
4755
kind: 'Secret',
4856
metadata: {
49-
name: secretDescriptor.name
57+
name: secretDescriptor.name,
58+
ownerReferences: [
59+
this._ownerReference
60+
]
5061
},
5162
type: 'Opaque',
5263
data

lib/poller.test.js

+13-3
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,14 @@ describe('Poller', () => {
1212
let loggerMock
1313
let poller
1414

15+
const ownerReference = {
16+
apiVersion: 'owner-api/v1',
17+
controller: true,
18+
kind: 'MyKind',
19+
name: 'fakeSecretName',
20+
uid: '4c10d879-2646-40dc-8595-d0b06b60a9ed'
21+
}
22+
1523
beforeEach(() => {
1624
backendMock = sinon.mock()
1725
kubeClientMock = sinon.mock()
@@ -27,7 +35,8 @@ describe('Poller', () => {
2735
intervalMilliseconds: 5000,
2836
kubeClient: kubeClientMock,
2937
logger: loggerMock,
30-
namespace: 'fakeNamespace'
38+
namespace: 'fakeNamespace',
39+
ownerReference
3140
})
3241
})
3342

@@ -72,7 +81,8 @@ describe('Poller', () => {
7281
apiVersion: 'v1',
7382
kind: 'Secret',
7483
metadata: {
75-
name: 'fakeSecretName'
84+
name: 'fakeSecretName',
85+
ownerReferences: [ownerReference]
7686
},
7787
type: 'Opaque',
7888
data: {
@@ -154,7 +164,7 @@ describe('Poller', () => {
154164
secretDescriptor: {
155165
backendType: 'fakeBackendType',
156166
name: 'fakeSecretName',
157-
properties: ['fakePropertyName1']
167+
properties: ['fakePropertyName']
158168
}
159169
}
160170
})

0 commit comments

Comments
 (0)