Class: Fog::Slicehost

Inherits:
Object
  • Object
show all
Defined in:
lib/fog/slicehost.rb,
lib/fog/slicehost/requests/get_images.rb,
lib/fog/slicehost/requests/get_images.rb,
lib/fog/slicehost/requests/get_slices.rb,
lib/fog/slicehost/requests/get_slices.rb,
lib/fog/slicehost/requests/get_backups.rb,
lib/fog/slicehost/requests/get_backups.rb,
lib/fog/slicehost/requests/get_flavors.rb,
lib/fog/slicehost/requests/get_flavors.rb,
lib/fog/slicehost/requests/create_slice.rb,
lib/fog/slicehost/requests/create_slice.rb,
lib/fog/slicehost/requests/delete_slice.rb,
lib/fog/slicehost/requests/delete_slice.rb

Class Method Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(options = {}) ⇒ Slicehost

Returns a new instance of Slicehost.



32
33
34
35
36
37
38
39
40
# File 'lib/fog/slicehost.rb', line 32

def initialize(options={})
  unless @password = options[:password]
    raise ArgumentError.new('password is required to access slicehost')
  end
  @host       = options[:host]      || "api.slicehost.com"
  @port       = options[:port]      || 443
  @scheme     = options[:scheme]    || 'https'
  @connection = Fog::Connection.new("#{@scheme}://#{@host}:#{@port}")
end

Class Method Details

.dataObject



5
6
7
# File 'lib/fog/slicehost.rb', line 5

def self.data
  @data
end

.reloadObject



13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
# File 'lib/fog/slicehost.rb', line 13

def self.reload
  load "fog/slicehost/parsers/create_slice.rb"
  load "fog/slicehost/parsers/get_backups.rb"
  load "fog/slicehost/parsers/get_flavors.rb"
  load "fog/slicehost/parsers/get_images.rb"
  load "fog/slicehost/parsers/get_slices.rb"

  load "fog/slicehost/requests/create_slice.rb"
  load "fog/slicehost/requests/delete_slice.rb"
  load "fog/slicehost/requests/get_backups.rb"
  load "fog/slicehost/requests/get_flavors.rb"
  load "fog/slicehost/requests/get_images.rb"
  load "fog/slicehost/requests/get_slices.rb"

  if Fog.mocking?
    reset_data
  end
end

.reset_dataObject



8
9
10
# File 'lib/fog/slicehost.rb', line 8

def self.reset_data
  @data = {}
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



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

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



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

def delete_slice(slice_id)
  request(
    :expects  => 200,
    :method   => 'DELETE',
    :path     => "slices/#{slice_id}.xml"
  )
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



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

def get_backups
  request(
    :expects  => 200,
    :method   => 'GET',
    :parser   => Fog::Parsers::Slicehost::GetBackups.new,
    :path     => 'backups.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



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

def get_flavors
  request(
    :expects  => 200,
    :method   => 'GET',
    :parser   => Fog::Parsers::Slicehost::GetFlavors.new,
    :path     => 'flavors.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



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

def get_images
  request(
    :expects  => 200,
    :method   => 'GET',
    :parser   => Fog::Parsers::Slicehost::GetImages.new,
    :path     => 'images.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



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

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

#request(params) ⇒ Object



42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
# File 'lib/fog/slicehost.rb', line 42

def request(params)
  headers = {
    'Authorization' => "Basic #{Base64.encode64(@password).gsub("\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