Class: Fog::Compute::RackspaceV2::Real

Inherits:
Rackspace::Service show all
Defined in:
lib/fog/rackspace/compute_v2.rb,
lib/fog/rackspace/requests/compute_v2/get_image.rb,
lib/fog/rackspace/requests/compute_v2/get_flavor.rb,
lib/fog/rackspace/requests/compute_v2/get_server.rb,
lib/fog/rackspace/requests/compute_v2/get_network.rb,
lib/fog/rackspace/requests/compute_v2/list_images.rb,
lib/fog/rackspace/requests/compute_v2/create_image.rb,
lib/fog/rackspace/requests/compute_v2/delete_image.rb,
lib/fog/rackspace/requests/compute_v2/list_flavors.rb,
lib/fog/rackspace/requests/compute_v2/list_servers.rb,
lib/fog/rackspace/requests/compute_v2/set_metadata.rb,
lib/fog/rackspace/requests/compute_v2/attach_volume.rb,
lib/fog/rackspace/requests/compute_v2/create_server.rb,
lib/fog/rackspace/requests/compute_v2/delete_server.rb,
lib/fog/rackspace/requests/compute_v2/list_metadata.rb,
lib/fog/rackspace/requests/compute_v2/list_networks.rb,
lib/fog/rackspace/requests/compute_v2/reboot_server.rb,
lib/fog/rackspace/requests/compute_v2/rescue_server.rb,
lib/fog/rackspace/requests/compute_v2/resize_server.rb,
lib/fog/rackspace/requests/compute_v2/update_server.rb,
lib/fog/rackspace/requests/compute_v2/create_network.rb,
lib/fog/rackspace/requests/compute_v2/delete_network.rb,
lib/fog/rackspace/requests/compute_v2/get_attachment.rb,
lib/fog/rackspace/requests/compute_v2/list_addresses.rb,
lib/fog/rackspace/requests/compute_v2/rebuild_server.rb,
lib/fog/rackspace/requests/compute_v2/unrescue_server.rb,
lib/fog/rackspace/requests/compute_v2/update_metadata.rb,
lib/fog/rackspace/requests/compute_v2/list_attachments.rb,
lib/fog/rackspace/requests/compute_v2/delete_attachment.rb,
lib/fog/rackspace/requests/compute_v2/get_metadata_item.rb,
lib/fog/rackspace/requests/compute_v2/set_metadata_item.rb,
lib/fog/rackspace/requests/compute_v2/delete_metadata_item.rb,
lib/fog/rackspace/requests/compute_v2/revert_resize_server.rb,
lib/fog/rackspace/requests/compute_v2/confirm_resize_server.rb,
lib/fog/rackspace/requests/compute_v2/change_server_password.rb,
lib/fog/rackspace/requests/compute_v2/list_addresses_by_network.rb

Instance Method Summary collapse

Constructor Details

#initialize(options = {}) ⇒ Real

Returns a new instance of Real.



126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
# File 'lib/fog/rackspace/compute_v2.rb', line 126

def initialize(options = {})
  @rackspace_api_key = options[:rackspace_api_key]
  @rackspace_username = options[:rackspace_username]
  @rackspace_auth_url = options[:rackspace_auth_url]
  setup_custom_endpoint(options)
  @rackspace_must_reauthenticate = false
  @connection_options = options[:connection_options] || {}

  authenticate

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

Instance Method Details

#attach_volume(server_id, volume_id, device) ⇒ Excon::Response

This operation attaches a volume to the specified server.

Parameters:

Returns:

  • (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

Raises:

See Also:



22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
# File 'lib/fog/rackspace/requests/compute_v2/attach_volume.rb', line 22

def attach_volume(server_id, volume_id, device)
  data = {
    'volumeAttachment' => {
      'volumeId' => volume_id
    }
  }

  data['volumeAttachment']['device'] = device if device
  
  request(
    :body => Fog::JSON.encode(data),
    :expects => [200],
    :method => 'POST',
    :path => "servers/#{server_id}/os-volume_attachments"
  )
end

#authenticateObject



173
174
175
176
177
178
179
180
# File 'lib/fog/rackspace/compute_v2.rb', line 173

def authenticate
  options = {
    :rackspace_api_key => @rackspace_api_key,
    :rackspace_username => @rackspace_username,
    :rackspace_auth_url => @rackspace_auth_url
  }
  super(options)
end

#change_server_password(server_id, password) ⇒ Excon::Response

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.

Changes server admin password



16
17
18
19
20
21
22
23
24
25
26
27
28
29
# File 'lib/fog/rackspace/requests/compute_v2/change_server_password.rb', line 16

def change_server_password(server_id, password)
  data = {
    'changePassword' => {
      'adminPass' => password
    }
  }

  request(
    :body => Fog::JSON.encode(data),
    :expects => [202],
    :method => 'POST',
    :path => "servers/#{server_id}/action"
  )
end

#confirm_resize_server(server_id) ⇒ Excon::Response

Note:

All resizes are automatically confirmed after 24 hours if you do not explicitly confirm or revert the resize.

Confirm server resize operation

  • Status Transition:

    • VERIFY_RESIZE -> ACTIVE

    • VERIFY_RESIZE -> ERROR (on error)



19
20
21
22
23
24
25
26
27
28
29
30
# File 'lib/fog/rackspace/requests/compute_v2/confirm_resize_server.rb', line 19

def confirm_resize_server(server_id)
  data = {
    'confirmResize' => nil
  }

  request(
    :body => Fog::JSON.encode(data),
    :expects => [204],
    :method => 'POST',
    :path => "servers/#{server_id}/action"
  )
end

#create_image(server_id, name, options = {}) ⇒ Excon::Response

Create an image from a running server

  • State Transition:

    • SAVING -> ACTIVE

    • SAVING -> ERROR (on error)

Parameters:

  • server_id (String)

    Id of server to create image from

  • name (String)

    name for created image

  • options (Hash) (defaults to: {})

Options Hash (options):

  • :metadata (Hash)
    • key value pairs of image metadata

Returns:

  • (Excon::Response)

    response

Raises:

See Also:



22
23
24
25
26
27
28
29
30
31
32
33
34
35
# File 'lib/fog/rackspace/requests/compute_v2/create_image.rb', line 22

def create_image(server_id, name, options = {})
  data = {
    'createImage' => {
      'name' => name
    }
  }
  data['createImage'].merge!(options)          
  request(
    :body     => Fog::JSON.encode(data),
    :expects  => 202,
    :method   => 'POST',
    :path     => "servers/#{server_id}/action"
  )
end

#create_network(label, cidr) ⇒ Object



5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
# 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 = {}) ⇒ Excon::Response

Create server

  • State Transitions

    • BUILD -> ACTIVE

    • BUILD -> ERROR (on error)

Parameters:

  • name (String)

    name of server

  • image_id (String)

    of the image used to create server

  • flavor_id (String)

    id of the flavor of the image

  • min_count (String)
  • max_count (String)
  • options (Hash) (defaults to: {})

Options Hash (options):

  • metadata (Hash)

    key value pairs of server metadata

  • OS-DCF:diskConfig (String)

    The disk configuration value. (AUTO or MANUAL)

  • personality (Hash)

    Hash containing data to inject into the file system of the cloud server instance during server creation.

Returns:

  • (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

Raises:

See Also:



43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
# File 'lib/fog/rackspace/requests/compute_v2/create_server.rb', line 43

def create_server(name, image_id, flavor_id, min_count, max_count, options = {})
  data = {
    'server' => {
      'name' => name,
      'imageRef' => image_id,
      'flavorRef' => flavor_id,
      'minCount' => min_count,
      'maxCount' => max_count
    }
  }

  data['server']['OS-DCF:diskConfig'] = options[:disk_config] unless options[:disk_config].nil?
  data['server']['metadata'] = options[:metadata] unless options[:metadata].nil?
  data['server']['personality'] = options[:personality] unless options[:personality].nil?
  data['server']['networks'] = options[:networks] || [
    { :uuid => '00000000-0000-0000-0000-000000000000' },
    { :uuid => '11111111-1111-1111-1111-111111111111' }
  ]

  request(
    :body => Fog::JSON.encode(data),
    :expects => [202],
    :method => 'POST',
    :path => "servers"
  )
end

#delete_attachment(server_id, volume_id) ⇒ Excon::Response

Deletes a specified volume attachment from a specified server instance.

Parameters:

  • server_id (String)

    id of server containing volume to delete

  • volume_id (String)

    id of volume on server to delete

Returns:

  • (Excon::Response)

    response

Raises:

See Also:



15
16
17
18
19
20
21
# File 'lib/fog/rackspace/requests/compute_v2/delete_attachment.rb', line 15

def delete_attachment(server_id, volume_id)
  request(
    :expects => [202],
    :method => 'DELETE',
    :path => "servers/#{server_id}/os-volume_attachments/#{volume_id}"
  )
end

#delete_image(image_id) ⇒ Excon::Response

Delete an image



14
15
16
17
18
19
20
# File 'lib/fog/rackspace/requests/compute_v2/delete_image.rb', line 14

def delete_image(image_id)
  request(
    :expects  => 204,
    :method   => 'DELETE',
    :path     => "images/#{image_id}"
  )
end

#delete_metadata_item(collection, obj_id, key) ⇒ Excon::Response

Deletes a metadata item.

Parameters:

  • collection (String<images, servers>)

    type of metadata

  • obj_id (String)

    id of the object where the metadata is attached

  • key (String)

    the key of the metadata to delete

Returns:

  • (Excon::Response)

    response

Raises:

See Also:



16
17
18
19
20
21
22
# File 'lib/fog/rackspace/requests/compute_v2/delete_metadata_item.rb', line 16

def (collection, obj_id, key)
  request(
    :expects => 204,
    :method => 'DELETE',
    :path => "/#{collection}/#{obj_id}/metadata/#{key}"
  )
end

#delete_network(id) ⇒ Object



5
6
7
# 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) ⇒ Excon::Response

Deletes a specified server instance from the system.

Parameters:

  • server_id (String)

    the id of the server to delete

Returns:

  • (Excon::Response)

    response

Raises:

See Also:



14
15
16
17
18
19
20
# File 'lib/fog/rackspace/requests/compute_v2/delete_server.rb', line 14

def delete_server(server_id)
  request(
    :expects => [204],
    :method => 'DELETE',
    :path => "servers/#{server_id}"
  )
end

#endpoint_uri(service_endpoint_url = nil) ⇒ Object



190
191
192
# File 'lib/fog/rackspace/compute_v2.rb', line 190

def endpoint_uri(service_endpoint_url=nil)
  @uri = super(@rackspace_endpoint || service_endpoint_url, :rackspace_compute_url)
end

#get_attachment(server_id, volume_id) ⇒ Excon::Response

Retrieves attachment

Parameters:

Returns:

  • (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

Raises:

See Also:



21
22
23
24
25
26
27
# File 'lib/fog/rackspace/requests/compute_v2/get_attachment.rb', line 21

def get_attachment(server_id, volume_id)
  request(
    :expects => [200, 203, 300],
    :method => 'GET',
    :path => "servers/#{server_id}/os-volume_attachments/#{volume_id}"
  )
end

#get_flavor(flavor_id) ⇒ Excon::Response

Retrieves flavor detail

Parameters:

  • flavor_id (Sring)

Returns:

  • (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

Raises:

See Also:



23
24
25
26
27
28
29
# File 'lib/fog/rackspace/requests/compute_v2/get_flavor.rb', line 23

def get_flavor(flavor_id)
  request(
    :expects => [200, 203],
    :method => 'GET',
    :path => "flavors/#{flavor_id}"
  )
end

#get_image(image_id) ⇒ Excon::Response

Retrieves image detail

Parameters:

Returns:

  • (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

Raises:

See Also:



27
28
29
30
31
32
33
# File 'lib/fog/rackspace/requests/compute_v2/get_image.rb', line 27

def get_image(image_id)
  request(
    :expects => [200, 203],
    :method => 'GET',
    :path => "images/#{image_id}"
  )
end

#get_metadata_item(collection, obj_id, key) ⇒ Excon::Response

Retrieves single metadatum item by key.

Parameters:

  • collection (String<images, servers>)

    type of metadata

  • obj_id (String)

    id of the object where the metadata is attached

  • key (String)

    the key of the metadata to retrieve

Returns:

  • (Excon::Response)

    response:

    • body [Hash]:

      • meta [Hash]:

Raises:

See Also:



18
19
20
21
22
23
24
# File 'lib/fog/rackspace/requests/compute_v2/get_metadata_item.rb', line 18

def (collection, obj_id, key)
  request(
    :expects => 200,
    :method => 'GET',
    :path => "/#{collection}/#{obj_id}/metadata/#{key}"
  )
end

#get_network(id) ⇒ Object



5
6
7
# 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) ⇒ Excon::Response

Retrieves server detail

Parameters:

Returns:

  • (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.

Raises:

See Also:



41
42
43
44
45
46
47
# File 'lib/fog/rackspace/requests/compute_v2/get_server.rb', line 41

def get_server(server_id)
  request(
    :expects => [200, 203, 300],
    :method => 'GET',
    :path => "servers/#{server_id}"
  )
end

#list_addresses(server_id) ⇒ Excon::Response

Lists all networks and addresses associated with a specified server.

Parameters:

Returns:

  • (Excon::Response)

    response:

    • body [Hash]:

      • addresses [Hash] - key is the network name and the value are an array of addresses allocated for that network

Raises:



15
16
17
18
19
20
21
# File 'lib/fog/rackspace/requests/compute_v2/list_addresses.rb', line 15

def list_addresses(server_id)
  request(
    :method   => 'GET',
    :expects  => 200,
    :path     => "/servers/#{server_id}/ips"
  )
end

#list_addresses_by_network(server_id, network_id) ⇒ Excon::Response

Lists all addresses associated with a specified server and network

Parameters:

Returns:

  • (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

Raises:

See Also:



22
23
24
25
26
27
28
# File 'lib/fog/rackspace/requests/compute_v2/list_addresses_by_network.rb', line 22

def list_addresses_by_network(server_id, network_id)
  request(
    :method   => 'GET',
    :expects  => 200,
    :path     => "servers/#{server_id}/ips/#{network_id}"
  )
end

#list_attachments(server_id) ⇒ Excon::Response

Retrieves list of attached volumes

Parameters:

Returns:

  • (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

Raises:

See Also:



21
22
23
24
25
26
27
# File 'lib/fog/rackspace/requests/compute_v2/list_attachments.rb', line 21

def list_attachments(server_id)
  request(
    :expects => [200, 203, 300],
    :method => 'GET',
    :path => "servers/#{server_id}/os-volume_attachments"
  )
end

#list_flavorsExcon::Response

Retrieves a list of flavors

Returns:

  • (Excon::Response)

    response:

    • body [Hash]:

      • flavors [Array]:

        • [Hash]:

          • id [String] - flavor id

          • links [Array] - flavor links

          • name [String] - flavor name

Raises:

See Also:



19
20
21
22
23
24
25
# File 'lib/fog/rackspace/requests/compute_v2/list_flavors.rb', line 19

def list_flavors
  request(
    :expects => [200, 203],
    :method => 'GET',
    :path => 'flavors'
  )
end

#list_imagesExcon::Response

Retrieves a list of images

Returns:

  • (Excon::Response)

    response:

    • body [Hash]:

      • images [Array]:

        • [Hash]:

          • id [String] - flavor id

          • links [Array] - image links

          • name [String] - image name

Raises:

See Also:



19
20
21
22
23
24
25
# File 'lib/fog/rackspace/requests/compute_v2/list_images.rb', line 19

def list_images
  request(
    :expects => [200, 203],
    :method => 'GET',
    :path => 'images'
  )
end

#list_metadata(collection, obj_id) ⇒ Excon::Response

Retrieves all metadata associated with a server or an image.

Parameters:

  • collection (String<images, servers>)

    type of metadata

  • obj_id (String)

    id of the object where the metadata is attached

Returns:

  • (Excon::Response)

    response:

    • body [Hash]:

      • meta [Hash]:

Raises:

See Also:



17
18
19
20
21
22
23
# File 'lib/fog/rackspace/requests/compute_v2/list_metadata.rb', line 17

def (collection, obj_id)
  request(
    :expects => [200, 203],
    :method => 'GET',
    :path => "/#{collection}/#{obj_id}/metadata"
  )
end

#list_networksObject



5
6
7
# 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_serversExcon::Response

Retrieves list of servers

Returns:

  • (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.

Raises:

See Also:



40
41
42
43
44
45
46
# File 'lib/fog/rackspace/requests/compute_v2/list_servers.rb', line 40

def list_servers
  request(
    :expects => [200, 203, 300],
    :method => 'GET',
    :path => 'servers/detail'
  )
end

#reboot_server(server_id, type) ⇒ Object

Reboots server



14
15
16
17
18
19
20
21
22
23
24
25
26
27
# File 'lib/fog/rackspace/requests/compute_v2/reboot_server.rb', line 14

def reboot_server(server_id, type)
  data = {
    'reboot' => {
      'type' => type
    }
  }

  request(
    :body => Fog::JSON.encode(data),
    :expects => [202],
    :method => 'POST',
    :path => "servers/#{server_id}/action"
  )
end

#rebuild_server(server_id, image_id, options = {}) ⇒ Excon::Response

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.

  • Status Transition:

    • ACTIVE -> REBUILD -> ACTIVE

    • ACTIVE -> REBUILD -> ERROR (on error)

Parameters:

  • server_id (String)

    id of the server to rebuild

  • image_id (String)

    id of image used to rebuild the server

  • options (Hash) (defaults to: {})

Options Hash (options):

  • accessIPv4 (String)

    The IP version 4 address.

  • accessIPv6 (String)

    The IP version 6 address.

  • adminPass (String)

    The administrator password.

  • metadata (Hash)

    key value pairs of server metadata

  • OS-DCF:diskConfig (String)

    The disk configuration value. (AUTO or MANUAL)

  • personality (Hash)

    Hash containing data to inject into the file system of the cloud server instance during server creation.

Returns:

  • (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

Raises:

See Also:



46
47
48
49
50
51
52
53
54
55
56
57
58
# File 'lib/fog/rackspace/requests/compute_v2/rebuild_server.rb', line 46

def rebuild_server(server_id, image_id, options={})
  data = {
    'rebuild' => options || {}
  }
  data['rebuild']['imageRef'] = image_id

  request(
    :body => Fog::JSON.encode(data),
    :expects => [202],
    :method => 'POST',
    :path => "servers/#{server_id}/action"
  )
end

#regionObject



186
187
188
# File 'lib/fog/rackspace/compute_v2.rb', line 186

def region
  @rackspace_region
end

#request(params) ⇒ Object



142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
# File 'lib/fog/rackspace/compute_v2.rb', line 142

def request(params)
  begin
    response = @connection.request(params.merge!({
      :headers  => {
        'Content-Type' => 'application/json',
        'Accept' => 'application/json',
        'X-Auth-Token' => auth_token
      }.merge!(params[:headers] || {}),
      :host     => endpoint_uri.host,
      :path     => "#{endpoint_uri.path}/#{params[:path]}"
    }))
  rescue Excon::Errors::NotFound => error
    raise NotFound.slurp(error, region)
  rescue Excon::Errors::BadRequest => error
    raise BadRequest.slurp error
  rescue Excon::Errors::InternalServerError => error
    raise InternalServerError.slurp error
  rescue Excon::Errors::HTTPStatusError => error
    raise ServiceError.slurp error
  end

  unless response.body.empty?
    begin
      response.body = Fog::JSON.decode(response.body)
    rescue Fog::JSON::LoadError
      response.body = {}
    end
  end
  response
end

#rescue_server(server_id) ⇒ Excon::Response

Note:

Rescue mode is only guaranteed to be active for 90 minutes

Puts server into rescue mode

  • Status Transition:

    • PREP_RESCUE -> RESCUE

    • PREP_RESCUE -> ACTIVE (on error)

Parameters:

  • server_id (String)

    id of server to rescue

Returns:

  • (Excon::Response)

    response

Raises:

See Also:



18
19
20
21
22
23
24
25
26
27
28
29
# 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) ⇒ Excon::Response

Note:

All resizes are automatically confirmed after 24 hours if you do not explicitly confirm or revert the resize.

Reverts server resize operation

  • Status Transition:

    • VERIFY_RESIZE -> ACTIVE

    • VERIFY_RESIZE -> ERROR (on error)

Parameters:

  • server_id (String)

    id of server to resize

  • flavor_id (String)

    id of the desired flavor

Returns:

  • (Excon::Response)

    response

Raises:

See Also:



20
21
22
23
24
25
26
27
28
29
30
31
32
33
# File 'lib/fog/rackspace/requests/compute_v2/resize_server.rb', line 20

def resize_server(server_id, flavor_id)
  data = {
    'resize' => {
      'flavorRef' => flavor_id
    }
  }

  request(
    :body => Fog::JSON.encode(data),
    :expects => [202],
    :method => 'POST',
    :path => "servers/#{server_id}/action"
  )
end

#revert_resize_server(server_id) ⇒ Excon::Response

Note:

All resizes are automatically confirmed after 24 hours if you do not explicitly confirm or revert the resize.

Reverts server resize operation

  • Status Transition:

    • VERIFY_RESIZE -> ACTIVE

    • VERIFY_RESIZE -> ERROR (on error)



20
21
22
23
24
25
26
27
28
29
30
31
# File 'lib/fog/rackspace/requests/compute_v2/revert_resize_server.rb', line 20

def revert_resize_server(server_id)
  data = {
    'revertResize' => nil
  }

  request(
    :body => Fog::JSON.encode(data),
    :expects => [202],
    :method => 'POST',
    :path => "servers/#{server_id}/action"
  )
end

#service_nameObject



182
183
184
# File 'lib/fog/rackspace/compute_v2.rb', line 182

def service_name
  :cloudServersOpenStack
end

#set_metadata(collection, obj_id, metadata = {}) ⇒ Excon::Response

Sets metadata associated with a server or an image.

Parameters:

  • collection (String<images, servers>)

    type of metadata

  • obj_id (String)

    id of the object where the metadata is attached

  • metadata (Hash) (defaults to: {})

    key value pairs of metadata

Returns:

  • (Excon::Response)

    response:

    • body [Hash]:

      • metadata [Hash]:

Raises:

See Also:



18
19
20
21
22
23
24
25
# File 'lib/fog/rackspace/requests/compute_v2/set_metadata.rb', line 18

def (collection, obj_id,  = {})
  request(
    :expects => [200, 203],
    :method => 'PUT',
    :path => "/#{collection}/#{obj_id}/metadata",
    :body => Fog::JSON.encode('metadata' => )            
  )
end

#set_metadata_item(collection, obj_id, key, value) ⇒ Excon::Response

Sets a single metadatum item by key.

Parameters:

  • collection (String<images, servers>)

    type of metadata

  • obj_id (String)

    id of the object where the metadata is attached

  • key (String)

    the key of the metadata to set

  • value (String)

    the value of the metadata to set

Returns:

  • (Excon::Response)

    response:

    • body [Hash]:

      • meta [Hash]:

Raises:

See Also:



19
20
21
22
23
24
25
26
# File 'lib/fog/rackspace/requests/compute_v2/set_metadata_item.rb', line 19

def (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) ⇒ Excon::Response

Take server out of rescue mode

  • Status Transition:

    • RESCUE -> PREP_UNRESCUE -> ACTIVE

    • RESCUE -> ERROR (on error)

Parameters:

  • server_id (String)

    id of server

Returns:

  • (Excon::Response)

    response

Raises:

See Also:



17
18
19
20
21
22
23
24
25
26
27
28
# 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 = {}) ⇒ Excon::Response

Updates metadata items for a specified server or image.

Parameters:

  • collection (String<images, servers>)

    type of metadata

  • obj_id (String)

    id of the object where the metadata is attached

  • metadata (Hash) (defaults to: {})

    key value pairs of metadata

Returns:

  • (Excon::Response)

    response:

    • body [Hash]:

      • metadata [Hash]:

Raises:

See Also:



18
19
20
21
22
23
24
25
# File 'lib/fog/rackspace/requests/compute_v2/update_metadata.rb', line 18

def (collection, obj_id,  = {})
  request(
    :expects => [200, 203],
    :method => 'POST',
    :path => "/#{collection}/#{obj_id}/metadata",
    :body => Fog::JSON.encode('metadata' => )            
  )
end

#update_server(server_id, options = {}) ⇒ Object

Note:

If you edit the server name, the server host name does not change. Also, server names are not guaranteed to be unique.

Update the editable attributes of a specified server.

Parameters:

  • server_id (String)
  • options (Hash) (defaults to: {})

Options Hash (options):

  • name (Hash)

    name for server

  • accessIPv4 (String)

    The IP version 4 address.

  • accessIPv6 (Hash)

    The IP version 6 address.

Raises:

See Also:



18
19
20
21
22
23
24
25
26
27
# File 'lib/fog/rackspace/requests/compute_v2/update_server.rb', line 18

def update_server(server_id, options={})
  data = options.is_a?(Hash) ? options : { 'name' => options } #LEGACY - second parameter was previously server name

  request(
    :body => Fog::JSON.encode('server' => data),
    :expects => [200],
    :method => 'PUT',
    :path => "servers/#{server_id}"
  )
end