Skip to content

Commit 640a5ec

Browse files
authored
Merge pull request #21 from horike37/v0.4.0
V0.4.0
2 parents fd35ff5 + 31e5d07 commit 640a5ec

File tree

10 files changed

+1254
-138
lines changed

10 files changed

+1254
-138
lines changed

lib/activity.js

Lines changed: 127 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,127 @@
1+
'use strict';
2+
const BbPromise = require('bluebird');
3+
const _ = require('lodash');
4+
5+
module.exports = {
6+
activityArns: {},
7+
deployedActivities: {},
8+
getActivityName(name) {
9+
return `${this.service}-${this.stage}-${name}`;
10+
},
11+
createActivity(name) {
12+
const activity = name || this.options.name;
13+
return this.provider.request('StepFunctions',
14+
'createActivity',
15+
{ name: this.getActivityName(activity) },
16+
this.options.stage,
17+
this.options.region)
18+
.then(() => BbPromise.resolve());
19+
},
20+
21+
createActivities() {
22+
const promises = [];
23+
_.forEach(this.deployedActivities, (value, key) => {
24+
if (value === 'notDeployed') {
25+
promises.push(key);
26+
}
27+
});
28+
return BbPromise
29+
.map(promises, (name) => this.createActivity(name))
30+
.then(() => BbPromise.resolve());
31+
},
32+
33+
deleteActivity(name) {
34+
const activity = name || this.options.name;
35+
return this.provider.request('StepFunctions',
36+
'deleteActivity',
37+
{
38+
activityArn: this.activityArns[activity],
39+
},
40+
this.options.stage,
41+
this.options.region)
42+
.then(() => BbPromise.resolve());
43+
},
44+
45+
deleteActivities() {
46+
const promises = [];
47+
_.forEach(this.deployedActivities, (value, key) => {
48+
if (value === 'deployed') {
49+
promises.push(key);
50+
}
51+
});
52+
return BbPromise
53+
.map(promises, (name) => this.deleteActivity(name))
54+
.then(() => BbPromise.resolve());
55+
},
56+
57+
describeActivity(name) {
58+
const activity = name || this.options.name;
59+
return this.provider.request('StepFunctions',
60+
'describeActivity',
61+
{ activityArn: this.activityArns[activity] },
62+
this.options.stage,
63+
this.options.region)
64+
.then(() => {
65+
this.deployedActivities[activity] = 'deployed';
66+
return BbPromise.resolve();
67+
}).catch(() => {
68+
this.deployedActivities[activity] = 'notDeployed';
69+
return BbPromise.resolve();
70+
});
71+
},
72+
73+
describeActivities() {
74+
const promises = [];
75+
_.forEach(this.serverless.service.stepFunctions.activities, (value) => {
76+
promises.push(value);
77+
});
78+
return BbPromise
79+
.map(promises, (name) => this.describeActivity(name))
80+
.then(() => BbPromise.resolve());
81+
},
82+
83+
checkActivitySettings() {
84+
if (!this.serverless.service.stepFunctions.activities) {
85+
const errorMessage = [
86+
'activities statement does not exists in serverless.yml',
87+
].join('');
88+
throw new this.serverless.classes.Error(errorMessage);
89+
}
90+
return BbPromise.resolve();
91+
},
92+
93+
checkActivitySetting(name) {
94+
const activity = name || this.options.name;
95+
if (this.serverless.service.stepFunctions.activities.indexOf(activity) < 0) {
96+
const errorMessage = [
97+
`Activity "${activity}" is not exists in serverless.yml`,
98+
].join('');
99+
throw new this.serverless.classes.Error(errorMessage);
100+
}
101+
return BbPromise.resolve();
102+
},
103+
104+
getActivityArn(name) {
105+
const activity = name || this.options.name;
106+
return this.provider.request('STS',
107+
'getCallerIdentity',
108+
{},
109+
this.options.stage,
110+
this.options.region)
111+
.then((result) => {
112+
this.activityArns[activity] =
113+
`arn:aws:states:${this.region}:${result.Account}:activity:${this.getActivityName(activity)}`;
114+
return BbPromise.resolve();
115+
});
116+
},
117+
118+
getActivityArns() {
119+
const promises = [];
120+
_.forEach(this.serverless.service.stepFunctions.activities, (value) => {
121+
promises.push(value);
122+
});
123+
return BbPromise
124+
.map(promises, (name) => this.getActivityArn(name))
125+
.then(() => BbPromise.resolve());
126+
},
127+
};

0 commit comments

Comments
 (0)