summaryrefslogtreecommitdiff
path: root/app/models/metrics
diff options
context:
space:
mode:
authorGitLab Bot <gitlab-bot@gitlab.com>2020-04-07 18:09:19 +0000
committerGitLab Bot <gitlab-bot@gitlab.com>2020-04-07 18:09:19 +0000
commit3290d46655f07d7ae3dca788d6df9f326972ffd8 (patch)
tree0d24713e1592cdd3583257f14a52d46a22539ed1 /app/models/metrics
parentc6b3ec3f56fa32a0e0ed3de0d0878d25f1adaddf (diff)
downloadgitlab-ce-3290d46655f07d7ae3dca788d6df9f326972ffd8.tar.gz
Add latest changes from gitlab-org/gitlab@master
Diffstat (limited to 'app/models/metrics')
-rw-r--r--app/models/metrics/dashboard/annotation.rb33
1 files changed, 33 insertions, 0 deletions
diff --git a/app/models/metrics/dashboard/annotation.rb b/app/models/metrics/dashboard/annotation.rb
new file mode 100644
index 00000000000..2f1b6527742
--- /dev/null
+++ b/app/models/metrics/dashboard/annotation.rb
@@ -0,0 +1,33 @@
+# frozen_string_literal: true
+
+module Metrics
+ module Dashboard
+ class Annotation < ApplicationRecord
+ self.table_name = 'metrics_dashboard_annotations'
+
+ belongs_to :environment, inverse_of: :metrics_dashboard_annotations
+ belongs_to :cluster, class_name: 'Clusters::Cluster', inverse_of: :metrics_dashboard_annotations
+
+ validates :starting_at, presence: true
+ validates :description, presence: true, length: { maximum: 255 }
+ validates :dashboard_path, presence: true, length: { maximum: 255 }
+ validates :panel_xid, length: { maximum: 255 }
+ validate :single_ownership
+ validate :orphaned_annotation
+
+ private
+
+ def single_ownership
+ return if cluster.nil? ^ environment.nil?
+
+ errors.add(:base, s_("Metrics::Dashboard::Annotation|Annotation can't belong to both a cluster and an environment at the same time"))
+ end
+
+ def orphaned_annotation
+ return if cluster.present? || environment.present?
+
+ errors.add(:base, s_("Metrics::Dashboard::Annotation|Annotation must belong to a cluster or an environment"))
+ end
+ end
+ end
+end