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

Commit

Permalink
feat(secret): add ownerreference to remove created secret when extern…
Browse files Browse the repository at this point in the history
…al secret is removed (#95)
  • Loading branch information
Flydiverny authored and jxpearce-godaddy committed Jun 21, 2019
1 parent d04cf1d commit 66af903
Show file tree
Hide file tree
Showing 3 changed files with 41 additions and 10 deletions.
18 changes: 14 additions & 4 deletions lib/daemon.js
Original file line number Diff line number Diff line change
Expand Up @@ -30,14 +30,15 @@ class Daemon {
this._pollers = {}
}

_createPoller ({ namespace, secretDescriptors }) {
_createPoller ({ namespace, secretDescriptors, ownerReference }) {
return new Poller({
backends: this._backends,
intervalMilliseconds: this._pollerIntervalMilliseconds,
kubeClient: this._kubeClient,
logger: this._logger,
namespace,
secretDescriptors
secretDescriptors,
ownerReference
})
}

Expand All @@ -52,7 +53,15 @@ class Daemon {
// NOTE(jdaeli): hash this in case resource version becomes too long?
const id = `${name}_${resourceVersion}`
const secretDescriptors = [{ ...secretDescriptor, name }]
return { id, namespace, secretDescriptors }
const ownerReference = {
apiVersion: object.apiVersion,
controller: true,
kind: object.kind,
name: metadata.name,
uid: metadata.uid
}

return { id, namespace, secretDescriptors, ownerReference }
}

/**
Expand Down Expand Up @@ -82,7 +91,8 @@ class Daemon {

const poller = this._createPoller({
namespace: descriptor.namespace,
secretDescriptors: descriptor.secretDescriptors
secretDescriptors: descriptor.secretDescriptors,
ownerReference: descriptor.ownerReference
})

// handle duplicate ADDED events
Expand Down
17 changes: 14 additions & 3 deletions lib/poller.js
Original file line number Diff line number Diff line change
Expand Up @@ -23,14 +23,22 @@ class Poller {
* @param {string} namespace - Kubernetes namespace.
* @param {SecretDescriptor[]} secretDescriptors - Kubernetes secret descriptors.
*/
constructor ({ backends, intervalMilliseconds, kubeClient, logger, namespace, secretDescriptors }) {
constructor ({
backends,
intervalMilliseconds,
kubeClient,
logger,
namespace,
secretDescriptors,
ownerReference
}) {
this._backends = backends
this._intervalMilliseconds = intervalMilliseconds
this._kubeClient = kubeClient
this._logger = logger
this._namespace = namespace
this._secretDescriptors = secretDescriptors

this._ownerReference = ownerReference
this._interval = null
}

Expand All @@ -46,7 +54,10 @@ class Poller {
apiVersion: 'v1',
kind: 'Secret',
metadata: {
name: secretDescriptor.name
name: secretDescriptor.name,
ownerReferences: [
this._ownerReference
]
},
type: 'Opaque',
data
Expand Down
16 changes: 13 additions & 3 deletions lib/poller.test.js
Original file line number Diff line number Diff line change
Expand Up @@ -12,6 +12,14 @@ describe('Poller', () => {
let loggerMock
let poller

const ownerReference = {
apiVersion: 'owner-api/v1',
controller: true,
kind: 'MyKind',
name: 'fakeSecretName',
uid: '4c10d879-2646-40dc-8595-d0b06b60a9ed'
}

beforeEach(() => {
backendMock = sinon.mock()
kubeClientMock = sinon.mock()
Expand All @@ -27,7 +35,8 @@ describe('Poller', () => {
intervalMilliseconds: 5000,
kubeClient: kubeClientMock,
logger: loggerMock,
namespace: 'fakeNamespace'
namespace: 'fakeNamespace',
ownerReference
})
})

Expand Down Expand Up @@ -72,7 +81,8 @@ describe('Poller', () => {
apiVersion: 'v1',
kind: 'Secret',
metadata: {
name: 'fakeSecretName'
name: 'fakeSecretName',
ownerReferences: [ownerReference]
},
type: 'Opaque',
data: {
Expand Down Expand Up @@ -154,7 +164,7 @@ describe('Poller', () => {
secretDescriptor: {
backendType: 'fakeBackendType',
name: 'fakeSecretName',
properties: ['fakePropertyName1']
properties: ['fakePropertyName']
}
}
})
Expand Down

0 comments on commit 66af903

Please sign in to comment.