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.



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

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.

Parameters:

  • service (String)

    …ayer.com/rest/v3/Softlayer_Service_Name…

  • path (String)

    …ayer.com/rest/v3/Softlayer_Service_Name/path.json

  • options (Hash) (defaults to: {})

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

Returns:

  • (Excon::Response)


79
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
# File 'lib/fog/softlayer/dns.rb', line 79

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