fluke/devops-service/providers/category_provider.rb

44 lines
1.2 KiB
Ruby
Raw Normal View History

2018-04-04 22:44:39 +03:00
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