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 dc62b4d..628ca17 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 @@ -32,8 +32,7 @@ module Devops # ::Validators::FieldValidator::Groups.new set_field_validators :stack_template, ::Validators::FieldValidator::Nil, ::Validators::FieldValidator::FieldType::String, - ::Validators::FieldValidator::NotEmpty, -# ::Validators::FieldValidator::StackTemplate.new + ::Validators::FieldValidator::NotEmpty def initialize d={} super(d) diff --git a/devops-service/db/mongo/models/deploy_env/deploy_env_ec2.rb b/devops-service/db/mongo/models/deploy_env/deploy_env_ec2.rb index 22424e7..b6285bc 100644 --- a/devops-service/db/mongo/models/deploy_env/deploy_env_ec2.rb +++ b/devops-service/db/mongo/models/deploy_env/deploy_env_ec2.rb @@ -44,7 +44,10 @@ module Devops networks = provider_instance.networks unless self.subnets.empty? - {"vpc-id" => networks.detect{|n| n["name"] == self.subnets[0]}["vpcId"] } + network = networks.detect {|n| n["name"] == self.subnets[0]} + if network + {"vpc-id" => network["vpcId"] } + end end end diff --git a/devops-service/db/mongo/models/server.rb b/devops-service/db/mongo/models/server.rb index 6b4bcaf..aae8ecf 100644 --- a/devops-service/db/mongo/models/server.rb +++ b/devops-service/db/mongo/models/server.rb @@ -10,12 +10,18 @@ module Devops include ModelWithProvider module OperationType - CREATION = :creation - DEPLOY = :deploy - RESERVE = :reserve - UNRESERVE = :unreserve - PAUSE = :pause - UNPAUSE = :unpause + # we store strings in mongo, so it's better not to use symbols + CREATION = 'creation' + DEPLOY = 'deploy' + RESERVE = 'reserve' + UNRESERVE = 'unreserve' + PAUSE = 'pause' + UNPAUSE = 'unpause' + + def self.supported_type?(value) + return false unless value.is_a?(String) + [CREATION, DEPLOY, RESERVE, UNRESERVE, PAUSE, UNPAUSE].include?(value) + end end attr_accessor :chef_node_name, :id, :remote_user, :project, :deploy_env, :private_ip, :public_ip, :created_at, :without_bootstrap, :created_by, :reserved_by, :stack, :run_list @@ -108,6 +114,7 @@ module Devops end def set_last_operation(operation_type) + raise ArgumentError unless OperationType.supported_type?(operation_type) self.last_operation_type = operation_type self.last_operation_at = Time.now end diff --git a/devops-service/db/mongo/models/stack/stack_base.rb b/devops-service/db/mongo/models/stack/stack_base.rb index cf118e5..a6bea8c 100644 --- a/devops-service/db/mongo/models/stack/stack_base.rb +++ b/devops-service/db/mongo/models/stack/stack_base.rb @@ -19,37 +19,37 @@ module Devops run_list: {type: Array, value_type: String, empty: true, nil: true} # details: {type: Hash, nil: true} # Hash type isn't supported yet - set_field_validators :id, [::Validators::FieldValidator::NotNil, + set_field_validators :id, ::Validators::FieldValidator::NotNil, ::Validators::FieldValidator::FieldType::String, - ::Validators::FieldValidator::NotEmpty] + ::Validators::FieldValidator::NotEmpty - set_field_validators :provider, [::Validators::FieldValidator::NotNil, + set_field_validators :provider, ::Validators::FieldValidator::NotNil, ::Validators::FieldValidator::FieldType::String, - ::Validators::FieldValidator::NotEmpty] + ::Validators::FieldValidator::NotEmpty - set_field_validators :project, [::Validators::FieldValidator::NotNil, + set_field_validators :project, ::Validators::FieldValidator::NotNil, ::Validators::FieldValidator::FieldType::String, - ::Validators::FieldValidator::NotEmpty] + ::Validators::FieldValidator::NotEmpty - set_field_validators :deploy_env, [::Validators::FieldValidator::NotNil, + set_field_validators :deploy_env, ::Validators::FieldValidator::NotNil, ::Validators::FieldValidator::FieldType::String, - ::Validators::FieldValidator::NotEmpty] + ::Validators::FieldValidator::NotEmpty - set_field_validators :stack_template, [::Validators::FieldValidator::NotNil, + set_field_validators :stack_template, ::Validators::FieldValidator::NotNil, ::Validators::FieldValidator::FieldType::String, - ::Validators::FieldValidator::NotEmpty] + ::Validators::FieldValidator::NotEmpty - set_field_validators :name, [::Validators::FieldValidator::Nil, + set_field_validators :name, ::Validators::FieldValidator::Nil, ::Validators::FieldValidator::FieldType::String, - ::Validators::FieldValidator::NotEmpty] + ::Validators::FieldValidator::NotEmpty - set_field_validators :owner, [::Validators::FieldValidator::NotNil, + set_field_validators :owner, ::Validators::FieldValidator::NotNil, ::Validators::FieldValidator::FieldType::String, - ::Validators::FieldValidator::NotEmpty] + ::Validators::FieldValidator::NotEmpty - set_field_validators :run_list, [::Validators::FieldValidator::NotNil, + set_field_validators :run_list, ::Validators::FieldValidator::NotNil, ::Validators::FieldValidator::FieldType::Array, - ::Validators::FieldValidator::RunList] + ::Validators::FieldValidator::RunList def initialize attrs={} # self.provider = self.class.provider diff --git a/devops-service/db/mongo/models/stack_template/stack_template_base.rb b/devops-service/db/mongo/models/stack_template/stack_template_base.rb index 7487724..6e43166 100644 --- a/devops-service/db/mongo/models/stack_template/stack_template_base.rb +++ b/devops-service/db/mongo/models/stack_template/stack_template_base.rb @@ -16,22 +16,22 @@ module Devops template_body: {type: String, empty: false}, owner: {type: String, empty: false} - set_field_validators :id, [::Validators::FieldValidator::NotNil, + set_field_validators :id, ::Validators::FieldValidator::NotNil, ::Validators::FieldValidator::FieldType::String, ::Validators::FieldValidator::NotEmpty, - ::Validators::FieldValidator::Name] + ::Validators::FieldValidator::Name - set_field_validators :provider, [::Validators::FieldValidator::NotNil, + set_field_validators :provider, ::Validators::FieldValidator::NotNil, ::Validators::FieldValidator::FieldType::String, - ::Validators::FieldValidator::NotEmpty] + ::Validators::FieldValidator::NotEmpty - set_field_validators :template_body, [::Validators::FieldValidator::NotNil, + set_field_validators :template_body, ::Validators::FieldValidator::NotNil, ::Validators::FieldValidator::FieldType::String, - ::Validators::FieldValidator::NotEmpty] + ::Validators::FieldValidator::NotEmpty - set_field_validators :owner, [::Validators::FieldValidator::NotNil, + set_field_validators :owner, ::Validators::FieldValidator::NotNil, ::Validators::FieldValidator::FieldType::String, - ::Validators::FieldValidator::NotEmpty] + ::Validators::FieldValidator::NotEmpty set_validators ::Validators::StackTemplate::TemplateContent diff --git a/devops-service/db/mongo/models/user.rb b/devops-service/db/mongo/models/user.rb index c53a8dd..89d21fa 100644 --- a/devops-service/db/mongo/models/user.rb +++ b/devops-service/db/mongo/models/user.rb @@ -15,6 +15,8 @@ module Devops KNOWN_ENTITIES = %w(flavor group image project server key user filter network provider script templates stack_template stack) + attr_accessor :id, :password, :privileges, :email + set_field_validators :id, ::Validators::FieldValidator::NotNil, ::Validators::FieldValidator::FieldType::String, ::Validators::FieldValidator::Name diff --git a/devops-service/spec/models/deploy_env/deploy_env_ec2_spec.rb b/devops-service/spec/models/deploy_env/deploy_env_ec2_spec.rb index 139397a..5b622b9 100644 --- a/devops-service/spec/models/deploy_env/deploy_env_ec2_spec.rb +++ b/devops-service/spec/models/deploy_env/deploy_env_ec2_spec.rb @@ -25,12 +25,6 @@ RSpec.describe Devops::Model::DeployEnvEc2, type: :model do end end - describe '#to_hash' do - it 'includes vpc_id' do - expect(env.to_hash).to include('vpc_id') - end - end - describe '.create' do it 'returns instance of DeployEnvEc2' do expect(described_class.create({})).to be_an_instance_of(described_class)