class Fog::DNS::Softlayer::Mock

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

Attributes

default_domain[RW]

Public Class Methods

new(args) click to toggle source
Calls superclass method Fog::Softlayer::Compute::Shared.new
# File lib/fog/softlayer/dns.rb, line 49
def initialize(args)
  @softlayer_domains = []
  super(args)
end

Public Instance Methods

create_domain(opts) click to toggle source
# 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) click to toggle source
# 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) click to toggle source
# 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) click to toggle source
# 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) click to toggle source
# 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) click to toggle source
# 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_domains() click to toggle source
# 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) click to toggle source
# 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) click to toggle source
# 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) click to toggle source
# 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