Class: AwsInstanceList::ElasticsearchService

Inherits:
Base
  • Object
show all
Defined in:
lib/aws_instance_list/elasticsearch_service.rb

Instance Attribute Summary

Attributes inherited from Base

#client, #metric, #region

Instance Method Summary collapse

Methods inherited from Base

#demodulize, #yaml, #yaml_default, #yaml_file

Constructor Details

#initialize(region: 'eu-west-1') ⇒ ElasticsearchService

Returns a new instance of ElasticsearchService.



7
8
9
10
11
12
13
# File 'lib/aws_instance_list/elasticsearch_service.rb', line 7

def initialize region: 'eu-west-1'

  super region: region

  @client=Aws::ElasticsearchService::Client.new region: region

end

Instance Method Details

#descriptionsObject



19
20
21
22
23
24
25
# File 'lib/aws_instance_list/elasticsearch_service.rb', line 19

def descriptions
  total_domains=domain_names
  begin
    @instances+=client.describe_elasticsearch_domains(domain_names: total_domains.first(5) ).domain_status_list
    total_domains=total_domains.drop(5)
  end while !total_domains.empty?
end

#domain_listObject



32
33
34
35
36
# File 'lib/aws_instance_list/elasticsearch_service.rb', line 32

def domain_list
  instances.map do |i|
    fields.map { |f| i.send(f) } + metrics(i) << region
  end
end

#domain_namesObject



15
16
17
# File 'lib/aws_instance_list/elasticsearch_service.rb', line 15

def domain_names
  client.list_domain_names.map { |x| x.domain_names.map { |d| d.domain_name } }.flatten
end

#fieldsObject



38
39
40
# File 'lib/aws_instance_list/elasticsearch_service.rb', line 38

def fields
  yaml['domain_status']['fields']
end

#instancesObject



27
28
29
30
# File 'lib/aws_instance_list/elasticsearch_service.rb', line 27

def instances
  descriptions
  @instances
end

#metrics(instance) ⇒ Object



42
43
44
45
46
47
48
49
50
51
# File 'lib/aws_instance_list/elasticsearch_service.rb', line 42

def metrics instance
  type=instance.elasticsearch_cluster_config.instance_type
  nodes=instance.elasticsearch_cluster_config.instance_count
  dimensions = [ { name: 'DomainName', value: instance.domain_name },
                 { name: 'ClientId', value: instance.domain_id.split('/').first }
  ]
  free=metric.es_free_storage_space( dimensions )
  used=metric.cluster_used_space(dimensions)
  [type, nodes, free + used,free, used ]
end