class Fog::Compute::Glesys::Ips

Public Instance Methods

all() click to toggle source
# File lib/fog/glesys/models/compute/ips.rb, line 13
def all
  attributes = {}
  attributes[:serverid] = serverid unless serverid.nil?
  ips  = service.ip_list_own(attributes).body['response']['iplist']
  load(ips)
end
attach(ip, server_id=nil) click to toggle source
# File lib/fog/glesys/models/compute/ips.rb, line 82
def attach(ip, server_id=nil)
  if server_id.nil?
    server_id = serverid
  end

  if server_id.nil?
    raise Fog::Errors::Error.new("You need to specify a server id")
  end

  server_id = server_id.serverid if server_id.is_a?(Fog::Compute::Glesys::Server)

  service.ip_add(
    :ipaddress => ip_from_object(ip),
    :serverid  => server_id
  )

  if server.nil?
    true
  else
    server.reload
  end
end
attached() click to toggle source
# File lib/fog/glesys/models/compute/ips.rb, line 25
def attached
  all.select { |ip| !ip.serverid.nil? }
end
available() click to toggle source
# File lib/fog/glesys/models/compute/ips.rb, line 29
def available
  all.select { |ip| ip.serverid.nil? }
end
free(options = {}) click to toggle source
# File lib/fog/glesys/models/compute/ips.rb, line 33
def free(options = {})
  default_options = {
    :version => 4
  }

  if !server.nil?
    default_options[:datacenter] = server.datacenter
    default_options[:platform] = server.platform
  end

  options = default_options.merge!(options)

  %w{platform datacenter version}.each do |attr|
    raise Fog::Errors::Error.new("You need to specify ':#{attr}'") if !options.key?(attr.to_sym)
  end

  options[:ipversion] = options[:version]
  options.delete(:version)

  service.ip_list_free(options).body["response"]["iplist"]["ipaddresses"]
end
get(ip) click to toggle source
# File lib/fog/glesys/models/compute/ips.rb, line 20
def get(ip)
  data = service.ip_details( :ipaddress => ip).body['response']['details']
  new data
end
release(ip) click to toggle source
# File lib/fog/glesys/models/compute/ips.rb, line 76
def release(ip)
  service.ip_release(
    :ipaddress => ip_from_object(ip)
  )
end
remove(ip, options = {}) click to toggle source
# File lib/fog/glesys/models/compute/ips.rb, line 105
def remove(ip, options = {})
  new service.ip_remove({:ipaddress => ip_from_object(ip)}.merge!(options)).data.body["response"]["details"]
end
take(ip, options = {}) click to toggle source
# File lib/fog/glesys/models/compute/ips.rb, line 55
def take(ip, options = {})
  default_options = {
    :attach => false
  }

  options = default_options.merge!(options)

  data = service.ip_take(
    :ipaddress => ip_from_object(ip)
  ).body["response"]["details"]

  ip = new data

  if options[:attach] && serverid
    server.ips.attach ip, serverid
    ip.serverid = serverid
  end

  ip
end

Private Instance Methods

ip_from_object(ip) click to toggle source
# File lib/fog/glesys/models/compute/ips.rb, line 111
def ip_from_object(ip)
  ip.is_a?(Fog::Compute::Glesys::Ip) ? ip.ip : ip
end