From e8533d45bf99036952e2465bde0e79faee1dda7c Mon Sep 17 00:00:00 2001 From: elijah Date: Fri, 7 Feb 2014 00:00:12 -0800 Subject: added support for custom /etc/hosts files, fixed bug in ObjectList filters (when using negative value on an array attribute). --- lib/leap_cli/config/macros.rb | 22 +++++++++++++++------- lib/leap_cli/config/object_list.rb | 4 +++- lib/leap_cli/version.rb | 2 +- 3 files changed, 19 insertions(+), 9 deletions(-) diff --git a/lib/leap_cli/config/macros.rb b/lib/leap_cli/config/macros.rb index aaed77a..69c3049 100644 --- a/lib/leap_cli/config/macros.rb +++ b/lib/leap_cli/config/macros.rb @@ -157,15 +157,24 @@ module LeapCli; module Config end # - # Generates entries needed for updating /etc/hosts on a node, but only including the IPs of the - # other nodes we have encountered. Also, for virtual machines, use the local address if this - # @node is in the same location. + # Generates entries needed for updating /etc/hosts on a node (as a hash). # - def hosts_file - if @referenced_nodes && @referenced_nodes.any? + # Argument `nodes` can be nil or a list of nodes. If nil, only include the + # IPs of the other nodes this @node as has encountered. + # + # Also, for virtual machines, we use the local address if this @node is in + # the same location as the node in question. + # + def hosts_file(nodes=nil) + if nodes.nil? + if @referenced_nodes && @referenced_nodes.any? + nodes = @referenced_nodes + end + end + if nodes hosts = {} my_location = @node['location'] ? @node['location']['name'] : nil - @referenced_nodes.each_node do |node| + nodes.each_node do |node| next if node.name == @node.name hosts[node.name] = {'ip_address' => node.ip_address, 'domain_internal' => node.domain.internal, 'domain_full' => node.domain.full} node_location = node['location'] ? node['location']['name'] : nil @@ -177,7 +186,6 @@ module LeapCli; module Config end end end - #hosts = @referenced_nodes.pick_fields("ip_address", "domain.internal", "domain.full") return hosts else return nil diff --git a/lib/leap_cli/config/object_list.rb b/lib/leap_cli/config/object_list.rb index 830e96d..9ca4697 100644 --- a/lib/leap_cli/config/object_list.rb +++ b/lib/leap_cli/config/object_list.rb @@ -46,7 +46,9 @@ module LeapCli each do |name, config| value = config[field] if value.is_a? Array - if value.include?(match_value) + if operator == :equal && value.include?(match_value) + results[name] = config + elsif operator == :not_equal && !value.include?(match_value) results[name] = config end else diff --git a/lib/leap_cli/version.rb b/lib/leap_cli/version.rb index db05129..056b248 100644 --- a/lib/leap_cli/version.rb +++ b/lib/leap_cli/version.rb @@ -1,6 +1,6 @@ module LeapCli unless defined?(LeapCli::VERSION) - VERSION = '1.3.0' + VERSION = '1.3.1' COMPATIBLE_PLATFORM_VERSION = '0.3.0'..'1.99' SUMMARY = 'Command line interface to the LEAP platform' DESCRIPTION = 'The command "leap" can be used to manage a bevy of servers running the LEAP platform from the comfort of your own home.' -- cgit v1.2.3