Class: Fog::DNS::SakuraCloud::Real

Inherits:
Object
  • Object
show all
Includes:
SakuraCloud::Utils::Request
Defined in:
lib/fog/sakuracloud/dns.rb,
lib/fog/sakuracloud/requests/dns/list_zones.rb,
lib/fog/sakuracloud/requests/dns/create_zone.rb,
lib/fog/sakuracloud/requests/dns/delete_zone.rb,
lib/fog/sakuracloud/requests/dns/modify_zone.rb

Instance Method Summary collapse

Methods included from SakuraCloud::Utils::Request

#request

Constructor Details

#initialize(options = {}) ⇒ Real

Returns a new instance of Real.



22
23
24
25
26
27
28
29
30
31
32
33
34
35
# File 'lib/fog/sakuracloud/dns.rb', line 22

def initialize(options = {})
  @auth_encode = Base64.strict_encode64([
    options[:sakuracloud_api_token],
    options[:sakuracloud_api_token_secret]
  ].join(':'))
  Fog.credentials[:sakuracloud_api_token]        = options[:sakuracloud_api_token]
  Fog.credentials[:sakuracloud_api_token_secret] = options[:sakuracloud_api_token_secret]

  @sakuracloud_api_url = options[:sakuracloud_api_url] || 'https://secure.sakura.ad.jp'
  @api_zone            = options[:api_zone] || Fog.credentials[:sakuracloud_api_zone] || 'is1b'
  Fog::SakuraCloud.validate_api_zone!(@api_zone)

  @connection = Fog::Core::Connection.new(@sakuracloud_api_url)
end

Instance Method Details

#create_zone(options) ⇒ Object



7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
# File 'lib/fog/sakuracloud/requests/dns/create_zone.rb', line 7

def create_zone(options)
  name = options[:name] ? options[:name] : options[:zone]
  body = {
    "CommonServiceItem"=>{
      "Name"=>name,
      "Status"=>{"Zone"=>options[:zone]},
      "Provider"=>{"Class"=>"dns"},
      "Description"=> options[:description],
      "Settings" => {
        "DNS" => {
          "ResourceRecordSets" => options[:rr_sets]
        }
      }
    }
  }

  request(
    :headers => {
      'Authorization' => "Basic #{@auth_encode}"
    },
    :expects  => 201,
    :method => 'POST',
    :path => "#{Fog::SakuraCloud.build_endpoint(@api_zone)}/commonserviceitem",
    :body => Fog::JSON.encode(body)
  )
end

#delete_zone(id) ⇒ Object



7
8
9
10
11
12
13
14
15
16
# File 'lib/fog/sakuracloud/requests/dns/delete_zone.rb', line 7

def delete_zone( id )
  request(
    :headers => {
      'Authorization' => "Basic #{@auth_encode}"
    },
    :expects  => [200],
    :method => 'DELETE',
    :path => "#{Fog::SakuraCloud.build_endpoint(@api_zone)}/commonserviceitem/#{id}"
  )
end

#list_zones(options = {}) ⇒ Object



7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
# File 'lib/fog/sakuracloud/requests/dns/list_zones.rb', line 7

def list_zones(options = {})
  filter = {
    "Filter" => {
      "Provider.Class" => "dns"
    }
  }
  request(
    :headers => {
      'Authorization' => "Basic #{@auth_encode}"
    },
    :method => 'GET',
    :path => "#{Fog::SakuraCloud.build_endpoint(@api_zone)}/commonserviceitem",
    :query => URI.encode(Fog::JSON.encode(filter))
  )
end

#modify_zone(options) ⇒ Object



7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
# File 'lib/fog/sakuracloud/requests/dns/modify_zone.rb', line 7

def modify_zone(options)
  body = {
    "CommonServiceItem"=>{
      "Settings" => options[:settings]
    }
  }

  request(
    :headers => {
      'Authorization' => "Basic #{@auth_encode}"
    },
    :expects  => 200,
    :method => 'PUT',
    :path => "#{Fog::SakuraCloud.build_endpoint(@api_zone)}/commonserviceitem/#{options[:id]}",
    :body => Fog::JSON.encode(body)
  )
end