diff options
author | elijah <elijah@riseup.net> | 2013-01-13 20:27:29 -0800 |
---|---|---|
committer | elijah <elijah@riseup.net> | 2013-01-13 20:27:29 -0800 |
commit | ba301b0c8d77ae2f455d3a2d736968c981b8c757 (patch) | |
tree | fac1c2f483732d158f106d8ad7917bfc7e07c239 /lib/leap_cli/config/node.rb | |
parent | bea336480bf90f7c24737809e27b0bd224f42233 (diff) |
added ability to sync support files along with hiera.yml. this way, files don't need to be embedded in hiera.yml. this is especially useful for binary files.
Diffstat (limited to 'lib/leap_cli/config/node.rb')
-rw-r--r-- | lib/leap_cli/config/node.rb | 52 |
1 files changed, 52 insertions, 0 deletions
diff --git a/lib/leap_cli/config/node.rb b/lib/leap_cli/config/node.rb new file mode 100644 index 0000000..9eea1f3 --- /dev/null +++ b/lib/leap_cli/config/node.rb @@ -0,0 +1,52 @@ +# +# Configuration for a 'node' (a server in the provider's infrastructure) +# + +require 'ipaddr' + +module LeapCli; module Config + + class Node < Object + attr_accessor :file_paths + + def initialize(manager=nil) + super(manager) + @node = self + @file_paths = [] + end + + # + # Make a copy of ourselves, except only including the specified keys. + # + # Also, the result is flattened to a single hash, so a key of 'a.b' becomes 'a_b' + # + def pick(*keys) + keys.map(&:to_s).inject(self.class.new(@manager)) do |hsh, key| + value = self.get(key) + if !value.nil? + hsh[key.gsub('.','_')] = value + end + hsh + end + end + + # + # returns true if this node has an ip address in the range of the vagrant network + # + def vagrant? + begin + vagrant_range = IPAddr.new @manager.provider.vagrant.network + rescue ArgumentError => exc + Util::bail! { Util::log :invalid, "ip address '#{@node.ip_address}' vagrant.network" } + end + + begin + ip_address = IPAddr.new @node.get('ip_address') + rescue ArgumentError => exc + Util::log :warning, "invalid ip address '#{@node.get('ip_address')}' for node '#{@node.name}'" + end + return vagrant_range.include?(ip_address) + end + end + +end; end |