summaryrefslogtreecommitdiff
path: root/app/models/ci/runner.rb
diff options
context:
space:
mode:
Diffstat (limited to 'app/models/ci/runner.rb')
-rw-r--r--app/models/ci/runner.rb23
1 files changed, 7 insertions, 16 deletions
diff --git a/app/models/ci/runner.rb b/app/models/ci/runner.rb
index a7f3ff938c3..bac85b6095e 100644
--- a/app/models/ci/runner.rb
+++ b/app/models/ci/runner.rb
@@ -13,6 +13,7 @@ module Ci
include TaggableQueries
include Presentable
include EachBatch
+ include Ci::HasRunnerExecutor
add_authentication_token_field :token, encrypted: :optional, expires_at: :compute_token_expiration
@@ -27,21 +28,6 @@ module Ci
project_type: 3
}
- enum executor_type: {
- unknown: 0,
- custom: 1,
- shell: 2,
- docker: 3,
- docker_windows: 4,
- docker_ssh: 5,
- ssh: 6,
- parallels: 7,
- virtualbox: 8,
- docker_machine: 9,
- docker_ssh_machine: 10,
- kubernetes: 11
- }, _suffix: true
-
# This `ONLINE_CONTACT_TIMEOUT` needs to be larger than
# `RUNNER_QUEUE_EXPIRY_TIME+UPDATE_CONTACT_COLUMN_EVERY`
#
@@ -68,6 +54,7 @@ module Ci
TAG_LIST_MAX_LENGTH = 50
+ has_many :runner_machines, inverse_of: :runner
has_many :builds
has_many :runner_projects, inverse_of: :runner, autosave: true, dependent: :destroy # rubocop:disable Cop/ActiveRecordDependent
has_many :projects, through: :runner_projects, disable_joins: true
@@ -77,6 +64,8 @@ module Ci
has_one :last_build, -> { order('id DESC') }, class_name: 'Ci::Build'
has_one :runner_version, primary_key: :version, foreign_key: :version, class_name: 'Ci::RunnerVersion'
+ belongs_to :creator, class_name: 'User', optional: true
+
before_save :ensure_token
scope :active, -> (value = true) { where(active: value) }
@@ -440,7 +429,9 @@ module Ci
::Gitlab::Database::LoadBalancing::Session.without_sticky_writes do
values = values&.slice(:version, :revision, :platform, :architecture, :ip_address, :config, :executor) || {}
values[:contacted_at] = Time.current
- values[:executor_type] = EXECUTOR_NAME_TO_TYPES.fetch(values.delete(:executor), :unknown)
+ if values.include?(:executor)
+ values[:executor_type] = EXECUTOR_NAME_TO_TYPES.fetch(values.delete(:executor), :unknown)
+ end
cache_attributes(values)