2015-06-17 22:37:08 +03:00
|
|
|
require_relative 'base'
|
|
|
|
|
require_relative 'postgres_cluster'
|
2015-06-22 13:51:04 +03:00
|
|
|
require_relative 'preset_not_found'
|
2015-06-17 22:37:08 +03:00
|
|
|
|
2015-07-15 19:21:23 +03:00
|
|
|
class Devops::StackPresetsFactory
|
2015-06-17 22:37:08 +03:00
|
|
|
|
2015-07-15 19:21:23 +03:00
|
|
|
# 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.
|
2015-06-17 22:37:08 +03:00
|
|
|
def self.list
|
2015-07-15 19:21:23 +03:00
|
|
|
@list ||= Devops::StackPresets.constants.select do |class_name|
|
2015-06-17 22:37:08 +03:00
|
|
|
class_name != :Base
|
|
|
|
|
end.map do |class_name|
|
2015-07-15 19:21:23 +03:00
|
|
|
Devops::StackPresets.const_get(class_name).new
|
2015-06-17 22:37:08 +03:00
|
|
|
end
|
|
|
|
|
end
|
|
|
|
|
|
|
|
|
|
def self.get(id)
|
2015-06-22 13:51:04 +03:00
|
|
|
preset = list.detect { |preset| preset.id == id }
|
|
|
|
|
raise PresetNotFound, "Preset '#{preset}' not found" unless preset
|
|
|
|
|
preset
|
2015-06-17 22:37:08 +03:00
|
|
|
end
|
|
|
|
|
|
|
|
|
|
end
|