# File lib/fog/rackspace/compute_v2.rb, line 146 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::Core::Connection.new(endpoint_uri.to_s, @persistent, @connection_options) end
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 21 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
# File lib/fog/rackspace/compute_v2.rb, line 174 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 15 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 18 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 21 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 20 def create_keypair(key_name, attributes = nil) key_data = { 'name' => key_name } if attributes.is_a?(String) Fog::Logger.deprecation "Passing the public key as the 2nd arg is deprecated, please pass a hash of attributes." key_data.merge!("public_key" => attributes) end key_data.merge!(attributes) if attributes.is_a?(Hash) data = { 'keypair' => key_data } 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 [Boolean] config_drive whether to attach a read-only configuration drive @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 * config_drive [Boolean]: Wether to use a config drive or not * user_data [String]: User data for cloud init
@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 47 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']['adminPass'] = options[:password] unless options[:password].nil? 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']['config_drive'] = options[:config_drive] unless options[:config_drive].nil? data['server']['user_data'] = options[:user_data] unless options[:user_data].nil? data['server']['networks'] = options[:networks] || [ { :uuid => '00000000-0000-0000-0000-000000000000' }, { :uuid => '11111111-1111-1111-1111-111111111111' } ] if options[:keypair] Fog::Logger.deprecation(":keypair has been depreciated. Please use :key_name instead.") options[:key_name] = options[:keypair] end data['server']['key_name'] = options[:key_name] unless options[:key_name].nil? request( :body => Fog::JSON.encode(data), :expects => [202], :method => 'POST', :path => "servers" ) end
Creates virtual interface for a server @param [String] server_id The server id to create the virtual interface on @param [String] network_id The network id to attach the virtual interface to @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/cn-devguide/content/api_create_virtual_interface.html
# File lib/fog/rackspace/requests/compute_v2/create_virtual_interface.rb, line 13 def create_virtual_interface(server_id, network_id) data = { :virtual_interface => { :network_id => network_id } } request( :expects => [200], :method => 'POST', :path => "/servers/#{server_id}/os-virtual-interfacesv2", :body => Fog::JSON.encode(data) ) 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 14 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 13 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 13 def delete_keypair(key_name) request( :method => 'DELETE', :expects => 202, :path => "/os-keypairs/#{URI.escape(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 15 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 13 def delete_server(server_id) request({ :expects => [204], :method => 'DELETE', :path => "servers/#{server_id}" }, false) end
Deletes virtual interface from server @param [String] server_id The server id that contains the virtual interface @param [String] interface_id The id of the virtual interface @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/cn-devguide/content/delete_virt_interface_api.html
# File lib/fog/rackspace/requests/compute_v2/delete_virtual_interface.rb, line 13 def delete_virtual_interface(server_id, interface_id) request( :expects => [200], :method => 'DELETE', :path => "/servers/#{server_id}/os-virtual-interfacesv2/#{interface_id}" ) end
# File lib/fog/rackspace/compute_v2.rb, line 195 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 20 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 22 def get_flavor(flavor_id) request( :expects => [200, 203], :method => 'GET', :path => "flavors/#{Fog::Rackspace.escape(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 26 def get_image(image_id) request( :expects => [200, 203], :method => 'GET', :path => "images/#{Fog::Rackspace.escape(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 18 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 17 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 40 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 14 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 21 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 20 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 18 def list_flavors request( :expects => [200, 203], :method => 'GET', :path => 'flavors' ) 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 * ram [Fixnum] - flavor ram * disk [Fixnum] - flavor disk * vcpus [Fixnum] - flavor vcpus
@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_detail.rb, line 21 def list_flavors_detail request( :expects => [200, 203], :method => 'GET', :path => 'flavors/detail' ) end
Retrieves a list of images
options<~String>:
'name'<~String> - Filters the list of images by image name
'limit'<~String> - Maximum number of objects to return
'marker'<~String> - Only return objects whose name is greater than marker
'status'<~String> - Filters the list of images by status
'type'<~String> - Filters base Rackspace images or anyn custom server images that have been created
@return [Excon::Response] response:
* body [Hash]: * images [Array]: * [Hash]: * id [String] - image 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_Images-d1e4435.html
# File lib/fog/rackspace/requests/compute_v2/list_images.rb, line 26 def list_images(options = {}) options = options.reject {|key, value| value.nil?} request( :expects => [200, 203], :method => 'GET', :path => 'images', :query => {'format' => 'json'}.merge!(options) ) end
Retrieves a list of images
options<~String>:
'name'<~String> - Filters the list of images by image name
'limit'<~String> - Maximum number of objects to return
'marker'<~String> - Only return objects whose name is greater than marker
'status'<~String> - Filters the list of images by status
'type'<~String> - Filters base Rackspace images or anyn custom server images that have been created
@return [Excon::Response] response:
* body [Hash]: * images [Array]: * [Hash]: * id [String] - image id * links [Array] - image links * name [String] - image name * minDisk [Fixnum] - image minimum disk required * minRam [Fixnum] - image minimum ram required * created [String] - image creation date (ISO 8601 format) * updated [String] - date of most recent image update * state [String] - image status (e.g. ACTIVE, SAVING, ERROR) * progress [Fixnum] - image saving progress
@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_Images-d1e4435.html
# File lib/fog/rackspace/requests/compute_v2/list_images_detail.rb, line 33 def list_images_detail(options = {}) options = options.reject {|key, value| value.nil?} request( :expects => [200, 203], :method => 'GET', :path => 'images/detail', :query => {'format' => 'json'}.merge!(options) ) 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 18 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 16 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 39 def list_servers request( :expects => [200, 203, 300], :method => 'GET', :path => 'servers/detail' ) end
Lists virtual interfaces for a server @param [String] server_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/cn-devguide/content/list_virt_interfaces.html
# File lib/fog/rackspace/requests/compute_v2/list_virtual_interfaces.rb, line 12 def list_virtual_interfaces(server_id) request( :expects => [200], :method => 'GET', :path => "/servers/#{server_id}/os-virtual-interfacesv2" ) 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 13 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 45 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 191 def region @rackspace_region end
# File lib/fog/rackspace/compute_v2.rb, line 162 def request(params, parse_json = true) super 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 187 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 19 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 Fog::Compute::RackspaceV2::Server#resize
Status Transition:
VERIFY_RESIZE -> ACTIVE
VERIFY_RESIZE -> ERROR (on error)
# File lib/fog/rackspace/requests/compute_v2/revert_resize_server.rb, line 19 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 183 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 17 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 18 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 17 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 17 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
# File lib/fog/rackspace/compute_v2.rb, line 238 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 246 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 225 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 unless options[:rackspace_region] Fog::Logger.deprecation("Default region support will be removed in an upcoming release. Please switch to manually setting your endpoint. This requires setting the :rackspace_region option") end end
# File lib/fog/rackspace/compute_v2.rb, line 201 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