diff --git a/devops-service/db/mongo/models/deploy_env/cloud_deploy_env.rb b/devops-service/db/mongo/models/deploy_env/cloud_deploy_env.rb index dc7825e..6b2afd5 100644 --- a/devops-service/db/mongo/models/deploy_env/cloud_deploy_env.rb +++ b/devops-service/db/mongo/models/deploy_env/cloud_deploy_env.rb @@ -1,12 +1,5 @@ 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/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" +require "db/validators/deploy_env/cloud_parameters" module Devops module Model @@ -25,12 +18,15 @@ module Devops :groups => {:type => Array, :empty => false}, :stack_template => {:type => String, :empty => false, :nil => true} +=begin set_validators ::Validators::DeployEnv::Flavor, ::Validators::DeployEnv::Image, ::Validators::DeployEnv::SubnetNotEmpty, ::Validators::DeployEnv::SubnetBelongsToProvider, ::Validators::DeployEnv::Groups, ::Validators::DeployEnv::StackTemplate +=end + set_validators ::Validators::DeployEnv::CloudParameters def initialize d={} super(d) diff --git a/devops-service/db/validators/deploy_env/cloud_parameters.rb b/devops-service/db/validators/deploy_env/cloud_parameters.rb new file mode 100644 index 0000000..4e6fc59 --- /dev/null +++ b/devops-service/db/validators/deploy_env/cloud_parameters.rb @@ -0,0 +1,40 @@ +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 Validators + class DeployEnv::CloudParameters < Base + + def valid? + is_stack = !@model.stack_template.nil? + is_server_params = !@model.flavor.nil? or !@model.image.nil? or !@model.subnets.nil? or !@model.groups.nil? + if !is_server_params and !is_stack + @msg = "You should define 'stack_template' or all instance parameters (image, flavor, subnets, groups)" + return false + end + if is_stack + StackTemplate.new(@model).validate! + end + if is_server_params + Flavor.new(@model).validate! + Image.new(@model).validate! + SubnetNotEmpty.new(@model).validate! + SubnetBelongsToProvider.new(@model).validate! + Groups.new(@model).validate! + end + return true + rescue InvalidRecord => e + @msg = e.message + return false + end + + def message + @msg + end + + end +end +