Class: Fog::Rackspace::Servers
- Inherits:
-
Object
- Object
- Fog::Rackspace::Servers
- Defined in:
- lib/fog/rackspace/servers.rb,
lib/fog/rackspace/models/servers/image.rb,
lib/fog/rackspace/models/servers/flavor.rb,
lib/fog/rackspace/models/servers/images.rb,
lib/fog/rackspace/models/servers/server.rb,
lib/fog/rackspace/models/servers/flavors.rb,
lib/fog/rackspace/models/servers/servers.rb,
lib/fog/rackspace/requests/files/put_object.rb,
lib/fog/rackspace/requests/files/delete_object.rb,
lib/fog/rackspace/requests/files/get_container.rb,
lib/fog/rackspace/requests/files/put_container.rb,
lib/fog/rackspace/requests/servers/list_images.rb,
lib/fog/rackspace/requests/servers/list_images.rb,
lib/fog/rackspace/requests/files/get_containers.rb,
lib/fog/rackspace/requests/files/head_container.rb,
lib/fog/rackspace/requests/servers/create_image.rb,
lib/fog/rackspace/requests/servers/create_image.rb,
lib/fog/rackspace/requests/servers/delete_image.rb,
lib/fog/rackspace/requests/servers/delete_image.rb,
lib/fog/rackspace/requests/servers/list_flavors.rb,
lib/fog/rackspace/requests/servers/list_flavors.rb,
lib/fog/rackspace/requests/servers/list_servers.rb,
lib/fog/rackspace/requests/servers/list_servers.rb,
lib/fog/rackspace/requests/files/head_containers.rb,
lib/fog/rackspace/requests/servers/create_server.rb,
lib/fog/rackspace/requests/servers/create_server.rb,
lib/fog/rackspace/requests/servers/delete_server.rb,
lib/fog/rackspace/requests/servers/delete_server.rb,
lib/fog/rackspace/requests/servers/reboot_server.rb,
lib/fog/rackspace/requests/servers/reboot_server.rb,
lib/fog/rackspace/requests/servers/update_server.rb,
lib/fog/rackspace/requests/servers/update_server.rb,
lib/fog/rackspace/requests/files/delete_container.rb,
lib/fog/rackspace/requests/servers/list_addresses.rb,
lib/fog/rackspace/requests/servers/list_addresses.rb,
lib/fog/rackspace/requests/servers/get_flavor_details.rb,
lib/fog/rackspace/requests/servers/get_flavor_details.rb,
lib/fog/rackspace/requests/servers/get_server_details.rb,
lib/fog/rackspace/requests/servers/get_server_details.rb,
lib/fog/rackspace/requests/servers/list_images_detail.rb,
lib/fog/rackspace/requests/servers/list_images_detail.rb,
lib/fog/rackspace/requests/servers/list_flavors_detail.rb,
lib/fog/rackspace/requests/servers/list_flavors_detail.rb,
lib/fog/rackspace/requests/servers/list_servers_detail.rb,
lib/fog/rackspace/requests/servers/list_servers_detail.rb,
lib/fog/rackspace/requests/servers/list_public_addresses.rb,
lib/fog/rackspace/requests/servers/list_public_addresses.rb,
lib/fog/rackspace/requests/servers/list_private_addresses.rb,
lib/fog/rackspace/requests/servers/list_private_addresses.rb
Defined Under Namespace
Classes: Flavor, Flavors, Image, Images, Server, Servers
Class Method Summary collapse
Instance Method Summary collapse
- #addresses(attributes = {}) ⇒ Object
-
#create_image(server_id, options = {}) ⇒ Object
Create an image from a running server.
-
#create_server(flavor_id, image_id, name, options = {}) ⇒ Object
Create a new server.
- #delete_container ⇒ Object
-
#delete_image(image_id) ⇒ Object
Delete an image.
- #delete_object ⇒ Object
-
#delete_server(server_id) ⇒ Object
Delete an existing server.
- #flavors ⇒ Object
-
#get_flavor_details(flavor_id) ⇒ Object
Get details for flavor by id.
- #get_flavors ⇒ Object
-
#get_server_details(server_id) ⇒ Object
Get details about a server.
- #images(attributes = {}) ⇒ Object
-
#initialize(options = {}) ⇒ Servers
constructor
A new instance of Servers.
-
#list_addresses(server_id) ⇒ Object
List all server addresses.
-
#list_flavors ⇒ Object
List all flavors (IDs and names only).
-
#list_flavors_detail ⇒ Object
List all flavors.
-
#list_images ⇒ Object
List all images (IDs and names only).
-
#list_images_detail ⇒ Object
List all images.
-
#list_private_addresses(server_id) ⇒ Object
List private server addresses.
-
#list_public_addresses(server_id) ⇒ Object
List public server addresses.
-
#list_servers ⇒ Object
List all servers (IDs and names only).
-
#list_servers_detail ⇒ Object
List all servers details.
- #put_container ⇒ Object
-
#reboot_server(server_id, type) ⇒ Object
Reboot an existing server.
- #request(params) ⇒ Object
- #servers ⇒ Object
-
#update_server(server_id, options) ⇒ Object
Update an existing server.
Constructor Details
#initialize(options = {}) ⇒ Servers
Returns a new instance of Servers.
52 53 54 55 56 57 58 59 60 61 |
# File 'lib/fog/rackspace/servers.rb', line 52 def initialize(={}) credentials = Fog::Rackspace.authenticate() @auth_token = credentials['X-Auth-Token'] uri = URI.parse(credentials['X-Server-Management-Url']) @host = uri.host @path = uri.path @port = uri.port @scheme = uri.scheme @connection = Fog::Connection.new("#{@scheme}://#{@host}:#{@port}") end |
Class Method Details
.data ⇒ Object
6 7 8 |
# File 'lib/fog/rackspace/servers.rb', line 6 def self.data @data end |
.reload ⇒ Object
21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 |
# File 'lib/fog/rackspace/servers.rb', line 21 def self.reload load "fog/rackspace/models/servers/flavor.rb" load "fog/rackspace/models/servers/flavors.rb" load "fog/rackspace/models/servers/image.rb" load "fog/rackspace/models/servers/images.rb" load "fog/rackspace/models/servers/server.rb" load "fog/rackspace/models/servers/servers.rb" load "fog/rackspace/requests/servers/create_image.rb" load "fog/rackspace/requests/servers/create_server.rb" load "fog/rackspace/requests/servers/delete_image.rb" load "fog/rackspace/requests/servers/delete_server.rb" load "fog/rackspace/requests/servers/get_flavor_details.rb" load "fog/rackspace/requests/servers/get_server_details.rb" load "fog/rackspace/requests/servers/list_addresses.rb" load "fog/rackspace/requests/servers/list_private_addresses.rb" load "fog/rackspace/requests/servers/list_public_addresses.rb" load "fog/rackspace/requests/servers/list_flavors.rb" load "fog/rackspace/requests/servers/list_flavors_detail.rb" load "fog/rackspace/requests/servers/list_images.rb" load "fog/rackspace/requests/servers/list_images_detail.rb" load "fog/rackspace/requests/servers/list_servers.rb" load "fog/rackspace/requests/servers/list_servers_detail.rb" load "fog/rackspace/requests/servers/reboot_server.rb" load "fog/rackspace/requests/servers/update_server.rb" if Fog.mocking? reset_data end end |
.reset_data ⇒ Object
9 10 11 12 13 14 15 16 17 18 |
# File 'lib/fog/rackspace/servers.rb', line 9 def self.reset_data @data = { :last_modified => { :images => {}, :servers => {} }, :images => {}, :servers => {} } end |
Instance Method Details
#addresses(attributes = {}) ⇒ Object
5 6 7 8 9 |
# File 'lib/fog/rackspace/models/servers/images.rb', line 5 def addresses(attributes = {}) Fog::AWS::EC2::Addresses.new({ :connection => self }.merge!(attributes)) end |
#create_image(server_id, options = {}) ⇒ Object
Create an image from a running server
Parameters
-
server_id<~Integer> - Id of server to create image from
-
options<~Hash> - Name
Returns
-
response<~Excon::Response>:
-
‘image’<~Hash>:
-
‘id’<~Integer> - Id of image
-
‘name’<~String> - Name of image
-
‘serverId’<~Integer> - Id of server
-
-
19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 |
# File 'lib/fog/rackspace/requests/servers/create_image.rb', line 19 def create_image(server_id, = {}) data = { 'image' => { 'serverId' => server_id } } if ['name'] data['image']['name'] = ['name'] end request( :body => data.to_json, :expects => 202, :method => 'POST', :path => "images" ) end |
#create_server(flavor_id, image_id, name, options = {}) ⇒ Object
Create a new server
Parameters
-
flavor_id<~Integer> - Id of flavor for server
-
image_id<~Integer> - Id of image for server
-
name<~String> - Name of server
-
options<~Hash>:
-
‘metadata’<~Hash> - Up to 5 key value pairs containing 255 bytes of info
-
‘name’<~String> - Name of server, defaults to “slice#id”
-
‘personality’<~Array>: Up to 5 files to customize server
-
file<~Hash>:
-
‘contents’<~String> - Contents of file (10kb total of contents)
-
‘path’<~String> - Path to file (255 bytes total of path strings)
-
-
-
Returns
-
response<~Excon::Response>:
-
body<~Hash>:
-
‘server’<~Hash>:
-
‘addresses’<~Hash>:
-
‘public’<~Array> - public address strings
-
‘private’<~Array> - private address strings
-
-
‘adminPass’<~String> - Admin password for server
-
‘flavorId’<~Integer> - Id of servers current flavor
-
‘hostId’<~String>
-
‘id’<~Integer> - Id of server
-
‘imageId’<~Integer> - Id of image used to boot server
-
‘metadata’<~Hash> - metadata
-
‘name<~String> - Name of server
-
‘progress’<~Integer> - Progress through current status
-
‘status’<~String> - Current server status
-
-
37 38 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/servers/create_server.rb', line 37 def create_server(flavor_id, image_id, name, = {}) data = { 'server' => { 'flavorId' => flavor_id, 'imageId' => image_id } } if ['metadata'] data['server']['metadata'] = ['metadata'] end if ['name'] data['server']['name'] = ['name'] end if ['personality'] data['server']['personality'] = [] for file in ['personality'] data['server']['personality'] << { 'contents' => Base64.encode64(file['contents']), 'path' => file['path'] } end end request( :body => data.to_json, :expects => 202, :method => 'POST', :path => 'servers.json' ) end |
#delete_container ⇒ Object
31 32 |
# File 'lib/fog/rackspace/requests/files/delete_container.rb', line 31 def delete_container end |
#delete_image(image_id) ⇒ Object
Delete an image
Parameters
-
image_id<~Integer> - Id of image to delete
12 13 14 15 16 17 18 |
# File 'lib/fog/rackspace/requests/servers/delete_image.rb', line 12 def delete_image(image_id) request( :expects => 204, :method => 'DELETE', :path => "images/#{image_id}" ) end |
#delete_object ⇒ Object
32 33 |
# File 'lib/fog/rackspace/requests/files/delete_object.rb', line 32 def delete_object end |
#delete_server(server_id) ⇒ Object
Delete an existing server
Parameters
-
id<~Integer> - Id of server to delete
12 13 14 15 16 17 18 |
# File 'lib/fog/rackspace/requests/servers/delete_server.rb', line 12 def delete_server(server_id) request( :expects => 202, :method => 'DELETE', :path => "servers/#{server_id}" ) end |
#flavors ⇒ Object
5 6 7 |
# File 'lib/fog/rackspace/models/servers/flavors.rb', line 5 def flavors Fog::Rackspace::Servers::Flavors.new(:connection => self) end |
#get_flavor_details(flavor_id) ⇒ Object
Get details for flavor by id
Returns
-
response<~Excon::Response>:
-
body<~Hash>:
-
‘id’<~Integer> - Id of the flavor
-
‘name’<~String> - Name of the flavor
-
‘ram’<~Integer> - Amount of ram for the flavor
-
‘disk’<~Integer> - Amount of diskspace for the flavor
-
-
16 17 18 19 20 21 22 |
# File 'lib/fog/rackspace/requests/servers/get_flavor_details.rb', line 16 def get_flavor_details(flavor_id) request( :expects => [200, 203], :method => 'GET', :path => "flavors/#{flavor_id}.json" ) end |
#get_flavors ⇒ Object
54 55 |
# File 'lib/fog/rackspace/requests/files/get_container.rb', line 54 def get_flavors end |
#get_server_details(server_id) ⇒ Object
Get details about a server
Parameters
-
server_id<~Integer> - Id of server to get details for
Returns
-
response<~Excon::Response>:
-
body<~Hash>:
-
‘server’<~Hash>:
-
‘addresses’<~Hash>:
-
‘public’<~Array> - public address strings
-
‘private’<~Array> - private address strings
-
-
‘flavorId’<~Integer> - Id of servers current flavor
-
‘hostId’<~String>
-
‘id’<~Integer> - Id of server
-
‘imageId’<~Integer> - Id of image used to boot server
-
‘metadata’<~Hash> - metadata
-
‘name<~String> - Name of server
-
‘progress’<~Integer> - Progress through current status
-
‘status’<~String> - Current server status
-
-
27 28 29 30 31 32 33 |
# File 'lib/fog/rackspace/requests/servers/get_server_details.rb', line 27 def get_server_details(server_id) request( :expects => [200, 203], :method => 'GET', :path => "servers/#{server_id}.json" ) end |
#images(attributes = {}) ⇒ Object
11 12 13 14 15 |
# File 'lib/fog/rackspace/models/servers/images.rb', line 11 def images(attributes = {}) Fog::Rackspace::Servers::Images.new({ :connection => self }.merge!(attributes)) end |
#list_addresses(server_id) ⇒ Object
List all server addresses
Parameters
-
server_id<~Integer> - Id of server to list addresses for
Returns
-
response<~Excon::Response>:
-
body<~Hash>:
-
‘addresses’<~Array>:
-
‘public’<~Array> - Public ip addresses
-
‘private’<~Array> - Private ip addresses
-
-
18 19 20 21 22 23 24 |
# File 'lib/fog/rackspace/requests/servers/list_addresses.rb', line 18 def list_addresses(server_id) request( :expects => [200, 203], :method => 'GET', :path => "servers/#{server_id}/ips.json" ) end |
#list_flavors ⇒ Object
List all flavors (IDs and names only)
Returns
-
response<~Excon::Response>:
-
body<~Hash>:
-
‘id’<~Integer> - Id of the flavor
-
‘name’<~String> - Name of the flavor
-
-
14 15 16 17 18 19 20 |
# File 'lib/fog/rackspace/requests/servers/list_flavors.rb', line 14 def list_flavors request( :expects => [200, 203], :method => 'GET', :path => 'flavors.json' ) end |
#list_flavors_detail ⇒ Object
List all flavors
Returns
-
response<~Excon::Response>:
-
body<~Hash>:
-
‘id’<~Integer> - Id of the flavor
-
‘name’<~String> - Name of the flavor
-
‘ram’<~Integer> - Amount of ram for the flavor
-
‘disk’<~Integer> - Amount of diskspace for the flavor
-
-
16 17 18 19 20 21 22 |
# File 'lib/fog/rackspace/requests/servers/list_flavors_detail.rb', line 16 def list_flavors_detail request( :expects => [200, 203], :method => 'GET', :path => 'flavors/detail.json' ) end |
#list_images ⇒ Object
List all images (IDs and names only)
Returns
-
response<~Excon::Response>:
-
body<~Hash>:
-
‘id’<~Integer> - Id of the image
-
‘name’<~String> - Name of the image
-
-
14 15 16 17 18 19 20 |
# File 'lib/fog/rackspace/requests/servers/list_images.rb', line 14 def list_images request( :expects => [200, 203], :method => 'GET', :path => 'images.json' ) end |
#list_images_detail ⇒ Object
List all images
Returns
-
response<~Excon::Response>:
-
body<~Hash>:
-
‘id’<~Integer> - Id of the image
-
‘name’<~String> - Name of the image
-
‘updated’<~String> - Last update timestamp for image
-
‘created’<~String> - Creation timestamp for image
-
‘status’<~String> - Status of image
-
-
17 18 19 20 21 22 23 |
# File 'lib/fog/rackspace/requests/servers/list_images_detail.rb', line 17 def list_images_detail request( :expects => [200, 203], :method => 'GET', :path => 'images/detail.json' ) end |
#list_private_addresses(server_id) ⇒ Object
List private server addresses
Parameters
-
server_id<~Integer> - Id of server to list addresses for
Returns
-
response<~Excon::Response>:
-
body<~Hash>:
-
‘private’<~Array> - Public ip addresses
-
-
16 17 18 19 20 21 22 |
# File 'lib/fog/rackspace/requests/servers/list_private_addresses.rb', line 16 def list_private_addresses(server_id) request( :expects => [200, 203], :method => 'GET', :path => "servers/#{server_id}/ips/private.json" ) end |
#list_public_addresses(server_id) ⇒ Object
List public server addresses
Parameters
-
server_id<~Integer> - Id of server to list addresses for
Returns
-
response<~Excon::Response>:
-
body<~Hash>:
-
‘public’<~Array> - Public ip addresses
-
-
16 17 18 19 20 21 22 |
# File 'lib/fog/rackspace/requests/servers/list_public_addresses.rb', line 16 def list_public_addresses(server_id) request( :expects => [200, 203], :method => 'GET', :path => "servers/#{server_id}/ips/public.json" ) end |
#list_servers ⇒ Object
List all servers (IDs and names only)
Returns
-
response<~Excon::Response>:
-
body<~Hash>:
-
‘servers’<~Array>:
-
‘id’<~Integer> - Id of server
-
‘name<~String> - Name of server
-
-
15 16 17 18 19 20 21 |
# File 'lib/fog/rackspace/requests/servers/list_servers.rb', line 15 def list_servers request( :expects => [200, 203], :method => 'GET', :path => 'servers.json' ) end |
#list_servers_detail ⇒ Object
List all servers details
Returns
-
response<~Excon::Response>:
-
body<~Hash>:
-
‘servers’<~Array>:
-
‘id’<~Integer> - Id of server
-
‘name<~String> - Name of server
-
‘imageId’<~Integer> - Id of image used to boot server
-
‘flavorId’<~Integer> - Id of servers current flavor
-
‘hostId’<~String>
-
‘status’<~String> - Current server status
-
‘progress’<~Integer> - Progress through current status
-
‘addresses’<~Hash>:
-
‘public’<~Array> - public address strings
-
‘private’<~Array> - private address strings
-
-
‘metadata’<~Hash> - metadata
-
-
24 25 26 27 28 29 30 |
# File 'lib/fog/rackspace/requests/servers/list_servers_detail.rb', line 24 def list_servers_detail request( :expects => [200, 203], :method => 'GET', :path => 'servers/detail.json' ) end |
#put_container ⇒ Object
34 35 |
# File 'lib/fog/rackspace/requests/files/put_object.rb', line 34 def put_container end |
#reboot_server(server_id, type) ⇒ Object
Reboot an existing server
Parameters
-
server_id<~Integer> - Id of server to reboot
-
type<~String> - Type of reboot, must be in [‘HARD’, ‘SOFT’]
13 14 15 16 17 18 19 20 |
# File 'lib/fog/rackspace/requests/servers/reboot_server.rb', line 13 def reboot_server(server_id, type) request( :body => { 'reboot' => { 'type' => type }}.to_json, :expects => 202, :method => 'POST', :path => "servers/#{server_id}/action.json" ) end |
#request(params) ⇒ Object
63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 |
# File 'lib/fog/rackspace/servers.rb', line 63 def request(params) response = @connection.request({ :body => params[:body], :expects => params[:expects], :headers => { 'X-Auth-Token' => @auth_token }.merge!(params[:headers] || {}), :host => @host, :method => params[:method], :path => "#{@path}/#{params[:path]}" }) unless response.body.empty? response.body = JSON.parse(response.body) end response end |
#servers ⇒ Object
5 6 7 |
# File 'lib/fog/rackspace/models/servers/servers.rb', line 5 def servers Fog::Rackspace::Servers::Servers.new(:connection => self) end |
#update_server(server_id, options) ⇒ Object
Update an existing server
Parameters
# server_id<~Integer> - Id of server to update
-
options<~Hash>:
-
adminPass<~String> - New admin password for server
-
name<~String> - New name for server
-
14 15 16 17 18 19 20 21 |
# File 'lib/fog/rackspace/requests/servers/update_server.rb', line 14 def update_server(server_id, = {}) request( :body => { 'server' => }.to_json, :expects => 204, :method => 'PUT', :path => "servers/#{server_id}.json" ) end |