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::ImageName, ::Validators::Image::ImageInFilter set_field_validators :remote_user, ::Validators::FieldValidator::NotNil, ::Validators::FieldValidator::FieldType::String, ::Validators::FieldValidator::NotEmpty, ::Validators::FieldValidator::ImageName 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