class Fog::OpenStack::Volume::V3::Mock

Public Class Methods

data() click to toggle source
# File lib/fog/openstack/volume/v3/mock.rb, line 6
def self.data
  @data ||= Hash.new do |hash, key|
    hash[key] = {
      :users   => {},
      :tenants => {},
      :quota   => {
        'gigabytes' => 1000,
        'volumes'   => 10,
        'snapshots' => 10
      }
    }
  end
end
new(options = {}) click to toggle source
# File lib/fog/openstack/volume/v3/mock.rb, line 24
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       = 8776
  management_url.path       = '/v1'
  @openstack_management_url = management_url.to_s

  @data ||= {:users => {}}
  unless @data[:users].find { |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/volume/v3/mock.rb, line 20
def self.reset
  @data = nil
end

Public Instance Methods

create_snapshot(volume_id, name, description, _force = false) click to toggle source
# File lib/fog/openstack/volume/v3/requests/create_snapshot.rb, line 25
def create_snapshot(volume_id, name, description, _force = false)
  response        = Excon::Response.new
  response.status = 202
  response.body   = {
    "snapshot" => {
      "status"      => "creating",
      "name"        => name,
      "created_at"  => Time.now,
      "description" => description,
      "volume_id"   => volume_id,
      "id"          => "5",
      "size"        => 1
    }
  }
  response
end
create_volume(name, description, size, options = {}) click to toggle source
# File lib/fog/openstack/volume/v3/requests/create_volume.rb, line 24
def create_volume(name, description, size, options = {})
  response        = Excon::Response.new
  response.status = 202
  response.body   = {
    'volume' => {
      'id'                => Fog::Mock.random_numbers(2),
      'name'              => name,
      'description'       => description,
      'metadata'          => options['metadata'] || {},
      'size'              => size,
      'status'            => 'creating',
      'snapshot_id'       => options[:snapshot_id] || nil,
      'image_id'          => options[:imageRef] || nil,
      'volume_type'       => nil,
      'availability_zone' => 'nova',
      'created_at'        => Time.now,
      'attachments'       => []
    }
  }
  response
end
credentials() click to toggle source
# File lib/fog/openstack/volume/v3/mock.rb, line 58
def credentials
  {:provider                 => 'openstack',
   :openstack_auth_url       => @openstack_auth_uri.to_s,
   :openstack_auth_token     => @auth_token,
   :openstack_management_url => @openstack_management_url}
end
data() click to toggle source
# File lib/fog/openstack/volume/v3/mock.rb, line 50
def data
  self.class.data[@openstack_username]
end
get_snapshot_details(_detailed = true) click to toggle source
# File lib/fog/openstack/volume/v3/requests/get_snapshot_details.rb, line 12
def get_snapshot_details(_detailed = true)
  response        = Excon::Response.new
  response.status = 200
  response.body   = {
    'snapshot' => {
      'id'          => '1',
      'name'        => 'Snapshot1',
      'description' => 'Volume1 snapshot',
      'size'        => 1,
      'volume_id'   => '1',
      'status'      => 'available',
      'created_at'  => Time.now
    }
  }
  response
end
get_volume_details(_detailed = true) click to toggle source
# File lib/fog/openstack/volume/v3/requests/get_volume_details.rb, line 12
def get_volume_details(_detailed = true)
  response        = Excon::Response.new
  response.status = 200
  response.body   = {
    'volume' => {
      'id'                => '1',
      'name'              => Fog::Mock.random_letters(rand(8) + 5),
      'description'       => Fog::Mock.random_letters(rand(12) + 10),
      'size'              => 3,
      'volume_type'       => nil,
      'snapshot_id'       => '4',
      'status'            => 'online',
      'availability_zone' => 'nova',
      'created_at'        => Time.now,
      'attachments'       => []
    }
  }
  response
end
list_volumes(_options = true, _options_deprecated = {}) click to toggle source
# File lib/fog/openstack/volume/v3/requests/list_volumes.rb, line 12
def list_volumes(_options = true, _options_deprecated = {})
  response            = Excon::Response.new
  response.status     = 200
  data[:volumes] ||= [
    {"status"            => "available",
     "description"       => "test 1 desc",
     "availability_zone" => "nova",
     "name"              => "Volume1",
     "attachments"       => [{}],
     "volume_type"       => nil,
     "snapshot_id"       => nil,
     "size"              => 1,
     "id"                => 1,
     "created_at"        => Time.now,
     "metadata"          => {}},
    {"status"            => "available",
     "description"       => "test 2 desc",
     "availability_zone" => "nova",
     "name"              => "Volume2",
     "attachments"       => [{}],
     "volume_type"       => nil,
     "snapshot_id"       => nil,
     "size"              => 1,
     "id"                => 2,
     "created_at"        => Time.now,
     "metadata"          => {}}
  ]
  response.body = {'volumes' => data[:volumes]}
  response
end
list_volumes_detailed(_options = {}) click to toggle source
# File lib/fog/openstack/volume/v3/requests/list_volumes_detailed.rb, line 12
def list_volumes_detailed(_options = {})
  response            = Excon::Response.new
  response.status     = 200
  data[:volumes] ||= [
    {"status"            => "available",
     "description"       => "test 1 desc",
     "availability_zone" => "nova",
     "name"              => "Volume1",
     "attachments"       => [{}],
     "volume_type"       => nil,
     "snapshot_id"       => nil,
     "size"              => 1,
     "id"                => 1,
     "created_at"        => Time.now,
     "metadata"          => {}},
    {"status"            => "available",
     "description"       => "test 2 desc",
     "availability_zone" => "nova",
     "name"              => "Volume2",
     "attachments"       => [{}],
     "volume_type"       => nil,
     "snapshot_id"       => nil,
     "size"              => 1,
     "id"                => 2,
     "created_at"        => Time.now,
     "metadata"          => {}}
  ]
  response.body = {'volumes' => data[:volumes]}
  response
end
reset_data() click to toggle source
# File lib/fog/openstack/volume/v3/mock.rb, line 54
def reset_data
  self.class.data.delete(@openstack_username)
end