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