fluke/devops-service/db/mongo/models/stack_template/stack_template_base.rb
Tim Lianov 03dc3d8d99 v3
2018-04-04 22:44:39 +03:00

46 lines
1.2 KiB
Ruby

require "db/mongo/models/model_with_provider"
require "db/validators/name"
module Devops
module Model
class StackTemplateBase
include ::Mongoid::Document
include ::Mongoid::Timestamps::CreatedInt
include ::ActiveModel::Validations
store_in collection: "stack_templates"
include ModelWithProviderAccount
field :_id, as: :id, overwrite: true, type: String
field :owner, type: String
field :template_body, type: String
# should be a hash like {'param_name' => {type: 'String', description: 'Description'}}
field :available_parameters, type: Hash, default: {}
validates :owner, :template_body, presence: true
validates :id, uniqueness: true, on: :create
validates :id, name: true, presence: true
def to_hash
attributes.tap { |hash| hash['id'] = hash.delete('_id') }
end
def parse_parameters
{}
end
# attrs should include:
# - id (String)
# - provider (String)
# - template_body (String)
def self.create(attrs)
template = new(attrs)
template.available_parameters = template.parse_parameters
template
end
end
end
end