Class: EnvironmentStatus
- Inherits:
-
Object
- Object
- EnvironmentStatus
- Includes:
- Gitlab::Utils::StrongMemoize
- Defined in:
- app/models/environment_status.rb
Instance Attribute Summary collapse
-
#environment ⇒ Object
readonly
Returns the value of attribute environment.
-
#merge_request ⇒ Object
readonly
Returns the value of attribute merge_request.
-
#project ⇒ Object
readonly
Returns the value of attribute project.
-
#sha ⇒ Object
readonly
Returns the value of attribute sha.
Class Method Summary collapse
- .after_merge_request(mr, user) ⇒ Object
- .for_deployed_merge_request(mr, user) ⇒ Object
- .for_merge_request(mr, user) ⇒ Object
Instance Method Summary collapse
- #changed_files ⇒ Object
- #changes ⇒ Object
- #deployment ⇒ Object
- #has_metrics? ⇒ Boolean
- #has_route_map? ⇒ Boolean
-
#initialize(project, environment, merge_request, sha) ⇒ EnvironmentStatus
constructor
A new instance of EnvironmentStatus.
Constructor Details
#initialize(project, environment, merge_request, sha) ⇒ EnvironmentStatus
Returns a new instance of EnvironmentStatus.
46 47 48 49 50 51 |
# File 'app/models/environment_status.rb', line 46 def initialize(project, environment, merge_request, sha) @project = project @environment = environment @merge_request = merge_request @sha = sha end |
Instance Attribute Details
#environment ⇒ Object (readonly)
Returns the value of attribute environment.
6 7 8 |
# File 'app/models/environment_status.rb', line 6 def environment @environment end |
#merge_request ⇒ Object (readonly)
Returns the value of attribute merge_request.
6 7 8 |
# File 'app/models/environment_status.rb', line 6 def merge_request @merge_request end |
#project ⇒ Object (readonly)
Returns the value of attribute project.
6 7 8 |
# File 'app/models/environment_status.rb', line 6 def project @project end |
#sha ⇒ Object (readonly)
Returns the value of attribute sha.
6 7 8 |
# File 'app/models/environment_status.rb', line 6 def sha @sha end |
Class Method Details
.after_merge_request(mr, user) ⇒ Object
18 19 20 21 22 |
# File 'app/models/environment_status.rb', line 18 def self.after_merge_request(mr, user) return [] unless mr.merged? build_environments_status(mr, user, mr.merge_pipeline) end |
.for_deployed_merge_request(mr, user) ⇒ Object
24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 |
# File 'app/models/environment_status.rb', line 24 def self.for_deployed_merge_request(mr, user) statuses = [] mr.recent_visible_deployments.each do |deploy| env = deploy.environment next unless Ability.allowed?(user, :read_environment, env) statuses << EnvironmentStatus.new(deploy.project, env, mr, deploy.sha) end # Existing projects that used deployments prior to the introduction of # explicitly linked merge requests won't have any data using this new # approach, so we fall back to retrieving deployments based on CI pipelines. if statuses.any? statuses else after_merge_request(mr, user) end end |
.for_merge_request(mr, user) ⇒ Object
14 15 16 |
# File 'app/models/environment_status.rb', line 14 def self.for_merge_request(mr, user) build_environments_status(mr, user, mr.actual_head_pipeline) end |
Instance Method Details
#changed_files ⇒ Object
71 72 73 74 |
# File 'app/models/environment_status.rb', line 71 def changed_files merge_request.merge_request_diff .merge_request_diff_files.where(deleted_file: false) end |
#changes ⇒ Object
65 66 67 68 69 |
# File 'app/models/environment_status.rb', line 65 def changes strong_memoize(:changes) do has_route_map? ? changed_files.map { |file| build_change(file) }.compact : [] end end |
#deployment ⇒ Object
53 54 55 56 57 |
# File 'app/models/environment_status.rb', line 53 def deployment strong_memoize(:deployment) do Deployment.where(environment: environment).ordered.find_by_sha(sha) end end |
#has_metrics? ⇒ Boolean
59 60 61 62 63 |
# File 'app/models/environment_status.rb', line 59 def has_metrics? strong_memoize(:has_metrics) do deployment_metrics.has_metrics? end end |
#has_route_map? ⇒ Boolean
76 77 78 |
# File 'app/models/environment_status.rb', line 76 def has_route_map? project.route_map_for(sha).present? end |