fluke/devops-service/db/mongo/models/image.rb
GGA Software Services LLC 02bf8b1bba initial commit
2014-05-08 17:06:06 +04:00

51 lines
1.4 KiB
Ruby

require "db/exceptions/invalid_record"
require "db/mongo/models/mongo_model"
require "commands/image"
class Image < MongoModel
include ImageCommands
attr_accessor :id, :provider, :remote_user, :name, :bootstrap_template
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}
def validate!
super
images = get_images(DevopsService.mongo, self.provider)
raise InvalidRecord.new "Invalid image id '#{self.id}' for provider '#{self.provider}', please check image filters" unless images.map{|i| i["id"]}.include?(self.id)
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.create_from_bson args
image = Image.new(args)
image.id = args["_id"]
image
end
def to_hash_without_id
o = {
"provider" => self.provider,
"name" => self.name,
"remote_user" => self.remote_user
}
o["bootstrap_template"] = self.bootstrap_template
o
end
def self.create_from_json! json
Image.new( JSON.parse(json) )
end
end