Skip to content

Commit ab882fb

Browse files
committed
update deploy and remove command
1 parent 37bc580 commit ab882fb

File tree

2 files changed

+178
-15
lines changed

2 files changed

+178
-15
lines changed

lib/index.js

Lines changed: 62 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -189,6 +189,10 @@ class ServerlessStepFunctions {
189189
};
190190

191191
this.hooks = {
192+
'deploy:stepf:deploy': () => BbPromise.bind(this)
193+
.then(this.allDeploy),
194+
'remove:stepf:remove': () => BbPromise.bind(this)
195+
.then(this.allRemove),
192196
'deploy:stepf:statemachines:deploy': () => BbPromise.bind(this)
193197
.then(this.stateMachineDeploy),
194198
'remove:stepf:statemachines:remove': () => BbPromise.bind(this)
@@ -202,6 +206,59 @@ class ServerlessStepFunctions {
202206
};
203207
}
204208

209+
allDeploy() {
210+
this.serverless.cli.log('Start to deploy for all stateMachies and activities...');
211+
return BbPromise.bind(this)
212+
.then(this.yamlParse)
213+
.then(this.checkActivitySettings)
214+
.then(this.getActivityArns)
215+
.then(this.describeActivities)
216+
.then(this.createActivities)
217+
.then(this.getStateMachineNames)
218+
.then(this.getFunctionArns)
219+
.then(this.compileAll)
220+
.then(this.getIamRoles)
221+
.then(this.deleteStateMachines)
222+
.then(this.createStateMachines)
223+
.then(() => {
224+
this.serverless.cli.consoleLog('');
225+
this.serverless.cli.log('Deployed all stateMachies and activities\n');
226+
let message = '';
227+
message += `${chalk.yellow.underline('Service Information')}\n`;
228+
message += `${chalk.yellow('service:')} ${this.service}\n`;
229+
message += `${chalk.yellow('stage:')} ${this.stage}\n`;
230+
message += `${chalk.yellow('region:')} ${this.region}\n\n`;
231+
message += `${chalk.yellow.underline('State Machine Information')}\n`;
232+
_.forEach(this.stateMachineArns, (arn, name) => {
233+
message += `${chalk.yellow(name)}${chalk.yellow(':')} ${arn}\n`;
234+
});
235+
message += '\n';
236+
message += `${chalk.yellow.underline('Deployed Activity ARNs')}\n`;
237+
_.forEach(this.activityArns, (value, key) => {
238+
message += `${chalk.yellow(key)}${chalk.yellow(':')} `;
239+
message += `${value}\n`;
240+
});
241+
this.serverless.cli.consoleLog(message);
242+
return BbPromise.resolve();
243+
});
244+
}
245+
246+
allRemove() {
247+
this.serverless.cli.log('Start to remove for all statemachies and activities...');
248+
return BbPromise.bind(this)
249+
.then(this.yamlParse)
250+
.then(this.deleteIamRoles)
251+
.then(this.getStateMachineNames)
252+
.then(this.deleteStateMachines)
253+
.then(this.checkActivitySettings)
254+
.then(this.getActivityArns)
255+
.then(this.describeActivities)
256+
.then(this.deleteActivities)
257+
.then(() => {
258+
this.serverless.cli.log('Removed for all statemachies and activities...');
259+
});
260+
}
261+
205262
activityDeploy() {
206263
if (this.options.name) {
207264
this.serverless.cli.log(`Start to deploy ${this.options.name} activity...`);
@@ -215,7 +272,7 @@ class ServerlessStepFunctions {
215272
return BbPromise.bind(this)
216273
.then(this.createActivity)
217274
.then(() => {
218-
this.serverless.cli.log('Finish to deploy');
275+
this.serverless.cli.log('Finished to deploy');
219276
let message = '';
220277
message += `${chalk.yellow.underline('Service Information')}\n`;
221278
message += `${chalk.yellow('service:')} ${this.service}\n`;
@@ -270,7 +327,7 @@ class ServerlessStepFunctions {
270327
return BbPromise.bind(this)
271328
.then(this.deleteActivity)
272329
.then(() => {
273-
this.serverless.cli.log('Finish to remove');
330+
this.serverless.cli.log('Finished to remove');
274331
});
275332
}
276333
this.serverless.cli.log(`${this.options.name} activity is not deployed`);
@@ -285,7 +342,7 @@ class ServerlessStepFunctions {
285342
.then(this.describeActivities)
286343
.then(this.deleteActivities)
287344
.then(() => {
288-
this.serverless.cli.log('Finish to remove');
345+
this.serverless.cli.log('Removed all activities');
289346
return BbPromise.resolve();
290347
});
291348
}
@@ -327,7 +384,7 @@ class ServerlessStepFunctions {
327384
.then(this.createStateMachines)
328385
.then(() => {
329386
this.serverless.cli.consoleLog('');
330-
this.serverless.cli.log('Finish to deploy all step functions');
387+
this.serverless.cli.log('Finished to deploy all stateMachines');
331388
let message = '';
332389
message += `${chalk.yellow.underline('Service Information')}\n`;
333390
message += `${chalk.yellow('service:')} ${this.service}\n`;
@@ -360,17 +417,7 @@ class ServerlessStepFunctions {
360417
.then(this.getStateMachineNames)
361418
.then(this.deleteStateMachines)
362419
.then(() => {
363-
this.serverless.cli.log('Remove all state machine');
364-
let message = '';
365-
message += `${chalk.yellow.underline('Service Information')}\n`;
366-
message += `${chalk.yellow('service:')} ${this.service}\n`;
367-
message += `${chalk.yellow('stage:')} ${this.stage}\n`;
368-
message += `${chalk.yellow('region:')} ${this.region}\n\n`;
369-
message += `${chalk.yellow.underline('Deleted State Machine')}\n`;
370-
_.forEach(this.stateMachineArns, (arn, name) => {
371-
message += `${chalk.yellow(name)}${chalk.yellow(':')} ${arn}\n`;
372-
});
373-
this.serverless.cli.consoleLog(message);
420+
this.serverless.cli.log('Removed all stateMachines');
374421
return BbPromise.resolve();
375422
});
376423
}

lib/index.test.js

Lines changed: 116 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -72,6 +72,26 @@ describe('ServerlessStepFunctions', () => {
7272
`
7373
));
7474

75+
it('should run deploy:stepf:deploy promise chain in order', () => {
76+
const deployStub = sinon
77+
.stub(serverlessStepFunctions, 'allDeploy').returns(BbPromise.resolve());
78+
return serverlessStepFunctions.hooks['deploy:stepf:deploy']()
79+
.then(() => {
80+
expect(deployStub.calledOnce).to.be.equal(true);
81+
serverlessStepFunctions.allDeploy.restore();
82+
});
83+
});
84+
85+
it('should run remove:stepf:remove promise chain in order', () => {
86+
const removeStub = sinon
87+
.stub(serverlessStepFunctions, 'allRemove').returns(BbPromise.resolve());
88+
return serverlessStepFunctions.hooks['remove:stepf:remove']()
89+
.then(() => {
90+
expect(removeStub.calledOnce).to.be.equal(true);
91+
serverlessStepFunctions.allRemove.restore();
92+
});
93+
});
94+
7595
it('should run deploy:stepf:statemachines:deploy promise chain in order', () => {
7696
const deployStub = sinon
7797
.stub(serverlessStepFunctions, 'stateMachineDeploy').returns(BbPromise.resolve());
@@ -128,6 +148,102 @@ describe('ServerlessStepFunctions', () => {
128148
});
129149
});
130150

151+
describe('#allDeploy()', () => {
152+
it('should run promise chain in order', () => {
153+
const yamlParseStub = sinon
154+
.stub(serverlessStepFunctions, 'yamlParse').returns(BbPromise.resolve());
155+
const checkActivitySettingsStub = sinon
156+
.stub(serverlessStepFunctions, 'checkActivitySettings').returns(BbPromise.resolve());
157+
const getActivityArnsStub = sinon
158+
.stub(serverlessStepFunctions, 'getActivityArns').returns(BbPromise.resolve());
159+
const describeActivitiesStub = sinon
160+
.stub(serverlessStepFunctions, 'describeActivities').returns(BbPromise.resolve());
161+
const createActivitiesStub = sinon
162+
.stub(serverlessStepFunctions, 'createActivities').returns(BbPromise.resolve());
163+
const getStateMachineNamesStub = sinon
164+
.stub(serverlessStepFunctions, 'getStateMachineNames').returns(BbPromise.resolve());
165+
const getFunctionArnsStub = sinon
166+
.stub(serverlessStepFunctions, 'getFunctionArns').returns(BbPromise.resolve());
167+
const compileAllStub = sinon
168+
.stub(serverlessStepFunctions, 'compileAll').returns(BbPromise.resolve());
169+
const getIamRolesStub = sinon
170+
.stub(serverlessStepFunctions, 'getIamRoles').returns(BbPromise.resolve());
171+
const deleteStateMachinesStub = sinon
172+
.stub(serverlessStepFunctions, 'deleteStateMachines').returns(BbPromise.resolve());
173+
const createStateMachinesStub = sinon
174+
.stub(serverlessStepFunctions, 'createStateMachines').returns(BbPromise.resolve());
175+
176+
return serverlessStepFunctions.allDeploy()
177+
.then(() => {
178+
expect(yamlParseStub.calledOnce).to.be.equal(true);
179+
expect(checkActivitySettingsStub.calledAfter(yamlParseStub)).to.be.equal(true);
180+
expect(getActivityArnsStub.calledAfter(checkActivitySettingsStub)).to.be.equal(true);
181+
expect(describeActivitiesStub.calledAfter(getActivityArnsStub)).to.be.equal(true);
182+
expect(createActivitiesStub.calledAfter(describeActivitiesStub)).to.be.equal(true);
183+
expect(getStateMachineNamesStub.calledAfter(createActivitiesStub)).to.be.equal(true);
184+
expect(getFunctionArnsStub.calledAfter(getStateMachineNamesStub)).to.be.equal(true);
185+
expect(compileAllStub.calledAfter(getFunctionArnsStub)).to.be.equal(true);
186+
expect(getIamRolesStub.calledAfter(compileAllStub)).to.be.equal(true);
187+
expect(deleteStateMachinesStub.calledAfter(getIamRolesStub)).to.be.equal(true);
188+
expect(createStateMachinesStub.calledAfter(deleteStateMachinesStub)).to.be.equal(true);
189+
190+
serverlessStepFunctions.yamlParse.restore();
191+
serverlessStepFunctions.checkActivitySettings.restore();
192+
serverlessStepFunctions.getActivityArns.restore();
193+
serverlessStepFunctions.describeActivities.restore();
194+
serverlessStepFunctions.createActivities.restore();
195+
serverlessStepFunctions.getStateMachineNames.restore();
196+
serverlessStepFunctions.getFunctionArns.restore();
197+
serverlessStepFunctions.compileAll.restore();
198+
serverlessStepFunctions.getIamRoles.restore();
199+
serverlessStepFunctions.deleteStateMachines.restore();
200+
serverlessStepFunctions.createStateMachines.restore();
201+
});
202+
});
203+
});
204+
205+
describe('#allRemove()', () => {
206+
it('should run promise chain in order', () => {
207+
const yamlParseStub = sinon
208+
.stub(serverlessStepFunctions, 'yamlParse').returns(BbPromise.resolve());
209+
const deleteIamRolesStub = sinon
210+
.stub(serverlessStepFunctions, 'deleteIamRoles').returns(BbPromise.resolve());
211+
const getStateMachineNamesStub = sinon
212+
.stub(serverlessStepFunctions, 'getStateMachineNames').returns(BbPromise.resolve());
213+
const deleteStateMachinesStub = sinon
214+
.stub(serverlessStepFunctions, 'deleteStateMachines').returns(BbPromise.resolve());
215+
const checkActivitySettingsStub = sinon
216+
.stub(serverlessStepFunctions, 'checkActivitySettings').returns(BbPromise.resolve());
217+
const getActivityArnsStub = sinon
218+
.stub(serverlessStepFunctions, 'getActivityArns').returns(BbPromise.resolve());
219+
const describeActivitiesStub = sinon
220+
.stub(serverlessStepFunctions, 'describeActivities').returns(BbPromise.resolve());
221+
const deleteActivitiesStub = sinon
222+
.stub(serverlessStepFunctions, 'deleteActivities').returns(BbPromise.resolve());
223+
224+
return serverlessStepFunctions.allRemove()
225+
.then(() => {
226+
expect(yamlParseStub.calledOnce).to.be.equal(true);
227+
expect(deleteIamRolesStub.calledAfter(yamlParseStub)).to.be.equal(true);
228+
expect(getStateMachineNamesStub.calledAfter(deleteIamRolesStub)).to.be.equal(true);
229+
expect(deleteStateMachinesStub.calledAfter(getStateMachineNamesStub)).to.be.equal(true);
230+
expect(checkActivitySettingsStub.calledAfter(deleteStateMachinesStub)).to.be.equal(true);
231+
expect(getActivityArnsStub.calledAfter(checkActivitySettingsStub)).to.be.equal(true);
232+
expect(describeActivitiesStub.calledAfter(getActivityArnsStub)).to.be.equal(true);
233+
expect(deleteActivitiesStub.calledAfter(describeActivitiesStub)).to.be.equal(true);
234+
235+
serverlessStepFunctions.yamlParse.restore();
236+
serverlessStepFunctions.deleteIamRoles.restore();
237+
serverlessStepFunctions.getStateMachineNames.restore();
238+
serverlessStepFunctions.deleteStateMachines.restore();
239+
serverlessStepFunctions.checkActivitySettings.restore();
240+
serverlessStepFunctions.getActivityArns.restore();
241+
serverlessStepFunctions.describeActivities.restore();
242+
serverlessStepFunctions.deleteActivities.restore();
243+
});
244+
});
245+
});
246+
131247
describe('#stateMachineDeploy()', () => {
132248
it('should run promise chain in order when name is given', () => {
133249
const yamlParseStub = sinon

0 commit comments

Comments
 (0)