Skip to content

Commit

Permalink
Merge branch 'develop'
Browse files Browse the repository at this point in the history
  • Loading branch information
cwdcwd committed Dec 17, 2021
2 parents 35e9e28 + aea2874 commit 8645192
Show file tree
Hide file tree
Showing 4 changed files with 37 additions and 16 deletions.
2 changes: 1 addition & 1 deletion package.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
{
"name": "@opentorc/config-wrapper",
"version": "1.1.1",
"version": "1.1.2",
"description": "config management wrapper",
"main": "./src/index.js",
"bin": {
Expand Down
9 changes: 5 additions & 4 deletions src/cli.js
Original file line number Diff line number Diff line change
Expand Up @@ -81,13 +81,14 @@ async function saveParamsFile(config) {
console.log(chalk.green(`saving '${path}' out to ${config.outfile}`))
const results = await configWrapper.awsManager.getParametersByService(config.env, config.service, true)

if (results?.Parameters?.length > 0) {
const params = results.Parameters.map((param) => {
return { key: param.Name.replace(`${path}/`,''), value: param.Value }
if (Object.keys(results)?.length > 0) {
const params = Object.keys(results).map((key) => {
const param = results[key]
return { key: param.name, value: param.value }
})

configWrapper.envLoader.paramsToSourceFile(params, config.outfile)
console.log(chalk.green(`Saved ${results.Parameters.length} parameters to ${config.outfile}`))
console.log(chalk.green(`Saved ${Object.keys(results).length} parameters to ${config.outfile}`))
} else {
console.log(chalk.red('No parameters found'))
throw new Error(chalk.red('No parameters found'))
Expand Down
30 changes: 26 additions & 4 deletions src/lib/awsManager.js
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,20 @@ function constructParamPath(env, service, paramName) {
return `${BASE_PATH}/${env}/${service}${paramName?'/'+paramName:''}`
}

function restructureParam(param) {
// console.log(`Restructuring parameter ${JSON.stringify(param)}`)
const newParam = {
name: param.Name.split('/').pop(),
fullName: param.Name,
value: param.Value,
version: param.Version,
lastModifiedDate: param.LastModifiedDate,
type: param.Type
}

return newParam
}

async function getParameter(env, service, paramName, isEncrypted) {
const Name = constructParamPath(env, service, paramName)
const params = {
Expand All @@ -16,7 +30,7 @@ async function getParameter(env, service, paramName, isEncrypted) {
};

const data = await ssm.getParameter(params).promise()
return data
return restructureParam(data?.Parameter)
}

async function getParametersByService(env, service, isEncrypted) {
Expand All @@ -29,7 +43,15 @@ async function getParametersByService(env, service, isEncrypted) {
};

const params = await ssm.getParametersByPath(config).promise()
return params

const convertedParams = {}

for (let i = 0; i < params.Parameters.length; i++) {
const param = restructureParam(params.Parameters[i])
convertedParams[param.name] = param
}

return convertedParams
}

// TODO: add param caching
Expand All @@ -44,14 +66,14 @@ async function setParameter(param, env, service, isEncrypted, canOverwrite) {
Type: isEncrypted ? 'SecureString' : 'String',
Overwrite: canOverwrite
};
console.log(`Setting parameter ${Name} = ${Value}`)
// console.log(`Setting parameter ${Name} = ${Value}`)
const data = await ssm.putParameter(params).promise()
console.log(data)
return data
}

async function setParametersByService(params, env, service) {
console.log(`Setting parameters ${JSON.stringify(params)}`)
// console.log(`Setting parameters ${JSON.stringify(params)}`)
const data = []

for (let i = 0; i < params.length; i++) {
Expand Down
12 changes: 5 additions & 7 deletions tests/index.js
Original file line number Diff line number Diff line change
Expand Up @@ -129,28 +129,26 @@ describe('awsManager', async () => {
describe('getParameter', async () => {
it('should get a parameter from AWS', async () => {
const param = await awsManager.getParameter(env, service, aParams[0].key)
param.Parameter.Value.should.equal(aParams[0].value)
param.value.should.equal(aParams[0].value)
})
})

describe('getParameter with secret', async () => {
it('should get a secret parameter from AWS', async () => {
const param = await awsManager.getParameter(env, service, aParams[2].key, true)
param.Parameter.Value.should.equal(aParams[2].value)
param.value.should.equal(aParams[2].value)
})
})

describe('getParametersByService', async () => {
it('should get all the parameters by env and service', async () => {
const params = await awsManager.getParametersByService(env, service, true)

console.log(params)
for (let i = 0; i < aParams.length; i++) {
const found = params.Parameters.find(param => {
return param.Name === `/torc/${env}/${service}/${aParams[i].key}`
})
const found = params[aParams[i].key]

should.exist(found)
found.Value.should.equal(aParams[i].value)
found.value.should.equal(aParams[i].value)
}
})
})
Expand Down

0 comments on commit 8645192

Please sign in to comment.