fluke/devops-service/db/mongo/models/model_with_provider_account.rb
Tim Lianov 03dc3d8d99 v3
2018-04-04 22:44:39 +03:00

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