Class: Fog::Compute::Softlayer::Servers

Inherits:
Fog::Collection
  • Object
show all
Defined in:
lib/fog/softlayer/models/compute/servers.rb

Instance Method Summary collapse

Instance Method Details

#allObject



19
20
21
22
# File 'lib/fog/softlayer/models/compute/servers.rb', line 19

def all
  data = service.list_servers
  load(data)
end

#bootstrap(options = {}) ⇒ Object



42
43
44
45
46
# File 'lib/fog/softlayer/models/compute/servers.rb', line 42

def bootstrap(options={})
  server = service.create(options)
  server.wait_for { ready? }
  server
end

#get(identifier) ⇒ Object

Get a SoftLayer server.



27
28
29
30
31
32
33
34
35
36
37
38
39
40
# File 'lib/fog/softlayer/models/compute/servers.rb', line 27

def get(identifier)
  return nil if identifier.nil? || identifier == ""
  response = service.get_vm(identifier)
  bare_metal = false
  if response.status == 404 # we didn't find it as a VM, look for a BMC server
    response = service.get_bare_metal_server(identifier)
    bare_metal = true
  end
  data = response.body
  data['bare_metal'] = bare_metal
  new.merge_attributes(data)
rescue Excon::Errors::NotFound
  nil
end

#tagged_with(tags) ⇒ Object

Raises:

  • (ArgumentError)


48
49
50
51
52
53
54
55
56
# File 'lib/fog/softlayer/models/compute/servers.rb', line 48

def tagged_with(tags)
  raise ArgumentError, "Tags argument for #{self.class.name}##{__method__} must be Array." unless tags.is_a?(Array)
  ids = service.get_references_by_tag_name(tags.join(',')).body.map do |tag|
    tag['references'].map do |ref|
      ref['resourceTableId']
    end
  end.flatten.uniq
  ids.map { |id| get(id) }
end