summaryrefslogtreecommitdiff
path: root/app/models/environment_status.rb
diff options
context:
space:
mode:
Diffstat (limited to 'app/models/environment_status.rb')
-rw-r--r--app/models/environment_status.rb18
1 files changed, 14 insertions, 4 deletions
diff --git a/app/models/environment_status.rb b/app/models/environment_status.rb
index 2fb6cadc8cd..465a42759df 100644
--- a/app/models/environment_status.rb
+++ b/app/models/environment_status.rb
@@ -3,11 +3,10 @@
class EnvironmentStatus
include Gitlab::Utils::StrongMemoize
- attr_reader :environment, :merge_request, :sha
+ attr_reader :project, :environment, :merge_request, :sha
delegate :id, to: :environment
delegate :name, to: :environment
- delegate :project, to: :environment
delegate :status, to: :deployment, allow_nil: true
delegate :deployed_at, to: :deployment, allow_nil: true
@@ -21,7 +20,8 @@ class EnvironmentStatus
build_environments_status(mr, user, mr.merge_pipeline)
end
- def initialize(environment, merge_request, sha)
+ def initialize(project, environment, merge_request, sha)
+ @project = project
@environment = environment
@merge_request = merge_request
@sha = sha
@@ -33,6 +33,12 @@ class EnvironmentStatus
end
end
+ def has_metrics?
+ strong_memoize(:has_metrics) do
+ deployment_metrics.has_metrics?
+ end
+ end
+
def changes
return [] if project.route_map_for(sha).nil?
@@ -48,6 +54,10 @@ class EnvironmentStatus
PAGE_EXTENSIONS = /\A\.(s?html?|php|asp|cgi|pl)\z/i.freeze
+ def deployment_metrics
+ @deployment_metrics ||= DeploymentMetrics.new(project, deployment)
+ end
+
def build_change(file)
public_path = project.public_path_for_source_path(file.new_path, sha)
return if public_path.nil?
@@ -67,7 +77,7 @@ class EnvironmentStatus
pipeline.environments.available.map do |environment|
next unless Ability.allowed?(user, :read_environment, environment)
- EnvironmentStatus.new(environment, mr, pipeline.sha)
+ EnvironmentStatus.new(pipeline.project, environment, mr, pipeline.sha)
end.compact
end
private_class_method :build_environments_status