summaryrefslogtreecommitdiff
path: root/lib/gitlab/ci/limit.rb
diff options
context:
space:
mode:
Diffstat (limited to 'lib/gitlab/ci/limit.rb')
-rw-r--r--lib/gitlab/ci/limit.rb34
1 files changed, 34 insertions, 0 deletions
diff --git a/lib/gitlab/ci/limit.rb b/lib/gitlab/ci/limit.rb
new file mode 100644
index 00000000000..c22a3c503d5
--- /dev/null
+++ b/lib/gitlab/ci/limit.rb
@@ -0,0 +1,34 @@
+# frozen_string_literal: true
+
+module Gitlab
+ module Ci
+ ##
+ # Abstract base class for CI/CD Quotas
+ #
+ class Limit
+ LimitExceededError = Class.new(StandardError)
+
+ def initialize(_context, _resource)
+ end
+
+ def enabled?
+ raise NotImplementedError
+ end
+
+ def exceeded?
+ raise NotImplementedError
+ end
+
+ def message
+ raise NotImplementedError
+ end
+
+ def log_error!(extra_context = {})
+ error = LimitExceededError.new(message)
+ # TODO: change this to Gitlab::ErrorTracking.log_exception(error, extra_context)
+ # https://gitlab.com/gitlab-org/gitlab/issues/32906
+ ::Gitlab::ErrorTracking.track_exception(error, extra_context)
+ end
+ end
+ end
+end