]> git.donarmstrong.com Git - dsa-puppet.git/blobdiff - 3rdparty/modules/elasticsearch/lib/puppet/util/es_instance_validator.rb
Add new module elasticsearch for listsearch
[dsa-puppet.git] / 3rdparty / modules / elasticsearch / lib / puppet / util / es_instance_validator.rb
diff --git a/3rdparty/modules/elasticsearch/lib/puppet/util/es_instance_validator.rb b/3rdparty/modules/elasticsearch/lib/puppet/util/es_instance_validator.rb
new file mode 100644 (file)
index 0000000..e097314
--- /dev/null
@@ -0,0 +1,36 @@
+require 'socket'
+require 'timeout'
+
+module Puppet
+  module Util
+    class EsInstanceValidator
+      attr_reader :instance_server
+      attr_reader :instance_port
+
+      def initialize(instance_server, instance_port)
+        @instance_server = instance_server
+        @instance_port   = instance_port
+      end
+
+      # Utility method; attempts to make an https connection to the Elasticsearch instance.
+      # This is abstracted out into a method so that it can be called multiple times
+      # for retry attempts.
+      #
+      # @return true if the connection is successful, false otherwise.
+      def attempt_connection
+        Timeout::timeout(Puppet[:configtimeout]) do
+          begin
+            TCPSocket.new(@instance_server, @instance_port).close
+            true
+          rescue Errno::ECONNREFUSED, Errno::EHOSTUNREACH => e
+            Puppet.debug "Unable to connect to Elasticsearch instance (#{@instance_server}:#{@instance_port}): #{e.message}"
+            false
+          end
+        end
+      rescue Timeout::Error
+        false
+      end
+    end
+  end
+end
+