52 lines
		
	
	
		
			1.7 KiB
		
	
	
	
		
			Ruby
		
	
	
	
	
	
			
		
		
	
	
			52 lines
		
	
	
		
			1.7 KiB
		
	
	
	
		
			Ruby
		
	
	
	
	
	
| require 'exceptions/parser_error'
 | |
| module Devops
 | |
|   module Model
 | |
|     module ModelWithProviderAccount
 | |
| 
 | |
|       class << self
 | |
|         def included(mod)
 | |
|           mod.field :provider, type: String
 | |
|           mod.field :provider_account, type: String
 | |
| 
 | |
|           mod.validates_presence_of :provider, message: "'provider' is undefined"
 | |
|           mod.validates_presence_of :provider_account, message: "'provider_account' is undefined"
 | |
|         end
 | |
|       end
 | |
| 
 | |
|       def check_provider_account_type hash
 | |
|         raise Devops::Exception::ParserError.new("Parameter 'provider' is not a string") unless hash["provider"].is_a?(String)
 | |
|         raise Devops::Exception::ParserError.new("Parameter 'provider_account' is not a string") unless hash["provider_account"].is_a?(String)
 | |
|       end
 | |
| 
 | |
|       def validate_provider
 | |
|         providers = ::Provider.providers
 | |
|         unless providers.include?(self.provider)
 | |
|           errors.add(:provider, "Invalid provider, available values: '#{providers.join("', '")}'")
 | |
|           return
 | |
|         end
 | |
|         begin
 | |
|           #factory = ::Provider::ProviderFactory.get_accounts_factory self.provider
 | |
|           #Devops::Exception::RecordNotFound.new if factory.nil?
 | |
|           provider_instance
 | |
|         rescue Devops::Exception::RecordNotFound
 | |
|           puts "not f inst"
 | |
|           errors.add(:provider_account, "Provider account '#{self.provider_account}' does not exist")
 | |
|         end
 | |
|       end
 | |
| 
 | |
|       def provider_instance
 | |
|         @provider_instance ||= ::Provider.get_connector(self.provider, self.provider_account)
 | |
|       end
 | |
| 
 | |
|       def provider_hash
 | |
|         {
 | |
|           "provider" => self.provider,
 | |
|           "provider_account" => self.provider_account
 | |
|         }
 | |
|       end
 | |
| 
 | |
|     end
 | |
|   end
 | |
| end
 | |
| 
 | 
