fluke/devops-service/db/mongo/models/stack_template/stack_template_base.rb
2016-01-28 18:15:06 +03:00

78 lines
2.6 KiB
Ruby

require "db/mongo/models/model_with_provider"
require "db/validators/stack_template/template_content"
module Devops
module Model
class StackTemplateBase < MongoModel
include ModelWithProvider
attr_accessor :id, :template_body, :provider, :owner
# should be a hash like {'param_name' => {type: 'String', description: 'Description'}}
attr_accessor :available_parameters
types id: {type: String, empty: false},
provider: {type: String, empty: false},
template_body: {type: String, empty: false},
owner: {type: String, empty: false}
set_field_validators :id, [::Validators::FieldValidator::NotNil,
::Validators::FieldValidator::FieldType::String,
::Validators::FieldValidator::NotEmpty,
::Validators::FieldValidator::Name]
set_field_validators :provider, [::Validators::FieldValidator::NotNil,
::Validators::FieldValidator::FieldType::String,
::Validators::FieldValidator::NotEmpty]
set_field_validators :template_body, [::Validators::FieldValidator::NotNil,
::Validators::FieldValidator::FieldType::String,
::Validators::FieldValidator::NotEmpty]
set_field_validators :owner, [::Validators::FieldValidator::NotNil,
::Validators::FieldValidator::FieldType::String,
::Validators::FieldValidator::NotEmpty]
set_validators ::Validators::StackTemplate::TemplateContent
def initialize(attrs)
self.id = attrs['id']
self.template_body = attrs['template_body']
self.provider = attrs['provider']
self.owner = attrs['owner']
self.available_parameters = attrs['available_parameters']
self
end
def to_hash_without_id
{
'provider' => provider,
'template_body' => template_body,
'owner' => owner,
'available_parameters' => available_parameters
}
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
def self.build_from_bson(attrs)
attrs['id'] = attrs["_id"]
self.new(attrs)
end
end
end
end