auser-poolparty 0.2.53 → 0.2.54
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/Manifest.txt +15 -1
- data/README.txt +20 -4
- data/bin/cloud-ensure-provisioning +13 -7
- data/bin/cloud-handle-load +1 -0
- data/bin/cloud-start +1 -1
- data/bin/messenger-get-current-nodes +13 -0
- data/bin/server-show-stats +1 -1
- data/bin/server-start-client +15 -8
- data/bin/server-start-master +11 -7
- data/bin/server-start-node +12 -10
- data/bin/server-stop-client +3 -0
- data/bin/server-stop-master +3 -0
- data/bin/server-stop-node +3 -0
- data/lib/erlang/messenger/include/defines.hrl +1 -0
- data/lib/erlang/messenger/pm_client_rel-0.1.script +1 -1
- data/lib/erlang/messenger/pm_master_rel-0.1.script +1 -1
- data/lib/erlang/messenger/pm_node_rel-0.1.script +1 -1
- data/lib/erlang/messenger/src/client_server.erl +22 -8
- data/lib/erlang/messenger/src/pm_master.erl +7 -9
- data/lib/erlang/messenger/src/pm_node.erl +0 -1
- data/lib/erlang/messenger/src/pm_strings.erl +11 -0
- data/lib/erlang/messenger/src/utils.erl +12 -4
- data/lib/erlang/messenger/useful_snippets +1 -1
- data/lib/poolparty.rb +10 -2
- data/lib/poolparty/base_packages/poolparty.rb +23 -16
- data/lib/poolparty/base_packages/runit.rb +21 -0
- data/lib/poolparty/helpers/binary.rb +0 -1
- data/lib/poolparty/helpers/provisioner_base.rb +4 -0
- data/lib/poolparty/helpers/provisioners/master.rb +15 -8
- data/lib/poolparty/modules/file_writer.rb +10 -2
- data/lib/poolparty/net/messenger.rb +9 -3
- data/lib/poolparty/net/remoter.rb +12 -8
- data/lib/poolparty/plugins/runit.rb +96 -0
- data/lib/poolparty/pool/cloud.rb +1 -1
- data/lib/poolparty/pool/resource.rb +2 -1
- data/lib/poolparty/pool/resources/custom_service.rb +30 -0
- data/lib/poolparty/pool/resources/package.rb +5 -2
- data/lib/poolparty/templates/messenger/client/log-run.erb +2 -0
- data/lib/poolparty/templates/messenger/client/run.erb +4 -0
- data/lib/poolparty/templates/messenger/master/log-run.erb +2 -0
- data/lib/poolparty/templates/messenger/master/run.erb +4 -0
- data/lib/poolparty/templates/messenger/node/log-run.erb +2 -0
- data/lib/poolparty/templates/messenger/node/run.erb +4 -0
- data/lib/poolparty/version.rb +1 -1
- data/poolparty.gemspec +58 -504
- data/spec/poolparty/net/remote_spec.rb +1 -1
- metadata +21 -7
@@ -6,7 +6,7 @@
|
|
6
6
|
% erl -pa ./ebin -kernel inet_dist_listen_min 7000 inet_dist_listen_max 7050 -setcookie poolparty -boot pm_node_rel-0.1 -sname node1
|
7
7
|
|
8
8
|
% Starting the client on the master
|
9
|
-
% erl -pa /var/lib/gems/1.8/gems/poolparty-0.2.
|
9
|
+
% erl -pa /var/lib/gems/1.8/gems/poolparty-0.2.54/lib/erlang/messenger/ebin -kernel inet_dist_listen_min 7000 inet_dist_listen_max 7050 -sname client -setcookie poolparty -run pm_client start
|
10
10
|
|
11
11
|
% Get the load
|
12
12
|
% erl -pa /var/lib/gems/1.8/gems/poolparty-0.2.46/lib/erlang/messenger/ebin -kernel inet_dist_listen_min 7000 inet_dist_listen_max 7050 -sname client -setcookie poolparty -run pm_client start
|
data/lib/poolparty.rb
CHANGED
@@ -1,13 +1,21 @@
|
|
1
1
|
require 'rubygems'
|
2
2
|
|
3
3
|
# Load required gems
|
4
|
+
@required_software = Array.new
|
4
5
|
%w(activesupport ftools logging ruby2ruby).each do |lib|
|
5
6
|
begin
|
6
7
|
require lib
|
7
8
|
rescue Exception => e
|
9
|
+
@required_software << lib
|
8
10
|
puts "Could not find library #{lib}: #{e}"
|
9
|
-
end
|
10
|
-
|
11
|
+
end
|
12
|
+
end
|
13
|
+
|
14
|
+
unless @required_software.empty?
|
15
|
+
puts "*****************************************"
|
16
|
+
puts "* Error *"
|
17
|
+
puts "* Missing required software *"
|
18
|
+
puts ""
|
11
19
|
end
|
12
20
|
|
13
21
|
# Use active supports auto load mechanism
|
@@ -7,7 +7,7 @@ module PoolParty
|
|
7
7
|
# TODO: COME BACK AND CLEAN THIS UP
|
8
8
|
(self.respond_to?(:list_of_running_instances) ? self : parent).list_of_running_instances.each do |ri|
|
9
9
|
has_host({:name => "#{ri.name}", :ip => ri.ip })
|
10
|
-
end
|
10
|
+
end
|
11
11
|
|
12
12
|
has_package(:name => "erlang")
|
13
13
|
has_package(:name => "erlang-dev")
|
@@ -40,16 +40,17 @@ module PoolParty
|
|
40
40
|
|
41
41
|
has_gempackage(:name => "poolparty", :download_url => "http://github.com/auser/poolparty/tree/master%2Fpkg%2Fpoolparty.gem?raw=true", :requires => [get_gempackage("ruby2ruby"), get_gempackage("RubyInline"), get_gempackage("ParseTree")])
|
42
42
|
|
43
|
-
|
44
|
-
has_exec(:name => "
|
45
|
-
|
43
|
+
# , :ifnot => "/bin/ps aux | /bin/grep -q pm_node"
|
44
|
+
has_exec(:name => "build_messenger", :command => ". /etc/profile && server-build-messenger -v")
|
45
|
+
has_exec(:name => "start_node", :command => ". /etc/profile && server-start-node")
|
46
|
+
# has_runit_service("pm_node", "pm_node", File.join(File.dirname(__FILE__), "..", "templates/messenger/node/"))
|
46
47
|
end
|
47
48
|
|
48
49
|
# execute_on_node do
|
49
|
-
|
50
|
-
|
51
|
-
|
52
|
-
|
50
|
+
has_cron(:name => "puppetd runner", :user => Base.user, :minute => "*/5") do
|
51
|
+
requires get_gempackage("poolparty")
|
52
|
+
command(PoolParty::Remote::RemoteInstance.puppet_rerun_commad)
|
53
|
+
end
|
53
54
|
# end
|
54
55
|
|
55
56
|
# Cloud panel setup
|
@@ -62,7 +63,7 @@ module PoolParty
|
|
62
63
|
|
63
64
|
# Custom run puppet to minimize footprint
|
64
65
|
# TODO: Update the offsetted times
|
65
|
-
execute_on_master do
|
66
|
+
execute_on_master do
|
66
67
|
has_cron(:name => "puppetd runner", :user => Base.user, :minute => "*/5") do
|
67
68
|
requires get_gempackage("poolparty")
|
68
69
|
command(PoolParty::Remote::RemoteInstance.puppet_master_rerun_command)
|
@@ -70,20 +71,26 @@ module PoolParty
|
|
70
71
|
has_cron(:name => "Load handler", :user => Base.user, :minute => "*/4") do
|
71
72
|
requires get_gempackage("poolparty")
|
72
73
|
command(". /etc/profile && cloud-handle-load")
|
74
|
+
end
|
75
|
+
has_cron(:name => "provisioning ensurer", :user => Base.user, :minute => "*/3") do
|
76
|
+
requires get_gempackage("poolparty")
|
77
|
+
command ". /etc/profile && cloud-ensure-provisioning"
|
73
78
|
end
|
79
|
+
# has_runit_service("client_server", "pm_client", File.join(File.dirname(__FILE__), "..", "templates/messenger/client/"))
|
80
|
+
# has_runit_service("master_server", "pm_master", File.join(File.dirname(__FILE__), "..", "templates/messenger/master/"))
|
81
|
+
# TODO: Update this so it only runs when needed
|
82
|
+
# has_customservice(:name => "start master server", :pattern => "/pm_master/", :bin => ". /etc/profile && server-start-master")
|
83
|
+
# has_customservice(:name => "start client server", :pattern => "/client_service/", :bin => ". /etc/profile && server-start-client")
|
84
|
+
has_exec(:name => "start master messenger", :command => ". /etc/profile && server-start-master") #, :ifnot => "/bin/ps aux | /bin/grep -q pm_master"
|
85
|
+
has_exec(:name => "start client server", :command => ". /etc/profile && server-start-client") #, :ifnot => "/bin/ps aux | /bin/grep -q client_server"
|
74
86
|
|
75
|
-
|
76
|
-
has_exec(:name => "start master messenger", :command => ". /etc/profile && server-start-master", :requires => [get_gempackage("poolparty"), get_exec("build_messenger")], :ifnot => "ps aux | grep beam | grep master")
|
77
|
-
|
78
|
-
has_exec(:name => "start client server", :command => ". /etc/profile && server-start-master", :requires => [get_gempackage("poolparty"), get_exec("build_messenger"), get_exec("start master messenger")], :ifnot => "ps aux | grep beam | grep client")
|
79
|
-
|
80
|
-
has_cron({:name => "maintain script", :command => ". /etc/profile && which cloud-maintain | /bin/sh", :minute => "*/3", :requires => [get_gempackage("poolparty"), get_cron("puppetd runner"), get_cron("Load handler"), get_exec("start master messenger"), get_service("haproxy"), get_exec("start client server")]})
|
87
|
+
has_cron({:name => "maintain script", :command => ". /etc/profile && which cloud-maintain | /bin/sh", :minute => "*/3", :requires => [get_gempackage("poolparty"), get_cron("puppetd runner"), get_cron("Load handler"), get_service("haproxy")]})
|
81
88
|
|
82
89
|
has_remotefile(:name => "/usr/bin/puppetcleaner") do
|
83
90
|
mode 744
|
84
91
|
template File.join(File.dirname(__FILE__), "..", "templates/puppetcleaner")
|
85
92
|
end
|
86
|
-
end
|
93
|
+
end
|
87
94
|
|
88
95
|
has_remotefile(:name => "/usr/bin/puppetrerun") do
|
89
96
|
mode 744
|
@@ -0,0 +1,21 @@
|
|
1
|
+
=begin rdoc
|
2
|
+
Runit beginning
|
3
|
+
NOT IMPLEMENTED YET
|
4
|
+
=end
|
5
|
+
module PoolParty
|
6
|
+
class Base
|
7
|
+
plugin :runit do
|
8
|
+
|
9
|
+
def enable
|
10
|
+
unless enabled
|
11
|
+
has_file(:name => "inittab", :path => "/etc/inittab", :mode => 0644, :owner => "root", :group => "root")
|
12
|
+
has_package(:name => "runit", :ensures => "latest", :requires => get_file("inittab"))
|
13
|
+
has_exec(:name => "/sbin/start runsvdir", :cwd => "/var/service")
|
14
|
+
# has_remotefile(:name => "/etc/event.d/runsvdir", :notify => get_exec("/sbin/start runsvdir"))
|
15
|
+
enabled true
|
16
|
+
end
|
17
|
+
end
|
18
|
+
|
19
|
+
end
|
20
|
+
end
|
21
|
+
end
|
@@ -139,6 +139,10 @@ module PoolParty
|
|
139
139
|
end
|
140
140
|
end
|
141
141
|
def process_clean_reconfigure_for!(instance, testing=false)
|
142
|
+
if instance.is_a?(String)
|
143
|
+
name = instance
|
144
|
+
instance = MyOpenStruct.new(:name => name)
|
145
|
+
end
|
142
146
|
vputs "Cleaning certs from master: #{instance.name}"
|
143
147
|
# puppetca --clean #{instance.name}.compute-1.internal; puppetca --clean #{instance.name}.ec2.internal
|
144
148
|
# find /etc/puppet/ssl -type f -exec rm {} \;
|
@@ -34,8 +34,7 @@ module PoolParty
|
|
34
34
|
create_local_node,
|
35
35
|
move_templates,
|
36
36
|
create_poolparty_manifest,
|
37
|
-
restart_puppetd
|
38
|
-
start_puppetmaster
|
37
|
+
restart_puppetd
|
39
38
|
]
|
40
39
|
end
|
41
40
|
|
@@ -121,15 +120,16 @@ wget http://rubyforge.org/frs/download.php/43666/amazon-ec2-0.3.1.gem -O amazon-
|
|
121
120
|
end
|
122
121
|
|
123
122
|
# ps aux | grep puppetmasterd | awk '{print $2}' | xargs kill
|
124
|
-
# rm -rf /etc/puppet/ssl
|
123
|
+
# /etc/init.d/puppetmaster stop; rm -rf /etc/puppet/ssl; /etc/init.d/puppetmaster start
|
125
124
|
def start_puppetmaster
|
126
125
|
<<-EOS
|
127
126
|
. /etc/profile
|
128
127
|
# /etc/init.d/puppetmaster stop #{unix_hide_string}
|
129
|
-
|
130
|
-
|
131
|
-
#
|
132
|
-
|
128
|
+
ps aux | grep puppetmaster | awk '{print $2}' | xargs kill #{unix_hide_string} # just in case
|
129
|
+
rm -rf /etc/puppet/ssl
|
130
|
+
# Start it back up
|
131
|
+
puppetmasterd --verbose
|
132
|
+
# /etc/init.d/puppetmaster start #{unix_hide_string}
|
133
133
|
EOS
|
134
134
|
end
|
135
135
|
|
@@ -152,7 +152,7 @@ node "#{ri.name}" inherits default {}
|
|
152
152
|
def move_templates
|
153
153
|
<<-EOS
|
154
154
|
mkdir -p #{Base.template_path}
|
155
|
-
cp #{Base.remote_storage_path}/#{Base.template_directory}/* #{Base.template_path}
|
155
|
+
cp -R #{Base.remote_storage_path}/#{Base.template_directory}/* #{Base.template_path}
|
156
156
|
EOS
|
157
157
|
end
|
158
158
|
|
@@ -163,6 +163,13 @@ cp #{Base.remote_storage_path}/poolparty.pp /etc/puppet/manifests/classes/poolpa
|
|
163
163
|
EOS
|
164
164
|
end
|
165
165
|
|
166
|
+
def clean_master_certs
|
167
|
+
returning String.new do |s|
|
168
|
+
s << "puppetca --clean master.compute-1.internal 2>&1 > /dev/null;"
|
169
|
+
s << "puppetca --clean master.ec2.internal 2>&1 > /dev/null"
|
170
|
+
end
|
171
|
+
end
|
172
|
+
|
166
173
|
def restart_puppetd
|
167
174
|
<<-EOS
|
168
175
|
. /etc/profile && /usr/sbin/puppetd --onetime --no-daemonize --logdest syslog --server master #{unix_hide_string}
|
@@ -10,6 +10,13 @@ module PoolParty
|
|
10
10
|
path = ::File.join( Base.tmp_path, Base.template_directory, ::File.basename(file) )
|
11
11
|
FileUtils.cp file, path unless file == path || ::File.exists?(path)
|
12
12
|
end
|
13
|
+
def copy_directory_into_template_storage_directory(dir)
|
14
|
+
path = make_template_directory(dir)
|
15
|
+
Dir["#{dir}/*"].each do |file|
|
16
|
+
FileUtils.cp file, path unless ::File.exists?(::File.join(path, ::File.basename(file)))
|
17
|
+
end
|
18
|
+
::File.basename(path)
|
19
|
+
end
|
13
20
|
def write_to_file_in_storage_directory(file, str, preceded="", &block)
|
14
21
|
path = ::File.join( Base.storage_directory, preceded, ::File.basename(file) )
|
15
22
|
write_to_file(path, str, &block)
|
@@ -45,9 +52,10 @@ module PoolParty
|
|
45
52
|
def make_base_directory
|
46
53
|
FileUtils.mkdir_p Base.storage_directory unless ::File.directory?(Base.storage_directory)
|
47
54
|
end
|
48
|
-
def make_template_directory
|
49
|
-
path = ::File.join(Base.tmp_path, Base.template_directory)
|
55
|
+
def make_template_directory(dir=nil)
|
56
|
+
path = dir ? ::File.join(Base.tmp_path, Base.template_directory, ::File.basename(dir)) : ::File.join(Base.tmp_path, Base.template_directory)
|
50
57
|
FileUtils.mkdir_p path unless ::File.directory?(path)
|
58
|
+
path
|
51
59
|
end
|
52
60
|
def clear_base_directory
|
53
61
|
FileUtils::rm_rf "#{Base.storage_directory}"
|
@@ -2,9 +2,6 @@
|
|
2
2
|
The connection to the messenger from poolparty, the client
|
3
3
|
=end
|
4
4
|
module PoolParty
|
5
|
-
def reconfigure_cloud!
|
6
|
-
Messenger.messenger_send!("reconfigure_cloud")
|
7
|
-
end
|
8
5
|
module Messenger
|
9
6
|
def with_socket(testing=false, &block)
|
10
7
|
host = testing ? "localhost" : (master.ip)
|
@@ -51,6 +48,15 @@ module PoolParty
|
|
51
48
|
module Cloud
|
52
49
|
class Cloud
|
53
50
|
include PoolParty::Messenger
|
51
|
+
|
52
|
+
def get_current_nodes
|
53
|
+
nodes = messenger_send!("get_current_nodes")
|
54
|
+
nodes.split(" ").map {|a| a.split(/@/)[-1] }
|
55
|
+
end
|
56
|
+
|
57
|
+
def reconfigure_cloud!
|
58
|
+
messenger_send!("reconfigure_cloud")
|
59
|
+
end
|
54
60
|
end
|
55
61
|
end
|
56
62
|
end
|
@@ -178,16 +178,17 @@ module PoolParty
|
|
178
178
|
reset!
|
179
179
|
when_no_pending_instances do
|
180
180
|
vputs "Waiting for 10 seconds"
|
181
|
-
wait "10.seconds" # Give some time for ssh to startup
|
181
|
+
wait "10.seconds" # Give some time for ssh to startup
|
182
182
|
@num_instances = list_of_running_instances.size
|
183
183
|
vputs "(@num_instances - (num))..(@num_instances): #{(@num_instances - (num))..(@num_instances)}"
|
184
184
|
last_instances = nonmaster_nonterminated_instances[(@num_instances - (num))..(@num_instances)]
|
185
185
|
last_instances.each do |inst|
|
186
186
|
vputs "Provision slave: #{inst}"
|
187
|
+
hide_output {PoolParty::Provisioner.process_clean_reconfigure_for!(inst, self)}
|
187
188
|
PoolParty::Provisioner.provision_slave(inst, self, false) unless inst.master? rescue vputs "Error"
|
188
|
-
|
189
|
-
|
190
|
-
|
189
|
+
hide_output {PoolParty::Provisioner.process_clean_reconfigure_for!(inst, self)}
|
190
|
+
# cmd = ". /etc/profile && cloud-provision -i #{inst.name.gsub(/node/, '')} &"
|
191
|
+
# vputs "Provision slave with command #{cmd}"
|
191
192
|
end
|
192
193
|
PoolParty::Provisioner.reconfigure_master(self)
|
193
194
|
end
|
@@ -235,10 +236,13 @@ module PoolParty
|
|
235
236
|
if can_start_a_new_instance? && should_expand_cloud?(force)
|
236
237
|
vputs "Expanding the cloud based on load"
|
237
238
|
@num = 1
|
238
|
-
|
239
|
-
|
240
|
-
|
241
|
-
|
239
|
+
@num.times do |i|
|
240
|
+
list_of_pending_instances.size == 0 ? request_launch_one_instance_at_a_time : wait("5.seconds")
|
241
|
+
reset!
|
242
|
+
vputs "request_launch_new_instances: #{@num}"
|
243
|
+
provision_slaves_from_n(@num)
|
244
|
+
after_launched
|
245
|
+
end
|
242
246
|
end
|
243
247
|
end
|
244
248
|
# Contract the cloud
|
@@ -0,0 +1,96 @@
|
|
1
|
+
module PoolParty
|
2
|
+
class Runit
|
3
|
+
define_resource(:runitservice) do
|
4
|
+
def has_runit_service(name="runitservice", downif="", templatedir="")
|
5
|
+
path = copy_templates_from_templatedir(templatedir)
|
6
|
+
call_function <<-EOC
|
7
|
+
runit_service {
|
8
|
+
"#{name}":
|
9
|
+
directory => "/etc/sv",
|
10
|
+
downif => "/bin/ps aux | grep -v grep | grep -q #{downif}",
|
11
|
+
templatedir => "#{path}";
|
12
|
+
}
|
13
|
+
EOC
|
14
|
+
end
|
15
|
+
|
16
|
+
def copy_templates_from_templatedir(dir=nil)
|
17
|
+
raise TemplateNotFound.new("template directory given") unless dir
|
18
|
+
raise TemplateNotFound.new("template directory cannot be found #{dir}") unless ::File.readable?(dir)
|
19
|
+
copy_directory_into_template_storage_directory(dir)
|
20
|
+
end
|
21
|
+
|
22
|
+
custom_function <<-EOF
|
23
|
+
define runit_service ($directory = "/etc/sv", $downif = "/bin/false", $templatedir) {
|
24
|
+
|
25
|
+
file { "$directory-$name":
|
26
|
+
path => "$directory/$name",
|
27
|
+
ensure => directory,
|
28
|
+
owner => root,
|
29
|
+
group => root,
|
30
|
+
mode => 0755,
|
31
|
+
require => Class["runit"]
|
32
|
+
}
|
33
|
+
|
34
|
+
file { "$directory/$name/log":
|
35
|
+
ensure => directory,
|
36
|
+
owner => root,
|
37
|
+
group => root,
|
38
|
+
mode => 0755,
|
39
|
+
require => File["$directory-$name"]
|
40
|
+
}
|
41
|
+
|
42
|
+
file { "$directory/$name/log/main":
|
43
|
+
ensure => directory,
|
44
|
+
owner => root,
|
45
|
+
group => root,
|
46
|
+
mode => 0755,
|
47
|
+
require => File["$directory/$name/log"]
|
48
|
+
}
|
49
|
+
|
50
|
+
file { "/etc/init.d/$name":
|
51
|
+
ensure => $lsbdistid ? {
|
52
|
+
'CentOS' => "/usr/local/bin/sv",
|
53
|
+
default => "/usr/bin/sv",
|
54
|
+
},
|
55
|
+
require => [ File["$directory/$name/run"], File["$directory/$name/log/run"] ]
|
56
|
+
}
|
57
|
+
|
58
|
+
file { "/var/service/$name":
|
59
|
+
ensure => "$directory/$name",
|
60
|
+
require => [ File["$directory-$name"], File["$directory/$name/run"], File["$directory/$name/log/run"] ]
|
61
|
+
}
|
62
|
+
|
63
|
+
file { "$directory/$name/log/run":
|
64
|
+
content => template("$templatedir/log-run.erb"),
|
65
|
+
owner => root,
|
66
|
+
group => root,
|
67
|
+
mode => 755,
|
68
|
+
require => File["$directory/$name/log"],
|
69
|
+
notify => Service[$name]
|
70
|
+
}
|
71
|
+
|
72
|
+
file { "$directory/$name/run":
|
73
|
+
content => template("$templatedir/run.erb"),
|
74
|
+
owner => root,
|
75
|
+
group => root,
|
76
|
+
mode => 755,
|
77
|
+
require => File["$directory-$name"],
|
78
|
+
notify => Service[$name]
|
79
|
+
}
|
80
|
+
|
81
|
+
service { "$name":
|
82
|
+
hasrestart => true,
|
83
|
+
hasstatus => true,
|
84
|
+
require => File["/etc/init.d/$name"]
|
85
|
+
}
|
86
|
+
|
87
|
+
exec { "$name-down":
|
88
|
+
command => "/etc/init.d/$name down",
|
89
|
+
onlyif => $downif,
|
90
|
+
require => File["/etc/init.d/$name"]
|
91
|
+
}
|
92
|
+
}
|
93
|
+
EOF
|
94
|
+
end
|
95
|
+
end
|
96
|
+
end
|
data/lib/poolparty/pool/cloud.rb
CHANGED
@@ -170,7 +170,7 @@ module PoolParty
|
|
170
170
|
# Also note that there is no block associated. This is because we have written
|
171
171
|
# all that is necessary in a method called enable
|
172
172
|
# which is called when there is no block
|
173
|
-
def add_poolparty_base_requirements
|
173
|
+
def add_poolparty_base_requirements
|
174
174
|
heartbeat
|
175
175
|
haproxy
|
176
176
|
ruby
|
@@ -167,7 +167,8 @@ module PoolParty
|
|
167
167
|
[
|
168
168
|
:subscribe, :owner, :group, :path, :mode, :source, :notify, :subscribe, :check, :creates, :cwd, :command, :ensure,
|
169
169
|
:require, :schedule, :range, :alias, :hour, :minute, :user, :month, :monthday, :name, :onlyif, :unless, :refreshonly,
|
170
|
-
:refresh, :content, :template, :ip, :repeat, :provider, :key, :device, :fstype, :remounts, :options, :atboot
|
170
|
+
:refresh, :content, :template, :ip, :repeat, :provider, :key, :device, :fstype, :remounts, :options, :atboot, :before,
|
171
|
+
:binary, :status, :start, :stop, :restart, :pattern
|
171
172
|
]
|
172
173
|
end
|
173
174
|
def key
|
@@ -0,0 +1,30 @@
|
|
1
|
+
module PoolParty
|
2
|
+
module Resources
|
3
|
+
|
4
|
+
class Customservice < Resource
|
5
|
+
|
6
|
+
default_options({
|
7
|
+
:ensure => "running",
|
8
|
+
:provider => "base"
|
9
|
+
})
|
10
|
+
|
11
|
+
def bin(arg)
|
12
|
+
options.merge!(:binary => arg)
|
13
|
+
options.merge!(:start => arg)
|
14
|
+
options.merge!(:stop => arg.gsub(/start/, 'stop'))
|
15
|
+
options.merge!(:restart => "#{arg.gsub(/start/, 'stop')} && #{arg}")
|
16
|
+
end
|
17
|
+
|
18
|
+
def present
|
19
|
+
"running"
|
20
|
+
end
|
21
|
+
def absent
|
22
|
+
"stopping"
|
23
|
+
end
|
24
|
+
def class_type_name
|
25
|
+
"Service"
|
26
|
+
end
|
27
|
+
end
|
28
|
+
|
29
|
+
end
|
30
|
+
end
|