require 'lib/string_helper' require 'db/mongo/models/stack_template/stack_template_factory' module Devops module StackTemplatePresets class Base def id StringHelper.underscore_class(self.class) end def to_hash {id: id, template_body: template_body} end def create_stack_from_preset(provider, stack_id, parameters) find_or_create_stack_template!(provider) Model::StackFactory.create(provider, { 'id' => stack_id, 'provider' => provider, 'parameters' => parameters, 'stack_template' => stack_template_name(provider) }) end def template_body file_name = File.join("lib/stack_template_presets/#{id}.#{template_file_extension}") File.read(file_name) end # some templates may be YAML files def template_file_extension :json end private def find_or_create_stack_template!(provider) name = stack_template_name(provider) begin Devops::Api2.settings.mongo.stack_template(name) rescue RecordNotFound template = Model::StackTemplateFactory.create(provider, { 'id' => name, 'provider' => provider, 'template_body' => template_body }) Devops::Api2.settings.mongo.stack_template_insert(template) end end def stack_template_name(provider) "#{id}_#{provider}_preset" end end end end