+++ /dev/null
-require 'net/http'
-require 'json'
-require 'yaml'
-
-module EsFacts
-
- def self.add_fact(prefix, key, value)
- key = "#{prefix}_#{key}".to_sym
- ::Facter.add(key) do
- setcode { value }
- end
- end
-
- def self.run
-
- dir_prefix = '/etc/elasticsearch'
- ports = []
-
- # only when the directory exists we need to process the stuff
- if File.directory?(dir_prefix)
-
- Dir.foreach(dir_prefix) { |dir|
- next if dir == '.'
- if File.exists?("#{dir_prefix}/#{dir}/elasticsearch.yml")
- config_data = YAML.load_file("#{dir_prefix}/#{dir}/elasticsearch.yml")
- unless config_data['http'].nil?
- next if config_data['http']['enabled'] == 'false'
- if config_data['http']['port'].nil?
- port = "9200"
- else
- port = config_data['http']['port']
- end
- else
- port = "9200"
- end
- ports << port
- end
- }
-
- begin
- if ports.count > 0
-
- add_fact('elasticsearch', 'ports', ports.join(",") )
- ports.each do |port|
-
- key_prefix = "elasticsearch_#{port}"
-
- uri = URI("http://localhost:#{port}")
- json_data = JSON.parse(Net::HTTP.get(uri))
- next if json_data['status'] && json_data['status'] != 200
-
- add_fact(key_prefix, 'name', json_data['name'])
- add_fact(key_prefix, 'version', json_data['version']['number'])
-
- uri2 = URI("http://localhost:#{port}/_nodes/#{json_data['name']}")
- json_data_node = JSON.parse(Net::HTTP.get(uri2))
-
- add_fact(key_prefix, 'cluster_name', json_data_node['cluster_name'])
- node_data = json_data_node['nodes'].first
-
- add_fact(key_prefix, 'node_id', node_data[0])
-
- nodes_data = json_data_node['nodes'][node_data[0]]
-
- process = nodes_data['process']
- add_fact(key_prefix, 'mlockall', process['mlockall'])
-
- plugins = nodes_data['plugins']
-
- plugin_names = []
- plugins.each do |plugin|
- plugin_names << plugin['name']
-
- plugin.each do |key, value|
- prefix = "#{key_prefix}_plugin_#{plugin['name']}"
- add_fact(prefix, key, value) unless key == 'name'
- end
- end
- add_fact(key_prefix, 'plugins', plugin_names.join(","))
-
- end
-
- end
- rescue
- end
-
- end
-
- end
-
-end
-
-EsFacts.run