bcome 0.5.1 → 0.5.2

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: 94df7cdb98d0ba0912450f1a90ca59fae3e5f489
4
- data.tar.gz: ea051925146882cb957a6c6f58ea56028bb1869b
3
+ metadata.gz: 1f21306ed54b699575e5cf11b63eeb0b0652775c
4
+ data.tar.gz: e70fdd58135f553d8544a2e3dae7fbfaeb2f9b99
5
5
  SHA512:
6
- metadata.gz: c15c4470d3608edc82b7f0d27b06991107e76e50d7bb2a713e1053c6349cc46ca131315be49aef158c5bef6648dda5cc6d49939295ef62da39fa0cfe0c5901ed
7
- data.tar.gz: 48b05070fb93de1fbb74e090024a4fb61000478f0848f3ac5db7b6763294b087e0f926c273a176decdca0b2a07b2694b057d7fb3bdcbd51e9cfa499a868f8d08
6
+ metadata.gz: ec8d0eaff4dc3240adf07a45e4bea4dc9f67cacc3706b73bf5431749b2c39dcfa4285cc298bb50ee60af068f76ec327633f19025432df9e562f778aa0b2fd790
7
+ data.tar.gz: 5669e33e6261e4dacf18535f473627581452329b9d04d0f39cc0348faf5c77ae2f624337393f87ce9436a85c628690c3d18205a43e31da4ded6731d904564d76
data/bin/bcome CHANGED
@@ -14,22 +14,27 @@ load Bcome::Boot.boot_path
14
14
  unless @no_shell
15
15
  require 'irb/ext/multi-irb'
16
16
  IRB.parse_opts_with_ignoring_script
17
- IRB.irb nil, @context_object
17
+ irb_method = (@direct_command && @direct_shell_commands.include?(@direct_command)) ? @direct_command.to_sym : nil
18
+ IRB.irb irb_method, @context_object
18
19
  end
19
20
 
20
- ## We're SSH'ing directly to a node, indicated by an 'ssh' key at the end of our context breadcrumb
21
- # called with, e.g. bcome platform:environment:node_name:ssh
22
- @ssh_to.node.ssh if @ssh_in && @ssh_to
23
-
24
- ## We're directly excuting a command on a n node indicated by a 'run' key at the end of our context breadrumb
25
- # called with, e.g. bcome platform:environment:node_name:run "command to execute"
26
- if @run_cmd && @run_on
27
- params = ARGV[(1..(ARGV.size))].join("\s")
28
- @run_on.node.run(params)
21
+ if @direct_command && @direct_command_on
22
+ if @direct_command == "ssh"
23
+ ## We're SSH'ing directly to a node, indicated by an 'ssh' key at the end of our context breadcrumb
24
+ # called with, e.g. bcome platform:environment:node_name:ssh
25
+ @direct_command_on.node.ssh
26
+ elsif @direct_command == "run"
27
+ ## We're directly excuting a command on a n node indicated by a 'run' key at the end of our context breadrumb
28
+ # called with, e.g. bcome platform:environment:node_name:run "command to execute"
29
+ params = ARGV[(1..(ARGV.size))].join("\s")
30
+ @direct_command_on.node.run(params)
31
+ else
32
+ @direct_command_on.send(@direct_command)
33
+ end
29
34
  end
30
35
 
31
36
  ## We're going to directly execute a command on a node, indicated by the method name at the end of our context breadcrumb.
32
37
  ## This works for commands specified in the users own personal framework installation, either from a context command or from an orchestration hook
33
38
  ## e,g, bcome platform:environment:node_name:bootstrap
34
- @context_object.send(@direct_execute_method) if @direct_execute_method
39
+ @context_object.send(@direct_execute_method) if @context_object && @direct_execute_method
35
40
 
@@ -4,7 +4,6 @@ extensions_init_path = "#{Dir.pwd}/bcome/extensions_initializer.rb"
4
4
  load extensions_init_path if File.exist?(extensions_init_path)
5
5
 
6
6
  ### Boot up bcome - used by the shell & exterior bcome processes
7
-
8
7
  unless @no_shell
9
8
  Dir[Dir.pwd + "/bcome/patches/**/*.rb"].each {|file| load file }
10
9
  end
@@ -67,9 +66,9 @@ if quick_context
67
66
  end
68
67
  end
69
68
 
70
- direct_commands = ["run", "ssh"]
71
-
72
- @no_shell = true if direct_commands.include?(quick_contexts.last)
69
+ direct_commands = ["run", "ssh", "interactive"] # direct command executions that do not require an irb shell
70
+ @direct_shell_commands = ["interactive"] # where we need to jump into a context method directly, but require an irb shell
71
+ @no_shell = true if (direct_commands - @direct_shell_commands).include?(quick_contexts.last)
73
72
 
74
73
  #########################
75
74
  ## QUICK CONTEXT & BOOT #
@@ -90,15 +89,13 @@ if quick_contexts.any?
90
89
  spawn = false
91
90
  quick_contexts.each_with_index do |resource_context_key, index|
92
91
 
93
- if resource_context_key == "ssh" && index == (quick_contexts.size - 1) ## If last shortcut is SSH, we'll skip so we can execute it
94
- @ssh_in = true
95
- @ssh_to = @context_object
96
- break
97
- end
98
-
99
- if resource_context_key == "run" && index == (quick_contexts.size - 1)
100
- @run_cmd = true
101
- @run_on = @context_object
92
+ if direct_commands.include?(resource_context_key) && (index == (quick_contexts.size - 1))
93
+ unless @context_object.respond_to?(resource_context_key.to_sym)
94
+ puts "You cannot invoke '#{resource_context_key}' at this namespace level".danger
95
+ exit!
96
+ end
97
+ @direct_command = resource_context_key
98
+ @direct_command_on = @context_object
102
99
  break
103
100
  end
104
101
 
@@ -109,10 +106,9 @@ if quick_contexts.any?
109
106
  # orchestration on it).
110
107
  # e.g. you have a context command called 'deploy'. You may want to do the following:
111
108
  # bcome platform:environment:deploy
112
-
113
109
  unless next_context_resource && index <= (quick_contexts.size - 1)
114
110
  if @context_object.respond_to_bcome_context_method?(resource_context_key.to_sym)
115
- @no_shell = true
111
+ @no_shell = true
116
112
  @direct_execute_method = resource_context_key.to_sym
117
113
  break
118
114
  end
@@ -126,19 +122,25 @@ if quick_contexts.any?
126
122
  end
127
123
 
128
124
  if next_context_resource.nil?
129
- puts "Cannot find any resources object named: #{resource_context_key}. Please check your quick contexts and try again".failure
130
- exit
131
- end
132
-
133
- unless @no_shell
134
- BECOME.set(next_context_resource, @context_object, spawn)
125
+ if @context_object.respond_to?(resource_context_key)
126
+ @context_object.send(resource_context_key)
127
+ exit!
128
+ else
129
+ puts "Cannot find any resource object named: #{resource_context_key}. Please check your breadcrumb and try again".failure
130
+ if @context_object.responds_to_list?
131
+ puts "\nYou may have been attempting to key into one of the following: ".failure
132
+ puts @context_object.mini_list + "\n"
133
+ end
134
+ exit!
135
+ end
135
136
  end
136
137
 
138
+ BECOME.set(next_context_resource, @context_object, spawn) unless @no_shell
137
139
  @context_object = next_context_resource
138
140
  end
139
-
141
+
140
142
  B_PIN = @context_object
141
- B_PIN.init
143
+ B_PIN.init
142
144
  else
143
145
  B_PIN = ESTATE
144
146
  ESTATE.init
@@ -1,3 +1,3 @@
1
1
  module Bcome
2
- VERSION = "0.5.1"
2
+ VERSION = "0.5.2"
3
3
  end
@@ -91,6 +91,11 @@ module ::Bcome::BecomeObject
91
91
  true
92
92
  end
93
93
 
94
+ def mini_list
95
+ raise "Namespace does not respond to list" unless responds_to_list?
96
+ return resources.collect(&:identifier).join(", ").friendly
97
+ end
98
+
94
99
  def list
95
100
  if responds_to_list?
96
101
  ::RENDER.list_items(collection_key, resources)
@@ -7,9 +7,20 @@ module ::Bcome::FogHelper
7
7
  def fog_client
8
8
  @fog_client ||= get_fog_client
9
9
  end
10
+
11
+ def ec2_filters
12
+ network_lookup[:ec2_server_lookup_filters] ? network_lookup[:ec2_server_lookup_filters] : { 'instance-id' => [] }
13
+ end
14
+
15
+ def reload!
16
+ @unfiltered_servers = fog_client.servers.all(ec2_filters)
17
+ @resources = do_load_resources
18
+ system("clear")
19
+ list
20
+ end
10
21
 
11
22
  def unfiltered_servers
12
- @unfiltered_servers ||= fog_client.servers.all(network_lookup[:ec2_server_lookup_filters])
23
+ @unfiltered_servers ||= fog_client.servers.all(ec2_filters)
13
24
  end
14
25
 
15
26
  def ec2_tags
@@ -24,7 +35,7 @@ module ::Bcome::FogHelper
24
35
 
25
36
  if custom_filter_method
26
37
  filter = ::Bcome::Filter::Ec2Filter.new(filtered_by_tags, self)
27
- raise "Custome filter method #{custom_filter_method} is missing. Make sure you've added it".failure unless filter.respond_to?(custom_filter_method.to_sym)
38
+ raise "Custom filter method #{custom_filter_method} is missing. Make sure you've added it".failure unless filter.respond_to?(custom_filter_method.to_sym)
28
39
  return filter.send(custom_filter_method.to_sym)
29
40
  else
30
41
  return filtered_by_tags
@@ -5,6 +5,7 @@ class ::Bcome::WorkspaceContext
5
5
  def set(object, current_object, spawn = true)
6
6
  @object = object
7
7
  main_context = IRB.conf[:MAIN_CONTEXT]
8
+
8
9
  @object.main_context = main_context.workspace if main_context
9
10
  @object.previous_workspace_object = current_object if current_object
10
11
 
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.5.1
4
+ version: 0.5.2
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-08-09 00:00:00.000000000 Z
11
+ date: 2016-08-12 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: aws-sdk