In Files

Parent

Methods

Class/Module Index [+]

Quicksearch

Fog::Compute::OpenStack::Real

docs.openstack.org/api/openstack-compute/2/content/ProgramaticLimits.html

Attributes

auth_token[R]
auth_token_expiration[R]
current_tenant[R]
current_user[R]

Public Class Methods

new(options={}) click to toggle source
# File lib/fog/openstack/compute.rb, line 281
def initialize(options={})
  @openstack_auth_token = options[:openstack_auth_token]
  @auth_token        = options[:openstack_auth_token]
  @openstack_identity_public_endpoint = options[:openstack_identity_endpoint]

  unless @auth_token
    missing_credentials = Array.new
    @openstack_api_key  = options[:openstack_api_key]
    @openstack_username = options[:openstack_username]

    missing_credentials << :openstack_api_key  unless @openstack_api_key
    missing_credentials << :openstack_username unless @openstack_username
    raise ArgumentError, "Missing required arguments: #{missing_credentials.join(', ')}" unless missing_credentials.empty?
  end

  @openstack_tenant     = options[:openstack_tenant]
  @openstack_auth_uri   = URI.parse(options[:openstack_auth_url])
  @openstack_management_url       = options[:openstack_management_url]
  @openstack_must_reauthenticate  = false
  @openstack_service_type = options[:openstack_service_type] || ['nova', 'compute']
  @openstack_service_name = options[:openstack_service_name]
  @openstack_identity_service_type = options[:openstack_identity_service_type] || 'identity'
  @openstack_endpoint_type = options[:openstack_endpoint_type] || 'publicURL'
  @openstack_region      = options[:openstack_region]

  @connection_options = options[:connection_options] || {}

  @current_user = options[:current_user]
  @current_tenant = options[:current_tenant]

  authenticate

  @persistent = options[:persistent] || false
  @connection = Fog::Connection.new("#{@scheme}://#{@host}:#{@port}", @persistent, @connection_options)
end

Public Instance Methods

add_fixed_ip(server_id, network_id) click to toggle source

Add an IP address on a network.

Parameters

  • server_id <~String> - The ID of the server in which to add an IP to.

  • network_id <~String> - The ID of the network the IP should be on.

Returns

  • success <~Boolean>

# File lib/fog/openstack/requests/compute/add_fixed_ip.rb, line 12
def add_fixed_ip(server_id, network_id)
  body = {
    'addFixedIp' => {
      'networkId' => network_id
    }
  }
  server_action(server_id, body).status == 202
end
allocate_address(pool = nil) click to toggle source
# File lib/fog/openstack/requests/compute/allocate_address.rb, line 6
def allocate_address(pool = nil)

  request(
    :body     => Fog::JSON.encode({'pool' => pool}),
    :expects  => [200, 202],
    :method   => 'POST',
    :path     => 'os-floating-ips.json'
  )
end
associate_address(server_id, ip_address) click to toggle source
# File lib/fog/openstack/requests/compute/associate_address.rb, line 6
def associate_address(server_id, ip_address)
  body = { "addFloatingIp" => {"address" => ip_address}}
  server_action(server_id, body)
end
attach_volume(volume_id, server_id, device) click to toggle source
# File lib/fog/openstack/requests/compute/attach_volume.rb, line 6
def attach_volume(volume_id, server_id, device)
  data = {
    'volumeAttachment' => {
      'volumeId' => volume_id.to_s,
      'device'   => device
    }
  }
  request(
    :body     => Fog::JSON.encode(data),
    :expects  => [200, 202],
    :method   => 'POST',
    :path     => "servers/%s/os-volume_attachments" % [server_id]
  )
end
boot_from_snapshot(name, image_ref, flavor_ref, options={}) click to toggle source
# File lib/fog/openstack/requests/compute/boot_from_snapshot.rb, line 5
def boot_from_snapshot(name, image_ref, flavor_ref, options={})
  data = {
    'server' => {
      'flavorRef'  => flavor_ref,
      'imageRef'   => image_ref,
      'name'       => name
    }
  }

  vanilla_options = ['metadata', 'accessIPv4', 'accessIPv6',
                     'availability_zone', 'user_data', 'block_device_mapping',
                     'key_name', 'security_groups']
  vanilla_options.select{|o| options[o]}.each do |key|
    data['server'][key] = options[key]
  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     => Fog::JSON.encode(data),
    :expects  => [200, 202],
    :method   => 'POST',
    :path     => '/os-volumes_boot.json'
  )
end
change_server_password(server_id, admin_password) click to toggle source
# File lib/fog/openstack/requests/compute/change_server_password.rb, line 6
def change_server_password(server_id, admin_password)
  body = { 'changePassword' => { 'adminPass' => admin_password }}
  server_action(server_id, body)
end
confirm_resize_server(server_id) click to toggle source
# File lib/fog/openstack/requests/compute/confirm_resize_server.rb, line 6
def confirm_resize_server(server_id)
  body = { 'confirmResize' => nil }
  server_action(server_id, body, 204)
end
create_flavor(attributes) click to toggle source

PARAMETERS # name = Name of flavor ram = Memory in MB vcpus = Number of VCPUs disk = Size of local disk in GB swap = Swap space in MB rxtx_factor = RX/TX factor

# File lib/fog/openstack/requests/compute/create_flavor.rb, line 12
def create_flavor(attributes)
  # Get last flavor id
  flavor_ids = Array.new
  flavors = list_flavors_detail.body['flavors']
  flavors.each do |flavor|
    flavor_ids << flavor['id'].to_i
  end

  # Set flavor id
  attributes[:flavor_id] = attributes[:flavor_id] || flavor_ids.sort.last + 1

  data = {
    'flavor' => {
      'name' => attributes[:name],
      'ram' => attributes[:ram],
      'vcpus' => attributes[:vcpus],
      'disk' => attributes[:disk],
      'id' => attributes[:flavor_id],
      'swap' => attributes[:swap],
      'OS-FLV-EXT-DATA:ephemeral' => attributes[:ephemeral],
      'os-flavor-access:is_public' => attributes[:is_public],
      'rxtx_factor' => attributes[:rxtx_factor]
    }
  }

  request(
    :body => Fog::JSON.encode(data),
    :expects => 200,
    :method => 'POST',
    :path => 'flavors'
  )
end
create_image(server_id, name, metadata={}) click to toggle source
# File lib/fog/openstack/requests/compute/create_image.rb, line 6
def create_image(server_id, name, metadata={})
  body = { 'createImage' => {
    'name' => name,
    'metadata' => metadata
  }}
  data = server_action(server_id, body)
  image_id = data.headers["Location"].scan(/.*\/(.*)/).flatten[0]
  get_image_details(image_id)
end
create_key_pair(key_name, public_key = nil) click to toggle source
# File lib/fog/openstack/requests/compute/create_key_pair.rb, line 6
def create_key_pair(key_name, public_key = nil)

  data = {
    'keypair' => {
      'name' => key_name
    }
  }

  data['keypair']['public_key'] = public_key unless public_key.nil?

  request(
    :body     => Fog::JSON.encode(data),
    :expects  => 200,
    :method   => 'POST',
    :path     => 'os-keypairs.json'
  )
end
create_security_group(name, description) click to toggle source
# File lib/fog/openstack/requests/compute/create_security_group.rb, line 6
def create_security_group(name, description)
  data = {
    'security_group' => {
      'name'       => name,
      'description' => description
    }
  }

  request(
    :body     => Fog::JSON.encode(data),
    :expects  => 200,
    :method   => 'POST',
    :path     => 'os-security-groups.json'
  )
end
create_security_group_rule(parent_group_id, ip_protocol, from_port, to_port, cidr, group_id=nil) click to toggle source
# File lib/fog/openstack/requests/compute/create_security_group_rule.rb, line 6
def create_security_group_rule(parent_group_id, ip_protocol, from_port, to_port, cidr, group_id=nil)
  data = {
    'security_group_rule' => {
      'parent_group_id' => parent_group_id,
      'ip_protocol'     => ip_protocol,
      'from_port'       => from_port,
      'to_port'         => to_port,
      'cidr'            => cidr,
      'group_id'        => group_id
    }
  }

  request(
    :expects  => 200,
    :method   => 'POST',
    :body     => Fog::JSON.encode(data),
    :path     => 'os-security-group-rules.json'
  )
end
create_server(name, image_ref, flavor_ref, options = {}) click to toggle source
# File lib/fog/openstack/requests/compute/create_server.rb, line 6
def create_server(name, image_ref, flavor_ref, options = {})
  data = {
    'server' => {
      'flavorRef'  => flavor_ref,
      'imageRef'   => image_ref,
      'name'       => name
    }
  }

  vanilla_options = ['metadata', 'accessIPv4', 'accessIPv6',
                     'availability_zone', 'user_data', 'key_name', 'adminPass']
  vanilla_options.select{|o| options[o]}.each do |key|
    data['server'][key] = options[key]
  end

  if options['security_groups']
    # security names requires a hash with a name prefix
    data['server']['security_groups'] =
      Array(options['security_groups']).map do |sg|
      name = if sg.is_a?(Fog::Compute::OpenStack::SecurityGroup) then
               sg.name
             else
               sg
             end
      { :name => name }
    end
  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

  if options['nics']
    data['server']['networks'] =
    Array(options['nics']).map do |nic|
      {
        'uuid' => nic['net_id'],
        'fixed_ip' => nic['v4_fixed_ip'],
        'port' => nic['port_id']
      }
    end
  end

  if options['os:scheduler_hints']
    data['os:scheduler_hints'] = options['os:scheduler_hints']
  end

  request(
    :body     => Fog::JSON.encode(data),
    :expects  => [200, 202],
    :method   => 'POST',
    :path     => 'servers.json'
  )
end
create_volume(name, description, size, options={}) click to toggle source
# File lib/fog/openstack/requests/compute/create_volume.rb, line 6
def create_volume(name, description, size, options={})
  data = {
    'volume' => {
      'display_name'        => name,
      'display_description' => description,
      'size'                => size
    }
  }

  vanilla_options = ['snapshot_id']
  vanilla_options.select{|o| options[o]}.each do |key|
    data['volume'][key] = options[key]
  end
  request(
    :body     => Fog::JSON.encode(data),
    :expects  => [200, 202],
    :method   => 'POST',
    :path     => "os-volumes"
  )
end
create_volume_snapshot(volume_id, name, description, force=false) click to toggle source
# File lib/fog/openstack/requests/compute/create_volume_snapshot.rb, line 6
def create_volume_snapshot(volume_id, name, description, force=false)
  data = {
    'snapshot' => {
      'volume_id'           => volume_id,
      'display_name'        => name,
      'display_description' => description,
      'force'               => force
    }
  }

  request(
    :body     => Fog::JSON.encode(data),
    :expects  => [200, 202],
    :method   => 'POST',
    :path     => "os-snapshots"
  )
end
credentials() click to toggle source
# File lib/fog/openstack/compute.rb, line 317
def credentials
  { :provider                 => 'openstack',
    :openstack_auth_url       => @openstack_auth_uri.to_s,
    :openstack_auth_token     => @auth_token,
    :openstack_management_url => @openstack_management_url,
    :openstack_identity_endpoint => @openstack_identity_public_endpoint,
    :openstack_region         => @openstack_region,
    :current_user             => @current_user,
    :current_tenant           => @current_tenant }
end
delete_flavor(flavor_id) click to toggle source
# File lib/fog/openstack/requests/compute/delete_flavor.rb, line 5
def delete_flavor(flavor_id)
  request(
    :expects  => 202,
    :method   => 'DELETE',
    :path     => "flavors/#{flavor_id}"
  )
end
delete_image(image_id) click to toggle source
# File lib/fog/openstack/requests/compute/delete_image.rb, line 6
def delete_image(image_id)
  request(
    :expects  => 204,
    :method   => 'DELETE',
    :path     => "images/#{image_id}"
  )
end
delete_key_pair(key_name) click to toggle source
# File lib/fog/openstack/requests/compute/delete_key_pair.rb, line 6
def delete_key_pair(key_name)
  request(
    :expects  => 202,
    :method   => 'DELETE',
    :path     => "os-keypairs/#{key_name}"
  )
end
delete_meta(collection_name, parent_id, key) click to toggle source
# File lib/fog/openstack/requests/compute/delete_meta.rb, line 7
def delete_meta(collection_name, parent_id, key)
  request(
    :expects  => 204,
    :method   => 'DELETE',
    :path     => "#{collection_name}/#{parent_id}/metadata/#{key}"
  )
end
delete_metadata(collection_name, parent_id, key) click to toggle source
# File lib/fog/openstack/requests/compute/delete_metadata.rb, line 6
def delete_metadata(collection_name, parent_id, key)
  request(
    :expects  => 204,
    :method   => 'DELETE',
    :path     => "#{collection_name}/#{parent_id}/metadata/#{key}"
  )
end
delete_security_group(security_group_id) click to toggle source
# File lib/fog/openstack/requests/compute/delete_security_group.rb, line 6
def delete_security_group(security_group_id)
  request(
    :expects  => 202,
    :method   => 'DELETE',
    :path     => "os-security-groups/#{security_group_id}"
  )
end
delete_security_group_rule(security_group_rule_id) click to toggle source
# File lib/fog/openstack/requests/compute/delete_security_group_rule.rb, line 6
def delete_security_group_rule(security_group_rule_id)
  request(
    :expects  => 202,
    :method   => 'DELETE',
    :path     => "os-security-group-rules/#{security_group_rule_id}"
  )
end
delete_server(server_id) click to toggle source
# File lib/fog/openstack/requests/compute/delete_server.rb, line 6
def delete_server(server_id)
  request(
    :expects => 204,
    :method => 'DELETE',
    :path   => "servers/#{server_id}"
  )
end
delete_snapshot(snapshot_id) click to toggle source
# File lib/fog/openstack/requests/compute/delete_snapshot.rb, line 6
def delete_snapshot(snapshot_id)
  request(
    :expects  => 202,
    :method   => 'DELETE',
    :path     => "os-snapshots/#{snapshot_id}"
  )
end
delete_volume(volume_id) click to toggle source
# File lib/fog/openstack/requests/compute/delete_volume.rb, line 6
def delete_volume(volume_id)
  request(
    :expects  => 202,
    :method   => 'DELETE',
    :path     => "os-volumes/#{volume_id}"
  )
end
detach_volume(server_id, attachment_id) click to toggle source
# File lib/fog/openstack/requests/compute/detach_volume.rb, line 6
def detach_volume(server_id, attachment_id)
  request(
    :expects  => 202,
    :method   => 'DELETE',
    :path     => "servers/%s/os-volume_attachments/%s" % [server_id, attachment_id]
  )
end
disassociate_address(server_id, ip_address) click to toggle source
# File lib/fog/openstack/requests/compute/disassociate_address.rb, line 6
def disassociate_address(server_id, ip_address)
  body = { "removeFloatingIp" => {"address" => ip_address}}
  server_action(server_id, body)
end
get_address(address_id) click to toggle source
# File lib/fog/openstack/requests/compute/get_address.rb, line 6
def get_address(address_id)

  request(
    :expects  => [200],
    :method   => 'GET',
    :path     => "os-floating-ips/#{address_id}"
  )
end
get_console_output(server_id, log_length) click to toggle source
# File lib/fog/openstack/requests/compute/get_console_output.rb, line 6
def get_console_output(server_id, log_length)
  body = {
    'os-getConsoleOutput' => {
      'length' => log_length
    }
  }
  server_action(server_id, body)
end
get_flavor_details(flavor_ref) click to toggle source
# File lib/fog/openstack/requests/compute/get_flavor_details.rb, line 6
def get_flavor_details(flavor_ref)
  request(
    :expects  => [200, 203],
    :method   => 'GET',
    :path     => "flavors/#{flavor_ref}.json"
  )
end
get_host_details(host) click to toggle source
# File lib/fog/openstack/requests/compute/get_host_details.rb, line 6
def get_host_details(host)
  request(
    :expects  => [200, 203],
    :method   => 'GET',
    :path     => "os-hosts/#{host}.json"
  )
end
get_image_details(image_id) click to toggle source
# File lib/fog/openstack/requests/compute/get_image_details.rb, line 6
def get_image_details(image_id)
  request(
    :expects  => [200, 203],
    :method   => 'GET',
    :path     => "images/#{image_id}.json"
  )
end
get_limits() click to toggle source
# File lib/fog/openstack/requests/compute/get_limits.rb, line 8
def get_limits
  request(
    :expects  => 200,
    :method   => 'GET',
    :path     => '/limits.json'
  )
end
get_metadata(collection_name, parent_id, key) click to toggle source
# File lib/fog/openstack/requests/compute/get_metadata.rb, line 6
def get_metadata(collection_name, parent_id, key)
  request(
    :expects  => [200, 203],
    :method   => 'GET',
    :path     => "#{collection_name}/#{parent_id}/metadata/#{key}"
  )
end
get_quota(tenant_id) click to toggle source
# File lib/fog/openstack/requests/compute/get_quota.rb, line 6
def get_quota(tenant_id)
  request(
    :expects  => 200,
    :method   => 'GET',
    :path     => "/os-quota-sets/#{tenant_id}"
  )
end
get_quota_defaults(tenant_id) click to toggle source
# File lib/fog/openstack/requests/compute/get_quota_defaults.rb, line 6
def get_quota_defaults(tenant_id)
  request(
    :expects  => 200,
    :method   => 'GET',
    :path     => "/os-quota-sets/#{tenant_id}/defaults"
  )
end
get_security_group(security_group_id) click to toggle source
# File lib/fog/openstack/requests/compute/get_security_group.rb, line 6
def get_security_group(security_group_id)
  request(
    :expects  => [200],
    :method   => 'GET',
    :path     => "os-security-groups/#{security_group_id}"
  )
end
get_server_details(server_id) click to toggle source
# File lib/fog/openstack/requests/compute/get_server_details.rb, line 6
def get_server_details(server_id)
  request(
    :expects  => [200, 203],
    :method   => 'GET',
    :path     => "servers/#{server_id}.json"
  )
end
get_server_volumes(server_id) click to toggle source
# File lib/fog/openstack/requests/compute/get_server_volumes.rb, line 6
def get_server_volumes(server_id)

  request(
    :expects  => 200,
    :method   => 'GET',
    :path     => "/servers/#{server_id}/os-volume_attachments"
  )
end
get_snapshot_details(snapshot_id) click to toggle source
# File lib/fog/openstack/requests/compute/get_snapshot_details.rb, line 6
def get_snapshot_details(snapshot_id)

  request(
    :expects  => 200,
    :method   => 'GET',
    :path     => "os-snapshots/#{snapshot_id}"
  )
end
get_usage(tenant_id, date_start, date_end) click to toggle source
# File lib/fog/openstack/requests/compute/get_usage.rb, line 6
def get_usage(tenant_id, date_start, date_end)
  params = Hash.new
  params[:start] = date_start.utc.iso8601.chop!
  params[:end]   = date_end.utc.iso8601.chop!
  request(
    :expects  => [200, 203],
    :method   => 'GET',
    :path     => "os-simple-tenant-usage/#{tenant_id}",
    :query    => params
  )
end
get_vnc_console(server_id, console_type) click to toggle source

Get a vnc console for an instance.

Parameters

  • server_id <~String> - The ID of the server.

  • console_type <~String> - Type of vnc console to get ('novnc' or 'xvpvnc').

Returns

  • response <~Excon::Response>:

    • body <~Hash>:

      • url <~String>

      • type <~String>

# File lib/fog/openstack/requests/compute/get_vnc_console.rb, line 15
def get_vnc_console(server_id, console_type)
  body = {
    'os-getVNCConsole' => {
      'type' => console_type
    }
  }
  server_action(server_id, body)
end
get_volume_details(volume_id) click to toggle source
# File lib/fog/openstack/requests/compute/get_volume_details.rb, line 6
def get_volume_details(volume_id)

  request(
    :expects  => 200,
    :method   => 'GET',
    :path     => "os-volumes/#{volume_id}"
  )
end
list_address_pools() click to toggle source
# File lib/fog/openstack/requests/compute/list_address_pools.rb, line 6
def list_address_pools
  request(
    :expects  => [200, 203],
    :method   => 'GET',
    :path     => "os-floating-ip-pools"
  )

end
list_addresses(server_id) click to toggle source
# File lib/fog/openstack/requests/compute/list_addresses.rb, line 6
def list_addresses(server_id)
  request(
    :expects  => [200, 203],
    :method   => 'GET',
    :path     => "servers/#{server_id}/ips.json"
  )
end
list_all_addresses() click to toggle source
# File lib/fog/openstack/requests/compute/list_all_addresses.rb, line 6
def list_all_addresses
  request(
    :expects  => [200, 203],
    :method   => 'GET',
    :path     => "os-floating-ips.json"
  )

end
list_flavors() click to toggle source
# File lib/fog/openstack/requests/compute/list_flavors.rb, line 6
def list_flavors
  request(
    :expects  => [200, 203],
    :method   => 'GET',
    :path     => 'flavors.json'
  )
end
list_flavors_detail() click to toggle source
# File lib/fog/openstack/requests/compute/list_flavors_detail.rb, line 6
def list_flavors_detail
  request(
    :expects  => [200, 203],
    :method   => 'GET',
    :path     => 'flavors/detail.json'
  )
end
list_hosts() click to toggle source
# File lib/fog/openstack/requests/compute/list_hosts.rb, line 6
def list_hosts
  request(
    :expects  => [200, 203],
    :method   => 'GET',
    :path     => 'os-hosts.json'
  )
end
list_images() click to toggle source
# File lib/fog/openstack/requests/compute/list_images.rb, line 6
def list_images
  request(
    :expects  => [200, 203],
    :method   => 'GET',
    :path     => 'images.json'
  )
end
list_images_detail() click to toggle source
# File lib/fog/openstack/requests/compute/list_images_detail.rb, line 6
def list_images_detail
  request(
    :expects  => [200, 203],
    :method   => 'GET',
    :path     => 'images/detail.json'
  )
end
list_key_pairs() click to toggle source
# File lib/fog/openstack/requests/compute/list_key_pairs.rb, line 6
def list_key_pairs
  request(
    :expects  => [200, 203],
    :method   => 'GET',
    :path     => 'os-keypairs.json'
  )
end
list_metadata(collection_name, parent_id) click to toggle source
# File lib/fog/openstack/requests/compute/list_metadata.rb, line 6
def list_metadata(collection_name, parent_id)
  request(
    :expects  => [200, 203],
    :method   => 'GET',
    :path     => "/#{collection_name}/#{parent_id}/metadata.json"
  )
end
list_private_addresses(server_id) click to toggle source
# File lib/fog/openstack/requests/compute/list_private_addresses.rb, line 6
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) click to toggle source
# File lib/fog/openstack/requests/compute/list_public_addresses.rb, line 6
def list_public_addresses(server_id)
  request(
    :expects  => [200, 203],
    :method   => 'GET',
    :path     => "servers/#{server_id}/ips/public.json"
  )
end
list_security_groups(server_id = nil) click to toggle source
# File lib/fog/openstack/requests/compute/list_security_groups.rb, line 6
def list_security_groups(server_id = nil)
  path = "os-security-groups.json"
  if server_id
    path = "servers/#{server_id}/#{path}"
  end
  request(
    :expects  => [200],
    :method   => 'GET',
    :path     => path
  )
end
list_servers(options = {}) click to toggle source
# File lib/fog/openstack/requests/compute/list_servers.rb, line 6
def list_servers(options = {})
  params = Hash.new
  params['all_tenants'] = 'True' if options[:all_tenants]

  request(
    :expects  => [200, 203],
    :method   => 'GET',
    :path     => 'servers.json',
    :query   => params
  )
end
list_servers_detail(filters = {}) click to toggle source

Available filters: name, status, image, flavor, changes_since, reservation_id

# File lib/fog/openstack/requests/compute/list_servers_detail.rb, line 7
def list_servers_detail(filters = {})
  params = Hash.new
  filters[:all_tenants] ? params['all_tenants'] = 'True' : params = filters

  request(
    :expects  => [200, 203],
    :method   => 'GET',
    :path     => 'servers/detail.json',
    :query   => params
  )
end
list_snapshots(detailed=true) click to toggle source
# File lib/fog/openstack/requests/compute/list_snapshots.rb, line 6
def list_snapshots(detailed=true)

  path = detailed ? 'os-snapshots/detail' : 'os-snapshots'
  request(
    :expects  => 200,
    :method   => 'GET',
    :path     => path
  )
end
list_tenants() click to toggle source
# File lib/fog/openstack/requests/compute/list_tenants.rb, line 5
def list_tenants
  response = @identity_connection.request({
    :expects => [200, 204],
    :headers => {'Content-Type' => 'application/json',
                 'Accept' => 'application/json',
                 'X-Auth-Token' => @auth_token},
    :method  => 'GET',
    :path    => '/v2.0/tenants'
  })
  response.body = Fog::JSON.decode(response.body)
  response
end
list_usages(date_start = nil, date_end = nil, detailed=false) click to toggle source
# File lib/fog/openstack/requests/compute/list_usages.rb, line 6
def list_usages(date_start = nil, date_end = nil, detailed=false)
  params = Hash.new
  params[:start] = date_start.iso8601.gsub(/\+.*/, '') if date_start
  params[:end]   = date_end.iso8601.gsub(/\+.*/, '')   if date_end
  params[:detailed] = (detailed ? '1' : '0')           if detailed

  request(
    :expects  => [200, 203],
    :method   => 'GET',
    :path     => 'os-simple-tenant-usage',
    :query    => params
  )
end
list_volumes(detailed=true) click to toggle source
# File lib/fog/openstack/requests/compute/list_volumes.rb, line 6
def list_volumes(detailed=true)
  path = detailed ? 'os-volumes/detail' : 'os-volumes'
  request(
    :expects  => 200,
    :method   => 'GET',
    :path     => path
  )
end
live_migrate_server(server_id, host, block_migration, disk_over_commit) click to toggle source
# File lib/fog/openstack/requests/compute/live_migrate_server.rb, line 6
def live_migrate_server(server_id, host, block_migration, disk_over_commit)
  body = {
    'os-migrateLive' => {
      'host' => host,
      'block_migration' => block_migration,
      'disk_over_commit' => disk_over_commit,
    }
  }
  server_action(server_id, body)

end
migrate_server(server_id) click to toggle source
# File lib/fog/openstack/requests/compute/migrate_server.rb, line 6
def migrate_server(server_id)
  body = { 'migrate' => nil }
  server_action(server_id, body)
end
pause_server(server_id) click to toggle source

Pause the server.

Parameters

  • server_id <~String> - The ID of the server to pause.

Returns

  • success <~Boolean>

# File lib/fog/openstack/requests/compute/pause_server.rb, line 11
def pause_server(server_id)
  body = { 'pause' => nil }
  server_action(server_id, body).status == 202
end
reboot_server(server_id, type = 'SOFT') click to toggle source
# File lib/fog/openstack/requests/compute/reboot_server.rb, line 6
def reboot_server(server_id, type = 'SOFT')
  body = { 'reboot' => { 'type' => type }}
  server_action(server_id, body)
end
rebuild_server(server_id, image_ref, name, admin_pass=nil, metadata=nil, personality=nil) click to toggle source
# File lib/fog/openstack/requests/compute/rebuild_server.rb, line 6
def rebuild_server(server_id, image_ref, name, admin_pass=nil, metadata=nil, personality=nil)

  body = { 'rebuild' => {
    'imageRef' => image_ref,
    'name' => name
  }}
  body['rebuild']['adminPass'] = admin_pass if admin_pass
  body['rebuild']['metadata'] = metadata if metadata
  if personality
    body['rebuild']['personality'] = []
    for file in personality
      body['rebuild']['personality'] << {
        'contents'  => Base64.encode64(file['contents']),
        'path'      => file['path']
      }
    end
  end
  server_action(server_id, body, 202)
end
release_address(address_id) click to toggle source
# File lib/fog/openstack/requests/compute/release_address.rb, line 6
def release_address(address_id)
  request(
    :expects => [200, 202],
    :method => 'DELETE',
    :path   => "os-floating-ips/#{address_id}"
  )
end
reload() click to toggle source
# File lib/fog/openstack/compute.rb, line 328
def reload
  @connection.reset
end
remove_fixed_ip(server_id, address) click to toggle source

Remove an IP address.

Parameters

  • server_id <~String> - The ID of the server in which to remove an IP from.

  • address <~String> - The IP address to be removed.

Returns

  • success <~Boolean>

# File lib/fog/openstack/requests/compute/remove_fixed_ip.rb, line 12
def remove_fixed_ip(server_id, address)
  body = {
    'removeFixedIp' => {
      'address' => address
    }
  }
  server_action(server_id, body).status == 202
end
request(params) click to toggle source
# File lib/fog/openstack/compute.rb, line 332
def request(params)
  begin
    response = @connection.request(params.merge({
      :headers  => {
        'Content-Type' => 'application/json',
        'Accept' => 'application/json',
        'X-Auth-Token' => @auth_token
      }.merge!(params[:headers] || {}),
      :host     => @host,
      :path     => "#{@path}/#{@tenant_id}/#{params[:path]}",
      :query    => params[:query]
    }))
  rescue Excon::Errors::Unauthorized => error
    if error.response.body != 'Bad username or password' # token expiration
      @openstack_must_reauthenticate = true
      authenticate
      retry
    else # Bad Credentials
      raise error
    end
  rescue Excon::Errors::HTTPStatusError => error
    raise case error
      when Excon::Errors::NotFound
        Fog::Compute::OpenStack::NotFound.slurp(error)
      else
        error
      end
  end

  unless response.body.empty?
    response.body = Fog::JSON.decode(response.body)
  end

  response
end
rescue_server(server_id) click to toggle source

Rescue the server.

Parameters

  • server_id <~String> - The ID of the server to be rescued.

Returns

  • success <~Boolean>

# File lib/fog/openstack/requests/compute/rescue_server.rb, line 11
def rescue_server(server_id)
  body = { 'rescue' => nil }
  server_action(server_id, body) == 202
end
reset_server_state(server_id, status) click to toggle source
# File lib/fog/openstack/requests/compute/reset_server_state.rb, line 6
def reset_server_state(server_id, status)
  body = { 'os-resetState' => { 'state' => status } }
  server_action(server_id, body, 202)
end
resize_server(server_id, flavor_ref) click to toggle source
# File lib/fog/openstack/requests/compute/resize_server.rb, line 6
def resize_server(server_id, flavor_ref)
  body = { 'resize' => { 'flavorRef' => flavor_ref }}
  server_action(server_id, body)
end
resume_server(server_id) click to toggle source

Resume the server.

Parameters

  • server_id <~String> - The ID of the server to be resumed.

Returns

  • success <~Boolean>

# File lib/fog/openstack/requests/compute/resume_server.rb, line 11
def resume_server(server_id)
  body = { 'resume' => nil }
  server_action(server_id, body).status == 202
end
revert_resize_server(server_id) click to toggle source
# File lib/fog/openstack/requests/compute/revert_resize_server.rb, line 6
def revert_resize_server(server_id)
  body = { 'revertResize' => nil }
  server_action(server_id, body)
end
server_action(server_id, body, expects=[200,202]) click to toggle source
# File lib/fog/openstack/requests/compute/server_action.rb, line 6
def server_action(server_id, body, expects=[200,202])
  request(
    :body     => Fog::JSON.encode(body),
    :expects  => expects,
    :method   => 'POST',
    :path     => "servers/#{server_id}/action.json"
  )
end
server_actions(server_id) click to toggle source

Retrieve server actions.

Parameters

  • server_id <~String> - The ID of the server to query for available actions.

Returns

  • actions <~Array>

# File lib/fog/openstack/requests/compute/server_actions.rb, line 11
def server_actions(server_id)
  request(
    :expects  => 200,
    :method   => 'GET',
    :path     => "servers/#{server_id}/actions"
  ).body['actions']
end
server_diagnostics(server_id) click to toggle source

Retrieve server diagnostics.

Parameters

  • server_id <~String> - The ID of the server to retrieve diagnostics.

Returns

  • actions <~Array>

# File lib/fog/openstack/requests/compute/server_diagnostics.rb, line 11
def server_diagnostics(server_id)
  request(
    :method   => 'GET',
    :path     => "servers/#{server_id}/diagnostics"
  )
end
set_metadata(collection_name, parent_id, metadata = {}) click to toggle source
# File lib/fog/openstack/requests/compute/set_metadata.rb, line 7
def set_metadata(collection_name, parent_id, metadata = {})
  request(
    :body     => Fog::JSON.encode({ 'metadata' => metadata }),
    :expects  => 200,
    :method   => 'PUT',
    :path     => "#{collection_name}/#{parent_id}/metadata"
  )
end
set_tenant(tenant) click to toggle source
# File lib/fog/openstack/requests/compute/set_tenant.rb, line 6
def set_tenant(tenant)
  @openstack_must_reauthenticate = true
  @openstack_tenant = tenant.to_s
  authenticate
end
suspend_server(server_id) click to toggle source

Suspend the server.

Parameters

  • server_id <~String> - The ID of the server to suspend.

Returns

  • success <~Boolean>

# File lib/fog/openstack/requests/compute/suspend_server.rb, line 11
def suspend_server(server_id)
  body = { 'suspend' => nil }
  server_action(server_id, body).status == 202
end
unpause_server(server_id) click to toggle source

Unpause the server.

Parameters

  • server_id <~String> - The ID of the server to unpause.

Returns

  • success <~Boolean>

# File lib/fog/openstack/requests/compute/unpause_server.rb, line 11
def unpause_server(server_id)
  body = { 'unpause' => nil }
  server_action(server_id, body).status == 202
end
update_meta(collection_name, parent_id, key, value) click to toggle source
# File lib/fog/openstack/requests/compute/update_meta.rb, line 7
def update_meta(collection_name, parent_id, key, value)
  request(
    :body     => Fog::JSON.encode({ 'meta' => {key => value}}),
    :expects  => 200,
    :method   => 'PUT',
    :path     => "#{collection_name}/#{parent_id}/metadata/#{key}"
  )
end
update_metadata(collection_name, parent_id, metadata = {}) click to toggle source
# File lib/fog/openstack/requests/compute/update_metadata.rb, line 7
def update_metadata(collection_name, parent_id, metadata = {})
  request(
    :body     => Fog::JSON.encode({ 'metadata' => metadata }),
    :expects  => 200,
    :method   => 'POST',
    :path     => "#{collection_name}/#{parent_id}/metadata.json"
  )
end
update_quota(tenant_id, options = {}) click to toggle source
# File lib/fog/openstack/requests/compute/update_quota.rb, line 6
def update_quota(tenant_id, options = {})
  options['tenant_id'] = tenant_id
  request(
    :body => Fog::JSON.encode({ 'quota_set' => options }),
    :expects => 200,
    :method => 'PUT',
    :path => "/os-quota-sets/#{tenant_id}"
  )
end
update_server(server_id, options = {}) click to toggle source
# File lib/fog/openstack/requests/compute/update_server.rb, line 6
def update_server(server_id, options = {})
  request(
    :body     => Fog::JSON.encode({ 'server' => options }),
    :expects  => 200,
    :method   => 'PUT',
    :path     => "servers/#{server_id}.json"
  )
end

[Validate]

Generated with the Darkfish Rdoc Generator 2.