Class: Fog::DNS::Softlayer::Mock

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

The Mock Service allows you to run a fake instance of the Service which makes no real connections.

Instance Attribute Summary collapse

Instance Method Summary collapse

Methods included from Softlayer::Compute::Shared

valid_request?

Constructor Details

#initialize(args) ⇒ Mock

Returns a new instance of Mock.



49
50
51
52
# File 'lib/fog/softlayer/dns.rb', line 49

def initialize(args)
  @softlayer_domains = []
  super(args)
end

Instance Attribute Details

#default_domainObject

Returns the value of attribute default_domain.



46
47
48
# File 'lib/fog/softlayer/dns.rb', line 46

def default_domain
  @default_domain
end

Instance Method Details

#create_domain(opts) ⇒ Object



12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
# File 'lib/fog/softlayer/requests/dns/create_domain.rb', line 12

def create_domain(opts)
  response = Excon::Response.new
  updated_at = Time.now
  domain_id = Fog::Mock.random_numbers(7)
  body = {
    :id => domain_id,
    :name => opts["name"],
    :serial => updated_at.strftime("%Y%m%d")+"00",
    :updated_at => updated_at,
    :resourceRecords => [
      {
        "data"=>"ns1."+opts["name"]+".",
        "domainId"=>domain_id,
        "expire"=>604800,
        "host"=>"@",
        "id"=>Fog::Mock.random_numbers(8),
        "minimum"=>3600,
        "mxPriority"=>nil,
        "refresh"=>3600,
        "responsiblePerson"=>"admin."+opts["name"]+".",
        "retry"=>300,
        "ttl"=>86400,
        "type"=>"SOA",
      },
      {
        "data"=>"ns1.softlayer.com.",
        "domainId"=>domain_id,
        "expire"=>nil,
        "host"=>"@",
        "id"=>Fog::Mock.random_numbers(8),
        "minimum"=>nil,
        "mxPriority"=>nil,
        "refresh"=>nil,
        "retry"=>nil,
        "ttl"=>86400,
        "type"=>"NS",
      },
      {
        "data"=>"ns2.softlayer.com.",
        "domainId"=>domain_id,
        "expire"=>nil,
        "host"=>"@",
        "id"=>Fog::Mock.random_numbers(8),
        "minimum"=>nil,
        "mxPriority"=>nil,
        "refresh"=>nil,
        "retry"=>nil,
        "ttl"=>86400,
        "type"=>"NS",
      }
    ]
  }
  response.body = body
  @softlayer_domains << body
  response.status = 200
  response
end

#create_record(opts) ⇒ Object

Raises:

  • (Excon::Errors::NotFound)


12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
# File 'lib/fog/softlayer/requests/dns/create_record.rb', line 12

def create_record(opts)
  new_record = {
    "id"                => Fog::Mock.random_numbers(8),
    "data"              => opts[:data],
    "domainId"          => opts[:domainId],
    "host"              => opts[:host],
    "type"              => opts[:type],
    "minimum"           => nil,
    "expire"            => nil,
    "mxPriority"        => nil,
    "refresh"           => nil,
    "responsiblePerson" => nil,
    "retry"             => nil,
    "ttl"               => nil,
  }
  @softlayer_domains.each do |domain|
    if domain[:id].to_i == opts[:domainId]
      domain[:serial] = domain[:serial].to_i + 1
      domain[:resourceRecords] << new_record
      response = Excon::Response.new
      response.body = new_record
      response.status = 200
      return response
    end
  end
  raise Excon::Errors::NotFound
end

#delete_domain(id) ⇒ Object

Raises:

  • (Excon::Errors::NotFound)


12
13
14
15
16
17
18
19
20
21
22
23
# File 'lib/fog/softlayer/requests/dns/delete_domain.rb', line 12

def delete_domain(id)
  @softlayer_domains.each do |domain|
    if domain[:id].to_i == id
      @softlayer_domains.delete(domain)
      response = Excon::Response.new
      response.body = true
      response.status = 200
      return response
    end
  end
  raise Excon::Errors::NotFound
end

#delete_record(id) ⇒ Object



12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
# File 'lib/fog/softlayer/requests/dns/delete_record.rb', line 12

def delete_record(id)
  # Get the domain
  @domain = @softlayer_domains.each do |domain|
    domain[:resourceRecords].each do |record|
      if record["id"] == id
        domain[:serial] = domain[:serial] + 1
        domain[:resourceRecords].delete(record)
      end
    end
  end
  
  response = Excon::Response.new
  response.body = true
  response.status = 200
  response
end

#get_domain(id) ⇒ Object

Raises:

  • (Excon::Errors::NotFound)


12
13
14
15
16
17
18
19
20
21
22
# File 'lib/fog/softlayer/requests/dns/get_domain.rb', line 12

def get_domain(id)
  @softlayer_domains.each do |domain|
    if domain[:id].to_i == id
      response = Excon::Response.new
      response.body = domain
      response.status = 200
      return response
    end
  end
  raise Excon::Errors::NotFound
end

#get_domain_by_name(name) ⇒ Object



12
13
14
15
16
17
18
19
20
21
22
23
24
25
# File 'lib/fog/softlayer/requests/dns/get_domain_by_name.rb', line 12

def get_domain_by_name(name)
  @softlayer_domains.each do |domain|
    if domain[:name] == name
      response = Excon::Response.new
      response.body = [ domain ]
      response.status = 200
      return response
    end
  end
  response = Excon::Response.new
  response.body = [ ]
  response.status = 200
  return response
end

#get_domainsObject



12
13
14
15
16
17
# File 'lib/fog/softlayer/requests/dns/get_domains.rb', line 12

def get_domains
  response = Excon::Response.new
  response.body = @softlayer_domains
  response.status = 200
  return response
end

#get_record(id) ⇒ Object

Raises:

  • (Excon::Errors::NotFound)


12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
# File 'lib/fog/softlayer/requests/dns/get_record.rb', line 12

def get_record(id)
  # Get the record
  @softlayer_domains.each do |domain|
    domain[:resourceRecords].each do |record|
      if record["id"].to_i == id.to_i
        response = Excon::Response.new
        response.body = record
        response.status = 200
        return response
      end  
    end
  end
  
  raise Excon::Errors::NotFound
end

#get_records(domain_id) ⇒ Object

Raises:

  • (Excon::Errors::NotFound)


12
13
14
15
16
17
18
19
20
21
22
# File 'lib/fog/softlayer/requests/dns/get_records.rb', line 12

def get_records(domain_id)
  @softlayer_domains.each do |domain|
    if domain[:id].to_i == domain_id
      response = Excon::Response.new
      response.body = domain[:resourceRecords]
      response.status = 200
      return response
    end
  end
  raise Excon::Errors::NotFound
end

#update_record(record_id, opts) ⇒ Object



12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
# File 'lib/fog/softlayer/requests/dns/update_record.rb', line 12

def update_record(record_id, opts)
  
  # Get the domain
  @domain = @softlayer_domains.each do |domain|
    if domain[:id].to_i == opts[:domainId]
      domain
    end
  end
  
  # Get the record
  @domain.first[:resourceRecords].each do |record|
    if record["id"].to_i == record_id.to_i
      @domain.first[:serial] = (@domain.first[:serial] + 1)
      @record = record
    end  
  end
  
  # Update the data
  # ps: Separated the update to make easier future refator
  @record["data"] = opts[:data]
  @record["host"] = opts[:host]
  @record["type"] = opts[:type]
  
  response = Excon::Response.new
  response.body = @domain
  response.status = 200
  return response
end