Class: Fog::Hetznercloud::Compute::Server
- Inherits:
-
Compute::Server
- Object
- Compute::Server
- Fog::Hetznercloud::Compute::Server
- Defined in:
- lib/fog/hetznercloud/models/compute/server.rb
Instance Method Summary collapse
- #async=(value) ⇒ Object
- #async? ⇒ Boolean
- #async_mode? ⇒ Boolean
- #change_dns_ptr(dns_ptr, ip: public_ip_address, async: async_mode?) ) ⇒ Object
- #change_type(async: async_mode?, , upgrade_disk: false, server_type:) ⇒ Object
-
#create_backup(async: async_mode?, , description: "Backup of #{attributes[:name]} created at #{Time.now}") ⇒ Object
Returns action, imageObject.
-
#create_image(async: async_mode?, , description: "image of #{attributes[:name]} created at #{Time.now}", type: 'snapshot') ⇒ Object
Returns action, imageObject.
- #datacenter=(value) ⇒ Object
- #destroy ⇒ Object
- #disable_backup(async: async_mode?) ) ⇒ Object
- #disable_rescue(async: async_mode?) ) ⇒ Object
- #enable_backup(async: async_mode?, , backup_window: nil) ⇒ Object
- #enable_rescue(type: 'linux64', ssh_keys: [], async: async_mode?) ) ⇒ Object
- #execute_action(action, async = true, body = {}) ⇒ Object
- #image=(value) ⇒ Object
-
#initialize(options) ⇒ Server
constructor
A new instance of Server.
- #location=(value) ⇒ Object
- #migrating? ⇒ Boolean
- #name=(value) ⇒ Object
- #poweroff(async: async_mode?) ) ⇒ Object
- #poweron(async: async_mode?) ) ⇒ Object
- #public_dns_name ⇒ Object
- #public_ip_address ⇒ Object
- #ready? ⇒ Boolean
- #reboot(async: async_mode?) ) ⇒ Object
- #rebuild_from_image(async: async_mode?, , image:) ⇒ Object
- #reset(async: async_mode?) ) ⇒ Object
-
#reset_root_password(async: async_mode?) ) ⇒ Object
Returns action, password.
- #reverse_dns_name ⇒ Object
- #save ⇒ Object
- #server_type=(value) ⇒ Object
- #shutdown(async: async_mode?) ) ⇒ Object
- #ssh_keys=(value) ⇒ Object
- #stopped? ⇒ Boolean
- #sync=(value) ⇒ Object
- #sync? ⇒ Boolean
- #user_data=(value) ⇒ Object
Constructor Details
#initialize(options) ⇒ Server
Returns a new instance of Server.
30 31 32 33 |
# File 'lib/fog/hetznercloud/models/compute/server.rb', line 30 def initialize() @async = true super() end |
Instance Method Details
#async=(value) ⇒ Object
186 187 188 |
# File 'lib/fog/hetznercloud/models/compute/server.rb', line 186 def async=(value) @async = !!value end |
#async? ⇒ Boolean
190 191 192 |
# File 'lib/fog/hetznercloud/models/compute/server.rb', line 190 def async? @async end |
#async_mode? ⇒ Boolean
194 195 196 |
# 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?) ) ⇒ Object
304 305 306 307 308 309 310 311 312 313 |
# 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:) ⇒ Object
278 279 280 281 282 283 284 285 286 287 288 289 290 |
# 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 #{attributes[:name]} created at #{Time.now}") ⇒ Object
Returns action, imageObject
240 241 242 243 244 |
# 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 #{attributes[:name]} created at #{Time.now}", type: 'snapshot') ⇒ Object
Returns action, imageObject
247 248 249 250 251 252 253 254 255 256 |
# 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) ⇒ Object
93 94 95 96 97 98 99 100 101 102 103 104 105 |
# 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 ⇒ Object
149 150 151 152 153 154 |
# 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?) ) ⇒ Object
315 316 317 318 319 |
# 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?) ) ⇒ Object
206 207 208 209 210 |
# 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) ⇒ Object
292 293 294 295 296 297 298 299 300 301 302 |
# 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?) ) ⇒ Object
212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 |
# 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 = {}) ⇒ Object
331 332 333 334 335 336 337 338 339 340 341 342 343 344 345 346 |
# 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) ⇒ Object
35 36 37 38 39 40 41 42 43 44 45 46 |
# 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) ⇒ Object
80 81 82 83 84 85 86 87 88 89 90 91 |
# 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? ⇒ Boolean
133 134 135 |
# File 'lib/fog/hetznercloud/models/compute/server.rb', line 133 def status == 'migrating' end |
#name=(value) ⇒ Object
115 116 117 118 119 |
# 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?) ) ⇒ Object
162 163 164 165 166 |
# 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?) ) ⇒ Object
156 157 158 159 160 |
# 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 ⇒ Object
121 122 123 |
# 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 ⇒ Object
348 349 350 351 |
# 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? ⇒ Boolean
129 130 131 |
# File 'lib/fog/hetznercloud/models/compute/server.rb', line 129 def ready? status == 'running' end |
#reboot(async: async_mode?) ) ⇒ Object
168 169 170 171 172 |
# 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:) ⇒ Object
258 259 260 261 262 263 264 265 266 267 268 269 270 271 272 273 274 275 276 |
# 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?) ) ⇒ Object
174 175 176 177 178 |
# 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?) ) ⇒ Object
Returns action, password
322 323 324 325 326 327 328 329 |
# 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 ⇒ Object
125 126 127 |
# File 'lib/fog/hetznercloud/models/compute/server.rb', line 125 def reverse_dns_name public_net['ipv4']['dns_ptr'] end |
#save ⇒ Object
141 142 143 144 145 146 147 |
# File 'lib/fog/hetznercloud/models/compute/server.rb', line 141 def save if persisted? update else create end end |
#server_type=(value) ⇒ Object
67 68 69 70 71 72 73 74 75 76 77 78 |
# 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?) ) ⇒ Object
180 181 182 183 184 |
# 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) ⇒ Object
48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 |
# 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? ⇒ Boolean
137 138 139 |
# File 'lib/fog/hetznercloud/models/compute/server.rb', line 137 def stopped? status == 'off' end |
#sync=(value) ⇒ Object
198 199 200 |
# File 'lib/fog/hetznercloud/models/compute/server.rb', line 198 def sync=(value) @async = !value end |
#sync? ⇒ Boolean
202 203 204 |
# File 'lib/fog/hetznercloud/models/compute/server.rb', line 202 def sync? !@async end |
#user_data=(value) ⇒ Object
107 108 109 110 111 112 113 |
# 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 |