aws_instance_list 1.3.2 → 1.3.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 1149aa31631ea057503adc7acafc858567e04101
4
- data.tar.gz: 614c7a7abe21f3e540c929b6ac19d7e93e0cf58c
3
+ metadata.gz: 692af55b47adcbd7975dd292f849e90485c95ff4
4
+ data.tar.gz: '058426807bb95f28adf9817d1f5dea65db8f9a82'
5
5
  SHA512:
6
- metadata.gz: f26e6ff53da4da16c0c74cc0359ea40dbd4b790d9f8221f638571abe65fcad68b12b606f09041955f7218132b66ce8c5940bbac76c7ff7ec68430df41f270bac
7
- data.tar.gz: da4d039ac1c1707e43ed708a8be490615c6af6ce2fb9149f53355caa750db0548f0364c8a1438f3f06f39597b62144264f922babcbe57bc487cda2171ef735e5
6
+ metadata.gz: e3ed672e3c251a6111bbe4fe5baee0809d570ec6c666b390c971859116a89c2c8412c928bde70453e23ec9e1bbc7cfdeb5c290074ae060726749d65429aeee78
7
+ data.tar.gz: e896a54ec3345f15cbcad0d6684a008a39753d5a48cb61601dace87782d386801ceba3b9384b6405d206b928bb1bba06357dd417a0d5f82d53ca13fc550f9453
@@ -1,10 +1,11 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- aws_instance_list (1.3.2)
4
+ aws_instance_list (1.3.3)
5
5
  aws-sdk-cloudwatch (~> 1.6)
6
6
  aws-sdk-ec2 (~> 1.37)
7
7
  aws-sdk-elasticache (~> 1.7)
8
+ aws-sdk-elasticsearchservice (~> 1.13)
8
9
  aws-sdk-rds (~> 1.23)
9
10
  dotenv (~> 2.5)
10
11
 
@@ -12,22 +13,25 @@ GEM
12
13
  remote: https://rubygems.org/
13
14
  specs:
14
15
  aws-eventstream (1.0.1)
15
- aws-partitions (1.105.0)
16
- aws-sdk-cloudwatch (1.10.0)
16
+ aws-partitions (1.106.0)
17
+ aws-sdk-cloudwatch (1.11.0)
17
18
  aws-sdk-core (~> 3, >= 3.26.0)
18
19
  aws-sigv4 (~> 1.0)
19
- aws-sdk-core (3.32.0)
20
+ aws-sdk-core (3.34.0)
20
21
  aws-eventstream (~> 1.0)
21
22
  aws-partitions (~> 1.0)
22
23
  aws-sigv4 (~> 1.0)
23
24
  jmespath (~> 1.0)
24
- aws-sdk-ec2 (1.51.0)
25
+ aws-sdk-ec2 (1.52.0)
25
26
  aws-sdk-core (~> 3, >= 3.26.0)
26
27
  aws-sigv4 (~> 1.0)
27
- aws-sdk-elasticache (1.7.0)
28
+ aws-sdk-elasticache (1.8.0)
28
29
  aws-sdk-core (~> 3, >= 3.26.0)
29
30
  aws-sigv4 (~> 1.0)
30
- aws-sdk-rds (1.33.0)
31
+ aws-sdk-elasticsearchservice (1.13.0)
32
+ aws-sdk-core (~> 3, >= 3.26.0)
33
+ aws-sigv4 (~> 1.0)
34
+ aws-sdk-rds (1.34.0)
31
35
  aws-sdk-core (~> 3, >= 3.26.0)
32
36
  aws-sigv4 (~> 1.0)
33
37
  aws-sigv4 (1.0.3)
@@ -40,5 +40,6 @@ Gem::Specification.new do |spec|
40
40
  spec.add_dependency "aws-sdk-ec2", "~> 1.37"
41
41
  spec.add_dependency "aws-sdk-cloudwatch", "~> 1.6"
42
42
  spec.add_dependency "aws-sdk-elasticache", "~> 1.7"
43
+ spec.add_dependency "aws-sdk-elasticsearchservice", "~> 1.13"
43
44
  spec.add_dependency "dotenv", "~> 2.5"
44
45
  end
@@ -4,6 +4,7 @@ require 'aws_instance_list/region'
4
4
  require 'aws_instance_list/metric'
5
5
  require 'aws_instance_list/rds'
6
6
  require 'aws_instance_list/elasti_cache'
7
+ require 'aws_instance_list/elasticsearch_service'
7
8
  require 'aws_instance_list/version'
8
9
 
9
10
  require 'dotenv/load'
@@ -0,0 +1,56 @@
1
+ require 'aws-sdk-elasticsearchservice'
2
+
3
+ module AwsInstanceList
4
+
5
+ class ElasticsearchService < AwsInstanceList::Base
6
+
7
+ def initialize region: 'eu-west-1'
8
+
9
+ super region: region
10
+
11
+ @client=Aws::ElasticsearchService::Client.new region: region
12
+
13
+ end
14
+
15
+ def domain_names
16
+ client.list_domain_names.map { |x| x.domain_names.map { |d| d.domain_name } }.flatten
17
+ end
18
+
19
+ def descriptions
20
+ total_domains=domain_names
21
+ begin
22
+ @instances+=client.describe_elasticsearch_domains(domain_names: total_domains.first(5) ).domain_status_list
23
+ total_domains=total_domains.drop(5)
24
+ end while !total_domains.empty?
25
+ end
26
+
27
+ def instances
28
+ descriptions
29
+ @instances
30
+ end
31
+
32
+ def domain_list
33
+ instances.map do |i|
34
+ fields.map { |f| i.send(f) } + metrics(i) << region
35
+ end
36
+ end
37
+
38
+ def fields
39
+ yaml['domain_status']['fields']
40
+ end
41
+
42
+ def metrics instance
43
+ type=instance.elasticsearch_cluster_config.instance_type
44
+ nodes=instance.elasticsearch_cluster_config.instance_count
45
+ dimensions = [ { name: 'DomainName', value: instance.domain_name },
46
+ { name: 'ClientId', value: instance.domain_id.split('/').first }
47
+ ]
48
+ free=metric.es_free_storage_space( dimensions )
49
+ used=metric.cluster_used_space(dimensions)
50
+ [type, nodes, free + used,free, used ]
51
+ end
52
+
53
+ end
54
+ end
55
+
56
+
@@ -47,5 +47,13 @@ module AwsInstanceList
47
47
  ec.cache_list
48
48
  end
49
49
 
50
+ def elasticsearch_list
51
+ list call_to: :elasticsearch_service_list
52
+ end
53
+
54
+ def elasticsearch_service_list region:
55
+ es=AwsInstanceList::ElasticsearchService.new region: region
56
+ es.domain_list
57
+ end
50
58
  end
51
59
  end
@@ -83,6 +83,41 @@ module AwsInstanceList
83
83
 
84
84
  end
85
85
 
86
+ def es_free_storage_space dimensions
87
+ resp=statistics( {
88
+ namespace: "AWS/ES",
89
+ metric_name: "FreeStorageSpace",
90
+ dimensions: dimensions,
91
+ start_time: Time.now - 600,
92
+ end_time: Time.now ,
93
+ period: 60,
94
+ statistics: ["Minimum"]
95
+ })
96
+
97
+ if resp.datapoints.empty?
98
+ '-'
99
+ else
100
+ resp.datapoints.last.minimum
101
+ end
102
+ end
103
+
104
+ def cluster_used_space dimensions
105
+ resp=statistics( {
106
+ namespace: "AWS/ES",
107
+ metric_name: "ClusterUsedSpace",
108
+ dimensions: dimensions,
109
+ start_time: Time.now - 600,
110
+ end_time: Time.now ,
111
+ period: 60,
112
+ statistics: ["Maximum"]
113
+ })
114
+
115
+ if resp.datapoints.empty?
116
+ '-'
117
+ else
118
+ resp.datapoints.last.maximum
119
+ end
120
+ end
86
121
  end
87
122
  end
88
123
 
@@ -1,3 +1,3 @@
1
1
  module AwsInstanceList
2
- VERSION = "1.3.2"
2
+ VERSION = "1.3.3"
3
3
  end
@@ -45,3 +45,10 @@ ElastiCache:
45
45
  cache.r4.4xlarge: 108858546586
46
46
  cache.r4.8xlarge: 218255432090
47
47
  cache.r4.16xlarge: 437021573120
48
+
49
+ ElasticsearchService:
50
+ domain_status:
51
+ fields:
52
+ - domain_id
53
+ - domain_name
54
+
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: aws_instance_list
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.3.2
4
+ version: 1.3.3
5
5
  platform: ruby
6
6
  authors:
7
7
  - Diego PL
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2018-10-22 00:00:00.000000000 Z
11
+ date: 2018-10-24 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler
@@ -122,6 +122,20 @@ dependencies:
122
122
  - - "~>"
123
123
  - !ruby/object:Gem::Version
124
124
  version: '1.7'
125
+ - !ruby/object:Gem::Dependency
126
+ name: aws-sdk-elasticsearchservice
127
+ requirement: !ruby/object:Gem::Requirement
128
+ requirements:
129
+ - - "~>"
130
+ - !ruby/object:Gem::Version
131
+ version: '1.13'
132
+ type: :runtime
133
+ prerelease: false
134
+ version_requirements: !ruby/object:Gem::Requirement
135
+ requirements:
136
+ - - "~>"
137
+ - !ruby/object:Gem::Version
138
+ version: '1.13'
125
139
  - !ruby/object:Gem::Dependency
126
140
  name: dotenv
127
141
  requirement: !ruby/object:Gem::Requirement
@@ -160,6 +174,7 @@ files:
160
174
  - lib/aws_instance_list.rb
161
175
  - lib/aws_instance_list/base.rb
162
176
  - lib/aws_instance_list/elasti_cache.rb
177
+ - lib/aws_instance_list/elasticsearch_service.rb
163
178
  - lib/aws_instance_list/list.rb
164
179
  - lib/aws_instance_list/metric.rb
165
180
  - lib/aws_instance_list/rds.rb