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 e = DeployEnvBase.validate_run_list(self.run_list) raise InvalidRecord.new "Invalid run list elements: '#{e.join("', '")}'" unless e.empty? unless self.expires.nil? check_expires!(self.expires) end check_users!(self.users) end def to_hash { "identifier" => self.identifier, "run_list" => self.run_list, "expires" => self.expires, "provider" => self.provider, "users" => self.users } end def self.validate_run_list list rl = /\Arole|recipe\[[\w-]+(::[\w-]+)?\]\Z/ list.select {|l| (rl =~ l).nil?} end end