require "db/mongo/models/provider_accounts/provider_account" module Devops module Model class Ec2ProviderAccount < ProviderAccount attr_accessor :availability_zone set_field_validators :access_key_id, ::Validators::FieldValidator::NotNil, ::Validators::FieldValidator::FieldType::String, ::Validators::FieldValidator::NotEmpty set_field_validators :secret_access_key, ::Validators::FieldValidator::NotNil, ::Validators::FieldValidator::FieldType::String, ::Validators::FieldValidator::NotEmpty set_field_validators :use_iam_profile, ::Validators::FieldValidator::Nil, ::Validators::FieldValidator::FieldType::Boolean def initialize a={} super(a) self.provider = Provider::Ec2::PROVIDER self.availability_zone = a["availability_zone"] self.access_key_id = a["access_key_id"] self.secret_access_key = a["secret_access_key"] end def to_list_hash s = super s["availability_zone"] = self.availability_zone s["access_key_id"] = self.access_key_id s end def to_mongo_hash s = super s["availability_zone"] = self.availability_zone s["access_key_id"] = self.access_key_id s["secret_access_key"] = self.secret_access_key s end def self.build_from_bson a a["account_name"] = a["_id"] Ec2ProviderAccount.new a end def self.account_fields { access_key_id: "AWS account access key", secret_access_key: "AWS account secret key", use_iam_profile: "Should use iam profile?", availability_zone: "Availability zone, todo: remove field?" }.merge(ProviderAccount::ACCOUNT_FIELDS) end # TODO: remove def validate_fields_types end end end end