class Fog::Compute::RackspaceV2::Real
Public Class Methods
# File lib/fog/rackspace/compute_v2.rb, line 133 def initialize(options = {}) @rackspace_api_key = options[:rackspace_api_key] @rackspace_username = options[:rackspace_username] @rackspace_auth_url = options[:rackspace_auth_url] setup_custom_endpoint(options) @rackspace_must_reauthenticate = false @connection_options = options[:connection_options] || {} authenticate deprecation_warnings(options) @persistent = options[:persistent] || false @connection = Fog::Connection.new(endpoint_uri.to_s, @persistent, @connection_options) end
Public Instance Methods
This operation attaches a volume to the specified server. @param [String] server_id @param [String] volume_id @param [String] device name of the device /dev/xvd[a-p] (optional) @return [Excon::Response] response:
* body [Hash]: * volumeAttachment [Hash]: * device [String] - The name of the device, such as /dev/xvdb. Specify auto for auto-assignment. * serverId [String] - The id of the server that attached the volume * id [String] - The id of the attachment * volumeId [String] - The id of the volume that was attached
@raise [Fog::Compute::RackspaceV2::NotFound] - HTTP 404 @raise [Fog::Compute::RackspaceV2::BadRequest] - HTTP 400 @raise [Fog::Compute::RackspaceV2::InternalServerError] - HTTP 500 @raise [Fog::Compute::RackspaceV2::ServiceError] @see docs.rackspace.com/servers/api/v2/cs-devguide/content/Attach_Volume_to_Server.html
# File lib/fog/rackspace/requests/compute_v2/attach_volume.rb, line 22 def attach_volume(server_id, volume_id, device) data = { 'volumeAttachment' => { 'volumeId' => volume_id } } data['volumeAttachment']['device'] = device if device request( :body => Fog::JSON.encode(data), :expects => [200], :method => 'POST', :path => "servers/#{server_id}/os-volume_attachments" ) end
Fog::Rackspace::Service#authenticate
# File lib/fog/rackspace/compute_v2.rb, line 161 def authenticate(options={}) super({ :rackspace_api_key => @rackspace_api_key, :rackspace_username => @rackspace_username, :rackspace_auth_url => @rackspace_auth_url, :connection_options => @connection_options }) end
Changes server admin password @param [String] server_id @param [String] password @return [Excon::Response] response @raise [Fog::Compute::RackspaceV2::NotFound] - HTTP 404 @raise [Fog::Compute::RackspaceV2::BadRequest] - HTTP 400 @raise [Fog::Compute::RackspaceV2::InternalServerError] - HTTP 500 @raise [Fog::Compute::RackspaceV2::ServiceError] @note Though Rackspace
does not enforce complexity requirements for the password, the operating system might. If the password is not complex enough, the server might enter an ERROR state. @see docs.rackspace.com/servers/api/v2/cs-devguide/content/Change_Password-d1e3234.html
# File lib/fog/rackspace/requests/compute_v2/change_server_password.rb, line 16 def change_server_password(server_id, password) data = { 'changePassword' => { 'adminPass' => password } } request( :body => Fog::JSON.encode(data), :expects => [202], :method => 'POST', :path => "servers/#{server_id}/action" ) end
Confirm server resize operation @param [String] server_id The id of the server to revert @return [Excon::Response] response @raise [Fog::Compute::RackspaceV2::NotFound] - HTTP 404 @raise [Fog::Compute::RackspaceV2::BadRequest] - HTTP 400 @raise [Fog::Compute::RackspaceV2::InternalServerError] - HTTP 500 @raise [Fog::Compute::RackspaceV2::ServiceError] @note All resizes are automatically confirmed after 24 hours if you do not explicitly confirm or revert the resize. @see docs.rackspace.com/servers/api/v2/cs-devguide/content/Revert_Resized_Server-d1e4024.html
-
Status Transition:
-
VERIFY_RESIZE -> ACTIVE
-
VERIFY_RESIZE -> ERROR (on error)
-
# File lib/fog/rackspace/requests/compute_v2/confirm_resize_server.rb, line 19 def confirm_resize_server(server_id) data = { 'confirmResize' => nil } request( :body => Fog::JSON.encode(data), :expects => [204], :method => 'POST', :path => "servers/#{server_id}/action" ) end
Create an image from a running server
@param [String] server_id Id of server to create image from @param [String] name name for created image @param [Hash] options @option options [Hash] :metadata - key value pairs of image metadata @return [Excon::Response] response @raise [Fog::Compute::RackspaceV2::NotFound] - HTTP 404 @raise [Fog::Compute::RackspaceV2::BadRequest] - HTTP 400 @raise [Fog::Compute::RackspaceV2::InternalServerError] - HTTP 500 @raise [Fog::Compute::RackspaceV2::ServiceError] @see docs.rackspace.com/servers/api/v2/cs-devguide/content/Create_Image-d1e4655.html
-
State Transition:
-
SAVING -> ACTIVE
-
SAVING -> ERROR (on error)
-
# File lib/fog/rackspace/requests/compute_v2/create_image.rb, line 22 def create_image(server_id, name, options = {}) data = { 'createImage' => { 'name' => name } } data['createImage'].merge!(options) request( :body => Fog::JSON.encode(data), :expects => 202, :method => 'POST', :path => "servers/#{server_id}/action" ) end
Request a new keypair to be created @param [String] key_name: unique name of the keypair to create @return [Excon::Response] response :
* body [Hash]: - * 'keypair' [Hash]: - * 'fingerprint' [String]: unique fingerprint of the keypair * 'name' [String]: unique name of the keypair * 'private_key' [String]: the private key of the keypair (only available here, at creation time) * 'public_key' [String]: the public key of the keypair * 'user_id' [String]: the user id
@raise [Fog::Compute::RackspaceV2::NotFound] @raise [Fog::Compute::RackspaceV2::BadRequest] @raise [Fog::Compute::RackspaceV2::InternalServerError] @raise [Fog::Compute::RackspaceV2::ServiceError] @see docs.rackspace.com/servers/api/v2/cs-devguide/content/CreateKeyPair.html
# File lib/fog/rackspace/requests/compute_v2/create_keypair.rb, line 21 def create_keypair(key_name, public_key=nil) data = { 'keypair' => { 'name' => key_name } } request( :method => 'POST', :expects => 200, :path => '/os-keypairs', :body => Fog::JSON.encode(data) ) end
# File lib/fog/rackspace/requests/compute_v2/create_network.rb, line 5 def create_network(label, cidr) data = { 'network' => { 'label' => label, 'cidr' => cidr } } request( :method => 'POST', :body => Fog::JSON.encode(data), :path => "os-networksv2", :expects => 200 ) end
Create server @param [String] name name of server @param [String] image_id of the image used to create server @param [String] flavor_id id of the flavor of the image @param [String] min_count @param [String] max_count @param [Hash] options @option options [Hash] metadata key value pairs of server metadata @option options [String] OS-DCF:diskConfig The disk configuration value. (AUTO or MANUAL) @option options [Hash] personality Hash
containing data to inject into the file system of the cloud server instance during server creation. @option options [String] keypair Name of the kay-pair to associate with this server. @return [Excon::Response] response:
* body [Hash]: * server [Hash]: * name [String] - name of server * imageRef [String] - id of image used to create server * flavorRef [String] - id of flavor used to create server * OS-DCF:diskConfig [String] - The disk configuration value. * name [String] - name of server * metadata [Hash] - Metadata key and value pairs. * personality [Array]: * [Hash]: * path - path of the file created * contents - Base 64 encoded file contents * networks [Array]: * [Hash]: * uuid [String] - uuid of attached network
@raise [Fog::Compute::RackspaceV2::NotFound] - HTTP 404 @raise [Fog::Compute::RackspaceV2::BadRequest] - HTTP 400 @raise [Fog::Compute::RackspaceV2::InternalServerError] - HTTP 500 @raise [Fog::Compute::RackspaceV2::ServiceError] @see docs.rackspace.com/servers/api/v2/cs-devguide/content/CreateServers.html @see docs.rackspace.com/servers/api/v2/cs-devguide/content/Server_Metadata-d1e2529.html @see docs.rackspace.com/servers/api/v2/cs-devguide/content/Server_Personality-d1e2543.html @see docs.rackspace.com/servers/api/v2/cs-devguide/content/ch_extensions.html#diskconfig_attribute
-
State Transitions
-
BUILD -> ACTIVE
-
BUILD -> ERROR (on error)
-
# File lib/fog/rackspace/requests/compute_v2/create_server.rb, line 44 def create_server(name, image_id, flavor_id, min_count, max_count, options = {}) data = { 'server' => { 'name' => name, 'imageRef' => image_id, 'flavorRef' => flavor_id, 'minCount' => min_count, 'maxCount' => max_count } } data['server']['OS-DCF:diskConfig'] = options[:disk_config] unless options[:disk_config].nil? data['server']['metadata'] = options[:metadata] unless options[:metadata].nil? data['server']['personality'] = options[:personality] unless options[:personality].nil? data['server']['networks'] = options[:networks] || [ { :uuid => '00000000-0000-0000-0000-000000000000' }, { :uuid => '11111111-1111-1111-1111-111111111111' } ] data['server']['key_name'] = options[:keypair] unless options[:keypair].nil? request( :body => Fog::JSON.encode(data), :expects => [202], :method => 'POST', :path => "servers" ) end
Deletes a specified volume attachment from a specified server instance. @param [String] server_id id of server containing volume to delete @param [String] volume_id id of volume on server to delete @return [Excon::Response] response @raise [Fog::Compute::RackspaceV2::NotFound] - HTTP 404 @raise [Fog::Compute::RackspaceV2::BadRequest] - HTTP 400 @raise [Fog::Compute::RackspaceV2::InternalServerError] - HTTP 500 @raise [Fog::Compute::RackspaceV2::ServiceError] @see docs.rackspace.com/servers/api/v2/cs-devguide/content/Delete_Volume_Attachment.html
# File lib/fog/rackspace/requests/compute_v2/delete_attachment.rb, line 15 def delete_attachment(server_id, volume_id) request( :expects => [202], :method => 'DELETE', :path => "servers/#{server_id}/os-volume_attachments/#{volume_id}" ) end
Delete an image @param [String] image_id Id of image to delete @return [Excon::Response] response @raise [Fog::Compute::RackspaceV2::NotFound] - HTTP 404 @raise [Fog::Compute::RackspaceV2::BadRequest] - HTTP 400 @raise [Fog::Compute::RackspaceV2::InternalServerError] - HTTP 500 @raise [Fog::Compute::RackspaceV2::ServiceError] @see docs.rackspace.com/servers/api/v2/cs-devguide/content/Delete_Image-d1e4957.html
# File lib/fog/rackspace/requests/compute_v2/delete_image.rb, line 14 def delete_image(image_id) request( :expects => 204, :method => 'DELETE', :path => "images/#{image_id}" ) end
Delete the key specified with key_name @param [String] key_name: name of the key to delete @return [Excon::Response] response @raise [Fog::Compute::RackspaceV2::NotFound] @raise [Fog::Compute::RackspaceV2::BadRequest] @raise [Fog::Compute::RackspaceV2::InternalServerError] @raise [Fog::Compute::RackspaceV2::ServiceError] @see docs.rackspace.com/servers/api/v2/cs-devguide/content/DeleteKeyPair.html
# File lib/fog/rackspace/requests/compute_v2/delete_keypair.rb, line 14 def delete_keypair(key_name) request( :method => 'DELETE', :expects => 202, :path => "/os-keypairs/#{key_name}" ) end
Deletes a metadata item. @param [String<images, servers>] collection type of metadata @param [String] obj_id id of the object where the metadata is attached @param [String] key the key of the metadata to delete @return [Excon::Response] response @raise [Fog::Compute::RackspaceV2::NotFound] - HTTP 404 @raise [Fog::Compute::RackspaceV2::BadRequest] - HTTP 400 @raise [Fog::Compute::RackspaceV2::InternalServerError] - HTTP 500 @raise [Fog::Compute::RackspaceV2::ServiceError] @see docs.rackspace.com/servers/api/v2/cs-devguide/content/Delete_Metadata_Item-d1e5790.html
# File lib/fog/rackspace/requests/compute_v2/delete_metadata_item.rb, line 16 def delete_metadata_item(collection, obj_id, key) request( :expects => 204, :method => 'DELETE', :path => "/#{collection}/#{obj_id}/metadata/#{key}" ) end
# File lib/fog/rackspace/requests/compute_v2/delete_network.rb, line 5 def delete_network(id) request(:method => 'DELETE', :path => "os-networksv2/#{id}", :expects => 202) end
Deletes a specified server instance from the system. @param [String] server_id the id of the server to delete @return [Excon::Response] response @raise [Fog::Compute::RackspaceV2::NotFound] - HTTP 404 @raise [Fog::Compute::RackspaceV2::BadRequest] - HTTP 400 @raise [Fog::Compute::RackspaceV2::InternalServerError] - HTTP 500 @raise [Fog::Compute::RackspaceV2::ServiceError] @see docs.rackspace.com/servers/api/v2/cs-devguide/content/Delete_Server-d1e2883.html
# File lib/fog/rackspace/requests/compute_v2/delete_server.rb, line 14 def delete_server(server_id) request( :expects => [204], :method => 'DELETE', :path => "servers/#{server_id}" ) end
Fog::Rackspace::Service#endpoint_uri
# File lib/fog/rackspace/compute_v2.rb, line 182 def endpoint_uri(service_endpoint_url=nil) @uri = super(@rackspace_endpoint || service_endpoint_url, :rackspace_compute_url) end
Retrieves attachment @param [String] server_id @param [String] volume_id @return [Excon::Response] response:
* body [Hash]: * volumeAttachment [Hash]: * device [String] - The name of the device, such as /dev/xvdb. Specify auto for auto-assignment. * serverId [String] - The id of the server that attached the volume * id [String] - The id of the attachment * volumeId [String] - The id of the volume that was attached
@raise [Fog::Compute::RackspaceV2::NotFound] - HTTP 404 @raise [Fog::Compute::RackspaceV2::BadRequest] - HTTP 400 @raise [Fog::Compute::RackspaceV2::InternalServerError] - HTTP 500 @raise [Fog::Compute::RackspaceV2::ServiceError] @see docs.rackspace.com/servers/api/v2/cs-devguide/content/Get_Volume_Attachment_Details.html
# File lib/fog/rackspace/requests/compute_v2/get_attachment.rb, line 21 def get_attachment(server_id, volume_id) request( :expects => [200, 203, 300], :method => 'GET', :path => "servers/#{server_id}/os-volume_attachments/#{volume_id}" ) end
Retrieves flavor detail @param [Sring] flavor_id @return [Excon::Response] response:
* body [Hash]: * flavor [Hash]: * disk [Fixnum] - disk size in GB * id [String] - id of flavor * name [String] - name of flavor * ram [Fixnum] - amount of ram in MB * swap [Fixnum] - amount of swap in GB * vcpus [Fixnum] - number of virtual CPUs * links [Array] - links to flavor
@raise [Fog::Compute::RackspaceV2::NotFound] - HTTP 404 @raise [Fog::Compute::RackspaceV2::BadRequest] - HTTP 400 @raise [Fog::Compute::RackspaceV2::InternalServerError] - HTTP 500 @raise [Fog::Compute::RackspaceV2::ServiceError] @see docs.rackspace.com/servers/api/v2/cs-devguide/content/Get_Flavor_Details-d1e4317.html
# File lib/fog/rackspace/requests/compute_v2/get_flavor.rb, line 23 def get_flavor(flavor_id) request( :expects => [200, 203], :method => 'GET', :path => "flavors/#{flavor_id}" ) end
Retrieves image detail @param [String] image_id @return [Excon::Response] response:
* body [Hash]: * image [Hash]: * OS-DCF:diskConfig [String] - The disk configuration value. * created [String] - created timestamp * id [String] - id of image * metadata [Hash] - image metadata * minDisk [Fixnum] * minRam [Fixnum] * name [String] - name of image * progress [Fixnum] - progress complete. Value is from 0 to 100. * status [String] - status of current image * updated [String] - updated timestamp * links [Array] - links to flavor
@raise [Fog::Compute::RackspaceV2::NotFound] - HTTP 404 @raise [Fog::Compute::RackspaceV2::BadRequest] - HTTP 400 @raise [Fog::Compute::RackspaceV2::InternalServerError] - HTTP 500 @raise [Fog::Compute::RackspaceV2::ServiceError] @see docs.rackspace.com/servers/api/v2/cs-devguide/content/Get_Image_Details-d1e4848.html
# File lib/fog/rackspace/requests/compute_v2/get_image.rb, line 27 def get_image(image_id) request( :expects => [200, 203], :method => 'GET', :path => "images/#{image_id}" ) end
Retreive single keypair details @param [String] key_name: name of the key for which to request the details @return [Excon::Response] response :
* body [Hash]: - * 'keypair' [Hash]: - * 'fingerprint' [String]: unique fingerprint of the keypair * 'name' [String]: unique name of the keypair * 'public_key' [String]: the public key assigne to the keypair
@raise [Fog::Compute::RackspaceV2::NotFound] @raise [Fog::Compute::RackspaceV2::BadRequest] @raise [Fog::Compute::RackspaceV2::InternalServerError] @raise [Fog::Compute::RackspaceV2::ServiceError] @see docs.rackspace.com/servers/api/v2/cs-devguide/content/ListKeyPairs.html
# File lib/fog/rackspace/requests/compute_v2/get_keypair.rb, line 19 def get_keypair(key_name) request( :method => 'GET', :expects => 200, :path => "/os-keypairs/#{key_name}" ) end
Retrieves single metadatum item by key. @param [String<images, servers>] collection type of metadata @param [String] obj_id id of the object where the metadata is attached @param [String] key the key of the metadata to retrieve @return [Excon::Response] response:
* body [Hash]: * meta [Hash]:
@raise [Fog::Compute::RackspaceV2::NotFound] - HTTP 404 @raise [Fog::Compute::RackspaceV2::BadRequest] - HTTP 400 @raise [Fog::Compute::RackspaceV2::InternalServerError] - HTTP 500 @raise [Fog::Compute::RackspaceV2::ServiceError] @see docs.rackspace.com/servers/api/v2/cs-devguide/content/Get_Metadata_Item-d1e5507.html
# File lib/fog/rackspace/requests/compute_v2/get_metadata_item.rb, line 18 def get_metadata_item(collection, obj_id, key) request( :expects => 200, :method => 'GET', :path => "/#{collection}/#{obj_id}/metadata/#{key}" ) end
# File lib/fog/rackspace/requests/compute_v2/get_network.rb, line 5 def get_network(id) request(:method => 'GET', :path => "os-networksv2/#{id}", :expects => 200) end
Retrieves server detail @param [String] server_id @return [Excon::Response] response:
* body [Hash]: * server [Hash]: * OS-DCF:diskConfig [String] - The disk configuration value. * OS-EXT-STS:power_state [Fixnum] - The power state. * OS-EXT-STS:task_state [String] - The task state. * OS-EXT-STS:vm_state [String] - The VM state. * accessIPv4 [String] - The public IP version 4 access address. * accessIPv6 [String] - The public IP version 6 access address. * addresses [Hash] - Public and private IP addresses, The version field indicates whether the IP address is version 4 or 6. * created [String] - created timestamp * hostId [String] - The host id. * id [String] - id of image * image [Hash]: * id [String] - id of the image * links [Hash] - links to image * flavor [Hash]: * id [String] - id of the flavor * links [Hash] - links to flavor * links [Hash] - links to server * metadata [Hash] - server metadata * name [String] - name of server * progress [Fixnum] - progress complete. Value is from 0 to 100. * rax-bandwidth:bandwidth [Array] - The amount of bandwidth used for the specified audit period. * status [String] - The server status. * tenant_id [String] - The tenant ID. * updated [String] - updated timestamp * user_id [Array] - The user ID.
@raise [Fog::Compute::RackspaceV2::NotFound] - HTTP 404 @raise [Fog::Compute::RackspaceV2::BadRequest] - HTTP 400 @raise [Fog::Compute::RackspaceV2::InternalServerError] - HTTP 500 @raise [Fog::Compute::RackspaceV2::ServiceError] @see docs.rackspace.com/servers/api/v2/cs-devguide/content/Get_Server_Details-d1e2623.html
# File lib/fog/rackspace/requests/compute_v2/get_server.rb, line 41 def get_server(server_id) request( :expects => [200, 203, 300], :method => 'GET', :path => "servers/#{server_id}" ) end
Lists all networks and addresses associated with a specified server. @param [String] server_id @return [Excon::Response] response:
* body [Hash]: * addresses [Hash] - key is the network name and the value are an array of addresses allocated for that network
@raise [Fog::Compute::RackspaceV2::NotFound] - HTTP 404 @raise [Fog::Compute::RackspaceV2::BadRequest] - HTTP 400 @raise [Fog::Compute::RackspaceV2::InternalServerError] - HTTP 500 @raise [Fog::Compute::RackspaceV2::ServiceError]
# File lib/fog/rackspace/requests/compute_v2/list_addresses.rb, line 15 def list_addresses(server_id) request( :method => 'GET', :expects => 200, :path => "/servers/#{server_id}/ips" ) end
Lists all addresses associated with a specified server and network @param [String] server_id @param [String] network_id
@return [Excon::Response] response:
* body [Hash]: * network [Hash]: * id [String] - id of network * ip [Array]: * [Hash]: * version [Fixnum] - version of the address * addr [String] - ip address
@raise [Fog::Compute::RackspaceV2::NotFound] - HTTP 404 @raise [Fog::Compute::RackspaceV2::BadRequest] - HTTP 400 @raise [Fog::Compute::RackspaceV2::InternalServerError] - HTTP 500 @raise [Fog::Compute::RackspaceV2::ServiceError] @see docs.rackspace.com/servers/api/v2/cs-devguide/content/List_Addresses_by_Network-d1e3118.html
# File lib/fog/rackspace/requests/compute_v2/list_addresses_by_network.rb, line 22 def list_addresses_by_network(server_id, network_id) request( :method => 'GET', :expects => 200, :path => "servers/#{server_id}/ips/#{network_id}" ) end
Retrieves list of attached volumes @param [String] server_id @return [Excon::Response] response:
* body [Hash]: * volumeAttachment [Array]: * [Hash]: * device [String] - The name of the device, such as /dev/xvdb. Specify auto for auto-assignment. * serverId [String] - The id of the server that attached the volume * id [String] - The id of the attachment * volumeId [String] - The id of the volume that was attached
@raise [Fog::Compute::RackspaceV2::NotFound] - HTTP 404 @raise [Fog::Compute::RackspaceV2::BadRequest] - HTTP 400 @raise [Fog::Compute::RackspaceV2::InternalServerError] - HTTP 500 @raise [Fog::Compute::RackspaceV2::ServiceError] @see docs.rackspace.com/servers/api/v2/cs-devguide/content/List_Volume_Attachments.html
# File lib/fog/rackspace/requests/compute_v2/list_attachments.rb, line 21 def list_attachments(server_id) request( :expects => [200, 203, 300], :method => 'GET', :path => "servers/#{server_id}/os-volume_attachments" ) end
Retrieves a list of flavors @return [Excon::Response] response:
* body [Hash]: * flavors [Array]: * [Hash]: * id [String] - flavor id * links [Array] - flavor links * name [String] - flavor name
@raise [Fog::Compute::RackspaceV2::NotFound] - HTTP 404 @raise [Fog::Compute::RackspaceV2::BadRequest] - HTTP 400 @raise [Fog::Compute::RackspaceV2::InternalServerError] - HTTP 500 @raise [Fog::Compute::RackspaceV2::ServiceError] @see docs.rackspace.com/servers/api/v2/cs-devguide/content/List_Flavors-d1e4188.html
# File lib/fog/rackspace/requests/compute_v2/list_flavors.rb, line 19 def list_flavors request( :expects => [200, 203], :method => 'GET', :path => 'flavors' ) end
Retrieves a list of images @return [Excon::Response] response:
* body [Hash]: * images [Array]: * [Hash]: * id [String] - flavor id * links [Array] - image links * name [String] - image name
@raise [Fog::Compute::RackspaceV2::NotFound] - HTTP 404 @raise [Fog::Compute::RackspaceV2::BadRequest] - HTTP 400 @raise [Fog::Compute::RackspaceV2::InternalServerError] - HTTP 500 @raise [Fog::Compute::RackspaceV2::ServiceError] @see docs.rackspace.com/servers/api/v2/cs-devguide/content/List_Flavors-d1e4188.html
# File lib/fog/rackspace/requests/compute_v2/list_images.rb, line 19 def list_images request( :expects => [200, 203], :method => 'GET', :path => 'images' ) end
Returns a list of all key pairs associated with an account. @return [Excon::Response] response :
* body [Hash]: - * 'keypairs' [Array]: list of keypairs * 'keypair' [Hash]: - * 'fingerprint' [String]: unique fingerprint of the keypair * 'name' [String]: unique name of the keypair * 'public_key' [String]: the public key assigned to the keypair
@raise [Fog::Compute::RackspaceV2::NotFound] @raise [Fog::Compute::RackspaceV2::BadRequest] @raise [Fog::Compute::RackspaceV2::InternalServerError] @raise [Fog::Compute::RackspaceV2::ServiceError] @see docs.rackspace.com/servers/api/v2/cs-devguide/content/ListKeyPairs.html
# File lib/fog/rackspace/requests/compute_v2/list_keypairs.rb, line 19 def list_keypairs request( :method => 'GET', :expects => 200, :path => '/os-keypairs' ) end
Retrieves all metadata associated with a server or an image. @param [String<images, servers>] collection type of metadata @param [String] obj_id id of the object where the metadata is attached @return [Excon::Response] response:
* body [Hash]: * meta [Hash]:
@raise [Fog::Compute::RackspaceV2::NotFound] - HTTP 404 @raise [Fog::Compute::RackspaceV2::BadRequest] - HTTP 400 @raise [Fog::Compute::RackspaceV2::InternalServerError] - HTTP 500 @raise [Fog::Compute::RackspaceV2::ServiceError] @see docs.rackspace.com/servers/api/v2/cs-devguide/content/List_Metadata-d1e5089.html
# File lib/fog/rackspace/requests/compute_v2/list_metadata.rb, line 17 def list_metadata(collection, obj_id) request( :expects => [200, 203], :method => 'GET', :path => "/#{collection}/#{obj_id}/metadata" ) end
# File lib/fog/rackspace/requests/compute_v2/list_networks.rb, line 5 def list_networks request(:method => 'GET', :path => 'os-networksv2', :expects => 200) end
Retrieves list of servers @return [Excon::Response] response:
* body [Hash]: * server [Hash]: * OS-DCF:diskConfig [String] - The disk configuration value. * OS-EXT-STS:power_state [Fixnum] - The power state. * OS-EXT-STS:task_state [String] - The task state. * OS-EXT-STS:vm_state [String] - The VM state. * accessIPv4 [String] - The public IP version 4 access address. * accessIPv6 [String] - The public IP version 6 access address. * addresses [Hash] - Public and private IP addresses, The version field indicates whether the IP address is version 4 or 6. * created [String] - created timestamp * hostId [String] - The host id. * id [String] - id of image * image [Hash]: * id [String] - id of the image * links [Hash] - links to image * flavor [Hash]: * id [String] - id of the flavor * links [Hash] - links to flavor * links [Hash] - links to server * metadata [Hash] - server metadata * name [String] - name of server * progress [Fixnum] - progress complete. Value is from 0 to 100. * rax-bandwidth:bandwidth [Array] - The amount of bandwidth used for the specified audit period. * status [String] - The server status. * tenant_id [String] - The tenant ID. * updated [String] - updated timestamp * user_id [Array] - The user ID.
@raise [Fog::Compute::RackspaceV2::NotFound] - HTTP 404 @raise [Fog::Compute::RackspaceV2::BadRequest] - HTTP 400 @raise [Fog::Compute::RackspaceV2::InternalServerError] - HTTP 500 @raise [Fog::Compute::RackspaceV2::ServiceError] @see docs.rackspace.com/servers/api/v2/cs-devguide/content/List_Servers-d1e2078.html
# File lib/fog/rackspace/requests/compute_v2/list_servers.rb, line 40 def list_servers request( :expects => [200, 203, 300], :method => 'GET', :path => 'servers/detail' ) end
Reboots server @param [String] server_id @param [String<SOFT,HARD>] type type of reboot @raise [Fog::Compute::RackspaceV2::NotFound] - HTTP 404 @raise [Fog::Compute::RackspaceV2::BadRequest] - HTTP 400 @raise [Fog::Compute::RackspaceV2::InternalServerError] - HTTP 500 @raise [Fog::Compute::RackspaceV2::ServiceError] @see docs.rackspace.com/servers/api/v2/cs-devguide/content/Reboot_Server-d1e3371.html
# File lib/fog/rackspace/requests/compute_v2/reboot_server.rb, line 14 def reboot_server(server_id, type) data = { 'reboot' => { 'type' => type } } request( :body => Fog::JSON.encode(data), :expects => [202], :method => 'POST', :path => "servers/#{server_id}/action" ) end
The rebuild operation removes all data on the server and replaces it with the specified image. The serverRef and all IP addresses remain the same. If you specify name, metadata, accessIPv4, or accessIPv6 in the rebuild request, new values replace existing values. Otherwise, these values do not change. @param [String] server_id id of the server to rebuild @param [String] image_id id of image used to rebuild the server @param [Hash] options @option options [String] accessIPv4 The IP version 4 address. @option options [String] accessIPv6 The IP version 6 address. @option options [String] adminPass The administrator password. @option options [Hash] metadata key value pairs of server metadata @option options [String] OS-DCF:diskConfig The disk configuration value. (AUTO or MANUAL) @option options [Hash] personality Hash
containing data to inject into the file system of the cloud server instance during server creation. @return [Excon::Response] response:
* body [Hash]: * server [Hash]: * name [String] - name of server * imageRef [String] - id of image used to create server * flavorRef [String] - id of flavor used to create server * OS-DCF:diskConfig [String] - The disk configuration value. * name [String] - name of server * metadata [Hash] - Metadata key and value pairs. * personality [Array]: * [Hash]: * path - path of the file created * contents - Base 64 encoded file contents * networks [Array]: * [Hash]: * uuid [String] - uuid of attached network
@raise [Fog::Compute::RackspaceV2::NotFound] - HTTP 404 @raise [Fog::Compute::RackspaceV2::BadRequest] - HTTP 400 @raise [Fog::Compute::RackspaceV2::InternalServerError] - HTTP 500 @raise [Fog::Compute::RackspaceV2::ServiceError] @see docs.rackspace.com/servers/api/v2/cs-devguide/content/Rebuild_Server-d1e3538.html @see docs.rackspace.com/servers/api/v2/cs-devguide/content/Server_Metadata-d1e2529.html @see docs.rackspace.com/servers/api/v2/cs-devguide/content/Server_Personality-d1e2543.html @see docs.rackspace.com/servers/api/v2/cs-devguide/content/ch_extensions.html#diskconfig_attribute
-
Status Transition:
-
ACTIVE -> REBUILD -> ACTIVE
-
ACTIVE -> REBUILD -> ERROR (on error)
-
# File lib/fog/rackspace/requests/compute_v2/rebuild_server.rb, line 46 def rebuild_server(server_id, image_id, options={}) data = { 'rebuild' => options || {} } data['rebuild']['imageRef'] = image_id request( :body => Fog::JSON.encode(data), :expects => [202], :method => 'POST', :path => "servers/#{server_id}/action" ) end
# File lib/fog/rackspace/compute_v2.rb, line 178 def region @rackspace_region end
Fog::Rackspace::Service#request
# File lib/fog/rackspace/compute_v2.rb, line 149 def request(params, parse_json = true, &block) super(params, parse_json, &block) rescue Excon::Errors::NotFound => error raise NotFound.slurp(error, self) rescue Excon::Errors::BadRequest => error raise BadRequest.slurp(error, self) rescue Excon::Errors::InternalServerError => error raise InternalServerError.slurp(error, self) rescue Excon::Errors::HTTPStatusError => error raise ServiceError.slurp(error, self) end
# File lib/fog/rackspace/compute_v2.rb, line 174 def request_id_header "X-Compute-Request-Id" end
Puts server into rescue mode @param [String] server_id id of server to rescue @return [Excon::Response] response @raise [Fog::Rackspace::Errors::NotFound] - HTTP 404 @raise [Fog::Rackspace::Errors::BadRequest] - HTTP 400 @raise [Fog::Rackspace::Errors::InternalServerError] - HTTP 500 @raise [Fog::Rackspace::Errors::ServiceError] @note Rescue mode is only guaranteed to be active for 90 minutes @see docs.rackspace.com/servers/api/v2/cs-devguide/content/rescue_mode.html
-
Status Transition:
-
PREP_RESCUE -> RESCUE
-
PREP_RESCUE -> ACTIVE (on error)
-
# File lib/fog/rackspace/requests/compute_v2/rescue_server.rb, line 18 def rescue_server(server_id) data = { 'rescue' => nil } request( :body => Fog::JSON.encode(data), :expects => [200], :method => 'POST', :path => "servers/#{server_id}/action" ) end
Reverts server resize operation @param [String] server_id id of server to resize @param [String] flavor_id id of the desired flavor @return [Excon::Response] response @raise [Fog::Compute::RackspaceV2::NotFound] - HTTP 404 @raise [Fog::Compute::RackspaceV2::BadRequest] - HTTP 400 @raise [Fog::Compute::RackspaceV2::InternalServerError] - HTTP 500 @raise [Fog::Compute::RackspaceV2::ServiceError] @note All resizes are automatically confirmed after 24 hours if you do not explicitly confirm or revert the resize.
@see docs.rackspace.com/servers/api/v2/cs-devguide/content/Revert_Resized_Server-d1e4024.html
-
Status Transition:
-
VERIFY_RESIZE -> ACTIVE
-
VERIFY_RESIZE -> ERROR (on error)
-
# File lib/fog/rackspace/requests/compute_v2/resize_server.rb, line 20 def resize_server(server_id, flavor_id) data = { 'resize' => { 'flavorRef' => flavor_id } } request( :body => Fog::JSON.encode(data), :expects => [202], :method => 'POST', :path => "servers/#{server_id}/action" ) end
Reverts server resize operation @param [String] server_id @return [Excon::Response] response @raise [Fog::Compute::RackspaceV2::NotFound] - HTTP 404 @raise [Fog::Compute::RackspaceV2::BadRequest] - HTTP 400 @raise [Fog::Compute::RackspaceV2::InternalServerError] - HTTP 500 @raise [Fog::Compute::RackspaceV2::ServiceError] @note All resizes are automatically confirmed after 24 hours if you do not explicitly confirm or revert the resize. @see docs.rackspace.com/servers/api/v2/cs-devguide/content/Revert_Resized_Server-d1e4024.html @see Server#resize
-
Status Transition:
-
VERIFY_RESIZE -> ACTIVE
-
VERIFY_RESIZE -> ERROR (on error)
-
# File lib/fog/rackspace/requests/compute_v2/revert_resize_server.rb, line 20 def revert_resize_server(server_id) data = { 'revertResize' => nil } request( :body => Fog::JSON.encode(data), :expects => [202], :method => 'POST', :path => "servers/#{server_id}/action" ) end
# File lib/fog/rackspace/compute_v2.rb, line 170 def service_name :cloudServersOpenStack end
Sets metadata associated with a server or an image. @param [String<images, servers>] collection type of metadata @param [String] obj_id id of the object where the metadata is attached @param [Hash] metadata key value pairs of metadata @return [Excon::Response] response:
* body [Hash]: * metadata [Hash]:
@raise [Fog::Compute::RackspaceV2::NotFound] - HTTP 404 @raise [Fog::Compute::RackspaceV2::BadRequest] - HTTP 400 @raise [Fog::Compute::RackspaceV2::InternalServerError] - HTTP 500 @raise [Fog::Compute::RackspaceV2::ServiceError] @see docs.rackspace.com/servers/api/v2/cs-devguide/content/Create_or_Replace_Metadata-d1e5358.html
# File lib/fog/rackspace/requests/compute_v2/set_metadata.rb, line 18 def set_metadata(collection, obj_id, metadata = {}) request( :expects => [200, 203], :method => 'PUT', :path => "/#{collection}/#{obj_id}/metadata", :body => Fog::JSON.encode('metadata' => metadata) ) end
Sets a single metadatum item by key. @param [String<images, servers>] collection type of metadata @param [String] obj_id id of the object where the metadata is attached @param [String] key the key of the metadata to set @param [String] value the value of the metadata to set
@return [Excon::Response] response:
* body [Hash]: * meta [Hash]:
@raise [Fog::Compute::RackspaceV2::NotFound] - HTTP 404 @raise [Fog::Compute::RackspaceV2::BadRequest] - HTTP 400 @raise [Fog::Compute::RackspaceV2::InternalServerError] - HTTP 500 @raise [Fog::Compute::RackspaceV2::ServiceError] @see docs.rackspace.com/servers/api/v2/cs-devguide/content/Create_or_Update_a_Metadata_Item-d1e5633.html
# File lib/fog/rackspace/requests/compute_v2/set_metadata_item.rb, line 19 def set_metadata_item(collection, obj_id, key, value) request( :expects => 200, :method => 'PUT', :path => "/#{collection}/#{obj_id}/metadata/#{key}", :body => Fog::JSON.encode('meta' => { key => value }) ) end
Take server out of rescue mode @param [String] server_id id of server @return [Excon::Response] response @raise [Fog::Rackspace::Errors::NotFound] - HTTP 404 @raise [Fog::Rackspace::Errors::BadRequest] - HTTP 400 @raise [Fog::Rackspace::Errors::InternalServerError] - HTTP 500 @raise [Fog::Rackspace::Errors::ServiceError] @see docs.rackspace.com/servers/api/v2/cs-devguide/content/exit_rescue_mode.html
-
Status Transition:
-
RESCUE -> PREP_UNRESCUE -> ACTIVE
-
RESCUE -> ERROR (on error)
-
# File lib/fog/rackspace/requests/compute_v2/unrescue_server.rb, line 17 def unrescue_server(server_id) data = { 'unrescue' => nil } request( :body => Fog::JSON.encode(data), :expects => [202], :method => 'POST', :path => "servers/#{server_id}/action" ) end
Updates metadata items for a specified server or image. @param [String<images, servers>] collection type of metadata @param [String] obj_id id of the object where the metadata is attached @param [Hash] metadata key value pairs of metadata @return [Excon::Response] response:
* body [Hash]: * metadata [Hash]:
@raise [Fog::Compute::RackspaceV2::NotFound] - HTTP 404 @raise [Fog::Compute::RackspaceV2::BadRequest] - HTTP 400 @raise [Fog::Compute::RackspaceV2::InternalServerError] - HTTP 500 @raise [Fog::Compute::RackspaceV2::ServiceError] @see docs.rackspace.com/servers/api/v2/cs-devguide/content/Update_Metadata-d1e5208.html
# File lib/fog/rackspace/requests/compute_v2/update_metadata.rb, line 18 def update_metadata(collection, obj_id, metadata = {}) request( :expects => [200, 203], :method => 'POST', :path => "/#{collection}/#{obj_id}/metadata", :body => Fog::JSON.encode('metadata' => metadata) ) end
Update the editable attributes of a specified server. @param [String] server_id @param [Hash] options @option options [Hash] name name for server @option options [String] accessIPv4 The IP version 4 address. @option options [Hash] accessIPv6 The IP version 6 address. @raise [Fog::Compute::RackspaceV2::NotFound] - HTTP 404 @raise [Fog::Compute::RackspaceV2::BadRequest] - HTTP 400 @raise [Fog::Compute::RackspaceV2::InternalServerError] - HTTP 500 @raise [Fog::Compute::RackspaceV2::ServiceError] @note If you edit the server name, the server host name does not change. Also, server names are not guaranteed to be unique. @see docs.rackspace.com/servers/api/v2/cs-devguide/content/ServerUpdate.html
# File lib/fog/rackspace/requests/compute_v2/update_server.rb, line 18 def update_server(server_id, options={}) data = options.is_a?(Hash) ? options : { 'name' => options } #LEGACY - second parameter was previously server name request( :body => Fog::JSON.encode('server' => data), :expects => [200], :method => 'PUT', :path => "servers/#{server_id}" ) end
Private Instance Methods
# File lib/fog/rackspace/compute_v2.rb, line 221 def append_tenant_v1(credentials) account_id = credentials['X-Server-Management-Url'].match(/.*\/([\d]+)$/)[1] endpoint = @rackspace_endpoint || credentials['X-Server-Management-Url'] || DFW_ENDPOINT @uri = URI.parse(endpoint) @uri.path = "#{@uri.path}/#{account_id}" end
# File lib/fog/rackspace/compute_v2.rb, line 229 def authenticate_v1(options) credentials = Fog::Rackspace.authenticate(options, @connection_options) append_tenant_v1 credentials @auth_token = credentials['X-Auth-Token'] end
# File lib/fog/rackspace/compute_v2.rb, line 212 def deprecation_warnings(options) Fog::Logger.deprecation("The :rackspace_endpoint option is deprecated. Please use :rackspace_compute_url for custom endpoints") if options[:rackspace_endpoint] if [DFW_ENDPOINT, ORD_ENDPOINT, LON_ENDPOINT].include?(@rackspace_endpoint) && v2_authentication? regions = @identity_service.service_catalog.display_service_regions(service_name) Fog::Logger.deprecation("Please specify region using :rackspace_region rather than :rackspace_endpoint. Valid regions for :rackspace_region are #{regions}.") end end
# File lib/fog/rackspace/compute_v2.rb, line 188 def setup_custom_endpoint(options) @rackspace_endpoint = Fog::Rackspace.normalize_url(options[:rackspace_compute_url] || options[:rackspace_endpoint]) if v2_authentication? case @rackspace_endpoint when DFW_ENDPOINT @rackspace_endpoint = nil @rackspace_region = :dfw when ORD_ENDPOINT @rackspace_endpoint = nil @rackspace_region = :ord when LON_ENDPOINT @rackspace_endpoint = nil @rackspace_region = :lon else # we are actually using a custom endpoint @rackspace_region = options[:rackspace_region] || :dfw end else #if we are using auth1 and the endpoint is not set, default to DFW_ENDPOINT for historical reasons @rackspace_endpoint ||= DFW_ENDPOINT end end