Class: Fog::Compute::RackspaceV2::Real
- Inherits:
-
Rackspace::Service
- Object
- Rackspace::Service
- Fog::Compute::RackspaceV2::Real
- 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/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/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
-
#attach_volume(server_id, volume_id, device) ⇒ Excon::Response
This operation attaches a volume to the specified server.
- #authenticate ⇒ Object
-
#change_server_password(server_id, password) ⇒ Excon::Response
Changes server admin password.
-
#confirm_resize_server(server_id) ⇒ Object
Confirm server resize operation * Status Transition: * VERIFY_RESIZE -> ACTIVE * VERIFY_RESIZE -> ERROR (on error).
-
#create_image(server_id, name, options = {}) ⇒ Object
Create an image from a running server.
- #create_network(label, cidr) ⇒ Object
-
#create_server(name, image_id, flavor_id, min_count, max_count, options = {}) ⇒ Excon::Response
Create server * State Transitions * BUILD -> ACTIVE * BUILD -> ERROR (on error).
-
#delete_attachment(server_id, volume_id) ⇒ Object
Deletes a specified volume attachment from a specified server instance.
-
#delete_image(image_id) ⇒ Object
Delete an image.
-
#delete_metadata_item(collection, obj_id, key) ⇒ Object
Deletes a metadata item.
- #delete_network(id) ⇒ Object
-
#delete_server(server_id) ⇒ Object
Deletes a specified server instance from the system.
- #endpoint_uri(service_endpoint_url = nil) ⇒ Object
-
#get_attachment(server_id, volume_id) ⇒ Excon::Response
Retrieves attachment.
-
#get_flavor(flavor_id) ⇒ Excon::Response
Retrieves flavor detail.
-
#get_image(image_id) ⇒ Excon::Response
Retrieves image detail.
-
#get_metadata_item(collection, obj_id, key) ⇒ Excon::Response
Retrieves single metadatum item by key.
- #get_network(id) ⇒ Object
-
#get_server(server_id) ⇒ Excon::Response
Retrieves server detail.
-
#initialize(options = {}) ⇒ Real
constructor
A new instance of Real.
-
#list_addresses(server_id) ⇒ Excon::Response
Lists all networks and addresses associated with a specified server.
-
#list_addresses_by_network(server_id, network_id) ⇒ Excon::Response
Lists all addresses associated with a specified server and network.
-
#list_attachments(server_id) ⇒ Excon::Response
Retrieves list of attached volumes.
-
#list_flavors ⇒ Excon::Response
Retrieves a list of flavors.
-
#list_images ⇒ Excon::Response
Retrieves a list of images.
-
#list_metadata(collection, obj_id) ⇒ Excon::Response
Retrieves all metadata associated with a server or an image.
- #list_networks ⇒ Object
-
#list_servers ⇒ Excon::Response
Retrieves list of servers.
-
#reboot_server(server_id, type) ⇒ Object
Reboots server.
-
#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.
- #region ⇒ Object
- #request(params) ⇒ Object
-
#resize_server(server_id, flavor_id) ⇒ Object
Reverts server resize operation * Status Transition: * VERIFY_RESIZE -> ACTIVE * VERIFY_RESIZE -> ERROR (on error).
-
#revert_resize_server(server_id) ⇒ Object
Reverts server resize operation * Status Transition: * VERIFY_RESIZE -> ACTIVE * VERIFY_RESIZE -> ERROR (on error).
- #service_name ⇒ Object
-
#set_metadata(collection, obj_id, metadata = {}) ⇒ Excon::Response
Sets metadata associated with a server or an image.
-
#set_metadata_item(collection, obj_id, key, value) ⇒ Excon::Response
Sets a single metadatum item by key.
-
#update_metadata(collection, obj_id, metadata = {}) ⇒ Excon::Response
Updates metadata items for a specified server or image.
-
#update_server(server_id, options = {}) ⇒ Object
Update the editable attributes of a specified server.
Constructor Details
#initialize(options = {}) ⇒ Real
Returns a new instance of Real.
100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 |
# File 'lib/fog/rackspace/compute_v2.rb', line 100 def initialize( = {}) @rackspace_api_key = [:rackspace_api_key] @rackspace_username = [:rackspace_username] @rackspace_auth_url = [:rackspace_auth_url] setup_custom_endpoint() @rackspace_must_reauthenticate = false @connection_options = [:connection_options] || {} authenticate deprecation_warnings() @persistent = [: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.
18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 |
# File 'lib/fog/rackspace/requests/compute_v2/attach_volume.rb', line 18 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 ⇒ Object
147 148 149 150 151 152 153 154 |
# File 'lib/fog/rackspace/compute_v2.rb', line 147 def authenticate = { :rackspace_api_key => @rackspace_api_key, :rackspace_username => @rackspace_username, :rackspace_auth_url => @rackspace_auth_url } super() end |
#change_server_password(server_id, password) ⇒ Excon::Response
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
12 13 14 15 16 17 18 19 20 21 22 23 24 25 |
# File 'lib/fog/rackspace/requests/compute_v2/change_server_password.rb', line 12 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) ⇒ Object
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)
-
14 15 16 17 18 19 20 21 22 23 24 25 |
# File 'lib/fog/rackspace/requests/compute_v2/confirm_resize_server.rb', line 14 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 = {}) ⇒ Object
Create an image from a running server
17 18 19 20 21 22 23 24 25 26 27 28 29 30 |
# File 'lib/fog/rackspace/requests/compute_v2/create_image.rb', line 17 def create_image(server_id, name, = {}) data = { 'createImage' => { 'name' => name } } data['createImage'].merge!() 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)
-
39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 |
# File 'lib/fog/rackspace/requests/compute_v2/create_server.rb', line 39 def create_server(name, image_id, flavor_id, min_count, max_count, = {}) data = { 'server' => { 'name' => name, 'imageRef' => image_id, 'flavorRef' => flavor_id, 'minCount' => min_count, 'maxCount' => max_count } } data['server']['metadata'] = [:metadata] unless [:metadata].nil? data['server']['OS-DCF:diskConfig'] = [:disk_config] unless [:disk_config].nil? data['server']['metadata'] = [:metadata] unless [:metadata].nil? data['server']['personality'] = [:personality] unless [:personality].nil? data['server']['networks'] = [: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) ⇒ Object
Deletes a specified volume attachment from a specified server instance.
10 11 12 13 14 15 16 |
# File 'lib/fog/rackspace/requests/compute_v2/delete_attachment.rb', line 10 def (server_id, volume_id) request( :expects => [202], :method => 'DELETE', :path => "servers/#{server_id}/os-volume_attachments/#{volume_id}" ) end |
#delete_image(image_id) ⇒ Object
Delete an image
9 10 11 12 13 14 15 |
# File 'lib/fog/rackspace/requests/compute_v2/delete_image.rb', line 9 def delete_image(image_id) request( :expects => 204, :method => 'DELETE', :path => "images/#{image_id}" ) end |
#delete_metadata_item(collection, obj_id, key) ⇒ Object
Deletes a metadata item.
11 12 13 14 15 16 17 |
# File 'lib/fog/rackspace/requests/compute_v2/delete_metadata_item.rb', line 11 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) ⇒ Object
Deletes a specified server instance from the system.
9 10 11 12 13 14 15 |
# File 'lib/fog/rackspace/requests/compute_v2/delete_server.rb', line 9 def delete_server(server_id) request( :expects => [204], :method => 'DELETE', :path => "servers/#{server_id}" ) end |
#endpoint_uri(service_endpoint_url = nil) ⇒ Object
164 165 166 |
# File 'lib/fog/rackspace/compute_v2.rb', line 164 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
17 18 19 20 21 22 23 |
# File 'lib/fog/rackspace/requests/compute_v2/get_attachment.rb', line 17 def (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
19 20 21 22 23 24 25 |
# File 'lib/fog/rackspace/requests/compute_v2/get_flavor.rb', line 19 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
23 24 25 26 27 28 29 |
# File 'lib/fog/rackspace/requests/compute_v2/get_image.rb', line 23 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.
14 15 16 17 18 19 20 |
# File 'lib/fog/rackspace/requests/compute_v2/get_metadata_item.rb', line 14 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
37 38 39 40 41 42 43 |
# File 'lib/fog/rackspace/requests/compute_v2/get_server.rb', line 37 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.
11 12 13 14 15 16 17 |
# File 'lib/fog/rackspace/requests/compute_v2/list_addresses.rb', line 11 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
18 19 20 21 22 23 24 |
# File 'lib/fog/rackspace/requests/compute_v2/list_addresses_by_network.rb', line 18 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
17 18 19 20 21 22 23 |
# File 'lib/fog/rackspace/requests/compute_v2/list_attachments.rb', line 17 def (server_id) request( :expects => [200, 203, 300], :method => 'GET', :path => "servers/#{server_id}/os-volume_attachments" ) end |
#list_flavors ⇒ Excon::Response
Retrieves a list of flavors
15 16 17 18 19 20 21 |
# File 'lib/fog/rackspace/requests/compute_v2/list_flavors.rb', line 15 def list_flavors request( :expects => [200, 203], :method => 'GET', :path => 'flavors' ) end |
#list_images ⇒ Excon::Response
Retrieves a list of images
15 16 17 18 19 20 21 |
# File 'lib/fog/rackspace/requests/compute_v2/list_images.rb', line 15 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.
13 14 15 16 17 18 19 |
# File 'lib/fog/rackspace/requests/compute_v2/list_metadata.rb', line 13 def (collection, obj_id) request( :expects => [200, 203], :method => 'GET', :path => "/#{collection}/#{obj_id}/metadata" ) end |
#list_networks ⇒ Object
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_servers ⇒ Excon::Response
Retrieves list of servers
36 37 38 39 40 41 42 |
# File 'lib/fog/rackspace/requests/compute_v2/list_servers.rb', line 36 def list_servers request( :expects => [200, 203, 300], :method => 'GET', :path => 'servers/detail' ) end |
#reboot_server(server_id, type) ⇒ Object
Reboots server
10 11 12 13 14 15 16 17 18 19 20 21 22 23 |
# File 'lib/fog/rackspace/requests/compute_v2/reboot_server.rb', line 10 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.
42 43 44 45 46 47 48 49 50 51 52 53 54 |
# File 'lib/fog/rackspace/requests/compute_v2/rebuild_server.rb', line 42 def rebuild_server(server_id, image_id, ={}) data = { 'rebuild' => || {} } data['rebuild']['imageRef'] = image_id request( :body => Fog::JSON.encode(data), :expects => [202], :method => 'POST', :path => "servers/#{server_id}/action" ) end |
#region ⇒ Object
160 161 162 |
# File 'lib/fog/rackspace/compute_v2.rb', line 160 def region @rackspace_region end |
#request(params) ⇒ Object
116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 |
# File 'lib/fog/rackspace/compute_v2.rb', line 116 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 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 MultiJson::DecodeError => e response.body = {} end end response end |
#resize_server(server_id, flavor_id) ⇒ Object
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)
-
15 16 17 18 19 20 21 22 23 24 25 26 27 28 |
# File 'lib/fog/rackspace/requests/compute_v2/resize_server.rb', line 15 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) ⇒ Object
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)
-
15 16 17 18 19 20 21 22 23 24 25 26 |
# File 'lib/fog/rackspace/requests/compute_v2/revert_resize_server.rb', line 15 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 ⇒ Object
156 157 158 |
# File 'lib/fog/rackspace/compute_v2.rb', line 156 def service_name :cloudServersOpenStack end |
#set_metadata(collection, obj_id, metadata = {}) ⇒ Excon::Response
Sets metadata associated with a server or an image.
14 15 16 17 18 19 20 21 |
# File 'lib/fog/rackspace/requests/compute_v2/set_metadata.rb', line 14 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.
15 16 17 18 19 20 21 22 |
# File 'lib/fog/rackspace/requests/compute_v2/set_metadata_item.rb', line 15 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 |
#update_metadata(collection, obj_id, metadata = {}) ⇒ Excon::Response
Updates metadata items for a specified server or image.
14 15 16 17 18 19 20 21 |
# File 'lib/fog/rackspace/requests/compute_v2/update_metadata.rb', line 14 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
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.
14 15 16 17 18 19 20 21 22 23 |
# File 'lib/fog/rackspace/requests/compute_v2/update_server.rb', line 14 def update_server(server_id, ={}) data = .is_a?(Hash) ? : { 'name' => } #LEGACY - second parameter was previously server name request( :body => Fog::JSON.encode('server' => data), :expects => [200], :method => 'PUT', :path => "servers/#{server_id}" ) end |