Class: Environments::StopService

Inherits:
BaseService show all
Defined in:
app/services/environments/stop_service.rb

Instance Attribute Summary collapse

Attributes inherited from BaseService

#current_user, #params, #project

Instance Method Summary collapse

Methods inherited from BaseService

#initialize

Methods included from BaseServiceUtility

#deny_visibility_level, #event_service, #log_error, #log_info, #notification_service, #system_hook_service, #todo_service, #visibility_level

Methods included from Gitlab::Allowable

#can?

Constructor Details

This class inherits a constructor from BaseService

Instance Attribute Details

#refObject (readonly)

Returns the value of attribute ref.


5
6
7
# File 'app/services/environments/stop_service.rb', line 5

def ref
  @ref
end

Instance Method Details

#execute(environment) ⇒ Object


7
8
9
10
11
# File 'app/services/environments/stop_service.rb', line 7

def execute(environment)
  return unless can?(current_user, :stop_environment, environment)

  environment.stop_with_actions!(current_user)
end

#execute_for_branch(branch_name) ⇒ Object


13
14
15
16
17
18
19
# File 'app/services/environments/stop_service.rb', line 13

def execute_for_branch(branch_name)
  @ref = branch_name

  return unless @ref.present?

  environments.each { |environment| execute(environment) }
end

#execute_for_merge_request_pipeline(merge_request) ⇒ Object


21
22
23
24
25
26
27
28
29
# File 'app/services/environments/stop_service.rb', line 21

def execute_for_merge_request_pipeline(merge_request)
  if ::Feature.enabled?(:fix_related_environments_for_merge_requests, merge_request.target_project)
    return unless merge_request.actual_head_pipeline&.merge_request?
  end

  merge_request.environments_in_head_pipeline(deployment_status: :success).each do |environment|
    execute(environment)
  end
end