Class: Fog::Rackspace::Servers

Inherits:
Object
  • Object
show all
Defined in:
lib/fog/rackspace/servers.rb,
lib/fog/rackspace/models/servers/server.rb,
lib/fog/rackspace/models/servers/servers.rb,
lib/fog/rackspace/requests/servers/get_images.rb,
lib/fog/rackspace/requests/servers/get_images.rb,
lib/fog/rackspace/requests/servers/get_flavors.rb,
lib/fog/rackspace/requests/servers/get_flavors.rb,
lib/fog/rackspace/requests/servers/get_servers.rb,
lib/fog/rackspace/requests/servers/get_servers.rb,
lib/fog/rackspace/requests/files/get_containers.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/get_server_details.rb,
lib/fog/rackspace/requests/servers/get_server_details.rb,
lib/fog/rackspace/requests/servers/get_servers_details.rb,
lib/fog/rackspace/requests/servers/get_servers_details.rb

Defined Under Namespace

Classes: Server, Servers

Class Method Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(options = {}) ⇒ Servers

Returns a new instance of Servers.



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

def initialize(options={})
  credentials = Fog::Rackspace.authenticate(options)
  @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

.reloadObject



5
6
7
8
9
10
11
12
13
14
15
16
# File 'lib/fog/rackspace/servers.rb', line 5

def self.reload
  load "fog/rackspace/models/servers/server.rb"
  load "fog/rackspace/models/servers/servers.rb"

  load "fog/rackspace/requests/servers/create_server.rb"
  load "fog/rackspace/requests/servers/delete_server.rb"
  load "fog/rackspace/requests/servers/get_flavors.rb"
  load "fog/rackspace/requests/servers/get_images.rb"
  load "fog/rackspace/requests/servers/get_server_details.rb"
  load "fog/rackspace/requests/servers/get_servers.rb"
  load "fog/rackspace/requests/servers/get_servers_details.rb"
end

Instance Method Details

#create_serverObject

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<~Fog::AWS::Response>:

    • body<~Hash>:

    • ‘servers’<~Hash>:

      • ‘adminPass’<~String> - Admin password for server

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



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, options = {})
  data = {
    'server' => {
      'flavorId'  => flavor_id,
      'imageId'   => image_id
    }
  }
  if options['metadata']
    data['server']['metadata'] = options['metadata']
  end
  if options['name']
    data['server']['name'] = options['name']
  end
  if options['personality']
    data['server']['personality'] = []
    for file in options['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_serverObject

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(id)
  request(
    :expects => 202,
    :method => 'DELETE',
    :path   => "servers/#{id}"
  )
end

#get_flavorsObject

List all images (IDs and names only)

Returns

  • response<~Fog::AWS::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_flavors.rb', line 16

def get_flavors
  request(
    :expects  => 200,
    :method   => 'GET',
    :path     => 'flavors.json'
  )
end

#get_imagesObject

List all images (IDs and names only)

Returns

  • response<~Fog::AWS::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/get_images.rb', line 17

def get_images
  request(
    :expects  => 200,
    :method   => 'GET',
    :path     => 'images.json'
  )
end

#get_server_detailsObject

List server details for id

Returns

  • response<~Fog::AWS::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/get_server_details.rb', line 24

def get_server_details(id)
  request(
    :expects  => 200,
    :method   => 'GET',
    :path     => "servers/#{id}.json"
  )
end

#get_serversObject

List all servers (IDs and names only)

Returns

  • response<~Fog::AWS::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/get_servers.rb', line 15

def get_servers
  request(
    :expects  => 200,
    :method   => 'GET',
    :path     => 'servers.json'
  )
end

#get_servers_detailsObject

List all servers details

Returns

  • response<~Fog::AWS::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/get_servers_details.rb', line 24

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

#request(params) ⇒ Object



29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
# File 'lib/fog/rackspace/servers.rb', line 29

def request(params)
  response = @connection.request({
    :body     => params[:body],
    :expects  => params[:expects],
    :headers  => {
      'X-Auth-Token' => @auth_token
    },
    :host     => @host,
    :method   => params[:method],
    :path     => "#{@path}/#{params[:path]}"
  })
  unless response.body.empty?
    response.body = JSON.parse(response.body)
  end
  response
end

#serversObject



5
6
7
# File 'lib/fog/rackspace/models/servers/servers.rb', line 5

def servers
  Fog::Rackspace::Servers::Servers.new(:connection => self)
end