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 +4 -4
- data/Gemfile.lock +11 -7
- data/aws_instance_list.gemspec +1 -0
- data/lib/aws_instance_list.rb +1 -0
- data/lib/aws_instance_list/elasticsearch_service.rb +56 -0
- data/lib/aws_instance_list/list.rb +8 -0
- data/lib/aws_instance_list/metric.rb +35 -0
- data/lib/aws_instance_list/version.rb +1 -1
- data/lib/config/default_settings.yaml +7 -0
- metadata +17 -2
    
        checksums.yaml
    CHANGED
    
    | @@ -1,7 +1,7 @@ | |
| 1 1 | 
             
            ---
         | 
| 2 2 | 
             
            SHA1:
         | 
| 3 | 
            -
              metadata.gz:  | 
| 4 | 
            -
              data.tar.gz:  | 
| 3 | 
            +
              metadata.gz: 692af55b47adcbd7975dd292f849e90485c95ff4
         | 
| 4 | 
            +
              data.tar.gz: '058426807bb95f28adf9817d1f5dea65db8f9a82'
         | 
| 5 5 | 
             
            SHA512:
         | 
| 6 | 
            -
              metadata.gz:  | 
| 7 | 
            -
              data.tar.gz:  | 
| 6 | 
            +
              metadata.gz: e3ed672e3c251a6111bbe4fe5baee0809d570ec6c666b390c971859116a89c2c8412c928bde70453e23ec9e1bbc7cfdeb5c290074ae060726749d65429aeee78
         | 
| 7 | 
            +
              data.tar.gz: e896a54ec3345f15cbcad0d6684a008a39753d5a48cb61601dace87782d386801ceba3b9384b6405d206b928bb1bba06357dd417a0d5f82d53ca13fc550f9453
         | 
    
        data/Gemfile.lock
    CHANGED
    
    | @@ -1,10 +1,11 @@ | |
| 1 1 | 
             
            PATH
         | 
| 2 2 | 
             
              remote: .
         | 
| 3 3 | 
             
              specs:
         | 
| 4 | 
            -
                aws_instance_list (1.3. | 
| 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. | 
| 16 | 
            -
                aws-sdk-cloudwatch (1. | 
| 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. | 
| 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. | 
| 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. | 
| 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- | 
| 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)
         | 
    
        data/aws_instance_list.gemspec
    CHANGED
    
    | @@ -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
         | 
    
        data/lib/aws_instance_list.rb
    CHANGED
    
    
| @@ -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 |  | 
    
        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. | 
| 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- | 
| 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
         |