runner_namespace.rb 846 Bytes
Newer Older
1 2
# frozen_string_literal: true

3
module Ci
4
  class RunnerNamespace < ApplicationRecord
5
    extend Gitlab::Ci::Model
6 7 8 9
    include Limitable

    self.limit_name = 'ci_registered_group_runners'
    self.limit_scope = :group
10
    self.limit_relation = :recent_runners
11
    self.limit_feature_flag = :ci_runner_limits
12

13
    belongs_to :runner, inverse_of: :runner_namespaces
14
    belongs_to :namespace, inverse_of: :runner_namespaces, class_name: '::Namespace'
15
    belongs_to :group, class_name: '::Group', foreign_key: :namespace_id
16 17

    validates :runner_id, uniqueness: { scope: :namespace_id }
18 19
    validate :group_runner_type

20 21 22 23
    def recent_runners
      ::Ci::Runner.belonging_to_group(namespace_id).recent
    end

24 25 26 27 28
    private

    def group_runner_type
      errors.add(:runner, 'is not a group runner') unless runner&.group_type?
    end
29 30
  end
end