Guest User

Untitled

a guest
Oct 17th, 2018
132
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.20 KB | None | 0 0
  1. module Kindly
  2. class << self
  3. attr_accessor :logger
  4. def for_service(service)
  5. service.driver_type.camelize.constantize.new(service)
  6. end
  7. end
  8. end
  9.  
  10. class Kindly::Cpanel
  11. attr_accessor :service, :lumberg_client
  12.  
  13. def initialize(service)
  14. @service = service
  15. @lumberg_client = ::Lumberg::Whm::Server.new(host: service.hardware.name, hash: service.hardware.data[:whm_hash])
  16. end
  17.  
  18. def provision(params = {})
  19. log_params params
  20. parse lumberg_client.account.create(username: service.username, password: service.password, domain: service.description)
  21. end
  22.  
  23. private
  24.  
  25. def parse(response)
  26. Kindly.logger.debug("CPanel response with: #{response}")
  27.  
  28. if response[:success]
  29. response
  30. else
  31. raise KindlyError, "Cpanel error: #{result.fetch(:message, 'Unknown Error')}"
  32. end
  33. end
  34.  
  35. def log_request(params)
  36. Kindly.logger.debug("CPanel request with: #{params}")
  37. end
  38. end
  39.  
  40. class Service
  41. delegate :driver, to: -> { Kindly.for_service(self) }
  42. end
  43.  
  44. class ServiceObserver
  45. def before_active(service, transition)
  46. driver.provision transition.args[0]
  47. end
  48.  
  49. def before_suspend(service, transition)
  50. driver.suspend transition.args[0]
  51. end
  52.  
  53. end
Add Comment
Please, Sign In to add comment