auser-poolparty 1.2.7 → 1.2.8

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.
Files changed (63) hide show
  1. data/README.txt +1 -1
  2. data/VERSION.yml +1 -1
  3. data/bin/cloud-configure +1 -1
  4. data/bin/cloud-contract +1 -1
  5. data/bin/cloud-expand +1 -1
  6. data/bin/cloud-list +3 -3
  7. data/bin/cloud-ssh +1 -1
  8. data/bin/cloud-start +1 -1
  9. data/bin/server-cloud-elections +17 -23
  10. data/bin/server-list-active +24 -16
  11. data/bin/server-manage-election +13 -21
  12. data/bin/server-show-stats +1 -1
  13. data/examples/metavirt_cloud.rb +12 -8
  14. data/examples/{poolparty.rb → simple.rb} +0 -0
  15. data/examples/vmrun_cloud.rb +20 -0
  16. data/lib/poolparty/core/proc.rb +0 -7
  17. data/lib/poolparty/dependency_resolver/chef_resolver.rb +1 -1
  18. data/lib/poolparty/dependency_resolver/puppet.rb +0 -1
  19. data/lib/poolparty/helpers/console.rb +0 -5
  20. data/lib/poolparty/modules/callbacks.rb +7 -0
  21. data/lib/poolparty/modules/cloud_dsl.rb +0 -6
  22. data/lib/poolparty/modules/cloud_resourcer.rb +38 -20
  23. data/lib/poolparty/modules/searchable_paths.rb +5 -1
  24. data/lib/poolparty/net/init.rb +17 -4
  25. data/lib/poolparty/net/remoter/interactive.rb +1 -1
  26. data/lib/poolparty/net/remoter_base.rb +40 -19
  27. data/lib/poolparty/net/remoter_bases/ec2/ec2.rb +7 -2
  28. data/lib/poolparty/net/remoter_bases/ec2/ec2_remote_instance.rb +1 -0
  29. data/lib/poolparty/net/remoter_bases/ec2/ec2_response_object.rb +2 -2
  30. data/lib/poolparty/net/remoter_bases/metavirt/metavirt.rb +21 -20
  31. data/lib/poolparty/plugins/apache2/apache.rb +24 -4
  32. data/lib/poolparty/plugins/authorized_key.rb +29 -0
  33. data/lib/poolparty/plugins/chef.rb +2 -2
  34. data/lib/poolparty/plugins/deploy_directory.rb +7 -2
  35. data/lib/poolparty/poolparty/cloud.rb +110 -23
  36. data/lib/poolparty/poolparty/plugin_model.rb +1 -0
  37. data/lib/poolparty/poolparty/poolparty_base_class.rb +25 -3
  38. data/lib/poolparty/poolparty/resource.rb +1 -6
  39. data/lib/poolparty/provision/boot_strapper.rb +5 -1
  40. data/lib/poolparty/resources/directory.rb +1 -1
  41. data/lib/poolparty/resources/symlink.rb +9 -2
  42. data/lib/poolparty/resources/user.rb +16 -1
  43. data/lib/poolparty/schema.rb +3 -4
  44. data/lib/poolparty/templates/haproxy.conf +1 -1
  45. data/lib/poolparty.rb +1 -1
  46. data/spec/poolparty/core/object_spec.rb +0 -24
  47. data/spec/poolparty/fixtures/fake_key.pub +1 -0
  48. data/spec/poolparty/modules/searchable_paths_spec.rb +12 -5
  49. data/spec/poolparty/net/remoter_bases/ec2_spec.rb +1 -1
  50. data/spec/poolparty/plugins/authorized_key_spec.rb +23 -0
  51. data/spec/poolparty/poolparty/cloud_spec.rb +3 -3
  52. data/test/poolparty/dependency_resolver/puppet_resolver_test.rb +1 -1
  53. data/test/poolparty/net/remoter_bases/metavirt/metavirt_test.rb +1 -4
  54. data/test/poolparty/poolparty/cloud_test.rb +40 -0
  55. data/test/test_helper.rb +1 -1
  56. metadata +8 -10
  57. data/lib/poolparty/core/metaid.rb +0 -15
  58. data/lib/poolparty/core/module.rb +0 -40
  59. data/lib/poolparty/helpers/display.rb +0 -30
  60. data/lib/poolparty/net/remote_bases.rb +0 -22
  61. data/spec/poolparty/core/module_spec.rb +0 -15
  62. data/spec/poolparty/helpers/display_spec.rb +0 -13
  63. data/spec/poolparty/id_rsa +0 -27
@@ -4,28 +4,4 @@ describe "Object" do
4
4
  it "should respond to to_os" do
5
5
  Object.new.respond_to?(:to_os).should == true
6
6
  end
7
-
8
- describe "with_options" do
9
- before(:each) do
10
- class TestObjClass
11
- include Dslify
12
- dsl_methods :b
13
-
14
- def initialize(o={})
15
- set_vars_from_options o
16
- end
17
- end
18
- @obj = TestObjClass.new
19
- end
20
-
21
- describe "contextual running" do
22
- before(:each) do
23
- @obj.stub!(:default_options).and_return {}
24
- @a = @obj.instance_eval { @a = "hello world" }
25
- end
26
- it "should have the method meta_eval" do
27
- @obj.respond_to?(:meta_eval).should == true
28
- end
29
- end
30
- end
31
7
  end
@@ -0,0 +1 @@
1
+ ssh-rsa totally_aPublicKey auser@my.laptop.local
@@ -63,11 +63,18 @@ describe "FileWriter" do
63
63
  it "should find things in the right order" do
64
64
  @cloud.find_file("clouds.rb").should == PATH_ONE/'clouds.rb'
65
65
  end
66
-
67
-
68
-
69
-
70
-
66
+ end
67
+
68
+ describe "#search_in_known_locations" do
69
+ before(:each) do
70
+ # create path one
71
+ FileUtils.mkdir_p(PATH_ONE/'extra')
72
+ File.write_to_file(PATH_ONE/'extra'/'clouds.rb')
73
+ end
74
+
75
+ it "should look in the additional search paths first" do
76
+ @cloud.find_file("clouds.rb", [PATH_ONE/'extra']).should == PATH_ONE/'extra'/'clouds.rb'
77
+ end
71
78
  end
72
79
 
73
80
  after(:each) do
@@ -5,7 +5,7 @@ require File.dirname(__FILE__) + '/ec2_mocks_and_stubs.rb'
5
5
  describe "ec2 remote base" do
6
6
  before(:each) do
7
7
  @cloud = TestCloud.new :test_remoter_base_cloud
8
- @tr = TestEC2Class.new(@cloud.dsl_options)
8
+ @tr = TestEC2Class.new( TestCloud.default_options )
9
9
  stub_remoter_for(@tr)
10
10
  # @tr.stub!(:get_instances_description).and_return response_list_of_instances
11
11
  end
@@ -0,0 +1,23 @@
1
+ require File.dirname(__FILE__) + '/../spec_helper'
2
+
3
+ describe "Remote Instance" do
4
+ before(:each) do
5
+ @tc = TestBaseClass.new do
6
+ end
7
+ end
8
+ it "should have the method has_line_in_file available on the class" do
9
+ @tc.respond_to?(:has_line_in_file).should == true
10
+ end
11
+ describe "call" do
12
+ before(:each) do
13
+ @tc.run_in_context do
14
+ has_authorized_key({:for_user => 'alerner',
15
+ :public_key_file => "#{::File.dirname(__FILE__)}/../fixtures/fake_key.pub"})
16
+ end
17
+ @compiled = ChefResolver.new(@tc.to_properties_hash).compile
18
+ end
19
+ it "should have the line in the file from ChefResolver" do
20
+ @compiled.should match(/~alerner\/\.ssh/)
21
+ end
22
+ end
23
+ end
@@ -198,7 +198,7 @@ describe "Cloud" do
198
198
  @cloud.add_optional_enabled_services
199
199
  end
200
200
  it "should have at least 3 resources" do
201
- @cloud.add_poolparty_base_requirements
201
+ @cloud.send :add_poolparty_base_requirements
202
202
  @cloud.ordered_resources.size.should > 2
203
203
  end
204
204
  it "should receive add_poolparty_base_requirements before building the manifest" do
@@ -220,13 +220,13 @@ describe "Cloud" do
220
220
  @hb = PoolpartyBaseHeartbeatClass.new
221
221
  PoolpartyBaseHeartbeatClass.stub!(:new).and_return @hb
222
222
 
223
- @cloud.add_poolparty_base_requirements
223
+ @cloud.send :add_poolparty_base_requirements
224
224
  @cloud.poolparty_base_heartbeat.should == @hb
225
225
  end
226
226
  describe "after adding" do
227
227
  before(:each) do
228
228
  stub_list_from_remote_for(@cloud)
229
- @cloud.add_poolparty_base_requirements
229
+ @cloud.send :add_poolparty_base_requirements
230
230
  end
231
231
  describe "resources" do
232
232
  before(:each) do
@@ -57,7 +57,7 @@ class TestPuppetResolver < Test::Unit::TestCase
57
57
  has_directory :name => "/var/www"
58
58
  has_file :name => "/var/www/index.html", :content => "profile info", :requires => get_directory("/var/www")
59
59
 
60
- set_dependency_resolver "puppet"
60
+ dependency_resolver "puppet"
61
61
  # has_package :name => "bash"
62
62
  # parent == cloud
63
63
  apache do
@@ -16,7 +16,7 @@ class TestMetavirt < Test::Unit::TestCase
16
16
  end
17
17
  end
18
18
  should "be registered as a remote_base" do
19
- @cloud.available_bases.include?(:vmrun).should == true
19
+ PoolParty::Remote::RemoterBase.available_bases.include?(:vmrun).should == true
20
20
  end
21
21
  should "be setting the type of remote_base" do
22
22
  assert_equal PoolParty::Remote::Vmrun, @cloud.remote_base.remote_base.class
@@ -26,11 +26,8 @@ class TestMetavirt < Test::Unit::TestCase
26
26
  @cloud.metavirt.should == @cloud.remote_base
27
27
  end
28
28
  should "have a keypair" do
29
- # assert_equal Key, @cloud.keypair.class
30
29
  assert_equal 'test_key', @cloud.keypair.basename
31
30
  assert_equal 'test_key', @cloud.keypair_name
32
- # puts "----- #{@cloud.remote_base.dsl_options.inspect}"
33
- assert_equal 'test_key', @cloud.remote_base.keypair_name
34
31
  end
35
32
  should "be able to initialize without a cloud" do
36
33
  assert_nothing_raised do PoolParty::Remote::Metavirt.new end
@@ -0,0 +1,40 @@
1
+ require "#{::File.dirname(__FILE__)}/../../test_helper"
2
+
3
+ class CloudTest < Test::Unit::TestCase
4
+ context "callbacks" do
5
+ setup do
6
+ reset!
7
+ cloud :apple do
8
+ user "bob"
9
+ minimum_instances 100
10
+ access_key "pool_access_key"
11
+ secret_access_key "cloud_access_key"
12
+
13
+ after :bootstrap do |cld|
14
+ cld.class.send :attr_reader, :after_bootstrap_message
15
+ @after_bootstrap_message = "After me!"
16
+ end
17
+ end
18
+ end
19
+
20
+ should "call have callbacks for after :bootstrap (defined inside the cloud)" do
21
+ cblks = clouds[:apple].send :after_blocks
22
+ assert_equal [:bootstrap], cblks.keys
23
+ assert cblks[:bootstrap].is_a?(Array)
24
+ end
25
+ should "not have callbacks on configure (not defined inside the clouds.rb)" do
26
+ cblks = clouds[:apple].send :before_blocks
27
+ assert_equal [], cblks.keys
28
+ end
29
+ should "call the after bootstrap block when calling call_after_boostrap_callbacks on cloud" do
30
+ apple = clouds[:apple]
31
+ apple.call_after_bootstrap_callbacks
32
+ assert_equal apple.after_bootstrap_message, "After me!"
33
+ end
34
+ should "not call after_configure blocks when calling call_after_configure_callbacks" do
35
+ apple = clouds[:apple]
36
+ apple.call_after_configure_callbacks
37
+ assert_not_equal apple.after_bootstrap_message, "After me!"
38
+ end
39
+ end
40
+ end
data/test/test_helper.rb CHANGED
@@ -4,7 +4,7 @@ require "test/unit"
4
4
  require "matchy"
5
5
  require "shoulda"
6
6
  # require "mocha"
7
- require 'ruby-debug'
7
+ # require 'ruby-debug'
8
8
 
9
9
  require File.dirname(__FILE__) + '/../lib/poolparty'
10
10
  require 'git-style-binary/command'
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: auser-poolparty
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.2.7
4
+ version: 1.2.8
5
5
  platform: ruby
6
6
  authors:
7
7
  - Ari Lerner
@@ -9,7 +9,7 @@ autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
11
 
12
- date: 2009-05-18 00:00:00 -07:00
12
+ date: 2009-05-26 00:00:00 -07:00
13
13
  default_executable:
14
14
  dependencies:
15
15
  - !ruby/object:Gem::Dependency
@@ -107,7 +107,8 @@ files:
107
107
  - examples/metavirt_cloud.rb
108
108
  - examples/paparazzi.conf.erb
109
109
  - examples/plugin_without_plugin_directory.rb
110
- - examples/poolparty.rb
110
+ - examples/simple.rb
111
+ - examples/vmrun_cloud.rb
111
112
  - lib/poolparty
112
113
  - lib/poolparty/aska.rb
113
114
  - lib/poolparty/base_packages
@@ -123,8 +124,6 @@ files:
123
124
  - lib/poolparty/core/float.rb
124
125
  - lib/poolparty/core/hash.rb
125
126
  - lib/poolparty/core/kernel.rb
126
- - lib/poolparty/core/metaid.rb
127
- - lib/poolparty/core/module.rb
128
127
  - lib/poolparty/core/my_open_struct.rb
129
128
  - lib/poolparty/core/nil.rb
130
129
  - lib/poolparty/core/object.rb
@@ -158,7 +157,6 @@ files:
158
157
  - lib/poolparty/helpers
159
158
  - lib/poolparty/helpers/binary.rb
160
159
  - lib/poolparty/helpers/console.rb
161
- - lib/poolparty/helpers/display.rb
162
160
  - lib/poolparty/helpers/hash_printer.rb
163
161
  - lib/poolparty/helpers/loading.rb
164
162
  - lib/poolparty/helpers/nice_printer.rb
@@ -197,7 +195,6 @@ files:
197
195
  - lib/poolparty/monitors/monitors/stats_monitor.rb
198
196
  - lib/poolparty/net
199
197
  - lib/poolparty/net/init.rb
200
- - lib/poolparty/net/remote_bases.rb
201
198
  - lib/poolparty/net/remote_instance.rb
202
199
  - lib/poolparty/net/remoter
203
200
  - lib/poolparty/net/remoter/cloud_control.rb
@@ -222,6 +219,7 @@ files:
222
219
  - lib/poolparty/plugins
223
220
  - lib/poolparty/plugins/apache2
224
221
  - lib/poolparty/plugins/apache2/apache.rb
222
+ - lib/poolparty/plugins/authorized_key.rb
225
223
  - lib/poolparty/plugins/bind.rb
226
224
  - lib/poolparty/plugins/chef.rb
227
225
  - lib/poolparty/plugins/chef_deploy.rb
@@ -342,7 +340,6 @@ files:
342
340
  - spec/poolparty/core/float.rb
343
341
  - spec/poolparty/core/hash_spec.rb
344
342
  - spec/poolparty/core/kernel_spec.rb
345
- - spec/poolparty/core/module_spec.rb
346
343
  - spec/poolparty/core/object_spec.rb
347
344
  - spec/poolparty/core/ordered_hash_spec.rb
348
345
  - spec/poolparty/core/string_spec.rb
@@ -357,13 +354,12 @@ files:
357
354
  - spec/poolparty/extra/deployments_spec.rb
358
355
  - spec/poolparty/fixtures
359
356
  - spec/poolparty/fixtures/clouds.json
357
+ - spec/poolparty/fixtures/fake_key.pub
360
358
  - spec/poolparty/fixtures/test_template.erb
361
359
  - spec/poolparty/helpers
362
360
  - spec/poolparty/helpers/binary_spec.rb
363
- - spec/poolparty/helpers/display_spec.rb
364
361
  - spec/poolparty/helpers/hash_printer_spec.rb
365
362
  - spec/poolparty/helpers/optioner_spec.rb
366
- - spec/poolparty/id_rsa
367
363
  - spec/poolparty/modules
368
364
  - spec/poolparty/modules/cloud_resourcer_spec.rb
369
365
  - spec/poolparty/modules/definable_resource.rb
@@ -385,6 +381,7 @@ files:
385
381
  - spec/poolparty/net/remoter_bases/ec2_spec.rb
386
382
  - spec/poolparty/net/remoter_spec.rb
387
383
  - spec/poolparty/plugins
384
+ - spec/poolparty/plugins/authorized_key_spec.rb
388
385
  - spec/poolparty/plugins/chef_spec.rb
389
386
  - spec/poolparty/plugins/deploydirectory_spec.rb
390
387
  - spec/poolparty/plugins/git_spec.rb
@@ -455,6 +452,7 @@ files:
455
452
  - test/poolparty/plugins/chef_deploy_test.rb
456
453
  - test/poolparty/plugins/rails_deploy_test.rb
457
454
  - test/poolparty/poolparty
455
+ - test/poolparty/poolparty/cloud_test.rb
458
456
  - test/poolparty/poolparty/neighborhood_test.rb
459
457
  - test/poolparty/poolparty/plugin_test.rb
460
458
  - test/poolparty/poolparty/poolparty_base_class_test.rb
@@ -1,15 +0,0 @@
1
- class Object
2
- # The hidden singleton lurks behind everyone
3
- def metaclass; class << self; self; end; end
4
- def meta_eval &blk; metaclass.instance_eval &blk; end
5
-
6
- # Adds methods to a metaclass
7
- def meta_def name, &blk
8
- meta_eval { define_method name, &blk }
9
- end
10
-
11
- # Defines an instance method within a class
12
- def class_def name, &blk
13
- class_eval { define_method name, &blk }
14
- end
15
- end
@@ -1,40 +0,0 @@
1
- # Module overloads
2
- class Module
3
- # Gives us alias_method_chain from rails
4
- def alias_method_chain(target, feature)
5
- aliased_target, punctuation = target.to_s.sub(/([?!=])$/, ''), $1
6
- yield(aliased_target, punctuation) if block_given?
7
-
8
- with_method, without_method = "#{aliased_target}_with_#{feature}#{punctuation}", "#{aliased_target}_without_#{feature}#{punctuation}"
9
-
10
- alias_method without_method, target
11
- alias_method target, with_method
12
-
13
- case
14
- when public_method_defined?(without_method)
15
- public target
16
- when protected_method_defined?(without_method)
17
- protected target
18
- when private_method_defined?(without_method)
19
- private target
20
- end
21
- end
22
- def attr_accessor_with_default( *syms, &block )
23
- raise 'Default value in block required' unless block
24
- syms.each do | sym |
25
- module_eval do
26
- attr_writer( sym )
27
- define_method( sym ) do | |
28
- class << self; self; end.class_eval do
29
- attr_reader( sym )
30
- end
31
- instance_variables.include?("@#{sym}") ? instance_variable_get( "@#{sym}" ) : instance_variable_set( "@#{sym}", block.call )
32
- end
33
- end
34
- end
35
- nil
36
- end
37
- def instance_variables_from_hash(h={})
38
- h.each {|k,v| instance_eval "@#{k} = #{v}"}
39
- end
40
- end
@@ -1,30 +0,0 @@
1
- module PoolParty
2
- module Display
3
-
4
- def pool_describe(options={})
5
- if pools.size > 0
6
- pools.each do |k,v|
7
- print v.pretty_print
8
- end
9
- else
10
- pre = "\t"
11
- clouds.each do |name, cl|
12
- puts cl.pretty_name(pre*2, cl)
13
- puts cl.pretty_options(pre*2, cl) #cl.pretty_print("#{pre}\t")
14
- end
15
- end
16
-
17
- puts ""
18
- pools.size
19
- end
20
-
21
- def header(str="")
22
- "*** #{str}"
23
- end
24
-
25
- def subheader(str="")
26
- "****** #{str}"
27
- end
28
-
29
- end
30
- end
@@ -1,22 +0,0 @@
1
- require File.dirname(__FILE__) + "/remoter_base"
2
-
3
- class Object
4
- def remote_bases
5
- $remote_bases ||= []
6
- end
7
-
8
- #TODO: deprecate, this is taken care of with inherited hook
9
- # Register the remoter base in the remote_bases global store
10
- def register_remote_base(*args)
11
- args.each do |arg|
12
- base_name = "#{arg}".downcase.to_sym
13
- (remote_bases << base_name) unless remote_bases.include?(base_name)
14
- end
15
- end
16
- alias :available_bases :remote_bases
17
- end
18
-
19
- Dir["#{File.dirname(__FILE__)}/remote_bases/*.rb"].each do |base|
20
- name = ::File.basename(base, ::File.extname(base))
21
- require base
22
- end
@@ -1,15 +0,0 @@
1
- require File.dirname(__FILE__) + '/../spec_helper'
2
-
3
- describe "Module" do
4
- before(:each) do
5
- @mod = Module.new do
6
- attr_accessor_with_default :a do
7
- Hash.new
8
- end
9
- end
10
- @klass = Class.new.extend(@mod)
11
- end
12
- it "should be able to set method accessors" do
13
- @klass.a.should == {}
14
- end
15
- end
@@ -1,13 +0,0 @@
1
- require File.dirname(__FILE__) + '/../spec_helper'
2
- require File.dirname(__FILE__) + '/../../../lib/poolparty/helpers/display'
3
-
4
- include Display
5
-
6
- describe "Display" do
7
- it "should respond to pool_describe" do
8
- self.respond_to?(:pool_describe).should == true
9
- end
10
- it "should be able to get the list of remote bases" do
11
- self.respond_to?(:available_bases).should == true
12
- end
13
- end
@@ -1,27 +0,0 @@
1
- -----BEGIN RSA PRIVATE KEY-----
2
- MIIEoQIBAAKCAQEAsZYv/Ia+TxtyzH0sXMeHXjs9FgAkuGV3qiOGQOAUUlpdkhnl
3
- tF+BFueMOYsQOXyAE+dNKdbMO+cBvYpnEgm6Cewf7IE46AVdFnSqkGmxgmGEbH2b
4
- fmbbikeNf9H1MDTsUxjL2CmfUcBZce48Y7w3YN7ootrHkuKDDwH67zk7K+idPGXm
5
- 1qnUFSlS+lDnUQ00epZnUz5NjVuVSHNiTtzmgmTdLmu22LfTe+/Kend1ZJp0zjUt
6
- TAIY0gYhKRDWDgEQSlNwGJxrqKhu819KN0Fg2KF57bFVAxKrr632Af+kZBvIxg6C
7
- gzPXKqfJfgedxJFccSKfWfTTqPYFLGzWf8xT3QIBIwKCAQBbVI21Ehi6+CxpKm6W
8
- HXjRYEtNJKUroeXFNtdUkH96z2NSc7f2XQCPb8R1XXYO75JTYQMc1N4QLakfpkOi
9
- 4G5OPuvYt3xaEWMS3OoBIGnrSBg3y5HL+mJHHXv4l90uvCHEVeUtVzv+KGiDvFmS
10
- YMwF7vtMcIPlJAjjJZb+r7gH8x2BQeF0tNgtV7FO+p28gX6F6aQL1xlDXY6KMQV7
11
- WzhORxUs3JjvhO1mxC6WXDMl7DjnADpxiL5jeJ0WR90r6MkEK7XSRT8kcJPZkmud
12
- T+eopujJkaG4pO6eEDSAl72dpwufLM0gS/HHCxcf+Lh+aZlWAu+rgon4XgiRXJEl
13
- kWZLAoGBAOA2gbZyQVWTwxKY2ZuhhFXSYXh7IygqDRPaorub3DGxwyF3JY+B/0tv
14
- R2uw8bqzlcj+LOwS++zqiUIKb2fhPNIksuLnWGGy4Z4tFG71Hz30/NBMTvNG9V7Q
15
- t9J3XOJVJCLTmNr67ZqHlaAmb+CzPseekgWJh2HeJPG4c/vaR0wVAoGBAMrDck9W
16
- z/abAtlkVxj54mij0i/dhx7uil4LxqpDJKrjF4RR0hpoi2UaKufBmZAgKyC5h8+V
17
- JvKX2XTIo+rJKkWBEqumoPK9JM27riZzzeBxCsiLOPycMe6rnb10Jl+VT0g889/J
18
- ea2gCtG13sgbhUAAp1YC755n4Vggb4eHIzKpAoGAGZ/UT12Dz0QWS0SrJ7qwCc7m
19
- kW0oluA8AkTfZeXtR4IHrA2d5IPiqYkPegWX+BSGJZlkODyvE8MIX1GmVQPMb8mu
20
- C02js2TmlbwCVdLe/8Q6Jm8e9ztPPgk5lGVps3dx2BguufDKspMnCv0UGa4Vzau4
21
- 6rChwgrCZMSfin9YmvsCgYBLT+ihID6dbMaLQobAIkzHx9G6AdMaHhYi7m5cf1bD
22
- ISX98oE9AkJnYX2mibyx4BAE1zJxrG2NTlgVbxhP5FGHh7Z6RTR3atMn1/7bFRH0
23
- Rz6FAILhe9gIMR1U/0Fz9aEa1M+cQ4T3WLOPuJSTd++qDt8RUYwzhat4gRN7e1Y3
24
- YwKBgQCEa22ta9MEOtGcX1K2Im9X747mXhYQlactT7KbsTBaVF6JUUaUHCu3uZt2
25
- kynbB3SMCuy5D3sPw9NREt0WXu8ChlF5XaFc2NI9Pt/lKDg1RzG5c9K111REZi01
26
- A93KaESBdS3veq++b553PIYUlz01Fxw/6sRB1CPTGVL50loloA==
27
- -----END RSA PRIVATE KEY-----