fluke/devops-service/db/mongo/models/image.rb
2016-01-27 16:44:59 +04:00

83 lines
3.0 KiB
Ruby

require "db/mongo/models/mongo_model"
require "db/validators/image/bootstrap_template"
require "db/validators/image/image_in_filter"
require "db/mongo/models/model_with_provider"
module Devops
module Model
class Image < MongoModel
include ModelWithProvider
# attr_accessor :id, :remote_user, :name, :bootstrap_template
=begin
types :id => {:type => String, :empty => false},
:provider => {:type => String, :empty => false},
:remote_user => {:type => String, :empty => false},
:name => {:type => String, :empty => true},
:bootstrap_template => {:type => String, :empty => false, :nil => true}
=end
# set_validators ::Validators::Image::ImageInFilter,
# ::Validators::Image::BootstrapTemplate
set_field_validators :id, [::Validators::FieldValidator::NotNil,
::Validators::FieldValidator::FieldType::String,
::Validators::FieldValidator::NotEmpty,
::Validators::FieldValidator::ImageId,
::Validators::Image::ImageInFilter]
set_field_validators :remote_user, [::Validators::FieldValidator::NotNil,
::Validators::FieldValidator::FieldType::String,
::Validators::FieldValidator::NotEmpty,
::Validators::FieldValidator::ImageUsername]
set_field_validators :name, [::Validators::FieldValidator::NotNil,
::Validators::FieldValidator::FieldType::String,
::Validators::FieldValidator::NotEmpty,
::Validators::FieldValidator::ImageName]
set_field_validators :bootstrap_template, [::Validators::FieldValidator::Nil,
::Validators::FieldValidator::FieldType::String,
::Validators::FieldValidator::NotEmpty,
::Validators::FieldValidator::Name,
::Validators::Image::BootstrapTemplate]
def validate!
validate_id!
validate_provider!
validate_remote_user!
validate_name!
validate_bootstrap_template!
end
def initialize p={}
self.id = p["id"]
self.provider = p["provider"]
self.remote_user = p["remote_user"]
self.name = p["name"] || ""
self.bootstrap_template = p["bootstrap_template"]
end
def self.build_from_bson args
image = Image.new(args)
image.id = args["_id"]
image
end
def to_hash_without_id
{
"provider" => provider,
"name" => name,
"remote_user" => remote_user,
"bootstrap_template" => bootstrap_template
}
end
def self.create_from_json! json
Image.new( JSON.parse(json) )
end
end
end
end