Created
June 4, 2012 13:47
-
-
Save fabiokr/2868498 to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
module Kindly | |
class << self | |
attr_accessor :logger | |
def for_service(service) | |
service.driver_type.camelize.constantize.new(service) | |
end | |
end | |
end | |
class Kindly::Cpanel | |
attr_accessor :service, :lumberg_client | |
def initialize(service) | |
@service = service | |
@lumberg_client = ::Lumberg::Whm::Server.new(host: service.hardware.name, hash: service.hardware.data[:whm_hash]) | |
end | |
def provision(params = {}) | |
log_params params | |
parse lumberg_client.account.create(username: service.username, password: service.password, domain: service.description) | |
end | |
private | |
def parse(response) | |
Kindly.logger.debug("CPanel response with: #{response}") | |
if response[:success] | |
response | |
else | |
raise KindlyError, "Cpanel error: #{result.fetch(:message, 'Unknown Error')}" | |
end | |
end | |
def log_request(params) | |
Kindly.logger.debug("CPanel request with: #{params}") | |
end | |
end | |
class Service | |
delegate :driver, to: -> { Kindly.for_service(self) } | |
end | |
class ServiceObserver | |
def before_active(service, transition) | |
driver.provision transition.args[0] | |
end | |
def before_suspend(service, transition) | |
driver.suspend transition.args[0] | |
end | |
end |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment