summaryrefslogtreecommitdiff
path: root/lib/gitlab/usage/metric_definition.rb
diff options
context:
space:
mode:
Diffstat (limited to 'lib/gitlab/usage/metric_definition.rb')
-rw-r--r--lib/gitlab/usage/metric_definition.rb20
1 files changed, 13 insertions, 7 deletions
diff --git a/lib/gitlab/usage/metric_definition.rb b/lib/gitlab/usage/metric_definition.rb
index 1031f38792b..2c50678c6bf 100644
--- a/lib/gitlab/usage/metric_definition.rb
+++ b/lib/gitlab/usage/metric_definition.rb
@@ -4,9 +4,9 @@ module Gitlab
module Usage
class MetricDefinition
METRIC_SCHEMA_PATH = Rails.root.join('config', 'metrics', 'schema.json')
- BASE_REPO_PATH = 'https://gitlab.com/gitlab-org/gitlab/-/blob/master'
SKIP_VALIDATION_STATUSES = %w[deprecated removed].to_set.freeze
- AVAILABLE_STATUSES = %w[active data_available implemented deprecated].freeze
+ AVAILABLE_STATUSES = %w[active data_available implemented deprecated].to_set.freeze
+ VALID_SERVICE_PING_STATUSES = %w[active data_available implemented deprecated broken].to_set.freeze
InvalidError = Class.new(RuntimeError)
@@ -26,20 +26,22 @@ module Gitlab
attributes
end
+ def json_schema
+ return unless has_json_schema?
+
+ @json_schema ||= Gitlab::Json.parse(File.read(json_schema_path))
+ end
+
def json_schema_path
return '' unless has_json_schema?
- "#{BASE_REPO_PATH}/#{attributes[:value_json_schema]}"
+ Rails.root.join(attributes[:value_json_schema])
end
def has_json_schema?
attributes[:value_type] == 'object' && attributes[:value_json_schema].present?
end
- def yaml_path
- "#{BASE_REPO_PATH}#{path.delete_prefix(Rails.root.to_s)}"
- end
-
def validate!
unless skip_validation?
self.class.schemer.validate(attributes.stringify_keys).each do |error|
@@ -64,6 +66,10 @@ module Gitlab
AVAILABLE_STATUSES.include?(attributes[:status])
end
+ def valid_service_ping_status?
+ VALID_SERVICE_PING_STATUSES.include?(attributes[:status])
+ end
+
alias_method :to_dictionary, :to_h
class << self