summaryrefslogtreecommitdiff
path: root/app/models/container_expiration_policy.rb
diff options
context:
space:
mode:
authorGitLab Bot <gitlab-bot@gitlab.com>2020-01-11 15:07:49 +0000
committerGitLab Bot <gitlab-bot@gitlab.com>2020-01-11 15:07:49 +0000
commit90184b64bb3412cfd291b45c8997671cdb1ca95a (patch)
tree49accc148b0fa776d8a60c9e3a9224231b7ca393 /app/models/container_expiration_policy.rb
parentbac547dc784170c7d0e6a5ae14d0ff5d549c31ee (diff)
downloadgitlab-ce-90184b64bb3412cfd291b45c8997671cdb1ca95a.tar.gz
Add latest changes from gitlab-org/gitlab@master
Diffstat (limited to 'app/models/container_expiration_policy.rb')
-rw-r--r--app/models/container_expiration_policy.rb11
1 files changed, 11 insertions, 0 deletions
diff --git a/app/models/container_expiration_policy.rb b/app/models/container_expiration_policy.rb
index f60a0179c83..c929a78a7f9 100644
--- a/app/models/container_expiration_policy.rb
+++ b/app/models/container_expiration_policy.rb
@@ -1,14 +1,21 @@
# frozen_string_literal: true
class ContainerExpirationPolicy < ApplicationRecord
+ include Schedulable
+
belongs_to :project, inverse_of: :container_expiration_policy
+ delegate :container_repositories, to: :project
+
validates :project, presence: true
validates :enabled, inclusion: { in: [true, false] }
validates :cadence, presence: true, inclusion: { in: ->(_) { self.cadence_options.stringify_keys } }
validates :older_than, inclusion: { in: ->(_) { self.older_than_options.stringify_keys } }, allow_nil: true
validates :keep_n, inclusion: { in: ->(_) { self.keep_n_options.keys } }, allow_nil: true
+ scope :active, -> { where(enabled: true) }
+ scope :preloaded, -> { preload(:project) }
+
def self.keep_n_options
{
1 => _('%{tags} tag per image name') % { tags: 1 },
@@ -38,4 +45,8 @@ class ContainerExpirationPolicy < ApplicationRecord
'90d': _('%{days} days until tags are automatically removed') % { days: 90 }
}
end
+
+ def set_next_run_at
+ self.next_run_at = Time.zone.now + ChronicDuration.parse(cadence).seconds
+ end
end