Class: Fog::Slicehost::Real

Inherits:
Object
  • Object
show all
Defined in:
lib/fog/slicehost.rb,
lib/fog/slicehost/models/images.rb,
lib/fog/slicehost/models/flavors.rb,
lib/fog/slicehost/models/servers.rb,
lib/fog/slicehost/requests/get_image.rb,
lib/fog/slicehost/requests/get_slice.rb,
lib/fog/slicehost/requests/get_flavor.rb,
lib/fog/slicehost/requests/get_images.rb,
lib/fog/slicehost/requests/get_slices.rb,
lib/fog/slicehost/requests/get_backups.rb,
lib/fog/slicehost/requests/get_flavors.rb,
lib/fog/slicehost/requests/create_slice.rb,
lib/fog/slicehost/requests/delete_slice.rb,
lib/fog/slicehost/requests/reboot_slice.rb

Instance Method Summary collapse

Constructor Details

#initialize(options = {}) ⇒ Real

Returns a new instance of Real.


60
61
62
63
64
65
# File 'lib/fog/slicehost.rb', line 60

def initialize(options={})
  @slicehost_password = options[:slicehost_password]
  @host   = options[:host]    || "api.slicehost.com"
  @port   = options[:port]    || 443
  @scheme = options[:scheme]  || 'https'
end

Instance Method Details

#create_slice(flavor_id, image_id, name) ⇒ Object

Get list of slices

Parameters

  • flavor_id<~Integer> - Id of flavor to create slice with

  • image_id<~Integer> - Id of image to create slice with

  • name<~String> - Name of slice

Returns

  • response<~Excon::Response>:

    • body<~Array>:

      • 'addresses'<~Array> - Ip addresses for the slice

      • 'backup-id'<~Integer> - Id of backup slice was booted from

      • 'bw-in'<~Integer> - Incoming bandwidth total for current billing cycle, in Gigabytes

      • 'bw-out'<~Integer> - Outgoing bandwidth total for current billing cycle, in Gigabytes

      • 'flavor-id'<~Integer> - Id of flavor slice was booted from

      • 'id'<~Integer> - Id of the slice

      • 'image-id'<~Integer> - Id of image slice was booted from

      • 'name'<~String> - Name of the slice

      • 'progress'<~Integer> - Progress of current action, in percentage

      • 'root-password'<~String> - Root password of slice

      • 'status'<~String> - Current status of the slice


27
28
29
30
31
32
33
34
35
# File 'lib/fog/slicehost/requests/create_slice.rb', line 27

def create_slice(flavor_id, image_id, name)
  request(
    :body     => %Q{<?xml version="1.0" encoding="UTF-8"?><slice><flavor-id type="integer">#{flavor_id}</flavor-id><image-id type="integer">#{image_id}</image-id><name>#{name}</name></slice>},
    :expects  => 201,
    :method   => 'POST',
    :parser   => Fog::Parsers::Slicehost::CreateSlice.new,
    :path     => 'slices.xml'
  )
end

#delete_slice(slice_id) ⇒ Object

Get list of slices

Parameters

  • flavor_id<~Integer> - Id of flavor to create slice with

  • image_id<~Integer> - Id of image to create slice with

  • name<~String> - Name of slice

Returns

  • response<~Excon::Response>:

    • body<~Array>:

      • 'addresses'<~Array> - Ip addresses for the slice

      • 'backup-id'<~Integer> - Id of backup slice was booted from

      • 'bw-in'<~Integer> - Incoming bandwidth total for current billing cycle, in Gigabytes

      • 'bw-out'<~Integer> - Outgoing bandwidth total for current billing cycle, in Gigabytes

      • 'flavor-id'<~Integer> - Id of flavor slice was booted from

      • 'id'<~Integer> - Id of the slice

      • 'image-id'<~Integer> - Id of image slice was booted from

      • 'name'<~String> - Name of the slice

      • 'progress'<~Integer> - Progress of current action, in percentage

      • 'root-password'<~String> - Root password of slice

      • 'status'<~String> - Current status of the slice


25
26
27
28
29
30
31
# File 'lib/fog/slicehost/requests/delete_slice.rb', line 25

def delete_slice(slice_id)
  request(
    :expects  => 200,
    :method   => 'DELETE',
    :path     => "slices/#{slice_id}.xml"
  )
end

#flavorsObject


14
15
16
# File 'lib/fog/slicehost/models/flavors.rb', line 14

def flavors
  Fog::Slicehost::Flavors.new(:connection => self)
end

#get_backupsObject

Get list of backups

Returns

  • response<~Excon::Response>:

    • body<~Array>:

      • 'date'<~Time> - Timestamp of backup creation

      • 'id'<~Integer> - Id of the backup

      • 'name'<~String> - Name of the backup

      • 'slice-id'<~Integer> - Id of slice the backup was made from


16
17
18
19
20
21
22
23
# File 'lib/fog/slicehost/requests/get_backups.rb', line 16

def get_backups
  request(
    :expects  => 200,
    :method   => 'GET',
    :parser   => Fog::Parsers::Slicehost::GetBackups.new,
    :path     => 'backups.xml'
  )
end

#get_flavor(flavor_id) ⇒ Object

Get details of a flavor

Parameters

  • flavor_id<~Integer> - Id of flavor to lookup

Returns

  • response<~Excon::Response>:

    • body<~Array>:

      • 'id'<~Integer> - Id of the flavor

      • 'name'<~String> - Name of the flavor

      • 'price'<~Integer> - Price in cents

      • 'ram'<~Integer> - Amount of ram for the flavor


19
20
21
22
23
24
25
26
# File 'lib/fog/slicehost/requests/get_flavor.rb', line 19

def get_flavor(flavor_id)
  request(
    :expects  => 200,
    :method   => 'GET',
    :parser   => Fog::Parsers::Slicehost::GetFlavor.new,
    :path     => "flavors/#{flavor_id}.xml"
  )
end

#get_flavorsObject

Get list of flavors

Returns

  • response<~Excon::Response>:

    • body<~Array>:

      • 'id'<~Integer> - Id of the flavor

      • 'name'<~String> - Name of the flavor

      • 'price'<~Integer> - Price in cents

      • 'ram'<~Integer> - Amount of ram for the flavor


16
17
18
19
20
21
22
23
# File 'lib/fog/slicehost/requests/get_flavors.rb', line 16

def get_flavors
  request(
    :expects  => 200,
    :method   => 'GET',
    :parser   => Fog::Parsers::Slicehost::GetFlavors.new,
    :path     => 'flavors.xml'
  )
end

#get_image(image_id) ⇒ Object

Get details of an image

Parameters

  • image_id<~Integer> - Id of image to lookup

Returns

  • response<~Excon::Response>:

    • body<~Array>:

      • 'id'<~Integer> - Id of the image

      • 'name'<~String> - Name of the image


17
18
19
20
21
22
23
24
# File 'lib/fog/slicehost/requests/get_image.rb', line 17

def get_image(image_id)
  request(
    :expects  => 200,
    :method   => 'GET',
    :parser   => Fog::Parsers::Slicehost::GetImage.new,
    :path     => "images/#{image_id}.xml"
  )
end

#get_imagesObject

Get list of images

Returns

  • response<~Excon::Response>:

    • body<~Array>:

      • 'id'<~Integer> - Id of the image

      • 'name'<~String> - Name of the image


14
15
16
17
18
19
20
21
# File 'lib/fog/slicehost/requests/get_images.rb', line 14

def get_images
  request(
    :expects  => 200,
    :method   => 'GET',
    :parser   => Fog::Parsers::Slicehost::GetImages.new,
    :path     => 'images.xml'
  )
end

#get_slice(slice_id) ⇒ Object

Get details of a slice

Parameters

  • slice_id<~Integer> - Id of slice to lookup

Returns

  • response<~Excon::Response>:

    • body<~Hash>:

      • 'addresses'<~Array> - Ip addresses for the slice

      • 'backup-id'<~Integer> - Id of backup slice was booted from

      • 'bw-in'<~Float> - Incoming bandwidth total for current billing cycle, in Gigabytes

      • 'bw-out'<~Float> - Outgoing bandwidth total for current billing cycle, in Gigabytes

      • 'flavor_id'<~Integer> - Id of flavor slice was booted from

      • 'id'<~Integer> - Id of the slice

      • 'image-id'<~Integer> - Id of image slice was booted from

      • 'name'<~String> - Name of the slice

      • 'progress'<~Integer> - Progress of current action, in percentage

      • 'status'<~String> - Current status of the slice


25
26
27
28
29
30
31
32
# File 'lib/fog/slicehost/requests/get_slice.rb', line 25

def get_slice(slice_id)
  request(
    :expects  => 200,
    :method   => 'GET',
    :parser   => Fog::Parsers::Slicehost::GetSlice.new,
    :path     => "/slices/#{slice_id}.xml"
  )
end

#get_slicesObject

Get list of slices

Returns

  • response<~Excon::Response>:

    • body<~Array>:

      • 'addresses'<~Array> - Ip addresses for the slice

      • 'backup-id'<~Integer> - Id of backup slice was booted from

      • 'bw-in'<~Float> - Incoming bandwidth total for current billing cycle, in Gigabytes

      • 'bw-out'<~Float> - Outgoing bandwidth total for current billing cycle, in Gigabytes

      • 'flavor_id'<~Integer> - Id of flavor slice was booted from

      • 'id'<~Integer> - Id of the slice

      • 'image-id'<~Integer> - Id of image slice was booted from

      • 'name'<~String> - Name of the slice

      • 'progress'<~Integer> - Progress of current action, in percentage

      • 'status'<~String> - Current status of the slice


22
23
24
25
26
27
28
29
# File 'lib/fog/slicehost/requests/get_slices.rb', line 22

def get_slices
  request(
    :expects  => 200,
    :method   => 'GET',
    :parser   => Fog::Parsers::Slicehost::GetSlices.new,
    :path     => 'slices.xml'
  )
end

#images(attributes = {}) ⇒ Object


16
17
18
19
20
# File 'lib/fog/slicehost/models/images.rb', line 16

def images(attributes = {})
  Fog::Slicehost::Images.new({
    :connection => self
  }.merge!(attributes))
end

#reboot_slice(slice_id, type = 'SOFT') ⇒ Object

Reboot slice

Parameters

  • slice_id<~Integer> - Id of server to reboot

  • type<~String> - Type of reboot, must be in ['HARD', 'SOFT']

Returns

  • response<~Excon::Response>:

    • body<~Hash>:

      • 'addresses'<~Array> - Ip addresses for the slice

      • 'backup-id'<~Integer> - Id of backup slice was booted from

      • 'bw-in'<~Float> - Incoming bandwidth total for current billing cycle, in Gigabytes

      • 'bw-out'<~Float> - Outgoing bandwidth total for current billing cycle, in Gigabytes

      • 'flavor_id'<~Integer> - Id of flavor slice was booted from

      • 'id'<~Integer> - Id of the slice

      • 'image-id'<~Integer> - Id of image slice was booted from

      • 'name'<~String> - Name of the slice

      • 'progress'<~Integer> - Progress of current action, in percentage

      • 'status'<~String> - Current status of the slice


23
24
25
26
27
28
29
30
# File 'lib/fog/slicehost/requests/reboot_slice.rb', line 23

def reboot_slice(slice_id, type = 'SOFT')
  request(
    :expects  => 200,
    :method   => 'PUT',
    :parser   => Fog::Parsers::Slicehost::GetSlice.new,
    :path     => "/slices/#{slice_id}/#{'hard_' if type == 'HARD'}reboot.xml"
  )
end

#request(params) ⇒ Object


67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
# File 'lib/fog/slicehost.rb', line 67

def request(params)
  @connection = Fog::Connection.new("#{@scheme}://#{@host}:#{@port}")
  headers = {
    'Authorization' => "Basic #{Base64.encode64(@slicehost_password).delete("\r\n")}"
  }
  case params[:method]
  when 'DELETE', 'GET', 'HEAD'
    headers['Accept'] = 'application/xml'
  when 'POST', 'PUT'
    headers['Content-Type'] = 'application/xml'
  end

  response = @connection.request({
    :body     => params[:body],
    :expects  => params[:expects],
    :headers  => headers.merge!(params[:headers] || {}),
    :host     => @host,
    :method   => params[:method],
    :parser   => params[:parser],
    :path     => params[:path]
  })

  response
end

#serversObject


14
15
16
# File 'lib/fog/slicehost/models/servers.rb', line 14

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