multi_ec2_kiq 0.0.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
checksums.yaml ADDED
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA1:
3
+ metadata.gz: e6fb966749a5718f22045a9c32553ad2589e74be
4
+ data.tar.gz: 19d219b505f467f7e7dffa663f2deb85e220a6bc
5
+ SHA512:
6
+ metadata.gz: 438af2f2fd56abc7aaf2264e529e45b9f71eeb06b55ec86e33e77897e1fe0433e4976d89fc5a685a8f32f7654b34fb1f68d1bac6311aa7ed87b8cd8cce7315bb
7
+ data.tar.gz: 59a9e5c071b4f832a0655a0754e8b03f4f7dab44bc2c165c3fa6441440c83c72f0071b8847090f6e35ddd524c1b539e4fdb2cf6264bac0e781c17cd65cfe4669
data/.gitignore ADDED
@@ -0,0 +1,17 @@
1
+ /.bundle/
2
+ /.yardoc
3
+ /Gemfile.lock
4
+ /_yardoc/
5
+ /coverage/
6
+ /doc/
7
+ /pkg/
8
+ /spec/reports/
9
+ /tmp/
10
+ *.bundle
11
+ *.so
12
+ *.o
13
+ *.a
14
+ mkmf.log
15
+ /vendor/
16
+ .pryrc
17
+ /lib/settings.yml.bak
data/.rspec ADDED
@@ -0,0 +1,2 @@
1
+ --format documentation
2
+ --color
data/.travis.yml ADDED
@@ -0,0 +1,3 @@
1
+ language: ruby
2
+ rvm:
3
+ - 2.1.5
data/Gemfile ADDED
@@ -0,0 +1,4 @@
1
+ source 'https://rubygems.org'
2
+
3
+ # Specify your gem's dependencies in multi_ec2_kiq.gemspec
4
+ gemspec
data/LICENSE.txt ADDED
@@ -0,0 +1,22 @@
1
+ Copyright (c) 2015 SrcHndWng
2
+
3
+ MIT License
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining
6
+ a copy of this software and associated documentation files (the
7
+ "Software"), to deal in the Software without restriction, including
8
+ without limitation the rights to use, copy, modify, merge, publish,
9
+ distribute, sublicense, and/or sell copies of the Software, and to
10
+ permit persons to whom the Software is furnished to do so, subject to
11
+ the following conditions:
12
+
13
+ The above copyright notice and this permission notice shall be
14
+ included in all copies or substantial portions of the Software.
15
+
16
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
17
+ EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
18
+ MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
19
+ NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
20
+ LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
21
+ OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
22
+ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
data/README.md ADDED
@@ -0,0 +1,53 @@
1
+ # MultiEc2Kiq
2
+
3
+ This gem starts multi ec2 instances, and stops them if you command.
4
+
5
+ ## Description
6
+ This has two methods, "start" and "start_wait_until_stop".
7
+ Below are the methods.
8
+
9
+ * start
10
+ "start" allows you to start ec2 instances that defined in yml file that as settings.
11
+
12
+ * start_wait_until_stop
13
+ "start_wait_until_stop" allows you to start ec2 instances, then it waits until you command to stop then stop them.
14
+ After ec2 instances start, it registers ec2 "started" status in Dynamodb table.
15
+ If you want to command ec2 stop, you have to update above status to "to_stop", then it stops the ec2.
16
+ After ec2 stopped, it registers ec2 "stopped" status.
17
+
18
+ ## Installation
19
+
20
+ Add this line to your application's Gemfile:
21
+
22
+ ```ruby
23
+ gem 'multi_ec2_kiq'
24
+ ```
25
+
26
+ And then execute:
27
+
28
+ $ bundle
29
+
30
+ Or install it yourself as:
31
+
32
+ $ gem install multi_ec2_kiq
33
+
34
+ ## Usage
35
+
36
+ 1. You have to set aws profile in your ~/.aws/credentials.
37
+
38
+ 2. Write configuration yml file, use "lib/settings.yml" as a reference.
39
+
40
+ 3. Then, call methods.
41
+ ```ruby
42
+ include MultiEc2Kiq
43
+
44
+ MultiEc2Kiq.config_path = File.expand_path("your configuration file path", __FILE__)
45
+ MultiEc2Kiq.start
46
+ ```
47
+
48
+ ```ruby
49
+ include MultiEc2Kiq
50
+
51
+ MultiEc2Kiq.config_path = File.expand_path("your configuration file path", __FILE__)
52
+ MultiEc2Kiq.start_wait_until_stop
53
+ ```
data/Rakefile ADDED
@@ -0,0 +1,7 @@
1
+ require "bundler/gem_tasks"
2
+ require "rspec/core/rake_task"
3
+
4
+ RSpec::Core::RakeTask.new(:spec)
5
+
6
+ task :default => :spec
7
+
@@ -0,0 +1,3 @@
1
+ module MultiEc2Kiq
2
+ VERSION = "0.0.1"
3
+ end
@@ -0,0 +1,56 @@
1
+ require "multi_ec2_kiq/version"
2
+ require "settings"
3
+ require "threads/ec2"
4
+
5
+ module MultiEc2Kiq
6
+ attr_accessor :config_path
7
+
8
+ def start
9
+ Settings.source(config_path)
10
+ instances = Settings.instances
11
+ threads = []
12
+
13
+ instances.each {|instance| settings_check(instance)}
14
+ instances.each {|instance|
15
+ threads << Thread.new do
16
+ ec2_start(instance)
17
+ end
18
+ }
19
+
20
+ threads.each { |t| t.join }
21
+
22
+ true
23
+ end
24
+
25
+ def start_wait_until_stop
26
+ Settings.source(config_path)
27
+ instances = Settings.instances
28
+ threads = []
29
+
30
+ instances.each {|instance| settings_check(instance)}
31
+ instances.each {|instance|
32
+ threads << Thread.new do
33
+ ec2_start_wait_until_stop(instance)
34
+ end
35
+ }
36
+
37
+ threads.each { |t| t.join }
38
+
39
+ true
40
+ end
41
+
42
+ private
43
+
44
+ def settings_check(e)
45
+ raise "instance_configs requires id." if !e.has_key?("id")
46
+ raise "instance_configs requires region." if !e.has_key?("region")
47
+ end
48
+
49
+ def ec2_start(instance)
50
+ Ec2.new(instance["id"], instance["region"]).start
51
+ end
52
+
53
+ def ec2_start_wait_until_stop(instance)
54
+ Ec2.new(instance["id"], instance["region"]).start_wait_until_stop
55
+ end
56
+ end
data/lib/settings.rb ADDED
@@ -0,0 +1,6 @@
1
+ require 'settingslogic'
2
+
3
+ module MultiEc2Kiq
4
+ class Settings < Settingslogic
5
+ end
6
+ end
data/lib/settings.yml ADDED
@@ -0,0 +1,13 @@
1
+ aws:
2
+ profile: your_aws_credencial_profile
3
+ dynamodb:
4
+ region: your_dynamodb_region
5
+ status_table_name: your_ec2_statuses_table_mmae
6
+ wait_to_stop:
7
+ max_attempts: 10 #retry times until you command "to_stop"
8
+ delay: 10 #retry interval(s) until you command "to_stop"
9
+ instances:
10
+ - id: your_ec2_instance_id_1
11
+ region: your_ec2_instance_id_1_region
12
+ - id: your_ec2_instance_id_2
13
+ region: your_ec2_instance_id_2_region
@@ -0,0 +1,93 @@
1
+ require "settings"
2
+ require "aws-sdk-core"
3
+ require "ostruct"
4
+
5
+ module MultiEc2Kiq
6
+ class Dynamodb
7
+ def initialize
8
+ @STATUS = OpenStruct.new(started: "started", stopped: "stopped", to_stop: "to_stop")
9
+ end
10
+
11
+ def started(instance_id)
12
+ create_table_if_not_exists
13
+ put_item(instance_id, @STATUS.started)
14
+ true
15
+ end
16
+
17
+ def wait_until_to_stop(instance_id)
18
+ (0...Settings.wait_to_stop.max_attempts).each{|i|
19
+ data = get_item(instance_id)
20
+ raise_not_exist if !data.item
21
+ return true if data.item["status"] == @STATUS.to_stop
22
+ sleep(Settings.wait_to_stop.delay)
23
+ }
24
+ false
25
+ end
26
+
27
+ def stopped(instance_id)
28
+ raise_not_exist if !get_item(instance_id).item
29
+ put_item(instance_id, @STATUS.stopped)
30
+ true
31
+ end
32
+
33
+ private
34
+
35
+ def raise_not_exist
36
+ raise "instance_id doesn't exist on status table."
37
+ end
38
+
39
+ def get_item(instance_id)
40
+ dynamodb.get_item(
41
+ table_name: Settings.aws.dynamodb.status_table_name,
42
+ key: {instance_id: instance_id}
43
+ )
44
+ end
45
+
46
+ def put_item(instance_id, status)
47
+ dynamodb.put_item(
48
+ table_name: Settings.aws.dynamodb.status_table_name,
49
+ item: {instance_id: instance_id, status: status}
50
+ )
51
+ end
52
+
53
+ def create_table_if_not_exists
54
+ dynamodb.list_tables.table_names.each {|table|
55
+ return if table == Settings.aws.dynamodb.status_table_name
56
+ }
57
+
58
+ options = {
59
+ table_name: Settings.aws.dynamodb.status_table_name,
60
+ key_schema: [
61
+ {
62
+ attribute_name: "instance_id",
63
+ key_type: "HASH"
64
+ }
65
+ ],
66
+ attribute_definitions: [
67
+ {
68
+ attribute_name: "instance_id",
69
+ attribute_type: "S"
70
+ }
71
+ ],
72
+ provisioned_throughput: {
73
+ read_capacity_units: 1,
74
+ write_capacity_units: 1
75
+ }
76
+ }
77
+
78
+ dynamodb.create_table(options)
79
+
80
+ dynamodb.wait_until(:table_exists, {table_name: Settings.aws.dynamodb.status_table_name}) do |w|
81
+ w.max_attempts = 5
82
+ w.delay = 5
83
+ end
84
+ end
85
+
86
+ def dynamodb
87
+ @dynamodb ||= Aws::DynamoDB::Client.new(
88
+ region: Settings.aws.dynamodb.region,
89
+ profile: Settings.aws.profile
90
+ )
91
+ end
92
+ end
93
+ end
@@ -0,0 +1,57 @@
1
+ require "settings"
2
+ require "aws-sdk-core"
3
+ require "threads/Dynamodb"
4
+
5
+ module MultiEc2Kiq
6
+ class Ec2
7
+ def initialize(id, region)
8
+ @id = id
9
+ @region = region
10
+ end
11
+
12
+ def start
13
+ start_instance
14
+ puts_started_message
15
+ true
16
+ end
17
+
18
+ def start_wait_until_stop
19
+ start
20
+ dynamodb.started(@id)
21
+
22
+ if dynamodb.wait_until_to_stop(@id)
23
+ stop_instance
24
+ dynamodb.stopped(@id)
25
+ end
26
+
27
+ true
28
+ end
29
+
30
+ private
31
+
32
+ def puts_started_message
33
+ puts Time.now.to_s + " EC2 started. id = " + @id + ", region = " + @region + "."
34
+ end
35
+
36
+ def stop_instance
37
+ ec2.stop_instances(instance_ids: [@id])
38
+ ec2.wait_until(:instance_stopped, instance_ids:[@id])
39
+ end
40
+
41
+ def start_instance
42
+ ec2.start_instances(instance_ids: [@id])
43
+ ec2.wait_until(:instance_running, instance_ids:[@id])
44
+ end
45
+
46
+ def ec2
47
+ @ec2 ||= Aws::EC2::Client.new(
48
+ region: @region,
49
+ profile: Settings.aws.profile
50
+ )
51
+ end
52
+
53
+ def dynamodb
54
+ @dynamodb ||= Dynamodb.new
55
+ end
56
+ end
57
+ end
@@ -0,0 +1,29 @@
1
+ # coding: utf-8
2
+ lib = File.expand_path('../lib', __FILE__)
3
+ $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
4
+ require 'multi_ec2_kiq/version'
5
+
6
+ Gem::Specification.new do |spec|
7
+ spec.name = "multi_ec2_kiq"
8
+ spec.version = MultiEc2Kiq::VERSION
9
+ spec.authors = ["SrcHndWng"]
10
+ spec.email = [""]
11
+ spec.summary = "This gem starts multi ec2 instances, and stops them if you command."
12
+ spec.description = ""
13
+ spec.homepage = "https://github.com/SrcHndWng/multi_ec2_kiq"
14
+ spec.license = "MIT"
15
+
16
+ spec.files = `git ls-files -z`.split("\x0")
17
+ spec.executables = spec.files.grep(%r{^bin/}) { |f| File.basename(f) }
18
+ spec.test_files = spec.files.grep(%r{^(test|spec|features)/})
19
+ spec.require_paths = ["lib"]
20
+
21
+ spec.add_development_dependency "bundler", "~> 1.7"
22
+ spec.add_development_dependency "rake", "~> 10.0"
23
+ spec.add_development_dependency "rspec"
24
+ spec.add_development_dependency "pry-byebug"
25
+
26
+ spec.add_runtime_dependency "settingslogic"
27
+ spec.add_runtime_dependency "aws-sdk"
28
+ spec.add_runtime_dependency "aws-sdk-core"
29
+ end
@@ -0,0 +1,36 @@
1
+ require 'spec_helper'
2
+ require "threads/Dynamodb"
3
+ require "settings"
4
+
5
+ include MultiEc2Kiq
6
+
7
+ describe MultiEc2Kiq do
8
+ let(:multi_ec2_kiq) { Class.new{include MultiEc2Kiq} }
9
+ let(:dynamodb) { double("Dynamodb") }
10
+
11
+ before(:all) do
12
+ Settings.source(File.expand_path("../../lib/settings.yml", __FILE__))
13
+ end
14
+
15
+ it 'has a version number' do
16
+ expect(MultiEc2Kiq::VERSION).not_to be nil
17
+ end
18
+
19
+ it 'start should success' do
20
+ Settings.instances.each{|instance|
21
+ expect(multi_ec2_kiq).to receive(:ec2_start)
22
+ }
23
+ multi_ec2_kiq.config_path = File.expand_path("../../lib/settings.yml", __FILE__)
24
+ result = multi_ec2_kiq.start
25
+ expect(result).to eq(true)
26
+ end
27
+
28
+ it 'start_wait_until_stop should success' do
29
+ Settings.instances.each{|instance|
30
+ expect(multi_ec2_kiq).to receive(:ec2_start_wait_until_stop)
31
+ }
32
+ multi_ec2_kiq.config_path = File.expand_path("../../lib/settings.yml", __FILE__)
33
+ result = multi_ec2_kiq.start_wait_until_stop
34
+ expect(result).to eq(true)
35
+ end
36
+ end
@@ -0,0 +1,2 @@
1
+ $LOAD_PATH.unshift File.expand_path('../../lib', __FILE__)
2
+ require 'multi_ec2_kiq'
@@ -0,0 +1,35 @@
1
+ require 'spec_helper'
2
+ require "settings"
3
+ require "threads/Dynamodb"
4
+
5
+ include MultiEc2Kiq
6
+
7
+ describe Dynamodb do
8
+ before(:all) do
9
+ Settings.source(File.expand_path("../../../lib/settings.yml", __FILE__))
10
+ @dynamodb = Dynamodb.new
11
+ end
12
+
13
+ it 'should write started.' do
14
+ expect(@dynamodb).to receive(:create_table_if_not_exists)
15
+ expect(@dynamodb).to receive(:put_item).with(anything, anything)
16
+ result = @dynamodb.started("instance_test")
17
+ expect(result).to eq(true)
18
+ end
19
+
20
+ it 'should wait until to stop.' do
21
+ StatusData = Struct.new("StatusData", :item)
22
+ status_data = StatusData.new({"instance_id"=>"instance_test", "status"=>"to_stop"})
23
+ expect(@dynamodb).to receive(:get_item).and_return(status_data)
24
+ result = @dynamodb.wait_until_to_stop("instance_test")
25
+ expect(result).to eq(true)
26
+ end
27
+
28
+ it 'should write stopped.' do
29
+ status_data = StatusData.new({"instance_id"=>"instance_test", "status"=>"to_stop"})
30
+ expect(@dynamodb).to receive(:get_item).and_return(status_data)
31
+ expect(@dynamodb).to receive(:put_item).with(anything, anything)
32
+ result = @dynamodb.stopped("instance_test")
33
+ expect(result).to eq(true)
34
+ end
35
+ end
@@ -0,0 +1,45 @@
1
+ require 'spec_helper'
2
+ require "settings"
3
+ require "threads/EC2"
4
+
5
+ include MultiEc2Kiq
6
+
7
+ describe Ec2 do
8
+ let(:dynamodb) { double("Dynamodb") }
9
+
10
+ before(:all) do
11
+ Settings.source(File.expand_path("../../../lib/settings.yml", __FILE__))
12
+ instance = Settings.instances[0]
13
+ @ec2 = Ec2.new(instance["id"], instance["region"])
14
+ end
15
+
16
+ it 'should ec2 start.' do
17
+ expect(@ec2).to receive(:start_instance)
18
+ result = @ec2.start
19
+ expect(result).to eq(true)
20
+ end
21
+
22
+ describe 'start_wait_until_stop' do
23
+ it 'get to_stop status' do
24
+ expect(@ec2).to receive(:dynamodb).and_return(dynamodb).at_least(:once)
25
+ expect(@ec2).to receive(:start)
26
+ expect(dynamodb).to receive(:started).with(anything)
27
+ expect(dynamodb).to receive(:wait_until_to_stop).with(anything).and_return(true)
28
+ expect(@ec2).to receive(:stop_instance)
29
+ expect(dynamodb).to receive(:stopped).with(anything)
30
+
31
+ result = @ec2.start_wait_until_stop
32
+ expect(result).to eq(true)
33
+ end
34
+
35
+ it 'to_stop does not exist.' do
36
+ expect(@ec2).to receive(:dynamodb).and_return(dynamodb).at_least(:once)
37
+ expect(@ec2).to receive(:start)
38
+ expect(dynamodb).to receive(:started).with(anything)
39
+ expect(dynamodb).to receive(:wait_until_to_stop).with(anything).and_return(false)
40
+
41
+ result = @ec2.start_wait_until_stop
42
+ expect(result).to eq(true)
43
+ end
44
+ end
45
+ end
metadata ADDED
@@ -0,0 +1,164 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: multi_ec2_kiq
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.0.1
5
+ platform: ruby
6
+ authors:
7
+ - SrcHndWng
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain: []
11
+ date: 2015-04-03 00:00:00.000000000 Z
12
+ dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: bundler
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - "~>"
18
+ - !ruby/object:Gem::Version
19
+ version: '1.7'
20
+ type: :development
21
+ prerelease: false
22
+ version_requirements: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - "~>"
25
+ - !ruby/object:Gem::Version
26
+ version: '1.7'
27
+ - !ruby/object:Gem::Dependency
28
+ name: rake
29
+ requirement: !ruby/object:Gem::Requirement
30
+ requirements:
31
+ - - "~>"
32
+ - !ruby/object:Gem::Version
33
+ version: '10.0'
34
+ type: :development
35
+ prerelease: false
36
+ version_requirements: !ruby/object:Gem::Requirement
37
+ requirements:
38
+ - - "~>"
39
+ - !ruby/object:Gem::Version
40
+ version: '10.0'
41
+ - !ruby/object:Gem::Dependency
42
+ name: rspec
43
+ requirement: !ruby/object:Gem::Requirement
44
+ requirements:
45
+ - - ">="
46
+ - !ruby/object:Gem::Version
47
+ version: '0'
48
+ type: :development
49
+ prerelease: false
50
+ version_requirements: !ruby/object:Gem::Requirement
51
+ requirements:
52
+ - - ">="
53
+ - !ruby/object:Gem::Version
54
+ version: '0'
55
+ - !ruby/object:Gem::Dependency
56
+ name: pry-byebug
57
+ requirement: !ruby/object:Gem::Requirement
58
+ requirements:
59
+ - - ">="
60
+ - !ruby/object:Gem::Version
61
+ version: '0'
62
+ type: :development
63
+ prerelease: false
64
+ version_requirements: !ruby/object:Gem::Requirement
65
+ requirements:
66
+ - - ">="
67
+ - !ruby/object:Gem::Version
68
+ version: '0'
69
+ - !ruby/object:Gem::Dependency
70
+ name: settingslogic
71
+ requirement: !ruby/object:Gem::Requirement
72
+ requirements:
73
+ - - ">="
74
+ - !ruby/object:Gem::Version
75
+ version: '0'
76
+ type: :runtime
77
+ prerelease: false
78
+ version_requirements: !ruby/object:Gem::Requirement
79
+ requirements:
80
+ - - ">="
81
+ - !ruby/object:Gem::Version
82
+ version: '0'
83
+ - !ruby/object:Gem::Dependency
84
+ name: aws-sdk
85
+ requirement: !ruby/object:Gem::Requirement
86
+ requirements:
87
+ - - ">="
88
+ - !ruby/object:Gem::Version
89
+ version: '0'
90
+ type: :runtime
91
+ prerelease: false
92
+ version_requirements: !ruby/object:Gem::Requirement
93
+ requirements:
94
+ - - ">="
95
+ - !ruby/object:Gem::Version
96
+ version: '0'
97
+ - !ruby/object:Gem::Dependency
98
+ name: aws-sdk-core
99
+ requirement: !ruby/object:Gem::Requirement
100
+ requirements:
101
+ - - ">="
102
+ - !ruby/object:Gem::Version
103
+ version: '0'
104
+ type: :runtime
105
+ prerelease: false
106
+ version_requirements: !ruby/object:Gem::Requirement
107
+ requirements:
108
+ - - ">="
109
+ - !ruby/object:Gem::Version
110
+ version: '0'
111
+ description: ''
112
+ email:
113
+ - ''
114
+ executables: []
115
+ extensions: []
116
+ extra_rdoc_files: []
117
+ files:
118
+ - ".gitignore"
119
+ - ".rspec"
120
+ - ".travis.yml"
121
+ - Gemfile
122
+ - LICENSE.txt
123
+ - README.md
124
+ - Rakefile
125
+ - lib/multi_ec2_kiq.rb
126
+ - lib/multi_ec2_kiq/version.rb
127
+ - lib/settings.rb
128
+ - lib/settings.yml
129
+ - lib/threads/dynamodb.rb
130
+ - lib/threads/ec2.rb
131
+ - multi_ec2_kiq.gemspec
132
+ - spec/multi_ec2_kiq_spec.rb
133
+ - spec/spec_helper.rb
134
+ - spec/threads/dynamodb_spec.rb
135
+ - spec/threads/ec2_spec.rb
136
+ homepage: https://github.com/SrcHndWng/multi_ec2_kiq
137
+ licenses:
138
+ - MIT
139
+ metadata: {}
140
+ post_install_message:
141
+ rdoc_options: []
142
+ require_paths:
143
+ - lib
144
+ required_ruby_version: !ruby/object:Gem::Requirement
145
+ requirements:
146
+ - - ">="
147
+ - !ruby/object:Gem::Version
148
+ version: '0'
149
+ required_rubygems_version: !ruby/object:Gem::Requirement
150
+ requirements:
151
+ - - ">="
152
+ - !ruby/object:Gem::Version
153
+ version: '0'
154
+ requirements: []
155
+ rubyforge_project:
156
+ rubygems_version: 2.2.2
157
+ signing_key:
158
+ specification_version: 4
159
+ summary: This gem starts multi ec2 instances, and stops them if you command.
160
+ test_files:
161
+ - spec/multi_ec2_kiq_spec.rb
162
+ - spec/spec_helper.rb
163
+ - spec/threads/dynamodb_spec.rb
164
+ - spec/threads/ec2_spec.rb