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
|
|
|