Skip to content

Instantly share code, notes, and snippets.

@fabiokr
Created June 4, 2012 13:47
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save fabiokr/2868498 to your computer and use it in GitHub Desktop.
Save fabiokr/2868498 to your computer and use it in GitHub Desktop.
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