auser-poolparty 0.2.38 → 0.2.39
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 +30 -1
- data/bin/cloud-maintain +11 -3
- data/bin/messenger-get-load +2 -1
- data/lib/erlang/cloudpanel/Makefile +5 -0
- data/lib/erlang/cloudpanel/doc/cloudpanel.html +39 -0
- data/lib/erlang/cloudpanel/doc/cloudpanel_app.html +40 -0
- data/lib/erlang/cloudpanel/doc/cloudpanel_deps.html +89 -0
- data/lib/erlang/cloudpanel/doc/cloudpanel_sup.html +46 -0
- data/lib/erlang/cloudpanel/doc/cloudpanel_web.html +45 -0
- data/lib/erlang/cloudpanel/ebin/cloudpanel.app +14 -0
- data/lib/erlang/cloudpanel/priv/www/images/bg_content.gif +0 -0
- data/lib/erlang/cloudpanel/priv/www/index.html +34 -0
- data/lib/erlang/cloudpanel/priv/www/javascripts/jquery.js +32 -0
- data/lib/erlang/cloudpanel/priv/www/stylesheets/application.css +48 -0
- data/lib/erlang/cloudpanel/priv/www/stylesheets/classes.css +2 -0
- data/lib/erlang/cloudpanel/priv/www/stylesheets/colors.css +8 -0
- data/lib/erlang/cloudpanel/priv/www/stylesheets/nav.css +18 -0
- data/lib/erlang/cloudpanel/src/Makefile +9 -0
- data/lib/erlang/cloudpanel/src/cloudpanel.app +14 -0
- data/lib/erlang/cloudpanel/src/cloudpanel.erl +30 -0
- data/lib/erlang/cloudpanel/src/cloudpanel.hrl +1 -0
- data/lib/erlang/cloudpanel/src/cloudpanel_app.erl +22 -0
- data/lib/erlang/cloudpanel/src/cloudpanel_deps.erl +84 -0
- data/lib/erlang/cloudpanel/src/cloudpanel_sup.erl +54 -0
- data/lib/erlang/cloudpanel/src/cloudpanel_web.erl +45 -0
- data/lib/erlang/cloudpanel/start-dev.sh +3 -0
- data/lib/erlang/cloudpanel/start.sh +3 -0
- data/lib/erlang/cloudpanel/support/include.mk +46 -0
- data/lib/poolparty.rb +1 -1
- data/lib/poolparty/aska/aska.rb +9 -7
- data/lib/poolparty/base_packages/haproxy.rb +1 -1
- data/lib/poolparty/base_packages/poolparty.rb +2 -2
- data/lib/poolparty/helpers/provisioner_base.rb +10 -2
- data/lib/poolparty/monitors/base_monitor.rb +3 -3
- data/lib/poolparty/monitors/monitors/cpu_monitor.rb +1 -1
- data/lib/poolparty/net/messenger.rb +1 -1
- data/lib/poolparty/net/remote_instance.rb +1 -1
- data/lib/poolparty/net/remoter.rb +8 -3
- data/lib/poolparty/pool/base.rb +9 -1
- data/lib/poolparty/templates/puppetcleaner +1 -0
- data/lib/poolparty/version.rb +1 -1
- data/poolparty.gemspec +32 -3
- data/spec/poolparty/monitors/base_monitor_spec.rb +8 -0
- data/website/index.html +1 -1
- metadata +32 -3
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
#nav {
|
|
2
|
+
padding-right: 0 10px;
|
|
3
|
+
margin: 0 10px 10px 0; }
|
|
4
|
+
#nav #navmenu ul {
|
|
5
|
+
display: inline;
|
|
6
|
+
list-style-type: none; }
|
|
7
|
+
#nav #navmenu ul li {
|
|
8
|
+
padding: 0;
|
|
9
|
+
margin: 0; }
|
|
10
|
+
#nav #navmenu ul a {
|
|
11
|
+
color: #FFF;
|
|
12
|
+
background: #036;
|
|
13
|
+
display: block;
|
|
14
|
+
padding: .3em 0;
|
|
15
|
+
text-decoration: none; }
|
|
16
|
+
#nav #navmenu ul a:hover {
|
|
17
|
+
background: #369;
|
|
18
|
+
color: #EEE; }
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
{application, cloudpanel,
|
|
2
|
+
[{description, "cloudpanel"},
|
|
3
|
+
{vsn, "0.01"},
|
|
4
|
+
{modules, [
|
|
5
|
+
cloudpanel,
|
|
6
|
+
cloudpanel_app,
|
|
7
|
+
cloudpanel_sup,
|
|
8
|
+
cloudpanel_web,
|
|
9
|
+
cloudpanel_deps
|
|
10
|
+
]},
|
|
11
|
+
{registered, []},
|
|
12
|
+
{mod, {cloudpanel_app, []}},
|
|
13
|
+
{env, []},
|
|
14
|
+
{applications, [kernel, stdlib, crypto]}]}.
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
%% @author author <author@example.com>
|
|
2
|
+
%% @copyright YYYY author.
|
|
3
|
+
|
|
4
|
+
%% @doc TEMPLATE.
|
|
5
|
+
|
|
6
|
+
-module(cloudpanel).
|
|
7
|
+
-author('author <author@example.com>').
|
|
8
|
+
-export([start/0, stop/0]).
|
|
9
|
+
|
|
10
|
+
ensure_started(App) ->
|
|
11
|
+
case application:start(App) of
|
|
12
|
+
ok ->
|
|
13
|
+
ok;
|
|
14
|
+
{error, {already_started, App}} ->
|
|
15
|
+
ok
|
|
16
|
+
end.
|
|
17
|
+
|
|
18
|
+
%% @spec start() -> ok
|
|
19
|
+
%% @doc Start the cloudpanel server.
|
|
20
|
+
start() ->
|
|
21
|
+
cloudpanel_deps:ensure(),
|
|
22
|
+
ensure_started(crypto),
|
|
23
|
+
application:start(cloudpanel).
|
|
24
|
+
|
|
25
|
+
%% @spec stop() -> ok
|
|
26
|
+
%% @doc Stop the cloudpanel server.
|
|
27
|
+
stop() ->
|
|
28
|
+
Res = application:stop(cloudpanel),
|
|
29
|
+
application:stop(crypto),
|
|
30
|
+
Res.
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
%% @author author <author@example.com>
|
|
2
|
+
%% @copyright YYYY author.
|
|
3
|
+
|
|
4
|
+
%% @doc Callbacks for the cloudpanel application.
|
|
5
|
+
|
|
6
|
+
-module(cloudpanel_app).
|
|
7
|
+
-author('author <author@example.com>').
|
|
8
|
+
|
|
9
|
+
-behaviour(application).
|
|
10
|
+
-export([start/2,stop/1]).
|
|
11
|
+
|
|
12
|
+
|
|
13
|
+
%% @spec start(_Type, _StartArgs) -> ServerRet
|
|
14
|
+
%% @doc application start callback for cloudpanel.
|
|
15
|
+
start(_Type, _StartArgs) ->
|
|
16
|
+
cloudpanel_deps:ensure(),
|
|
17
|
+
cloudpanel_sup:start_link().
|
|
18
|
+
|
|
19
|
+
%% @spec stop(_State) -> ServerRet
|
|
20
|
+
%% @doc application stop callback for cloudpanel.
|
|
21
|
+
stop(_State) ->
|
|
22
|
+
ok.
|
|
@@ -0,0 +1,84 @@
|
|
|
1
|
+
%% @author author <author@example.com>
|
|
2
|
+
%% @copyright YYYY author.
|
|
3
|
+
|
|
4
|
+
%% @doc Ensure that the relatively-installed dependencies are on the code
|
|
5
|
+
%% loading path, and locate resources relative
|
|
6
|
+
%% to this application's path.
|
|
7
|
+
|
|
8
|
+
-module(cloudpanel_deps).
|
|
9
|
+
-author('author <author@example.com>').
|
|
10
|
+
|
|
11
|
+
-export([ensure/0, ensure/1]).
|
|
12
|
+
-export([get_base_dir/0, get_base_dir/1]).
|
|
13
|
+
-export([local_path/1, local_path/2]).
|
|
14
|
+
-export([deps_on_path/0, new_siblings/1]).
|
|
15
|
+
|
|
16
|
+
%% @spec deps_on_path() -> [ProjNameAndVers]
|
|
17
|
+
%% @doc List of project dependencies on the path.
|
|
18
|
+
deps_on_path() ->
|
|
19
|
+
F = fun (X, Acc) ->
|
|
20
|
+
ProjDir = filename:dirname(X),
|
|
21
|
+
case {filename:basename(X),
|
|
22
|
+
filename:basename(filename:dirname(ProjDir))} of
|
|
23
|
+
{"ebin", "deps"} ->
|
|
24
|
+
[filename:basename(ProjDir) | Acc];
|
|
25
|
+
_ ->
|
|
26
|
+
Acc
|
|
27
|
+
end
|
|
28
|
+
end,
|
|
29
|
+
ordsets:from_list(lists:foldl(F, [], code:get_path())).
|
|
30
|
+
|
|
31
|
+
%% @spec new_siblings(Module) -> [Dir]
|
|
32
|
+
%% @doc Find new siblings paths relative to Module that aren't already on the
|
|
33
|
+
%% code path.
|
|
34
|
+
new_siblings(Module) ->
|
|
35
|
+
Existing = deps_on_path(),
|
|
36
|
+
SiblingEbin = filelib:wildcard(local_path(["deps", "*", "ebin"], Module)),
|
|
37
|
+
Siblings = [filename:dirname(X) || X <- SiblingEbin,
|
|
38
|
+
ordsets:is_element(
|
|
39
|
+
filename:basename(filename:dirname(X)),
|
|
40
|
+
Existing) =:= false],
|
|
41
|
+
lists:filter(fun filelib:is_dir/1,
|
|
42
|
+
lists:append([[filename:join([X, "ebin"]),
|
|
43
|
+
filename:join([X, "include"])] ||
|
|
44
|
+
X <- Siblings])).
|
|
45
|
+
|
|
46
|
+
|
|
47
|
+
%% @spec ensure(Module) -> ok
|
|
48
|
+
%% @doc Ensure that all ebin and include paths for dependencies
|
|
49
|
+
%% of the application for Module are on the code path.
|
|
50
|
+
ensure(Module) ->
|
|
51
|
+
code:add_paths(new_siblings(Module)),
|
|
52
|
+
code:clash(),
|
|
53
|
+
ok.
|
|
54
|
+
|
|
55
|
+
%% @spec ensure() -> ok
|
|
56
|
+
%% @doc Ensure that the ebin and include paths for dependencies of
|
|
57
|
+
%% this application are on the code path. Equivalent to
|
|
58
|
+
%% ensure(?Module).
|
|
59
|
+
ensure() ->
|
|
60
|
+
ensure(?MODULE).
|
|
61
|
+
|
|
62
|
+
%% @spec get_base_dir(Module) -> string()
|
|
63
|
+
%% @doc Return the application directory for Module. It assumes Module is in
|
|
64
|
+
%% a standard OTP layout application in the ebin or src directory.
|
|
65
|
+
get_base_dir(Module) ->
|
|
66
|
+
{file, Here} = code:is_loaded(Module),
|
|
67
|
+
filename:dirname(filename:dirname(Here)).
|
|
68
|
+
|
|
69
|
+
%% @spec get_base_dir() -> string()
|
|
70
|
+
%% @doc Return the application directory for this application. Equivalent to
|
|
71
|
+
%% get_base_dir(?MODULE).
|
|
72
|
+
get_base_dir() ->
|
|
73
|
+
get_base_dir(?MODULE).
|
|
74
|
+
|
|
75
|
+
%% @spec local_path([string()], Module) -> string()
|
|
76
|
+
%% @doc Return an application-relative directory from Module's application.
|
|
77
|
+
local_path(Components, Module) ->
|
|
78
|
+
filename:join([get_base_dir(Module) | Components]).
|
|
79
|
+
|
|
80
|
+
%% @spec local_path(Components) -> string()
|
|
81
|
+
%% @doc Return an application-relative directory for this application.
|
|
82
|
+
%% Equivalent to local_path(Components, ?MODULE).
|
|
83
|
+
local_path(Components) ->
|
|
84
|
+
local_path(Components, ?MODULE).
|
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
%% @author author <author@example.com>
|
|
2
|
+
%% @copyright YYYY author.
|
|
3
|
+
|
|
4
|
+
%% @doc Supervisor for the cloudpanel application.
|
|
5
|
+
|
|
6
|
+
-module(cloudpanel_sup).
|
|
7
|
+
-author('author <author@example.com>').
|
|
8
|
+
|
|
9
|
+
-behaviour(supervisor).
|
|
10
|
+
|
|
11
|
+
%% External exports
|
|
12
|
+
-export([start_link/0, upgrade/0]).
|
|
13
|
+
|
|
14
|
+
%% supervisor callbacks
|
|
15
|
+
-export([init/1]).
|
|
16
|
+
|
|
17
|
+
%% @spec start_link() -> ServerRet
|
|
18
|
+
%% @doc API for starting the supervisor.
|
|
19
|
+
start_link() ->
|
|
20
|
+
supervisor:start_link({local, ?MODULE}, ?MODULE, []).
|
|
21
|
+
|
|
22
|
+
%% @spec upgrade() -> ok
|
|
23
|
+
%% @doc Add processes if necessary.
|
|
24
|
+
upgrade() ->
|
|
25
|
+
{ok, {_, Specs}} = init([]),
|
|
26
|
+
|
|
27
|
+
Old = sets:from_list(
|
|
28
|
+
[Name || {Name, _, _, _} <- supervisor:which_children(?MODULE)]),
|
|
29
|
+
New = sets:from_list([Name || {Name, _, _, _, _, _} <- Specs]),
|
|
30
|
+
Kill = sets:subtract(Old, New),
|
|
31
|
+
|
|
32
|
+
sets:fold(fun (Id, ok) ->
|
|
33
|
+
supervisor:terminate_child(?MODULE, Id),
|
|
34
|
+
supervisor:delete_child(?MODULE, Id),
|
|
35
|
+
ok
|
|
36
|
+
end, ok, Kill),
|
|
37
|
+
|
|
38
|
+
[supervisor:start_child(?MODULE, Spec) || Spec <- Specs],
|
|
39
|
+
ok.
|
|
40
|
+
|
|
41
|
+
%% @spec init([]) -> SupervisorTree
|
|
42
|
+
%% @doc supervisor callback.
|
|
43
|
+
init([]) ->
|
|
44
|
+
Ip = case os:getenv("MOCHIWEB_IP") of false -> "0.0.0.0"; Any -> Any end,
|
|
45
|
+
WebConfig = [
|
|
46
|
+
{ip, Ip},
|
|
47
|
+
{port, 8000},
|
|
48
|
+
{docroot, cloudpanel_deps:local_path(["priv", "www"])}],
|
|
49
|
+
Web = {cloudpanel_web,
|
|
50
|
+
{cloudpanel_web, start, [WebConfig]},
|
|
51
|
+
permanent, 5000, worker, dynamic},
|
|
52
|
+
|
|
53
|
+
Processes = [Web],
|
|
54
|
+
{ok, {{one_for_one, 10, 10}, Processes}}.
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
%% @author Ari Lerner <ari.lerner@citrusbyte.com>
|
|
2
|
+
%% @copyright 2008 Ari Lerner.
|
|
3
|
+
|
|
4
|
+
%% @doc PoolParty panel
|
|
5
|
+
|
|
6
|
+
-module (cloudpanel_web).
|
|
7
|
+
-author('Ari Lerner <ari.lerner@citrusbyte.com>').
|
|
8
|
+
|
|
9
|
+
-export([start/1, stop/0, loop/2]).
|
|
10
|
+
|
|
11
|
+
-define(TIMEOUT, 20000).
|
|
12
|
+
|
|
13
|
+
%% External API
|
|
14
|
+
|
|
15
|
+
start(Options) ->
|
|
16
|
+
{DocRoot, Options1} = get_option(docroot, Options),
|
|
17
|
+
Loop = fun (Req) ->
|
|
18
|
+
?MODULE:loop(Req, DocRoot)
|
|
19
|
+
end,
|
|
20
|
+
mochiweb_http:start([{name, ?MODULE}, {loop, Loop} | Options1]).
|
|
21
|
+
|
|
22
|
+
stop() ->
|
|
23
|
+
mochiweb_http:stop(?MODULE).
|
|
24
|
+
|
|
25
|
+
loop(Req, DocRoot) ->
|
|
26
|
+
"/" ++ Path = Req:get(path),
|
|
27
|
+
case Req:get(method) of
|
|
28
|
+
Method when Method =:= 'GET'; Method =:= 'HEAD' ->
|
|
29
|
+
case Path of
|
|
30
|
+
_ ->
|
|
31
|
+
Req:serve_file(Path, DocRoot)
|
|
32
|
+
end;
|
|
33
|
+
'POST' ->
|
|
34
|
+
case Path of
|
|
35
|
+
_ ->
|
|
36
|
+
Req:not_found()
|
|
37
|
+
end;
|
|
38
|
+
_ ->
|
|
39
|
+
Req:respond({501, [], []})
|
|
40
|
+
end.
|
|
41
|
+
|
|
42
|
+
%% Internal API
|
|
43
|
+
|
|
44
|
+
get_option(Option, Options) ->
|
|
45
|
+
{proplists:get_value(Option, Options), proplists:delete(Option, Options)}.
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
## -*- makefile -*-
|
|
2
|
+
|
|
3
|
+
######################################################################
|
|
4
|
+
## Erlang
|
|
5
|
+
|
|
6
|
+
ERL := erl
|
|
7
|
+
ERLC := $(ERL)c
|
|
8
|
+
|
|
9
|
+
INCLUDE_DIRS := ../include $(wildcard ../deps/*/include)
|
|
10
|
+
EBIN_DIRS := $(wildcard ../deps/*/ebin)
|
|
11
|
+
ERLC_FLAGS := -W $(INCLUDE_DIRS:../%=-I ../%) $(EBIN_DIRS:%=-pa %)
|
|
12
|
+
|
|
13
|
+
ifndef no_debug_info
|
|
14
|
+
ERLC_FLAGS += +debug_info
|
|
15
|
+
endif
|
|
16
|
+
|
|
17
|
+
ifdef debug
|
|
18
|
+
ERLC_FLAGS += -Ddebug
|
|
19
|
+
endif
|
|
20
|
+
|
|
21
|
+
EBIN_DIR := ../ebin
|
|
22
|
+
DOC_DIR := ../doc
|
|
23
|
+
EMULATOR := beam
|
|
24
|
+
|
|
25
|
+
ERL_SOURCES := $(wildcard *.erl)
|
|
26
|
+
ERL_HEADERS := $(wildcard *.hrl) $(wildcard ../include/*.hrl)
|
|
27
|
+
ERL_OBJECTS := $(ERL_SOURCES:%.erl=$(EBIN_DIR)/%.$(EMULATOR))
|
|
28
|
+
ERL_DOCUMENTS := $(ERL_SOURCES:%.erl=$(DOC_DIR)/%.html)
|
|
29
|
+
ERL_OBJECTS_LOCAL := $(ERL_SOURCES:%.erl=./%.$(EMULATOR))
|
|
30
|
+
APP_FILES := $(wildcard *.app)
|
|
31
|
+
EBIN_FILES = $(ERL_OBJECTS) $(ERL_DOCUMENTS) $(APP_FILES:%.app=../ebin/%.app)
|
|
32
|
+
EBIN_FILES_NO_DOCS = $(ERL_OBJECTS) $(APP_FILES:%.app=../ebin/%.app)
|
|
33
|
+
MODULES = $(ERL_SOURCES:%.erl=%)
|
|
34
|
+
|
|
35
|
+
../ebin/%.app: %.app
|
|
36
|
+
cp $< $@
|
|
37
|
+
|
|
38
|
+
$(EBIN_DIR)/%.$(EMULATOR): %.erl
|
|
39
|
+
$(ERLC) $(ERLC_FLAGS) -o $(EBIN_DIR) $<
|
|
40
|
+
|
|
41
|
+
./%.$(EMULATOR): %.erl
|
|
42
|
+
$(ERLC) $(ERLC_FLAGS) -o . $<
|
|
43
|
+
|
|
44
|
+
$(DOC_DIR)/%.html: %.erl
|
|
45
|
+
$(ERL) -noshell -run edoc file $< -run init stop
|
|
46
|
+
mv *.html $(DOC_DIR)
|
data/lib/poolparty.rb
CHANGED
|
@@ -16,7 +16,7 @@ ActiveSupport::Dependencies.load_paths << File.dirname(__FILE__)
|
|
|
16
16
|
## Load PoolParty
|
|
17
17
|
require "#{File.dirname(__FILE__)}/poolparty/version"
|
|
18
18
|
|
|
19
|
-
%w(core modules exceptions aska
|
|
19
|
+
%w(core modules exceptions dependency_resolutions aska monitors net).each do |dir|
|
|
20
20
|
Dir[File.dirname(__FILE__) + "/poolparty/#{dir}/**.rb"].each do |file|
|
|
21
21
|
require file
|
|
22
22
|
end
|
data/lib/poolparty/aska/aska.rb
CHANGED
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
=end
|
|
5
5
|
module Aska
|
|
6
6
|
module ClassMethods
|
|
7
|
-
def rules(name=:rules, arr=[])
|
|
7
|
+
def rules(name=:rules, arr=[], create_vars=true)
|
|
8
8
|
returning look_up_rules(name) do |rs|
|
|
9
9
|
arr.each do |line|
|
|
10
10
|
next unless line
|
|
@@ -12,7 +12,7 @@ module Aska
|
|
|
12
12
|
v = line[/(.+)[=\\<>](.*)/, 2].gsub(/\s+/, '')
|
|
13
13
|
m = line[/[=\\<>]/, 0].gsub(/\s+/, '')
|
|
14
14
|
|
|
15
|
-
create_instance_variable(k)
|
|
15
|
+
create_instance_variable(k, create_vars)
|
|
16
16
|
rs << {k => [m, v]}
|
|
17
17
|
rs << {k => [">", "0"]} unless rs.reject {|a| a.to_s == "#{k}>0" }
|
|
18
18
|
end
|
|
@@ -21,10 +21,12 @@ module Aska
|
|
|
21
21
|
end
|
|
22
22
|
end
|
|
23
23
|
end
|
|
24
|
-
def create_instance_variable(k)
|
|
24
|
+
def create_instance_variable(k, create_vars=true)
|
|
25
25
|
aska_attr_accessors << k.to_sym unless aska_attr_accessors.include?(k.to_sym)
|
|
26
|
-
|
|
27
|
-
|
|
26
|
+
if create_vars
|
|
27
|
+
attr_reader k.to_sym unless respond_to?("#{k}".to_sym)
|
|
28
|
+
attr_writer k.to_sym unless respond_to?("#{k}=".to_sym)
|
|
29
|
+
end
|
|
28
30
|
end
|
|
29
31
|
def look_up_rules(name)
|
|
30
32
|
defined_rules[name.to_sym] ||= Rules.new
|
|
@@ -70,10 +72,10 @@ module Aska
|
|
|
70
72
|
def rules_values
|
|
71
73
|
returning Array.new do |arr|
|
|
72
74
|
self.class.defined_rules.each do |name,rule_array|
|
|
73
|
-
arr << name
|
|
75
|
+
arr << "#{name} : #{valid_rule?(rule_array)}"
|
|
74
76
|
rule_array.each do |rule|
|
|
75
77
|
rule.map do |k,v|
|
|
76
|
-
arr << "#{k} -> #{__aska_aska_stuff(k)} (#{v[0]} #{v[1]})"
|
|
78
|
+
arr << " #{k} -> #{__aska_aska_stuff(k)} (#{v[0]} #{v[1]})"
|
|
77
79
|
end
|
|
78
80
|
end
|
|
79
81
|
end
|
|
@@ -40,8 +40,8 @@ module PoolParty
|
|
|
40
40
|
|
|
41
41
|
has_gempackage(:name => "poolparty-latest", :download_url => "http://github.com/auser/poolparty/tree/master%2Fpkg%2Fpoolparty-latest.gem?raw=true", :requires => [get_gempackage("ruby2ruby"), get_gempackage("RubyInline"), get_gempackage("ParseTree")])
|
|
42
42
|
|
|
43
|
-
has_exec(:name => "build_messenger", :command => ". /etc/profile && server-build-messenger", :requires => get_gempackage("poolparty-latest"), :
|
|
44
|
-
has_exec(:name => "start_node", :command => ". /etc/profile && server-start-node", :requires => get_exec("build_messenger"), :
|
|
43
|
+
has_exec(:name => "build_messenger", :command => ". /etc/profile && server-build-messenger", :requires => get_gempackage("poolparty-latest"), :onlyif => "ps aux | grep beam | grep node")
|
|
44
|
+
has_exec(:name => "start_node", :command => ". /etc/profile && server-start-node", :requires => get_exec("build_messenger"), :onlyif => "ps aux | grep beam | grep node")
|
|
45
45
|
|
|
46
46
|
end
|
|
47
47
|
|
|
@@ -93,6 +93,8 @@ module PoolParty
|
|
|
93
93
|
|
|
94
94
|
before_install(@instance)
|
|
95
95
|
|
|
96
|
+
process_clean_reconfigure_for!(@instance, testing)
|
|
97
|
+
|
|
96
98
|
vputs "Logging in and running provisioning on #{@instance.name}"
|
|
97
99
|
cmd = "cd #{Base.remote_storage_path} && chmod +x install_#{name}.sh && /bin/sh install_#{name}.sh; rm install_#{name}.sh"
|
|
98
100
|
verbose ? @cloud.run_command_on(cmd, @instance) : hide_output {@cloud.run_command_on(cmd, @instance)}
|
|
@@ -136,8 +138,9 @@ module PoolParty
|
|
|
136
138
|
vputs "Cleaning certs from master: #{instance.name}"
|
|
137
139
|
# puppetca --clean #{instance.name}.compute-1.internal; puppetca --clean #{instance.name}.ec2.internal
|
|
138
140
|
# find /etc/puppet/ssl -type f -exec rm {} \;
|
|
139
|
-
|
|
140
|
-
@cloud.run_command_on(
|
|
141
|
+
@cloud.run_command_on("rm -rf /etc/puppet/ssl", instance) unless testing || instance.master?
|
|
142
|
+
# @cloud.run_command_on("if [ -f '/usr/bin/puppetcleaner' ]; then /usr/bin/env puppetcleaner; fi", @cloud.master) unless testing
|
|
143
|
+
@cloud.run_command_on("puppetca --clean #{instance.name}.compute-1.internal ; puppetca --clean #{instance.name}.ec2.internal", @cloud.master) unless testing
|
|
141
144
|
end
|
|
142
145
|
def process_reconfigure!(testing=false)
|
|
143
146
|
@cloud.run_command_on(RemoteInstance.puppet_runner_command, @instance) unless testing
|
|
@@ -182,6 +185,7 @@ module PoolParty
|
|
|
182
185
|
"#!/usr/bin/env sh",
|
|
183
186
|
upgrade_system,
|
|
184
187
|
fix_rubygems,
|
|
188
|
+
make_logger_directory,
|
|
185
189
|
install_puppet,
|
|
186
190
|
custom_install_tasks
|
|
187
191
|
] << install_tasks
|
|
@@ -293,6 +297,10 @@ fi
|
|
|
293
297
|
"#{installer_for( puppet_packages )}"
|
|
294
298
|
end
|
|
295
299
|
|
|
300
|
+
def make_logger_directory
|
|
301
|
+
"mkdir -p /var/logs/poolparty"
|
|
302
|
+
end
|
|
303
|
+
|
|
296
304
|
def create_poolparty_manifest
|
|
297
305
|
<<-EOS
|
|
298
306
|
cp #{Base.remote_storage_path}/poolparty.pp /etc/puppet/manifests/classes
|