aws_instance_list 1.3.2 → 1.3.3

Sign up to get free protection for your applications and to get access to all the features.
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