Class: Ci::Runners::AssignRunnerService

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

Instance Method Summary collapse

Constructor Details

#initialize(runner, project, user) ⇒ 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



9
10
11
12
13
# File 'app/services/ci/runners/assign_runner_service.rb', line 9

def initialize(runner, project, user)
  @runner = runner
  @project = project
  @user = user
end

Instance Method Details

#executeObject



15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
# File 'app/services/ci/runners/assign_runner_service.rb', line 15

def execute
  unless @user.present? && @user.can?(:assign_runner, @runner)
    return ServiceResponse.error(message: 'user not allowed to assign runner', http_status: :forbidden)
  end

  unless @user.can?(:register_project_runners, @project)
    return ServiceResponse.error(message: 'user not allowed to add runners to project', http_status: :forbidden)
  end

  if @runner.assign_to(@project, @user)
    ServiceResponse.success
  else
    ServiceResponse.error(message: 'failed to assign runner')
  end
end