Class/Module Index [+]

Quicksearch

Fog::Rackspace::BlockStorage::Real

Public Class Methods

new(options = {}) click to toggle source
# File lib/fog/rackspace/block_storage.rb, line 74
def initialize(options = {})
  @rackspace_api_key = options[:rackspace_api_key]
  @rackspace_username = options[:rackspace_username]
  @rackspace_auth_url = options[:rackspace_auth_url]
  @rackspace_must_reauthenticate = false
  @connection_options = options[:connection_options] || {}
  setup_custom_endpoint(options)

  authenticate

  deprecation_warnings(options)

  @persistent = options[:persistent] || false
  @connection = Fog::Connection.new(endpoint_uri.to_s, @persistent, @connection_options)
end

Public Instance Methods

authenticate() click to toggle source
# File lib/fog/rackspace/block_storage.rb, line 116
def authenticate
  options = {
    :rackspace_api_key => @rackspace_api_key,
    :rackspace_username => @rackspace_username,
    :rackspace_auth_url => @rackspace_auth_url
  }
  super(options)
end
create_snapshot(volume_id, options = {}) click to toggle source

Create a snapshot from a volume

@param [String] volume_id Id of server to create image from @param [Hash] options @option options [String] :display_name display name for snapshot @option options [String] :display_description display description for snapshot @option options [Boolean] :force Set to true to force service to create snapshot @return [Excon::Response] response:

* body [Hash]:
  * 'snapshot' [Hash]:
    * 'volume_id' [String]: - the volume_id of the snapshot
      * 'display_description' [String]: - display description of snapshot
      * 'status' [String]: - status of snapshot
      * 'id' [String]: - id of snapshot
      * 'size' [Fixnum]: - size of the snapshot in GB
      * 'display_name' [String]: - display name of snapshot
      * 'created_at' [String]: - creation time of snapshot

@raise [Fog::Rackspace::BlockStorage::NotFound] - HTTP 404 @raise [Fog::Rackspace::BlockStorage::BadRequest] - HTTP 400 @raise [Fog::Rackspace::BlockStorage::InternalServerError] - HTTP 500 @raise [Fog::Rackspace::BlockStorage::ServiceError] @note All writes to the volume should be flushed before creating the snapshot, either by un-mounting any file systems on the volume or by detaching the volume. @see docs.rackspace.com/cbs/api/v1.0/cbs-devguide/content/POST_createSnapshot__v1__tenant_id__snapshots.html

# File lib/fog/rackspace/requests/block_storage/create_snapshot.rb, line 29
def create_snapshot(volume_id, options = {})
  data = {
    'snapshot' => {
      'volume_id' => volume_id
    }
  }

  data['snapshot']['display_name'] = options[:display_name] unless options[:display_name].nil?
  data['snapshot']['display_description'] = options[:display_description] unless options[:display_description].nil?
  data['snapshot']['force'] = options[:force] unless options[:force].nil?

  request(
    :body => Fog::JSON.encode(data),
    :expects => [200],
    :method => 'POST',
    :path => "snapshots"
  )
end
create_volume(size, options = {}) click to toggle source

Create volume

@param [Integer] size size of volume in GB. Minimum size is 100 @param [Hash] options @option options [String] :display_name display name for volume @option options [String] :display_description display description for volume @option options [String] :volume_type type of volume @option options [String] :snapshot_id The optional snapshot from which to create a volume. @return [Excon::Response] response:

* body [Hash]:
  * 'volume' [Hash]:
    * 'volume_type' [String]: - type of volume
    * 'display_description' [String]: - volume description
    * 'metadata' [Hash]: - volume metadata
    * 'availability_zone'[String]: - region of the volume
    * 'status' [String]: - status of volume
    * 'id' [String]: - id of volume
    * 'attachments' [Array<Hash]: - array of hashes containing attachment information
    * 'size' [Fixnum]: - size of volume in GB (100 GB minimum)
    * 'snapshot_id' [String]: - The optional snapshot from which to create a volume.
    * 'display_name' [String]: - display name of volume
    * 'created_at' [String]: - the volume creation time

@raise [Fog::Rackspace::BlockStorage::NotFound] - HTTP 404 @raise [Fog::Rackspace::BlockStorage::BadRequest] - HTTP 400 @raise [Fog::Rackspace::BlockStorage::InternalServerError] - HTTP 500 @raise [Fog::Rackspace::BlockStorage::ServiceError] @see docs.rackspace.com/cbs/api/v1.0/cbs-devguide/content/POST_createVolume__v1__tenant_id__volumes.html

# File lib/fog/rackspace/requests/block_storage/create_volume.rb, line 33
def create_volume(size, options = {})
  data = {
    'volume' => {
      'size' => size
    }
  }

  data['volume']['display_name'] = options[:display_name] unless options[:display_name].nil?
  data['volume']['display_description'] = options[:display_description] unless options[:display_description].nil?
  data['volume']['volume_type'] = options[:volume_type] unless options[:volume_type].nil?
  data['volume']['availability_zone'] = options[:availability_zone] unless options[:availability_zone].nil?
  data['volume']['snapshot_id'] = options[:snapshot_id] unless options[:snapshot_id].nil?

  request(
    :body => Fog::JSON.encode(data),
    :expects => [200],
    :method => 'POST',
    :path => "volumes"
  )
end
delete_snapshot(snapshot_id) click to toggle source

Delete snapshot

@param [String] snapshot_id Id of snapshot to delete @return [Excon::Response] response @raise [Fog::Rackspace::BlockStorage::NotFound] - HTTP 404 @raise [Fog::Rackspace::BlockStorage::BadRequest] - HTTP 400 @raise [Fog::Rackspace::BlockStorage::InternalServerError] - HTTP 500 @raise [Fog::Rackspace::BlockStorage::ServiceError] @see docs.rackspace.com/cbs/api/v1.0/cbs-devguide/content/POST_createSnapshot__v1__tenant_id__snapshots.html

# File lib/fog/rackspace/requests/block_storage/delete_snapshot.rb, line 15
def delete_snapshot(snapshot_id)
  request(
    :expects => [202],
    :method => 'DELETE',
    :path => "snapshots/#{snapshot_id}"
  )
end
delete_volume(volume_id) click to toggle source

Delete volume

@param [String] volume_id Id of volume to delete @return [Excon::Response] response @raise [Fog::Rackspace::BlockStorage::NotFound] - HTTP 404 @raise [Fog::Rackspace::BlockStorage::BadRequest] - HTTP 400 @raise [Fog::Rackspace::BlockStorage::InternalServerError] - HTTP 500 @raise [Fog::Rackspace::BlockStorage::ServiceError] @note You cannot delete a volume until all of its dependent snaphosts have been deleted. @see docs.rackspace.com/cbs/api/v1.0/cbs-devguide/content/DELETE_deleteVolume__v1__tenant_id__volumes.html

# File lib/fog/rackspace/requests/block_storage/delete_volume.rb, line 16
def delete_volume(volume_id)
  request(
    :expects => [202],
    :method => 'DELETE',
    :path => "volumes/#{volume_id}"
  )
end
endpoint_uri(service_endpoint_url=nil) click to toggle source
# File lib/fog/rackspace/block_storage.rb, line 133
def endpoint_uri(service_endpoint_url=nil)
  @uri = super(@rackspace_endpoint || service_endpoint_url, :rackspace_block_storage_url)
end
get_snapshot(snapshot_id) click to toggle source

Retrieves snapshot detail @param [String] snapshot_id @return [Excon::Response] response:

* body [Hash]:
  * 'snapshot' [Hash]:
    * 'volume_id' [String]: -  volume_id of the snapshot
    * 'display_description' [String]: - snapshot display description
    * 'status' [String]: - snapshot status
    * 'os-extended-snapshot-attributes:project_id' [String]: -
    * 'id' [String]: - snapshot id
    * 'size' [Fixnum]: - size of the snapshot in GB
    * 'os-extended-snapshot-attributes:progress' [String]: -
    * 'display_name' [String]: - display name of snapshot
    * 'created_at' [String]: - creation time of snapshot

@raise [Fog::Rackspace::BlockStorage::NotFound] - HTTP 404 @raise [Fog::Rackspace::BlockStorage::BadRequest] - HTTP 400 @raise [Fog::Rackspace::BlockStorage::InternalServerError] - HTTP 500 @raise [Fog::Rackspace::BlockStorage::ServiceError] @see docs.rackspace.com/cbs/api/v1.0/cbs-devguide/content/GET_getSnapshot__v1__tenant_id__snapshots.html

# File lib/fog/rackspace/requests/block_storage/get_snapshot.rb, line 25
def get_snapshot(snapshot_id)
  request(
    :expects => [200],
    :method => 'GET',
    :path => "snapshots/#{snapshot_id}"
  )
end
get_volume(volume_id) click to toggle source

Retrieves volume detail @param [String] volume_id @return [Excon::Response] response:

* body  [Hash]:
  * 'volume' [Hash]:
    * 'volume_type' [String]: - volume type
    * 'display_description' [String]: - volume display description
    * 'metadata' [Hash]: - volume metadata
    * 'availability_zone' [String]: - region of volume
    * 'status' [String]: - status of volume
    * 'id' [String]: - id of volume
    * 'attachments' [Array<Hash]: - array of hashes containing attachment information
    * 'size' [Fixnum]: - size of volume in GB (100 GB minimum)
    * 'snapshot_id' [String]: - The optional snapshot from which to create a volume.
    * 'os-vol-host-attr:host' [String]: -
    * 'display_name' [String]: - display name of volume
    * 'created_at' [String]: - the volume creation time
    * 'os-vol-tenant-attr:tenant_id' [String]: -

@raise [Fog::Rackspace::BlockStorage::NotFound] - HTTP 404 @raise [Fog::Rackspace::BlockStorage::BadRequest] - HTTP 400 @raise [Fog::Rackspace::BlockStorage::InternalServerError] - HTTP 500 @raise [Fog::Rackspace::BlockStorage::ServiceError]

@see http://docs.rackspace.com/cbs/api/v1.0/cbs-devguide/content/GET_getVolume__v1__tenant_id__volumes.html
# File lib/fog/rackspace/requests/block_storage/get_volume.rb, line 29
def get_volume(volume_id)
  request(
    :expects => [200],
    :method => 'GET',
    :path => "volumes/#{volume_id}"
  )
end
get_volume_type(volume_type_id) click to toggle source

Retrieves volume type detail @param [String] volume_type_id @return [Excon::Response] response:

* body [Hash]:
  * 'volume_type' [Hash]: -
    * 'name' [String]: - name of volume type
    * 'extra_specs' [Hash]: -
    * 'id' [String]: - id of volume type

@raise [Fog::Rackspace::BlockStorage::NotFound] - HTTP 404 @raise [Fog::Rackspace::BlockStorage::BadRequest] - HTTP 400 @raise [Fog::Rackspace::BlockStorage::InternalServerError] - HTTP 500 @raise [Fog::Rackspace::BlockStorage::ServiceError] @see docs.rackspace.com/cbs/api/v1.0/cbs-devguide/content/GET_getVolumeType__v1__tenant_id__types.html

# File lib/fog/rackspace/requests/block_storage/get_volume_type.rb, line 19
def get_volume_type(volume_type_id)
  request(
    :expects => [200],
    :method => 'GET',
    :path => "types/#{volume_type_id}"
  )
end
list_snapshots() click to toggle source

Retrieves list of snapshots @return [Excon::Response] response:

* body [Hash]:
  * 'snapshots' [Array]: -
    * 'volume_id' [String]: - volume_id of the snapshot
    * 'display_description' [String]: - display description of snapshot
    * 'status' [String]: - status of snapshot
    * 'id' [String]: - id of snapshot
    * 'size' [Fixnum]: - size of the snapshot in GB
    * 'display_name' [String]: - display name of snapshot
    * 'created_at' [String]: - creation time of snapshot

@raise [Fog::Rackspace::BlockStorage::NotFound] - HTTP 404 @raise [Fog::Rackspace::BlockStorage::BadRequest] - HTTP 400 @raise [Fog::Rackspace::BlockStorage::InternalServerError] - HTTP 500 @raise [Fog::Rackspace::BlockStorage::ServiceError] @see docs.rackspace.com/cbs/api/v1.0/cbs-devguide/content/GET_getSnapshotsSimple__v1__tenant_id__snapshots.html

# File lib/fog/rackspace/requests/block_storage/list_snapshots.rb, line 22
def list_snapshots
  request(
    :expects => [200],
    :method => 'GET',
    :path => 'snapshots'
  )
end
list_volume_types() click to toggle source

Retrieves list of volume types @return [Excon::Response] response

* body [Hash]:
  * 'volume_types' [Array]: -
    * 'name' [String]: - name of volume type
    * 'extra_specs' [Hash]: -
    * 'id' [Fixnum]: - id of volume type

@raise [Fog::Rackspace::BlockStorage::NotFound] - HTTP 404 @raise [Fog::Rackspace::BlockStorage::BadRequest] - HTTP 400 @raise [Fog::Rackspace::BlockStorage::InternalServerError] - HTTP 500 @raise [Fog::Rackspace::BlockStorage::ServiceError] @see docs.rackspace.com/cbs/api/v1.0/cbs-devguide/content/GET_getVolumeTypes__v1__tenant_id__types.html

# File lib/fog/rackspace/requests/block_storage/list_volume_types.rb, line 18
def list_volume_types
  request(
    :expects => [200],
    :method => 'GET',
    :path => 'types'
  )
end
list_volumes() click to toggle source

Retrieves list of volumes @return [Excon::Response] response:

* body [Hash]:
  * 'volumes' [Array]: -
    * 'volume_type' [String]: - volume type
    * 'display_description' [String]: - display desciption for volume
    * 'metadata' [Hash]: - metadata for volume
    * 'availability_zone' [String]: - region for volume
    * 'status' [String]: - status of volume
    * 'id' [String]: - id of volume
    * 'attachments' [Array]: - array of hashes containing attachment information
    * 'size' [Fixnum]: -  size of volume in GB (100 GB minimum)
    * 'snapshot_id' [String]: - optional snapshot from which to create a volume.
    * 'display_name' [String]: - display name of bolume
    * 'created_at' [String]: - volume creation time

@raise [Fog::Rackspace::BlockStorage::NotFound] - HTTP 404 @raise [Fog::Rackspace::BlockStorage::BadRequest] - HTTP 400 @raise [Fog::Rackspace::BlockStorage::InternalServerError] - HTTP 500 @raise [Fog::Rackspace::BlockStorage::ServiceError] @see docs.rackspace.com/cbs/api/v1.0/cbs-devguide/content/GET_getVolumesSimple__v1__tenant_id__volumes.html

# File lib/fog/rackspace/requests/block_storage/list_volumes.rb, line 26
def list_volumes
  request(
    :expects => [200],
    :method => 'GET',
    :path => 'volumes'
  )
end
region() click to toggle source
# File lib/fog/rackspace/block_storage.rb, line 129
def region
  @rackspace_region
end
request(params) click to toggle source
# File lib/fog/rackspace/block_storage.rb, line 90
def request(params)
  begin
    response = @connection.request(params.merge!({
      :headers  => {
        'Content-Type' => 'application/json',
        'Accept' => 'application/json',
        'X-Auth-Token' => auth_token
      }.merge!(params[:headers] || {}),
      :host     => endpoint_uri.host,
      :path     => "#{endpoint_uri.path}/#{params[:path]}"
    }))
  rescue Excon::Errors::NotFound => error
    raise NotFound.slurp(error, region)
  rescue Excon::Errors::BadRequest => error
    raise BadRequest.slurp error
  rescue Excon::Errors::InternalServerError => error
    raise InternalServerError.slurp error
  rescue Excon::Errors::HTTPStatusError => error
    raise ServiceError.slurp error
  end
  unless response.body.empty?
    response.body = Fog::JSON.decode(response.body)
  end
  response
end
service_name() click to toggle source
# File lib/fog/rackspace/block_storage.rb, line 125
def service_name
  :cloudBlockStorage
end

[Validate]

Generated with the Darkfish Rdoc Generator 2.