2014-06-24 13:40:52 +04:00
|
|
|
require "db/mongo/models/mongo_model"
|
|
|
|
|
require "db/exceptions/invalid_record"
|
|
|
|
|
require "commands/deploy_env"
|
|
|
|
|
|
|
|
|
|
class DeployEnvBase < MongoModel
|
|
|
|
|
|
|
|
|
|
include DeployEnvCommands
|
|
|
|
|
|
|
|
|
|
attr_accessor :identifier, :run_list, :expires, :provider, :users
|
|
|
|
|
|
|
|
|
|
def initialize d={}
|
|
|
|
|
self.identifier = d["identifier"]
|
|
|
|
|
b = d["run_list"] || []
|
|
|
|
|
self.run_list = (b.is_a?(Array) ? b.uniq : b)
|
|
|
|
|
self.expires = d["expires"]
|
|
|
|
|
self.provider = d["provider"]
|
|
|
|
|
b = d["users"] || []
|
|
|
|
|
self.users = (b.is_a?(Array) ? b.uniq : b)
|
|
|
|
|
end
|
|
|
|
|
|
|
|
|
|
def validate!
|
|
|
|
|
super
|
2014-11-28 15:12:07 +03:00
|
|
|
begin
|
|
|
|
|
self.class.validators.each do |validator|
|
|
|
|
|
validator.new(self).validate!
|
|
|
|
|
end
|
|
|
|
|
true
|
|
|
|
|
rescue InvalidRecord => e
|
|
|
|
|
raise InvalidRecord.new "Deploy environment '#{self.identifier}'. " + e.message
|
2014-11-26 18:46:04 +03:00
|
|
|
end
|
2014-06-24 13:40:52 +04:00
|
|
|
end
|
|
|
|
|
|
|
|
|
|
def to_hash
|
|
|
|
|
{
|
|
|
|
|
"identifier" => self.identifier,
|
|
|
|
|
"run_list" => self.run_list,
|
|
|
|
|
"expires" => self.expires,
|
|
|
|
|
"provider" => self.provider,
|
|
|
|
|
"users" => self.users
|
|
|
|
|
}
|
|
|
|
|
end
|
|
|
|
|
|
2014-11-27 18:45:35 +03:00
|
|
|
def provider_instance
|
|
|
|
|
@provider_instance ||= ::Provider::ProviderFactory.get(self.provider)
|
|
|
|
|
end
|
|
|
|
|
|
2014-11-26 18:46:04 +03:00
|
|
|
|
|
|
|
|
# class methods
|
|
|
|
|
class << self
|
|
|
|
|
|
|
|
|
|
def validators
|
|
|
|
|
@validators
|
|
|
|
|
end
|
|
|
|
|
|
|
|
|
|
private
|
|
|
|
|
|
|
|
|
|
def set_validators(*validators)
|
|
|
|
|
@validators = validators
|
|
|
|
|
end
|
|
|
|
|
|
|
|
|
|
end
|
|
|
|
|
|
2014-06-24 13:40:52 +04:00
|
|
|
end
|