module Furikake::Resources::ElasticsearchService

Public Class Methods

get_resources() click to toggle source
# File lib/furikake/resources/elasticsearch_service.rb, line 21
def get_resources
  ess = Aws::ElasticsearchService::Client.new

  domains = []
  loop do
    res = ess.list_domain_names
    domains.push(*res.domain_names.map(&:to_h))
    break if res.domain_names.size == domains.size
  end

  domain_info = []
  domains.each do |domain|
    resource = []
    res = ess.describe_elasticsearch_domains({
                                               domain_names: [domain[:domain_name]],
                                             })
    res.domain_status_list.each do |r|
      resource << r[:domain_name]
      resource << r[:endpoints]['vpc']
      resource << r[:elasticsearch_cluster_config][:instance_type]
      resource << r[:elasticsearch_cluster_config][:instance_count]
      resource << r[:elasticsearch_version]
      resource << r[:ebs_options][:volume_type]
      resource << r[:ebs_options][:volume_size]
    end
    domain_info << resource
  end
  domain_info
end
report() click to toggle source
# File lib/furikake/resources/elasticsearch_service.rb, line 4
      def report
        resources = get_resources
        headers = ['Domain Name', 'Endpoint', 'Instance Type', "Instance Count", "Elasticsearch Version", 'EBS Type', 'EBS Size']
        if resources.empty?
          info = 'N/A'
        else
          info = MarkdownTables.make_table(headers, resources, is_rows: true, align: 'l')
        end
        documents = <<"EOS"
### Elasticsearch Service

#{info}
EOS
        
        documents
      end

Private Instance Methods

get_resources() click to toggle source
# File lib/furikake/resources/elasticsearch_service.rb, line 21
def get_resources
  ess = Aws::ElasticsearchService::Client.new

  domains = []
  loop do
    res = ess.list_domain_names
    domains.push(*res.domain_names.map(&:to_h))
    break if res.domain_names.size == domains.size
  end

  domain_info = []
  domains.each do |domain|
    resource = []
    res = ess.describe_elasticsearch_domains({
                                               domain_names: [domain[:domain_name]],
                                             })
    res.domain_status_list.each do |r|
      resource << r[:domain_name]
      resource << r[:endpoints]['vpc']
      resource << r[:elasticsearch_cluster_config][:instance_type]
      resource << r[:elasticsearch_cluster_config][:instance_count]
      resource << r[:elasticsearch_version]
      resource << r[:ebs_options][:volume_type]
      resource << r[:ebs_options][:volume_size]
    end
    domain_info << resource
  end
  domain_info
end
report() click to toggle source
# File lib/furikake/resources/elasticsearch_service.rb, line 4
      def report
        resources = get_resources
        headers = ['Domain Name', 'Endpoint', 'Instance Type', "Instance Count", "Elasticsearch Version", 'EBS Type', 'EBS Size']
        if resources.empty?
          info = 'N/A'
        else
          info = MarkdownTables.make_table(headers, resources, is_rows: true, align: 'l')
        end
        documents = <<"EOS"
### Elasticsearch Service

#{info}
EOS
        
        documents
      end