fluke/devops-service/db/mongo/models/provider_accounts/ec2_provider_account.rb
2015-12-07 14:15:41 +03:00

64 lines
2.0 KiB
Ruby

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