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

Version Path
choria-mcorpc-support-2.26.5 lib/mcollective/util/playbook/nodes/shell_nodes.rb
choria-mcorpc-support-2.26.4 lib/mcollective/util/playbook/nodes/shell_nodes.rb
choria-mcorpc-support-2.26.3 lib/mcollective/util/playbook/nodes/shell_nodes.rb
choria-mcorpc-support-2.26.2 lib/mcollective/util/playbook/nodes/shell_nodes.rb
choria-mcorpc-support-2.26.1 lib/mcollective/util/playbook/nodes/shell_nodes.rb
choria-mcorpc-support-2.26.0 lib/mcollective/util/playbook/nodes/shell_nodes.rb
choria-mcorpc-support-2.25.3 lib/mcollective/util/playbook/nodes/shell_nodes.rb
choria-mcorpc-support-2.25.2 lib/mcollective/util/playbook/nodes/shell_nodes.rb
choria-mcorpc-support-2.25.1 lib/mcollective/util/playbook/nodes/shell_nodes.rb
choria-mcorpc-support-2.25.0 lib/mcollective/util/playbook/nodes/shell_nodes.rb
choria-mcorpc-support-2.24.4 lib/mcollective/util/playbook/nodes/shell_nodes.rb
choria-mcorpc-support-2.24.3 lib/mcollective/util/playbook/nodes/shell_nodes.rb
choria-mcorpc-support-2.24.2 lib/mcollective/util/playbook/nodes/shell_nodes.rb
choria-mcorpc-support-2.24.1 lib/mcollective/util/playbook/nodes/shell_nodes.rb
choria-mcorpc-support-2.24.0 lib/mcollective/util/playbook/nodes/shell_nodes.rb
choria-mcorpc-support-2.23.3 lib/mcollective/util/playbook/nodes/shell_nodes.rb
choria-mcorpc-support-2.23.2 lib/mcollective/util/playbook/nodes/shell_nodes.rb
choria-mcorpc-support-2.23.1 lib/mcollective/util/playbook/nodes/shell_nodes.rb
choria-mcorpc-support-2.23.0 lib/mcollective/util/playbook/nodes/shell_nodes.rb
choria-mcorpc-support-2.23.0.pre lib/mcollective/util/playbook/nodes/shell_nodes.rb