Class: Fog::Compute::Ecloud::Servers

Inherits:
Ecloud::Collection show all
Defined in:
lib/fog/ecloud/models/compute/servers.rb

Instance Attribute Summary

Attributes inherited from Fog::Collection

#connection

Instance Method Summary collapse

Methods inherited from Ecloud::Collection

#check_href!, #load

Methods inherited from Fog::Collection

#clear, #destroy, #initialize, #inspect, #load, model, #model, #new, #reload, #table, #to_json

Methods included from Attributes::ClassMethods

#_load, #aliases, #attribute, #attributes, #identity, #ignore_attributes, #ignored_attributes

Methods included from Attributes::InstanceMethods

#_dump, #attributes, #dup, #identity, #identity=, #merge_attributes, #new_record?, #requires, #requires_one

Constructor Details

This class inherits a constructor from Fog::Collection

Instance Method Details

#allObject



12
13
14
15
16
17
18
19
20
21
22
# File 'lib/fog/ecloud/models/compute/servers.rb', line 12

def all
  data = connection.get_servers(href).body
  if data.keys.include?(:VirtualMachines)
    data = data[:VirtualMachines][:VirtualMachine]
  elsif data[:VirtualMachine]
    data = data[:VirtualMachine]
  else
    data = []
  end
  load(data)
end

#create(template_uri, options) ⇒ Object



36
37
38
39
40
41
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/ecloud/models/compute/servers.rb', line 36

def create( template_uri, options )
  options[:cpus] ||= 1
  options[:memory] ||= 512
  options[:description] ||= ""
  options[:tags] ||= []
  if template_uri =~ /\/templates\/\d+/
    options[:uri] = href + "/action/createVirtualMachine"
    options[:customization] ||= :linux
    options[:powered_on] ||= false
    if options[:ips]
      options[:ips] = options[:ips].is_a?(String) ? [options[:ips]] : options[:ips]
    else
      options[:network_uri] = options[:network_uri].is_a?(String) ? [options[:network_uri]] : options[:network_uri]
      options[:network_uri].each do |uri|
        index = options[:network_uri].index(uri)
        ip = Fog::Compute::Ecloud::IpAddresses.new(:connection => connection, :href => uri).detect { |i| i.host == nil }.name
        options[:ips] ||= []
        options[:ips][index] = ip
      end
    end
    data = connection.virtual_machine_create_from_template( template_uri, options ).body
  else
    options[:uri] = href + "/action/importVirtualMachine"
    data = connection.virtual_machine_import( template_uri, options ).body
  end
  object = new(data)
  object
end

#from_data(data) ⇒ Object



32
33
34
# File 'lib/fog/ecloud/models/compute/servers.rb', line 32

def from_data(data)
  new(data)
end

#get(uri) ⇒ Object



24
25
26
27
28
29
30
# File 'lib/fog/ecloud/models/compute/servers.rb', line 24

def get(uri)
  if data = connection.get_server(uri)
    new(data.body)
  end
rescue Fog::Errors::NotFound
  nil
end