class Fog::Volume::OpenStack::V2::Mock

Public Class Methods

data() click to toggle source
# File lib/fog/openstack/volume_v2.rb, line 80
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_v2.rb, line 98
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_v2.rb, line 94
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/requests/volume_v2/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/requests/volume_v2/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_v2.rb, line 132
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_v2.rb, line 124
def data
  self.class.data[@openstack_username]
end
get_snapshot_details(detailed=true) click to toggle source
# File lib/fog/openstack/requests/volume_v2/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/requests/volume_v2/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/requests/volume_v2/list_volumes.rb, line 12
def list_volumes(options = true, options_deprecated = {})
  response            = Excon::Response.new
  response.status     = 200
  self.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' => self.data[:volumes]}
  response
end
list_volumes_detailed(options = {}) click to toggle source
# File lib/fog/openstack/requests/volume_v2/list_volumes_detailed.rb, line 12
def list_volumes_detailed(options = {})
  response            = Excon::Response.new
  response.status     = 200
  self.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' => self.data[:volumes]}
  response
end
reset_data() click to toggle source
# File lib/fog/openstack/volume_v2.rb, line 128
def reset_data
  self.class.data.delete(@openstack_username)
end