prometheus-api-client 0.0.1 → 0.0.2
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/README.md +15 -1
- data/lib/prometheus/api_client.rb +61 -13
- data/lib/prometheus/api_client/version.rb +1 -1
- metadata +1 -1
    
        checksums.yaml
    CHANGED
    
    | @@ -1,7 +1,7 @@ | |
| 1 1 | 
             
            ---
         | 
| 2 2 | 
             
            SHA1:
         | 
| 3 | 
            -
              metadata.gz:  | 
| 4 | 
            -
              data.tar.gz:  | 
| 3 | 
            +
              metadata.gz: ddd53e20644407d4d1a2a11b3e3116e967ac30f5
         | 
| 4 | 
            +
              data.tar.gz: 0f659ddb1bbfb994550f353913c0dad214f70d6a
         | 
| 5 5 | 
             
            SHA512:
         | 
| 6 | 
            -
              metadata.gz:  | 
| 7 | 
            -
              data.tar.gz:  | 
| 6 | 
            +
              metadata.gz: fadfded50f9012c9d8e922765b078ba008c48d9ce6edf6742c4e96b1a39758b76ae1e7e3e2d0df6c7e1608ce78ed0b3d3a73266a2bc3ba39178b30c045fda9e7
         | 
| 7 | 
            +
              data.tar.gz: d0680011ec2ca3fecda3e4daeb66fcd2db1bb92310b03c77842845fd482a7c21f6b455b77acb1e14431da10d1c8f392f022e72cc72319b5293cbfb3f2e41c3df
         | 
    
        data/README.md
    CHANGED
    
    | @@ -1,7 +1,16 @@ | |
| 1 | 
            -
            # Prometheus Ruby Client
         | 
| 1 | 
            +
            # Prometheus API Ruby Client
         | 
| 2 | 
            +
             | 
| 3 | 
            +
            [![Gem Version][1]](http://badge.fury.io/rb/prometheus-api-client)
         | 
| 4 | 
            +
            [![Build Status][2]](http://travis-ci.org/yaacov/prometheus_api_client_ruby)
         | 
| 5 | 
            +
            [![Build Status][3]](https://codeclimate.com/github/yaacov/prometheus_api_client_ruby)
         | 
| 6 | 
            +
            [![Coverage Status][4]](https://coveralls.io/github/yaacov/prometheus_api_client_ruby?branch=master)
         | 
| 2 7 |  | 
| 3 8 | 
             
            A Ruby library for reading Prometheus metrics API.
         | 
| 4 9 |  | 
| 10 | 
            +
            ### Authentication proxy
         | 
| 11 | 
            +
             | 
| 12 | 
            +
            If an authentication proxy ( e.g. oauth2 ) is used in a layer above the prometheus REST server, this client can use ssl and authentication headears.
         | 
| 13 | 
            +
             | 
| 5 14 | 
             
            ## Usage
         | 
| 6 15 |  | 
| 7 16 | 
             
            ### Overview
         | 
| @@ -29,3 +38,8 @@ rspec: | |
| 29 38 | 
             
            ```bash
         | 
| 30 39 | 
             
            rake
         | 
| 31 40 | 
             
            ```
         | 
| 41 | 
            +
             | 
| 42 | 
            +
            [1]: https://badge.fury.io/rb/prometheus-api-client.svg
         | 
| 43 | 
            +
            [2]: https://secure.travis-ci.org/yaacov/prometheus_api_client_ruby.svg
         | 
| 44 | 
            +
            [3]: https://codeclimate.com/github/yaacov/prometheus_api_client_ruby.svg
         | 
| 45 | 
            +
            [4]: https://coveralls.io/repos/github/yaacov/prometheus_api_client_ruby/badge.svg
         | 
| @@ -1,28 +1,76 @@ | |
| 1 1 | 
             
            # encoding: UTF-8
         | 
| 2 2 |  | 
| 3 | 
            +
            require 'uri'
         | 
| 3 4 | 
             
            require 'faraday'
         | 
| 4 5 |  | 
| 5 6 | 
             
            module Prometheus
         | 
| 6 7 | 
             
              # Client is a ruby implementation for a Prometheus compatible api_client.
         | 
| 7 8 | 
             
              module ApiClient
         | 
| 9 | 
            +
                DEFAULT_HOST = 'localhost'.freeze
         | 
| 10 | 
            +
                DEFAULT_SCHEME = 'http'.freeze
         | 
| 11 | 
            +
                DEFAULT_PORT = 9090
         | 
| 12 | 
            +
                DEFAULT_PATH = '/api/v1/'.freeze
         | 
| 13 | 
            +
                DEFAULT_CREDENTIALS = {}.freeze
         | 
| 14 | 
            +
                DEFAULT_OPTIONS = {}.freeze
         | 
| 15 | 
            +
             | 
| 8 16 | 
             
                # Returns a default client object
         | 
| 9 | 
            -
                def self.client( | 
| 10 | 
            -
                   | 
| 11 | 
            -
             | 
| 17 | 
            +
                def self.client(host = DEFAULT_HOST, args = {})
         | 
| 18 | 
            +
                  args = {
         | 
| 19 | 
            +
                    scheme: DEFAULT_SCHEME,
         | 
| 20 | 
            +
                    port: DEFAULT_PORT,
         | 
| 21 | 
            +
                    path: DEFAULT_PATH,
         | 
| 22 | 
            +
                    credentials: DEFAULT_CREDENTIALS,
         | 
| 23 | 
            +
                    options: DEFAULT_OPTIONS,
         | 
| 24 | 
            +
                  }.merge(args)
         | 
| 25 | 
            +
             | 
| 26 | 
            +
                  Faraday.new(
         | 
| 27 | 
            +
                    prometheus_args(host, args),
         | 
| 28 | 
            +
                  )
         | 
| 29 | 
            +
                end
         | 
| 30 | 
            +
             | 
| 31 | 
            +
                def self.prometheus_uri(host, scheme, port, path)
         | 
| 32 | 
            +
                  builder = {
         | 
| 33 | 
            +
                    http: URI::HTTP,
         | 
| 34 | 
            +
                    https: URI::HTTPS,
         | 
| 35 | 
            +
                  }[scheme.to_sym]
         | 
| 36 | 
            +
             | 
| 37 | 
            +
                  builder.build(
         | 
| 38 | 
            +
                    host: host,
         | 
| 39 | 
            +
                    port: port,
         | 
| 40 | 
            +
                    path: path,
         | 
| 41 | 
            +
                  ).to_s
         | 
| 42 | 
            +
                end
         | 
| 43 | 
            +
             | 
| 44 | 
            +
                def self.prometheus_proxy(options)
         | 
| 45 | 
            +
                  options[:http_proxy_uri] if options[:http_proxy_uri]
         | 
| 46 | 
            +
                end
         | 
| 12 47 |  | 
| 13 | 
            -
             | 
| 48 | 
            +
                def self.prometheus_verify_ssl(options)
         | 
| 49 | 
            +
                  return unless options[:verify_ssl]
         | 
| 50 | 
            +
             | 
| 51 | 
            +
                  {
         | 
| 52 | 
            +
                    verify: options[:verify_ssl] != OpenSSL::SSL::VERIFY_NONE,
         | 
| 53 | 
            +
                    cert_store: options[:ssl_cert_store],
         | 
| 54 | 
            +
                  }
         | 
| 55 | 
            +
                end
         | 
| 56 | 
            +
             | 
| 57 | 
            +
                def self.prometheus_headers(credentials)
         | 
| 58 | 
            +
                  return unless credentials[:token]
         | 
| 59 | 
            +
             | 
| 60 | 
            +
                  {
         | 
| 61 | 
            +
                    Authorization: 'Bearer ' + credentials[:token].to_s,
         | 
| 62 | 
            +
                  }
         | 
| 14 63 | 
             
                end
         | 
| 15 64 |  | 
| 16 | 
            -
                def self.prometheus_args( | 
| 65 | 
            +
                def self.prometheus_args(host, args = {})
         | 
| 17 66 | 
             
                  {
         | 
| 18 | 
            -
                     | 
| 19 | 
            -
             | 
| 20 | 
            -
                     | 
| 21 | 
            -
             | 
| 22 | 
            -
             | 
| 23 | 
            -
             | 
| 24 | 
            -
             | 
| 25 | 
            -
                         end,
         | 
| 67 | 
            +
                    url: prometheus_uri(
         | 
| 68 | 
            +
                      host, args[:scheme], args[:port], args[:path]
         | 
| 69 | 
            +
                    ),
         | 
| 70 | 
            +
                    proxy: prometheus_proxy(args[:options]),
         | 
| 71 | 
            +
                    ssl: prometheus_verify_ssl(args[:options]),
         | 
| 72 | 
            +
                    headers: prometheus_headers(args[:credentials]),
         | 
| 73 | 
            +
                    request: { open_timeout: 2, timeout: 5 },
         | 
| 26 74 | 
             
                  }
         | 
| 27 75 | 
             
                end
         | 
| 28 76 | 
             
              end
         |