xcal-parktronic 1.0.0 → 1.0.1
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +6 -14
- data/Gemfile +1 -0
- data/README.md +11 -9
- data/lib/xcal/parktronic.rb +4 -0
- data/lib/xcal/parktronic/api_client.rb +19 -0
- data/lib/xcal/parktronic/routes/alarms.rb +12 -15
- data/lib/xcal/parktronic/routes/command_notifications.rb +1 -3
- data/lib/xcal/parktronic/routes/custom_queries.rb +2 -4
- data/lib/xcal/parktronic/routes/event_history_items.rb +1 -3
- data/lib/xcal/parktronic/routes/events.rb +2 -4
- data/lib/xcal/parktronic/routes/metrics.rb +17 -34
- data/lib/xcal/parktronic/routes/nested/alarm_actions.rb +2 -5
- data/lib/xcal/parktronic/routes/nested/device_errors.rb +1 -1
- data/lib/xcal/parktronic/routes/nested/events.rb +2 -2
- data/lib/xcal/parktronic/routes/nested/metric_values.rb +1 -1
- data/lib/xcal/parktronic/routes/outages.rb +1 -3
- data/lib/xcal/parktronic/routes/stack_changes.rb +3 -4
- data/lib/xcal/parktronic/version.rb +1 -1
- data/spec/lib/xcal/parktronic/routes/metrics_routes_spec.rb +8 -1
- data/spec/lib/xcal/parktronic/routes/nested/alarm_actions_spec.rb +1 -0
- data/spec/lib/xcal/parktronic/routes/nested/events_spec.rb +1 -0
- data/xcal-parktronic.gemspec +1 -0
- metadata +35 -21
checksums.yaml
CHANGED
@@ -1,15 +1,7 @@
|
|
1
1
|
---
|
2
|
-
|
3
|
-
metadata.gz:
|
4
|
-
|
5
|
-
|
6
|
-
|
7
|
-
|
8
|
-
metadata.gz: !binary |-
|
9
|
-
ZDAxMzYyMTk1ZDM0MTg3MzkwNDVjNjg4YjMwYTA0M2UzNzhkZWJkM2Q1MTVj
|
10
|
-
ZWExNWZmNmZkYWU0YzJiNmYyZTI3ODk5ZjViOTE1YzI3OTFlNDkxY2RlOWM0
|
11
|
-
Mzg0YmJlZGRkYWE5YjkyMzZmNmRjNzE1YzBlYWZmMDY1YjJlZGU=
|
12
|
-
data.tar.gz: !binary |-
|
13
|
-
NjU4MTI5YTliN2RiM2QzZGQxZTVmMDg0MzE3M2JmNDc1NDFlMWRkMDkyNDk5
|
14
|
-
NTIxYzdhMDVlZmMyMWYyNTJiOWVkOTE1NDM2Y2U5YmY4ZGI2MjA3YzkwYTU0
|
15
|
-
YjFkZjY2ODFkZWVjYjE4MDViNDc4ODQyYjMzMzBmZDlkNzg5ODU=
|
2
|
+
SHA1:
|
3
|
+
metadata.gz: 898fd311009a1d5e486cddc2a8f45c63c421b51b
|
4
|
+
data.tar.gz: 2b9f9b5938830b48e60e394ff8e94103f616598a
|
5
|
+
SHA512:
|
6
|
+
metadata.gz: 9c8f772186c54d466ab10ff635726385e038690a4489fb9b6f62f7f9337c26780dc9a57e33ad5cc57570619a6dbd8184508f148ba47af3cb514e07db380d1b67
|
7
|
+
data.tar.gz: ba689c71cf39006e4b536b8675abd357ab092d7a3e75ca45b6e2980247f81e3b6fcc180691484c6e47bc10218bbaf9cfaff6abe3b2c4eb89c84e5510b83ba01f
|
data/Gemfile
CHANGED
data/README.md
CHANGED
@@ -27,26 +27,28 @@ http://rubydoc.info/gems/xcal-parktronic/frames
|
|
27
27
|
|
28
28
|
## Usage
|
29
29
|
|
30
|
-
|
30
|
+
### Initialization:
|
31
31
|
|
32
32
|
```ruby
|
33
|
+
api = ParkClient.new(access_token: 'your_access_token', endpoint: 'http://api_host')
|
33
34
|
api = Xcal::Parktronic::ApiClient.new(access_token: 'your_access_token', endpoint: 'http://api_host')
|
35
|
+
api = Xcal::Parktronic::ApiClient.new(access_token: 'your_access_token', endpoint: 'http://api_host', memcached_host: 'localhost:11211')
|
34
36
|
```
|
35
37
|
|
36
|
-
|
38
|
+
### Alarms:
|
37
39
|
```ruby
|
38
40
|
api.alarms
|
39
41
|
api.alarm_tags(1)
|
40
42
|
api.search_alarm(name: 'test', tagged_with: 'test', time_range: 24, originating_system: 'Splunk', page: 1, per_page: 20)
|
41
43
|
```
|
42
44
|
|
43
|
-
|
45
|
+
### Outages:
|
44
46
|
```ruby
|
45
47
|
api.outages
|
46
48
|
api.outages(page: 2, per_page: 5)
|
47
49
|
```
|
48
50
|
|
49
|
-
|
51
|
+
### Stack changes
|
50
52
|
```ruby
|
51
53
|
api.stack_changes
|
52
54
|
api.stack_changes(page: 2, per_page: 5)
|
@@ -54,21 +56,21 @@ api.stack_changes(page: 2, per_page: 5, element: 'XBO')
|
|
54
56
|
api.stack_changes(time_range: {time_offset: -1, start_date: 0, start_time: 1440, end_time: 0}, element: 'XBO')
|
55
57
|
```
|
56
58
|
|
57
|
-
|
59
|
+
### Events history
|
58
60
|
```ruby
|
59
61
|
api.events_history
|
60
62
|
api.events_history(page: 2, per_page: 5)
|
61
63
|
api.events_history(host_impacted: 'xre-host-1', service_impacted: 'xre')
|
62
64
|
```
|
63
65
|
|
64
|
-
|
66
|
+
### Command notifications (remote commands)
|
65
67
|
```ruby
|
66
68
|
api.command_notifications
|
67
69
|
api.command_notifications(page: 1, per_page: 2)
|
68
70
|
api.update_command_notification(10)
|
69
71
|
```
|
70
72
|
|
71
|
-
|
73
|
+
### Events
|
72
74
|
```ruby
|
73
75
|
api.add_event
|
74
76
|
api.update_event
|
@@ -77,7 +79,7 @@ api.alarm(3).get_all_events
|
|
77
79
|
api.alarm(3).post_event(data)
|
78
80
|
```
|
79
81
|
|
80
|
-
|
82
|
+
### Alarm Actions
|
81
83
|
```ruby
|
82
84
|
api.alarm(3).get_alarm_actions
|
83
85
|
api.alarm(3).get_alarm_action(alarm_action_id)
|
@@ -86,7 +88,7 @@ api.alarm(3).update_alarm_action
|
|
86
88
|
api.alarm(3).set_position
|
87
89
|
```
|
88
90
|
|
89
|
-
|
91
|
+
### Custom Queries
|
90
92
|
```ruby
|
91
93
|
api.get_custom_queries
|
92
94
|
api.post_custom_query
|
data/lib/xcal/parktronic.rb
CHANGED
@@ -11,6 +11,8 @@ module Xcal
|
|
11
11
|
# * +endpoint+ - OIV endpoint
|
12
12
|
# * +proxy+ - enables proxy if proxy url is passed
|
13
13
|
# * +access_token+ - access key to application
|
14
|
+
# * +memcached_host+ - memcached host:port if you want enable caching
|
15
|
+
# * +memcached_ttl+ - cache time to live (seconds), 60 seconds by default
|
14
16
|
# * +version+ - api version. defaults to v1
|
15
17
|
# ==== Examples
|
16
18
|
# api = Xcal::Parktronic::ApiClient.new(access_token: 'your_access_token', endpoint: 'http://api-host.com')
|
@@ -19,6 +21,11 @@ module Xcal
|
|
19
21
|
@args.default_proc = proc{|h, k| h.key?(k.to_s) ? h[k.to_s] : nil}
|
20
22
|
end
|
21
23
|
|
24
|
+
def cache
|
25
|
+
return nil if @args[:memcached_host].nil?
|
26
|
+
@cache ||= Dalli::Client.new(@args[:memcached_host], :expires_in => (@args[:memcached_ttl] || 60), :namespace => "xcal_parktronic", :compress => true)
|
27
|
+
end
|
28
|
+
|
22
29
|
def host
|
23
30
|
uri.host
|
24
31
|
end
|
@@ -57,6 +64,18 @@ module Xcal
|
|
57
64
|
|
58
65
|
@http
|
59
66
|
end
|
67
|
+
|
68
|
+
def get_response(url)
|
69
|
+
# Try to find response in cache
|
70
|
+
cache_key = Digest::SHA1.hexdigest(url)
|
71
|
+
return cache.get(cache_key) if cache && !cache.get(cache_key).nil?
|
72
|
+
|
73
|
+
# Get response and save to cache (if cacing enabled)
|
74
|
+
responce = http.get url
|
75
|
+
cache.set(cache_key, responce) if cache
|
76
|
+
|
77
|
+
responce
|
78
|
+
end
|
60
79
|
end
|
61
80
|
|
62
81
|
end
|
@@ -17,16 +17,12 @@ module Xcal
|
|
17
17
|
# api.alarms(page: 2, per_page: 5)
|
18
18
|
def get_paged_alarms(args = {})
|
19
19
|
args.merge!(:access_token => access_token)
|
20
|
-
response =
|
20
|
+
response = get_response("/#{api_version}/alarms?#{URI.encode_www_form(args)}")
|
21
21
|
|
22
22
|
generic_response = Xcal::Parktronic::GenericResponse.new(response.body)
|
23
|
-
if response.code == '200'
|
24
|
-
generic_response.alarms.map { |alarm| Xcal::Parktronic::GenericResponse.new(alarm.alarm, self) }
|
25
|
-
else
|
26
|
-
generic_response
|
27
|
-
end
|
28
23
|
|
29
|
-
|
24
|
+
response.code == '200' && generic_response.has_key?(:alarms) ?
|
25
|
+
generic_response.alarms.map { |alarm| Xcal::Parktronic::GenericResponse.new(alarm.alarm, self) } : generic_response
|
30
26
|
end
|
31
27
|
alias :alarms :get_paged_alarms
|
32
28
|
|
@@ -38,12 +34,10 @@ module Xcal
|
|
38
34
|
# ==== Examples
|
39
35
|
# api.get_alarm(2)
|
40
36
|
def get_alarm(id)
|
41
|
-
response =
|
37
|
+
response = get_response("/#{api_version}/alarms/#{id}?access_token=#{access_token}")
|
42
38
|
|
43
39
|
generic_response = Xcal::Parktronic::GenericResponse.new(response.body)
|
44
40
|
response.code == '200' ? Xcal::Parktronic::GenericResponse.new(generic_response.alarm, self) : generic_response
|
45
|
-
|
46
|
-
# TODO Add caching
|
47
41
|
end
|
48
42
|
alias :alarm :get_alarm
|
49
43
|
|
@@ -102,7 +96,7 @@ module Xcal
|
|
102
96
|
# api.get_alarm_tags(2)
|
103
97
|
# api.alarm_tags(2)
|
104
98
|
def get_alarm_tags(id)
|
105
|
-
response =
|
99
|
+
response = get_response("/#{api_version}/alarms/#{id}/tags?#{URI.encode_www_form(access_token: access_token)}")
|
106
100
|
|
107
101
|
generic_response = Xcal::Parktronic::GenericResponse.new(response.body, self)
|
108
102
|
response.code == '200' && generic_response.has_key?(:tags) ? generic_response.tags.map(&:tag) : generic_response
|
@@ -118,13 +112,15 @@ module Xcal
|
|
118
112
|
# * +originating_system+ string or array, originating system name(s), blank by default (example: 'Op5_Nagios' or 'Op5_Nagios Splunk' or ['Op5_Nagios', 'Splunk'])
|
119
113
|
# * +page+ integer, page number, defaults to 1
|
120
114
|
# * +per_page+ integer, per page value, defaults to 100
|
115
|
+
# * +where+ 'where' hash of conditions for searching
|
116
|
+
# * +extends+ array, may include: latest_event, latest_unclosed_event, with_unclosed_events, with_most_recent_events, top_alarms, select_brouha_open
|
121
117
|
#
|
122
118
|
# ==== Examples
|
123
119
|
# api.search_alarm(name: 'test alarm')
|
124
120
|
# api.search_alarm(tagged_with: 'test alarm', time_range: 120)
|
125
|
-
|
121
|
+
# api.search_alarm(where: {impact_level: 'Unknown', originating_system: 'test'}, time_range: 120)
|
122
|
+
# api.search_alarm(extends: ['latest_event', 'with_most_recent_events'], time_range: 120)
|
126
123
|
def search_alarm(args = {})
|
127
|
-
custom_extends = [ 'latest_event', 'latest_unclosed_event' ]
|
128
124
|
custom_scopes = { with_most_recent_events: [] }
|
129
125
|
|
130
126
|
#Filter
|
@@ -142,12 +138,13 @@ module Xcal
|
|
142
138
|
# Params for request
|
143
139
|
scopes = URI.escape(custom_scopes.to_json)
|
144
140
|
search = URI.escape({name: args.fetch(:name, '')}.to_json)
|
145
|
-
extends = URI.escape(args.fetch(:extends,
|
141
|
+
extends = URI.escape(args.fetch(:extends, []).to_json)
|
146
142
|
filter = URI.escape(args.fetch(:filter, filter).to_json)
|
143
|
+
where = URI.escape(args.fetch(:where, '').to_json)
|
147
144
|
page = args.fetch(:page, 1)
|
148
145
|
per_page = args.fetch(:per_page, 100)
|
149
146
|
|
150
|
-
response =
|
147
|
+
response = get_response("/#{api_version}/alarms/search?page=#{page}&per_page=#{per_page}&scopes=#{scopes}&search=#{search}&extends=#{extends}&filter=#{filter}&where=#{where}&access_token=#{access_token}")
|
151
148
|
|
152
149
|
generic_response = Xcal::Parktronic::GenericResponse.new(response.body)
|
153
150
|
response.code == '200' && generic_response.has_key?(:alarms) ? generic_response.alarms.map(&:alarm) : generic_response
|
@@ -15,7 +15,7 @@ module Xcal
|
|
15
15
|
# api.command_notifications
|
16
16
|
def get_paged_command_notifications(args = {})
|
17
17
|
args.merge!(access_token: access_token)
|
18
|
-
response =
|
18
|
+
response = get_response("/#{api_version}/command_notifications?#{URI.encode_www_form(args)}")
|
19
19
|
|
20
20
|
generic_response = Xcal::Parktronic::GenericResponse.new(response.body)
|
21
21
|
if response.code == '200' && generic_response.has_key?(:remote_commands)
|
@@ -23,8 +23,6 @@ module Xcal
|
|
23
23
|
else
|
24
24
|
generic_response
|
25
25
|
end
|
26
|
-
|
27
|
-
# TODO Add caching
|
28
26
|
end
|
29
27
|
alias :command_notifications :get_paged_command_notifications
|
30
28
|
|
@@ -10,7 +10,7 @@ module Xcal
|
|
10
10
|
# api.get_custom_queries
|
11
11
|
# api.custom_queries
|
12
12
|
def get_custom_queries
|
13
|
-
response =
|
13
|
+
response = get_response("/#{api_version}/custom_queries?#{URI.encode_www_form(:access_token => access_token)}")
|
14
14
|
|
15
15
|
generic_response = Xcal::Parktronic::GenericResponse.new(response.body)
|
16
16
|
if response.code == '200'
|
@@ -18,8 +18,6 @@ module Xcal
|
|
18
18
|
else
|
19
19
|
generic_response
|
20
20
|
end
|
21
|
-
|
22
|
-
# TODO Add caching
|
23
21
|
end
|
24
22
|
alias :custom_queries :get_custom_queries
|
25
23
|
|
@@ -67,7 +65,7 @@ module Xcal
|
|
67
65
|
# ==== Examples
|
68
66
|
# api.find_custom_query(3, 'ChartSeries')
|
69
67
|
def find_custom_query(referencable_id, referencable_type)
|
70
|
-
response =
|
68
|
+
response = get_response("/#{api_version}/custom_queries/find/#{referencable_id}/#{referencable_type}?#{URI.encode_www_form(:access_token => access_token)}")
|
71
69
|
|
72
70
|
generic_response = Xcal::Parktronic::GenericResponse.new(response.body)
|
73
71
|
response.code == '200' ? Xcal::Parktronic::GenericResponse.new(generic_response.custom_query, self) : generic_response
|
@@ -17,7 +17,7 @@ module Xcal
|
|
17
17
|
# api.events_history(host_impacted: 'google.com', service_impacted: 'http')
|
18
18
|
def get_paged_event_history_items(args = {})
|
19
19
|
args.merge!(access_token: access_token)
|
20
|
-
response =
|
20
|
+
response = get_response("/#{api_version}/events_history?#{URI.encode_www_form(args)}")
|
21
21
|
|
22
22
|
generic_response = Xcal::Parktronic::GenericResponse.new(response.body)
|
23
23
|
if response.code == '200' && generic_response.has_key?(:event_history_items)
|
@@ -25,8 +25,6 @@ module Xcal
|
|
25
25
|
else
|
26
26
|
generic_response
|
27
27
|
end
|
28
|
-
|
29
|
-
# TODO Add caching
|
30
28
|
end
|
31
29
|
alias :events_history :get_paged_event_history_items
|
32
30
|
end
|
@@ -13,12 +13,10 @@ module Xcal
|
|
13
13
|
# api.get_event(1)
|
14
14
|
# api.event(1)
|
15
15
|
def get_event(id)
|
16
|
-
response =
|
16
|
+
response = get_response("/#{api_version}/events/#{id}?access_token=#{access_token}")
|
17
17
|
|
18
18
|
generic_response = Xcal::Parktronic::GenericResponse.new(response.body)
|
19
19
|
response.code == '200' ? Xcal::Parktronic::GenericResponse.new(generic_response.event, self) : generic_response
|
20
|
-
|
21
|
-
# TODO Add caching
|
22
20
|
end
|
23
21
|
alias :event :get_event
|
24
22
|
|
@@ -53,7 +51,7 @@ module Xcal
|
|
53
51
|
# api.get_event_tags(2)
|
54
52
|
# api.event_tags(2)
|
55
53
|
def get_event_tags(id)
|
56
|
-
response =
|
54
|
+
response = get_response("/#{api_version}/events/#{id}/tags?#{URI.encode_www_form(access_token: access_token)}")
|
57
55
|
|
58
56
|
generic_response = Xcal::Parktronic::GenericResponse.new(response.body, self)
|
59
57
|
response.code == '200' && generic_response.has_key?(:tags) ? generic_response.tags.map(&:tag) : generic_response
|
@@ -16,7 +16,7 @@ module Xcal
|
|
16
16
|
# api.metrics(page: 2, per_page: 5)
|
17
17
|
def get_paged_metrics(args = {})
|
18
18
|
args.merge!(:access_token => access_token)
|
19
|
-
response =
|
19
|
+
response = get_response("/#{api_version}/metrics?#{URI.encode_www_form(args)}")
|
20
20
|
|
21
21
|
generic_response = Xcal::Parktronic::GenericResponse.new(response.body)
|
22
22
|
if response.code == '200'
|
@@ -24,8 +24,6 @@ module Xcal
|
|
24
24
|
else
|
25
25
|
generic_response
|
26
26
|
end
|
27
|
-
|
28
|
-
# TODO Add caching
|
29
27
|
end
|
30
28
|
alias :metrics :get_paged_metrics
|
31
29
|
|
@@ -38,42 +36,28 @@ module Xcal
|
|
38
36
|
# ==== Examples
|
39
37
|
# api.get_metric(2)
|
40
38
|
def get_metric(id)
|
41
|
-
response =
|
39
|
+
response = get_response("/#{api_version}/metrics/#{id}?access_token=#{access_token}")
|
42
40
|
|
43
41
|
generic_response = Xcal::Parktronic::GenericResponse.new(response.body)
|
44
42
|
response.code == '200' ? Xcal::Parktronic::GenericResponse.new(generic_response.metric, self) : generic_response
|
45
|
-
|
46
|
-
# TODO Add caching
|
47
43
|
end
|
48
44
|
alias :metric :get_metric
|
49
45
|
|
50
|
-
#
|
51
|
-
#
|
52
|
-
# Alarm argument should be a hash of Alarm + Events data.
|
46
|
+
# Fetches metric with specific name
|
53
47
|
#
|
54
|
-
#
|
55
|
-
#
|
56
|
-
# +metric+ :
|
57
|
-
# {
|
58
|
-
# :name => 'metric name',
|
59
|
-
# :originating_system => 'Source System',
|
60
|
-
# :impact_level => 'low',
|
61
|
-
# :tag_list => %w(taga tagb)
|
62
|
-
# }
|
63
|
-
#
|
64
|
-
# Example of events array:
|
65
|
-
# +events+ :
|
66
|
-
# [
|
67
|
-
# {
|
68
|
-
# :subject => 'EventSubj',
|
69
|
-
# :description => 'EventDesc',
|
70
|
-
# :host_impacted => 'host',
|
71
|
-
# :initiated_at => '2013-11-22T01:00:24Z',
|
72
|
-
# :service_impacted => 'EventSvc',
|
73
|
-
# :incident_status => 'CRITICAL'
|
74
|
-
# }
|
75
|
-
# ]
|
48
|
+
# ==== Parameters
|
49
|
+
# * +name+ metric name
|
76
50
|
#
|
51
|
+
# ==== Examples
|
52
|
+
# api.get_metric_by_name('Errors Summary')
|
53
|
+
def get_metric_by_name(name)
|
54
|
+
response = get_response("/#{api_version}/metrics/by_name?#{URI.encode_www_form(access_token: access_token, name: name)}")
|
55
|
+
|
56
|
+
generic_response = Xcal::Parktronic::GenericResponse.new(response.body)
|
57
|
+
response.code == '200' ? Xcal::Parktronic::GenericResponse.new(generic_response.metric, self) : generic_response
|
58
|
+
end
|
59
|
+
alias :metric_by_name :get_metric_by_name
|
60
|
+
|
77
61
|
|
78
62
|
# Posts new metric
|
79
63
|
#
|
@@ -84,11 +68,10 @@ module Xcal
|
|
84
68
|
#
|
85
69
|
# ==== Examples
|
86
70
|
# metric_params = { name: 'metric name', description: 'metric description', created_at: Time.now }
|
87
|
-
# metric_value_1 = { value: 2,
|
88
|
-
# metric_value_2 = { value: 4,
|
71
|
+
# metric_value_1 = { value: 2, custom_timestamp: (Time.now - 240)}
|
72
|
+
# metric_value_2 = { value: 4, custom_timestamp: (Time.now - 120)}
|
89
73
|
# device_error_1 = { timestamp: (Time.now() - 120), value: 5}
|
90
74
|
# api.post_metric( metric: metric_params, metric_values: [metric_value_1, metric_value_2], device_error: [device_error_1] )
|
91
|
-
# TODO check this method!
|
92
75
|
def post_metric(args = {})
|
93
76
|
request = Net::HTTP::Post.new("/#{api_version}/metrics", 'Content-Type' => 'application/json')
|
94
77
|
request.body = { access_token: access_token, metric: args[:metric], metric_values: args[:metric_values], device_errors: [args[:device_errors]] }.to_json
|
@@ -11,7 +11,7 @@ module Xcal
|
|
11
11
|
# Call example:
|
12
12
|
# alarm(3).get_alarm_actions
|
13
13
|
def get_alarm_actions
|
14
|
-
response = client.
|
14
|
+
response = client.get_response("/#{client.api_version}/alarms/#{id}/alarm_actions?#{URI.encode_www_form(access_token: client.access_token)}")
|
15
15
|
generic_response = Xcal::Parktronic::GenericResponse.new(response.body, client)
|
16
16
|
|
17
17
|
if response.code == '200' && generic_response.has_key?(:alarm_actions)
|
@@ -26,17 +26,14 @@ module Xcal
|
|
26
26
|
# Accepted attributes:
|
27
27
|
# +id+ alarm_action ID
|
28
28
|
def get_alarm_action(alarm_action_id)
|
29
|
-
response = client.
|
29
|
+
response = client.get_response("/#{client.api_version}/alarms/#{id}/alarm_actions/#{alarm_action_id}?access_token=#{client.access_token}")
|
30
30
|
generic_response = Xcal::Parktronic::GenericResponse.new(response.body, client)
|
31
31
|
|
32
32
|
if response.code == '200' && generic_response.has_key?(:alarm_action)
|
33
33
|
generic_response.alarm_action
|
34
34
|
else
|
35
|
-
#TODO think, maybe return false or nil or 'Record not found?'
|
36
35
|
generic_response
|
37
36
|
end
|
38
|
-
|
39
|
-
# TODO Add caching
|
40
37
|
end
|
41
38
|
|
42
39
|
# Posts new alarm
|
@@ -16,7 +16,7 @@ module Xcal
|
|
16
16
|
# +per_page+ per page value, defaults to 100
|
17
17
|
def get_paged_device_errors(args = {})
|
18
18
|
args.merge!(:access_token => client.access_token)
|
19
|
-
response = client.
|
19
|
+
response = client.get_response("/#{client.api_version}/metrics/#{id}/device_errors?#{URI.encode_www_form(args)}")
|
20
20
|
|
21
21
|
generic_response = Xcal::Parktronic::GenericResponse.new(response.body, client)
|
22
22
|
if response.code == '200' && generic_response.has_key?(:device_errors)
|
@@ -16,7 +16,7 @@ module Xcal
|
|
16
16
|
# +per_page+ per page value, defaults to 100
|
17
17
|
def get_paged_events(args = {})
|
18
18
|
args.merge!(:access_token => client.access_token)
|
19
|
-
response = client.
|
19
|
+
response = client.get_response("/#{client.api_version}/alarms/#{id}/events?#{URI.encode_www_form(args)}")
|
20
20
|
|
21
21
|
generic_response = Xcal::Parktronic::GenericResponse.new(response.body, client)
|
22
22
|
response.code == '200' && generic_response.has_key?(:events) ? generic_response.events.map(&:event) : generic_response
|
@@ -29,7 +29,7 @@ module Xcal
|
|
29
29
|
# Call example:
|
30
30
|
# alarm(id).get_all_events
|
31
31
|
def get_all_events
|
32
|
-
response = client.
|
32
|
+
response = client.get_response("/#{client.api_version}/alarms/#{id}/events?#{URI.encode_www_form(access_token: client.access_token)}")
|
33
33
|
|
34
34
|
generic_response = Xcal::Parktronic::GenericResponse.new(response.body, client)
|
35
35
|
response.code == '200' && generic_response.has_key?(:events) ? generic_response.events.map(&:event) : generic_response
|
@@ -16,7 +16,7 @@ module Xcal
|
|
16
16
|
# +per_page+ per page value, defaults to 100
|
17
17
|
def get_paged_metric_values(args = {})
|
18
18
|
args.merge!(:access_token => client.access_token)
|
19
|
-
response = client.
|
19
|
+
response = client.get_response("/#{client.api_version}/metrics/#{id}/metric_values?#{URI.encode_www_form(args)}")
|
20
20
|
|
21
21
|
generic_response = Xcal::Parktronic::GenericResponse.new(response.body, client)
|
22
22
|
if response.code == '200' && generic_response.has_key?(:metric_values)
|
@@ -15,7 +15,7 @@ module Xcal
|
|
15
15
|
# api.outages
|
16
16
|
def get_paged_outages(args = {})
|
17
17
|
args.merge!(access_token: access_token)
|
18
|
-
response =
|
18
|
+
response = get_response("/#{api_version}/outages?#{URI.encode_www_form(args)}")
|
19
19
|
|
20
20
|
generic_response = Xcal::Parktronic::GenericResponse.new(response.body)
|
21
21
|
if response.code == '200' && generic_response.has_key?(:high_impact_incidents)
|
@@ -23,8 +23,6 @@ module Xcal
|
|
23
23
|
else
|
24
24
|
generic_response
|
25
25
|
end
|
26
|
-
|
27
|
-
# TODO Add caching
|
28
26
|
end
|
29
27
|
alias :outages :get_paged_outages
|
30
28
|
end
|
@@ -15,10 +15,11 @@ module Xcal
|
|
15
15
|
# ==== Examples
|
16
16
|
# api.get_paged_stack_changes
|
17
17
|
# api.stack_changes(element: 'TEST', page: 1, per_page: 5)
|
18
|
-
# TODO FIX time_range param, need pass it as json
|
19
18
|
def get_paged_stack_changes(args = {})
|
20
19
|
args.merge!(access_token: access_token)
|
21
|
-
|
20
|
+
args[:time_range] = args[:time_range].to_json if args[:time_range]
|
21
|
+
|
22
|
+
response = get_response("/#{api_version}/stack_changes?#{URI.encode_www_form(args)}")
|
22
23
|
|
23
24
|
generic_response = Xcal::Parktronic::GenericResponse.new(response.body)
|
24
25
|
if response.code == '200' && generic_response.has_key?(:stack_changes)
|
@@ -26,8 +27,6 @@ module Xcal
|
|
26
27
|
else
|
27
28
|
generic_response
|
28
29
|
end
|
29
|
-
|
30
|
-
# TODO Add caching
|
31
30
|
end
|
32
31
|
alias :stack_changes :get_paged_stack_changes
|
33
32
|
|
@@ -30,6 +30,13 @@ describe Xcal::Parktronic::ApiClient do
|
|
30
30
|
|
31
31
|
expect(metric.id.to_s).to eql('7')
|
32
32
|
end
|
33
|
+
|
34
|
+
it 'should find metric by name' do
|
35
|
+
metric = nil
|
36
|
+
expect { metric = api_http_client.get_metric_by_name('Metric Name') }.not_to raise_error
|
37
|
+
|
38
|
+
expect(metric.id.to_s).to eql('7')
|
39
|
+
end
|
33
40
|
end
|
34
41
|
|
35
42
|
context 'posting' do
|
@@ -89,4 +96,4 @@ describe Xcal::Parktronic::ApiClient do
|
|
89
96
|
end
|
90
97
|
|
91
98
|
end
|
92
|
-
end
|
99
|
+
end
|
@@ -6,6 +6,7 @@ describe Xcal::Parktronic::ApiClient do
|
|
6
6
|
let(:api_invalid_client){ Xcal::Parktronic::ApiClient.new(endpoint: 'http://api.mock') }
|
7
7
|
|
8
8
|
context 'alarms route' do
|
9
|
+
|
9
10
|
describe '#get_alarm_actions' do
|
10
11
|
it 'should return alarm_actions for alarm' do
|
11
12
|
expect{ api_http_client.get_alarm(2).get_alarm_actions}.not_to raise_error
|
@@ -6,6 +6,7 @@ describe Xcal::Parktronic::ApiClient do
|
|
6
6
|
let(:api_invalid_client){ Xcal::Parktronic::ApiClient.new(endpoint: 'http://api.mock') }
|
7
7
|
|
8
8
|
context 'alarms route' do
|
9
|
+
|
9
10
|
describe '#get_all_events' do
|
10
11
|
it 'should return events for alarm' do
|
11
12
|
expect{ api_http_client.alarm(2).get_all_events }.not_to raise_error
|
data/xcal-parktronic.gemspec
CHANGED
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: xcal-parktronic
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.0.
|
4
|
+
version: 1.0.1
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Vitaliy Omelchenko
|
@@ -10,104 +10,118 @@ authors:
|
|
10
10
|
autorequire:
|
11
11
|
bindir: bin
|
12
12
|
cert_chain: []
|
13
|
-
date: 2014-
|
13
|
+
date: 2014-08-26 00:00:00.000000000 Z
|
14
14
|
dependencies:
|
15
15
|
- !ruby/object:Gem::Dependency
|
16
16
|
name: hashie
|
17
17
|
requirement: !ruby/object:Gem::Requirement
|
18
18
|
requirements:
|
19
|
-
- -
|
19
|
+
- - ">="
|
20
20
|
- !ruby/object:Gem::Version
|
21
21
|
version: '0'
|
22
22
|
type: :runtime
|
23
23
|
prerelease: false
|
24
24
|
version_requirements: !ruby/object:Gem::Requirement
|
25
25
|
requirements:
|
26
|
-
- -
|
26
|
+
- - ">="
|
27
|
+
- !ruby/object:Gem::Version
|
28
|
+
version: '0'
|
29
|
+
- !ruby/object:Gem::Dependency
|
30
|
+
name: dalli
|
31
|
+
requirement: !ruby/object:Gem::Requirement
|
32
|
+
requirements:
|
33
|
+
- - ">="
|
34
|
+
- !ruby/object:Gem::Version
|
35
|
+
version: '0'
|
36
|
+
type: :runtime
|
37
|
+
prerelease: false
|
38
|
+
version_requirements: !ruby/object:Gem::Requirement
|
39
|
+
requirements:
|
40
|
+
- - ">="
|
27
41
|
- !ruby/object:Gem::Version
|
28
42
|
version: '0'
|
29
43
|
- !ruby/object:Gem::Dependency
|
30
44
|
name: bundler
|
31
45
|
requirement: !ruby/object:Gem::Requirement
|
32
46
|
requirements:
|
33
|
-
- - ~>
|
47
|
+
- - "~>"
|
34
48
|
- !ruby/object:Gem::Version
|
35
49
|
version: '1.3'
|
36
50
|
type: :development
|
37
51
|
prerelease: false
|
38
52
|
version_requirements: !ruby/object:Gem::Requirement
|
39
53
|
requirements:
|
40
|
-
- - ~>
|
54
|
+
- - "~>"
|
41
55
|
- !ruby/object:Gem::Version
|
42
56
|
version: '1.3'
|
43
57
|
- !ruby/object:Gem::Dependency
|
44
58
|
name: rb-readline
|
45
59
|
requirement: !ruby/object:Gem::Requirement
|
46
60
|
requirements:
|
47
|
-
- -
|
61
|
+
- - ">="
|
48
62
|
- !ruby/object:Gem::Version
|
49
63
|
version: '0'
|
50
64
|
type: :development
|
51
65
|
prerelease: false
|
52
66
|
version_requirements: !ruby/object:Gem::Requirement
|
53
67
|
requirements:
|
54
|
-
- -
|
68
|
+
- - ">="
|
55
69
|
- !ruby/object:Gem::Version
|
56
70
|
version: '0'
|
57
71
|
- !ruby/object:Gem::Dependency
|
58
72
|
name: rake
|
59
73
|
requirement: !ruby/object:Gem::Requirement
|
60
74
|
requirements:
|
61
|
-
- -
|
75
|
+
- - ">="
|
62
76
|
- !ruby/object:Gem::Version
|
63
77
|
version: '0'
|
64
78
|
type: :development
|
65
79
|
prerelease: false
|
66
80
|
version_requirements: !ruby/object:Gem::Requirement
|
67
81
|
requirements:
|
68
|
-
- -
|
82
|
+
- - ">="
|
69
83
|
- !ruby/object:Gem::Version
|
70
84
|
version: '0'
|
71
85
|
- !ruby/object:Gem::Dependency
|
72
86
|
name: rspec
|
73
87
|
requirement: !ruby/object:Gem::Requirement
|
74
88
|
requirements:
|
75
|
-
- -
|
89
|
+
- - ">="
|
76
90
|
- !ruby/object:Gem::Version
|
77
91
|
version: '0'
|
78
92
|
type: :development
|
79
93
|
prerelease: false
|
80
94
|
version_requirements: !ruby/object:Gem::Requirement
|
81
95
|
requirements:
|
82
|
-
- -
|
96
|
+
- - ">="
|
83
97
|
- !ruby/object:Gem::Version
|
84
98
|
version: '0'
|
85
99
|
- !ruby/object:Gem::Dependency
|
86
100
|
name: webmock
|
87
101
|
requirement: !ruby/object:Gem::Requirement
|
88
102
|
requirements:
|
89
|
-
- -
|
103
|
+
- - ">="
|
90
104
|
- !ruby/object:Gem::Version
|
91
105
|
version: '0'
|
92
106
|
type: :development
|
93
107
|
prerelease: false
|
94
108
|
version_requirements: !ruby/object:Gem::Requirement
|
95
109
|
requirements:
|
96
|
-
- -
|
110
|
+
- - ">="
|
97
111
|
- !ruby/object:Gem::Version
|
98
112
|
version: '0'
|
99
113
|
- !ruby/object:Gem::Dependency
|
100
114
|
name: sinatra
|
101
115
|
requirement: !ruby/object:Gem::Requirement
|
102
116
|
requirements:
|
103
|
-
- -
|
117
|
+
- - ">="
|
104
118
|
- !ruby/object:Gem::Version
|
105
119
|
version: '0'
|
106
120
|
type: :development
|
107
121
|
prerelease: false
|
108
122
|
version_requirements: !ruby/object:Gem::Requirement
|
109
123
|
requirements:
|
110
|
-
- -
|
124
|
+
- - ">="
|
111
125
|
- !ruby/object:Gem::Version
|
112
126
|
version: '0'
|
113
127
|
description: OIV API gem
|
@@ -117,8 +131,8 @@ executables: []
|
|
117
131
|
extensions: []
|
118
132
|
extra_rdoc_files: []
|
119
133
|
files:
|
120
|
-
- .gitignore
|
121
|
-
- .travis.yml
|
134
|
+
- ".gitignore"
|
135
|
+
- ".travis.yml"
|
122
136
|
- Gemfile
|
123
137
|
- LICENSE.txt
|
124
138
|
- README.md
|
@@ -193,17 +207,17 @@ require_paths:
|
|
193
207
|
- lib
|
194
208
|
required_ruby_version: !ruby/object:Gem::Requirement
|
195
209
|
requirements:
|
196
|
-
- -
|
210
|
+
- - ">="
|
197
211
|
- !ruby/object:Gem::Version
|
198
212
|
version: 1.9.2
|
199
213
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
200
214
|
requirements:
|
201
|
-
- -
|
215
|
+
- - ">="
|
202
216
|
- !ruby/object:Gem::Version
|
203
217
|
version: '0'
|
204
218
|
requirements: []
|
205
219
|
rubyforge_project:
|
206
|
-
rubygems_version: 2.
|
220
|
+
rubygems_version: 2.2.2
|
207
221
|
signing_key:
|
208
222
|
specification_version: 4
|
209
223
|
summary: Get easy access to the most OIV data
|