class Fog::OpenStack::DNS::V2::Mock

Public Class Methods

data() click to toggle source
# File lib/fog/openstack/dns/v2.rb, line 79
def self.data
  @data ||= Hash.new do |hash, key|
    hash[key] = {
      :zones      => [{
        "id"             => "a86dba58-0043-4cc6-a1bb-69d5e86f3ca3",
        "pool_id"        => "572ba08c-d929-4c70-8e42-03824bb24ca2",
        "project_id"     => "4335d1f0-f793-11e2-b778-0800200c9a66",
        "name"           => "example.org.",
        "email"          => "joe@example.org",
        "ttl"            => 7200,
        "serial"         => 1_404_757_531,
        "status"         => "ACTIVE",
        "action"         => "NONE",
        "description"    => "This is an example zone.",
        "masters"        => [],
        "type"           => "PRIMARY",
        "transferred_at" => '',
        "version"        => 1,
        "created_at"     => "2014-07-07T18:25:31.275934",
        "updated_at"     => '',
        "links"          => {
          "self" => "https://127.0.0.1:9001/v2/zones/a86dba58-0043-4cc6-a1bb-69d5e86f3ca3"
        }
      }],
      :pools      => {
        "metadata" => {
          "total_count" => 2
        },
        "links"    => {
          "self" => "http://127.0.0.1:9001/v2/pools"
        },
        "pools"    => [
          {
            "description" => '',
            "id"          => "794ccc2c-d751-44fe-b57f-8894c9f5c842",
            "project_id"  => '',
            "created_at"  => "2015-02-18T22:18:58.000000",
            "attributes"  => '',
            "ns_records"  => [
              {
                "hostname" => "ns1.example.org.",
                "priority" => 1
              }
            ],
            "links"       => {
              "self" => "http://127.0.0.1:9001/v2/pools/794ccc2c-d751-44fe-b57f-8894c9f5c842"
            },
            "name"        => "default",
            "updated_at"  => "2015-02-19T15:59:44.000000"
          },
          {
            "description" => '',
            "id"          => "d1716333-8c16-490f-85ee-29af36907605",
            "project_id"  => "noauth-project",
            "created_at"  => "2015-02-23T21:56:33.000000",
            "attributes"  => '',
            "ns_records"  => [
              {
                "hostname" => "ns2.example.org.",
                "priority" => 1
              }
            ],
            "links"       => {
              "self" => "http://127.0.0.1:9001/v2/pools/d1716333-8c16-490f-85ee-29af36907605"
            },
            "name"        => "example_pool",
            "updated_at"  => ''
          }
        ]
      },
      :quota      => {
        "api_export_size"   => 1000,
        "recordset_records" => 20,
        "zone_records"      => 500,
        "zone_recordsets"   => 500,
        "zones"             => 100
      },
      :recordsets => {
        "recordsets" => [{
          "description" => "This is an example record set.",
          "links"       => {
            "self" => "https://127.0.0.1:9001/v2/zones/2150b1bf-dee2-4221-9d85-11f7886fb15f/recordsets/f7b10e9b-0cae-4a91-b162-562bc6096648"
          },
          "updated_at"  => '',
          "records"     => [
            "10.1.0.2"
          ],
          "ttl"         => 3600,
          "id"          => "f7b10e9b-0cae-4a91-b162-562bc6096648",
          "name"        => "example.org.",
          "project_id"  => "4335d1f0-f793-11e2-b778-0800200c9a66",
          "zone_id"     => "2150b1bf-dee2-4221-9d85-11f7886fb15f",
          "zone_name"   => "example.com.",
          "created_at"  => "2014-10-24T19:59:44.000000",
          "version"     => 1,
          "type"        => "A",
          "status"      => "ACTIVE",
          "action"      => "NONE"
        }],
        "links"      => {
          "self" => "http://127.0.0.1:9001/v2/recordsets?limit=1",
          "next" => "http://127.0.0.1:9001/v2/recordsets?limit=1&marker=45fd892d-7a67-4f65-9df0-87273f228d6c"
        },
        "metadata"   => {
          "total_count" => 2
        }
      },
      :zone_transfer_requests => {
        "transfer_requests" => [
          {
            "created_at" => "2014-07-17T20:34:40.882579",
            "description" => "This was created by the requesting project",
            "id" => "f2ad17b5-807a-423f-a991-e06236c247be",
            "key" => "9Z2R50Y0",
            "project_id" => "1",
            "status" => "ACTIVE",
            "target_project_id" => "123456",
            "updated_at" => nil,
            "zone_id" => "6b78734a-aef1-45cd-9708-8eb3c2d26ff8",
            "zone_name" => "qa.dev.example.com.",
            "links" => {
              "self" => "http://127.0.0.1:9001/v2/zones/tasks/transfer_requests/f2ad17b5-807a-423f-a991-e06236c247be"
            }
          },
          {
            "description" => "This is scoped to the requesting project",
            "id" => "efd2d720-b0c4-43d4-99f7-d9b53e08860d",
            "zone_id" => "2c4d5e37-f823-4bee-9859-031cb44f80e7",
            "zone_name" => "subdomain.example.com.",
            "status" => "ACTIVE",
            "links" => {
              "self" => "http://127.0.0.1:9001/v2/zones/tasks/transfer_requests/efd2d720-b0c4-43d4-99f7-d9b53e08860d"
            }
          }
        ],
        "links" => {
          "self" => "http://127.0.0.1:9001/v2/zones/tasks/transfer_requests"
        }
      },
      :zone_transfer_accepts => {
        "metadata" => {
           "total_count" => 2
         },
         "links" => {
           "self" => "http://127.0.0.1:9001/v2/zones/tasks/transfer_accepts"
         },
         "transfer_accepts" => [
           {
             "status" => "COMPLETE",
             "zone_id" => "8db93d1a-59e3-4143-a393-5821abea0a46",
             "links" => {
                 "self" => "http://127.0.0.1:9001/v2/zones/tasks/transfer_accepts/afb4222b-18b3-44b3-9f54-e0dfdba1be44",
                 "zone" => "http://127.0.0.1:9001/v2/zones/8db93d1a-59e3-4143-a393-5821abea0a46"
             },
             "created_at" => "2016-06-01 05:35:35",
             "updated_at" => "2016-06-01 05:35:35",
             "key" => nil,
             "project_id" => "85604ecfb5334b50bd40ca53fc1d710f",
             "id" => "afb4222b-18b3-44b3-9f54-e0dfdba1be44",
             "zone_transfer_request_id" => "d223f7ef-77a6-459e-abd3-b4dbc97338e7"
           },
           {
             "status" => "COMPLETE",
             "zone_id" => "925bfc45-8901-4aca-aa12-18afaf0879e2",
             "links" => {
                 "self" => "http://127.0.0.1:9001/v2/zones/tasks/transfer_accepts/ecbc7091-c498-4ec4-9893-68b06297fe50",
                 "zone" => "http://127.0.0.1:9001/v2/zones/925bfc45-8901-4aca-aa12-18afaf0879e2"
             },
             "created_at" => "2016-06-01 10:06:36",
             "updated_at" => "2016-06-01 10:06:37",
             "key" => nil,
             "project_id" => "85604ecfb5334b50bd40ca53fc1d710f",
             "id" => "ecbc7091-c498-4ec4-9893-68b06297fe50",
             "zone_transfer_request_id" => "94cf9bd3-4137-430b-bf75-4e690430258c"
           }
         ]
       }
    }
  end
end
new(options = {}) click to toggle source
# File lib/fog/openstack/dns/v2.rb, line 264
def initialize(options = {})
  @openstack_username = options[:openstack_username]
  @openstack_tenant   = options[:openstack_tenant]
  @openstack_auth_uri = URI.parse(options[:openstack_auth_url])

  @auth_token = Fog::Mock.random_base64(64)
  @auth_token_expiration = (Time.now.utc + 86400).iso8601

  management_url = URI.parse(options[:openstack_auth_url])
  management_url.port = 9001
  management_url.path = '/v2'
  @openstack_management_url = management_url.to_s

  @data ||= {:users => {}}
  unless @data[:users].detect { |u| u['name'] == options[:openstack_username] }
    id = Fog::Mock.random_numbers(6).to_s
    @data[:users][id] = {
      'id'       => id,
      'name'     => options[:openstack_username],
      'email'    => "#{options[:openstack_username]}@mock.com",
      'tenantId' => Fog::Mock.random_numbers(6).to_s,
      'enabled'  => true
    }
  end
end
reset() click to toggle source
# File lib/fog/openstack/dns/v2.rb, line 260
def self.reset
  @data = nil
end

Public Instance Methods

create_recordset(zone_id, name, type, records, options = {}) click to toggle source
# File lib/fog/openstack/dns/v2/requests/create_recordset.rb, line 29
def create_recordset(zone_id, name, type, records, options = {})
  # stringify keys
  options = Hash[options.map { |k, v| [k.to_s, v] }]

  response = Excon::Response.new
  response.status = 202

  recordset = data[:recordsets]["recordsets"].first.dup
  recordset_id = recordset["id"]

  recordset["zone_id"]       = zone_id
  recordset["name"]          = name
  recordset["type"]          = type
  recordset["records"]       = records
  recordset["status"]        = "PENDING"
  recordset["action"]        = "CREATE"
  recordset["links"]["self"] = "https://127.0.0.1:9001/v2/zones/#{zone_id}/recordsets/#{recordset_id}"

  response.body = recordset.merge(options)
  response
end
create_zone(name, email, options = {}) click to toggle source
# File lib/fog/openstack/dns/v2/requests/create_zone.rb, line 28
def create_zone(name, email, options = {})
  # stringify keys
  options = Hash[options.map { |k, v| [k.to_s, v] }]

  response = Excon::Response.new
  response.status = 202

  zone = data[:zones].first.dup

  zone["name"]          = name
  zone["email"]         = email
  zone["status"]        = "PENDING"
  zone["action"]        = "CREATE"

  response.body = zone.merge(options)
  response
end
create_zone_transfer_accept(key, zone_transfer_request_id) click to toggle source
# File lib/fog/openstack/dns/v2/requests/create_zone_transfer_accept.rb, line 25
def create_zone_transfer_accept(key, zone_transfer_request_id)
  response = Excon::Response.new
  response.status = 200
  response.body = data[:zone_transfer_accepts]["transfer_accepts"].first
  response
end
create_zone_transfer_request(zone_id, options = {}) click to toggle source
# File lib/fog/openstack/dns/v2/requests/create_zone_transfer_request.rb, line 24
def create_zone_transfer_request(zone_id, options = {})
  response = Excon::Response.new
  response.status = 201
  response.body = data[:zone_transfer_requests]["transfer_requests"].first
  response
end
credentials() click to toggle source
# File lib/fog/openstack/dns/v2.rb, line 298
def credentials
  {:provider                 => 'openstack',
   :openstack_auth_url       => @openstack_auth_uri.to_s,
   :openstack_auth_token     => @auth_token,
   :openstack_region         => @openstack_region,
   :openstack_management_url => @openstack_management_url}
end
data() click to toggle source
# File lib/fog/openstack/dns/v2.rb, line 290
def data
  self.class.data[@openstack_username]
end
delete_recordset(zone_id, id, _options = {}) click to toggle source
# File lib/fog/openstack/dns/v2/requests/delete_recordset.rb, line 18
def delete_recordset(zone_id, id, _options = {})
  response = Excon::Response.new
  response.status = 202

  recordset                  = data[:recordset_updated] || data[:recordsets]["recordsets"].first.dup
  recordset["zone_id"]       = zone_id
  recordset["id"]            = id
  recordset["status"]        = "PENDING"
  recordset["action"]        = "DELETE"
  recordset["links"]["self"] = "https://127.0.0.1:9001/v2/zones/#{zone_id}/recordsets/#{id}"

  response.body = recordset
  response
end
delete_zone(id, _options = {}) click to toggle source
# File lib/fog/openstack/dns/v2/requests/delete_zone.rb, line 18
def delete_zone(id, _options = {})
  response = Excon::Response.new
  response.status = 202

  zone                  = data[:zone_updated] || data[:zones].first.dup
  zone["id"]            = id
  zone["status"]        = "PENDING"
  zone["action"]        = "DELETE"
  zone["links"]["self"] = "https://127.0.0.1:9001/v2/zones/#{id}"

  response.body = zone
  response
end
delete_zone_transfer_request(zone_transfer_request_id) click to toggle source
# File lib/fog/openstack/dns/v2/requests/delete_zone_transfer_request.rb, line 17
def delete_zone_transfer_request(zone_transfer_request_id)
  response = Excon::Response.new
  response.status = 204
  response
end
get_pool(id, _options = {}) click to toggle source
# File lib/fog/openstack/dns/v2/requests/get_pool.rb, line 18
def get_pool(id, _options = {})
  response = Excon::Response.new
  response.status = 200
  pool = data[:pool_updated] || data[:pools]['pools'].first
  pool['id'] = id
  response.body = pool
  response
end
get_quota(_project_id = nil) click to toggle source
# File lib/fog/openstack/dns/v2/requests/get_quota.rb, line 19
def get_quota(_project_id = nil)
  response = Excon::Response.new
  response.status = 200
  response.body = data[:quota_updated] || data[:quota]
  response
end
get_recordset(zone_id, id) click to toggle source
# File lib/fog/openstack/dns/v2/requests/get_recordset.rb, line 18
def get_recordset(zone_id, id)
  response = Excon::Response.new
  response.status = 200

  recordset                  = data[:recordset_updated] || data[:recordsets]["recordsets"].first
  recordset["zone_id"]       = zone_id
  recordset["id"]            = id
  recordset["action"]        = "NONE"
  recordset["status"]        = "ACTIVE"
  recordset["links"]["self"] = "https://127.0.0.1:9001/v2/zones/#{zone_id}/recordsets/#{id}"

  response.body = recordset
  response
end
get_zone(id, _options = {}) click to toggle source
# File lib/fog/openstack/dns/v2/requests/get_zone.rb, line 18
def get_zone(id, _options = {})
  response = Excon::Response.new
  response.status = 200
  zone = data[:zone_updated] || data[:zones].first
  zone["id"] = id
  response.body = zone
  response
end
get_zone_transfer_accept(zone_transfer_accept_id) click to toggle source
# File lib/fog/openstack/dns/v2/requests/get_zone_transfer_accept.rb, line 16
def get_zone_transfer_accept(zone_transfer_accept_id)
  response = Excon::Response.new
  response.status = 200
  accept = data[:zone_transfer_accepts]["transfer_accepts"].first
  accept["id"] = zone_transfer_accept_id
  response.body = accept
  response
end
get_zone_transfer_request(zone_transfer_request_id) click to toggle source
# File lib/fog/openstack/dns/v2/requests/get_zone_transfer_request.rb, line 17
def get_zone_transfer_request(zone_transfer_request_id)
  response = Excon::Response.new
  response.status = 200
  request = data[:zone_transfer_requests]["transfer_requests"].first
  request["id"] = zone_transfer_request_id
  response.body = request
  response
end
list_pools(_options = {}) click to toggle source
# File lib/fog/openstack/dns/v2/requests/list_pools.rb, line 20
def list_pools(_options = {})
  response = Excon::Response.new
  response.status = 200
  response.body = data[:pools]
  response
end
list_recordsets(zone_id = nil, options = {}) click to toggle source
# File lib/fog/openstack/dns/v2/requests/list_recordsets.rb, line 35
def list_recordsets(zone_id = nil, options = {})
  if zone_id.kind_of?(Hash)
    options = zone_id
    zone_id = nil
  end
  zone_id = options.delete(:zone_id) if zone_id.nil?

  response = Excon::Response.new
  response.status = 200
  data[:recordsets]["recordsets"].each do |rs|
    rs["zone_id"] = zone_id unless zone_id.nil?
  end
  response.body = data[:recordsets]
  response
end
list_zone_transfer_accepts(options={}) click to toggle source
# File lib/fog/openstack/dns/v2/requests/list_zone_transfer_accepts.rb, line 17
def list_zone_transfer_accepts(options={})
  response = Excon::Response.new
  response.status = 200
  response.body = data[:zone_transfer_accepts]["transfer_accepts"]
  response
end
list_zone_transfer_requests(options={}) click to toggle source
# File lib/fog/openstack/dns/v2/requests/list_zone_transfer_requests.rb, line 17
def list_zone_transfer_requests(options={})
  response = Excon::Response.new
  response.status = 200
  response.body = data[:zone_transfer_requests]["transfer_requests"]
  response
end
list_zones(_options = {}) click to toggle source
# File lib/fog/openstack/dns/v2/requests/list_zones.rb, line 20
def list_zones(_options = {})
  response = Excon::Response.new
  response.status = 200
  response.body = {'zones' => data[:zones]}
  response
end
reset_data() click to toggle source
# File lib/fog/openstack/dns/v2.rb, line 294
def reset_data
  self.class.data.delete(@openstack_username)
end
update_quota(_project_id, options = {}) click to toggle source
# File lib/fog/openstack/dns/v2/requests/update_quota.rb, line 20
def update_quota(_project_id, options = {})
  # stringify keys
  options = Hash[options.map { |k, v| [k.to_s, v] }]
  data[:quota_updated] = data[:quota].merge(options)

  response = Excon::Response.new
  response.status = 200
  response.body = data[:quota_updated]
  response
end
update_recordset(zone_id, id, options = {}) click to toggle source
# File lib/fog/openstack/dns/v2/requests/update_recordset.rb, line 20
def update_recordset(zone_id, id, options = {})
  # stringify keys
  options = Hash[options.map { |k, v| [k.to_s, v] }]

  data[:recordset_updated]                  = data[:recordsets]["recordsets"].first.merge(options)
  data[:recordset_updated]["zone_id"]       = zone_id
  data[:recordset_updated]["id"]            = id
  data[:recordset_updated]["status"]        = "PENDING"
  data[:recordset_updated]["action"]        = "UPDATE"
  data[:recordset_updated]["links"]["self"] = "https://127.0.0.1:9001/v2/zones/#{zone_id}/recordsets/#{id}"

  response = Excon::Response.new
  response.status = 202
  response.body = data[:recordset_updated]
  response
end
update_zone(id, options = {}) click to toggle source
# File lib/fog/openstack/dns/v2/requests/update_zone.rb, line 20
def update_zone(id, options = {})
  # stringify keys
  options = Hash[options.map { |k, v| [k.to_s, v] }]

  data[:zone_updated]                  = data[:zones].first.merge(options)
  data[:zone_updated]["id"]            = id
  data[:zone_updated]["status"]        = "PENDING"
  data[:zone_updated]["action"]        = "UPDATE"
  data[:zone_updated]["links"]["self"] = "https://127.0.0.1:9001/v2/zones/#{id}"

  response = Excon::Response.new
  response.status = 202
  response.body = data[:zone_updated]
  response
end
update_zone_transfer_request(zone_transfer_request_id,description,options={}) click to toggle source
# File lib/fog/openstack/dns/v2/requests/update_zone_transfer_request.rb, line 23
def update_zone_transfer_request(zone_transfer_request_id,description,options={})
  response = Excon::Response.new
  response.status = 200
  request = data[:zone_transfer_requests]["transfer_requests"]
  request.id = zone_transfer_request_id
  request.description =description
  response.body = request
  response
end