Skip to content

Commit c8d8a4b

Browse files
committed
Initial separate files for nodecloud-aws
1 parent 6e4c9c6 commit c8d8a4b

14 files changed

+1526
-0
lines changed

Diff for: .gitignore

+41
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,41 @@
1+
# Logs
2+
logs
3+
*.log
4+
npm-debug.log*
5+
6+
# Runtime data
7+
pids
8+
*.pid
9+
*.seed
10+
11+
# Directory for instrumented libs generated by jscoverage/JSCover
12+
lib-cov
13+
14+
# Coverage directory used by tools like istanbul
15+
coverage
16+
17+
# nyc test coverage
18+
.nyc_output
19+
20+
# Grunt intermediate storage (http://gruntjs.com/creating-plugins#storing-task-files)
21+
.grunt
22+
23+
# node-waf configuration
24+
.lock-wscript
25+
26+
# Compiled binary addons (http://nodejs.org/api/addons.html)
27+
build/Release
28+
29+
# Dependency directories
30+
node_modules
31+
jspm_packages
32+
33+
# Optional npm cache directory
34+
.npm
35+
36+
# Optional REPL history
37+
.node_repl_history
38+
39+
# code coverage
40+
coverage
41+
# .coveralls.yml didn't see it in master branch

Diff for: compute/aws-ec2.js

+130
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,130 @@
1+
class EC2 {
2+
/**
3+
* EC2 constructor
4+
* @constructor
5+
* @param {object} aws - AWS SDK
6+
* @param {object} options - { apiVersion }
7+
*/
8+
constructor(aws, options) {
9+
this._AWS = aws;
10+
this._apiVersion = options.apiVersion;
11+
this._ec2 = new this._AWS.EC2({ apiVersion: this._apiVersion });
12+
}
13+
/**
14+
* Create EC2 instance
15+
* @create
16+
* @param {object} params
17+
* @param {object} instanceParams
18+
*/
19+
create(params, instanceParams) {
20+
// Create the instance
21+
return new Promise((resolve, reject) => {
22+
if (!params) reject(new Error('Provide params to EC2'));
23+
24+
this._ec2.runInstances(params, (err, data) => {
25+
if (err) reject(err);
26+
27+
const instanceId = data.Instances[0].InstanceId;
28+
// Add tags to the instance
29+
const ec2Params = {
30+
Resources: [instanceId],
31+
Tags: [
32+
{
33+
Key: instanceParams.Key,
34+
Value: instanceParams.Value,
35+
},
36+
],
37+
};
38+
this._ec2.createTags(ec2Params, (error) => {
39+
if (error) reject(err);
40+
41+
resolve(instanceId);
42+
});
43+
});
44+
});
45+
}
46+
/**
47+
* Describes one or more of your instances
48+
* @list
49+
* @param {object} params
50+
*/
51+
list(params) {
52+
return new Promise((resolve, reject) => {
53+
if (!params) {
54+
reject(new Error('Error: Supply params, find docs on http://docs.aws.amazon.com/AWSJavaScriptSDK/latest/AWS/EC2.html#describeInstances-property'));
55+
}
56+
this._ec2.describeInstances(params, (err, data) => {
57+
if (err) {
58+
reject(err);
59+
} else {
60+
resolve(data);
61+
}
62+
});
63+
});
64+
}
65+
/**
66+
* Start instance
67+
* @start
68+
* @param {object} params
69+
*/
70+
start(params) {
71+
return new Promise((resolve, reject) => {
72+
this._ec2.startInstances(params, (err, data) => {
73+
if (err) {
74+
reject(err);
75+
} else if (data) {
76+
resolve(data.StartingInstances);
77+
}
78+
});
79+
});
80+
}
81+
/**
82+
* Stop instance
83+
* @stop
84+
* @param {object} params
85+
*/
86+
stop(params) {
87+
return new Promise((resolve, reject) => {
88+
this._ec2.stopInstances(params, (err, data) => {
89+
if (err) {
90+
reject(err);
91+
} else if (data) {
92+
resolve(data.StoppingInstances);
93+
}
94+
});
95+
});
96+
}
97+
/**
98+
* Reboot instance
99+
* @reboot
100+
* @param {object} params
101+
*/
102+
reboot(params) {
103+
return new Promise((resolve, reject) => {
104+
this._ec2.rebootInstances(params, (err, data) => {
105+
if (err) {
106+
reject(err);
107+
} else if (data) {
108+
resolve(data);
109+
}
110+
});
111+
});
112+
}
113+
/**
114+
* Terminate instance
115+
* @destory
116+
* @param {object} params
117+
*/
118+
destroy(params) {
119+
return new Promise((resolve, reject) => {
120+
this._ec2.terminateInstances(params, (err, data) => {
121+
if (err) reject(err, err.stack);
122+
else {
123+
resolve(data);
124+
}
125+
});
126+
});
127+
}
128+
}
129+
130+
module.exports = EC2;

Diff for: compute/aws-ecs.js

+148
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,148 @@
1+
const helpers = require('../helpers');
2+
3+
const { checkParams } = helpers;
4+
class ECS {
5+
/**
6+
* ECS constructor
7+
* @constructor
8+
* @param {object} aws - AWS SDK
9+
* @param {object} options - { apiVersion }
10+
*/
11+
constructor(aws, options) {
12+
this._AWS = aws;
13+
if (options) {
14+
this._apiVersion = options.apiVersion;
15+
this._ecs = new this._AWS.ECS({ apiVersion: this._apiVersion });
16+
} else {
17+
this._ecs = new this._AWS.ECS();
18+
}
19+
}
20+
/**
21+
* Create ECS cluster
22+
* @createCluster
23+
* @param {object} params
24+
*/
25+
createCluster(params) {
26+
checkParams(params);
27+
// create cluster
28+
return new Promise((resolve, reject) => {
29+
this._ecs.createCluster(params, (err, data) => {
30+
if (err) {
31+
reject(err);
32+
} else {
33+
resolve(data);
34+
}
35+
});
36+
});
37+
}
38+
/**
39+
* Delete ECS cluster
40+
* @deleteCluster
41+
* @param {object} params
42+
*/
43+
deleteCluster(params) {
44+
checkParams(params);
45+
// delete cluster
46+
return new Promise((resolve, reject) => {
47+
this._ecs.deleteCluster(params, (err, data) => {
48+
if (err) {
49+
reject(err);
50+
} else {
51+
resolve(data);
52+
}
53+
});
54+
});
55+
}
56+
/**
57+
* Describe ECS clusters
58+
* @deleteCluster
59+
* @param {object} params
60+
*/
61+
describeClusters(params) {
62+
checkParams(params);
63+
// describe clusters
64+
return new Promise((resolve, reject) => {
65+
this._ecs.describeClusters(params, (err, data) => {
66+
if (err) {
67+
reject(err);
68+
} else {
69+
resolve(data);
70+
}
71+
});
72+
});
73+
}
74+
/**
75+
* Create ECS instance
76+
* @createCluster
77+
* @param {object} params
78+
*/
79+
createService(params) {
80+
checkParams(params);
81+
// create service
82+
return new Promise((resolve, reject) => {
83+
this._ecs.createService(params, (err, data) => {
84+
if (err) {
85+
reject(err);
86+
} else {
87+
resolve(data);
88+
}
89+
});
90+
});
91+
}
92+
/**
93+
* Delete ECS services
94+
* @deleteService
95+
* @param {object} params
96+
*/
97+
deleteService(params) {
98+
checkParams(params);
99+
// delete service
100+
return new Promise((resolve, reject) => {
101+
this._ecs.deleteService(params, (err, data) => {
102+
if (err) {
103+
reject(err);
104+
} else {
105+
resolve(data);
106+
}
107+
});
108+
});
109+
}
110+
/**
111+
* Describe ECS services
112+
* @describeServices
113+
* @param {object} params
114+
*/
115+
desribeServices(params) {
116+
checkParams(params);
117+
// describe services
118+
return new Promise((resolve, reject) => {
119+
this._ecs.describeServices(params, (err, data) => {
120+
if (err) {
121+
reject(err);
122+
} else {
123+
resolve(data);
124+
}
125+
});
126+
});
127+
}
128+
/**
129+
* Describe ECS container instances
130+
* @describeContainerInstances
131+
* @param {object} params
132+
*/
133+
describeContainerInstances(params) {
134+
checkParams(params);
135+
// describe container instances
136+
return new Promise((resolve, reject) => {
137+
this._ecs.describeContainerInstances(params, (err, data) => {
138+
if (err) {
139+
reject(err);
140+
} else {
141+
resolve(data);
142+
}
143+
});
144+
});
145+
}
146+
}
147+
148+
module.exports = ECS;

0 commit comments

Comments
 (0)