class Fog::Hetznercloud::Compute::Server
Public Class Methods
new(options)
click to toggle source
Calls superclass method
# File lib/fog/hetznercloud/models/compute/server.rb, line 30 def initialize(options) @async = true super(options) end
Public Instance Methods
async=(value)
click to toggle source
# File lib/fog/hetznercloud/models/compute/server.rb, line 186 def async=(value) @async = !!value end
async?()
click to toggle source
# File lib/fog/hetznercloud/models/compute/server.rb, line 190 def async? @async end
async_mode?()
click to toggle source
# File lib/fog/hetznercloud/models/compute/server.rb, line 194 def async_mode? async? end
change_dns_ptr(dns_ptr, ip: public_ip_address, async: async_mode?)
click to toggle source
# File lib/fog/hetznercloud/models/compute/server.rb, line 304 def change_dns_ptr(dns_ptr, ip: public_ip_address, async: async_mode?) requires :identity body = { ip: ip, dns_ptr: dns_ptr } execute_action('change_dns_ptr', async, body) end
change_type(async: async_mode?, upgrade_disk: false, server_type:)
click to toggle source
# File lib/fog/hetznercloud/models/compute/server.rb, line 278 def change_type(async: async_mode?, upgrade_disk: false, server_type:) requires :identity # FIXME: Should I shutdown and wait here as server needs to # be stopped ? body = { upgrade_disk: upgrade_disk, server_type: server_type } execute_action('change_type', async, body) end
create_backup(async: async_mode?, description: "Backup of
click to toggle source
Returns action, imageObject
# File lib/fog/hetznercloud/models/compute/server.rb, line 240 def create_backup(async: async_mode?, description: "Backup of #{attributes[:name]} created at #{Time.now}") requires :identity create_image(async: async, description: description, type: 'backup') end
create_image(async: async_mode?, description: "image of
click to toggle source
Returns action, imageObject
# File lib/fog/hetznercloud/models/compute/server.rb, line 247 def create_image(async: async_mode?, description: "image of #{attributes[:name]} created at #{Time.now}", type: 'snapshot') requires :identity body = { description: description, type: type } execute_action('create_image', async, body) end
datacenter=(value)
click to toggle source
# File lib/fog/hetznercloud/models/compute/server.rb, line 93 def datacenter=(value) attributes[:datacenter] = case value when Hash service.datacenters.new(value) attributes[:location] = service.locations.new(value['location']) when String service.datacenters.all(name: value).first when Integer service.datacenters.get(value) else value end end
destroy()
click to toggle source
# File lib/fog/hetznercloud/models/compute/server.rb, line 149 def destroy requires :identity service.delete_server(identity) true end
disable_backup(async: async_mode?)
click to toggle source
# File lib/fog/hetznercloud/models/compute/server.rb, line 315 def disable_backup(async: async_mode?) requires :identity execute_action('disable_backup', async) end
disable_rescue(async: async_mode?)
click to toggle source
# File lib/fog/hetznercloud/models/compute/server.rb, line 206 def disable_rescue(async: async_mode?) requires :identity execute_action('disable_rescue', async) end
enable_backup(async: async_mode?, backup_window: nil)
click to toggle source
# File lib/fog/hetznercloud/models/compute/server.rb, line 292 def enable_backup(async: async_mode?, backup_window: nil) requires :identity unless backup_window.nil? body = { backup_window: backup_window } end execute_action('enable_backup', async, body) end
enable_rescue(type: 'linux64', ssh_keys: [], async: async_mode?)
click to toggle source
# File lib/fog/hetznercloud/models/compute/server.rb, line 212 def enable_rescue(type: 'linux64', ssh_keys: [], async: async_mode?) requires :identity # FIXME: Refactor with ssh_keys=(value) above to do DRY sshkeys = [] ssh_keys.each do |item| thing = case item when Hash service.ssh_keys.new(item) when String service.ssh_keys.all(name: item).first when Integer service.ssh_keys.get(item) else value end sshkeys << thing.identity end body = { type: type, ssh_keys: sshkeys } execute_action('enable_rescue', async, body) end
execute_action(action, async = true, body = {})
click to toggle source
# File lib/fog/hetznercloud/models/compute/server.rb, line 331 def execute_action(action, async = true, body = {}) requires :identity request_body = service.execute_server_action(identity, action, body).body if (action = request_body['action']) service.actions.new(action).tap do |a| unless async a.wait_for { a.success? } reload end end end extra = service.images.new(request_body['image']) unless request_body['image'].nil? extra = request_body['root_password'] unless request_body['root_password'].nil? [action, extra] end
image=(value)
click to toggle source
# File lib/fog/hetznercloud/models/compute/server.rb, line 35 def image=(value) attributes[:image] = case value when Hash service.images.new(value) when String service.images.all(name: value).first when Integer service.images.get(value) else value end end
location=(value)
click to toggle source
# File lib/fog/hetznercloud/models/compute/server.rb, line 80 def location=(value) attributes[:location] = case value when Hash service.locations.new(value) when String service.locations.all(name: value).first when Integer service.locations.get(value) else value end end
migrating?()
click to toggle source
# File lib/fog/hetznercloud/models/compute/server.rb, line 133 def migrating? status == 'migrating' end
name=(value)
click to toggle source
# File lib/fog/hetznercloud/models/compute/server.rb, line 115 def name=(value) return true if name == value @needsupdate = true attributes[:name] = value end
poweroff(async: async_mode?)
click to toggle source
# File lib/fog/hetznercloud/models/compute/server.rb, line 162 def poweroff(async: async_mode?) requires :identity execute_action('poweroff', async) end
poweron(async: async_mode?)
click to toggle source
# File lib/fog/hetznercloud/models/compute/server.rb, line 156 def poweron(async: async_mode?) requires :identity execute_action('poweron', async) end
public_dns_name()
click to toggle source
# File lib/fog/hetznercloud/models/compute/server.rb, line 121 def public_dns_name "static.#{public_net['ipv4']['ip']}.clients.your-server.de" end
public_ip_address()
click to toggle source
# File lib/fog/hetznercloud/models/compute/server.rb, line 348 def public_ip_address public_net['ipv6']['ip'] if public_net.key?('ipv6') public_net['ipv4']['ip'] if public_net.key?('ipv4') end
ready?()
click to toggle source
# File lib/fog/hetznercloud/models/compute/server.rb, line 129 def ready? status == 'running' end
reboot(async: async_mode?)
click to toggle source
# File lib/fog/hetznercloud/models/compute/server.rb, line 168 def reboot(async: async_mode?) requires :identity execute_action('reboot', async) end
rebuild_from_image(async: async_mode?, image:)
click to toggle source
# File lib/fog/hetznercloud/models/compute/server.rb, line 258 def rebuild_from_image(async: async_mode?, image:) requires :identity # FIXME: Lookup images by description. As API does not support # this we need to filter our own. Probably needs pagination # support. image_id = case image when Fog::Hetznercloud::Compute::Image image.identity when Integer image end body = { image: image_id } execute_action('rebuild', async, body) end
reset(async: async_mode?)
click to toggle source
# File lib/fog/hetznercloud/models/compute/server.rb, line 174 def reset(async: async_mode?) requires :identity execute_action('reset', async) end
reset_root_password(async: async_mode?)
click to toggle source
Returns action, password
# File lib/fog/hetznercloud/models/compute/server.rb, line 322 def reset_root_password(async: async_mode?) requires :identity unless ready? throw Fog::Hetznercloud::Error::StateError.new('ERROR: to reset the root password, the server must be running') end execute_action('reset_password', async) end
reverse_dns_name()
click to toggle source
# File lib/fog/hetznercloud/models/compute/server.rb, line 125 def reverse_dns_name public_net['ipv4']['dns_ptr'] end
save()
click to toggle source
# File lib/fog/hetznercloud/models/compute/server.rb, line 141 def save if persisted? update else create end end
server_type=(value)
click to toggle source
# File lib/fog/hetznercloud/models/compute/server.rb, line 67 def server_type=(value) attributes[:server_type] = case value when Hash service.server_types.new(value) when String service.server_types.all(name: value).first when Integer service.server_types.get(value) else value end end
shutdown(async: async_mode?)
click to toggle source
# File lib/fog/hetznercloud/models/compute/server.rb, line 180 def shutdown(async: async_mode?) requires :identity execute_action('shutdown', async) end
ssh_keys=(value)
click to toggle source
# File lib/fog/hetznercloud/models/compute/server.rb, line 48 def ssh_keys=(value) attributes[:ssh_keys] = [] # API does not return ssh_key return true if value.nil? value.each do |item| thing = case item when Hash service.ssh_keys.new(item) when String service.ssh_keys.all(name: item).first when Integer service.ssh_keys.get(item) else value end attributes[:ssh_keys] << thing end end
stopped?()
click to toggle source
# File lib/fog/hetznercloud/models/compute/server.rb, line 137 def stopped? status == 'off' end
sync=(value)
click to toggle source
# File lib/fog/hetznercloud/models/compute/server.rb, line 198 def sync=(value) @async = !value end
sync?()
click to toggle source
# File lib/fog/hetznercloud/models/compute/server.rb, line 202 def sync? !@async end
user_data=(value)
click to toggle source
# File lib/fog/hetznercloud/models/compute/server.rb, line 107 def user_data=(value) attributes[:user_data] = if value =~ /^(\.|~)?\/[^\/]+/ File.read(value) else value end end
Private Instance Methods
create()
click to toggle source
# File lib/fog/hetznercloud/models/compute/server.rb, line 355 def create requires :name, :server_type, :image options = {} options[:ssh_keys] = ssh_keys.map(&:identity) unless ssh_keys.nil? options[:user_data] = user_data unless user_data.nil? options[:start_after_create] = start_after_create unless start_after_create.nil? options[:location] = location.identity unless location.nil? options[:datacenter] = datacenter.identity unless datacenter.nil? if (server = service.create_server(name, image.identity, server_type.identity, options).body['server']) merge_attributes(server) true else false end end
update()
click to toggle source
# File lib/fog/hetznercloud/models/compute/server.rb, line 373 def update requires :identity, :name return true unless @needsupdate body = attributes.dup body = { name: name } if (server = service.update_server(identity, body).body['server']) merge_attributes(server) true else false end end