Sha256: 78ade6cf4e441820a613979cf2f444b9837c7ea9ad8bd324fddd397b9775206a
Contents?: true
Size: 1.38 KB
Versions: 20
Compression:
Stored size: 1.38 KB
Contents
module MCollective module Util class Playbook class Nodes class ShellNodes def initialize @script = nil end def prepare; end def validate_configuration! raise("No node source script specified") unless @script raise("Node source script is not executable") unless File.executable?(@script) raise("Node source script produced no results") if data.empty? end def from_hash(data) @script = data["script"] @_data = nil self end def valid_hostname?(host) host =~ /^(([a-zA-Z0-9]|[a-zA-Z0-9][a-zA-Z0-9\-]*[a-zA-Z0-9])\.)*([A-Za-z0-9]|[A-Za-z0-9][A-Za-z0-9\-]*[A-Za-z0-9])$/ end def data return @_data if @_data shell = Shell.new(@script, "timeout" => 10) shell.runcommand exitcode = shell.status.exitstatus raise("Could not discover nodes via shell method, command exited with code %d" % [exitcode]) unless exitcode == 0 @_data = shell.stdout.lines.map do |line| line.chomp! raise("%s is not a valid hostname" % line) unless valid_hostname?(line) line end end def discover data end end end end end end
Version data entries
20 entries across 20 versions & 1 rubygems