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