Class: Gitlab::RepositorySizeChecker

Inherits:
Object
  • Object
show all
Defined in:
lib/gitlab/repository_size_checker.rb

Overview

Centralized class for repository size related calculations.

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(current_size_proc:, limit:, namespace:, enabled: true) ⇒ RepositorySizeChecker

Returns a new instance of RepositorySizeChecker.

Parameters:

  • current_size_proc (Proc)

    returns repository size in bytes



9
10
11
12
13
14
# File 'lib/gitlab/repository_size_checker.rb', line 9

def initialize(current_size_proc:, limit:, namespace:, enabled: true)
  @current_size_proc = current_size_proc
  @limit = limit
  @namespace = namespace
  @enabled = enabled && limit != 0
end

Instance Attribute Details

#limitObject (readonly)

Returns the value of attribute limit.



6
7
8
# File 'lib/gitlab/repository_size_checker.rb', line 6

def limit
  @limit
end

Instance Method Details

#above_size_limit?Boolean

Returns:

  • (Boolean)


25
26
27
28
29
# File 'lib/gitlab/repository_size_checker.rb', line 25

def above_size_limit?
  return false unless enabled?

  current_size > limit
end

#additional_repo_storage_available?Boolean

Returns:

  • (Boolean)


49
50
51
# File 'lib/gitlab/repository_size_checker.rb', line 49

def additional_repo_storage_available?
  false
end

#changes_will_exceed_size_limit?(change_size, _project) ⇒ Boolean

Parameters:

  • change_size (int)

    in bytes

Returns:

  • (Boolean)


32
33
34
35
36
# File 'lib/gitlab/repository_size_checker.rb', line 32

def changes_will_exceed_size_limit?(change_size, _project)
  return false unless enabled?

  above_size_limit? || exceeded_size(change_size) > 0
end

#current_sizeInteger

Returns bytes.

Returns:

  • (Integer)

    bytes



17
18
19
# File 'lib/gitlab/repository_size_checker.rb', line 17

def current_size
  @current_size ||= @current_size_proc.call
end

#enabled?Boolean

Returns:

  • (Boolean)


21
22
23
# File 'lib/gitlab/repository_size_checker.rb', line 21

def enabled?
  @enabled
end

#error_messageObject



45
46
47
# File 'lib/gitlab/repository_size_checker.rb', line 45

def error_message
  @error_message_object ||= ::Gitlab::RepositorySizeErrorMessage.new(self)
end

#exceeded_size(change_size = 0) ⇒ Object

Parameters:

  • change_size (int) (defaults to: 0)

    in bytes



39
40
41
42
43
# File 'lib/gitlab/repository_size_checker.rb', line 39

def exceeded_size(change_size = 0)
  size = current_size + change_size - limit

  [size, 0].max
end