class Fog::Compute::RackspaceV2::Real

Public Class Methods

new(options = {}) click to toggle source
# 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

Public Instance Methods

attach_volume(server_id, volume_id, device) click to toggle source

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
authenticate(options={}) click to toggle source
Calls superclass method Fog::Rackspace::Service#authenticate
# 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
change_server_password(server_id, password) click to toggle source

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_resize_server(server_id) click to toggle source

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_image(server_id, name, options = {}) click to toggle source

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
create_keypair(key_name, attributes = nil) click to toggle source

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
create_network(label, cidr) click to toggle source
# 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(name, image_id, flavor_id, min_count, max_count, options = {}) click to toggle source

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. @option options [Array<Hash>] block_device_mapping A manually specified block device mapping to fully control the creation and

attachment of volumes to this server. Mutually exclusive with :volume_id or :volume_image_id. If provided, leave image_id
as "". See http://developer.openstack.org/api-ref-compute-v2-ext.html#ext-os-block-device-mapping-v2-boot for details.

@option options [String] boot_volume_id Id of a pre-created bootable volume to use for this server. If provided, leave image_id as “”. @option options [String] boot_image_id Id of an image to create a bootable volume from and attach to this server. If provided,

leave image_id as "".

@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 @see developer.openstack.org/api-ref-compute-v2-ext.html#ext-os-block-device-mapping-v2-boot

  • State Transitions

    • BUILD -> ACTIVE

    • BUILD -> ERROR (on error)

# File lib/fog/rackspace/requests/compute_v2/create_server.rb, line 54
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?

  if options[:block_device_mapping]
    if options[:boot_volume_id]
      Fog::Logger.warning("Manual :block_device_mapping overrides :boot_volume_id in #create_server!")
    end

    if options[:boot_image_id]
      Fog::Logger.warning("Manual :block_device_mapping overrides :boot_image_id in #create_server!")
    end

    data['server']['block_device_mapping_v2'] = options[:block_device_mapping]
  else
    if options[:boot_volume_id]
      if options[:boot_image_id]
        Fog::Logger.warning(":boot_volume_id overrides :boot_image_id!")
      end

      data['server']['block_device_mapping_v2'] = [{
        'boot_index' => '0',
        'uuid' => options[:boot_volume_id],
        'source_type' => 'volume',
        'destination_type' => 'volume',
        'volume_size' => 100
      }]
    end

    if options[:boot_image_id]
      data['server']['block_device_mapping_v2'] = [{
        'boot_index' => '0',
        'uuid' => options[:boot_image_id],
        'source_type' => 'image',
        'destination_type' => 'volume',
        'volume_size' => 100
      }]
    end
end

  request(
    :body    => Fog::JSON.encode(data),
    :expects => [202],
    :method  => 'POST',
    :path    => "servers"
  )
end
create_virtual_interface(server_id, network_id) click to toggle source

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
delete_attachment(server_id, volume_id) click to toggle source

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_image(image_id) click to toggle source

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_keypair(key_name) click to toggle source

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
delete_metadata_item(collection, obj_id, key) click to toggle source

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
delete_network(id) click to toggle source
# 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
delete_server(server_id) click to toggle source

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
delete_virtual_interface(server_id, interface_id) click to toggle source

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
endpoint_uri(service_endpoint_url=nil) click to toggle source
Calls superclass method Fog::Rackspace::Service#endpoint_uri
# 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
get_attachment(server_id, volume_id) click to toggle source

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
get_flavor(flavor_id) click to toggle source

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
get_image(image_id) click to toggle source

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
get_keypair(key_name) click to toggle source

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
get_metadata_item(collection, obj_id, key) click to toggle source

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
get_network(id) click to toggle source
# 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
get_server(server_id) click to toggle source

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
list_addresses(server_id) click to toggle source

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
list_addresses_by_network(server_id, network_id) click to toggle source

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
list_attachments(server_id) click to toggle source

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
list_flavors() click to toggle source

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
list_flavors_detail() click to toggle source

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
list_images(options = {}) click to toggle source

Retrieves a list of images

Parameters

  • 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
list_images_detail(options = {}) click to toggle source

Retrieves a list of images

Parameters

  • 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
list_keypairs() click to toggle source

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
list_metadata(collection, obj_id) click to toggle source

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
list_networks() click to toggle source
# File lib/fog/rackspace/requests/compute_v2/list_networks.rb, line 5
def list_networks
  request(:method => 'GET', :path => 'os-networksv2', :expects => 200)
end
list_servers() click to toggle source

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
list_virtual_interfaces(server_id) click to toggle source

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
reboot_server(server_id, type) click to toggle source

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
rebuild_server(server_id, image_id, options={}) click to toggle source

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
region() click to toggle source
# File lib/fog/rackspace/compute_v2.rb, line 191
def region
  @rackspace_region
end
request(params, parse_json = true) click to toggle source
Calls superclass method Fog::Rackspace::Service#request
# 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
request_id_header() click to toggle source
# File lib/fog/rackspace/compute_v2.rb, line 187
def request_id_header
  "x-compute-request-id"
end
rescue_server(server_id) click to toggle source

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
resize_server(server_id, flavor_id) click to toggle source

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
revert_resize_server(server_id) click to toggle source

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 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
service_name() click to toggle source
# File lib/fog/rackspace/compute_v2.rb, line 183
def service_name
  :cloudServersOpenStack
end
set_metadata(collection, obj_id, metadata = {}) click to toggle source

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
set_metadata_item(collection, obj_id, key, value) click to toggle source

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
unrescue_server(server_id) click to toggle source

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
update_metadata(collection, obj_id, metadata = {}) click to toggle source

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_server(server_id, options={}) click to toggle source

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

Private Instance Methods

append_tenant_v1(credentials) click to toggle source
# File lib/fog/rackspace/compute_v2.rb, line 234
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
authenticate_v1(options) click to toggle source
# File lib/fog/rackspace/compute_v2.rb, line 242
def authenticate_v1(options)
  credentials = Fog::Rackspace.authenticate(options, @connection_options)
  append_tenant_v1 credentials
  @auth_token = credentials['X-Auth-Token']
end
deprecation_warnings(options) click to toggle source
# 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
end
setup_custom_endpoint(options) click to toggle source
# 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]
    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