68 lines
1.9 KiB
Ruby
68 lines
1.9 KiB
Ruby
require "db/mongo/models/deploy_env/deploy_env_base"
|
|
|
|
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
|