# MDP in customers-service steps
## Table of Contents
[TOC]
## Package.json
```
"debug": "source .env.local && SLS_DEBUG=* node --inspect ./node_modules/.bin/serverless offline start",
"slsoffline": "source .env.local && SLS_DEBUG=* npx sls offline start",
"infra:up": "source .env.local && npx babel-node ./setup-local up && npm run slsoffline",
"infra:down": "source .env.local && npx babel-node ./setup-local down",
"mdp-network:up": "docker-compose -f ./node_modules/mdp/mdp-network/docker-compose.yml up",
"mdp-network:down": "docker-compose -f ./node_modules/mdp/mdp-network/docker-compose.yml down"
```
## env.local
```
export AWS_STAGE=local
export AWS_REGION=eu-west-1
export BUILD_VERSION='test'
export BUILD_ID='test'
export BUILD_COMMIT='test'
export billingEngineStreamArn=arn:aws:kinesis:us-east-1:000000000000:stream/billing-engine-local
export usersStreamArn=arn:aws:kinesis:us-east-1:000000000000:stream/users-local
export juniferEnabled=true
export juniferSmartMetersEnabled=true
export juniferPaymentMethodDDVEnabled=true
export juniferPaymentMethodDDFEnabled=true
export juniferPaymentMethodONDEMANDEnabled=true
export juniferEVEnabled=false
export juniferPaymentMethodPAYGEnabled=false
export bankAccountsApiKeySecretId=bankAccountsApiKeySecretId
```
## setup-local.js
```
import {
serverlessYaml,
kinesis,
report,
secretsmanager
} from 'mdp'
const up = async () => {
await serverlessYaml.up(`${__dirname}`)
const bankAccountsApiKeySecret = await secretsmanager.createSecret({
Name: 'bankAccountsApiKeySecretId',
SecretString: JSON.stringify({
key: '6Lh9wAF0UY3kBq3IhVxOQ64bnuVHaSsA92zKrKYF'
})
})
const usersStream = await kinesis.createStream({ StreamName: `users-${process.env.AWS_STAGE}` })
const billingEngineStream = await kinesis.createStream({ StreamName: `billing-engine-${process.env.AWS_STAGE}` })
report('CUSTOM PROVISIONER', [
usersStream,
billingEngineStream,
bankAccountsApiKeySecret
])
}
const down = async () => {
await serverlessYaml.down(`${__dirname}`)
const bankAccountsApiKeySecret = await secretsmanager.deleteSecret({
SecretId: 'bankAccountsApiKeySecretId'
})
const usersStream = await kinesis.deleteStream({ StreamName: `users-${process.env.AWS_STAGE}` })
const billingEngineStream = await kinesis.deleteStream({ StreamName: `billing-engine-${process.env.AWS_STAGE}` })
report('CUSTOM DESTROYED', [
usersStream,
billingEngineStream,
bankAccountsApiKeySecret
])
}
if (process.argv[2] === 'down') {
down()
} else {
up()
}
```
## Steps
1. `npm install git+ssh://git@bitbucket.org/ecotricity/mdp.git#semver:2.0.0 git+ssh://git@bitbucket.org/ecotricity/serverless-offline-mdp.git#semver:2.0.0`
2. Add `serverless-offline-mdp` to the plugins in the serverless yml
2. Provide hardcoded value for secret manager env var that gets passed to lambda. `bankAccountsApiKeySecretId: bankAccountsApiKeySecretId`
3. `npm run mdp-network:up`
5. `npm run infra:up`
6. `npm run infra:down`
4. `npm run mdp-network:down`
###### tags: `mdp` `customers-service` `howto`