Class: Ci::Runners::AssignRunnerService

Inherits:
Object
  • Object
show all
Defined in:
app/services/ci/runners/assign_runner_service.rb

Overview

Service used to assign a runner to a project. This class can be reused by SetRunnerAssociatedProjectsService in the context of a bulk assignment.

Instance Method Summary collapse

Constructor Details

#initialize(runner, project, user, quiet: false) ⇒ AssignRunnerService

Returns a new instance of AssignRunnerService.

Parameters:

  • runner: (Ci::Runner)

    the runner to assign to a project

  • project: (Project)

    the new project to assign the runner to

  • user: (User)

    the user performing the operation

  • quiet: (Boolean) (defaults to: false)

    true if service should avoid side effects, such as logging (e.g. when used by another service)



13
14
15
16
17
18
# File 'app/services/ci/runners/assign_runner_service.rb', line 13

def initialize(runner, project, user, quiet: false)
  @runner = runner
  @project = project
  @user = user
  @quiet = quiet
end

Instance Method Details

#executeObject



20
21
22
23
24
25
26
27
28
29
30
31
# File 'app/services/ci/runners/assign_runner_service.rb', line 20

def execute
  response = validate
  return response if response.error?

  if @runner.assign_to(@project, @user)
    ServiceResponse.success
  else
    ServiceResponse.error(
      message: @runner.errors[:assign_to] || _('failed to assign runner to project'),
      reason: :runner_error)
  end
end