etna 0.1.36 → 0.1.37
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/lib/etna.rb +1 -0
- data/lib/etna/application.rb +18 -0
- data/lib/etna/directed_graph.rb +6 -1
- data/lib/etna/metrics.rb +26 -0
- data/lib/etna/route.rb +4 -1
- data/lib/etna/server.rb +5 -0
- metadata +3 -2
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA256:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: 484c950fffbafcf5132df923bc0ef88a79faa6c285ccde653805aac526e4a97e
|
|
4
|
+
data.tar.gz: f513b75b048e816acc494c09cb0eccbc2c38cda02c2723266fe7bd98c8595f3a
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: 6ad0e99925dc6110c8f80f4a1e1417d610b28838497f09afe8be1c69a65fec95a7d549af987aaccde2b42480347bf336838be5398ef580d3024476206b4d611d
|
|
7
|
+
data.tar.gz: 44eb05596c635e7ab96df7971fed6b24bfee7bd545238e173e3d1b57bdcfe7b30db5deea355d2711b192d026d8fb72afc32cbcbcf4a83ef92848184433b7a813
|
data/lib/etna.rb
CHANGED
data/lib/etna/application.rb
CHANGED
|
@@ -8,6 +8,7 @@ require_relative './command'
|
|
|
8
8
|
require_relative './generate_autocompletion_script'
|
|
9
9
|
require 'singleton'
|
|
10
10
|
require 'rollbar'
|
|
11
|
+
require 'fileutils'
|
|
11
12
|
|
|
12
13
|
module Etna::Application
|
|
13
14
|
def self.included(other)
|
|
@@ -59,6 +60,23 @@ module Etna::Application
|
|
|
59
60
|
end
|
|
60
61
|
end
|
|
61
62
|
|
|
63
|
+
def setup_yabeda
|
|
64
|
+
Yabeda.configure!
|
|
65
|
+
end
|
|
66
|
+
|
|
67
|
+
def write_job_metrics(name)
|
|
68
|
+
node_metrics_dir = config(:node_metrics_dir) || "/tmp/metrics.prom"
|
|
69
|
+
::FileUtils.mkdir_p(node_metrics_dir)
|
|
70
|
+
|
|
71
|
+
tmp_file = ::File.join(node_metrics_dir, "#{name}.prom.$$")
|
|
72
|
+
::File.open(tmp_file, "w") do |f|
|
|
73
|
+
f.write(Prometheus::Client::Formats::Text.marshal(Prometheus::Client.registry))
|
|
74
|
+
end
|
|
75
|
+
|
|
76
|
+
require 'fileutils'
|
|
77
|
+
::FileUtils.mv(tmp_file, ::File.join(node_metrics_dir, "#{name}.prom"))
|
|
78
|
+
end
|
|
79
|
+
|
|
62
80
|
def setup_logger
|
|
63
81
|
@logger = Etna::Logger.new(
|
|
64
82
|
# The name of the log_file, required.
|
data/lib/etna/directed_graph.rb
CHANGED
|
@@ -52,7 +52,12 @@ class DirectedGraph
|
|
|
52
52
|
result[grandparent] << child_node if result.include?(grandparent)
|
|
53
53
|
end
|
|
54
54
|
|
|
55
|
-
|
|
55
|
+
# Depending on the graph shape, diamonds could lead to
|
|
56
|
+
# resetting of previously calculated dependencies.
|
|
57
|
+
# Here we avoid resetting existing entries in `result`
|
|
58
|
+
# and instead concatenate them if they already exist.
|
|
59
|
+
result[child_node] = [] unless result.include?(child_node)
|
|
60
|
+
result[n].concat(result[child_node]) if result.include?(child_node) && result.include?(n)
|
|
56
61
|
end
|
|
57
62
|
end
|
|
58
63
|
|
data/lib/etna/metrics.rb
ADDED
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
|
|
2
|
+
module Etna
|
|
3
|
+
class MetricsExporter
|
|
4
|
+
def initialize(app, path: '/metrics')
|
|
5
|
+
@app = app
|
|
6
|
+
@path = path
|
|
7
|
+
end
|
|
8
|
+
|
|
9
|
+
def exporter
|
|
10
|
+
@exporter ||= begin
|
|
11
|
+
exporter = Yabeda::Prometheus::Exporter.new(@app, path: @path)
|
|
12
|
+
Rack::Auth::Basic.new(exporter) do |user, pw|
|
|
13
|
+
user == 'prometheus' && pw == ENV['METRICS_PW']
|
|
14
|
+
end
|
|
15
|
+
end
|
|
16
|
+
end
|
|
17
|
+
|
|
18
|
+
def call(env)
|
|
19
|
+
if env['PATH_INFO'] == @path
|
|
20
|
+
exporter.call(env)
|
|
21
|
+
else
|
|
22
|
+
@app.call(env)
|
|
23
|
+
end
|
|
24
|
+
end
|
|
25
|
+
end
|
|
26
|
+
end
|
data/lib/etna/route.rb
CHANGED
|
@@ -148,7 +148,10 @@ module Etna
|
|
|
148
148
|
params = request.env['rack.request.params']
|
|
149
149
|
|
|
150
150
|
@auth[:user].all? do |constraint, param_name|
|
|
151
|
-
user.respond_to?(constraint) &&
|
|
151
|
+
user.respond_to?(constraint) && (
|
|
152
|
+
param_name.is_a?(Symbol) ?
|
|
153
|
+
user.send(constraint, params[param_name]) :
|
|
154
|
+
user.send(constraint, param_name))
|
|
152
155
|
end
|
|
153
156
|
end
|
|
154
157
|
|
data/lib/etna/server.rb
CHANGED
|
@@ -74,6 +74,11 @@ module Etna
|
|
|
74
74
|
def initialize
|
|
75
75
|
# Setup logging.
|
|
76
76
|
application.setup_logger
|
|
77
|
+
|
|
78
|
+
# This needs to be required before yabeda invocation, but cannot belong at the top of any module since clients
|
|
79
|
+
# do not install yabeda.
|
|
80
|
+
require 'yabeda'
|
|
81
|
+
application.setup_yabeda
|
|
77
82
|
end
|
|
78
83
|
|
|
79
84
|
private
|
metadata
CHANGED
|
@@ -1,14 +1,14 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: etna
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version: 0.1.
|
|
4
|
+
version: 0.1.37
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- Saurabh Asthana
|
|
8
8
|
autorequire:
|
|
9
9
|
bindir: bin
|
|
10
10
|
cert_chain: []
|
|
11
|
-
date: 2021-05-
|
|
11
|
+
date: 2021-05-27 00:00:00.000000000 Z
|
|
12
12
|
dependencies:
|
|
13
13
|
- !ruby/object:Gem::Dependency
|
|
14
14
|
name: rack
|
|
@@ -168,6 +168,7 @@ files:
|
|
|
168
168
|
- lib/etna/hmac.rb
|
|
169
169
|
- lib/etna/json_serializable_struct.rb
|
|
170
170
|
- lib/etna/logger.rb
|
|
171
|
+
- lib/etna/metrics.rb
|
|
171
172
|
- lib/etna/multipart_serializable_nested_hash.rb
|
|
172
173
|
- lib/etna/parse_body.rb
|
|
173
174
|
- lib/etna/route.rb
|