83 lines
		
	
	
		
			3.0 KiB
		
	
	
	
		
			Ruby
		
	
	
	
	
	
			
		
		
	
	
			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::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
 | 
