class Sunzi::Vps::Api
Attributes
provider[R]
Public Class Methods
new(provider)
click to toggle source
# File lib/sunzi/vps/api.rb, line 18 def initialize(provider) @provider = provider Sunzi::Dependency.load(mapping[:gem]) end
Public Instance Methods
client()
click to toggle source
# File lib/sunzi/vps/api.rb, line 23 def client @client ||= begin case provider when 'linode' ::Linode.new(api_key: config.api_key) when 'digital_ocean' DropletKit::Client.new(access_token: config.api_key) when 'vultr' Vultr.api_key = config.api_key Vultr end end end
compute()
click to toggle source
# File lib/sunzi/vps/api.rb, line 41 def compute @compute ||= Object.const_get("Sunzi::Vps::Compute::#{mapping[:klass]}").new(self) end
config()
click to toggle source
# File lib/sunzi/vps/api.rb, line 37 def config @config ||= YAML.load(File.read("#{provider}/#{provider}.yml")).to_hashugar end
dns()
click to toggle source
# File lib/sunzi/vps/api.rb, line 45 def dns @dns ||= Object.const_get("Sunzi::Vps::DNS::#{mapping[:klass]}").new(self) end
Private Instance Methods
mapping()
click to toggle source
# File lib/sunzi/vps/api.rb, line 51 def mapping @mapping ||= Mapping.fetch(provider.to_sym) end