23 lines
688 B
Ruby
23 lines
688 B
Ruby
require_relative 'base'
|
|
require_relative 'postgres_cluster'
|
|
require_relative 'preset_not_found'
|
|
|
|
class Devops::StackPresetsFactory
|
|
|
|
# find all classes in Devops::StackPresets modules excluding Base and factory.
|
|
# This list can be extended in external gems via defining new classes in Devops::StackPresets module.
|
|
def self.list
|
|
@list ||= Devops::StackPresets.constants.select do |class_name|
|
|
class_name != :Base
|
|
end.map do |class_name|
|
|
Devops::StackPresets.const_get(class_name).new
|
|
end
|
|
end
|
|
|
|
def self.get(id)
|
|
preset = list.detect { |preset| preset.id == id }
|
|
raise PresetNotFound, "Preset '#{preset}' not found" unless preset
|
|
preset
|
|
end
|
|
|
|
end |