fluke/devops-service/db/mongo/models/deploy_env/cloud_deploy_env.rb

80 lines
3.4 KiB
Ruby

require "db/mongo/models/deploy_env/deploy_env_base"
#require "db/validators/deploy_env/cloud_parameters"
require "db/validators/deploy_env/flavor"
require "db/validators/deploy_env/image"
require "db/validators/deploy_env/subnet_not_empty"
require "db/validators/deploy_env/subnet_belongs_to_provider"
require "db/validators/deploy_env/groups"
require "db/validators/deploy_env/stack_template"
module Devops
module Model
class CloudDeployEnv < DeployEnvBase
attr_accessor :flavor, :image, :subnets, :groups, :stack_template
=begin
@Deprecated
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},
:stack_template => {:type => String, :empty => false, :nil => true}
=end
#TODO: account validator
set_validators ::Validators::DeployEnv::Flavor,
::Validators::DeployEnv::Image,
::Validators::DeployEnv::SubnetNotEmpty,
::Validators::DeployEnv::SubnetBelongsToProvider,
::Validators::DeployEnv::Groups,
::Validators::DeployEnv::StackTemplate
# set_validators ::Validators::DeployEnv::CloudParameters
set_field_validators :flavor, ::Validators::FieldValidator::Nil,
::Validators::FieldValidator::FieldType::String,
::Validators::FieldValidator::Flavor
set_field_validators :image, ::Validators::FieldValidator::Nil,
::Validators::FieldValidator::FieldType::String,
::Validators::FieldValidator::Image
set_field_validators :subnets, ::Validators::FieldValidator::Nil,
::Validators::FieldValidator::FieldType::Array
# ::Validators::FieldValidator::Subnets.new
set_field_validators :groups, ::Validators::FieldValidator::Nil,
::Validators::FieldValidator::FieldType::Array
# ::Validators::FieldValidator::Groups.new
set_field_validators :stack_template, ::Validators::FieldValidator::Nil,
::Validators::FieldValidator::FieldType::String,
::Validators::FieldValidator::NotEmpty,
# ::Validators::FieldValidator::StackTemplate.new
def initialize d={}
super(d)
self.flavor = d["flavor"]
self.image = d["image"]
self.stack_template = d["stack_template"]
b = d["subnets"] || []
self.subnets = b.uniq
b = d["groups"] || ["default"]
self.groups = b.uniq
end
def to_hash
h = super
h.merge!({
"flavor" => self.flavor,
"image" => self.image,
"subnets" => self.subnets,
"groups" => self.groups,
"stack_template" => self.stack_template
})
end
end
end
end