diff options
Diffstat (limited to 'app/services/prometheus/proxy_variable_substitution_service.rb')
-rw-r--r-- | app/services/prometheus/proxy_variable_substitution_service.rb | 24 |
1 files changed, 19 insertions, 5 deletions
diff --git a/app/services/prometheus/proxy_variable_substitution_service.rb b/app/services/prometheus/proxy_variable_substitution_service.rb index 7b98cfc592a..10fb3a8c1b5 100644 --- a/app/services/prometheus/proxy_variable_substitution_service.rb +++ b/app/services/prometheus/proxy_variable_substitution_service.rb @@ -58,7 +58,7 @@ module Prometheus def substitute_variables(result) return success(result) unless query(result) - result[:params][:query] = gsub(query(result), full_context) + result[:params][:query] = gsub(query(result), full_context(result)) success(result) end @@ -75,12 +75,16 @@ module Prometheus end end - def predefined_context - Gitlab::Prometheus::QueryVariables.call(@environment).stringify_keys + def predefined_context(result) + Gitlab::Prometheus::QueryVariables.call( + @environment, + start_time: start_timestamp(result), + end_time: end_timestamp(result) + ).stringify_keys end - def full_context - @full_context ||= predefined_context.reverse_merge(variables_hash) + def full_context(result) + @full_context ||= predefined_context(result).reverse_merge(variables_hash) end def variables @@ -91,6 +95,16 @@ module Prometheus variables.to_h end + def start_timestamp(result) + Time.rfc3339(result[:params][:start]) + rescue ArgumentError + end + + def end_timestamp(result) + Time.rfc3339(result[:params][:end]) + rescue ArgumentError + end + def query(result) result[:params][:query] end |