bcome 0.6.3 → 0.6.4

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 72e854219fe3f3151e3beab00428c300540f1ca6
4
- data.tar.gz: 5abe63e971b7994a35a5e45fe07a51f8f4ed657f
3
+ metadata.gz: d23f3d37841f99b3d8e7998b337353a91590ce91
4
+ data.tar.gz: 875213a92efe4ee0aa2fb9edbdfb6b43eba13225
5
5
  SHA512:
6
- metadata.gz: 8031edcc26bff2f693e28fbe65a254569d12be4e8e1ea7c6329775bbfcb800014d35cff7e760f8c2f4bf07f7d4da9b6c57d232ac795bb5e097736ca9c4c1a002
7
- data.tar.gz: 443b70d8c51e468f1658756e60e65c02bd7adf673a1aa3872f6a70be2675a02ca3189596bbe6b5464ab0f55db58b548d938741f9b6be3e1c2c07fec062946f09
6
+ metadata.gz: 68ab4309813702f94e0b151e4a87390072855056b1f2330ece75b0b51891056c0a774d87062d415d122bcb825900df3d7ffec7e8fdbdc9b0cda40c5bc811d6cf
7
+ data.tar.gz: fd9d48bb19d507724584e2104c951a84ae0e257b354aed8adc5e58d385dfd1ee10381c5e5b3691b02f302b811fd539c0bdd0068c64eba94899adf870f24760dc
@@ -90,7 +90,8 @@ if quick_contexts.any?
90
90
  quick_contexts.each_with_index do |resource_context_key, index|
91
91
 
92
92
  if direct_commands.include?(resource_context_key) && (index == (quick_contexts.size - 1))
93
- unless @context_object.respond_to?(resource_context_key.to_sym)
93
+ unless @context_object.node.respond_to?(resource_context_key.to_sym)
94
+
94
95
  puts "You cannot invoke '#{resource_context_key}' at this namespace level".danger
95
96
  exit!
96
97
  end
@@ -1,3 +1,3 @@
1
1
  module Bcome
2
- VERSION = "0.6.3"
2
+ VERSION = "0.6.4"
3
3
  end
@@ -103,7 +103,8 @@ module ::Bcome::BecomeObject
103
103
  else
104
104
  puts "\n" + "No list function at this level".warning + "\n\n"
105
105
  puts "Enter 'menu' for all available options".menu_item_white + "\n\n"
106
- end
106
+ end
107
+ return
107
108
  end
108
109
  alias :ls :list
109
110
  alias :l :list
@@ -61,7 +61,7 @@ module ::Bcome::EnvironmentSSH
61
61
  end
62
62
 
63
63
  def bastion_server
64
- instances.select{|instance| instance.identifier == @ssh_mode[:jump_host_identifier] }.first
64
+ machines.select{|instance| instance.identifier == @ssh_mode[:jump_host_identifier] }.first
65
65
  end
66
66
 
67
67
  def ssh_mode_type
@@ -73,7 +73,6 @@ module ::Bcome::FogHelper
73
73
 
74
74
  def servers(all = unfiltered_servers)
75
75
  filtered_by_tags = ec2_tags ? filter_by_tags(all) : all
76
-
77
76
  custom_filter_method = @meta_data[:network_lookup][:custom_post_process_filter_method]
78
77
 
79
78
  if custom_filter_method
@@ -7,19 +7,19 @@ module ::Bcome::InstanceCommand
7
7
 
8
8
  def execute_command(commands, bootstrap = false)
9
9
  begin
10
- return @environment.execute_command(commands, self, bootstrap)
10
+ return environment.execute_command(commands, self, bootstrap)
11
11
  rescue
12
12
  unless bootstrap && bootstrap_settings ### Try bootstrap fallback
13
13
  puts "\n BOOTSTRAP MODE".informational
14
14
  bootstrap = true
15
- return @environment.execute_command(commands, self, bootstrap)
15
+ return environment.execute_command(commands, self, bootstrap)
16
16
  end
17
17
  end
18
18
  end
19
19
 
20
20
  def put(local_path, remote_path, bootstrap = false)
21
21
  puts "rsync> #{self.identifier}".informational
22
- if @environment.ssh_mode_type == ::SSH_DIRECT_MODE_IDENTIFIER
22
+ if environment.ssh_mode_type == ::SSH_DIRECT_MODE_IDENTIFIER
23
23
  ## DIRECT MODE
24
24
  rsync_command = bootstrap ? direct_rsync_bootstrap(local_path, remote_path) : direct_rsync(local_path, remote_path)
25
25
  else
@@ -34,7 +34,7 @@ module ::Bcome::InstanceCommand
34
34
  end
35
35
 
36
36
  def jump_host_rsync(local_path, remote_path)
37
- "rsync -av -e \"ssh -A #{self.nat_user}@#{@environment.bastion_ip_address} ssh -o StrictHostKeyChecking=no\" #{rsync_is_sudo}#{local_path} #{self.ssh_user}@#{self.ip_address}:#{remote_path}"
37
+ "rsync -av -e \"ssh -A #{self.nat_user}@#{environment.bastion_ip_address} ssh -o StrictHostKeyChecking=no\" #{rsync_is_sudo}#{local_path} #{self.ssh_user}@#{self.ip_address}:#{remote_path}"
38
38
  end
39
39
 
40
40
  def direct_rsync_bootstrap(local_path, remote_path)
@@ -42,17 +42,17 @@ module ::Bcome::InstanceCommand
42
42
  end
43
43
 
44
44
  def jump_host_rsync_bootstrap(local_path, remote_path)
45
- "rsync -av -e \"ssh -i #{bootstrap_settings[:key]} -A #{bootstrap_settings[:ssh_user]}@#{@environment.bastion_ip_address} ssh -o StrictHostKeyChecking=no\" #{rsync_is_sudo}#{local_path} #{bootstrap_settings[:ssh_user]}@#{self.ip_address}:#{remote_path}"
45
+ "rsync -av -e \"ssh -i #{bootstrap_settings[:key]} -A #{bootstrap_settings[:ssh_user]}@#{environment.bastion_ip_address} ssh -o StrictHostKeyChecking=no\" #{rsync_is_sudo}#{local_path} #{bootstrap_settings[:ssh_user]}@#{self.ip_address}:#{remote_path}"
46
46
  end
47
47
 
48
48
  def get(remote_path, local_path = local_download_path)
49
49
  raise "No local path specified" unless local_path
50
50
  raise "No remote_path specified" unless remote_path
51
51
 
52
- if @environment.ssh_mode_type == ::SSH_DIRECT_MODE_IDENTIFIER
52
+ if environment.ssh_mode_type == ::SSH_DIRECT_MODE_IDENTIFIER
53
53
  rsync_command = "rsync #{rsync_is_sudo} -chavzP #{self.ssh_user}@#{self.ip_address}:#{remote_path} #{local_path}"
54
54
  else
55
- rsync_command = "rsync -chavzP -av -e \"ssh -A #{self.nat_user}@#{@environment.bastion_ip_address} ssh -o StrictHostKeyChecking=no\" #{rsync_is_sudo}#{self.ssh_user}@#{self.ip_address}:#{remote_path} #{local_path}"
55
+ rsync_command = "rsync -chavzP -av -e \"ssh -A #{self.nat_user}@#{environment.bastion_ip_address} ssh -o StrictHostKeyChecking=no\" #{rsync_is_sudo}#{self.ssh_user}@#{self.ip_address}:#{remote_path} #{local_path}"
56
56
  end
57
57
 
58
58
  silent = true
@@ -3,7 +3,7 @@ module ::Bcome::Node
3
3
 
4
4
  include ::Bcome::CommandHelper
5
5
 
6
- attr_reader :meta_data
6
+ attr_reader :meta_data, :stack_peer
7
7
 
8
8
  def machines
9
9
  raise "Should be overriden"
@@ -13,6 +13,14 @@ module ::Bcome::Node
13
13
  construct(meta_data)
14
14
  end
15
15
 
16
+ def set_stack_peer(stack_instance)
17
+ @stack_peer = stack_instance
18
+ end
19
+
20
+ def interactive
21
+ stack_peer.interactive
22
+ end
23
+
16
24
  ## Runs a command over *every* machine in this node
17
25
  def run(raw_command, bootstrap = false)
18
26
  return unless machines
@@ -4,6 +4,9 @@ module ::Bcome::Node
4
4
  include ::Bcome::EnvironmentSSH
5
5
 
6
6
  def machines
7
+ if instances.empty?
8
+ stack_peer.do_load_resources
9
+ end
7
10
  instances
8
11
  end
9
12
 
@@ -19,5 +22,9 @@ module ::Bcome::Node
19
22
  "#{platform.namespace}/#{identifier}"
20
23
  end
21
24
 
25
+ def set_instances(loaded_resources)
26
+ @instances = loaded_resources.collect(&:node)
27
+ end
28
+
22
29
  end
23
30
  end
@@ -4,6 +4,11 @@ module ::Bcome::Node
4
4
  include ::Bcome::InstanceCommand
5
5
  include ::Bcome::InstanceSsh
6
6
 
7
+ def environment
8
+ @environment = (@environment ? @environment : stack_peer.environment.node)
9
+ @environment
10
+ end
11
+
7
12
  def machines
8
13
  [self] # for completion
9
14
  end
@@ -13,15 +18,15 @@ module ::Bcome::Node
13
18
  end
14
19
 
15
20
  def ip_address
16
- @environment.ssh_mode_type == ::SSH_DIRECT_MODE_IDENTIFIER ? public_ip_address : @external_network_interface_address
21
+ environment.ssh_mode_type == ::SSH_DIRECT_MODE_IDENTIFIER ? public_ip_address : @external_network_interface_address
17
22
  end
18
23
 
19
24
  def bootstrap_settings
20
- @environment.bootstrap_settings
25
+ environment.bootstrap_settings
21
26
  end
22
27
 
23
28
  def proxy(bootstrap = false)
24
- @environment.proxy(bootstrap)
29
+ environment.proxy(bootstrap)
25
30
  end
26
31
 
27
32
  def public_ip_address
@@ -45,7 +50,7 @@ module ::Bcome::Node
45
50
  end
46
51
 
47
52
  def local_download_path
48
- "#{Dir.pwd}#{@environment.namespace}/#{identifier}"
53
+ "#{Dir.pwd}#{environment.namespace}/#{identifier}"
49
54
  end
50
55
 
51
56
  end
@@ -57,14 +57,21 @@ module ::Bcome::Stack
57
57
  return (command_for_context(method_sym) || ::Bcome::Orchestrator::Recipe.by_identifier(method_sym.to_s, self)) ? true : false
58
58
  end
59
59
 
60
+ def should_eager_load_children?
61
+ return true
62
+ end
63
+
60
64
  def construct_node
61
65
  node_attributes = meta_data
62
-
63
- node_attributes.merge!({
64
- collection_key => resources.collect(&:node)
65
- }) if respond_to?(:collection_key)
66
+ if respond_to?(:collection_key)
67
+ collection = should_eager_load_children? ? (resources.collect(&:node)) : []
68
+ node_attributes.merge!({
69
+ collection_key => collection
70
+ })
71
+ end
66
72
 
67
73
  this_node = node_level_klass.new(node_attributes)
74
+ this_node.set_stack_peer(self)
68
75
  this_node.set_parent_reference(this_node, child_reference_key, collection_key) if respond_to?(:collection_key) && respond_to?(:child_reference_key)
69
76
  return this_node
70
77
  end
@@ -104,6 +111,7 @@ module ::Bcome::Stack
104
111
  alias :cd :workon
105
112
 
106
113
  def menu
114
+ puts "Rendering menu for #{self.class}"
107
115
  ::RENDER.menu(menu_items, self)
108
116
  end
109
117
 
@@ -25,6 +25,16 @@ module ::Bcome::Stack
25
25
  @platform = parent
26
26
  end
27
27
 
28
+ def machines
29
+ node_machines = node.machines
30
+ do_load_resources unless node_machines.any?
31
+ return node.machines
32
+ end
33
+
34
+ def should_eager_load_children?
35
+ false
36
+ end
37
+
28
38
  def views
29
39
  @views ||= do_create_views
30
40
  end
@@ -87,14 +97,16 @@ module ::Bcome::Stack
87
97
  end
88
98
 
89
99
  def do_load_resources
90
- if dynamic_network_lookup?
91
- return collection_klass.collection_from_fog_data(self, servers)
92
- else
93
- path = config_path
94
- raise "Missing instances.yml configuration for your environment. You've selected a static network lookup, and yet I cannot find #{config_path}".failure unless File.exist?(config_path)
95
- config = YAML.load_file(path)
96
- return collection_klass.collection_from_config(self, config)
97
- end
100
+ if dynamic_network_lookup?
101
+ loaded_resources = collection_klass.collection_from_fog_data(self, servers)
102
+ else
103
+ path = config_path
104
+ raise "Missing instances.yml configuration for your environment. You've selected a static network lookup, and yet I cannot find #{config_path}".failure unless File.exist?(config_path)
105
+ config = YAML.load_file(path)
106
+ loaded_resources = collection_klass.collection_from_config(self, config)
107
+ end
108
+ node.set_instances(loaded_resources)
109
+ return loaded_resources
98
110
  end
99
111
 
100
112
  def config_path
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: bcome
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.6.3
4
+ version: 0.6.4
5
5
  platform: ruby
6
6
  authors:
7
7
  - Guillaume Roderick (Webzakimbo)
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2016-10-27 00:00:00.000000000 Z
11
+ date: 2016-11-02 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: aws-sdk
@@ -205,7 +205,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
205
205
  version: '0'
206
206
  requirements: []
207
207
  rubyforge_project:
208
- rubygems_version: 2.6.7
208
+ rubygems_version: 2.5.1
209
209
  signing_key:
210
210
  specification_version: 4
211
211
  summary: Toolkit for managing machines - simplify your workflow.