wavefront-client 1.0.1 → 1.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 CHANGED
@@ -1,15 +1,15 @@
1
1
  ---
2
2
  !binary "U0hBMQ==":
3
3
  metadata.gz: !binary |-
4
- ZWYzOTdiOTVhYzhlMDhlNzYwMGQzZDMwZGU5ZWM5NGY1NGE4ODgxMQ==
4
+ YWVmNGM2NDQ4ZGQwNmMzZmIzN2JkZGJjMzllYTY2ZmE3NmY3MzkxMw==
5
5
  data.tar.gz: !binary |-
6
- MDBhYzIwNDM5YmZmZjkzNTU2YTc1NzVkNWM1NWEzMjJhMDdlYTgxZQ==
6
+ MTFiMTczNWUxOWMzNTk3OTljNmMyMzg1YTUyZDJhMGQxN2ZkNzI5YQ==
7
7
  SHA512:
8
8
  metadata.gz: !binary |-
9
- MTJkMDUxMmQyZTcxNTk4MTkyNzQyMDQ0Njk0MmFmNmQxMmYwYzQ4NGU0ODVm
10
- NDMxNDZjNjNhNjAwNjk5YjMzNTMxNWE4NWY5ODI5ZjczYWNhMDgxMGU1MWZm
11
- NjJkMWNiOWM3YjM0ZWRhMmMwYjViNmQzZDJiZDQzMzgzNTIwOTU=
9
+ ZDYwMzRiZTY0NjBhNjcyNzQwNWZmNDQ4NzI1OThlZmQyODhhMjYzNGExN2E2
10
+ YTY3NGNmN2RhYWIwYmVhMmQyN2ZhM2E0MTI1MDRkMjQ1NjhlYTYyYTFiOTkw
11
+ MTRlMjdiMjhkMjA3OWJhYTQ2YzU4OGUwYmQzZGU4NzczMzZiMDk=
12
12
  data.tar.gz: !binary |-
13
- YTE4OTg4YTAwYWI3N2MzZWYwYzFhMmZhNjE3ZjFiOGRhZjkzYzc5MTBlYWY0
14
- Njc4Y2Q1NzY0MDI4OWI1OWY2MGJhZGM2ZDAyZWYwYTAzNDgyNjU4YTMzNWU0
15
- ZWE1MDAyYjcyNGZkZTVmYjc4NmEwZGZjNjFmZjY2NmE2ZDI3YmE=
13
+ YWE4ZmE0MWFlODcxZTg4NzE2YWY5MjFjYjc1MTRiM2E0YTJlZDE5NjYwY2Qx
14
+ Y2E4Nzg1MmY2ZjNjMWNmZjAzZWNiMzBhYzNjMTgyMmQxNDRhYzU3OTZkMzNj
15
+ MmMyNjAwYzQ4NDI2NTUzYTgwNjJjNTkzNTZhOWVkZjdiMzllZGM=
@@ -27,22 +27,53 @@ module Wavefront
27
27
 
28
28
  attr_reader :token
29
29
 
30
- def initialize(token)
30
+ def initialize(token, debug=false)
31
31
  @token = token
32
+ debug(debug)
32
33
  end
33
34
 
34
35
  def active(options={})
36
+ get_alerts('active', options)
37
+ end
38
+
39
+ def all(options={})
40
+ get_alerts('all', options)
41
+ end
42
+
43
+ def invalid(options={})
44
+ get_alerts('invalid', options)
45
+ end
46
+
47
+ def snoozed(options={})
48
+ get_alerts('snoozed', options)
49
+ end
35
50
 
51
+ def affected_by_maintenance(options={})
52
+ get_alerts('affected_by_maintenance', options)
53
+ end
54
+
55
+ def get_alerts(path, options={})
36
56
  options[:host] ||= DEFAULT_HOST
37
57
  options[:path] ||= DEFAULT_PATH
38
58
 
39
- uri = URI::HTTPS.build(:host => options[:host], :path => options[:path])
40
- uri = URI.join(uri.to_s,"active")
41
- uri = URI.join(uri.to_s,"?t=#{@token}")
42
-
43
- response = RestClient.get(uri.to_s)
59
+ query = "t=#{@token}"
60
+
61
+ if options[:shared_tags]
62
+ tags = options[:shared_tags].class == Array ? options[:shared_tags] : [ options[:shared_tags] ] # Force an array, even if string given
63
+ query += "&#{tags.map{|t| "customerTag=#{t}"}.join('&')}"
64
+ end
65
+
66
+ if options[:private_tags]
67
+ tags = options[:private_tags].class == Array ? options[:private_tags] : [ options[:private_tags] ] # Force an array, even if string given
68
+ query += "&#{tags.map{|t| "userTag=#{t}"}.join('&')}"
69
+ end
44
70
 
45
- return response
71
+ uri = URI::HTTPS.build(
72
+ host: options[:host],
73
+ path: File.join(options[:path], path),
74
+ query: query
75
+ )
76
+ RestClient.get(uri.to_s)
46
77
  end
47
78
 
48
79
  private
@@ -16,6 +16,6 @@ See the License for the specific language governing permissions and
16
16
 
17
17
  module Wavefront
18
18
  class Client
19
- VERSION = "1.0.1"
19
+ VERSION = "1.0.2"
20
20
  end
21
21
  end
data/spec/spec_helper.rb CHANGED
@@ -18,6 +18,7 @@ $LOAD_PATH.unshift File.expand_path('../../lib', __FILE__)
18
18
  require 'wavefront/client'
19
19
  require 'wavefront/writer'
20
20
  require 'wavefront/metadata'
21
+ require 'wavefront/alerting'
21
22
 
22
23
  TEST_TOKEN = "test"
23
24
  TEST_HOST = "metrics.wavefront.com"
@@ -0,0 +1,111 @@
1
+ =begin
2
+ Copyright 2015 Wavefront Inc.
3
+ Licensed under the Apache License, Version 2.0 (the "License");
4
+ you may not use this file except in compliance with the License.
5
+ You may obtain a copy of the License at
6
+
7
+ http://www.apache.org/licenses/LICENSE-2.0
8
+
9
+ Unless required by applicable law or agreed to in writing, software
10
+ distributed under the License is distributed on an "AS IS" BASIS,
11
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12
+ See the License for the specific language governing permissions and
13
+ limitations under the License.
14
+
15
+ =end
16
+
17
+ require 'spec_helper'
18
+ require 'pathname'
19
+
20
+ describe Wavefront::Alerting do
21
+ before do
22
+ @wave = Wavefront::Alerting.new(TEST_TOKEN)
23
+ end
24
+
25
+ it 'has some defaults' do
26
+ expect(Wavefront::Alerting::DEFAULT_HOST).to_not be_nil
27
+ expect(Wavefront::Alerting::DEFAULT_HOST).to be_a_kind_of String
28
+ expect(Wavefront::Alerting::DEFAULT_PATH).to_not be_nil
29
+ expect(Wavefront::Alerting::DEFAULT_PATH).to be_a_kind_of String
30
+ end
31
+
32
+
33
+ describe "#initialize" do
34
+ it 'accepts a token option initialized and exposes token for reading' do
35
+ wave = Wavefront::Alerting.new(TEST_TOKEN)
36
+ expect(wave.token).to eq TEST_TOKEN
37
+ end
38
+
39
+ it 'enables rest-client debugging if instructed to do so' do
40
+ wave = Wavefront::Alerting.new(TEST_TOKEN, true)
41
+ expect RestClient.log == 'stdout'
42
+ end
43
+ end
44
+
45
+ describe '#get_alerts' do
46
+ it 'makes API request with default options' do
47
+ expect(RestClient).to receive(:get).with("https://#{File.join(Wavefront::Alerting::DEFAULT_HOST, Wavefront::Alerting::DEFAULT_PATH, "all?t=#{TEST_TOKEN}")}")
48
+ @wave.get_alerts('all')
49
+ end
50
+
51
+ it 'makes API request with specified host' do
52
+ host = 'madeup.wavefront.com'
53
+ expect(RestClient).to receive(:get).with("https://#{File.join(host, Wavefront::Alerting::DEFAULT_PATH, "all?t=#{TEST_TOKEN}")}")
54
+ @wave.get_alerts('all', { :host => host } )
55
+ end
56
+
57
+ it 'makes API request with specified path' do
58
+ path = '/api/new_alerts'
59
+ expect(RestClient).to receive(:get).with("https://#{File.join(Wavefront::Alerting::DEFAULT_HOST, path, "all?t=#{TEST_TOKEN}")}")
60
+ @wave.get_alerts('all', { :path => path })
61
+ end
62
+
63
+ it 'makes API request with appended shared tags' do
64
+ tags = [ 'first', 'second' ]
65
+ expect(RestClient).to receive(:get).with("https://#{File.join(Wavefront::Alerting::DEFAULT_HOST, Wavefront::Alerting::DEFAULT_PATH, "all?t=#{TEST_TOKEN}&customerTag=first&customerTag=second")}")
66
+ @wave.get_alerts('all', { :shared_tags => tags })
67
+ end
68
+
69
+ it 'makes API request with appended private tags' do
70
+ tags = [ 'first', 'second' ]
71
+ expect(RestClient).to receive(:get).with("https://#{File.join(Wavefront::Alerting::DEFAULT_HOST, Wavefront::Alerting::DEFAULT_PATH, "all?t=#{TEST_TOKEN}&userTag=first&userTag=second")}")
72
+ @wave.get_alerts('all', { :private_tags => tags })
73
+ end
74
+
75
+ it 'makes API request with both appended private tags and shared tags' do
76
+ private_tag = 'first'
77
+ shared_tag = 'second'
78
+ expect(RestClient).to receive(:get).with("https://#{File.join(Wavefront::Alerting::DEFAULT_HOST, Wavefront::Alerting::DEFAULT_PATH, "all?t=#{TEST_TOKEN}&customerTag=second&userTag=first")}")
79
+ @wave.get_alerts('all', { :private_tags => private_tag, :shared_tags => shared_tag })
80
+ end
81
+ end
82
+
83
+ describe '#active' do
84
+ it 'requests all active alerts' do
85
+ expect(@wave).to receive(:get_alerts).with("active", {})
86
+ @wave.active
87
+ end
88
+ end
89
+
90
+ describe '#snoozed' do
91
+ it 'requests all snoozed alerts' do
92
+ expect(@wave).to receive(:get_alerts).with("snoozed", {})
93
+ @wave.snoozed
94
+ end
95
+ end
96
+
97
+ describe '#invalid' do
98
+ it 'requests all invalid alerts' do
99
+ expect(@wave).to receive(:get_alerts).with("invalid", {})
100
+ @wave.invalid
101
+ end
102
+ end
103
+
104
+ describe '#affected_by_maintenance' do
105
+ it 'requests all affected_by_maintenance alerts' do
106
+ expect(@wave).to receive(:get_alerts).with("affected_by_maintenance", {})
107
+ @wave.affected_by_maintenance
108
+ end
109
+ end
110
+
111
+ end
@@ -38,8 +38,8 @@ Gem::Specification.new do |spec|
38
38
  spec.add_development_dependency "rake"
39
39
  spec.add_development_dependency "rspec"
40
40
 
41
- spec.add_dependency "rest-client", "~> 1.6.7"
42
- spec.add_dependency "slop", "= 3.4.7"
41
+ spec.add_dependency "rest-client", ">= 1.6.7", "<= 1.8"
42
+ spec.add_dependency "slop", ">= 3.4.7", "<= 3.6"
43
43
  spec.required_ruby_version = Gem::Requirement.new(">= 1.9.3")
44
44
 
45
45
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: wavefront-client
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.0.1
4
+ version: 1.0.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - Sam Pointer
@@ -12,7 +12,7 @@ authors:
12
12
  autorequire:
13
13
  bindir: bin
14
14
  cert_chain: []
15
- date: 2015-08-13 00:00:00.000000000 Z
15
+ date: 2015-08-31 00:00:00.000000000 Z
16
16
  dependencies:
17
17
  - !ruby/object:Gem::Dependency
18
18
  name: bundler
@@ -60,30 +60,42 @@ dependencies:
60
60
  name: rest-client
61
61
  requirement: !ruby/object:Gem::Requirement
62
62
  requirements:
63
- - - ~>
63
+ - - ! '>='
64
64
  - !ruby/object:Gem::Version
65
65
  version: 1.6.7
66
+ - - <=
67
+ - !ruby/object:Gem::Version
68
+ version: '1.8'
66
69
  type: :runtime
67
70
  prerelease: false
68
71
  version_requirements: !ruby/object:Gem::Requirement
69
72
  requirements:
70
- - - ~>
73
+ - - ! '>='
71
74
  - !ruby/object:Gem::Version
72
75
  version: 1.6.7
76
+ - - <=
77
+ - !ruby/object:Gem::Version
78
+ version: '1.8'
73
79
  - !ruby/object:Gem::Dependency
74
80
  name: slop
75
81
  requirement: !ruby/object:Gem::Requirement
76
82
  requirements:
77
- - - '='
83
+ - - ! '>='
78
84
  - !ruby/object:Gem::Version
79
85
  version: 3.4.7
86
+ - - <=
87
+ - !ruby/object:Gem::Version
88
+ version: '3.6'
80
89
  type: :runtime
81
90
  prerelease: false
82
91
  version_requirements: !ruby/object:Gem::Requirement
83
92
  requirements:
84
- - - '='
93
+ - - ! '>='
85
94
  - !ruby/object:Gem::Version
86
95
  version: 3.4.7
96
+ - - <=
97
+ - !ruby/object:Gem::Version
98
+ version: '3.6'
87
99
  description: A simple abstraction for talking to wavefront in ruby
88
100
  email:
89
101
  - support@wavefront.com
@@ -113,6 +125,7 @@ files:
113
125
  - lib/wavefront/writer.rb
114
126
  - spec/example_response.json
115
127
  - spec/spec_helper.rb
128
+ - spec/wavefront/alerting_spec.rb
116
129
  - spec/wavefront/client_spec.rb
117
130
  - spec/wavefront/metadata_spec.rb
118
131
  - spec/wavefront/mixins_spec.rb
@@ -146,6 +159,7 @@ summary: A simple abstraction for talking to wavefront in ruby
146
159
  test_files:
147
160
  - spec/example_response.json
148
161
  - spec/spec_helper.rb
162
+ - spec/wavefront/alerting_spec.rb
149
163
  - spec/wavefront/client_spec.rb
150
164
  - spec/wavefront/metadata_spec.rb
151
165
  - spec/wavefront/mixins_spec.rb