fluke/devops-service/lib/stack_template_presets/base.rb

58 lines
1.5 KiB
Ruby
Raw Normal View History

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
2015-07-13 20:26:13 +03:00
{id: id, template_body: template_body}
end
def create_stack_from_preset(provider, stack_id, parameters)
2015-07-13 20:26:13 +03:00
find_or_create_stack_template!(provider)
Model::StackFactory.create(provider, {
'id' => stack_id,
'provider' => provider,
'parameters' => parameters,
2015-07-13 20:26:13 +03:00
'stack_template' => stack_template_name(provider)
})
end
2015-07-13 20:26:13 +03:00
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
2015-07-13 20:26:13 +03:00
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