class Fog::Scaleway::Compute::Server
Public Instance Methods
attach_volume(volume)
click to toggle source
# File lib/fog/scaleway/models/compute/server.rb, line 143 def attach_volume(volume) volumes[next_volume_index] = to_volume(volume) save if persisted? end
bootscript=(value)
click to toggle source
# File lib/fog/scaleway/models/compute/server.rb, line 31 def bootscript=(value) attributes[:bootscript] = case value when Hash service.bootscripts.new(value) when String service.bootscripts.new(identity: value) else value end end
destroy()
click to toggle source
# File lib/fog/scaleway/models/compute/server.rb, line 99 def destroy requires :identity service.delete_server(identity) true end
detach_volume(volume)
click to toggle source
# File lib/fog/scaleway/models/compute/server.rb, line 149 def detach_volume(volume) volumes.reject! { |_k, v| v == to_volume(volume) } save if persisted? end
execute_action(action, async = true)
click to toggle source
# File lib/fog/scaleway/models/compute/server.rb, line 130 def execute_action(action, async = true) requires :identity if (task = service.execute_server_action(identity, action).body['task']) service.tasks.new(task).tap do |t| unless async t.wait_for { t.success? } reload end end end end
image=(value)
click to toggle source
# File lib/fog/scaleway/models/compute/server.rb, line 42 def image=(value) attributes[:image] = case value when Hash service.images.new(value) when String service.images.new(identity: value) else value end end
poweroff(async = true)
click to toggle source
# File lib/fog/scaleway/models/compute/server.rb, line 112 def poweroff(async = true) requires :identity execute_action('poweroff', async) end
poweron(async = true)
click to toggle source
# File lib/fog/scaleway/models/compute/server.rb, line 106 def poweron(async = true) requires :identity execute_action('poweron', async) end
private_dns_name()
click to toggle source
# File lib/fog/scaleway/models/compute/server.rb, line 83 def private_dns_name "#{identity}.priv.cloud.scaleway.com" end
private_ip_address()
click to toggle source
# File lib/fog/scaleway/models/compute/server.rb, line 159 def private_ip_address private_ip end
public_dns_name()
click to toggle source
# File lib/fog/scaleway/models/compute/server.rb, line 79 def public_dns_name "#{identity}.pub.cloud.scaleway.com" end
public_ip=(value)
click to toggle source
# File lib/fog/scaleway/models/compute/server.rb, line 53 def public_ip=(value) attributes[:public_ip] = case value when Hash service.ips.new(value) when String service.ips.new(identity: value) else value end end
public_ip_address()
click to toggle source
# File lib/fog/scaleway/models/compute/server.rb, line 155 def public_ip_address public_ip.address if public_ip end
ready?()
click to toggle source
# File lib/fog/scaleway/models/compute/server.rb, line 87 def ready? state == 'running' end
reboot(async = true)
click to toggle source
# File lib/fog/scaleway/models/compute/server.rb, line 118 def reboot(async = true) requires :identity execute_action('reboot', async) end
save()
click to toggle source
# File lib/fog/scaleway/models/compute/server.rb, line 91 def save if persisted? update else create end end
security_group=(value)
click to toggle source
# File lib/fog/scaleway/models/compute/server.rb, line 64 def security_group=(value) attributes[:security_group] = case value when Hash service.security_groups.new(value) when String service.security_groups.new(identity: value) else value end end
terminate(async = true)
click to toggle source
# File lib/fog/scaleway/models/compute/server.rb, line 124 def terminate(async = true) requires :identity execute_action('terminate', async) end
volumes=(value)
click to toggle source
# File lib/fog/scaleway/models/compute/server.rb, line 75 def volumes=(value) attributes[:volumes] = Hash[value.map { |i, v| [i, to_volume(v)] }] end
Private Instance Methods
create()
click to toggle source
# File lib/fog/scaleway/models/compute/server.rb, line 165 def create requires :name, :image, :volumes options = {} options[:bootscript] = bootscript.identity unless bootscript.nil? options[:commercial_type] = commercial_type unless commercial_type.nil? options[:enable_ipv6] = enable_ipv6 unless enable_ipv6.nil? options[:dynamic_ip_required] = dynamic_ip_required unless dynamic_ip_required.nil? options[:public_ip] = public_ip.identity unless public_ip.nil? options[:security_group] = security_group.identity unless security_group.nil? options[:tags] = tags unless tags.nil? if (server = service.create_server(name, image.identity, volumes, options).body['server']) merge_attributes(server) true else false end end
next_volume_index()
click to toggle source
# File lib/fog/scaleway/models/compute/server.rb, line 223 def next_volume_index used = volumes.keys.map(&:to_i) (1..Float::INFINITY).find { |i| !used.include?(i) }.to_s end
to_volume(value)
click to toggle source
# File lib/fog/scaleway/models/compute/server.rb, line 212 def to_volume(value) case value when Hash service.volumes.new(value) when String service.volumes.new(identity: value) else value end end
update()
click to toggle source
# File lib/fog/scaleway/models/compute/server.rb, line 185 def update requires :identity body = attributes.dup unless public_ip.nil? body[:public_ip] = { id: public_ip.identity, address: public_ip.address } end unless security_group.nil? body[:security_group] = { id: security_group.identity, name: security_group.name } end if (server = service.update_server(identity, body).body['server']) merge_attributes(server) true else false end end