silver_spurs 2.0.0.rc3 → 2.0.0.rc4

Sign up to get free protection for your applications and to get access to all the features.
@@ -11,18 +11,21 @@ module SilverSpurs
11
11
 
12
12
  set :deployment_key, "/etc/chef/deployment_key.pem"
13
13
  set :deployment_user, "silverspurs"
14
- set :chef_config, {
14
+
15
+ default_chef_config = {
15
16
  server_url: 'http://localhost:4000',
16
17
  client_name: 'silver_spurs',
17
18
  client_key: '/etc/chef/silver_spurs.pem',
18
19
  ssh: {
19
20
  user: settings.deployment_user,
20
21
  keys: [ settings.deployment_key ],
21
- paranoid: false
22
+ paranoid: false,
23
+ sudo: false
22
24
  }
23
25
  }
24
- # sane setting for AD subdomain
25
- set :node_name_filter, /^[-A-Za-z0-9]{3,15}$/
26
+
27
+ set :chef_config, default_chef_config
28
+ set :node_name_filter, /^[-A-Za-z0-9]{3,15}$/ # sane setting for AD subdomain
26
29
 
27
30
  get '/' do
28
31
  %q| Ride 'em, cowboy |
@@ -55,8 +58,7 @@ module SilverSpurs
55
58
  [arg, params[arg]]
56
59
  end]
57
60
 
58
- command = KnifeInterface.bootstrap_command(
59
- params[:ip],
61
+ command = KnifeInterface.bootstrap_command(params[:ip],
60
62
  node_name,
61
63
  settings.deployment_user,
62
64
  settings.deployment_key,
@@ -96,7 +98,7 @@ module SilverSpurs
96
98
 
97
99
  post '/kick/:ip' do
98
100
  run_list = params[:run] || []
99
- chef = ChefInterface.new(settings.chef_config)
101
+ chef = ChefInterface.new(settings.chef_config)
100
102
  begin
101
103
  chef.chef_run(params[:ip], run_list).to_json
102
104
  rescue SilverSpurs::NodeNotFoundException
@@ -1,5 +1,3 @@
1
- require 'singleton'
2
- require 'forwardable'
3
1
  require 'ridley'
4
2
  require 'silver_spurs/chef_exceptions'
5
3
 
@@ -12,9 +10,9 @@ module SilverSpurs
12
10
 
13
11
  def chef_run(node_name, run_list = [])
14
12
  node = find_node node_name
13
+ hostname = find_hostname(node_name, node)
15
14
  if run_list.size > 0
16
- command = "sudo chef-client -o '#{run_list.join(',')}'"
17
- ridley.node.execute_command find_hostname(node_name, node), command
15
+ ridley.node.run hostname, "chef-client -o '#{run_list.join(',')}'"
18
16
  else
19
17
  node.chef_run
20
18
  end
@@ -22,9 +20,7 @@ module SilverSpurs
22
20
 
23
21
  def update_node_attributes(node_name, attributes)
24
22
  node = find_node node_name
25
- attributes.each do |attribute_name, value|
26
- node.set_chef_attribute attribute_name, value
27
- end
23
+ attributes.each { |attr_name, value| node.set_chef_attribute(attr_name, value) }
28
24
  node.save
29
25
  end
30
26
 
@@ -44,7 +40,7 @@ module SilverSpurs
44
40
  def find_hostname(node_name, node)
45
41
  return node.public_hostname if node.public_hostname
46
42
  return node.public_ipv4 if node.public_ipv4
47
- return node_name
43
+ node_name
48
44
  end
49
45
 
50
46
  end
@@ -15,20 +15,14 @@ module SilverSpurs
15
15
  private
16
16
 
17
17
  def convert_status(response)
18
- code = response[0]
19
- case code
20
- when 'ok'
21
- :success
22
- when 'error'
23
- :failed
24
- end
18
+ failure = (response['exit_code'] == 1) || (response['exit_status'] == 1)
19
+ failure ? :failed : :success
25
20
  end
26
21
 
27
22
  def prettify_log(response)
28
- run_info = response[1]
29
- stdout = run_info['stdout']
30
- stderr = run_info['stderr']
31
- exit_code = run_info['exit_code'] || run_info['exit_status']
23
+ stdout = response['stdout']
24
+ stderr = response['stderr']
25
+ exit_code = response['exit_code'] || response['exit_status']
32
26
 
33
27
  template = ERB.new <<-END
34
28
  Exit Code: <%= exit_code %>
@@ -29,7 +29,7 @@ module SilverSpurs
29
29
 
30
30
  def start_chef_run(host_name, runlist = [])
31
31
  response = gracefully_handle_rest_call do
32
- spur_host["kick/#{host_name}"].post :params => { :run => runlist }
32
+ spur_host["kick/#{host_name}"].post({ :run => runlist })
33
33
  end
34
34
  ChefOutput.new JSON.parse(response)
35
35
  end
@@ -46,10 +46,10 @@ module SilverSpurs
46
46
  def gracefully_handle_rest_call(&rest_call)
47
47
  begin
48
48
  response = rest_call.call
49
- rescue RestClient::ResourceNotFound
50
- raise ClientException.new("the host name was not found", response)
51
- rescue Exception
52
- raise ClientException.new("an unanticipated error occured", response)
49
+ rescue RestClient::ResourceNotFound => ex
50
+ raise ClientException.new("the host name was not found", ex.response)
51
+ rescue Exception => ex
52
+ raise ClientException.new("an unanticipated error occured", ex.message)
53
53
  end
54
54
 
55
55
  response
@@ -1,3 +1,3 @@
1
1
  module SilverSpurs
2
- VERSION = "2.0.0.rc3"
2
+ VERSION = '2.0.0.rc4'
3
3
  end
data/silver_spurs.gemspec CHANGED
@@ -19,7 +19,7 @@ Gem::Specification.new do |gem|
19
19
  gem.add_dependency 'chef', '>= 10.18.2'
20
20
  gem.add_dependency 'rest-client', '~> 1.6.7'
21
21
  gem.add_dependency 'addressable', '~> 2.3.3'
22
- gem.add_dependency "ridley", "~> 0.11.0.rc1"
22
+ gem.add_dependency 'ridley', '~> 1.1.1'
23
23
 
24
24
  gem.add_development_dependency 'guard'
25
25
  gem.add_development_dependency 'guard-rspec'
@@ -10,6 +10,7 @@ describe SilverSpurs::ChefInterface do
10
10
  @ridley = double('ridley')
11
11
  @node_resource = double('node_resource')
12
12
  @node_obj = double('node_obj')
13
+ @node_obj.stub(:public_hostname).and_return 'node_name'
13
14
 
14
15
  @chef_i.stub(:ridley).and_return @ridley
15
16
  @ridley.stub(:node).and_return @node_resource
@@ -17,7 +18,7 @@ describe SilverSpurs::ChefInterface do
17
18
 
18
19
  it 'finds a node and then launches a chef run' do
19
20
  @chef_i.should_receive(:find_node).and_return @node_obj
20
- @node_obj.should_receive(:chef_run)
21
+ @node_obj.should_receive :chef_run
21
22
 
22
23
  @chef_i.chef_run 'node'
23
24
  end
@@ -25,25 +26,28 @@ describe SilverSpurs::ChefInterface do
25
26
  context 'with a run list' do
26
27
  before :each do
27
28
  @chef_i.stub(:find_node).and_return @node_obj
29
+ @node_obj.stub(:merge_data)
30
+ @node_resource.stub(:run)
31
+ @run_list = ['recipe[one]', 'recipe[two]']
28
32
  end
29
33
 
30
34
  after :each do
31
- @chef_i.chef_run 'node_name', ['recipe[one]', 'recipe[two]']
35
+ @chef_i.chef_run 'node_name', @run_list
32
36
  end
33
37
 
34
- it 'should call execute off of the node resource' do
35
- @node_obj.stub(:public_hostname).and_return 'hostname'
36
- @node_resource.should_receive(:execute_command)
38
+ it 'should call run off of the node resource' do
39
+ @node_resource.should_receive(:run)
37
40
  end
38
41
 
42
+
39
43
  it 'should pass in the host name from the node object' do
40
44
  @chef_i.should_receive(:find_hostname).and_return 'hostname'
41
- @node_resource.should_receive(:execute_command).with('hostname', anything)
45
+ @node_resource.should_receive(:run).with('hostname', anything)
42
46
  end
43
47
 
44
- it 'should pass in the run list as a comma-seperated string' do
45
- @node_obj.stub(:public_hostname).and_return 'hostname'
46
- @node_resource.should_receive(:execute_command).with(anything, %r{'recipe\[one\],recipe\[two\]'})
48
+ it 'should pass in the run list to ridley if provided' do
49
+ @node_resource.should_receive(:run)
50
+ .with(kind_of(String), /^(.+)'recipe\[one],recipe\[two]'$/)
47
51
  end
48
52
  end
49
53
 
@@ -56,7 +60,7 @@ describe SilverSpurs::ChefInterface do
56
60
  @chef_i.stub(:find_node).and_return @node_obj
57
61
  end
58
62
 
59
- it 'should call chef_run off of the node object' do
63
+ it 'should call #run off of the node object' do
60
64
  @node_obj.should_receive :chef_run
61
65
  end
62
66
  end
@@ -3,16 +3,16 @@ require 'silver_spurs/client/chef_output'
3
3
  describe SilverSpurs::ChefOutput do
4
4
  describe :convert_status do
5
5
  before :each do
6
- @chef_run = SilverSpurs::ChefOutput.new(["ok",{'stdout' => '', 'stderr' => '', 'exit_code' => 0, 'exit_status' => 0}])
6
+ @chef_run = SilverSpurs::ChefOutput.new({'stdout' => '', 'stderr' => '', 'exit_code' => 0, 'exit_status' => 0})
7
7
  end
8
8
 
9
9
  def call_convert_status(response)
10
10
  @chef_run.send(:convert_status, response)
11
11
  end
12
12
 
13
- context 'response is "ok"' do
13
+ context 'exit code and status = 0' do
14
14
  before :each do
15
- @response = ["ok", {}]
15
+ @response = { 'exit_code' => 0, 'exit_status' => 0}
16
16
  end
17
17
 
18
18
  it "should return :success" do
@@ -20,12 +20,14 @@ describe SilverSpurs::ChefOutput do
20
20
  end
21
21
  end
22
22
 
23
- context 'response is "error"' do
24
- before :each do
25
- @response = ["error", {}]
23
+ context 'exit code or status = 1' do
24
+ it "should return :failed" do
25
+ @response = { 'exit_code' => 0, 'exit_status' => 1}
26
+ call_convert_status(@response).should eq :failed
26
27
  end
27
28
 
28
29
  it "should return :failed" do
30
+ @response = { 'exit_code' => 1, 'exit_status' => 0}
29
31
  call_convert_status(@response).should eq :failed
30
32
  end
31
33
  end
@@ -34,7 +36,7 @@ describe SilverSpurs::ChefOutput do
34
36
 
35
37
  describe :prettify_log do
36
38
  before :each do
37
- @chef_run = SilverSpurs::ChefOutput.new(["ok",{'stdout' => '', 'stderr' => '', 'exit_code' => 0, 'exit_status' => 0}])
39
+ @chef_run = SilverSpurs::ChefOutput.new({'stdout' => '', 'stderr' => '', 'exit_code' => 0, 'exit_status' => 0})
38
40
  end
39
41
 
40
42
  def call_prettify_log(response)
@@ -42,39 +44,39 @@ describe SilverSpurs::ChefOutput do
42
44
  end
43
45
 
44
46
  it 'should output stderr' do
45
- response = ["ok",{'stdout' => '', 'stderr' => 'stdERR, son', 'exit_code' => 0, 'exit_status' => 0}]
47
+ response = {'stdout' => '', 'stderr' => 'stdERR, son', 'exit_code' => 0, 'exit_status' => 0}
46
48
  call_prettify_log(response).should match(/stdERR, son/)
47
49
  end
48
50
 
49
51
  it 'should output stdout' do
50
- response = ["ok",{'stdout' => 'stdOUT, son', 'stderr' => '', 'exit_code' => 0, 'exit_status' => 0}]
52
+ response = {'stdout' => 'stdOUT, son', 'stderr' => '', 'exit_code' => 0, 'exit_status' => 0}
51
53
  call_prettify_log(response).should match(/stdOUT, son/)
52
54
  end
53
55
 
54
56
  context 'when exit_code and exit_status are present' do
55
57
  it 'should prefer exit_code' do
56
- response = ["ok",{'stdout' => '', 'stderr' => '', 'exit_code' => 1, 'exit_status' => 2}]
58
+ response = {'stdout' => '', 'stderr' => '', 'exit_code' => 1, 'exit_status' => 2}
57
59
  call_prettify_log(response).should match(/Exit Code: 1/)
58
60
  end
59
61
  end
60
62
 
61
63
  context 'when exit_code is not present' do
62
64
  it 'should use exit_status' do
63
- response = ["ok",{'stdout' => '', 'stderr' => '', 'exit_code' => nil, 'exit_status' => 2}]
65
+ response = {'stdout' => '', 'stderr' => '', 'exit_code' => nil, 'exit_status' => 2}
64
66
  call_prettify_log(response).should match(/Exit Code: 2/)
65
67
  end
66
68
  end
67
69
 
68
70
  context 'when exit_status is not present' do
69
71
  it 'should use exit_code' do
70
- response = ["ok",{'stdout' => '', 'stderr' => '', 'exit_code' => 1, 'exit_status' => nil}]
72
+ response = {'stdout' => '', 'stderr' => '', 'exit_code' => 1, 'exit_status' => nil}
71
73
  call_prettify_log(response).should match(/Exit Code: 1/)
72
74
  end
73
75
  end
74
76
 
75
77
  context 'when exit_code and exit_status are not present' do
76
78
  it 'should use nil' do
77
- response = ["ok",{'stdout' => '', 'stderr' => '', 'exit_code' => nil, 'exit_status' => nil}]
79
+ response = {'stdout' => '', 'stderr' => '', 'exit_code' => nil, 'exit_status' => nil}
78
80
  call_prettify_log(response).should match(/Exit Code: /)
79
81
  end
80
82
  end
metadata CHANGED
@@ -1,18 +1,20 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: silver_spurs
3
3
  version: !ruby/object:Gem::Version
4
- version: 2.0.0.rc3
4
+ version: 2.0.0.rc4
5
+ prerelease: 6
5
6
  platform: ruby
6
7
  authors:
7
8
  - Christian Blades
8
9
  autorequire:
9
10
  bindir: bin
10
11
  cert_chain: []
11
- date: 2013-06-07 00:00:00.000000000 Z
12
+ date: 2013-06-18 00:00:00.000000000 Z
12
13
  dependencies:
13
14
  - !ruby/object:Gem::Dependency
14
15
  name: sinatra
15
16
  requirement: !ruby/object:Gem::Requirement
17
+ none: false
16
18
  requirements:
17
19
  - - ! '>='
18
20
  - !ruby/object:Gem::Version
@@ -20,6 +22,7 @@ dependencies:
20
22
  type: :runtime
21
23
  prerelease: false
22
24
  version_requirements: !ruby/object:Gem::Requirement
25
+ none: false
23
26
  requirements:
24
27
  - - ! '>='
25
28
  - !ruby/object:Gem::Version
@@ -27,6 +30,7 @@ dependencies:
27
30
  - !ruby/object:Gem::Dependency
28
31
  name: chef
29
32
  requirement: !ruby/object:Gem::Requirement
33
+ none: false
30
34
  requirements:
31
35
  - - ! '>='
32
36
  - !ruby/object:Gem::Version
@@ -34,6 +38,7 @@ dependencies:
34
38
  type: :runtime
35
39
  prerelease: false
36
40
  version_requirements: !ruby/object:Gem::Requirement
41
+ none: false
37
42
  requirements:
38
43
  - - ! '>='
39
44
  - !ruby/object:Gem::Version
@@ -41,6 +46,7 @@ dependencies:
41
46
  - !ruby/object:Gem::Dependency
42
47
  name: rest-client
43
48
  requirement: !ruby/object:Gem::Requirement
49
+ none: false
44
50
  requirements:
45
51
  - - ~>
46
52
  - !ruby/object:Gem::Version
@@ -48,6 +54,7 @@ dependencies:
48
54
  type: :runtime
49
55
  prerelease: false
50
56
  version_requirements: !ruby/object:Gem::Requirement
57
+ none: false
51
58
  requirements:
52
59
  - - ~>
53
60
  - !ruby/object:Gem::Version
@@ -55,6 +62,7 @@ dependencies:
55
62
  - !ruby/object:Gem::Dependency
56
63
  name: addressable
57
64
  requirement: !ruby/object:Gem::Requirement
65
+ none: false
58
66
  requirements:
59
67
  - - ~>
60
68
  - !ruby/object:Gem::Version
@@ -62,6 +70,7 @@ dependencies:
62
70
  type: :runtime
63
71
  prerelease: false
64
72
  version_requirements: !ruby/object:Gem::Requirement
73
+ none: false
65
74
  requirements:
66
75
  - - ~>
67
76
  - !ruby/object:Gem::Version
@@ -69,20 +78,23 @@ dependencies:
69
78
  - !ruby/object:Gem::Dependency
70
79
  name: ridley
71
80
  requirement: !ruby/object:Gem::Requirement
81
+ none: false
72
82
  requirements:
73
83
  - - ~>
74
84
  - !ruby/object:Gem::Version
75
- version: 0.11.0.rc1
85
+ version: 1.1.1
76
86
  type: :runtime
77
87
  prerelease: false
78
88
  version_requirements: !ruby/object:Gem::Requirement
89
+ none: false
79
90
  requirements:
80
91
  - - ~>
81
92
  - !ruby/object:Gem::Version
82
- version: 0.11.0.rc1
93
+ version: 1.1.1
83
94
  - !ruby/object:Gem::Dependency
84
95
  name: guard
85
96
  requirement: !ruby/object:Gem::Requirement
97
+ none: false
86
98
  requirements:
87
99
  - - ! '>='
88
100
  - !ruby/object:Gem::Version
@@ -90,6 +102,7 @@ dependencies:
90
102
  type: :development
91
103
  prerelease: false
92
104
  version_requirements: !ruby/object:Gem::Requirement
105
+ none: false
93
106
  requirements:
94
107
  - - ! '>='
95
108
  - !ruby/object:Gem::Version
@@ -97,6 +110,7 @@ dependencies:
97
110
  - !ruby/object:Gem::Dependency
98
111
  name: guard-rspec
99
112
  requirement: !ruby/object:Gem::Requirement
113
+ none: false
100
114
  requirements:
101
115
  - - ! '>='
102
116
  - !ruby/object:Gem::Version
@@ -104,6 +118,7 @@ dependencies:
104
118
  type: :development
105
119
  prerelease: false
106
120
  version_requirements: !ruby/object:Gem::Requirement
121
+ none: false
107
122
  requirements:
108
123
  - - ! '>='
109
124
  - !ruby/object:Gem::Version
@@ -111,6 +126,7 @@ dependencies:
111
126
  - !ruby/object:Gem::Dependency
112
127
  name: simplecov
113
128
  requirement: !ruby/object:Gem::Requirement
129
+ none: false
114
130
  requirements:
115
131
  - - ! '>='
116
132
  - !ruby/object:Gem::Version
@@ -118,6 +134,7 @@ dependencies:
118
134
  type: :development
119
135
  prerelease: false
120
136
  version_requirements: !ruby/object:Gem::Requirement
137
+ none: false
121
138
  requirements:
122
139
  - - ! '>='
123
140
  - !ruby/object:Gem::Version
@@ -125,6 +142,7 @@ dependencies:
125
142
  - !ruby/object:Gem::Dependency
126
143
  name: growl
127
144
  requirement: !ruby/object:Gem::Requirement
145
+ none: false
128
146
  requirements:
129
147
  - - ! '>='
130
148
  - !ruby/object:Gem::Version
@@ -132,6 +150,7 @@ dependencies:
132
150
  type: :development
133
151
  prerelease: false
134
152
  version_requirements: !ruby/object:Gem::Requirement
153
+ none: false
135
154
  requirements:
136
155
  - - ! '>='
137
156
  - !ruby/object:Gem::Version
@@ -139,6 +158,7 @@ dependencies:
139
158
  - !ruby/object:Gem::Dependency
140
159
  name: rb-fsevent
141
160
  requirement: !ruby/object:Gem::Requirement
161
+ none: false
142
162
  requirements:
143
163
  - - ~>
144
164
  - !ruby/object:Gem::Version
@@ -146,6 +166,7 @@ dependencies:
146
166
  type: :development
147
167
  prerelease: false
148
168
  version_requirements: !ruby/object:Gem::Requirement
169
+ none: false
149
170
  requirements:
150
171
  - - ~>
151
172
  - !ruby/object:Gem::Version
@@ -153,6 +174,7 @@ dependencies:
153
174
  - !ruby/object:Gem::Dependency
154
175
  name: rack-test
155
176
  requirement: !ruby/object:Gem::Requirement
177
+ none: false
156
178
  requirements:
157
179
  - - ! '>='
158
180
  - !ruby/object:Gem::Version
@@ -160,6 +182,7 @@ dependencies:
160
182
  type: :development
161
183
  prerelease: false
162
184
  version_requirements: !ruby/object:Gem::Requirement
185
+ none: false
163
186
  requirements:
164
187
  - - ! '>='
165
188
  - !ruby/object:Gem::Version
@@ -167,6 +190,7 @@ dependencies:
167
190
  - !ruby/object:Gem::Dependency
168
191
  name: rake
169
192
  requirement: !ruby/object:Gem::Requirement
193
+ none: false
170
194
  requirements:
171
195
  - - ! '>='
172
196
  - !ruby/object:Gem::Version
@@ -174,6 +198,7 @@ dependencies:
174
198
  type: :development
175
199
  prerelease: false
176
200
  version_requirements: !ruby/object:Gem::Requirement
201
+ none: false
177
202
  requirements:
178
203
  - - ! '>='
179
204
  - !ruby/object:Gem::Version
@@ -211,39 +236,41 @@ files:
211
236
  - spec/lib/silver_spurs/asyncifier_spec.rb
212
237
  - spec/lib/silver_spurs/chef_interface_spec.rb
213
238
  - spec/lib/silver_spurs/client/bootstrap_run_spec.rb
214
- - spec/lib/silver_spurs/client/chef_run_spec.rb
239
+ - spec/lib/silver_spurs/client/chef_output_spec.rb
215
240
  - spec/lib/silver_spurs/client_spec.rb
216
241
  - spec/lib/silver_spurs/knife_interface_spec.rb
217
242
  - spec/spec_helper.rb
218
243
  homepage: http://github.com/christian-blades-cb/silver_spurs
219
244
  licenses: []
220
- metadata: {}
221
245
  post_install_message:
222
246
  rdoc_options: []
223
247
  require_paths:
224
248
  - lib
225
249
  required_ruby_version: !ruby/object:Gem::Requirement
250
+ none: false
226
251
  requirements:
227
252
  - - ! '>='
228
253
  - !ruby/object:Gem::Version
229
254
  version: '0'
230
255
  required_rubygems_version: !ruby/object:Gem::Requirement
256
+ none: false
231
257
  requirements:
232
258
  - - ! '>'
233
259
  - !ruby/object:Gem::Version
234
260
  version: 1.3.1
235
261
  requirements: []
236
262
  rubyforge_project:
237
- rubygems_version: 2.0.3
263
+ rubygems_version: 1.8.25
238
264
  signing_key:
239
- specification_version: 4
265
+ specification_version: 3
240
266
  summary: RESTful service to kick off chef bootstraps
241
267
  test_files:
242
268
  - spec/lib/silver_spurs/app_spec.rb
243
269
  - spec/lib/silver_spurs/asyncifier_spec.rb
244
270
  - spec/lib/silver_spurs/chef_interface_spec.rb
245
271
  - spec/lib/silver_spurs/client/bootstrap_run_spec.rb
246
- - spec/lib/silver_spurs/client/chef_run_spec.rb
272
+ - spec/lib/silver_spurs/client/chef_output_spec.rb
247
273
  - spec/lib/silver_spurs/client_spec.rb
248
274
  - spec/lib/silver_spurs/knife_interface_spec.rb
249
275
  - spec/spec_helper.rb
276
+ has_rdoc:
checksums.yaml DELETED
@@ -1,15 +0,0 @@
1
- ---
2
- !binary "U0hBMQ==":
3
- metadata.gz: !binary |-
4
- Yjc1NDE4ZTRiM2U0OWZiZjIxYzFhMWYwZGQxYzg3ZjdjMmQ2NzE0NQ==
5
- data.tar.gz: !binary |-
6
- NWJhMjM4ZmMyMzNmMjMwOTViM2E2NjdkZGJjYjk0YzZiYjk1M2Y3ZQ==
7
- !binary "U0hBNTEy":
8
- metadata.gz: !binary |-
9
- MDExZmYwMzJiZjQ0Y2ZlZjRlNWJlZTA1NDg5YzgyOThjY2NhMGI3YzYyNGM0
10
- YWE5YzMzZmRhMmMzM2UzY2QyODAwMDYzYzQ4YmNiMWFlODk0MDRkOWMwNzM3
11
- YmY2YWVkY2NiY2Y3NDBlZGY1NzFhYTNkYzdjZjNmNjQ5NDI2NWE=
12
- data.tar.gz: !binary |-
13
- YWJkMzQxMjQ4MzdiN2ZhMDI1OTM5NzFhOWJmN2JjNzMyNDM0YzcyNGZjNTNh
14
- NmE4NWI2NDMyNWNlZDBkMmU1ZDg0NmRhMDc2ZTFjN2E0ZGZkMTJhNDI3Mzkw
15
- OGExMDE2ZDM5OGRmNjc0ZmU0MmU3ZjU5ZWZhZjc4ZTFhZTE4Y2I=