bcome 0.5.6 → 0.6.0

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: cd98d90373d60001ec4a21251573bc95c9a0bf87
4
- data.tar.gz: 3ef7ba76ffc2efdd1b7825645343c1307d95f55d
3
+ metadata.gz: 0356068ab732695cc27cf83578703579897e3352
4
+ data.tar.gz: be45f5cceabe3e3505a2006cf497dde93b49c569
5
5
  SHA512:
6
- metadata.gz: 54ac7e4ff18b8f8368311ec68c4eaa815414d3d581c67109d7e84315312d567010dd07d7eef54b37a7e39580f00eb5695d7639028c58f0a01559272ae8803aba
7
- data.tar.gz: 56eaa6c9572bc6085b4ee2b857d1c35d8f650130a068650079247321f51a02704d42cf829cffdeefbdf591ad0e219b3753b5163552521b83a815fb1047d06ee6
6
+ metadata.gz: 6cba40a7c1a3dc390b036c6f370196c740e7afa34a0c55d6979028e1b2ff1b3147bcbce1beddf17b76d22383627b8e1befebfd3b4e021552da977772df0c93c2
7
+ data.tar.gz: 79a7ebe9b9b47c111d416f670fb9dcded28deda2f474a2288d724887a479af169a0c3e5293db4416b500fca2d93ab5ae2092362f682294b5b5222a4603c68b8b
data/bin/boot.rb CHANGED
@@ -117,6 +117,7 @@ if quick_contexts.any?
117
117
  # Initialize our object namespace, but only from our lowest level namespace object. This
118
118
  # ensures that we don't load more than we need.
119
119
  if is_first_context
120
+ next_context_resource = ESTATE if next_context_resource.nil?
120
121
  next_context_resource.init
121
122
  is_first_context = false
122
123
  end
data/lib/bcome/version.rb CHANGED
@@ -1,3 +1,3 @@
1
1
  module Bcome
2
- VERSION = "0.5.6"
2
+ VERSION = "0.6.0"
3
3
  end
data/lib/become_object.rb CHANGED
@@ -106,5 +106,5 @@ module ::Bcome::BecomeObject
106
106
  end
107
107
  end
108
108
  alias :ls :list
109
-
109
+ alias :l :list
110
110
  end
@@ -92,7 +92,7 @@ module ::Bcome::EnvironmentSSH
92
92
 
93
93
  def bastion_ip_address
94
94
  unless bastion_server
95
- raise "Unable to fine the jump host. No instance found with identifier '#{@ssh_mode[:jump_host_identifier]}'. Check your network.yml config for this stack, and ensure that you've got the correct value for key 'jump_host_identifier'"
95
+ raise "Unable to find the jump host. No instance found with identifier '#{@ssh_mode[:jump_host_identifier]}'. Check your network.yml config for this stack, and ensure that you've got the correct value for key 'jump_host_identifier'"
96
96
  end
97
97
 
98
98
  if dynamic_network_lookup?
@@ -67,7 +67,7 @@ module Bcome::Interactive::SessionItem
67
67
  end
68
68
 
69
69
  def machines
70
- @machines ||= has_selected_machines? ? selected_machines : @irb_session.machines
70
+ @machines ||= has_selected_machines? ? selected_machines : @irb_session.resources.collect(&:node)
71
71
  end
72
72
 
73
73
  def has_selected_machines?
data/lib/render_irb.rb CHANGED
@@ -10,7 +10,7 @@ class ::Bcome::RenderIrb
10
10
  puts "\t*/added".danger + "\n" if item.highlight?
11
11
  print item.do_describe
12
12
  end
13
- print "\n\s\sUse cd [node identifier], e.g. cd :#{items.first.identifier} OR cd \"#{items.first.identifier}\" to work on a given node.\n\n"
13
+ print "\n\s\sTo work on any given node, use the cd command e.g. cd #{items.first.identifier}\n\n"
14
14
  end
15
15
  end
16
16
 
@@ -25,6 +25,51 @@ module ::Bcome::Stack
25
25
  @platform = parent
26
26
  end
27
27
 
28
+ def views
29
+ @views ||= do_create_views
30
+ end
31
+
32
+ def has_views?
33
+ views.any?
34
+ end
35
+
36
+ def list_views
37
+ if has_views?
38
+ ::RENDER.list_items("Sub-views", views)
39
+ else
40
+ puts "\n" + "This environment has no configured sub-views".warning + "\n\n"
41
+ end
42
+ end
43
+ alias :lv :list_views
44
+
45
+ def resource_identifiers
46
+ @resource_identifiers ||= resource_identifiers_with_views
47
+ end
48
+
49
+ def resource_identifiers_with_views
50
+ return has_views? ? (resources.collect(&:identifier) << views.collect(&:identifier)).flatten : resources.collect(&:identifier)
51
+ end
52
+
53
+ def resource_for_identifier(identifier)
54
+ match = super
55
+ unless match
56
+ # Unless we've found a match amongst our server instances, look in our views
57
+ matches = views.select {|view| view.identifier.to_sym == identifier.to_sym }
58
+ raise "Retrieved more than one match for #{collection_key} '#{identifier}'. Selection is ambiguous" if matches.size > 1
59
+ match = matches.first
60
+ end
61
+ return match
62
+ end
63
+
64
+ def do_create_views
65
+ return [] unless meta_data[:sub_views]
66
+ view_collection = []
67
+ meta_data[:sub_views].each do |sub_view_data|
68
+ view_collection << ::Bcome::Stack::View.new(@meta_data, @platform, self, sub_view_data)
69
+ end
70
+ return view_collection
71
+ end
72
+
28
73
  def menu_items
29
74
  super + [
30
75
  { :command => "add", :description => "Add a resource you wish to work on.", :usage => "add MyServerIdentifier, OR add [array, of, identifiers]" },
@@ -36,7 +81,8 @@ module ::Bcome::Stack
36
81
  { :command => "get", :description => "Download from remote from all selected resources (recursive - uses rsync)", :usage => "get 'remote_path'" },
37
82
  { :command => "put", :description => "Copy files up to all selected resources (recursive - uses rsync)", :usage => "put 'local_path', 'remote_path'" },
38
83
  { :command => "sudo", :description => "Run 'get' and 'put' in sudo mode (assumes you have passwordless sudo setup)" },
39
- { :command => 'functions', :description => "List all available custom functions" }
84
+ { :command => 'functions', :description => "List all available custom functions" },
85
+ { :command => 'lv', :description => "List all configured sub-views" },
40
86
  ]
41
87
  end
42
88
 
@@ -56,9 +102,18 @@ module ::Bcome::Stack
56
102
  end
57
103
 
58
104
  def do_describe
105
+ description
106
+ end
107
+
108
+ def description
59
109
  desc = "\tNode Id:".menu_item_cyan + "\s#{node.identifier}".menu_item_green + "\n"
60
110
  desc += "\tNet Lookup:".menu_item_cyan + "\s#{node.network_lookup_type}".menu_item_white + "\n"
61
- desc += "\tSSH Mode:".menu_item_cyan + "\s#{node.ssh_mode_type}".menu_item_white
111
+ desc += "\tSSH Mode:".menu_item_cyan + "\s#{node.ssh_mode_type}".menu_item_white
112
+ if has_views?
113
+ views.each do |view|
114
+ desc += "\n\t \\ #{"view".menu_item_cyan}: #{view.identifier.menu_item_green}"
115
+ end
116
+ end
62
117
  return desc + "\n\n"
63
118
  end
64
119
 
@@ -46,6 +46,10 @@ module ::Bcome::Stack
46
46
  return false
47
47
  end
48
48
 
49
+ def do_load_resources
50
+ [self]
51
+ end
52
+
49
53
  ## Commands
50
54
  def ssh
51
55
  node.ssh
data/lib/stack/view.rb ADDED
@@ -0,0 +1,56 @@
1
+ module ::Bcome::Stack
2
+ class View < ::Bcome::Stack::Environment
3
+
4
+ def initialize(meta_data, parent, encapsulating_environment, sub_view_data)
5
+ @meta_data = meta_data
6
+ @identifier = sub_view_data[:id]
7
+ @platform = parent
8
+ @sub_view_data = sub_view_data
9
+ @encapsulating_environment = encapsulating_environment
10
+ end
11
+
12
+ def views
13
+ []
14
+ end
15
+
16
+ def has_views?
17
+ false
18
+ end
19
+
20
+ def do_load_resources
21
+ @filtered_resources ||= filter_resources
22
+ end
23
+
24
+ def node
25
+ @encapsulating_environment.node
26
+ end
27
+
28
+ def pretty_selectors
29
+ raw = @sub_view_data[:selectors]
30
+ return raw.collect{|key, values|
31
+ values.collect{|value|
32
+ "\s(node.#{key} == '#{value}')"
33
+ }
34
+ }.join("\sOR".friendly)
35
+ end
36
+
37
+ def description
38
+ desc = "\tidentifier:".menu_item_cyan + "\s#{identifier}".menu_item_green + "\n"
39
+ desc += "\tselectors:".menu_item_cyan + "\s#{pretty_selectors}" + "\n"
40
+ return desc + "\n"
41
+ end
42
+
43
+ private
44
+
45
+ def filter_resources
46
+ @encapsulating_environment.resources.select{|resource| resource_belongs_in_filtered_list?(resource) }
47
+ end
48
+
49
+ def resource_belongs_in_filtered_list?(resource)
50
+ @sub_view_data[:selectors].select {|selector,values|
51
+ values.include?(resource.node.send(selector))
52
+ }.any?
53
+ end
54
+
55
+ end
56
+ end
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.6
4
+ version: 0.6.0
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-30 00:00:00.000000000 Z
11
+ date: 2016-10-11 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: aws-sdk
@@ -181,6 +181,7 @@ files:
181
181
  - lib/stack/estate.rb
182
182
  - lib/stack/instance.rb
183
183
  - lib/stack/platform.rb
184
+ - lib/stack/view.rb
184
185
  - lib/workspace_context.rb
185
186
  - patches/irb.rb
186
187
  homepage: https://github.com/webzakimbo/bcome
@@ -204,7 +205,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
204
205
  version: '0'
205
206
  requirements: []
206
207
  rubyforge_project:
207
- rubygems_version: 2.2.2
208
+ rubygems_version: 2.5.1
208
209
  signing_key:
209
210
  specification_version: 4
210
211
  summary: Toolkit for managing machines - simplify your workflow.