influxdb 0.1.6 → 0.1.7
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/.travis.yml +3 -1
- data/README.md +1 -1
- data/lib/influxdb/client.rb +31 -21
- data/lib/influxdb/version.rb +1 -1
- data/spec/influxdb/client_spec.rb +22 -2
- metadata +2 -2
    
        checksums.yaml
    CHANGED
    
    | @@ -1,7 +1,7 @@ | |
| 1 1 | 
             
            ---
         | 
| 2 2 | 
             
            SHA1:
         | 
| 3 | 
            -
              metadata.gz:  | 
| 4 | 
            -
              data.tar.gz:  | 
| 3 | 
            +
              metadata.gz: 340e103295b0398a309d3e05e64da660e9fc220e
         | 
| 4 | 
            +
              data.tar.gz: 794b43a718b6a3d0a4cd9779a428958d228b400f
         | 
| 5 5 | 
             
            SHA512:
         | 
| 6 | 
            -
              metadata.gz:  | 
| 7 | 
            -
              data.tar.gz:  | 
| 6 | 
            +
              metadata.gz: 9b2e87b5273b7b7d593ae48a0d90d375a2bb16a5c6f3ea207b163082fbb8ce8b4441b821f3238fedd1963b351003d455e0d06db2a767f8f19144234b351193b9
         | 
| 7 | 
            +
              data.tar.gz: 6441b368ba226e0ff02dbc064a8ff8ba38f1a3de473e2329959d7bd4ee45a02bbfb88443dcdc4d5da2463e791bef77ba77a40db10a29ddd0c2f3dfefbdfdc14b
         | 
    
        data/.travis.yml
    CHANGED
    
    
    
        data/README.md
    CHANGED
    
    
    
        data/lib/influxdb/client.rb
    CHANGED
    
    | @@ -1,4 +1,5 @@ | |
| 1 1 | 
             
            require 'uri'
         | 
| 2 | 
            +
            require 'cgi'
         | 
| 2 3 | 
             
            require 'net/http'
         | 
| 3 4 | 
             
            require 'net/https'
         | 
| 4 5 | 
             
            require 'json'
         | 
| @@ -53,6 +54,7 @@ module InfluxDB | |
| 53 54 | 
             
                  @open_timeout = opts[:write_timeout] || 5
         | 
| 54 55 | 
             
                  @read_timeout = opts[:read_timeout] || 300
         | 
| 55 56 | 
             
                  @async = opts[:async] || false
         | 
| 57 | 
            +
                  @retry = opts.fetch(:retry) { true }
         | 
| 56 58 |  | 
| 57 59 | 
             
                  @worker = InfluxDB::Worker.new(self) if @async
         | 
| 58 60 |  | 
| @@ -61,62 +63,62 @@ module InfluxDB | |
| 61 63 |  | 
| 62 64 | 
             
                ## allow options, e.g. influxdb.create_database('foo', replicationFactor: 3)
         | 
| 63 65 | 
             
                def create_database(name, options = {})
         | 
| 64 | 
            -
                  url = full_url("db")
         | 
| 66 | 
            +
                  url = full_url("/db")
         | 
| 65 67 | 
             
                  options[:name] = name
         | 
| 66 68 | 
             
                  data = JSON.generate(options)
         | 
| 67 69 | 
             
                  post(url, data)
         | 
| 68 70 | 
             
                end
         | 
| 69 71 |  | 
| 70 72 | 
             
                def delete_database(name)
         | 
| 71 | 
            -
                  delete full_url("db/#{name}")
         | 
| 73 | 
            +
                  delete full_url("/db/#{name}")
         | 
| 72 74 | 
             
                end
         | 
| 73 75 |  | 
| 74 76 | 
             
                def get_database_list
         | 
| 75 | 
            -
                  get full_url("db")
         | 
| 77 | 
            +
                  get full_url("/db")
         | 
| 76 78 | 
             
                end
         | 
| 77 79 |  | 
| 78 80 | 
             
                def create_cluster_admin(username, password)
         | 
| 79 | 
            -
                  url = full_url("cluster_admins")
         | 
| 81 | 
            +
                  url = full_url("/cluster_admins")
         | 
| 80 82 | 
             
                  data = JSON.generate({:name => username, :password => password})
         | 
| 81 83 | 
             
                  post(url, data)
         | 
| 82 84 | 
             
                end
         | 
| 83 85 |  | 
| 84 86 | 
             
                def update_cluster_admin(username, password)
         | 
| 85 | 
            -
                  url = full_url("cluster_admins/#{username}")
         | 
| 87 | 
            +
                  url = full_url("/cluster_admins/#{username}")
         | 
| 86 88 | 
             
                  data = JSON.generate({:password => password})
         | 
| 87 89 | 
             
                  post(url, data)
         | 
| 88 90 | 
             
                end
         | 
| 89 91 |  | 
| 90 92 | 
             
                def delete_cluster_admin(username)
         | 
| 91 | 
            -
                  delete full_url("cluster_admins/#{username}")
         | 
| 93 | 
            +
                  delete full_url("/cluster_admins/#{username}")
         | 
| 92 94 | 
             
                end
         | 
| 93 95 |  | 
| 94 96 | 
             
                def get_cluster_admin_list
         | 
| 95 | 
            -
                  get full_url("cluster_admins")
         | 
| 97 | 
            +
                  get full_url("/cluster_admins")
         | 
| 96 98 | 
             
                end
         | 
| 97 99 |  | 
| 98 100 | 
             
                def create_database_user(database, username, password)
         | 
| 99 | 
            -
                  url = full_url("db/#{database}/users")
         | 
| 101 | 
            +
                  url = full_url("/db/#{database}/users")
         | 
| 100 102 | 
             
                  data = JSON.generate({:name => username, :password => password})
         | 
| 101 103 | 
             
                  post(url, data)
         | 
| 102 104 | 
             
                end
         | 
| 103 105 |  | 
| 104 106 | 
             
                def update_database_user(database, username, options = {})
         | 
| 105 | 
            -
                  url = full_url("db/#{database}/users/#{username}")
         | 
| 107 | 
            +
                  url = full_url("/db/#{database}/users/#{username}")
         | 
| 106 108 | 
             
                  data = JSON.generate(options)
         | 
| 107 109 | 
             
                  post(url, data)
         | 
| 108 110 | 
             
                end
         | 
| 109 111 |  | 
| 110 112 | 
             
                def delete_database_user(database, username)
         | 
| 111 | 
            -
                  delete full_url("db/#{database}/users/#{username}")
         | 
| 113 | 
            +
                  delete full_url("/db/#{database}/users/#{username}")
         | 
| 112 114 | 
             
                end
         | 
| 113 115 |  | 
| 114 116 | 
             
                def get_database_user_list(database)
         | 
| 115 | 
            -
                  get full_url("db/#{database}/users")
         | 
| 117 | 
            +
                  get full_url("/db/#{database}/users")
         | 
| 116 118 | 
             
                end
         | 
| 117 119 |  | 
| 118 120 | 
             
                def get_database_user_info(database, username)
         | 
| 119 | 
            -
                  get full_url("db/#{database}/users/#{username}")
         | 
| 121 | 
            +
                  get full_url("/db/#{database}/users/#{username}")
         | 
| 120 122 | 
             
                end
         | 
| 121 123 |  | 
| 122 124 | 
             
                def alter_database_privilege(database, username, admin=true)
         | 
| @@ -124,7 +126,7 @@ module InfluxDB | |
| 124 126 | 
             
                end
         | 
| 125 127 |  | 
| 126 128 | 
             
                def continuous_queries(database)
         | 
| 127 | 
            -
                  get full_url("db/#{database}/continuous_queries")
         | 
| 129 | 
            +
                  get full_url("/db/#{database}/continuous_queries")
         | 
| 128 130 | 
             
                end
         | 
| 129 131 |  | 
| 130 132 | 
             
                def write_point(name, data, async=@async, time_precision=@time_precision)
         | 
| @@ -146,13 +148,13 @@ module InfluxDB | |
| 146 148 | 
             
                end
         | 
| 147 149 |  | 
| 148 150 | 
             
                def _write(payload, time_precision=@time_precision)
         | 
| 149 | 
            -
                  url = full_url("db/#{@database}/series",  | 
| 151 | 
            +
                  url = full_url("/db/#{@database}/series", :time_precision => time_precision)
         | 
| 150 152 | 
             
                  data = JSON.generate(payload)
         | 
| 151 153 | 
             
                  post(url, data)
         | 
| 152 154 | 
             
                end
         | 
| 153 155 |  | 
| 154 156 | 
             
                def query(query, time_precision=@time_precision)
         | 
| 155 | 
            -
                  url =  | 
| 157 | 
            +
                  url = full_url("/db/#{@database}/series", :q => query, :time_precision => time_precision)
         | 
| 156 158 | 
             
                  series = get(url)
         | 
| 157 159 |  | 
| 158 160 | 
             
                  if block_given?
         | 
| @@ -176,11 +178,14 @@ module InfluxDB | |
| 176 178 | 
             
                end
         | 
| 177 179 |  | 
| 178 180 | 
             
                private
         | 
| 179 | 
            -
             | 
| 180 | 
            -
             | 
| 181 | 
            -
             | 
| 182 | 
            -
             | 
| 183 | 
            -
             | 
| 181 | 
            +
             | 
| 182 | 
            +
                def full_url(path, params={})
         | 
| 183 | 
            +
                  params[:u] = @username
         | 
| 184 | 
            +
                  params[:p] = @password
         | 
| 185 | 
            +
             | 
| 186 | 
            +
                  query = params.map { |k, v| [CGI.escape(k.to_s), "=", CGI.escape(v.to_s)].join }.join("&")
         | 
| 187 | 
            +
             | 
| 188 | 
            +
                  URI::Generic.build(:path => path, :query => query).to_s
         | 
| 184 189 | 
             
                end
         | 
| 185 190 |  | 
| 186 191 | 
             
                def get(url)
         | 
| @@ -236,8 +241,9 @@ module InfluxDB | |
| 236 241 | 
             
                    block.call(http)
         | 
| 237 242 |  | 
| 238 243 | 
             
                  rescue Timeout::Error, *InfluxDB::NET_HTTP_EXCEPTIONS => e
         | 
| 239 | 
            -
                    log :error, "Failed to contact host #{host}: #{e.inspect} #{"- retrying in #{delay}s."  | 
| 244 | 
            +
                    log :error, "Failed to contact host #{host}: #{e.inspect} #{"- retrying in #{delay}s." if retry?}"
         | 
| 240 245 | 
             
                    log :info, "Queue size is #{@queue.length}." unless @queue.nil?
         | 
| 246 | 
            +
                    stop! unless retry?
         | 
| 241 247 | 
             
                    if stopped?
         | 
| 242 248 | 
             
                      raise e
         | 
| 243 249 | 
             
                    else
         | 
| @@ -250,6 +256,10 @@ module InfluxDB | |
| 250 256 | 
             
                  end
         | 
| 251 257 | 
             
                end
         | 
| 252 258 |  | 
| 259 | 
            +
                def retry?
         | 
| 260 | 
            +
                  !stopped? && @retry
         | 
| 261 | 
            +
                end
         | 
| 262 | 
            +
             | 
| 253 263 | 
             
                def denormalize_series series
         | 
| 254 264 | 
             
                  columns = series['columns']
         | 
| 255 265 |  | 
    
        data/lib/influxdb/version.rb
    CHANGED
    
    
| @@ -3,9 +3,11 @@ require "json" | |
| 3 3 |  | 
| 4 4 | 
             
            describe InfluxDB::Client do
         | 
| 5 5 | 
             
              before do
         | 
| 6 | 
            -
                @influxdb = InfluxDB::Client.new "database",  | 
| 7 | 
            -
                  : | 
| 6 | 
            +
                @influxdb = InfluxDB::Client.new "database", {
         | 
| 7 | 
            +
                  :host => "influxdb.test", :port => 9999, :username => "username",
         | 
| 8 | 
            +
                  :password => "password", :time_precision => "s" }.merge(args)
         | 
| 8 9 | 
             
              end
         | 
| 10 | 
            +
              let(:args) { {} }
         | 
| 9 11 |  | 
| 10 12 | 
             
              describe "#new" do
         | 
| 11 13 | 
             
                describe "with no parameters specified" do
         | 
| @@ -289,6 +291,13 @@ describe InfluxDB::Client do | |
| 289 291 | 
             
                    expect { subject }.to raise_error(Timeout::Error)
         | 
| 290 292 | 
             
                  end
         | 
| 291 293 |  | 
| 294 | 
            +
                  context "when retry disabled" do
         | 
| 295 | 
            +
                    let(:args) { { :retry => false } }
         | 
| 296 | 
            +
             | 
| 297 | 
            +
                    it "raises" do
         | 
| 298 | 
            +
                      expect { subject }.to raise_error(Timeout::Error)
         | 
| 299 | 
            +
                    end
         | 
| 300 | 
            +
                  end
         | 
| 292 301 | 
             
                end
         | 
| 293 302 |  | 
| 294 303 | 
             
                it "raise an exception if the server didn't return 200" do
         | 
| @@ -481,4 +490,15 @@ describe InfluxDB::Client do | |
| 481 490 | 
             
                  @influxdb.query('select * from orders').should == {'orders' => [{'id' => 1, 'line_items' => line_items}]}
         | 
| 482 491 | 
             
                end
         | 
| 483 492 | 
             
              end
         | 
| 493 | 
            +
             | 
| 494 | 
            +
              describe "#full_url" do
         | 
| 495 | 
            +
                it "should return String" do
         | 
| 496 | 
            +
                  @influxdb.send(:full_url, "/unknown").should be_a String
         | 
| 497 | 
            +
                end
         | 
| 498 | 
            +
             | 
| 499 | 
            +
                it "should escape params" do
         | 
| 500 | 
            +
                  url = @influxdb.send(:full_url, "/unknown", :value => ' !@#$%^&*()/\\_+-=?|`~')
         | 
| 501 | 
            +
                  url.should include("value=+%21%40%23%24%25%5E%26%2A%28%29%2F%5C_%2B-%3D%3F%7C%60%7E")
         | 
| 502 | 
            +
                end
         | 
| 503 | 
            +
              end
         | 
| 484 504 | 
             
            end
         | 
    
        metadata
    CHANGED
    
    | @@ -1,14 +1,14 @@ | |
| 1 1 | 
             
            --- !ruby/object:Gem::Specification
         | 
| 2 2 | 
             
            name: influxdb
         | 
| 3 3 | 
             
            version: !ruby/object:Gem::Version
         | 
| 4 | 
            -
              version: 0.1. | 
| 4 | 
            +
              version: 0.1.7
         | 
| 5 5 | 
             
            platform: ruby
         | 
| 6 6 | 
             
            authors:
         | 
| 7 7 | 
             
            - Todd Persen
         | 
| 8 8 | 
             
            autorequire: 
         | 
| 9 9 | 
             
            bindir: bin
         | 
| 10 10 | 
             
            cert_chain: []
         | 
| 11 | 
            -
            date: 2014- | 
| 11 | 
            +
            date: 2014-05-06 00:00:00.000000000 Z
         | 
| 12 12 | 
             
            dependencies:
         | 
| 13 13 | 
             
            - !ruby/object:Gem::Dependency
         | 
| 14 14 | 
             
              name: json
         |