silver_spurs 2.0.0.rc3 → 2.0.0.rc4

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.
@@ -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=