fluke/devops-service/db/mongo/models/deploy_env/deploy_env_ec2.rb
2015-07-27 15:56:30 +03:00

75 lines
2.2 KiB
Ruby

require "db/mongo/models/deploy_env/deploy_env_base"
require "db/validators/deploy_env/run_list"
require "db/validators/deploy_env/expiration"
require "db/validators/deploy_env/users"
require "db/validators/deploy_env/flavor"
require "db/validators/deploy_env/image"
require "db/validators/deploy_env/subnet_belongs_to_provider"
require "db/validators/deploy_env/groups"
module Devops
module Model
class DeployEnvEc2 < DeployEnvBase
attr_accessor :flavor, :image, :subnets, :groups
types :identifier => {:type => String, :empty => false},
:image => {:type => String, :empty => false},
:flavor => {:type => String, :empty => false},
:provider => {:type => String, :empty => false},
:expires => {:type => String, :empty => false, :nil => true},
:run_list => {:type => Array, :empty => true},
:users => {:type => Array, :empty => true},
:subnets => {:type => Array, :empty => true},
:groups => {:type => Array, :empty => false}
set_validators ::Validators::DeployEnv::RunList,
::Validators::DeployEnv::Expiration,
::Validators::DeployEnv::Users,
::Validators::DeployEnv::Flavor,
::Validators::DeployEnv::Image,
::Validators::DeployEnv::SubnetBelongsToProvider,
::Validators::DeployEnv::Groups
def initialize d={}
super(d)
self.flavor = d["flavor"]
self.image = d["image"]
b = d["subnets"] || []
self.subnets = if b.is_a?(Array)
(b.size > 1 ? [ b[0] ] : b)
else
b
end
b = d["groups"] || ["default"]
self.groups = (b.is_a?(Array) ? b.uniq : b)
end
def to_hash
h = super
h.merge!({
"flavor" => self.flavor,
"image" => self.image,
"subnets" => self.subnets,
"groups" => self.groups
})
end
def self.create hash
DeployEnvEc2.new(hash)
end
private
def subnets_filter
networks = provider_instance.networks
unless self.subnets.empty?
{"vpc-id" => networks.detect{|n| n["name"] == self.subnets[0]}["vpcId"] }
end
end
end
end
end