summaryrefslogtreecommitdiff
path: root/lib/gitlab/ci/pipeline/seed/processable/resource_group.rb
diff options
context:
space:
mode:
Diffstat (limited to 'lib/gitlab/ci/pipeline/seed/processable/resource_group.rb')
-rw-r--r--lib/gitlab/ci/pipeline/seed/processable/resource_group.rb39
1 files changed, 39 insertions, 0 deletions
diff --git a/lib/gitlab/ci/pipeline/seed/processable/resource_group.rb b/lib/gitlab/ci/pipeline/seed/processable/resource_group.rb
new file mode 100644
index 00000000000..f8ea6d4184c
--- /dev/null
+++ b/lib/gitlab/ci/pipeline/seed/processable/resource_group.rb
@@ -0,0 +1,39 @@
+# frozen_string_literal: true
+
+module Gitlab
+ module Ci
+ module Pipeline
+ module Seed
+ module Processable
+ class ResourceGroup < Seed::Base
+ include Gitlab::Utils::StrongMemoize
+
+ attr_reader :processable, :resource_group_key
+
+ def initialize(processable, resource_group_key)
+ @processable = processable
+ @resource_group_key = resource_group_key
+ end
+
+ def to_resource
+ return unless resource_group_key.present?
+
+ resource_group = processable.project.resource_groups
+ .safe_find_or_create_by(key: expanded_resource_group_key)
+
+ resource_group if resource_group.persisted?
+ end
+
+ private
+
+ def expanded_resource_group_key
+ strong_memoize(:expanded_resource_group_key) do
+ ExpandVariables.expand(resource_group_key, -> { processable.simple_variables })
+ end
+ end
+ end
+ end
+ end
+ end
+ end
+end