class Fog::Storage::IBM::Real

Public Class Methods

new(options={}) click to toggle source
# File lib/fog/ibm/storage.rb, line 26
def initialize(options={})
  @connection = Fog::IBM::Connection.new(options[:ibm_username], options[:ibm_password])
end

Public Instance Methods

create_volume(name, offering_id, format, location_id, size) click to toggle source

Requests a new Storage Volume be created.

Parameters

  • name<~String> - The alias to use to referance storage volume

  • offeringID<~String> - offering id can be requested from /computecloud/enterprise/api/rest/20100331/offerings/storage

  • format<~String> - filesystem format for volume

  • location<~String> - datacenter location for volume

  • size<~String> - size of volume desired (Small, Medium, Large) (varies by location what size actually is)

  • storageAreaID<~String> - (not supported yet)

Returns

  • response<~Excon::Response>:

    • body<~Hash>:

      • name<~String> - The alias to use to referance storage volume

      • format<~String> - filesystem format for storage

      • location<~String> - datacenter location for storage

      • createdTime<~Integer> - Epoch time of creation

      • size<~String> - size of storage desired (Small, Medium, Large) (varies by location what size actually is)

      • productCodes<~Array> -

      • offeringID<~String> - offering id can be requested from /computecloud/enterprise/api/rest/20100331/offerings/storage

      • id<~String> - id of new storage

      • owner<~String> - owner of new storage

      • state<~Integer> - state of newly requested storage

# File lib/fog/ibm/requests/storage/create_volume.rb, line 28
def create_volume(name, offering_id, format, location_id, size)
  request(
    :method   => 'POST',
    :expects  => 200,
    :path     => '/storage',
    :body     => {
      'name'       => name,
      'offeringID' => offering_id,
      'format'     => format,
      'location'   => location_id,
      'size'       => size
    }
  )
end
delete_volume(volume_id) click to toggle source

Deletes the storage that the authenticated user manages with the specified :storage_id

Parameters

  • volume_id<~String> - Id of storage volume

Returns

  • response<~Excon::Response>:

    • body<~Hash>: *'success'<~Bool>: true or false for success

# File lib/fog/ibm/requests/storage/delete_volume.rb, line 14
def delete_volume(volume_id)
  request(
    :method   => 'DELETE',
    :expects  => 200,
    :path     => "/storage/#{volume_id}"
  )
end
get_volume(volume_id) click to toggle source

Used to retrieve the specified storage volume for specified volume_id

Parameters

  • volume_id<~String> - Id of storage volume

Returns

  • response<~Excon::Response>:

    • body<~Hash>:

# File lib/fog/ibm/requests/storage/get_volume.rb, line 13
def get_volume(volume_id)
  request(
    :method   => 'GET',
    :expects  => 200,
    :path     => "/storage/#{volume_id}"
  )
end
list_offerings() click to toggle source

Returns the offerings of storage for the authenticated user

Parameters

No parameters

Returns

  • response<~Excon::Response>:

    • body<~Hash>:

      • 'volumes'<~Array>: list of images

        • 'name'<~String>: Name of storage offering

        • 'price'<~Hash>: hash containing pricing information

          • 'pricePerQuantity'<~Integer>:

          • 'effectiveDate'<~Integer>: starting date price is effective

          • 'rate'<~Float>: rate per unit

          • 'countryCode'<~String>:

          • 'currencyCode'<~String>: currency used

        • 'location'<~String>: datacenter location string

        • 'id'<~String>: id of offering

        • 'formats'<~Array>: filesystem format storage offered with

          • 'label'<~String>: label for filesystem

          • 'id'<~String>: string used for id of format

        • 'capacity'<~Integer>: size in GB's

# File lib/fog/ibm/requests/storage/list_offerings.rb, line 27
def list_offerings
  request(
    :method   => 'GET',
    :expects  => 200,
    :path     => '/offerings/storage'
  )
end
list_volumes() click to toggle source

Returns the list of storage volumes

Parameters

No parameters

Returns

  • response<~Excon::Response>:

    • body<~Hash>:

      • 'volumes'<~Array>: list of images

        • 'name'<~String>: Name of image

        • 'format'<~String>: filesystem volume is formatted with

        • 'location'<~String>: datacenter location string

        • 'createdTime'<~Integer>: creation time in Epoch int

        • 'size'<~String>: size in GB's (as a string)

        • 'productCodes'<~Array>: unsure..

        • 'offeringId'<~String>:

        • 'id'<~String>: volume id

        • 'owner'<~String>: owner's email address

        • 'state'<~Integer>: known so far: 4 provisioned, unattached; 5 provisioned, attached

# File lib/fog/ibm/requests/storage/list_volumes.rb, line 24
def list_volumes
  request(
    :method   => 'GET',
    :expects  => 200,
    :path     => '/storage'
  )
end

Private Instance Methods

request(options) click to toggle source
# File lib/fog/ibm/storage.rb, line 32
def request(options)
  begin
    @connection.request(options)
  rescue Excon::Errors::HTTPStatusError => error
    raise case error
    when Excon::Errors::NotFound
      Fog::Storage::IBM::NotFound.slurp(error)
    else
      error
    end
  end
end