bcome 0.7.0 → 1.0.0
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.
- checksums.yaml +4 -4
- data/bin/bcome +8 -39
- data/lib/bcome.rb +12 -3
- data/lib/objects/bcome/version.rb +3 -0
- data/lib/objects/bootup.rb +81 -0
- data/lib/objects/command/local.rb +40 -0
- data/lib/objects/config_factory.rb +36 -0
- data/lib/objects/driver/base.rb +30 -0
- data/lib/objects/driver/bucket.rb +20 -0
- data/lib/objects/driver/ec2.rb +44 -0
- data/lib/objects/driver/static.rb +4 -0
- data/lib/objects/exception/argument_error_invoking_method_from_command_line.rb +7 -0
- data/lib/objects/exception/base.rb +15 -0
- data/lib/objects/exception/can_only_subselect_on_inventory.rb +7 -0
- data/lib/objects/exception/cannot_find_internal_registry_klass.rb +7 -0
- data/lib/objects/exception/cannot_find_subselection_parent.rb +7 -0
- data/lib/objects/exception/cant_find_key_in_cloud_tags.rb +7 -0
- data/lib/objects/exception/cant_find_key_in_metadata.rb +7 -0
- data/lib/objects/exception/cant_find_proxy_host_by_identifier.rb +7 -0
- data/lib/objects/exception/cant_find_proxy_host_by_namespace.rb +7 -0
- data/lib/objects/exception/could_not_initiate_ssh_connection.rb +7 -0
- data/lib/objects/exception/could_not_initiate_ssh_connection_through_backend_proxy.rb +7 -0
- data/lib/objects/exception/deprecation_warning.rb +11 -0
- data/lib/objects/exception/duplicate_command_line_argument_key.rb +7 -0
- data/lib/objects/exception/ec2_driver_missing_provisioning_region.rb +7 -0
- data/lib/objects/exception/failed_to_run_local_command.rb +7 -0
- data/lib/objects/exception/interactive_session_halt.rb +4 -0
- data/lib/objects/exception/invalid_bcome_breadcrumb.rb +7 -0
- data/lib/objects/exception/invalid_breadcrumb.rb +7 -0
- data/lib/objects/exception/invalid_context_command.rb +7 -0
- data/lib/objects/exception/invalid_identifier.rb +7 -0
- data/lib/objects/exception/invalid_machines_cache_config.rb +7 -0
- data/lib/objects/exception/invalid_matcher_query.rb +7 -0
- data/lib/objects/exception/invalid_meta_data_config.rb +7 -0
- data/lib/objects/exception/invalid_network_config.rb +7 -0
- data/lib/objects/exception/invalid_network_driver_type.rb +7 -0
- data/lib/objects/exception/invalid_proxy_config.rb +7 -0
- data/lib/objects/exception/invalid_regexp_matcher_in_registry.rb +7 -0
- data/lib/objects/exception/invalid_registry_arguments_type.rb +7 -0
- data/lib/objects/exception/invalid_registry_data_config.rb +7 -0
- data/lib/objects/exception/invalid_restriction_key_in_registry.rb +7 -0
- data/lib/objects/exception/invalid_ssh_config.rb +7 -0
- data/lib/objects/exception/inventories_cannot_have_subviews.rb +7 -0
- data/lib/objects/exception/malformed_command_line_arguments.rb +7 -0
- data/lib/objects/exception/method_invocation_requires_parameter.rb +7 -0
- data/lib/objects/exception/method_name_conflict_in_registry.rb +7 -0
- data/lib/objects/exception/missing_argument_for_registry_command.rb +7 -0
- data/lib/objects/exception/missing_description_on_view.rb +7 -0
- data/lib/objects/exception/missing_execute_on_registry_object.rb +7 -0
- data/lib/objects/exception/missing_identifier_on_view.rb +7 -0
- data/lib/objects/exception/missing_ip_address_on_server.rb +7 -0
- data/lib/objects/exception/missing_network_config.rb +7 -0
- data/lib/objects/exception/missing_params_for_rsync.rb +7 -0
- data/lib/objects/exception/missing_params_for_scp.rb +7 -0
- data/lib/objects/exception/missing_subselection_key.rb +7 -0
- data/lib/objects/exception/missing_type_on_view.rb +7 -0
- data/lib/objects/exception/no_node_found_for_breadcrumb.rb +7 -0
- data/lib/objects/exception/no_node_named_by_identifier.rb +7 -0
- data/lib/objects/exception/node_identifiers_must_be_unique.rb +7 -0
- data/lib/objects/exception/orchestration_script_does_not_exist.rb +7 -0
- data/lib/objects/exception/proxy_host_node_does_not_have_public_ip_address.rb +7 -0
- data/lib/objects/exception/unknown_method_for_namespace.rb +7 -0
- data/lib/objects/interactive/session.rb +45 -0
- data/lib/objects/interactive/session_item/base.rb +36 -0
- data/lib/objects/interactive/session_item/capture_input.rb +20 -0
- data/lib/objects/interactive/session_item/transparent_ssh.rb +111 -0
- data/lib/objects/modules/context.rb +13 -0
- data/lib/objects/modules/registry_management.rb +14 -0
- data/lib/objects/modules/ui_output.rb +9 -0
- data/lib/objects/modules/workspace_commands.rb +198 -0
- data/lib/objects/modules/workspace_menu.rb +128 -0
- data/lib/objects/node/attributes.rb +47 -0
- data/lib/objects/node/base.rb +248 -0
- data/lib/objects/node/cache_handler.rb +24 -0
- data/lib/objects/node/collection.rb +51 -0
- data/lib/objects/node/factory.rb +108 -0
- data/lib/objects/node/inventory/base.rb +88 -0
- data/lib/objects/node/inventory/defined.rb +112 -0
- data/lib/objects/node/inventory/subselect.rb +54 -0
- data/lib/objects/node/meta/base.rb +36 -0
- data/lib/objects/node/meta/cloud.rb +4 -0
- data/lib/objects/node/meta/local.rb +4 -0
- data/lib/objects/node/meta_data_factory.rb +23 -0
- data/lib/objects/node/meta_data_loader.rb +32 -0
- data/lib/objects/node/resources/base.rb +98 -0
- data/lib/objects/node/resources/inventory.rb +25 -0
- data/lib/objects/node/resources/sub_inventory.rb +56 -0
- data/lib/objects/node/server/base.rb +218 -0
- data/lib/objects/node/server/dynamic.rb +39 -0
- data/lib/objects/node/server/static.rb +31 -0
- data/lib/objects/orchestration/base.rb +13 -0
- data/lib/objects/orchestrator.rb +24 -0
- data/lib/objects/parser/bread_crumb.rb +31 -0
- data/lib/objects/progress_bar.rb +30 -0
- data/lib/objects/registry/arguments/base.rb +36 -0
- data/lib/objects/registry/arguments/command_line.rb +35 -0
- data/lib/objects/registry/arguments/console.rb +15 -0
- data/lib/objects/registry/command/base.rb +66 -0
- data/lib/objects/registry/command/external.rb +55 -0
- data/lib/objects/registry/command/group.rb +76 -0
- data/lib/objects/registry/command/internal.rb +34 -0
- data/lib/objects/registry/command_list.rb +33 -0
- data/lib/objects/registry/loader.rb +70 -0
- data/lib/objects/ssh/bootstrap.rb +19 -0
- data/lib/objects/ssh/command.rb +46 -0
- data/lib/objects/ssh/command_exec.rb +65 -0
- data/lib/objects/ssh/connection_handler.rb +101 -0
- data/lib/objects/ssh/driver.rb +204 -0
- data/lib/objects/ssh/proxy_data.rb +56 -0
- data/lib/objects/ssh/script_exec.rb +43 -0
- data/lib/objects/system/local.rb +30 -0
- data/lib/objects/workspace.rb +75 -0
- data/patches/irb.rb +20 -7
- data/patches/string.rb +75 -0
- data/patches/string_stylesheet.rb +61 -0
- metadata +175 -93
- data/bin/bcome-bash-setup +0 -18
- data/bin/bcome-setup +0 -43
- data/bin/boot.rb +0 -148
- data/bin/boot_no_shell.rb +0 -3
- data/filters/ec2_filter.rb +0 -12
- data/lib/bcome/version.rb +0 -3
- data/lib/become_object.rb +0 -111
- data/lib/boot.rb +0 -13
- data/lib/command.rb +0 -56
- data/lib/context_functions.rb +0 -65
- data/lib/filters/base.rb +0 -10
- data/lib/filters/ec2_filter.rb +0 -4
- data/lib/functions.rb +0 -70
- data/lib/helpers/command_helper.rb +0 -13
- data/lib/helpers/environment_ssh.rb +0 -122
- data/lib/helpers/fog_helper.rb +0 -108
- data/lib/helpers/instance_command.rb +0 -71
- data/lib/helpers/instance_ssh.rb +0 -83
- data/lib/helpers/selections.rb +0 -117
- data/lib/interactive/interactive_session_halt.rb +0 -4
- data/lib/interactive/session.rb +0 -44
- data/lib/interactive/session_item/base.rb +0 -30
- data/lib/interactive/session_item/transparent_ssh.rb +0 -133
- data/lib/nodes/base.rb +0 -60
- data/lib/nodes/environment.rb +0 -30
- data/lib/nodes/estate.rb +0 -44
- data/lib/nodes/instance.rb +0 -94
- data/lib/nodes/platform.rb +0 -17
- data/lib/nodes/view.rb +0 -31
- data/lib/object.rb +0 -21
- data/lib/orchestrator/command_group/base.rb +0 -56
- data/lib/orchestrator/command_group/custom.rb +0 -13
- data/lib/orchestrator/command_group/direct.rb +0 -53
- data/lib/orchestrator/direct_command/group.rb +0 -21
- data/lib/orchestrator/direct_command/instance.rb +0 -19
- data/lib/orchestrator/factory.rb +0 -38
- data/lib/orchestrator/loader.rb +0 -47
- data/lib/orchestrator/node_target/all.rb +0 -14
- data/lib/orchestrator/node_target/all_excluding_roles.rb +0 -14
- data/lib/orchestrator/node_target/all_with_roles.rb +0 -14
- data/lib/orchestrator/node_target/base.rb +0 -43
- data/lib/orchestrator/node_target/single.rb +0 -12
- data/lib/orchestrator/recipe.rb +0 -60
- data/lib/orchestrator/registry.rb +0 -37
- data/lib/orchestrator/validate_and_set.rb +0 -10
- data/lib/patches/string.rb +0 -86
- data/lib/progress_bar.rb +0 -31
- data/lib/render_irb.rb +0 -53
- data/lib/scp.rb +0 -40
- data/lib/ssh.rb +0 -51
- data/lib/stack/base.rb +0 -148
- data/lib/stack/environment.rb +0 -222
- data/lib/stack/estate.rb +0 -50
- data/lib/stack/instance.rb +0 -130
- data/lib/stack/platform.rb +0 -74
- data/lib/stack/view.rb +0 -56
- data/lib/workspace_context.rb +0 -40
data/lib/helpers/selections.rb
DELETED
|
@@ -1,117 +0,0 @@
|
|
|
1
|
-
module Bcome::Selections
|
|
2
|
-
|
|
3
|
-
def manage_object(method, resource_identifier = nil)
|
|
4
|
-
unless resource_identifier && resource_identifier.is_a?(String)
|
|
5
|
-
print "You must select a resource identified by its name. #{available_resources_options_string}".headsup
|
|
6
|
-
else
|
|
7
|
-
object = find_resource_by_identifier(resource_identifier)
|
|
8
|
-
unless object
|
|
9
|
-
print "Cannot find object with identifier #{resource_identifier} within the resources for this collection. #{available_resources_options_string}".failure unless object
|
|
10
|
-
else
|
|
11
|
-
send(method, object)
|
|
12
|
-
end
|
|
13
|
-
end
|
|
14
|
-
end
|
|
15
|
-
|
|
16
|
-
## Runs commands over *every* object in the selection
|
|
17
|
-
def run(raw_commands, bootstrap = false)
|
|
18
|
-
return unless @objects
|
|
19
|
-
@objects.pmap {|object|
|
|
20
|
-
object.run(raw_commands, bootstrap)
|
|
21
|
-
}
|
|
22
|
-
return
|
|
23
|
-
end
|
|
24
|
-
|
|
25
|
-
def no_selections?
|
|
26
|
-
!@objects || @objects.empty?
|
|
27
|
-
end
|
|
28
|
-
|
|
29
|
-
def put(local_path, remote_path, bootstrap = false)
|
|
30
|
-
if no_selections?
|
|
31
|
-
no_selections_error
|
|
32
|
-
return
|
|
33
|
-
end
|
|
34
|
-
|
|
35
|
-
@objects.each do |object|
|
|
36
|
-
object.put(local_path, remote_path, bootstrap)
|
|
37
|
-
end
|
|
38
|
-
return
|
|
39
|
-
end
|
|
40
|
-
|
|
41
|
-
def get(remote_path)
|
|
42
|
-
if no_selections?
|
|
43
|
-
no_selections_error
|
|
44
|
-
return
|
|
45
|
-
end
|
|
46
|
-
@objects.each do |object|
|
|
47
|
-
object.get(remote_path)
|
|
48
|
-
end
|
|
49
|
-
return
|
|
50
|
-
end
|
|
51
|
-
|
|
52
|
-
def add(resource_identifier = nil)
|
|
53
|
-
resource_identifier = [resource_identifier] unless resource_identifier.is_a?(Array)
|
|
54
|
-
resource_identifier.each {|ri| manage_object(:add_object, ri) }
|
|
55
|
-
puts "\n" + "#{resource_identifier.join(",")} added.".menu_item_cyan + "\n\nType 'selections' or 's' to review your selections.'".menu_item_white
|
|
56
|
-
end
|
|
57
|
-
|
|
58
|
-
def remove(resource_identifier = nil)
|
|
59
|
-
resource_identifier = [resource_identifier] unless resource_identifier.is_a?(Array)
|
|
60
|
-
resource_identifier.each { |ri| manage_object(:remove_object, ri) }
|
|
61
|
-
puts "\n Nodes removed.".menu_item_cyan
|
|
62
|
-
end
|
|
63
|
-
|
|
64
|
-
def add!
|
|
65
|
-
@objects = resources
|
|
66
|
-
puts "All nodes added".informational
|
|
67
|
-
end
|
|
68
|
-
|
|
69
|
-
def clear!
|
|
70
|
-
@objects = []
|
|
71
|
-
selections
|
|
72
|
-
end
|
|
73
|
-
|
|
74
|
-
def find_resource_by_identifier(resource_identifier)
|
|
75
|
-
resources.select{|r| r.identifier == resource_identifier }.first
|
|
76
|
-
end
|
|
77
|
-
|
|
78
|
-
def in_resources?(object)
|
|
79
|
-
resources.include?(object)
|
|
80
|
-
end
|
|
81
|
-
|
|
82
|
-
def add_object(object)
|
|
83
|
-
return if object_in_selections?(object)
|
|
84
|
-
@objects = @objects ? (@objects << object) : [object]
|
|
85
|
-
return
|
|
86
|
-
end
|
|
87
|
-
|
|
88
|
-
def remove_object(object)
|
|
89
|
-
return if no_selections?
|
|
90
|
-
unless object_in_selections?(object)
|
|
91
|
-
puts "\n#{object.identifier} is not within selections".headsup
|
|
92
|
-
else
|
|
93
|
-
@objects = @objects - [object]
|
|
94
|
-
end
|
|
95
|
-
return
|
|
96
|
-
end
|
|
97
|
-
|
|
98
|
-
def object_in_selections?(object)
|
|
99
|
-
return false unless @objects
|
|
100
|
-
return @objects.include?(object)
|
|
101
|
-
end
|
|
102
|
-
|
|
103
|
-
def selections
|
|
104
|
-
if no_selections?
|
|
105
|
-
puts "\n" + "No added nodes.".headsup + "\n"
|
|
106
|
-
else
|
|
107
|
-
puts "\n\s\s" + "Selected nodes:".menu_title_green + "\n\n"
|
|
108
|
-
puts @objects.collect {|o| o.do_describe }.join + "\n"
|
|
109
|
-
end
|
|
110
|
-
end
|
|
111
|
-
alias :s :selections
|
|
112
|
-
|
|
113
|
-
def no_selections_error
|
|
114
|
-
puts "No nodes selected".informational
|
|
115
|
-
end
|
|
116
|
-
|
|
117
|
-
end
|
data/lib/interactive/session.rb
DELETED
|
@@ -1,44 +0,0 @@
|
|
|
1
|
-
module Bcome::Interactive
|
|
2
|
-
class Session
|
|
3
|
-
|
|
4
|
-
class << self
|
|
5
|
-
def run(irb_session)
|
|
6
|
-
irb_pre_session_return_format = irb_session.conf.return_format
|
|
7
|
-
session_end_message = "\ninteractive session ended".success
|
|
8
|
-
begin
|
|
9
|
-
session = ::Bcome::Interactive::Session.new(irb_session)
|
|
10
|
-
irb_session.conf.return_format = ""
|
|
11
|
-
system("clear")
|
|
12
|
-
session.prompt
|
|
13
|
-
rescue ::Bcome::Interactive::SessionHalt => e
|
|
14
|
-
irb_session.conf.return_format = irb_pre_session_return_format
|
|
15
|
-
puts session_end_message
|
|
16
|
-
end
|
|
17
|
-
end
|
|
18
|
-
end
|
|
19
|
-
|
|
20
|
-
attr_reader :responses, :irb_session
|
|
21
|
-
|
|
22
|
-
def initialize(irb_session)
|
|
23
|
-
@irb_session = irb_session
|
|
24
|
-
@responses = {}
|
|
25
|
-
end
|
|
26
|
-
|
|
27
|
-
def prompt
|
|
28
|
-
item = ::Bcome::Interactive::SessionItem::TransparentSsh.new(self)
|
|
29
|
-
print item.start_message
|
|
30
|
-
process_item(item)
|
|
31
|
-
end
|
|
32
|
-
|
|
33
|
-
def process_item(item)
|
|
34
|
-
begin
|
|
35
|
-
item.do
|
|
36
|
-
rescue Exception => e
|
|
37
|
-
puts "Exception: #{e.message}"
|
|
38
|
-
puts e.backtrace.join("\n")
|
|
39
|
-
raise ::Bcome::Interactive::SessionHalt.new
|
|
40
|
-
end
|
|
41
|
-
end
|
|
42
|
-
|
|
43
|
-
end
|
|
44
|
-
end
|
|
@@ -1,30 +0,0 @@
|
|
|
1
|
-
module Bcome::Interactive::SessionItem
|
|
2
|
-
class Base
|
|
3
|
-
|
|
4
|
-
def initialize(session)
|
|
5
|
-
@session = session
|
|
6
|
-
@irb_session = @session.irb_session
|
|
7
|
-
end
|
|
8
|
-
|
|
9
|
-
def bcome_identifier
|
|
10
|
-
@irb_session.become_identifier
|
|
11
|
-
end
|
|
12
|
-
|
|
13
|
-
def irb_session
|
|
14
|
-
@session.irb_session
|
|
15
|
-
end
|
|
16
|
-
|
|
17
|
-
def options
|
|
18
|
-
@session.options
|
|
19
|
-
end
|
|
20
|
-
|
|
21
|
-
def set_response_on_session
|
|
22
|
-
@session.responses[@key] = @response
|
|
23
|
-
end
|
|
24
|
-
|
|
25
|
-
def do(*params)
|
|
26
|
-
raise "Should be overidden"
|
|
27
|
-
end
|
|
28
|
-
|
|
29
|
-
end
|
|
30
|
-
end
|
|
@@ -1,133 +0,0 @@
|
|
|
1
|
-
module Bcome::Interactive::SessionItem
|
|
2
|
-
class TransparentSsh < ::Bcome::Interactive::SessionItem::Base
|
|
3
|
-
|
|
4
|
-
END_SESSION_KEY = "\\q"
|
|
5
|
-
HELP_KEY = "\\?"
|
|
6
|
-
LIST_KEY = "\\l"
|
|
7
|
-
|
|
8
|
-
DANGER_CMD = "rm\s+-r|rm\s+-f|rm\s+-fr|rm\s+-rf|rm"
|
|
9
|
-
|
|
10
|
-
def do
|
|
11
|
-
show_menu
|
|
12
|
-
puts ""
|
|
13
|
-
open_ssh_connections!
|
|
14
|
-
puts ""
|
|
15
|
-
list_machines
|
|
16
|
-
action
|
|
17
|
-
end
|
|
18
|
-
|
|
19
|
-
def action
|
|
20
|
-
input = get_input
|
|
21
|
-
return if exit?(input)
|
|
22
|
-
if show_menu?(input)
|
|
23
|
-
show_menu
|
|
24
|
-
elsif list_machines?(input)
|
|
25
|
-
list_machines
|
|
26
|
-
elsif command_may_be_unwise?(input)
|
|
27
|
-
handle_the_unwise(input)
|
|
28
|
-
else
|
|
29
|
-
execute_on_machines(input)
|
|
30
|
-
end
|
|
31
|
-
action
|
|
32
|
-
end
|
|
33
|
-
|
|
34
|
-
def show_menu
|
|
35
|
-
system("clear") ; print start_message
|
|
36
|
-
end
|
|
37
|
-
|
|
38
|
-
def handle_the_unwise(input)
|
|
39
|
-
if prompt_for_confirmation("Command may be dangerous to run on all machines. Are you sure you want to proceed? [Y|N] > ".danger)
|
|
40
|
-
execute_on_machines(input)
|
|
41
|
-
end
|
|
42
|
-
end
|
|
43
|
-
|
|
44
|
-
def command_may_be_unwise?(input)
|
|
45
|
-
input =~ /#{DANGER_CMD}/
|
|
46
|
-
end
|
|
47
|
-
|
|
48
|
-
def prompt_for_confirmation(message)
|
|
49
|
-
answer = get_input(message)
|
|
50
|
-
unless ["Y", "N"].include?(answer)
|
|
51
|
-
prompt_for_confirmation(message)
|
|
52
|
-
end
|
|
53
|
-
return answer == "Y" ? true : false
|
|
54
|
-
end
|
|
55
|
-
|
|
56
|
-
def start_message
|
|
57
|
-
warning = "\nCommands entered here will be executed on EVERY machine in your selection.".danger
|
|
58
|
-
second_warning = "\n\nUse with CAUTION.".danger
|
|
59
|
-
info = "\n\n\\l list machines\n\\q to quit\n\\? this message".informational
|
|
60
|
-
return "#{warning}#{second_warning}#{info}\n"
|
|
61
|
-
end
|
|
62
|
-
|
|
63
|
-
def terminal_prompt
|
|
64
|
-
"#{bcome_identifier}>\s" + "interactive\s>\s".command # high voltage
|
|
65
|
-
end
|
|
66
|
-
|
|
67
|
-
def valid_response(response)
|
|
68
|
-
a = response.gsub("\s", "").downcase
|
|
69
|
-
valid_responses.include?(response)
|
|
70
|
-
end
|
|
71
|
-
|
|
72
|
-
def exit?(input)
|
|
73
|
-
input == END_SESSION_KEY
|
|
74
|
-
end
|
|
75
|
-
|
|
76
|
-
def show_menu?(input)
|
|
77
|
-
input == HELP_KEY
|
|
78
|
-
end
|
|
79
|
-
|
|
80
|
-
def list_machines?(input)
|
|
81
|
-
input == LIST_KEY
|
|
82
|
-
end
|
|
83
|
-
|
|
84
|
-
def open_ssh_connections!
|
|
85
|
-
ProgressBar.instance.reset!
|
|
86
|
-
machines.pmap {|machine|
|
|
87
|
-
ProgressBar.instance.indicate_and_increment!("init ssh: ","~~~", "connections")
|
|
88
|
-
machine.ssh_connect!
|
|
89
|
-
}
|
|
90
|
-
ProgressBar.instance.reset!
|
|
91
|
-
end
|
|
92
|
-
|
|
93
|
-
def list_machines
|
|
94
|
-
puts "\n"
|
|
95
|
-
machines.each do |machine|
|
|
96
|
-
env = machine.environment
|
|
97
|
-
platform = env.platform
|
|
98
|
-
puts "#{platform.identifier.cyan}:#{env.identifier.orange}:#{machine.identifier.yellow}"
|
|
99
|
-
end
|
|
100
|
-
end
|
|
101
|
-
|
|
102
|
-
def get_input(message = terminal_prompt)
|
|
103
|
-
return ::Readline.readline("\n#{message}", true).squeeze(" " ).to_s
|
|
104
|
-
end
|
|
105
|
-
|
|
106
|
-
def execute_on_machines(user_input)
|
|
107
|
-
machines.pmap {|machine|
|
|
108
|
-
machine.run(user_input)
|
|
109
|
-
}
|
|
110
|
-
end
|
|
111
|
-
|
|
112
|
-
def machines
|
|
113
|
-
@machines ||= has_selected_machines? ? selected_machines.collect(&:node) : flat_list_of_machines
|
|
114
|
-
end
|
|
115
|
-
|
|
116
|
-
def flat_list_of_machines
|
|
117
|
-
resources.collect{|resource| resource.node.machines }.flatten
|
|
118
|
-
end
|
|
119
|
-
|
|
120
|
-
def resources
|
|
121
|
-
@irb_session.resources
|
|
122
|
-
end
|
|
123
|
-
|
|
124
|
-
def has_selected_machines?
|
|
125
|
-
selected_machines.is_a?(Array) && selected_machines.any?
|
|
126
|
-
end
|
|
127
|
-
|
|
128
|
-
def selected_machines
|
|
129
|
-
@selections ||= @irb_session.instance_variable_get(:@objects)
|
|
130
|
-
end
|
|
131
|
-
|
|
132
|
-
end
|
|
133
|
-
end
|
data/lib/nodes/base.rb
DELETED
|
@@ -1,60 +0,0 @@
|
|
|
1
|
-
module ::Bcome::Node
|
|
2
|
-
class Base
|
|
3
|
-
|
|
4
|
-
include ::Bcome::CommandHelper
|
|
5
|
-
|
|
6
|
-
attr_reader :meta_data, :stack_peer
|
|
7
|
-
|
|
8
|
-
def machines
|
|
9
|
-
raise "Should be overriden"
|
|
10
|
-
end
|
|
11
|
-
|
|
12
|
-
def ls
|
|
13
|
-
self.stack_peer.ls
|
|
14
|
-
end
|
|
15
|
-
|
|
16
|
-
def initialize(meta_data)
|
|
17
|
-
construct(meta_data)
|
|
18
|
-
end
|
|
19
|
-
|
|
20
|
-
def set_stack_peer(stack_instance)
|
|
21
|
-
@stack_peer = stack_instance
|
|
22
|
-
end
|
|
23
|
-
|
|
24
|
-
def interactive
|
|
25
|
-
stack_peer.interactive
|
|
26
|
-
end
|
|
27
|
-
|
|
28
|
-
## Runs a command over *every* machine in this node
|
|
29
|
-
def run(raw_command, bootstrap = false)
|
|
30
|
-
return unless machines
|
|
31
|
-
machines.pmap {|machine|
|
|
32
|
-
machine.run([raw_command], bootstrap)
|
|
33
|
-
}
|
|
34
|
-
return
|
|
35
|
-
end
|
|
36
|
-
|
|
37
|
-
def method_missing(method_sym, *arguments, &block)
|
|
38
|
-
if instance_variable_defined?("@#{method_sym}")
|
|
39
|
-
return instance_variable_get("@#{method_sym}")
|
|
40
|
-
else
|
|
41
|
-
super
|
|
42
|
-
end
|
|
43
|
-
end
|
|
44
|
-
|
|
45
|
-
def set_parent_reference(parent, parent_reference_key, collection_key)
|
|
46
|
-
instance_variable_get("@#{collection_key}").map{|collection_item|
|
|
47
|
-
collection_item.instance_variable_set("@#{parent_reference_key}", parent)
|
|
48
|
-
}
|
|
49
|
-
end
|
|
50
|
-
|
|
51
|
-
private
|
|
52
|
-
|
|
53
|
-
def construct(meta_data = {})
|
|
54
|
-
meta_data.each do |key, value|
|
|
55
|
-
self.instance_variable_set("@#{key}", value)
|
|
56
|
-
end
|
|
57
|
-
end
|
|
58
|
-
|
|
59
|
-
end
|
|
60
|
-
end
|
data/lib/nodes/environment.rb
DELETED
|
@@ -1,30 +0,0 @@
|
|
|
1
|
-
module ::Bcome::Node
|
|
2
|
-
class Environment < ::Bcome::Node::Base
|
|
3
|
-
|
|
4
|
-
include ::Bcome::EnvironmentSSH
|
|
5
|
-
|
|
6
|
-
def machines
|
|
7
|
-
if instances.empty?
|
|
8
|
-
stack_peer.do_load_resources
|
|
9
|
-
end
|
|
10
|
-
instances
|
|
11
|
-
end
|
|
12
|
-
|
|
13
|
-
def identifier
|
|
14
|
-
@environment
|
|
15
|
-
end
|
|
16
|
-
|
|
17
|
-
def bootstrap_settings
|
|
18
|
-
@bootstrap_settings
|
|
19
|
-
end
|
|
20
|
-
|
|
21
|
-
def namespace
|
|
22
|
-
"#{platform.namespace}/#{identifier}"
|
|
23
|
-
end
|
|
24
|
-
|
|
25
|
-
def set_instances(loaded_resources)
|
|
26
|
-
@instances = loaded_resources.collect(&:node)
|
|
27
|
-
end
|
|
28
|
-
|
|
29
|
-
end
|
|
30
|
-
end
|
data/lib/nodes/estate.rb
DELETED
|
@@ -1,44 +0,0 @@
|
|
|
1
|
-
module ::Bcome::Node
|
|
2
|
-
class Estate < ::Bcome::Node::Base
|
|
3
|
-
|
|
4
|
-
include ::Bcome::Selections
|
|
5
|
-
|
|
6
|
-
def machines
|
|
7
|
-
platforms.collect(&:machines).flatten
|
|
8
|
-
end
|
|
9
|
-
|
|
10
|
-
def namespace
|
|
11
|
-
""
|
|
12
|
-
end
|
|
13
|
-
|
|
14
|
-
def run(raw_command, bootstrap = false)
|
|
15
|
-
return unless platforms
|
|
16
|
-
platforms.pmap {|platform|
|
|
17
|
-
platform.run(raw_command, bootstrap)
|
|
18
|
-
}
|
|
19
|
-
return
|
|
20
|
-
end
|
|
21
|
-
|
|
22
|
-
def environments
|
|
23
|
-
@environments ||= platforms.collect(&:environments).flatten
|
|
24
|
-
end
|
|
25
|
-
|
|
26
|
-
def list_all
|
|
27
|
-
estate_machine_list = "\n"
|
|
28
|
-
platforms.each do |platform|
|
|
29
|
-
estate_machine_list += "* #{platform.identifier}\n"
|
|
30
|
-
platform.environments.each do |environment|
|
|
31
|
-
estate_machine_list += "\t- #{environment.identifier}\n"
|
|
32
|
-
environment.instances.each do |instance|
|
|
33
|
-
estate_machine_list += "\t\t / #{instance.identifier} (#{instance.public_ip_address})\n"
|
|
34
|
-
end
|
|
35
|
-
end
|
|
36
|
-
end
|
|
37
|
-
|
|
38
|
-
puts estate_machine_list
|
|
39
|
-
|
|
40
|
-
return ""
|
|
41
|
-
end
|
|
42
|
-
|
|
43
|
-
end
|
|
44
|
-
end
|