auser-poolparty 1.3.8 → 1.3.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.
- data/VERSION.yml +1 -1
- data/bin/cloud-thrift +28 -18
- data/config/jeweler.rb +3 -1
- data/examples/thrift/thrift_example.rb +1 -0
- data/lib/cloud_providers/ec2/ec2.rb +2 -2
- data/lib/poolparty/plugins/hermes.rb +18 -10
- data/lib/poolparty/pool.rb +8 -9
- data/lib/proto/command_query_handler.rb +19 -0
- data/test/lib/proto/command_query_handler_test.rb +11 -0
- metadata +5 -4
data/VERSION.yml
CHANGED
data/bin/cloud-thrift
CHANGED
@@ -22,9 +22,11 @@ Usage: #{$0} #{all_options_string}
|
|
22
22
|
EOS
|
23
23
|
|
24
24
|
short_desc "Start the cloud thrift interface"
|
25
|
-
opt :port, "Start
|
25
|
+
opt :port, "Start on port", :type => :integer, :default => 11223
|
26
26
|
opt :dir, "Pid directory", :type => :string, :default => "/tmp"
|
27
27
|
opt :daemon, "Daemonize", :type => :bool, :default => true
|
28
|
+
# Query params
|
29
|
+
opt :host, "Query on host", :type => :string, :default => "localhost"
|
28
30
|
|
29
31
|
run do |command|
|
30
32
|
|
@@ -33,12 +35,12 @@ EOS
|
|
33
35
|
cmd = ARGV.shift
|
34
36
|
cmd = ARGV.shift if cmd == "thrift"
|
35
37
|
|
36
|
-
if %w(run start restart stop).include?(cmd)
|
38
|
+
if %w(run start restart stop query).include?(cmd)
|
37
39
|
args = [cmd]
|
38
40
|
args << ["--", command.argv] unless command.argv.empty?
|
39
41
|
args.flatten!
|
40
42
|
else
|
41
|
-
puts "You must pass one of the following: #{%w(run start restart stop).join(", ")}"
|
43
|
+
puts "You must pass one of the following: #{%w(run start restart stop query).join(", ")}"
|
42
44
|
args = ["--help"]
|
43
45
|
end
|
44
46
|
|
@@ -55,22 +57,30 @@ EOS
|
|
55
57
|
:monitor => true
|
56
58
|
}.merge(command.opts)
|
57
59
|
|
58
|
-
|
59
|
-
|
60
|
-
processor = CloudThrift::CommandInterface::Processor.new(handler)
|
61
|
-
transport = Thrift::ServerSocket.new( options[:port] )
|
62
|
-
transportFactory = Thrift::BufferedTransportFactory.new()
|
63
|
-
server = Thrift::SimpleServer.new(processor, transport, transportFactory)
|
60
|
+
if cmd == "query"
|
61
|
+
require "command_query_handler"
|
64
62
|
|
65
|
-
|
66
|
-
|
67
|
-
|
68
|
-
|
69
|
-
|
70
|
-
|
71
|
-
|
72
|
-
|
73
|
-
|
63
|
+
@loaded_clouds.map do |cld|
|
64
|
+
CommandQueryHandler.run_query(cld, ARGV.shift, ARGV, options)
|
65
|
+
end
|
66
|
+
else
|
67
|
+
block = Proc.new do
|
68
|
+
handler = CommandInterfaceHandler.new
|
69
|
+
processor = CloudThrift::CommandInterface::Processor.new(handler)
|
70
|
+
transport = Thrift::ServerSocket.new( options[:port] )
|
71
|
+
transportFactory = Thrift::BufferedTransportFactory.new()
|
72
|
+
server = Thrift::SimpleServer.new(processor, transport, transportFactory)
|
73
|
+
|
74
|
+
puts "Starting the cloud server..."
|
75
|
+
server.serve()
|
76
|
+
puts "done."
|
77
|
+
end
|
78
|
+
|
79
|
+
if command[:daemon]
|
80
|
+
Daemons.run_proc("cloud-thrift", options, &block)
|
81
|
+
else
|
82
|
+
block.call
|
83
|
+
end
|
74
84
|
end
|
75
85
|
|
76
86
|
end
|
data/config/jeweler.rb
CHANGED
@@ -26,7 +26,9 @@ end
|
|
26
26
|
|
27
27
|
s.files = (%w(Rakefile README.rdoc License.txt VERSION.yml) + Dir["{config,examples,lib,test,tasks,script,generators,bin,vendor}/**/*"])
|
28
28
|
|
29
|
-
s.files
|
29
|
+
s.files += ["vendor/erlang/hermes/ebin/*.tar.gz"]
|
30
|
+
|
31
|
+
s.files.exclude 'vendor/erlang/hermes'
|
30
32
|
s.files.exclude 'examples/thrift/**/*.beam'
|
31
33
|
# s.files.exclude "**/*/erl_crash.dump"
|
32
34
|
|
@@ -15,6 +15,7 @@ require "poolparty_types"
|
|
15
15
|
port = ARGV.pop || 11223
|
16
16
|
|
17
17
|
transport = Thrift::BufferedTransport.new(Thrift::Socket.new('localhost', port))
|
18
|
+
# transport = Thrift::BufferedTransport.new(Thrift::Socket.new('192.168.2.31', port))
|
18
19
|
# transport = Thrift::BufferedTransport.new(Thrift::Socket.new('vm', port))
|
19
20
|
protocol = Thrift::BinaryProtocol.new(transport)
|
20
21
|
|
@@ -63,7 +63,7 @@ module CloudProviders
|
|
63
63
|
return @aws_yml if @aws_yml && caching==true
|
64
64
|
return {} unless File.exists?(filename)
|
65
65
|
ddputs("Reading keys from file: #{filename}")
|
66
|
-
@aws_yml = YAML::load( open(filename).read )
|
66
|
+
@aws_yml = YAML::load( open(filename).read ) || {}
|
67
67
|
end
|
68
68
|
|
69
69
|
default_options({
|
@@ -94,7 +94,7 @@ module CloudProviders
|
|
94
94
|
|
95
95
|
|
96
96
|
def ec2(o={})
|
97
|
-
@ec2 ||= Rightscale::Ec2.new(access_key, secret_access_key, o.merge(:logger => PoolParty::PoolPartyLog, :
|
97
|
+
@ec2 ||= Rightscale::Ec2.new(access_key, secret_access_key, o.merge(:logger => PoolParty::PoolPartyLog, :endpoint_url => ec2_url))
|
98
98
|
end
|
99
99
|
|
100
100
|
# Start a new instance with the given options
|
@@ -11,22 +11,27 @@ module PoolParty
|
|
11
11
|
)
|
12
12
|
|
13
13
|
def after_loaded
|
14
|
+
run_dependencies
|
15
|
+
build_rsync_directory
|
14
16
|
add_unpack
|
15
17
|
run_if_needed
|
16
18
|
end
|
17
19
|
|
18
20
|
def after_compile
|
19
|
-
run_dependencies
|
20
|
-
build_rsync_directory
|
21
21
|
end
|
22
22
|
|
23
23
|
def run_dependencies
|
24
|
-
case cloud.platform
|
24
|
+
install_packages = case cloud.platform
|
25
25
|
when false
|
26
26
|
else
|
27
|
-
|
28
|
-
|
29
|
-
|
27
|
+
["erlang-nox", "erlang-dev"]
|
28
|
+
end
|
29
|
+
has_package "rrdtool"
|
30
|
+
has_exec "install_erlang" do
|
31
|
+
command "echo ''"
|
32
|
+
install_packages.each do |pkg|
|
33
|
+
has_package pkg
|
34
|
+
end
|
30
35
|
end
|
31
36
|
end
|
32
37
|
|
@@ -43,18 +48,21 @@ module PoolParty
|
|
43
48
|
etc_poolparty = cloud.tmp_path + "/etc/poolparty"
|
44
49
|
FileUtils.mkdir_p(etc_poolparty)
|
45
50
|
node_names = cloud.nodes.collect{|n| n.internal_ip || n.dns_name}.compact.collect{|n| "hermes@#{n}"}
|
46
|
-
contents = node_names.collect{|n| %Q{
|
51
|
+
contents = node_names.collect{|n| %Q{'#{n}'.}}.join("\n")
|
47
52
|
File.open(etc_poolparty + "/seeds.conf", "w") {|f| f.puts contents}
|
48
53
|
end
|
49
54
|
|
50
55
|
def add_unpack
|
51
|
-
has_exec "
|
52
|
-
:
|
56
|
+
has_exec "install_hermes",
|
57
|
+
:command => "cd /tmp/hermes && escript target_system install hermes-#{hermes_release_version} #{remote_hermes_deployed_dir}",
|
58
|
+
:creates => "#{remote_hermes_deployed_dir}/releases/#{hermes_release_version}",
|
59
|
+
:requires => get_exec("install_erlang")
|
53
60
|
end
|
54
61
|
|
55
62
|
def run_if_needed
|
56
63
|
has_exec "env GEN_CLUSTER_SEED_CONFIG=/etc/poolparty/seeds.conf #{remote_hermes_deployed_dir}/bin/erl -boot #{remote_hermes_deployed_dir}/releases/#{hermes_release_version}/start -noshell -detached",
|
57
|
-
:not_if => "ps aux | grep -v grep | grep hermes | grep beam"
|
64
|
+
:not_if => "ps aux | grep -v grep | grep hermes | grep beam",
|
65
|
+
:requires => get_exec("install_hermes")
|
58
66
|
end
|
59
67
|
|
60
68
|
private
|
data/lib/poolparty/pool.rb
CHANGED
@@ -151,17 +151,16 @@ module PoolParty
|
|
151
151
|
# + calls the resource define_resource_methods to define the resource methods
|
152
152
|
# + sets up the log
|
153
153
|
def self.before_file_load(filepath)
|
154
|
-
$:.unshift(
|
155
|
-
|
154
|
+
$:.unshift(File.dirname(filepath))
|
155
|
+
$:.unshift("#{File.dirname(filepath)}/lib")
|
156
|
+
$:.unshift("#{File.dirname(filepath)}/plugins")
|
157
|
+
|
158
|
+
Dir["#{File.dirname(filepath)}/lib/*"].each {|lib_path| require lib_path }
|
159
|
+
Dir["#{File.dirname(filepath)}/plugins/*"].each do |plugin_path|
|
156
160
|
if File.directory?(plugin_path)
|
157
161
|
$:.unshift(plugin_path)
|
158
|
-
|
159
|
-
|
160
|
-
require potential if File.exists?(potential)
|
161
|
-
end
|
162
|
-
|
163
|
-
elsif File.file?(plugin_path) && plugin_path.match(/.rb$/)
|
164
|
-
require plugin_path
|
162
|
+
else
|
163
|
+
require plugin_path if File.file?(plugin_path) && plugin_path.match(/.rb$/)
|
165
164
|
end
|
166
165
|
end
|
167
166
|
end
|
@@ -0,0 +1,19 @@
|
|
1
|
+
class CommandQueryHandler
|
2
|
+
def self.run_query(on_cloud, command, args, opts={})
|
3
|
+
port = opts[:port] || 11223
|
4
|
+
host = opts[:host] || "localhost"
|
5
|
+
|
6
|
+
transport = Thrift::BufferedTransport.new(Thrift::Socket.new(host, port))
|
7
|
+
protocol = Thrift::BinaryProtocol.new(transport)
|
8
|
+
|
9
|
+
client = CloudThrift::CommandInterface::Client.new(protocol)
|
10
|
+
transport.open()
|
11
|
+
|
12
|
+
cld = CloudThrift::CloudQuery.new
|
13
|
+
cld.name = on_cloud.name
|
14
|
+
|
15
|
+
ddputs("Running command: #{command} on #{cld.name} at #{host}:#{port}")
|
16
|
+
resp = client.run_command(cld, command, args)
|
17
|
+
resp.response
|
18
|
+
end
|
19
|
+
end
|
@@ -0,0 +1,11 @@
|
|
1
|
+
require "#{File.dirname(__FILE__)}/../../test_helper"
|
2
|
+
$:.unshift("#{File.dirname(__FILE__)}/../../../lib/proto")
|
3
|
+
require "command_query_handler"
|
4
|
+
|
5
|
+
class CommandQueryHandlerTest < Test::Unit::TestCase
|
6
|
+
|
7
|
+
def test_has_run_query_command
|
8
|
+
assert CommandQueryHandler.respond_to?(:run_query)
|
9
|
+
end
|
10
|
+
|
11
|
+
end
|
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.3.
|
4
|
+
version: 1.3.10
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Ari Lerner
|
@@ -11,7 +11,7 @@ autorequire:
|
|
11
11
|
bindir: bin
|
12
12
|
cert_chain: []
|
13
13
|
|
14
|
-
date: 2009-09-
|
14
|
+
date: 2009-09-03 00:00:00 -07:00
|
15
15
|
default_executable:
|
16
16
|
dependencies: []
|
17
17
|
|
@@ -208,6 +208,7 @@ files:
|
|
208
208
|
- lib/poolparty/resources/user.rb
|
209
209
|
- lib/poolparty/resources/variable.rb
|
210
210
|
- lib/proto/command_interface_handler.rb
|
211
|
+
- lib/proto/command_query_handler.rb
|
211
212
|
- lib/proto/gen-erl/commandInterface_thrift.erl
|
212
213
|
- lib/proto/gen-erl/commandInterface_thrift.hrl
|
213
214
|
- lib/proto/gen-erl/poolparty_constants.hrl
|
@@ -335,6 +336,7 @@ files:
|
|
335
336
|
- test/lib/poolparty/resources/service_test.rb
|
336
337
|
- test/lib/poolparty/resources/user_test.rb
|
337
338
|
- test/lib/poolparty/resources/variable_test.rb
|
339
|
+
- test/lib/proto/command_query_handler_test.rb
|
338
340
|
- test/lib/provision/base_test.rb
|
339
341
|
- test/lib/provision/bootstrapper_test.rb
|
340
342
|
- test/test_helper.rb
|
@@ -1112,7 +1114,6 @@ files:
|
|
1112
1114
|
- vendor/gems/trollop/www/index.html
|
1113
1115
|
has_rdoc: false
|
1114
1116
|
homepage: http://poolpartyrb.com
|
1115
|
-
licenses:
|
1116
1117
|
post_install_message:
|
1117
1118
|
rdoc_options:
|
1118
1119
|
- --quiet
|
@@ -1138,7 +1139,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
1138
1139
|
requirements: []
|
1139
1140
|
|
1140
1141
|
rubyforge_project:
|
1141
|
-
rubygems_version: 1.
|
1142
|
+
rubygems_version: 1.2.0
|
1142
1143
|
signing_key:
|
1143
1144
|
specification_version: 3
|
1144
1145
|
summary: Self-healing, auto-scaling system administration, provisioning and maintaining tool that makes cloud computing easy and fun
|