# 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
# 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 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
@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
@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
@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
# 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
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
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
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
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
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
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
# File lib/fog/rackspace/block_storage.rb, line 129 def region @rackspace_region end
# 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
Generated with the Darkfish Rdoc Generator 2.