ebs_snapper 0.0.9 → 0.0.10

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: cb6f5bd627a4e313748244d4b636a7cf304123b5
4
+ data.tar.gz: a7e27644727f54cfde5dc9068df90141319f0371
5
+ SHA512:
6
+ metadata.gz: f507337479c0be1df17d56e3bc922d004422ac89b3e25a3a1522c46f6ab4c511d532de431b61b9fc21080f08656e99aaa255dbb4b9a07f47b3533a8e1c7807c5
7
+ data.tar.gz: c6d1d8a4c14526bbbf04a272cf2eb5c4f8846467c420172c847ea337e45be660efe2a2f780da70e4800af1e45025683690dc73609a9681082af37d7efb1897c7
data/ebs_snapper.gemspec CHANGED
@@ -15,11 +15,14 @@ Gem::Specification.new do |s|
15
15
  s.name = "ebs_snapper"
16
16
  s.require_paths = ["lib"]
17
17
  s.version = EbsSnapper::VERSION
18
-
19
- s.add_runtime_dependency "aws-sdk", "~> 1.31.3"
20
-
18
+
19
+ # s.add_runtime_dependency "aws-sdk", "~> 2.0"
20
+ s.add_runtime_dependency "aws-sdk", '~> 1.57.0'
21
+ s.add_runtime_dependency "aws-sdk-v1"
22
+
21
23
  s.add_development_dependency "rake"
22
24
  s.add_development_dependency "rspec"
25
+ s.add_development_dependency "rspec-mocks"
23
26
  s.add_development_dependency "fakeweb"
24
-
27
+
25
28
  end
@@ -1,11 +1,11 @@
1
1
  # Copyright 2012 NeuStar, Inc. All rights reserved.
2
- #
2
+ #
3
3
  # Licensed under the Apache License, Version 2.0 (the "License");
4
4
  # you may not use this file except in compliance with the License.
5
5
  # You may obtain a copy of the License at
6
- #
6
+ #
7
7
  # http://www.apache.org/licenses/LICENSE-2.0
8
- #
8
+ #
9
9
  # Unless required by applicable law or agreed to in writing, software
10
10
  # distributed under the License is distributed on an "AS IS" BASIS,
11
11
  # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
@@ -13,5 +13,5 @@
13
13
  # limitations under the License.
14
14
 
15
15
  module EbsSnapper
16
- VERSION = "0.0.9"
16
+ VERSION = "0.0.10"
17
17
  end
data/spec/lib/ebs_spec.rb CHANGED
@@ -1,11 +1,11 @@
1
1
  # Copyright 2012 NeuStar, Inc. All rights reserved.
2
- #
2
+ #
3
3
  # Licensed under the Apache License, Version 2.0 (the "License");
4
4
  # you may not use this file except in compliance with the License.
5
5
  # You may obtain a copy of the License at
6
- #
6
+ #
7
7
  # http://www.apache.org/licenses/LICENSE-2.0
8
- #
8
+ #
9
9
  # Unless required by applicable law or agreed to in writing, software
10
10
  # distributed under the License is distributed on an "AS IS" BASIS,
11
11
  # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
@@ -16,106 +16,106 @@ require 'spec_helper'
16
16
  require 'fakeweb'
17
17
  require 'ostruct'
18
18
 
19
- describe EbsSnapper::Ebs do
19
+ describe EbsSnapper::Ebs do
20
20
  DEFAULT_TAG_NAME = EbsSnapper::Ebs::DEFAULT_TAG_NAME
21
-
22
-
21
+
22
+
23
23
  it "should run purge_old_snapshots in dry mode" do
24
24
  ebs = EbsSnapper::Ebs.new({}, true)
25
25
  ttl = EbsSnapper::Ebs::TTL.new("1.day") # 1 day
26
26
  region = OpenStruct.new
27
-
27
+
28
28
  snapshot_old = OpenStruct.new
29
29
  snapshot_old.status = :complete
30
30
  snapshot_old.tags = {DEFAULT_TAG_NAME => Time.now.utc.to_i - (86400 * 2)}
31
- snapshot_old.should_not_receive(:delete)
32
-
31
+ expect(snapshot_old).to_not receive(:delete)
32
+
33
33
  region.snapshots = [snapshot_old]
34
34
  region.snapshots.stub(:filter).and_return(region.snapshots)
35
-
35
+
36
36
  ebs.purge_old_snapshots(ttl, region, 2)
37
37
  end
38
-
38
+
39
39
  it "should run snapshot_volume in dry mode" do
40
40
  ebs = EbsSnapper::Ebs.new({}, true)
41
-
41
+
42
42
  region = OpenStruct.new
43
43
  region.tags = []
44
44
  region.id = '999'
45
-
45
+
46
46
  volume = OpenStruct.new
47
47
  volume.should_not_receive(:create_snapshot)
48
48
  region.volumes = {3 => volume}
49
-
50
- ebs.snapshot_volume(region, 3).should == true
49
+
50
+ expect(ebs.snapshot_volume(region, 3)).to eql(true)
51
51
  end
52
-
52
+
53
53
  it "should find tagged volumes in a region" do
54
54
  ebs = EbsSnapper::Ebs.new
55
-
55
+
56
56
  tag = OpenStruct.new
57
57
  tag.resource = OpenStruct.new(:id => 1)
58
-
58
+
59
59
  tags = [tag]
60
60
  tags.stub(:filter).and_return(tags)
61
-
61
+
62
62
  region = OpenStruct.new
63
63
  region.tags = tags
64
64
  region.id = '999'
65
-
65
+
66
66
  ebs.stub(:each_region).and_yield(region)
67
-
67
+
68
68
  vols = ebs.tagged_volumes
69
- vols.size.should == 1
69
+ expect(vols.size).to eql(1)
70
+
71
+ expect(vols[0][:region].id).to eql(region.id)
72
+ expect(vols[0][:volume_id]).to be == tag.resource.id
73
+ expect(vols[0][:ttl]).to_not be == nil
70
74
 
71
- vols[0][:region].id.should == region.id
72
- vols[0][:volume_id].should == tag.resource.id
73
- vols[0][:ttl].should_not == nil
74
-
75
75
  two_days_secs = EbsSnapper::Ebs::TTL.new().convert_to_seconds(0).to_i
76
76
  span_begin = (Time.now.utc.to_i - two_days_secs) - 10
77
77
  span_end = (Time.now.utc.to_i - two_days_secs) + 1
78
- vols[0][:ttl].cut_off.should > span_begin
79
- vols[0][:ttl].cut_off.should < span_end
78
+ expect(vols[0][:ttl].cut_off).to be > span_begin
79
+ expect(vols[0][:ttl].cut_off).to be < span_end
80
80
  end
81
-
81
+
82
82
  it "should use retention from the tag in a volume in a region" do
83
83
  ebs = EbsSnapper::Ebs.new
84
-
84
+
85
85
  tag = OpenStruct.new
86
86
  tag.resource = OpenStruct.new(:id => 1)
87
87
  tag.value = "2.days"
88
-
88
+
89
89
  tags = [tag]
90
90
  tags.stub(:filter).and_return(tags)
91
-
91
+
92
92
  region = OpenStruct.new
93
93
  region.tags = tags
94
94
  region.id = '999'
95
-
95
+
96
96
  ebs.stub(:each_region).and_yield(region)
97
-
97
+
98
98
  vols = ebs.tagged_volumes
99
99
  vols.size.should == 1
100
100
 
101
101
  vols[0][:region].id.should == region.id
102
102
  vols[0][:volume_id].should == tag.resource.id
103
103
  vols[0][:ttl].should_not == nil
104
-
104
+
105
105
  two_days_secs = EbsSnapper::Ebs::TTL.new().convert_to_seconds('2.days').to_i
106
106
  span_begin = (Time.now.utc.to_i - two_days_secs) - 10
107
107
  span_end = (Time.now.utc.to_i - two_days_secs) + 1
108
108
  vols[0][:ttl].cut_off.should > span_begin
109
109
  vols[0][:ttl].cut_off.should < span_end
110
110
  end
111
-
111
+
112
112
  it "should pruge old timestamps" do
113
113
  ttl = EbsSnapper::Ebs::TTL.new("1.day") # 1 day
114
114
  ttl.purge?(Time.now.utc.to_i - (86400 * 3)).should == true
115
115
  ttl.purge?(Time.now.utc.to_i - (86400 + 3601)).should == true
116
116
  ttl.purge?("#{Time.now.utc.to_i - (86400 + 3601)}").should == true
117
117
  end
118
-
118
+
119
119
  it "shouldn't pruge new timestamps" do
120
120
  ttl = EbsSnapper::Ebs::TTL.new("1.day") # 1 day
121
121
  ttl.purge?(Time.now.utc.to_i - (3600)).should == false
@@ -124,19 +124,19 @@ describe EbsSnapper::Ebs do
124
124
  # we give it 1 hr around the timestamp
125
125
  ttl.purge?(Time.now.utc.to_i - 86400).should == false
126
126
  end
127
-
127
+
128
128
  it "should convert day ttls to seconds" do
129
129
  ttl = EbsSnapper::Ebs::TTL.new("1.day") # 1 day
130
130
  ttl.convert_to_seconds("1.day").should == 86400 + 3600
131
131
  cut_off_10 = ttl.convert_to_seconds("10.days")
132
- cut_off_10.should == (86400 * 10) + 3600
132
+ cut_off_10.should == (86400 * 10) + 3600
133
133
  end
134
-
134
+
135
135
  it "should convert hour ttls to seconds" do
136
- ttl = EbsSnapper::Ebs::TTL.new()
136
+ ttl = EbsSnapper::Ebs::TTL.new()
137
137
  ttl.convert_to_seconds("3.hours").should == (3600 * 3)
138
138
  end
139
-
139
+
140
140
  it "should set default ttl to seconds" do
141
141
  ten_days_secs = (86400 * 10) + 3600
142
142
  between_a = Time.now.utc.to_i - ten_days_secs
@@ -145,69 +145,69 @@ describe EbsSnapper::Ebs do
145
145
  between_b = tm - ten_days_secs
146
146
  ttl.cut_off.should >= between_a
147
147
  ttl.cut_off.should <= between_b
148
-
148
+
149
149
  ttl.convert_to_seconds("asfljasdfjl").should == ten_days_secs
150
150
  end
151
-
151
+
152
152
  it "should snapshot a volume" do
153
-
153
+
154
154
  ebs = EbsSnapper::Ebs.new
155
-
155
+
156
156
  tag = OpenStruct.new
157
157
  tag.resource = OpenStruct.new(:id => 1)
158
-
158
+
159
159
  tags = [tag]
160
160
  tags.stub(:filter).and_return(tags)
161
-
161
+
162
162
  region = OpenStruct.new
163
163
  region.tags = tags
164
164
  region.id = '999'
165
-
165
+
166
166
  snapshot = Object.new
167
- snapshot.should_receive(:tag).with(DEFAULT_TAG_NAME,
168
- hash_including(:value => RSpec::Mocks::ArgumentMatchers::RegexpMatcher.new(/^\d+/))) {true}
169
-
167
+ expect(snapshot).to receive(:tag).with(DEFAULT_TAG_NAME,
168
+ hash_including(:value => match(/^\d+/))) {true}
169
+
170
170
  volume = OpenStruct.new
171
- volume.should_receive(:create_snapshot) {snapshot}
171
+ expect(volume).to receive(:create_snapshot) {snapshot}
172
172
  region.volumes = {3 => volume}
173
173
  ebs.snapshot_volume(region, 3).should == true
174
174
 
175
175
  # id 1 is not found (nil)
176
176
  ebs.snapshot_volume(region, 1).should == true
177
177
  end
178
-
178
+
179
179
  it "should purge old snapshots" do
180
180
  ebs = EbsSnapper::Ebs.new
181
181
  ttl = EbsSnapper::Ebs::TTL.new("1.day") # 1 day
182
182
  region = OpenStruct.new
183
-
183
+
184
184
  snapshot_old = OpenStruct.new
185
185
  snapshot_old.status = :complete
186
186
  snapshot_old.tags = {DEFAULT_TAG_NAME => Time.now.utc.to_i - (86400 * 2)}
187
- snapshot_old.should_receive(:delete)
187
+ expect(snapshot_old).to receive(:delete)
188
188
 
189
189
  snapshot_old_error = OpenStruct.new
190
190
  snapshot_old_error.status = :error
191
191
  snapshot_old_error.tags = {DEFAULT_TAG_NAME => Time.now.utc.to_i - (86400 * 2)}
192
- snapshot_old_error.should_receive(:delete)
193
-
194
-
192
+ expect(snapshot_old_error).to receive(:delete)
193
+
194
+
195
195
  snapshot_new = OpenStruct.new
196
196
  snapshot_new.status = :complete
197
197
  snapshot_new.tags = {DEFAULT_TAG_NAME => Time.now.utc.to_i - (3600 * 3)}
198
- snapshot_new.should_receive(:delete).never
199
-
198
+ expect(snapshot_new).to_not receive(:delete)
199
+
200
200
  snapshot_pending = OpenStruct.new
201
201
  snapshot_pending.status = :pending
202
202
  snapshot_pending.tags = {DEFAULT_TAG_NAME => Time.now.utc.to_i - (86400 * 3)}
203
- snapshot_pending.should_receive(:delete).never
204
-
203
+ expect(snapshot_pending).to_not receive(:delete)
204
+
205
205
  region.snapshots = [snapshot_old, snapshot_new, snapshot_pending, snapshot_old_error]
206
206
  region.snapshots.stub(:filter).and_return(region.snapshots)
207
-
207
+
208
208
  ebs.purge_old_snapshots(ttl, region, 2)
209
209
  end
210
-
210
+
211
211
  it "should flow through snapshot and purge" do
212
212
  ebs = EbsSnapper::Ebs.new
213
213
  ebs.stub(:tagged_volumes).and_return([{
@@ -215,9 +215,9 @@ describe EbsSnapper::Ebs do
215
215
  :region => 'us-east-1',
216
216
  :volume_id => 1
217
217
  }])
218
-
219
- ebs.should_receive(:snapshot_volume).with(anything(), anything()).once.and_return()
220
- ebs.should_receive(:purge_old_snapshots).with(anything(), anything(), anything()).once.and_return()
218
+
219
+ expect(ebs).to receive(:snapshot_volume).with(anything(), anything()).once
220
+ expect(ebs).to receive(:purge_old_snapshots).with(anything(), anything(), anything()).once
221
221
 
222
222
  ebs.snapshot_and_purge()
223
223
  end
metadata CHANGED
@@ -1,78 +1,97 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: ebs_snapper
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.9
5
- prerelease:
4
+ version: 0.0.10
6
5
  platform: ruby
7
6
  authors:
8
7
  - ultradns
9
8
  autorequire:
10
9
  bindir: bin
11
10
  cert_chain: []
12
- date: 2014-01-14 00:00:00.000000000 Z
11
+ date: 2014-10-24 00:00:00.000000000 Z
13
12
  dependencies:
14
13
  - !ruby/object:Gem::Dependency
15
14
  name: aws-sdk
16
15
  requirement: !ruby/object:Gem::Requirement
17
- none: false
18
16
  requirements:
19
- - - ~>
17
+ - - "~>"
20
18
  - !ruby/object:Gem::Version
21
- version: 1.31.3
19
+ version: 1.57.0
22
20
  type: :runtime
23
21
  prerelease: false
24
22
  version_requirements: !ruby/object:Gem::Requirement
25
- none: false
26
23
  requirements:
27
- - - ~>
24
+ - - "~>"
28
25
  - !ruby/object:Gem::Version
29
- version: 1.31.3
26
+ version: 1.57.0
27
+ - !ruby/object:Gem::Dependency
28
+ name: aws-sdk-v1
29
+ requirement: !ruby/object:Gem::Requirement
30
+ requirements:
31
+ - - ">="
32
+ - !ruby/object:Gem::Version
33
+ version: '0'
34
+ type: :runtime
35
+ prerelease: false
36
+ version_requirements: !ruby/object:Gem::Requirement
37
+ requirements:
38
+ - - ">="
39
+ - !ruby/object:Gem::Version
40
+ version: '0'
30
41
  - !ruby/object:Gem::Dependency
31
42
  name: rake
32
43
  requirement: !ruby/object:Gem::Requirement
33
- none: false
34
44
  requirements:
35
- - - ! '>='
45
+ - - ">="
36
46
  - !ruby/object:Gem::Version
37
47
  version: '0'
38
48
  type: :development
39
49
  prerelease: false
40
50
  version_requirements: !ruby/object:Gem::Requirement
41
- none: false
42
51
  requirements:
43
- - - ! '>='
52
+ - - ">="
44
53
  - !ruby/object:Gem::Version
45
54
  version: '0'
46
55
  - !ruby/object:Gem::Dependency
47
56
  name: rspec
48
57
  requirement: !ruby/object:Gem::Requirement
49
- none: false
50
58
  requirements:
51
- - - ! '>='
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: rspec-mocks
71
+ requirement: !ruby/object:Gem::Requirement
72
+ requirements:
73
+ - - ">="
52
74
  - !ruby/object:Gem::Version
53
75
  version: '0'
54
76
  type: :development
55
77
  prerelease: false
56
78
  version_requirements: !ruby/object:Gem::Requirement
57
- none: false
58
79
  requirements:
59
- - - ! '>='
80
+ - - ">="
60
81
  - !ruby/object:Gem::Version
61
82
  version: '0'
62
83
  - !ruby/object:Gem::Dependency
63
84
  name: fakeweb
64
85
  requirement: !ruby/object:Gem::Requirement
65
- none: false
66
86
  requirements:
67
- - - ! '>='
87
+ - - ">="
68
88
  - !ruby/object:Gem::Version
69
89
  version: '0'
70
90
  type: :development
71
91
  prerelease: false
72
92
  version_requirements: !ruby/object:Gem::Requirement
73
- none: false
74
93
  requirements:
75
- - - ! '>='
94
+ - - ">="
76
95
  - !ruby/object:Gem::Version
77
96
  version: '0'
78
97
  description: Manage snapshots of EBS volumes
@@ -83,7 +102,7 @@ executables:
83
102
  extensions: []
84
103
  extra_rdoc_files: []
85
104
  files:
86
- - .gitignore
105
+ - ".gitignore"
87
106
  - Gemfile
88
107
  - LICENSE
89
108
  - README.md
@@ -99,33 +118,26 @@ files:
99
118
  - spec/spec_helper.rb
100
119
  homepage: https://github.com/ultradns/ebs_snapper
101
120
  licenses: []
121
+ metadata: {}
102
122
  post_install_message:
103
123
  rdoc_options: []
104
124
  require_paths:
105
125
  - lib
106
126
  required_ruby_version: !ruby/object:Gem::Requirement
107
- none: false
108
127
  requirements:
109
- - - ! '>='
128
+ - - ">="
110
129
  - !ruby/object:Gem::Version
111
130
  version: '0'
112
- segments:
113
- - 0
114
- hash: 1635891677389619037
115
131
  required_rubygems_version: !ruby/object:Gem::Requirement
116
- none: false
117
132
  requirements:
118
- - - ! '>='
133
+ - - ">="
119
134
  - !ruby/object:Gem::Version
120
135
  version: '0'
121
- segments:
122
- - 0
123
- hash: 1635891677389619037
124
136
  requirements: []
125
137
  rubyforge_project:
126
- rubygems_version: 1.8.24
138
+ rubygems_version: 2.2.2
127
139
  signing_key:
128
- specification_version: 3
140
+ specification_version: 4
129
141
  summary: Manage snapshots of EBS volumes
130
142
  test_files:
131
143
  - spec/lib/ebs_spec.rb