From 7e0d65e243f0cdaf693903b913b7dede86908786 Mon Sep 17 00:00:00 2001 From: kyle-ruan Date: Fri, 27 Aug 2021 13:27:36 +1000 Subject: [PATCH] feat: delete parameters in ssm store --- .tool-versions | 2 +- lib/commands/configure/make-cleanup.js | 28 ++++++++ .../configure/make-populate-config.js | 2 +- .../configure/make-populate-secret.js | 2 +- .../configure/make-prompt-required-configs.js | 2 +- lib/commands/configure/prompt-for-values.js | 2 +- lib/commands/fetch/make-fetch.js | 2 +- lib/commands/import-export/make-export.js | 2 +- lib/commands/import-export/make-import.js | 2 +- lib/commands/init/make-init.js | 2 +- lib/commands/list/make-list.js | 2 +- lib/services/cf/get-outputs.js | 2 +- .../parameter-store/make-delete-parameters.js | 15 +++++ .../make-get-all-parameters.js | 15 +++++ .../parameter-store/make-get-parameters.js | 4 +- .../make-get-parameters.test.js | 2 +- .../make-get-provider-store.js | 2 +- .../parameter-store/make-parameter-store.js | 8 ++- .../stores/ssm/delete-parameters.js | 18 +++++ .../stores/ssm/delete-parameters.test.js | 23 +++++++ .../stores/ssm/get-all-parameters-by-path.js | 30 +++++++++ .../ssm/get-all-parameters-by-path.test.js | 66 +++++++++++++++++++ .../stores/ssm/get-batch-parameters.js | 2 +- ...js => make-get-all-parameters-by-names.js} | 6 +- ... make-get-all-parameters-by-names.test.js} | 6 +- .../stores/ssm/make-ssm-store.js | 24 +++++-- .../stores/ssm/make-ssm-store.test.js | 2 +- .../stores/ssm/make-update-configs.js | 12 ++-- .../stores/ssm/make-update-secrets.js | 12 ++-- lib/services/settings/get-account-id.js | 2 +- .../settings/get-validated-settings.js | 2 +- lib/services/settings/interpolate.js | 2 +- lib/services/settings/make-get-settings.js | 2 +- .../settings/make-settings-service.js | 2 +- mocks/ssm-provider.yml | 1 - package.json | 5 +- yarn.lock | 25 ------- 37 files changed, 264 insertions(+), 74 deletions(-) create mode 100644 lib/commands/configure/make-cleanup.js create mode 100644 lib/services/parameter-store/make-delete-parameters.js create mode 100644 lib/services/parameter-store/make-get-all-parameters.js create mode 100644 lib/services/parameter-store/stores/ssm/delete-parameters.js create mode 100644 lib/services/parameter-store/stores/ssm/delete-parameters.test.js create mode 100644 lib/services/parameter-store/stores/ssm/get-all-parameters-by-path.js create mode 100644 lib/services/parameter-store/stores/ssm/get-all-parameters-by-path.test.js rename lib/services/parameter-store/stores/ssm/{make-get-all-parameters.js => make-get-all-parameters-by-names.js} (72%) rename lib/services/parameter-store/stores/ssm/{make-get-all-parameters.test.js => make-get-all-parameters-by-names.test.js} (94%) diff --git a/.tool-versions b/.tool-versions index f510ffd..969733b 100644 --- a/.tool-versions +++ b/.tool-versions @@ -1,2 +1,2 @@ -nodejs 12.14.0 +nodejs 14.15.4 direnv 2.28.0 diff --git a/lib/commands/configure/make-cleanup.js b/lib/commands/configure/make-cleanup.js new file mode 100644 index 0000000..5f9a503 --- /dev/null +++ b/lib/commands/configure/make-cleanup.js @@ -0,0 +1,28 @@ +const get = require('lodash/get'); +const property = require('lodash/property'); + +const makeCleanup = ({ parameterStore }) => async ({ settings }) => { + const configPath = get(settings, 'config.path'); + const secretPath = get(settings, 'secret.path'); + const parameters = await Promise.all([ + parameterStore.getAllParameters({ path: configPath }), + parameterStore.getAllParameters({ path: secretPath }) + ]).then(([configs, secrets]) => [ + ...Object.values(configs), + ...Object.values(secrets) + ]); + + const { configParameters = [], secretParameters = [] } = settings; + const unusedParameters = parameters.filter( + ({ Name }) => ![...configParameters, ...secretParameters].includes(Name) + ); + + return ( + unusedParameters.length && + parameterStore.deleteParameters({ + parameterNames: unusedParameters.map(property('Name')) + }) + ); +}; + +module.exports = { makeCleanup }; diff --git a/lib/commands/configure/make-populate-config.js b/lib/commands/configure/make-populate-config.js index d43271b..ef9174e 100644 --- a/lib/commands/configure/make-populate-config.js +++ b/lib/commands/configure/make-populate-config.js @@ -1,4 +1,4 @@ -const get = require('lodash.get'); +const get = require('lodash/get'); const chalk = require('chalk'); const { log } = require('../../utils/logger'); diff --git a/lib/commands/configure/make-populate-secret.js b/lib/commands/configure/make-populate-secret.js index b70da3d..4962b09 100644 --- a/lib/commands/configure/make-populate-secret.js +++ b/lib/commands/configure/make-populate-secret.js @@ -1,5 +1,5 @@ const chalk = require('chalk'); -const get = require('lodash.get'); +const get = require('lodash/get'); const { log } = require('../../utils/logger'); diff --git a/lib/commands/configure/make-prompt-required-configs.js b/lib/commands/configure/make-prompt-required-configs.js index c52b9ce..bea2ea2 100644 --- a/lib/commands/configure/make-prompt-required-configs.js +++ b/lib/commands/configure/make-prompt-required-configs.js @@ -1,5 +1,5 @@ // TODO: this file needs a lot of tests -const get = require('lodash.get'); +const get = require('lodash/get'); const { promptForValues } = require('./prompt-for-values'); const { validateExistingValues } = require('./validate-existing-values'); diff --git a/lib/commands/configure/prompt-for-values.js b/lib/commands/configure/prompt-for-values.js index b84a9b1..19cb9f4 100644 --- a/lib/commands/configure/prompt-for-values.js +++ b/lib/commands/configure/prompt-for-values.js @@ -1,4 +1,4 @@ -const get = require('lodash.get'); +const get = require('lodash/get'); const chalk = require('chalk'); const prompt = require('prompt'); diff --git a/lib/commands/fetch/make-fetch.js b/lib/commands/fetch/make-fetch.js index 66dab89..1411c6a 100644 --- a/lib/commands/fetch/make-fetch.js +++ b/lib/commands/fetch/make-fetch.js @@ -1,4 +1,4 @@ -const get = require('lodash.get'); +const get = require('lodash/get'); const makeFetch = ({ parameterStore, settingsService }) => ({ keys }) => settingsService diff --git a/lib/commands/import-export/make-export.js b/lib/commands/import-export/make-export.js index fd5cf13..7bbc7a2 100644 --- a/lib/commands/import-export/make-export.js +++ b/lib/commands/import-export/make-export.js @@ -1,5 +1,5 @@ const chalk = require('chalk'); -const get = require('lodash.get'); +const get = require('lodash/get'); const fs = require('fs'); const { log } = require('../../utils/logger'); diff --git a/lib/commands/import-export/make-import.js b/lib/commands/import-export/make-import.js index c39f933..f1cc400 100644 --- a/lib/commands/import-export/make-import.js +++ b/lib/commands/import-export/make-import.js @@ -1,5 +1,5 @@ const chalk = require('chalk'); -const get = require('lodash.get'); +const get = require('lodash/get'); const fs = require('fs'); const { log } = require('../../utils/logger'); diff --git a/lib/commands/init/make-init.js b/lib/commands/init/make-init.js index a5450d6..7db52e4 100644 --- a/lib/commands/init/make-init.js +++ b/lib/commands/init/make-init.js @@ -1,4 +1,4 @@ -const get = require('lodash.get'); +const get = require('lodash/get'); const chalk = require('chalk'); const { log } = require('../../utils/logger'); diff --git a/lib/commands/list/make-list.js b/lib/commands/list/make-list.js index c37b473..d0ff762 100644 --- a/lib/commands/list/make-list.js +++ b/lib/commands/list/make-list.js @@ -1,5 +1,5 @@ const chalk = require('chalk'); -const get = require('lodash.get'); +const get = require('lodash/get'); const { log } = require('../../utils/logger'); const { listParameters } = require('./list-parameters'); diff --git a/lib/services/cf/get-outputs.js b/lib/services/cf/get-outputs.js index 9a2b54d..8745df0 100644 --- a/lib/services/cf/get-outputs.js +++ b/lib/services/cf/get-outputs.js @@ -1,4 +1,4 @@ -const get = require('lodash.get'); +const get = require('lodash/get'); const AWS = require('aws-sdk'); AWS.config.update({ region: 'us-east-1' }); diff --git a/lib/services/parameter-store/make-delete-parameters.js b/lib/services/parameter-store/make-delete-parameters.js new file mode 100644 index 0000000..80b6f7b --- /dev/null +++ b/lib/services/parameter-store/make-delete-parameters.js @@ -0,0 +1,15 @@ +const chalk = require('chalk'); +const { log } = require('../../utils/logger'); + +const makeDeleteParameters = ({ getProviderStore }) => async ({ + parameterNames +}) => { + log(chalk.gray(`Deleting unused parameters...`)); + const providerStore = await getProviderStore(); + + return providerStore + .deleteParameters({ parameterNames }) + .then(() => log(chalk.gray('Parameters deleted'))); +}; + +module.exports = { makeDeleteParameters }; diff --git a/lib/services/parameter-store/make-get-all-parameters.js b/lib/services/parameter-store/make-get-all-parameters.js new file mode 100644 index 0000000..8245e69 --- /dev/null +++ b/lib/services/parameter-store/make-get-all-parameters.js @@ -0,0 +1,15 @@ +const { sortParameters } = require('./sort-parameters'); + +const makeGetAllParameters = ({ getProviderStore }) => async ({ path }) => { + if (!path) { + throw new Error('Missing path!'); + } + + const providerStore = await getProviderStore(); + + const parameters = await providerStore.getAllParametersByPath({ path }); + + return sortParameters(parameters); +}; + +module.exports = { makeGetAllParameters }; diff --git a/lib/services/parameter-store/make-get-parameters.js b/lib/services/parameter-store/make-get-parameters.js index 732ab18..4318836 100644 --- a/lib/services/parameter-store/make-get-parameters.js +++ b/lib/services/parameter-store/make-get-parameters.js @@ -8,7 +8,9 @@ const makeGetParameters = ({ getProviderStore }) => ({ } return getProviderStore() - .then(providerStore => providerStore.getAllParameters({ parameterNames })) + .then(providerStore => + providerStore.getAllParametersByNames({ parameterNames }) + ) .then(sortParameters); }; diff --git a/lib/services/parameter-store/make-get-parameters.test.js b/lib/services/parameter-store/make-get-parameters.test.js index 7302c25..26d6099 100644 --- a/lib/services/parameter-store/make-get-parameters.test.js +++ b/lib/services/parameter-store/make-get-parameters.test.js @@ -10,7 +10,7 @@ const { makeGetParameters } = require('./make-get-parameters'); const getParameters = makeGetParameters({ getProviderStore: () => Promise.resolve({ - getAllParameters: mockGetAllParameters + getAllParametersByNames: mockGetAllParameters }) }); describe('getParameters', () => { diff --git a/lib/services/parameter-store/make-get-provider-store.js b/lib/services/parameter-store/make-get-provider-store.js index 7fe9998..ed2151c 100644 --- a/lib/services/parameter-store/make-get-provider-store.js +++ b/lib/services/parameter-store/make-get-provider-store.js @@ -1,4 +1,4 @@ -const get = require('lodash.get'); +const get = require('lodash/get'); const { makeSsmStore } = require('./stores/ssm/make-ssm-store'); const makeGetProviderStore = ({ settingsService }) => () => diff --git a/lib/services/parameter-store/make-parameter-store.js b/lib/services/parameter-store/make-parameter-store.js index 4ba5a2f..476f866 100644 --- a/lib/services/parameter-store/make-parameter-store.js +++ b/lib/services/parameter-store/make-parameter-store.js @@ -2,17 +2,23 @@ const { makeGetProviderStore } = require('./make-get-provider-store'); const { makeUpdateSecrets } = require('./make-update-secrets'); const { makeUpdateConfigs } = require('./make-update-configs'); const { makeGetParameters } = require('./make-get-parameters'); +const { makeGetAllParameters } = require('./make-get-all-parameters'); +const { makeDeleteParameters } = require('./make-delete-parameters'); const makeParameterStore = ({ settingsService }) => { const getProviderStore = makeGetProviderStore({ settingsService }); const updateSecrets = makeUpdateSecrets({ getProviderStore }); const updateConfigs = makeUpdateConfigs({ getProviderStore }); const getParameters = makeGetParameters({ getProviderStore }); + const getAllParameters = makeGetAllParameters({ getProviderStore }); + const deleteParameters = makeDeleteParameters({ getProviderStore }); return { updateConfigs, updateSecrets, - getParameters + getParameters, + getAllParameters, + deleteParameters }; }; diff --git a/lib/services/parameter-store/stores/ssm/delete-parameters.js b/lib/services/parameter-store/stores/ssm/delete-parameters.js new file mode 100644 index 0000000..c6c85d8 --- /dev/null +++ b/lib/services/parameter-store/stores/ssm/delete-parameters.js @@ -0,0 +1,18 @@ +const chunk = require('lodash/chunk'); +const { getSsmClient } = require('./get-ssm-client'); + +const deleteParameters = ({ parameterNames }) => { + const ssm = getSsmClient(); + + const chunks = chunk(parameterNames, 10); + const promises = chunks.map(chunkedParameterNames => + ssm + .deleteParameters({ + Names: chunkedParameterNames + }) + .promise() + ); + return Promise.all(promises); +}; + +module.exports = { deleteParameters }; diff --git a/lib/services/parameter-store/stores/ssm/delete-parameters.test.js b/lib/services/parameter-store/stores/ssm/delete-parameters.test.js new file mode 100644 index 0000000..805655e --- /dev/null +++ b/lib/services/parameter-store/stores/ssm/delete-parameters.test.js @@ -0,0 +1,23 @@ +const mockDeleteParameters = jest.fn().mockImplementation(() => ({ + promise: () => Promise.resolve({}) +})); + +const AWS = require('aws-sdk'); + +AWS.SSM.mockImplementation(() => ({ + deleteParameters: mockDeleteParameters +})); + +const { makeSsmStore } = require('./make-ssm-store'); + +describe('deleteParameters', () => { + it('should delete parameters in batches', async () => { + const parameterNames = [...Array(35).keys()].map(key => `/test/${key}`); + + const ssm = makeSsmStore(); + + await ssm.deleteParameters({ parameterNames }); + + expect(mockDeleteParameters.mock.calls.length).toEqual(4); + }); +}); diff --git a/lib/services/parameter-store/stores/ssm/get-all-parameters-by-path.js b/lib/services/parameter-store/stores/ssm/get-all-parameters-by-path.js new file mode 100644 index 0000000..b9b2d78 --- /dev/null +++ b/lib/services/parameter-store/stores/ssm/get-all-parameters-by-path.js @@ -0,0 +1,30 @@ +const { getSsmClient } = require('./get-ssm-client'); + +const ssm = getSsmClient(); + +const getParametersByPathRecursively = async params => { + const data = await ssm.getParametersByPath(params).promise(); + + let parameters = data.Parameters || []; + + if (data.NextToken) { + const nextParameters = await getParametersByPathRecursively({ + ...params, + NextToken: data.NextToken + }); + parameters = parameters.concat(nextParameters); + } + + return parameters; +}; + +const getAllParametersByPath = async ({ path }) => { + const allParameters = await getParametersByPathRecursively({ + Path: path, + Recursive: true + }); + + return allParameters; +}; + +module.exports = { getAllParametersByPath }; diff --git a/lib/services/parameter-store/stores/ssm/get-all-parameters-by-path.test.js b/lib/services/parameter-store/stores/ssm/get-all-parameters-by-path.test.js new file mode 100644 index 0000000..2872161 --- /dev/null +++ b/lib/services/parameter-store/stores/ssm/get-all-parameters-by-path.test.js @@ -0,0 +1,66 @@ +const mockGetParametersByPath = jest + .fn() + .mockImplementationOnce(() => ({ + promise: () => + Promise.resolve({ + Parameters: [ + { + Name: 'TEST/ONE', + Value: '1' + } + ], + NextToken: 'first-token' + }) + })) + .mockImplementationOnce(() => ({ + promise: () => + Promise.resolve({ + Parameters: [ + { + Name: 'TEST/TWO', + Value: '2' + } + ], + NextToken: 'second-token' + }) + })) + .mockImplementationOnce(() => ({ + promise: () => + Promise.resolve({ + Parameters: [ + { + Name: 'TEST/THREE', + Value: '1' + } + ] + }) + })); + +const AWS = require('aws-sdk'); + +AWS.SSM.mockImplementation(() => ({ + getParametersByPath: mockGetParametersByPath +})); + +const { makeSsmStore } = require('./make-ssm-store'); + +describe('getAllParameterByPath', () => { + it('should get parameters recursively', async () => { + const ssm = makeSsmStore(); + const parameters = await ssm.getAllParametersByPath({ path: 'TEST' }); + expect(parameters).toEqual([ + { + Name: 'TEST/ONE', + Value: '1' + }, + { + Name: 'TEST/TWO', + Value: '2' + }, + { + Name: 'TEST/THREE', + Value: '1' + } + ]); + }); +}); diff --git a/lib/services/parameter-store/stores/ssm/get-batch-parameters.js b/lib/services/parameter-store/stores/ssm/get-batch-parameters.js index b501e07..70bec52 100644 --- a/lib/services/parameter-store/stores/ssm/get-batch-parameters.js +++ b/lib/services/parameter-store/stores/ssm/get-batch-parameters.js @@ -1,4 +1,4 @@ -const get = require('lodash.get'); +const get = require('lodash/get'); const { getSsmClient } = require('./get-ssm-client'); const getParametersFromSSM = ({ parameterNames }) => { diff --git a/lib/services/parameter-store/stores/ssm/make-get-all-parameters.js b/lib/services/parameter-store/stores/ssm/make-get-all-parameters-by-names.js similarity index 72% rename from lib/services/parameter-store/stores/ssm/make-get-all-parameters.js rename to lib/services/parameter-store/stores/ssm/make-get-all-parameters-by-names.js index 63358df..6156038 100644 --- a/lib/services/parameter-store/stores/ssm/make-get-all-parameters.js +++ b/lib/services/parameter-store/stores/ssm/make-get-all-parameters-by-names.js @@ -1,6 +1,6 @@ -const get = require('lodash.get'); +const get = require('lodash/get'); -const makeGetAllParameters = ({ loader }) => ({ parameterNames }) => +const makeGetAllParametersByNames = ({ loader }) => ({ parameterNames }) => loader.loadMany(parameterNames).then(parameters => parameters.reduce((acc, parameter, index) => { const parameterPath = get(parameterNames, index) || ''; @@ -18,5 +18,5 @@ const makeGetAllParameters = ({ loader }) => ({ parameterNames }) => ); module.exports = { - makeGetAllParameters + makeGetAllParametersByNames }; diff --git a/lib/services/parameter-store/stores/ssm/make-get-all-parameters.test.js b/lib/services/parameter-store/stores/ssm/make-get-all-parameters-by-names.test.js similarity index 94% rename from lib/services/parameter-store/stores/ssm/make-get-all-parameters.test.js rename to lib/services/parameter-store/stores/ssm/make-get-all-parameters-by-names.test.js index fbd9b3d..121d014 100644 --- a/lib/services/parameter-store/stores/ssm/make-get-all-parameters.test.js +++ b/lib/services/parameter-store/stores/ssm/make-get-all-parameters-by-names.test.js @@ -67,13 +67,13 @@ AWS.SSM.mockImplementation(() => ({ const { makeSsmStore } = require('./make-ssm-store'); -describe('getAllParameters', () => { +describe('getAllParametersByNames', () => { let resultPromise; beforeAll(() => { const ssmStore = makeSsmStore(); - const { getAllParameters } = ssmStore; - resultPromise = getAllParameters({ + const { getAllParametersByNames } = ssmStore; + resultPromise = getAllParametersByNames({ parameterNames: [ 'TEST/ONE', 'TEST/TWO', diff --git a/lib/services/parameter-store/stores/ssm/make-ssm-store.js b/lib/services/parameter-store/stores/ssm/make-ssm-store.js index 73314b1..ace1408 100644 --- a/lib/services/parameter-store/stores/ssm/make-ssm-store.js +++ b/lib/services/parameter-store/stores/ssm/make-ssm-store.js @@ -2,19 +2,33 @@ const DataLoader = require('dataloader'); const { makeUpdateConfigs } = require('./make-update-configs'); const { makeUpdateSecrets } = require('./make-update-secrets'); const { getBatchParameters } = require('./get-batch-parameters'); -const { makeGetAllParameters } = require('./make-get-all-parameters'); +const { + makeGetAllParametersByNames +} = require('./make-get-all-parameters-by-names'); +const { getAllParametersByPath } = require('./get-all-parameters-by-path'); +const { deleteParameters } = require('./delete-parameters'); const makeSsmStore = () => { const ssmLoader = new DataLoader(keys => getBatchParameters({ parameterNames: keys }) ); - const getAllParameters = makeGetAllParameters({ loader: ssmLoader }); + const getAllParametersByNames = makeGetAllParametersByNames({ + loader: ssmLoader + }); const getLatestVersion = key => ssmLoader.load(key); return { - getAllParameters, - updateConfigs: makeUpdateConfigs({ getAllParameters, getLatestVersion }), - updateSecrets: makeUpdateSecrets({ getAllParameters, getLatestVersion }) + getAllParametersByPath, + getAllParametersByNames, + updateConfigs: makeUpdateConfigs({ + getAllParametersByNames, + getLatestVersion + }), + updateSecrets: makeUpdateSecrets({ + getAllParametersByNames, + getLatestVersion + }), + deleteParameters }; }; diff --git a/lib/services/parameter-store/stores/ssm/make-ssm-store.test.js b/lib/services/parameter-store/stores/ssm/make-ssm-store.test.js index 39a61cb..a9a0a50 100644 --- a/lib/services/parameter-store/stores/ssm/make-ssm-store.test.js +++ b/lib/services/parameter-store/stores/ssm/make-ssm-store.test.js @@ -4,7 +4,7 @@ describe('makeSsmStore', () => { it('should make an instance of ssm store', () => { const ssmStore = makeSsmStore({ tableName: 'theTable' }); - expect(ssmStore).toHaveProperty('getAllParameters'); + expect(ssmStore).toHaveProperty('getAllParametersByNames'); expect(ssmStore).toHaveProperty('updateConfigs'); expect(ssmStore).toHaveProperty('updateSecrets'); }); diff --git a/lib/services/parameter-store/stores/ssm/make-update-configs.js b/lib/services/parameter-store/stores/ssm/make-update-configs.js index 67b1783..199ade2 100644 --- a/lib/services/parameter-store/stores/ssm/make-update-configs.js +++ b/lib/services/parameter-store/stores/ssm/make-update-configs.js @@ -1,4 +1,4 @@ -const get = require('lodash.get'); +const get = require('lodash/get'); const { getSsmClient } = require('./get-ssm-client'); const makeUpdateConfig = ({ getLatestVersion, onComplete }) => async ({ @@ -30,12 +30,12 @@ const makeUpdateConfig = ({ getLatestVersion, onComplete }) => async ({ .then(onComplete); }; -const makeUpdateConfigs = ({ getAllParameters, getLatestVersion }) => async ({ - parameters, - onComplete = () => Promise.resolve() -}) => { +const makeUpdateConfigs = ({ + getAllParametersByNames, + getLatestVersion +}) => async ({ parameters, onComplete = () => Promise.resolve() }) => { const parameterNames = Object.keys(parameters); - await getAllParameters({ parameterNames }); // to cache dataloader; + await getAllParametersByNames({ parameterNames }); // to cache dataloader; const updateConfig = makeUpdateConfig({ getLatestVersion, onComplete }); diff --git a/lib/services/parameter-store/stores/ssm/make-update-secrets.js b/lib/services/parameter-store/stores/ssm/make-update-secrets.js index be1c74d..0989662 100644 --- a/lib/services/parameter-store/stores/ssm/make-update-secrets.js +++ b/lib/services/parameter-store/stores/ssm/make-update-secrets.js @@ -1,4 +1,4 @@ -const get = require('lodash.get'); +const get = require('lodash/get'); const { getSsmClient } = require('./get-ssm-client'); const makeUpdateSecret = ({ getLatestVersion, onComplete }) => async ({ @@ -31,12 +31,12 @@ const makeUpdateSecret = ({ getLatestVersion, onComplete }) => async ({ .then(onComplete); }; -const makeUpdateSecrets = ({ getLatestVersion, getAllParameters }) => async ({ - parameters, - onComplete = () => Promise.resolve() -}) => { +const makeUpdateSecrets = ({ + getLatestVersion, + getAllParametersByNames +}) => async ({ parameters, onComplete = () => Promise.resolve() }) => { const parameterNames = Object.keys(parameters); - await getAllParameters({ parameterNames }); // to cache dataloader; + await getAllParametersByNames({ parameterNames }); // to cache dataloader; const updateSecrets = makeUpdateSecret({ getLatestVersion, onComplete }); diff --git a/lib/services/settings/get-account-id.js b/lib/services/settings/get-account-id.js index 2a1e5f7..29573eb 100644 --- a/lib/services/settings/get-account-id.js +++ b/lib/services/settings/get-account-id.js @@ -1,5 +1,5 @@ const AWS = require('aws-sdk'); -const get = require('lodash.get'); +const get = require('lodash/get'); AWS.config.update({ region: 'us-east-1' }); diff --git a/lib/services/settings/get-validated-settings.js b/lib/services/settings/get-validated-settings.js index 9f9d674..50c7ba5 100644 --- a/lib/services/settings/get-validated-settings.js +++ b/lib/services/settings/get-validated-settings.js @@ -1,4 +1,4 @@ -const get = require('lodash.get'); +const get = require('lodash/get'); const ALLOWED_PROVIDERS = ['ssm', 'ddb']; diff --git a/lib/services/settings/interpolate.js b/lib/services/settings/interpolate.js index d4dacec..9a88842 100644 --- a/lib/services/settings/interpolate.js +++ b/lib/services/settings/interpolate.js @@ -1,4 +1,4 @@ -const template = require('lodash.template'); +const template = require('lodash/template'); const interpolate = ({ value, variables }) => template(value)(variables); diff --git a/lib/services/settings/make-get-settings.js b/lib/services/settings/make-get-settings.js index d6579f4..5dafe25 100644 --- a/lib/services/settings/make-get-settings.js +++ b/lib/services/settings/make-get-settings.js @@ -1,4 +1,4 @@ -const get = require('lodash.get'); +const get = require('lodash/get'); const deepMap = require('deep-map'); const { readFile } = require('./fs/readFile'); const { interpolate } = require('./interpolate'); diff --git a/lib/services/settings/make-settings-service.js b/lib/services/settings/make-settings-service.js index 2b3eed3..4a5905f 100644 --- a/lib/services/settings/make-settings-service.js +++ b/lib/services/settings/make-settings-service.js @@ -1,4 +1,4 @@ -const get = require('lodash.get'); +const get = require('lodash/get'); const { makeGetSettings } = require('./make-get-settings'); const { makeMemoizedGetSettings } = require('./make-memoized-get-settings'); diff --git a/mocks/ssm-provider.yml b/mocks/ssm-provider.yml index 0ca24e8..58f680e 100644 --- a/mocks/ssm-provider.yml +++ b/mocks/ssm-provider.yml @@ -15,4 +15,3 @@ secret: path: /${stage}/oprah/secret required: DB_PASSWORD: "secret database password" - diff --git a/package.json b/package.json index 74d280f..8556049 100644 --- a/package.json +++ b/package.json @@ -40,8 +40,7 @@ "deep-map": "^2.0.0", "es6-weak-map": "^2.0.3", "js-yaml": "^4.0.0", - "lodash.get": "^4.4.2", - "lodash.template": "^4.5.0", + "lodash": "^4.17.21", "prompt": "^1.1.0", "root-path": "^0.2.1" }, @@ -59,4 +58,4 @@ "pinst": "^2.1.6", "prettier": "^1.18.2" } -} \ No newline at end of file +} diff --git a/yarn.lock b/yarn.lock index 62904eb..d31cd66 100644 --- a/yarn.lock +++ b/yarn.lock @@ -3570,36 +3570,11 @@ locate-path@^6.0.0: dependencies: p-locate "^5.0.0" -lodash._reinterpolate@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/lodash._reinterpolate/-/lodash._reinterpolate-3.0.0.tgz#0ccf2d89166af03b3663c796538b75ac6e114d9d" - integrity sha1-DM8tiRZq8Ds2Y8eWU4t1rG4RTZ0= - -lodash.get@^4.4.2: - version "4.4.2" - resolved "https://registry.yarnpkg.com/lodash.get/-/lodash.get-4.4.2.tgz#2d177f652fa31e939b4438d5341499dfa3825e99" - integrity sha1-LRd/ZS+jHpObRDjVNBSZ36OCXpk= - lodash.sortby@^4.7.0: version "4.7.0" resolved "https://registry.yarnpkg.com/lodash.sortby/-/lodash.sortby-4.7.0.tgz#edd14c824e2cc9c1e0b0a1b42bb5210516a42438" integrity sha1-7dFMgk4sycHgsKG0K7UhBRakJDg= -lodash.template@^4.5.0: - version "4.5.0" - resolved "https://registry.yarnpkg.com/lodash.template/-/lodash.template-4.5.0.tgz#f976195cf3f347d0d5f52483569fe8031ccce8ab" - integrity sha512-84vYFxIkmidUiFxidA/KjjH9pAycqW+h980j7Fuz5qxRtO9pgB7MDFTdys1N7A5mcucRiDyEq4fusljItR1T/A== - dependencies: - lodash._reinterpolate "^3.0.0" - lodash.templatesettings "^4.0.0" - -lodash.templatesettings@^4.0.0: - version "4.2.0" - resolved "https://registry.yarnpkg.com/lodash.templatesettings/-/lodash.templatesettings-4.2.0.tgz#e481310f049d3cf6d47e912ad09313b154f0fb33" - integrity sha512-stgLz+i3Aa9mZgnjr/O+v9ruKZsPsndy7qPZOchbqk2cnTU1ZaldKK+v7m54WoKIyxiuMZTKT2H81F8BeAc3ZQ== - dependencies: - lodash._reinterpolate "^3.0.0" - lodash@^4.17.11, lodash@^4.17.15, lodash@^4.17.19, lodash@^4.17.20, lodash@^4.17.21: version "4.17.21" resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.21.tgz#679591c564c3bffaae8454cf0b3df370c3d6911c"