64 lines
		
	
	
		
			2.0 KiB
		
	
	
	
		
			Ruby
		
	
	
	
	
	
			
		
		
	
	
			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
 | |
| 
 | 
