Class: Fog::Compute::Ecloud::Real

Inherits:
Object
  • Object
show all
Includes:
Shared
Defined in:
lib/fog/ecloud/compute.rb,
lib/fog/ecloud/requests/compute/get_row.rb,
lib/fog/ecloud/requests/compute/get_tag.rb,
lib/fog/ecloud/requests/compute/get_role.rb,
lib/fog/ecloud/requests/compute/get_user.rb,
lib/fog/ecloud/requests/compute/get_rnat.rb,
lib/fog/ecloud/requests/compute/get_tags.rb,
lib/fog/ecloud/requests/compute/get_rows.rb,
lib/fog/ecloud/requests/compute/get_task.rb,
lib/fog/ecloud/requests/compute/get_node.rb,
lib/fog/ecloud/requests/compute/power_on.rb,
lib/fog/ecloud/requests/compute/get_group.rb,
lib/fog/ecloud/requests/compute/get_nodes.rb,
lib/fog/ecloud/requests/compute/power_off.rb,
lib/fog/ecloud/requests/compute/get_roles.rb,
lib/fog/ecloud/requests/compute/get_users.rb,
lib/fog/ecloud/requests/compute/rows_edit.rb,
lib/fog/ecloud/requests/compute/get_rnats.rb,
lib/fog/ecloud/requests/compute/get_tasks.rb,
lib/fog/ecloud/requests/compute/get_groups.rb,
lib/fog/ecloud/requests/compute/get_server.rb,
lib/fog/ecloud/requests/compute/get_layout.rb,
lib/fog/ecloud/requests/compute/get_network.rb,
lib/fog/ecloud/requests/compute/get_catalog.rb,
lib/fog/ecloud/requests/compute/get_api_key.rb,
lib/fog/ecloud/requests/compute/power_reset.rb,
lib/fog/ecloud/requests/compute/rows_moveup.rb,
lib/fog/ecloud/requests/compute/rows_delete.rb,
lib/fog/ecloud/requests/compute/groups_edit.rb,
lib/fog/ecloud/requests/compute/rows_create.rb,
lib/fog/ecloud/requests/compute/get_layouts.rb,
lib/fog/ecloud/requests/compute/get_monitor.rb,
lib/fog/ecloud/requests/compute/get_process.rb,
lib/fog/ecloud/requests/compute/get_servers.rb,
lib/fog/ecloud/requests/compute/get_ssh_key.rb,
lib/fog/ecloud/requests/compute/get_networks.rb,
lib/fog/ecloud/requests/compute/get_template.rb,
lib/fog/ecloud/requests/compute/get_api_keys.rb,
lib/fog/ecloud/requests/compute/get_location.rb,
lib/fog/ecloud/requests/compute/get_monitors.rb,
lib/fog/ecloud/requests/compute/get_ssh_keys.rb,
lib/fog/ecloud/requests/compute/get_locations.rb,
lib/fog/ecloud/requests/compute/groups_create.rb,
lib/fog/ecloud/requests/compute/get_public_ip.rb,
lib/fog/ecloud/requests/compute/groups_delete.rb,
lib/fog/ecloud/requests/compute/get_templates.rb,
lib/fog/ecloud/requests/compute/groups_moveup.rb,
lib/fog/ecloud/requests/compute/rows_movedown.rb,
lib/fog/ecloud/requests/compute/get_processes.rb,
lib/fog/ecloud/requests/compute/get_ip_address.rb,
lib/fog/ecloud/requests/compute/get_public_ips.rb,
lib/fog/ecloud/requests/compute/power_shutdown.rb,
lib/fog/ecloud/requests/compute/get_environment.rb,
lib/fog/ecloud/requests/compute/get_association.rb,
lib/fog/ecloud/requests/compute/monitors_enable.rb,
lib/fog/ecloud/requests/compute/groups_movedown.rb,
lib/fog/ecloud/requests/compute/get_login_banner.rb,
lib/fog/ecloud/requests/compute/get_compute_pool.rb,
lib/fog/ecloud/requests/compute/get_firewall_acl.rb,
lib/fog/ecloud/requests/compute/get_associations.rb,
lib/fog/ecloud/requests/compute/get_organization.rb,
lib/fog/ecloud/requests/compute/get_catalog_item.rb,
lib/fog/ecloud/requests/compute/monitors_disable.rb,
lib/fog/ecloud/requests/compute/compute_pool_edit.rb,
lib/fog/ecloud/requests/compute/get_guest_process.rb,
lib/fog/ecloud/requests/compute/get_detached_disk.rb,
lib/fog/ecloud/requests/compute/get_compute_pools.rb,
lib/fog/ecloud/requests/compute/node_service_edit.rb,
lib/fog/ecloud/requests/compute/monitors_edit_ecv.rb,
lib/fog/ecloud/requests/compute/get_firewall_acls.rb,
lib/fog/ecloud/requests/compute/get_organizations.rb,
lib/fog/ecloud/requests/compute/get_login_banners.rb,
lib/fog/ecloud/requests/compute/get_support_ticket.rb,
lib/fog/ecloud/requests/compute/monitors_edit_http.rb,
lib/fog/ecloud/requests/compute/monitors_edit_ping.rb,
lib/fog/ecloud/requests/compute/get_detached_disks.rb,
lib/fog/ecloud/requests/compute/public_ip_activate.rb,
lib/fog/ecloud/requests/compute/node_service_delete.rb,
lib/fog/ecloud/requests/compute/monitors_create_ecv.rb,
lib/fog/ecloud/requests/compute/get_guest_processes.rb,
lib/fog/ecloud/requests/compute/get_physical_device.rb,
lib/fog/ecloud/requests/compute/get_support_tickets.rb,
lib/fog/ecloud/requests/compute/get_network_summary.rb,
lib/fog/ecloud/requests/compute/node_service_create.rb,
lib/fog/ecloud/requests/compute/get_cpu_usage_detail.rb,
lib/fog/ecloud/requests/compute/get_physical_devices.rb,
lib/fog/ecloud/requests/compute/virtual_machine_copy.rb,
lib/fog/ecloud/requests/compute/monitors_create_http.rb,
lib/fog/ecloud/requests/compute/firewall_acls_create.rb,
lib/fog/ecloud/requests/compute/firewall_acls_delete.rb,
lib/fog/ecloud/requests/compute/virtual_machine_edit.rb,
lib/fog/ecloud/requests/compute/get_operating_system.rb,
lib/fog/ecloud/requests/compute/get_internet_service.rb,
lib/fog/ecloud/requests/compute/monitors_create_ping.rb,
lib/fog/ecloud/requests/compute/internet_service_edit.rb,
lib/fog/ecloud/requests/compute/get_internet_services.rb,
lib/fog/ecloud/requests/compute/virtual_machine_import.rb,
lib/fog/ecloud/requests/compute/virtual_machine_delete.rb,
lib/fog/ecloud/requests/compute/get_admin_organization.rb,
lib/fog/ecloud/requests/compute/internet_service_create.rb,
lib/fog/ecloud/requests/compute/internet_service_delete.rb,
lib/fog/ecloud/requests/compute/admin_edit_login_banner.rb,
lib/fog/ecloud/requests/compute/get_memory_usage_detail.rb,
lib/fog/ecloud/requests/compute/monitors_create_default.rb,
lib/fog/ecloud/requests/compute/monitors_create_loopback.rb,
lib/fog/ecloud/requests/compute/get_storage_usage_detail.rb,
lib/fog/ecloud/requests/compute/rnat_associations_delete.rb,
lib/fog/ecloud/requests/compute/get_authentication_level.rb,
lib/fog/ecloud/requests/compute/get_catalog_configuration.rb,
lib/fog/ecloud/requests/compute/get_trusted_network_group.rb,
lib/fog/ecloud/requests/compute/get_authentication_levels.rb,
lib/fog/ecloud/requests/compute/get_hardware_configuration.rb,
lib/fog/ecloud/requests/compute/get_catalog_configurations.rb,
lib/fog/ecloud/requests/compute/get_trusted_network_groups.rb,
lib/fog/ecloud/requests/compute/virtual_machine_attach_disk.rb,
lib/fog/ecloud/requests/compute/get_backup_internet_service.rb,
lib/fog/ecloud/requests/compute/virtual_machine_upload_file.rb,
lib/fog/ecloud/requests/compute/trusted_network_groups_edit.rb,
lib/fog/ecloud/requests/compute/admin_enable_support_access.rb,
lib/fog/ecloud/requests/compute/virtual_machine_detach_disk.rb,
lib/fog/ecloud/requests/compute/get_hardware_configurations.rb,
lib/fog/ecloud/requests/compute/get_cpu_usage_detail_summary.rb,
lib/fog/ecloud/requests/compute/admin_disable_support_access.rb,
lib/fog/ecloud/requests/compute/backup_internet_service_edit.rb,
lib/fog/ecloud/requests/compute/get_backup_internet_services.rb,
lib/fog/ecloud/requests/compute/get_password_complexity_rule.rb,
lib/fog/ecloud/requests/compute/trusted_network_groups_delete.rb,
lib/fog/ecloud/requests/compute/get_operating_system_families.rb,
lib/fog/ecloud/requests/compute/trusted_network_groups_create.rb,
lib/fog/ecloud/requests/compute/get_password_complexity_rules.rb,
lib/fog/ecloud/requests/compute/virtual_machine_copy_identical.rb,
lib/fog/ecloud/requests/compute/rnat_associations_edit_network.rb,
lib/fog/ecloud/requests/compute/backup_internet_service_create.rb,
lib/fog/ecloud/requests/compute/backup_internet_service_delete.rb,
lib/fog/ecloud/requests/compute/get_memory_usage_detail_summary.rb,
lib/fog/ecloud/requests/compute/rnat_associations_create_device.rb,
lib/fog/ecloud/requests/compute/get_server_configuration_option.rb,
lib/fog/ecloud/requests/compute/get_server_configuration_options.rb,
lib/fog/ecloud/requests/compute/get_storage_usage_detail_summary.rb,
lib/fog/ecloud/requests/compute/admin_edit_authentication_levels.rb,
lib/fog/ecloud/requests/compute/get_virtual_machine_assigned_ips.rb,
lib/fog/ecloud/requests/compute/virtual_machine_edit_assigned_ips.rb,
lib/fog/ecloud/requests/compute/admin_edit_password_complexity_rules.rb,
lib/fog/ecloud/requests/compute/virtual_machine_create_from_template.rb,
lib/fog/ecloud/requests/compute/virtual_machine_edit_hardware_configuration.rb

Instance Attribute Summary

Attributes included from Shared

#base_path, #versions_uri

Class Method Summary (collapse)

Instance Method Summary (collapse)

Methods included from Shared

#build_compute_pool_body_edit, #build_node_service_body_edit, #build_request_body, #build_request_body_attach_disk, #build_request_body_copy, #build_request_body_detach_disk, #build_request_body_edit, #build_request_body_edit_assigned_ips, #build_request_body_identical, #build_request_body_import, #default_organization_uri, #id_from_uri, #validate_create_server_options, #validate_create_server_options_copy, #validate_create_server_options_identical, #validate_data, #validate_edit_compute_pool_options, #validate_edit_internet_service_options, #validate_edit_node_service_options, #validate_edit_server_options, #validate_import_server_options, #validate_internet_service_data, #validate_node_service_data, #validate_upload_file_options

Constructor Details

- (Real) initialize(options = {})

Returns a new instance of Real



286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
# File 'lib/fog/ecloud/compute.rb', line 286

def initialize(options = {})
  require 'fog/core/parser'
  @base_path               = options[:base_path] || '/cloudapi/ecloud'
  @connections             = {}
  @connection_options      = options[:connection_options] || {}
  @host                    = options[:ecloud_host] || API_URL
  @persistent              = options[:persistent] || false
  @version                 = options[:ecloud_version] || "2013-06-01"
  @authentication_method   = options[:ecloud_authentication_method] || :cloud_api_auth
  @access_key              = options[:ecloud_access_key]
  @private_key             = options[:ecloud_private_key]
  if @private_key.nil? || @authentication_method == :basic_auth
    @authentication_method = :basic_auth
    @username              = options[:ecloud_username]
    @password              = options[:ecloud_password]
    if @username.nil? || @password.nil?
      raise ArgumentError, "No credentials (cloud auth, or basic auth) passed!"
    end
  else
    @hmac = Fog::HMAC.new("sha256", @private_key)
  end
end

Class Method Details

+ (Object) basic_request(name, expects = [200], method = :get, headers = {}, body = '')



272
273
274
275
276
277
278
279
280
281
282
283
# File 'lib/fog/ecloud/compute.rb', line 272

def basic_request(name, expects=[200], method=:get, headers={}, body='')
  define_method(name) do |uri|
    request({
      :expects => expects,
      :method  => method,
      :headers => headers,
      :body    => body,
      :parse   => true,
      :uri     => uri
    })
  end
end

Instance Method Details

- (Object) authentication_levels_edit(data)



5
6
7
8
9
10
11
12
13
14
15
16
# File 'lib/fog/ecloud/requests/compute/admin_edit_authentication_levels.rb', line 5

def authentication_levels_edit(data)
  validate_data([:basic, :sha1, :sha256, :sha512], data)
  body = build_authentication_levels_edit(data)
  request(
    :expects => 202,
    :method => 'PUT',
    :headers => {},
    :body => body,
    :uri => data[:uri],
    :parse => true
  )
end

- (Object) backup_internet_service_create(data)



7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
# File 'lib/fog/ecloud/requests/compute/backup_internet_service_create.rb', line 7

def backup_internet_service_create(data)
  validate_data([:name, :protocol, :enabled, :persistence], data)
  unless data[:persistence][:type]
    raise ArgumentError.new("Required data missing: :persistence[:type]")
  end

  request(
    :body => generate_backup_internet_service_request(data),
    :expects => 201,
    :method => "POST",
    :headers => {},
    :uri => data[:uri],
    :parse => true
  )
end

- (Object) backup_internet_service_edit(data)



7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
# File 'lib/fog/ecloud/requests/compute/backup_internet_service_edit.rb', line 7

def backup_internet_service_edit(data)
  validate_data([:name, :protocol, :enabled, :persistence], data)
  unless data[:persistence][:type]
    raise ArgumentError.new("Required data missing: :persistence[:type]")
  end

  request(
    :body => generate_backup_internet_service_request(data),
    :expects => 202,
    :method => "PUT",
    :headers => {},
    :uri => data[:uri],
    :parse => true
  )
end

- (Object) build_request_body_edit_hardware_configuration(data)



18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
# File 'lib/fog/ecloud/requests/compute/virtual_machine_edit_hardware_configuration.rb', line 18

def build_request_body_edit_hardware_configuration(data)
  xml = Builder::XmlMarkup.new
  xml.HardwareConfiguration do
    xml.ProcessorCount data[:cpus]
    xml.Memory do
      xml.Unit "MB"
      xml.Value data[:memory]
    end
    xml.Disks do
      data[:disks].each do |disk|
        xml.Disk do
          xml.Index disk[:Index]
          xml.Size do
            xml.Unit "GB"
            xml.Value disk[:Size][:Value]
          end
        end
      end
    end
    xml.Nics do
      data[:nics].each do |nic|
        xml.Nic do
          xml.UnitNumber nic[:UnitNumber]
          xml.MacAddress nic[:MacAddress]
          xml.Network(:href => nic[:Network][:href], :name => nic[:Network][:name], :type => "application/vnd.tmrk.cloud.network") do
          end
        end
      end
    end
  end
end

- (Object) compute_pool_edit(options)



20
21
22
23
24
25
26
27
28
29
30
31
# File 'lib/fog/ecloud/requests/compute/compute_pool_edit.rb', line 20

def compute_pool_edit(options)
  validate_edit_compute_pool_options(options)
  body = build_compute_pool_body_edit(options)
  request(
    :expects => 200,
    :method => 'PUT',
    :headers => {},
    :body => body,
    :uri => options[:uri],
    :parse => true
  )
end

- (Object) firewall_acls_create(data)

Raises:

  • (ArgumentError)


7
8
9
10
11
12
13
14
15
16
17
18
19
20
# File 'lib/fog/ecloud/requests/compute/firewall_acls_create.rb', line 7

def firewall_acls_create(data)
  validate_data([:permission, :protocol, :source, :destination], data)
  raise ArgumentError.new("Required data missing: source[:type] is required") unless data[:source][:type]
  raise ArgumentError.new("Required data missing: destination[:type] is required") unless data[:destination][:type]

  request(
    :body => generate_create_firewall_acls_request(data),
    :expects => 201,
    :method => "POST",
    :headers => {},
    :uri => data[:uri],
    :parse => true
  )
end

- (Object) get_virtual_machine_assigned_ips(virtual_machine_id)



5
6
7
8
9
10
# File 'lib/fog/ecloud/requests/compute/get_virtual_machine_assigned_ips.rb', line 5

def get_virtual_machine_assigned_ips(virtual_machine_id)
  request(
    :uri => "#{base_path}/virtualmachines/#{virtual_machine_id}/assignedips",
    :parse   => true
  )
end

- (Object) groups_create(data)



7
8
9
10
11
12
13
14
15
16
17
18
# File 'lib/fog/ecloud/requests/compute/groups_create.rb', line 7

def groups_create(data)
  validate_data([:name], data)

  request(
    :body => generate_groups_create_request(data),
    :expects => 201,
    :method => "POST",
    :headers => {},
    :uri => data[:uri],
    :parse => true
  )
end

- (Object) groups_edit(data)



7
8
9
10
11
12
13
14
15
16
17
18
# File 'lib/fog/ecloud/requests/compute/groups_edit.rb', line 7

def groups_edit(data)
  validate_data([:name], data)

  request(
    :body => generate_groups_edit_request(data),
    :expects => 204,
    :method => "PUT",
    :headers => {},
    :uri => data[:uri],
    :parse => false
  )
end

- (Object) internet_service_create(service_data)



22
23
24
25
26
27
28
29
30
31
32
33
# File 'lib/fog/ecloud/requests/compute/internet_service_create.rb', line 22

def internet_service_create(service_data)
  validate_internet_service_data(service_data)

  request(
    :body => generate_internet_service_request(service_data),
    :expects => 201,
    :method => "POST",
    :headers => {},
    :uri => service_data[:uri],
    :parse => true
  )
end

- (Object) login_banner_edit(data)



5
6
7
8
9
10
11
12
13
14
15
16
# File 'lib/fog/ecloud/requests/compute/admin_edit_login_banner.rb', line 5

def (data)
  validate_data([:display], data)
  body = (data)
  request(
    :expects => 200,
    :method => 'PUT',
    :headers => {},
    :body => body,
    :uri => data[:uri],
    :parse => true
  )
end

- (Object) monitors_create_ecv(data)



7
8
9
10
11
12
13
14
15
16
17
18
# File 'lib/fog/ecloud/requests/compute/monitors_create_ecv.rb', line 7

def monitors_create_ecv(data)
  validate_data([:interval, :response_timeout, :retries, :downtime, :enabled, :send_string, :receive_string], data)

  request(
    :body => generate_ecv_monitor_request(data),
    :expects => 201,
    :method => "POST",
    :headers => {},
    :uri => data[:uri],
    :parse => true
  )
end

- (Object) monitors_create_http(data)



7
8
9
10
11
12
13
14
15
16
17
18
# File 'lib/fog/ecloud/requests/compute/monitors_create_http.rb', line 7

def monitors_create_http(data)
  validate_data([:interval, :response_timeout, :retries, :downtime, :enabled, :request_uri, :response_codes], data)

  request(
    :body => generate_http_monitor_request(data),
    :expects => 201,
    :method => "POST",
    :headers => {},
    :uri => data[:uri],
    :parse => true
  )
end

- (Object) monitors_create_ping(data)



7
8
9
10
11
12
13
14
15
16
17
18
# File 'lib/fog/ecloud/requests/compute/monitors_create_ping.rb', line 7

def monitors_create_ping(data)
  validate_data([:interval, :response_timeout, :retries, :downtime, :enabled], data)

  request(
    :body => generate_ping_monitor_request(data),
    :expects => 201,
    :method => "POST",
    :headers => {},
    :uri => data[:uri],
    :parse => true
  )
end

- (Object) monitors_edit_ecv(data)



7
8
9
10
11
12
13
14
15
16
17
18
# File 'lib/fog/ecloud/requests/compute/monitors_edit_ecv.rb', line 7

def monitors_edit_ecv(data)
  validate_data([:interval, :response_timeout, :retries, :downtime, :enabled, :send_string, :receive_string], data)

  request(
    :body => generate_edit_ecv_request(data),
    :expects => 200,
    :method => "PUT",
    :headers => {},
    :uri => data[:uri],
    :parse => true
  )
end

- (Object) monitors_edit_http(data)



7
8
9
10
11
12
13
14
15
16
17
18
# File 'lib/fog/ecloud/requests/compute/monitors_edit_http.rb', line 7

def monitors_edit_http(data)
  validate_data([:interval, :response_timeout, :retries, :downtime, :enabled, :request_uri, :response_codes], data)

  request(
    :body => generate_edit_http_request(data),
    :expects => 200,
    :method => "PUT",
    :headers => {},
    :uri => data[:uri],
    :parse => true
  )
end

- (Object) monitors_edit_ping(data)



7
8
9
10
11
12
13
14
15
16
17
18
# File 'lib/fog/ecloud/requests/compute/monitors_edit_ping.rb', line 7

def monitors_edit_ping(data)
  validate_data([:interval, :response_timeout, :retries, :downtime, :enabled], data)

  request(
    :body => generate_edit_ping_request(data),
    :expects => 200,
    :method => "PUT",
    :headers => {},
    :uri => data[:uri],
    :parse => true
  )
end

- (Object) node_service_create(service_data)



16
17
18
19
20
21
22
23
24
25
26
27
# File 'lib/fog/ecloud/requests/compute/node_service_create.rb', line 16

def node_service_create(service_data)
  validate_node_service_data(service_data)

  request(
    :body => generate_node_service_request(service_data),
    :expects => 201,
    :method => "POST",
    :headers => {},
    :uri => service_data[:uri],
    :parse => true
  )
end

- (Object) node_service_edit(options)



24
25
26
27
28
29
30
31
32
33
34
35
# File 'lib/fog/ecloud/requests/compute/node_service_edit.rb', line 24

def node_service_edit(options)
  validate_edit_node_service_options(options)
  body = build_node_service_body_edit(options)
  request(
    :expects => 202,
    :method => 'PUT',
    :headers => {},
    :body => body,
    :uri => options[:uri],
    :parse => true
  )
end

- (Object) password_complexity_rules_edit(data)



5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
# File 'lib/fog/ecloud/requests/compute/admin_edit_password_complexity_rules.rb', line 5

def password_complexity_rules_edit(data)
  validate_data([:rule_type], data)
  if data[:rule_type] == "Custom"
    raise ArgumentError.new("Required data missing: custom_rules") unless data[:custom_rules]
  end
  validate_data([:minimum_characters, :minimum_uppercase_characters, :minimum_lowercase_characters, :minimum_numeric_characters, :minimum_special_characters, :maximum_consecutive_characters_from_prior_passwords, :minimum_lifetime_restriction, :minimum_generations_before_reuse], data[:custom_rules])
  body = build_password_complexity_rules_edit(data)
  request(
    :expects => 202,
    :method => 'PUT',
    :headers => {},
    :body => body,
    :uri => data[:uri],
    :parse => true
  )
end

- (Object) request(params)



309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
# File 'lib/fog/ecloud/compute.rb', line 309

def request(params)
  # Convert the uri to a URI if it's a string.
  if params[:uri].is_a?(String)
    params[:uri] = URI.parse(@host + params[:uri])
  end
  host_url = "#{params[:uri].scheme}://#{params[:uri].host}#{params[:uri].port ? ":#{params[:uri].port}" : ''}"

  # Hash connections on the host_url ... There's nothing to say we won't get URI's that go to
  # different hosts.
  @connections[host_url] ||= Fog::XML::Connection.new(host_url, @persistent, @connection_options)

  # Set headers to an empty hash if none are set.
  headers = set_extra_headers_for(params) || set_extra_headers_for({})

  # Make the request
  options = {
    :expects => (params[:expects] || 200),
    :method  => params[:method] || 'GET',
    :path    => params[:uri].path + "#{"?#{params[:uri].query}" if params[:uri].query}",
    :headers => headers
  }
  unless params[:body].nil? || params[:body].empty?
    options.merge!({:body => params[:body]})
  end
  response = @connections[host_url].request(options)
  # Parse the response body into a hash
  unless response.body.empty?
    if params[:parse]
      document = Fog::ToHashDocument.new
      parser = Nokogiri::XML::SAX::PushParser.new(document)
      parser << response.body
      parser.finish

      response.body = document.body
    end
  end

  response
end

- (Object) rnat_associations_create_device(data)



7
8
9
10
11
12
13
14
15
16
17
18
# File 'lib/fog/ecloud/requests/compute/rnat_associations_create_device.rb', line 7

def rnat_associations_create_device(data)
  validate_data([:host_ip_href, :public_ip_href], data)

  request(
    :body => generate_rnat_associations_create_device_request(data),
    :expects => 201,
    :method => "POST",
    :headers => {},
    :uri => data[:uri],
    :parse => true
  )
end

- (Object) rnat_associations_edit_network(data)



7
8
9
10
11
12
13
14
15
16
17
18
# File 'lib/fog/ecloud/requests/compute/rnat_associations_edit_network.rb', line 7

def rnat_associations_edit_network(data)
  validate_data([:href], data)

  request(
    :body => generate_rnat_associations_edit_network_request(data),
    :expects => 202,
    :method => "PUT",
    :headers => {},
    :uri => data[:uri],
    :parse => true
  )
end

- (Object) rows_create(data)



7
8
9
10
11
12
13
14
15
16
17
18
# File 'lib/fog/ecloud/requests/compute/rows_create.rb', line 7

def rows_create(data)
  validate_data([:name], data)

  request(
    :body => generate_rows_create_request(data),
    :expects => 201,
    :method => "POST",
    :headers => {},
    :uri => data[:uri],
    :parse => true
  )
end

- (Object) rows_edit(data)



7
8
9
10
11
12
13
14
15
16
17
18
# File 'lib/fog/ecloud/requests/compute/rows_edit.rb', line 7

def rows_edit(data)
  validate_data([:name], data)

  request(
    :body => generate_rows_edit_request(data),
    :expects => 204,
    :method => "PUT",
    :headers => {},
    :uri => data[:uri],
    :parse => false
  )
end

- (Object) trusted_network_groups_create(data)



7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
# File 'lib/fog/ecloud/requests/compute/trusted_network_groups_create.rb', line 7

def trusted_network_groups_create(data)
  validate_data([:name], data)
  unless (data[:hosts] || data[:networks])
    raise ArgumentError.new("Required data missing: Either hosts or networks must be present")
  end

  request(
    :body => generate_create_trusted_network_groups_request(data),
    :expects => 201,
    :method => "POST",
    :headers => {},
    :uri => data[:uri],
    :parse => true
  )
end

- (Object) trusted_network_groups_edit(data)



7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
# File 'lib/fog/ecloud/requests/compute/trusted_network_groups_edit.rb', line 7

def trusted_network_groups_edit(data)
  validate_data([:name], data)
  unless (data[:hosts] || data[:networks])
    raise ArgumentError.new("Required data missing: Either hosts or networks must be present")
  end

  request(
    :body => generate_edit_trusted_network_groups_request(data),
    :expects => 202,
    :method => "PUT",
    :headers => {},
    :uri => data[:uri],
    :parse => true
  )
end

- (Object) virtual_machine_attach_disk(href, options)



16
17
18
19
20
21
22
23
24
25
26
# File 'lib/fog/ecloud/requests/compute/virtual_machine_attach_disk.rb', line 16

def virtual_machine_attach_disk(href, options)
  body = build_request_body_attach_disk(options)
  request(
    :expects => 202,
    :method => 'POST',
    :headers => {},
    :body => body,
    :uri => href,
    :parse => true
  )
end

- (Object) virtual_machine_copy(template_uri, options)



101
102
103
104
105
106
107
108
109
110
111
112
# File 'lib/fog/ecloud/requests/compute/virtual_machine_copy.rb', line 101

def virtual_machine_copy(template_uri, options)
  options = validate_create_server_options_copy(template_uri, options)
  body = build_request_body_copy(options)
  request(
    :expects => 201,
    :method => 'POST',
    :headers => {},
    :body => body,
    :uri => template_uri,
    :parse => true
  )
end

- (Object) virtual_machine_copy_identical(template_uri, options)



28
29
30
31
32
33
34
35
36
37
38
39
# File 'lib/fog/ecloud/requests/compute/virtual_machine_copy_identical.rb', line 28

def virtual_machine_copy_identical(template_uri, options)
  options = validate_create_server_options_identical(template_uri, options)
  body = build_request_body_identical(options)
  request(
    :expects => 201,
    :method => 'POST',
    :headers => {},
    :body => body,
    :uri => template_uri,
    :parse => true
  )
end

- (Object) virtual_machine_create_from_template(template_uri, options)



102
103
104
105
106
107
108
109
110
111
112
# File 'lib/fog/ecloud/requests/compute/virtual_machine_create_from_template.rb', line 102

def virtual_machine_create_from_template(template_uri, options)
  options = validate_create_server_options(template_uri, options)

  request(
    :expects => 201,
    :method  => 'POST',
    :body    => build_request_body(options),
    :uri     => options[:uri],
    :parse   => true
  )
end

- (Object) virtual_machine_detach_disk(href, options)



17
18
19
20
21
22
23
24
25
26
27
# File 'lib/fog/ecloud/requests/compute/virtual_machine_detach_disk.rb', line 17

def virtual_machine_detach_disk(href, options)
  body = build_request_body_detach_disk(options)
  request(
    :expects => 201,
    :method => 'POST',
    :headers => {},
    :body => body,
    :uri => href,
    :parse => true
  )
end

- (Object) virtual_machine_edit(vm_uri, options)



30
31
32
33
34
35
36
37
38
39
40
41
# File 'lib/fog/ecloud/requests/compute/virtual_machine_edit.rb', line 30

def virtual_machine_edit(vm_uri, options)
  validate_edit_server_options(options)
  body = build_request_body_edit(options)
  request(
    :expects => [202,204],
    :method => 'PUT',
    :headers => {},
    :body => body,
    :uri => vm_uri,
    :parse => true
  )
end

- (Object) virtual_machine_edit_assigned_ips(href, options)



24
25
26
27
28
29
30
31
32
33
34
# File 'lib/fog/ecloud/requests/compute/virtual_machine_edit_assigned_ips.rb', line 24

def virtual_machine_edit_assigned_ips(href, options)
  body = build_request_body_edit_assigned_ips(options)
  request(
    :expects => 202,
    :method => 'PUT',
    :headers => {},
    :body => body,
    :uri => href,
    :parse => true
  )
end

- (Object) virtual_machine_edit_hardware_configuration(vm_uri, data)



5
6
7
8
9
10
11
12
13
14
15
16
# File 'lib/fog/ecloud/requests/compute/virtual_machine_edit_hardware_configuration.rb', line 5

def virtual_machine_edit_hardware_configuration(vm_uri, data)
  validate_data([:cpus, :memory, :disks, :nics], data)
  body = build_request_body_edit_hardware_configuration(data)
  request(
    :expects => 202,
    :method => 'PUT',
    :headers => {},
    :body => body,
    :uri => vm_uri,
    :parse => true
  )
end

- (Object) virtual_machine_import(template_uri, options)



50
51
52
53
54
55
56
57
58
59
60
# File 'lib/fog/ecloud/requests/compute/virtual_machine_import.rb', line 50

def virtual_machine_import(template_uri, options)
  options = validate_import_server_options(template_uri, options)

  request(
    :expects => 201,
    :method  => 'POST',
    :body    => build_request_body_import(options),
    :uri     => options[:uri],
    :parse   => true
  )
end

- (Object) virtual_machine_upload_file(vm_uri, options)



14
15
16
17
18
19
20
21
22
23
24
# File 'lib/fog/ecloud/requests/compute/virtual_machine_upload_file.rb', line 14

def virtual_machine_upload_file(vm_uri, options)
  validate_upload_file_options(options)
  request(
    :expects => 204,
    :method => 'POST',
    :headers => {'Content-Type' => 'application/octet-stream', 'X-Guest-User' => options[:credentials][:user], 'X-Guest-Password' => options[:credentials][:password], 'Content-Range' => "0-#{options[:file].bytesize - 1}/#{options[:file].bytesize}"},
    :body => options[:file],
    :uri => vm_uri + "?path=#{options[:path]}",
    :parse => true
  )
end