Class: Fog::DNS::Softlayer::Real

Inherits:
Object
  • Object
show all
Includes:
Softlayer::Compute::Shared
Defined in:
lib/fog/softlayer/dns.rb,
lib/fog/softlayer/requests/dns/get_domain.rb,
lib/fog/softlayer/requests/dns/get_record.rb,
lib/fog/softlayer/requests/dns/get_domains.rb,
lib/fog/softlayer/requests/dns/get_records.rb,
lib/fog/softlayer/requests/dns/create_domain.rb,
lib/fog/softlayer/requests/dns/create_record.rb,
lib/fog/softlayer/requests/dns/delete_domain.rb,
lib/fog/softlayer/requests/dns/delete_record.rb,
lib/fog/softlayer/requests/dns/update_record.rb,
lib/fog/softlayer/requests/dns/get_domain_by_name.rb

Overview

Makes real connections to Softlayer.

Instance Attribute Summary collapse

Instance Method Summary collapse

Methods included from Softlayer::Compute::Shared

#initialize, valid_request?

Instance Attribute Details

#default_domainObject

Returns the value of attribute default_domain.



61
62
63
# File 'lib/fog/softlayer/dns.rb', line 61

def default_domain
  @default_domain
end

Instance Method Details

#create_domain(opts) ⇒ Object



73
74
75
# File 'lib/fog/softlayer/requests/dns/create_domain.rb', line 73

def create_domain(opts)
  request(:dns_domain, :create_object, :body => opts, :http_method => :POST)
end

#create_record(opts) ⇒ Object



43
44
45
# File 'lib/fog/softlayer/requests/dns/create_record.rb', line 43

def create_record(opts)
  request(:dns_domain_resourceRecord, :create_object, :body => opts, :http_method => :POST)
end

#delete_domain(id) ⇒ Object



28
29
30
# File 'lib/fog/softlayer/requests/dns/delete_domain.rb', line 28

def delete_domain(id)
  request(:dns_domain, id.to_s, :http_method => :DELETE)
end

#delete_record(id) ⇒ Object



32
33
34
# File 'lib/fog/softlayer/requests/dns/delete_record.rb', line 32

def delete_record(id)
  request(:dns_domain_resourceRecord, id.to_s, :http_method => :DELETE)
end

#get_domain(id) ⇒ Object



27
28
29
# File 'lib/fog/softlayer/requests/dns/get_domain.rb', line 27

def get_domain(id)
  request(:dns_domain, id)
end

#get_domain_by_name(name) ⇒ Object



30
31
32
# File 'lib/fog/softlayer/requests/dns/get_domain_by_name.rb', line 30

def get_domain_by_name(name)
  request(:dns_domain, "getByDomainName/" + URI::encode(name.to_s, "-"))
end

#get_domainsObject



22
23
24
# File 'lib/fog/softlayer/requests/dns/get_domains.rb', line 22

def get_domains
  request(:account, :get_domains)
end

#get_record(id) ⇒ Object



31
32
33
# File 'lib/fog/softlayer/requests/dns/get_record.rb', line 31

def get_record(id)
  request(:dns_domain_resourceRecord, id)
end

#get_records(domain_id) ⇒ Object



27
28
29
# File 'lib/fog/softlayer/requests/dns/get_records.rb', line 27

def get_records(domain_id)
  request(:dns_domain, domain_id.to_s + '/getResourceRecords')
end

#request(service, path, options = {}) ⇒ Excon::Response

Sends the real request to the real SoftLayer service.

Options Hash (options):

  • :body (Array<Hash>)

    HTTP request body parameters

  • :softlayer_api_url (String)

    Override the default (or configured) API endpoint

  • :softlayer_username (String)

    Email or user identifier for user based authentication

  • :softlayer_api_key (String)

    Password for user based authentication



80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
# File 'lib/fog/softlayer/dns.rb', line 80

def request(service, path, options={})

  # default HTTP method to get if not passed
  http_method = options[:http_method] || :get
  # set the target base url
  @request_url = options[:softlayer_api_url] || Fog::Softlayer::SL_API_URL
  # tack on the username and password
  credentialize_url(@credentials[:username], @credentials[:api_key])
  # set the SoftLayer Service name
  set_sl_service(service)
  # set the request path (known as the "method" in SL docs)
  set_sl_path(path)
  # set the query params if any


  # build request params
  params = { :headers => user_agent_header }
  params[:headers]['Content-Type'] = 'application/json'
  params[:expects] = options[:expected] || [200,201]
  params[:body] = Fog::JSON.encode({:parameters => [ options[:body] ]}) unless options[:body].nil?
  params[:query] = options[:query] unless options[:query].nil?

  # initialize connection object
  @connection = Fog::Core::Connection.new(@request_url, false, params)

  # send it
  response = @connection.request(:method => http_method)

  # decode it
  response.body = Fog::JSON.decode(response.body)
  response
end

#update_record(record_id, opts) ⇒ Object



43
44
45
# File 'lib/fog/softlayer/requests/dns/update_record.rb', line 43

def update_record(record_id, opts)
  request(:dns_domain_resourceRecord, record_id, :body => opts, :http_method => :PUT)
end