40 lines
684 B
Ruby
40 lines
684 B
Ruby
# frozen_string_literal: true
|
|
|
|
class Namespace::RootStorageSize
|
|
ALERT_USAGE_THRESHOLD = 0.5
|
|
|
|
def initialize(root_namespace)
|
|
@root_namespace = root_namespace
|
|
end
|
|
|
|
def above_size_limit?
|
|
return false if limit == 0
|
|
|
|
usage_ratio > 1
|
|
end
|
|
|
|
def usage_ratio
|
|
return 0 if limit == 0
|
|
|
|
current_size.to_f / limit.to_f
|
|
end
|
|
|
|
def current_size
|
|
@current_size ||= root_namespace.root_storage_statistics&.storage_size
|
|
end
|
|
|
|
def limit
|
|
@limit ||= Gitlab::CurrentSettings.namespace_storage_size_limit.megabytes
|
|
end
|
|
|
|
def show_alert?
|
|
return false if limit == 0
|
|
|
|
usage_ratio >= ALERT_USAGE_THRESHOLD
|
|
end
|
|
|
|
private
|
|
|
|
attr_reader :root_namespace
|
|
end
|