automan 2.3.5 → 2.3.6

Sign up to get free protection for your applications and to get access to all the features.
Files changed (47) hide show
  1. checksums.yaml +4 -4
  2. data/Rakefile +0 -5
  3. data/automan.gemspec +3 -3
  4. data/lib/automan.rb +0 -1
  5. data/lib/automan/base.rb +3 -7
  6. data/lib/automan/beanstalk/deployer.rb +1 -1
  7. data/lib/automan/beanstalk/package.rb +1 -1
  8. data/lib/automan/beanstalk/router.rb +1 -1
  9. data/lib/automan/cli/snapper.rb +23 -3
  10. data/lib/automan/cli/stacker.rb +0 -19
  11. data/lib/automan/cloudformation/launcher.rb +3 -6
  12. data/lib/automan/cloudformation/replacer.rb +1 -1
  13. data/lib/automan/cloudformation/terminator.rb +1 -1
  14. data/lib/automan/ec2/image.rb +3 -3
  15. data/lib/automan/mixins/aws_caller.rb +7 -21
  16. data/lib/automan/rds/snapshot.rb +25 -35
  17. data/lib/automan/s3/downloader.rb +1 -10
  18. data/lib/automan/version.rb +1 -1
  19. data/spec/beanstalk/application_spec.rb +17 -17
  20. data/spec/beanstalk/configuration_spec.rb +24 -24
  21. data/spec/beanstalk/deployer_spec.rb +65 -65
  22. data/spec/beanstalk/router_spec.rb +19 -18
  23. data/spec/beanstalk/terminator_spec.rb +16 -16
  24. data/spec/beanstalk/uploader_spec.rb +13 -13
  25. data/spec/beanstalk/version_spec.rb +10 -8
  26. data/spec/cloudformation/launcher_spec.rb +65 -63
  27. data/spec/cloudformation/replacer_spec.rb +10 -10
  28. data/spec/cloudformation/terminator_spec.rb +23 -23
  29. data/spec/cloudformation/uploader_spec.rb +13 -13
  30. data/spec/ec2/image_spec.rb +55 -55
  31. data/spec/ec2/instance_spec.rb +17 -17
  32. data/spec/mixins/aws_caller_spec.rb +9 -9
  33. data/spec/mixins/utils_spec.rb +28 -27
  34. data/spec/rds/snapshot_spec.rb +46 -44
  35. metadata +9 -22
  36. data/.ruby-gemset +0 -1
  37. data/.ruby-version +0 -1
  38. data/.travis.yml +0 -5
  39. data/lib/automan/elasticache/router.rb +0 -79
  40. data/spec/elasticache/router_spec.rb +0 -29
  41. data/templates/stacker/.env.example +0 -14
  42. data/templates/stacker/.gitignore +0 -2
  43. data/templates/stacker/.ruby-gemset.tt +0 -1
  44. data/templates/stacker/.ruby-version +0 -1
  45. data/templates/stacker/Gemfile +0 -4
  46. data/templates/stacker/bin/%app_name%.tt +0 -62
  47. data/templates/stacker/bin/launch_%app_name%.sh.tt +0 -12
@@ -23,10 +23,10 @@ describe Automan::Beanstalk::Configuration do
23
23
  describe '#config_template_exists?' do
24
24
 
25
25
  it 'returns false if raises InvalidParameterValue with missing config template message' do
26
+ c.eb = double(:eb)
26
27
  error = AWS::ElasticBeanstalk::Errors::InvalidParameterValue.new('No Configuration Template named')
27
- subject.eb = double()
28
- allow(subject.eb).to receive(:describe_configuration_settings).and_raise(error)
29
- expect(subject.config_template_exists?).to be_falsey
28
+ c.eb.stub(:describe_configuration_settings).and_raise(error)
29
+ c.config_template_exists?.should be_false
30
30
  end
31
31
  end
32
32
 
@@ -48,51 +48,51 @@ describe Automan::Beanstalk::Configuration do
48
48
  }
49
49
  ]
50
50
 
51
- expect(subject.fix_config_keys(config_before)).to eq(config_after)
51
+ c.fix_config_keys(config_before).should eq(config_after)
52
52
  end
53
53
  end
54
54
 
55
55
  describe '#create' do
56
56
  it 'does not create if configuration exists' do
57
- allow(subject).to receive(:config_template_exists?).and_return(true)
58
- expect(subject).to_not receive(:create_config_template)
59
- subject.create
57
+ c.stub(:config_template_exists?).and_return(true)
58
+ c.should_not_receive(:create_config_template)
59
+ c.create
60
60
  end
61
61
 
62
62
  it 'does create if configuration does not exist' do
63
- allow(subject).to receive(:config_template_exists?).and_return(false)
64
- expect(subject).to receive(:create_config_template)
65
- subject.create
63
+ c.stub(:config_template_exists?).and_return(false)
64
+ c.should_receive(:create_config_template)
65
+ c.create
66
66
  end
67
67
  end
68
68
 
69
69
  describe '#delete' do
70
70
  it 'does delete if configuration exists' do
71
- allow(subject).to receive(:config_template_exists?).and_return(true)
72
- expect(subject).to receive(:delete_config_template)
73
- subject.delete
71
+ c.stub(:config_template_exists?).and_return(true)
72
+ c.should_receive(:delete_config_template)
73
+ c.delete
74
74
  end
75
75
 
76
76
  it 'does not delete if configuration does not exist' do
77
- allow(subject).to receive(:config_template_exists?).and_return(false)
78
- expect(subject).to_not receive(:delete_config_template)
79
- subject.delete
77
+ c.stub(:config_template_exists?).and_return(false)
78
+ c.should_not_receive(:delete_config_template)
79
+ c.delete
80
80
  end
81
81
  end
82
82
 
83
83
  describe '#update' do
84
84
  it 'deletes configuration and recreates it if it exists' do
85
- allow(subject).to receive(:config_template_exists?).and_return(true)
86
- expect(subject).to receive(:delete_config_template)
87
- expect(subject).to receive(:create_config_template)
88
- subject.update
85
+ c.stub(:config_template_exists?).and_return(true)
86
+ c.should_receive(:delete_config_template)
87
+ c.should_receive(:create_config_template)
88
+ c.update
89
89
  end
90
90
 
91
91
  it 'does not try to delete configuration if it does not exist' do
92
- allow(subject).to receive(:config_template_exists?).and_return(false)
93
- expect(subject).to_not receive(:delete_config_template)
94
- expect(subject).to receive(:create_config_template)
95
- subject.update
92
+ c.stub(:config_template_exists?).and_return(false)
93
+ c.should_not_receive(:delete_config_template)
94
+ c.should_receive(:create_config_template)
95
+ c.update
96
96
  end
97
97
  end
98
98
  end
@@ -2,59 +2,59 @@ require "automan"
2
2
 
3
3
  describe Automan::Beanstalk::Deployer do
4
4
 
5
- it { is_expected.to respond_to :name }
6
- it { is_expected.to respond_to :version_label }
7
- it { is_expected.to respond_to :package }
8
- it { is_expected.to respond_to :environment }
9
- it { is_expected.to respond_to :manifest }
10
- it { is_expected.to respond_to :read_manifest }
11
- it { is_expected.to respond_to :manifest_exists? }
12
- it { is_expected.to respond_to :package_exists? }
13
- it { is_expected.to respond_to :environment_status }
14
- it { is_expected.to respond_to :configuration_template }
15
- it { is_expected.to respond_to :deploy }
16
- it { is_expected.to respond_to :update_environment }
17
- it { is_expected.to respond_to :create_environment }
5
+ it { should respond_to :name }
6
+ it { should respond_to :version_label }
7
+ it { should respond_to :package }
8
+ it { should respond_to :environment }
9
+ it { should respond_to :manifest }
10
+ it { should respond_to :read_manifest }
11
+ it { should respond_to :manifest_exists? }
12
+ it { should respond_to :package_exists? }
13
+ it { should respond_to :environment_status }
14
+ it { should respond_to :configuration_template }
15
+ it { should respond_to :deploy }
16
+ it { should respond_to :update_environment }
17
+ it { should respond_to :create_environment }
18
18
 
19
19
  # Constraint: Must be from 4 to 23 characters in length.
20
20
  # The name can contain only letters, numbers, and hyphens.
21
21
  # It cannot start or end with a hyphen.
22
22
  describe '#eb_environment_name' do
23
- subject() { Automan::Beanstalk::Deployer.new }
23
+ subject(:bd) { Automan::Beanstalk::Deployer.new }
24
24
 
25
25
  it "is at least 4 characters" do
26
- subject.name = "a"
27
- subject.environment = "a"
28
- expect(subject.eb_environment_name.length).to be >= 4
26
+ bd.name = "a"
27
+ bd.environment = "a"
28
+ bd.eb_environment_name.length.should be >= 4
29
29
  end
30
30
 
31
31
  it "is no more than 23 characters" do
32
- subject.name = "a" * 23
33
- subject.environment = "dev"
34
- expect(subject.eb_environment_name.length).to be <= 23
32
+ bd.name = "a" * 23
33
+ bd.environment = "dev"
34
+ bd.eb_environment_name.length.should be <= 23
35
35
  end
36
36
 
37
37
  it "contains only letters, numbers, and hyphens" do
38
- subject.name = '@#$%^foo_bar!$%&&E.'
39
- subject.environment = 'prod.baz'
40
- expect(subject.eb_environment_name).to match(/[a-z0-9-]+/)
38
+ bd.name = '@#$%^foo_bar!$%&&E.'
39
+ bd.environment = 'prod.baz'
40
+ bd.eb_environment_name.should match(/[a-z0-9-]+/)
41
41
  end
42
42
 
43
43
  it "cannot start or end with a hyphen" do
44
- subject.name = '--foo'
45
- subject.environment = 'bar--'
46
- expect(subject.eb_environment_name).to match(/^[^-].*[^-]$/)
44
+ bd.name = '--foo'
45
+ bd.environment = 'bar--'
46
+ bd.eb_environment_name.should match(/^[^-].*[^-]$/)
47
47
  end
48
48
 
49
49
  it "is still at least 4 characters even after removing restricted strings" do
50
- subject.name = '--f'
51
- subject.environment = '-'
52
- expect(subject.eb_environment_name.length).to be >= 4
50
+ bd.name = '--f'
51
+ bd.environment = '-'
52
+ bd.eb_environment_name.length.should be >= 4
53
53
  end
54
54
  end
55
55
 
56
56
  describe '#read_manifest' do
57
- subject() do
57
+ subject(:d) do
58
58
  AWS.stub!
59
59
  d = Automan::Beanstalk::Deployer.new
60
60
  d.logger = Logger.new('/dev/null')
@@ -62,23 +62,23 @@ describe Automan::Beanstalk::Deployer do
62
62
  end
63
63
 
64
64
  it 'raises MissingManifestError if the manifest is missing' do
65
- expect(subject).to receive(:manifest_exists?).and_return(false)
65
+ d.stub(:manifest_exists?).and_return(false)
66
66
  expect {
67
- subject.read_manifest
67
+ d.read_manifest
68
68
  }.to raise_error(Automan::Beanstalk::MissingManifestError)
69
69
  end
70
70
 
71
71
  it 'sets version_label and package properly' do
72
- allow(subject).to receive(:manifest_exists?).and_return(true)
73
- allow(subject).to receive(:s3_read).and_return('{"version_label": "foo", "package": "bar"}')
74
- subject.read_manifest
75
- expect(subject.version_label).to eq('foo')
76
- expect(subject.package).to eq('bar')
72
+ d.stub(:manifest_exists?).and_return(true)
73
+ d.stub(:s3_read).and_return('{"version_label": "foo", "package": "bar"}')
74
+ d.read_manifest
75
+ d.version_label.should eq('foo')
76
+ d.package.should eq('bar')
77
77
  end
78
78
  end
79
79
 
80
80
  describe '#deploy' do
81
- subject() do
81
+ subject(:d) do
82
82
  AWS.stub!
83
83
  d = Automan::Beanstalk::Deployer.new
84
84
  d.logger = Logger.new('/dev/null')
@@ -86,22 +86,22 @@ describe Automan::Beanstalk::Deployer do
86
86
  end
87
87
 
88
88
  it 'raises MissingPackageError if the package does not exist' do
89
- allow(subject).to receive(:package_exists?).and_return(false)
89
+ d.stub(:package_exists?).and_return(false)
90
90
  expect {
91
- subject.deploy
91
+ d.deploy
92
92
  }.to raise_error(Automan::Beanstalk::MissingPackageFileError)
93
93
  end
94
94
 
95
95
  it 'makes sure the application version and environment exists' do
96
- allow(subject).to receive(:package_exists?).and_return(true)
97
- expect(subject).to receive(:ensure_version_exists)
98
- expect(subject).to receive(:create_or_update_environment)
99
- subject.deploy
96
+ d.stub(:package_exists?).and_return(true)
97
+ d.should_receive(:ensure_version_exists)
98
+ d.should_receive(:create_or_update_environment)
99
+ d.deploy
100
100
  end
101
101
  end
102
102
 
103
103
  describe '#ensure_version_exists' do
104
- subject() do
104
+ subject(:d) do
105
105
  AWS.stub!
106
106
  d = Automan::Beanstalk::Deployer.new
107
107
  d.logger = Logger.new('/dev/null')
@@ -109,51 +109,51 @@ describe Automan::Beanstalk::Deployer do
109
109
  end
110
110
 
111
111
  it 'creates version if it does not exist' do
112
- version = double()
113
- allow(version).to receive(:exists?).and_return(false)
114
- expect(version).to receive(:create)
115
- allow(subject).to receive(:get_version).and_return(version)
116
- subject.ensure_version_exists
112
+ version = double(:version)
113
+ version.stub(:exists?).and_return(false)
114
+ version.should_receive(:create)
115
+ d.stub(:get_version).and_return(version)
116
+ d.ensure_version_exists
117
117
  end
118
118
 
119
119
  it 'does not create version if it exists' do
120
- version = double()
121
- allow(version).to receive(:exists?).and_return(true)
122
- expect(version).to_not receive(:create)
123
- allow(subject).to receive(:get_version).and_return(version)
124
- subject.ensure_version_exists
120
+ version = double(:version)
121
+ version.stub(:exists?).and_return(true)
122
+ version.should_not_receive(:create)
123
+ d.stub(:get_version).and_return(version)
124
+ d.ensure_version_exists
125
125
  end
126
126
  end
127
127
 
128
128
  describe '#create_or_update_environment' do
129
- subject() do
129
+ subject(:d) do
130
130
  AWS.stub!
131
131
  d = Automan::Beanstalk::Deployer.new
132
132
  d.logger = Logger.new('/dev/null')
133
- allow(d).to receive(:ensure_version_exists)
133
+ d.stub(:ensure_version_exists)
134
134
  d
135
135
  end
136
136
 
137
137
  [nil, 'Terminated'].each do |state|
138
138
  it "creates environment if state is #{state.nil? ? 'nil' : state}" do
139
- allow(subject).to receive(:environment_status).and_return(state)
140
- expect(subject).to receive(:create_environment)
141
- subject.create_or_update_environment
139
+ d.stub(:environment_status).and_return(state)
140
+ d.should_receive(:create_environment)
141
+ d.create_or_update_environment
142
142
  end
143
143
  end
144
144
 
145
145
  ['Ready'].each do |state|
146
146
  it "updates environment if state is #{state.nil? ? 'nil' : state}" do
147
- allow(subject).to receive(:environment_status).and_return(state)
148
- expect(subject).to receive(:update_environment)
149
- subject.create_or_update_environment
147
+ d.stub(:environment_status).and_return(state)
148
+ d.should_receive(:update_environment)
149
+ d.create_or_update_environment
150
150
  end
151
151
  end
152
152
 
153
153
  it 'raises error if environment state is anything else' do
154
- allow(subject).to receive(:environment_status).and_return('foo')
154
+ d.stub(:environment_status).and_return('foo')
155
155
  expect {
156
- subject.create_or_update_environment
156
+ d.create_or_update_environment
157
157
  }.to raise_error(Automan::Beanstalk::InvalidEnvironmentStatusError)
158
158
  end
159
159
  end
@@ -2,14 +2,14 @@ require 'automan'
2
2
  require 'wait'
3
3
 
4
4
  describe Automan::Beanstalk::Router do
5
- it { is_expected.to respond_to :run }
6
- it { is_expected.to respond_to :environment_name }
7
- it { is_expected.to respond_to :hosted_zone_name }
8
- it { is_expected.to respond_to :hostname }
5
+ it { should respond_to :run }
6
+ it { should respond_to :environment_name }
7
+ it { should respond_to :hosted_zone_name }
8
+ it { should respond_to :hostname }
9
9
 
10
10
  describe '#run' do
11
11
  context 'waiting' do
12
- subject() do
12
+ subject(:r) do
13
13
  AWS.stub!
14
14
  r = Automan::Beanstalk::Router.new
15
15
  r.eb = AWS::ElasticBeanstalk::Client.new
@@ -17,47 +17,48 @@ describe Automan::Beanstalk::Router do
17
17
  r.environment_name = 'foo'
18
18
  r.hosted_zone_name = 'foo.com'
19
19
  r.hostname = 'www.foo.com'
20
+ r.log_aws_calls = false
20
21
  r.logger = Logger.new('/dev/null')
21
22
  r.wait = Wait.new(delay: 0.01, rescuer: WaitRescuer.new(AWS::Route53::Errors::InvalidChangeBatch))
22
23
  r
23
24
  end
24
25
 
25
26
  it "raises error if it never finds a name" do
26
- allow(subject).to receive(:elb_cname_from_beanstalk_environment).and_return(nil)
27
+ r.stub(:elb_cname_from_beanstalk_environment).and_return(nil)
27
28
  expect {
28
- subject.run
29
+ r.run
29
30
  }.to raise_error Wait::ResultInvalid
30
31
  end
31
32
 
32
33
  it "calls #update_dns_alias if it finds a name" do
33
- allow(subject).to receive(:elb_cname_from_beanstalk_environment).and_return('foo')
34
- expect(subject).to receive(:update_dns_alias)
35
- subject.run
34
+ r.stub(:elb_cname_from_beanstalk_environment).and_return('foo')
35
+ r.should_receive(:update_dns_alias)
36
+ r.run
36
37
  end
37
38
 
38
39
  it "ignores InvalidChangeBatch until last attempt" do
39
- allow(subject).to receive(:elb_cname_from_beanstalk_environment).and_return('foo')
40
- allow(subject).to receive(:update_dns_alias).and_raise AWS::Route53::Errors::InvalidChangeBatch
40
+ r.stub(:elb_cname_from_beanstalk_environment).and_return('foo')
41
+ r.stub(:update_dns_alias).and_raise AWS::Route53::Errors::InvalidChangeBatch
41
42
  expect {
42
- subject.run
43
+ r.run
43
44
  }.to raise_error AWS::Route53::Errors::InvalidChangeBatch
44
- expect(subject.attempts_made).to eq 5
45
+ r.attempts_made.should eq 5
45
46
  end
46
47
 
47
48
  it "ignores InvalidChangeBatch until it succeeds" do
48
- allow(subject).to receive(:elb_cname_from_beanstalk_environment).and_return('foo')
49
+ r.stub(:elb_cname_from_beanstalk_environment).and_return('foo')
49
50
 
50
51
  @attempts = 0
51
- allow(subject).to receive(:update_dns_alias) do
52
+ r.stub(:update_dns_alias) do
52
53
  @attempts += 1
53
54
  raise AWS::Route53::Errors::InvalidChangeBatch if @attempts < 3
54
55
  end
55
56
 
56
57
  expect {
57
- subject.run
58
+ r.run
58
59
  }.not_to raise_error
59
60
 
60
- expect(subject.attempts_made).to eq 3
61
+ r.attempts_made.should eq 3
61
62
  end
62
63
  end
63
64
  end
@@ -14,33 +14,33 @@ describe Automan::Beanstalk::Terminator do
14
14
  end
15
15
 
16
16
  it "returns false if environment does not exist" do
17
- resp = subject.eb.stub_for :describe_environments
17
+ resp = t.eb.stub_for :describe_environments
18
18
  resp.data[:environments] = [{}]
19
- expect(subject.environment_exists?('foo')).to be_falsey
19
+ t.environment_exists?('foo').should be_false
20
20
  end
21
21
 
22
22
  it "returns false if environment is in Terminated state" do
23
- resp = subject.eb.stub_for :describe_environments
23
+ resp = t.eb.stub_for :describe_environments
24
24
  resp.data[:environments] = [{environment_name: 'foo', status: 'Terminated'}]
25
- expect(subject.environment_exists?('foo')).to be_falsey
25
+ t.environment_exists?('foo').should be_false
26
26
  end
27
27
 
28
28
  it "returns false if environment is in Terminating state" do
29
- resp = subject.eb.stub_for :describe_environments
29
+ resp = t.eb.stub_for :describe_environments
30
30
  resp.data[:environments] = [{environment_name: 'foo', status: 'Terminating'}]
31
- expect(subject.environment_exists?('foo')).to be_falsey
31
+ t.environment_exists?('foo').should be_false
32
32
  end
33
33
 
34
34
  it "returns true if environment does exist" do
35
- resp = subject.eb.stub_for :describe_environments
35
+ resp = t.eb.stub_for :describe_environments
36
36
  resp.data[:environments] = [{environment_name: 'foo'}]
37
- expect(subject.environment_exists?('foo')).to be_truthy
37
+ t.environment_exists?('foo').should be_true
38
38
  end
39
39
 
40
40
  it "returns true if environment is in Ready state" do
41
- resp = subject.eb.stub_for :describe_environments
41
+ resp = t.eb.stub_for :describe_environments
42
42
  resp.data[:environments] = [{environment_name: 'foo', status: 'Ready'}]
43
- expect(subject.environment_exists?('foo')).to be_truthy
43
+ t.environment_exists?('foo').should be_true
44
44
  end
45
45
  end
46
46
 
@@ -53,15 +53,15 @@ describe Automan::Beanstalk::Terminator do
53
53
  end
54
54
 
55
55
  it 'should call #terminate_environment if the environment exists' do
56
- allow(subject).to receive(:environment_exists?).and_return(true)
57
- expect(subject).to receive :terminate_environment
58
- subject.terminate
56
+ t.stub(:environment_exists?).and_return(true)
57
+ t.should_receive :terminate_environment
58
+ t.terminate
59
59
  end
60
60
 
61
61
  it 'should not call #terminate_environment if the environment does not exist' do
62
- allow(subject).to receive(:environment_exists?).and_return(false)
63
- expect(subject).to_not receive :terminate_environment
64
- subject.terminate
62
+ t.stub(:environment_exists?).and_return(false)
63
+ t.should_not_receive :terminate_environment
64
+ t.terminate
65
65
  end
66
66
  end
67
67
  end