Class: Fog::Compute::Softlayer::Real

Inherits:
Object
  • Object
show all
Includes:
Softlayer::Compute::Shared, Softlayer::Slapi
Defined in:
lib/fog/softlayer/compute.rb,
lib/fog/softlayer/requests/compute/get_vm.rb,
lib/fog/softlayer/requests/compute/get_tag.rb,
lib/fog/softlayer/requests/compute/get_vms.rb,
lib/fog/softlayer/requests/compute/create_vm.rb,
lib/fog/softlayer/requests/compute/delete_vm.rb,
lib/fog/softlayer/requests/compute/reboot_vm.rb,
lib/fog/softlayer/requests/compute/create_vms.rb,
lib/fog/softlayer/requests/compute/get_vm_tags.rb,
lib/fog/softlayer/requests/compute/power_on_vm.rb,
lib/fog/softlayer/requests/compute/get_key_pair.rb,
lib/fog/softlayer/requests/compute/power_off_vm.rb,
lib/fog/softlayer/requests/compute/describe_tags.rb,
lib/fog/softlayer/requests/compute/get_key_pairs.rb,
lib/fog/softlayer/requests/compute/create_vm_tags.rb,
lib/fog/softlayer/requests/compute/delete_vm_tags.rb,
lib/fog/softlayer/requests/compute/create_key_pair.rb,
lib/fog/softlayer/requests/compute/delete_key_pair.rb,
lib/fog/softlayer/requests/compute/update_key_pair.rb,
lib/fog/softlayer/requests/compute/get_bare_metal_tags.rb,
lib/fog/softlayer/requests/compute/get_bare_metal_server.rb,
lib/fog/softlayer/requests/compute/create_bare_metal_tags.rb,
lib/fog/softlayer/requests/compute/delete_bare_metal_tags.rb,
lib/fog/softlayer/requests/compute/get_bare_metal_servers.rb,
lib/fog/softlayer/requests/compute/create_bare_metal_server.rb,
lib/fog/softlayer/requests/compute/delete_bare_metal_server.rb,
lib/fog/softlayer/requests/compute/reboot_bare_metal_server.rb,
lib/fog/softlayer/requests/compute/get_references_by_tag_name.rb,
lib/fog/softlayer/requests/compute/power_on_bare_metal_server.rb,
lib/fog/softlayer/requests/compute/power_off_bare_metal_server.rb

Overview

Makes real connections to Softlayer.

Instance Attribute Summary collapse

Instance Method Summary collapse

Methods included from Softlayer::Compute::Shared

valid_request?

Methods included from Softlayer::Slapi

slapi_request

Constructor Details

#initialize(options = {}) ⇒ Real

Returns a new instance of Real.



116
117
118
119
120
121
# File 'lib/fog/softlayer/compute.rb', line 116

def initialize(options={})
  @softlayer_api_key = options[:softlayer_api_key]
  @softlayer_username = options[:softlayer_username]
  @softlayer_default_domain = options[:softlayer_default_domain]
  @softlayer_default_datacenter = options[:softlayer_default_datacenter]
end

Instance Attribute Details

#softlayer_default_datacenterObject

Returns the value of attribute softlayer_default_datacenter.



112
113
114
# File 'lib/fog/softlayer/compute.rb', line 112

def softlayer_default_datacenter
  @softlayer_default_datacenter
end

#softlayer_default_domainObject

Returns the value of attribute softlayer_default_domain.



111
112
113
# File 'lib/fog/softlayer/compute.rb', line 111

def softlayer_default_domain
  @softlayer_default_domain
end

Instance Method Details

#create_bare_metal_server(opts) ⇒ Object

Raises:

  • (ArgumentError)


77
78
79
80
# File 'lib/fog/softlayer/requests/compute/create_bare_metal_server.rb', line 77

def create_bare_metal_server(opts)
  raise ArgumentError, "Fog::Compute::Softlayer#create_bare_metal_server expects argument of type Hash" unless opts.kind_of?(Hash)
  request(:hardware_server, :create_object, :body => opts, :http_method => :POST)
end

#create_bare_metal_tags(id, tags = []) ⇒ Object

Raises:

  • (ArgumentError)


43
44
45
46
# File 'lib/fog/softlayer/requests/compute/create_bare_metal_tags.rb', line 43

def create_bare_metal_tags(id, tags = [])
  raise ArgumentError, "Tags argument for #{self.class.name}##{__method__} must be Array." unless tags.is_a?(Array)
  self.request(:hardware_server, "#{id}/set_tags", :body => tags.join(','), :http_method => :post)
end

#create_key_pair(opts) ⇒ Object



34
35
36
# File 'lib/fog/softlayer/requests/compute/create_key_pair.rb', line 34

def create_key_pair(opts)
  request(:security_ssh_key, :create_object, :body => opts, :http_method => :post)
end

#create_vm(opts) ⇒ Object

Raises:

  • (ArgumentError)


44
45
46
47
48
# File 'lib/fog/softlayer/requests/compute/create_vm.rb', line 44

def create_vm(opts)
  raise ArgumentError, "Fog::Compute::Softlayer#create_vm expects argument of type Hash" unless opts.kind_of?(Hash)
  opts = [[opts]] # don't ask...
  self.create_vms(opts)
end

#create_vm_tags(id, tags = []) ⇒ Object

Raises:

  • (ArgumentError)


43
44
45
46
# File 'lib/fog/softlayer/requests/compute/create_vm_tags.rb', line 43

def create_vm_tags(id, tags = [])
  raise ArgumentError, "Tags argument for #{self.class.name}##{__method__} must be Array." unless tags.is_a?(Array)
  self.request(:virtual_guest, "#{id}/set_tags", :body => tags.join(','), :http_method => :post)
end

#create_vms(opts) ⇒ Object

Raises:

  • (ArgumentError)


88
89
90
91
# File 'lib/fog/softlayer/requests/compute/create_vms.rb', line 88

def create_vms(opts)
  raise ArgumentError, "Fog::Compute::Softlayer#create_vms expects argument of type Array" unless opts.kind_of?(Array)
  request(:virtual_guest, :create_objects, :body => opts, :http_method => :POST)
end

#delete_bare_metal_server(id) ⇒ Object



35
36
37
# File 'lib/fog/softlayer/requests/compute/delete_bare_metal_server.rb', line 35

def delete_bare_metal_server(id)
  request(:hardware_server, id.to_s, :http_method => :DELETE)
end

#delete_bare_metal_tags(id, tags = []) ⇒ Object

Raises:

  • (ArgumentError)


36
37
38
39
40
41
42
# File 'lib/fog/softlayer/requests/compute/delete_bare_metal_tags.rb', line 36

def delete_bare_metal_tags(id, tags = [])
  raise ArgumentError, "Tags argument for #{self.class.name}##{__method__} must be Array." unless tags.is_a?(Array)
  subset = self.get_bare_metal_tags(id).body['tagReferences'].map do |i|
    i['tag']['name'] unless tags.include?(i['tag']['name'])
  end.compact
  self.create_bare_metal_tags(id, subset)
end

#delete_key_pair(id) ⇒ Object



30
31
32
# File 'lib/fog/softlayer/requests/compute/delete_key_pair.rb', line 30

def delete_key_pair(id)
  request(:security_ssh_key, id, :http_method => :delete)
end

#delete_vm(id) ⇒ Object



35
36
37
# File 'lib/fog/softlayer/requests/compute/delete_vm.rb', line 35

def delete_vm(id)
  request(:virtual_guest, id.to_s, :http_method => :DELETE)
end

#delete_vm_tags(id, tags = []) ⇒ Object

Raises:

  • (ArgumentError)


36
37
38
39
40
41
42
# File 'lib/fog/softlayer/requests/compute/delete_vm_tags.rb', line 36

def delete_vm_tags(id, tags = [])
  raise ArgumentError, "Tags argument for #{self.class.name}##{__method__} must be Array." unless tags.is_a?(Array)
  subset = self.get_vm_tags(id).body['tagReferences'].map do |i|
    i['tag']['name'] unless tags.include?(i['tag']['name'])
  end.compact
  self.create_vm_tags(id, subset)
end

#describe_tagsObject



24
25
26
# File 'lib/fog/softlayer/requests/compute/describe_tags.rb', line 24

def describe_tags
  self.request(:account, :get_tags, :query => 'objectMask=mask[referenceCount]')
end

#get_bare_metal_server(identifier) ⇒ Object



28
29
30
# File 'lib/fog/softlayer/requests/compute/get_bare_metal_server.rb', line 28

def get_bare_metal_server(identifier)
  request(:hardware_server, identifier, :expected => [200, 404], :query => 'objectMask=mask[datacenter,tagReferences,memory,provisionDate,processorCoreAmount,hardDrives,datacenter,hourlyBillingFlag,operatingSystem.softwareLicense.softwareDescription.referenceCode,sshKeys.id,privateNetworkOnlyFlag,userData,frontendNetworkComponents,backendNetworkComponents]')
end

#get_bare_metal_serversObject



22
23
24
# File 'lib/fog/softlayer/requests/compute/get_bare_metal_servers.rb', line 22

def get_bare_metal_servers
  request(:account, :get_hardware, :query => 'objectMask=mask[datacenter,tagReferences,memory,processorCoreAmount,hardDrives,datacenter,hourlyBillingFlag,operatingSystem.softwareLicense.softwareDescription.referenceCode,sshKeys.id,privateNetworkOnlyFlag,userData,frontendNetworkComponents,backendNetworkComponents]')
end

#get_bare_metal_tags(id) ⇒ Object



41
42
43
# File 'lib/fog/softlayer/requests/compute/get_bare_metal_tags.rb', line 41

def get_bare_metal_tags(id)
  self.request(:hardware_server, id, :query => 'objectMask=id;tagReferences')
end

#get_key_pair(id) ⇒ Object



30
31
32
# File 'lib/fog/softlayer/requests/compute/get_key_pair.rb', line 30

def get_key_pair(id)
  request(:security_ssh_key, id)
end

#get_key_pairsObject



23
24
25
# File 'lib/fog/softlayer/requests/compute/get_key_pairs.rb', line 23

def get_key_pairs
  request(:account, :get_ssh_keys)
end

#get_references_by_tag_name(tag_list) ⇒ Object



36
37
38
# File 'lib/fog/softlayer/requests/compute/get_references_by_tag_name.rb', line 36

def get_references_by_tag_name(tag_list)
  self.request(:tag, "get_tag_by_tag_name/#{tag_list}", :query => 'objectMask=references')
end

#get_tag(id) ⇒ Object



21
22
23
# File 'lib/fog/softlayer/requests/compute/get_tag.rb', line 21

def get_tag(id)
  self.request(:tag, "#{id}/get_object", :query => "objectMask=references;references.tagType")
end

#get_vm(identifier) ⇒ Object



28
29
30
# File 'lib/fog/softlayer/requests/compute/get_vm.rb', line 28

def get_vm(identifier)
  request(:virtual_guest, identifier, :expected => [200, 404], :query => 'objectMask=mask[datacenter,tagReferences,blockDevices,blockDeviceTemplateGroup.globalIdentifier,operatingSystem.softwareLicense.softwareDescription.referenceCode,sshKeys.id,privateNetworkOnlyFlag,userData,frontendNetworkComponents,backendNetworkComponents]')
end

#get_vm_tags(id) ⇒ Object



41
42
43
# File 'lib/fog/softlayer/requests/compute/get_vm_tags.rb', line 41

def get_vm_tags(id)
  self.request(:virtual_guest, id, :query => 'objectMask=mask[tagReferences]')
end

#get_vmsObject



22
23
24
# File 'lib/fog/softlayer/requests/compute/get_vms.rb', line 22

def get_vms
  request(:account, :get_virtual_guests, :query => 'objectMask=mask[datacenter,tagReferences,blockDevices,blockDeviceTemplateGroup.globalIdentifier,operatingSystem.softwareLicense.softwareDescription.referenceCode,primaryNetworkComponent.networkVlan,sshKeys.id,privateNetworkOnlyFlag,userData,frontendNetworkComponents,backendNetworkComponents]')
end

#list_serversObject



128
129
130
# File 'lib/fog/softlayer/compute.rb', line 128

def list_servers
  (self.get_vms.body.map {|s| s['bare_metal'] = false; s } << self.get_bare_metal_servers.body.map {|s| s['bare_metal'] = true; s}).flatten
end

#power_off_bare_metal_server(id) ⇒ Object



35
36
37
# File 'lib/fog/softlayer/requests/compute/power_off_bare_metal_server.rb', line 35

def power_off_bare_metal_server(id)
  request(:hardware_server, "#{id.to_s}/powerOff", :http_method => :GET)
end

#power_off_vm(id, use_hard_poweroff) ⇒ Object



35
36
37
38
39
40
41
# File 'lib/fog/softlayer/requests/compute/power_off_vm.rb', line 35

def power_off_vm(id, use_hard_poweroff)
  if use_hard_poweroff
    request(:virtual_guest, "#{id.to_s}/powerOff", :http_method => :GET)
  else
    request(:virtual_guest, "#{id.to_s}/powerOffSoft", :http_method => :GET)
  end
end

#power_on_bare_metal_server(id) ⇒ Object



35
36
37
# File 'lib/fog/softlayer/requests/compute/power_on_bare_metal_server.rb', line 35

def power_on_bare_metal_server(id)
  request(:hardware_server, "#{id.to_s}/powerOn", :http_method => :GET)
end

#power_on_vm(id) ⇒ Object



35
36
37
# File 'lib/fog/softlayer/requests/compute/power_on_vm.rb', line 35

def power_on_vm(id)
  request(:virtual_guest, "#{id.to_s}/powerOn", :http_method => :GET)
end

#reboot_bare_metal_server(id, use_hard_reboot) ⇒ Object



35
36
37
38
39
40
41
# File 'lib/fog/softlayer/requests/compute/reboot_bare_metal_server.rb', line 35

def reboot_bare_metal_server(id, use_hard_reboot)
  if use_hard_reboot
    request(:hardware_server, "#{id.to_s}/rebootHard", :http_method => :GET)
  else
    request(:hardware_server, "#{id.to_s}/rebootSoft", :http_method => :GET)
  end
end

#reboot_vm(id, use_hard_reboot) ⇒ Object



35
36
37
38
39
40
41
# File 'lib/fog/softlayer/requests/compute/reboot_vm.rb', line 35

def reboot_vm(id, use_hard_reboot)
  if use_hard_reboot
    request(:virtual_guest, "#{id.to_s}/rebootHard", :http_method => :GET)
  else
    request(:virtual_guest, "#{id.to_s}/rebootSoft", :http_method => :GET)
  end
end

#request(service, path, options = {}) ⇒ Object



123
124
125
126
# File 'lib/fog/softlayer/compute.rb', line 123

def request(service, path, options = {})
  options = {:username => @softlayer_username, :api_key => @softlayer_api_key}.merge(options)
  Fog::Softlayer::Slapi.slapi_request(service, path, options)
end

#update_key_pair(id, opts) ⇒ Object



35
36
37
# File 'lib/fog/softlayer/requests/compute/update_key_pair.rb', line 35

def update_key_pair(id, opts)
  request(:security_ssh_key, id, :body => opts, :http_method => :put)
end