kennel 1.7.0 → 1.7.1
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/lib/kennel/file_cache.rb +30 -13
- data/lib/kennel/models/dash.rb +1 -4
- data/lib/kennel/syncer.rb +3 -4
- data/lib/kennel/version.rb +1 -1
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 3e43bf6c13b6d2a685fcf95514d82c81e1098d6db77935acea0da93e84f254a5
|
4
|
+
data.tar.gz: f9e811a29df09405227c4ba1a86817bb61c5af1a8034e3da8cc25765af7be4b0
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 12f4c9c346e439140cd7a13a0c3706c537f381096c0f0a0df2b7d9ed9616c63f9382d2b76a8e929f98998396d1b3430c615e211696860d6424122d3f36ba9a81
|
7
|
+
data.tar.gz: 5e2e46c85246c3f3c35721e76a2005a7d8e6f3cd195688e181a80972713318f0ffb01125741a94d38985252b5112609eb5d4e289b2dea52ca8070ab2d41b6558
|
data/lib/kennel/file_cache.rb
CHANGED
@@ -1,35 +1,52 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
|
3
3
|
# cache that reads everything from a single file
|
4
|
-
# to avoid doing multiple disk reads while
|
4
|
+
# to avoid doing multiple disk reads while iterating all definitions
|
5
5
|
# it also replaces updated keys and has an overall expiry to not keep deleted things forever
|
6
6
|
module Kennel
|
7
7
|
class FileCache
|
8
|
-
def initialize(file)
|
8
|
+
def initialize(file, cache_version)
|
9
9
|
@file = file
|
10
|
-
@
|
11
|
-
begin
|
12
|
-
Marshal.load(File.read(@file)) # rubocop:disable Security/MarshalLoad
|
13
|
-
rescue StandardError
|
14
|
-
{}
|
15
|
-
end
|
10
|
+
@cache_version = cache_version
|
16
11
|
@now = Time.now.to_i
|
17
12
|
@expires = @now + (30 * 24 * 60 * 60) # 1 month
|
18
|
-
@data.reject! { |_, (_, _, ex)| ex < @now } # expire old data
|
19
13
|
end
|
20
14
|
|
21
|
-
def
|
15
|
+
def open
|
16
|
+
load_data
|
17
|
+
expire_old_data
|
18
|
+
yield self
|
19
|
+
ensure
|
20
|
+
persist
|
21
|
+
end
|
22
|
+
|
23
|
+
def fetch(key, key_version)
|
22
24
|
old_value, old_version = @data[key]
|
23
|
-
return old_value if old_version ==
|
25
|
+
return old_value if old_version == [key_version, @cache_version]
|
24
26
|
|
25
27
|
new_value = yield
|
26
|
-
@data[key] = [new_value,
|
28
|
+
@data[key] = [new_value, [key_version, @cache_version], @expires]
|
27
29
|
new_value
|
28
30
|
end
|
29
31
|
|
32
|
+
private
|
33
|
+
|
34
|
+
def load_data
|
35
|
+
@data = begin
|
36
|
+
Marshal.load(File.read(@file)) # rubocop:disable Security/MarshalLoad
|
37
|
+
rescue StandardError
|
38
|
+
{}
|
39
|
+
end
|
40
|
+
end
|
41
|
+
|
30
42
|
def persist
|
31
|
-
|
43
|
+
dir = File.dirname(@file)
|
44
|
+
FileUtils.mkdir_p(dir) unless File.directory?(dir)
|
32
45
|
File.write(@file, Marshal.dump(@data))
|
33
46
|
end
|
47
|
+
|
48
|
+
def expire_old_data
|
49
|
+
@data.reject! { |_, (_, _, ex)| ex < @now }
|
50
|
+
end
|
34
51
|
end
|
35
52
|
end
|
data/lib/kennel/models/dash.rb
CHANGED
@@ -51,10 +51,7 @@ module Kennel
|
|
51
51
|
actual[:graphs].each do |g|
|
52
52
|
g[:definition].delete(:status)
|
53
53
|
end
|
54
|
-
|
55
|
-
# NOTE: we might not trigger an update since the api never returns aggregator ... maybe datadog fixes their api
|
56
|
-
# as temporary workaround change something else about the dash to force an update
|
57
|
-
Utils.presence(super&.reject { |op, key| op == "+" && key.end_with?(".aggregator") })
|
54
|
+
super
|
58
55
|
end
|
59
56
|
|
60
57
|
def url(id)
|
data/lib/kennel/syncer.rb
CHANGED
@@ -93,10 +93,9 @@ module Kennel
|
|
93
93
|
result[api_resource.to_sym] || result
|
94
94
|
end
|
95
95
|
|
96
|
-
def details_cache
|
97
|
-
cache = FileCache.new CACHE_FILE
|
98
|
-
|
99
|
-
cache.persist
|
96
|
+
def details_cache(&block)
|
97
|
+
cache = FileCache.new CACHE_FILE, Kennel::VERSION
|
98
|
+
cache.open(&block)
|
100
99
|
end
|
101
100
|
|
102
101
|
def download_definitions
|
data/lib/kennel/version.rb
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: kennel
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.7.
|
4
|
+
version: 1.7.1
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Michael Grosser
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2018-06-
|
11
|
+
date: 2018-06-14 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: faraday
|