44 lines
		
	
	
		
			1.2 KiB
		
	
	
	
		
			Ruby
		
	
	
	
	
	
		
		
			
		
	
	
			44 lines
		
	
	
		
			1.2 KiB
		
	
	
	
		
			Ruby
		
	
	
	
	
	
|   | module Devops | ||
|  |   module Model | ||
|  |     class CategoryProvider | ||
|  |       attr_accessor :name, :account, :type, :connector | ||
|  | 
 | ||
|  |       SERVER_TYPE = "server" | ||
|  |       STACK_TYPE = "stack" | ||
|  | 
 | ||
|  |       def initialize hash | ||
|  |         self.name = hash["name"] | ||
|  |         self.account = hash["account"] | ||
|  |         self.type = hash["type"] | ||
|  |       end | ||
|  | 
 | ||
|  |       def to_hash | ||
|  |         { | ||
|  |           "name" => self.name, | ||
|  |           "account" => self.account, | ||
|  |           "type" => self.type | ||
|  |         } | ||
|  |       end | ||
|  | 
 | ||
|  |       def provider_instance | ||
|  |         @provider_instance ||= ::Provider.get_connector(self.name, self.account) | ||
|  |       end | ||
|  | 
 | ||
|  |       def validate_provider_params | ||
|  |         unless ::Provider.providers.include?(self.name) | ||
|  |           raise Devops::Exception::ValidationError.new nil, {"name" => "Invalid provider"} | ||
|  |         end | ||
|  |         types = [SERVER_TYPE, STACK_TYPE] | ||
|  |         unless types.include?(self.type) | ||
|  |           raise Devops::Exception::ValidationError.new nil, {"type" => "Invalid type, available values: #{types.joint(', ')}"} | ||
|  |         end | ||
|  |         provider_instance | ||
|  |       rescue Devops::Exception::RecordNotFound | ||
|  |         raise Devops::Exception::ValidationError.new nil, {"account" => "Invalid account. Account not found"} | ||
|  |       end | ||
|  | 
 | ||
|  |     end | ||
|  |   end | ||
|  | end | ||
|  | 
 |