hetzner
hetzner copied to clipboard
[bugfix] server ip is deprecated for POST /reset/ skip 'soft' reset if not supported
@aszlig thank you for taking the time to look at this. The reason for this is because when I run hetznerctl rescue <ip>
on an AX-41 I get the following 400
:
# hetznerctl rescue <ip>
Server #1244841: Tring to reboot using the 'soft' method.
Traceback (most recent call last):
File "/home/acjohnson/Projects/hetzner-kube/venv/bin/hetznerctl", line 418, in <module>
main()
File "/home/acjohnson/Projects/hetzner-kube/venv/bin/hetznerctl", line 414, in main
subcommand.execute(robot, parser, args)
File "/home/acjohnson/Projects/hetzner-kube/venv/bin/hetznerctl", line 105, in execute
server.rescue.shell(**kwargs)
File "/home/acjohnson/Projects/hetzner-kube/venv/lib/python3.9/site-packages/hetzner/server.py", line 152, in shell
self.observed_activate(*args, **kwargs)
File "/home/acjohnson/Projects/hetzner-kube/venv/lib/python3.9/site-packages/hetzner/server.py", line 130, in observed_activate
self.server.observed_reboot(*args, **kwargs)
File "/home/acjohnson/Projects/hetzner-kube/venv/lib/python3.9/site-packages/hetzner/server.py", line 468, in observed_reboot
return self.reset.observed_reboot(*args, **kwargs)
File "/home/acjohnson/Projects/hetzner-kube/venv/lib/python3.9/site-packages/hetzner/reset.py", line 88, in observed_reboot
self.reboot(mode)
File "/home/acjohnson/Projects/hetzner-kube/venv/lib/python3.9/site-packages/hetzner/reset.py", line 145, in reboot
return self.conn.post('/reset/{0}'.format(self.server.ip),
File "/home/acjohnson/Projects/hetzner-kube/venv/lib/python3.9/site-packages/hetzner/robot.py", line 408, in post
return self.request('POST', path, data)
File "/home/acjohnson/Projects/hetzner-kube/venv/lib/python3.9/site-packages/hetzner/robot.py", line 402, in request
raise RobotError(err, response.status)
hetzner.RobotError: 400 - invalid input, fields: type (400)
Also it would probably be a good idea to switch to using server.number
for the reset
calls as server.ip
has been deprecated https://robot.your-server.de/doc/webservice/en.html#post-reset-server-number
File "/home/acjohnson/Projects/hetzner-kube/venv/lib/python3.9/site-packages/hetzner/reset.py", line 145, in reboot return self.conn.post('/reset/{0}'.format(self.server.ip),
Isn't this what this PR is actually about?
File "/home/acjohnson/Projects/hetzner-kube/venv/lib/python3.9/site-packages/hetzner/reset.py", line 145, in reboot return self.conn.post('/reset/{0}'.format(self.server.ip),
Isn't this what this PR is actually about?
No deprecated doesn't mean removed, it just means it will be removed. The bug is that sw
is not a valid reset type apparently.
Here's the same error when you replace server.ip
with server.number
# hetznerctl rescue <ip>
Server #1244841: Tring to reboot using the 'soft' method.
Traceback (most recent call last):
File "/home/acjohnson/Projects/hetzner-kube/venv/bin/hetznerctl", line 418, in <module>
main()
File "/home/acjohnson/Projects/hetzner-kube/venv/bin/hetznerctl", line 414, in main
subcommand.execute(robot, parser, args)
File "/home/acjohnson/Projects/hetzner-kube/venv/bin/hetznerctl", line 105, in execute
server.rescue.shell(**kwargs)
File "/home/acjohnson/Projects/hetzner-kube/venv/lib/python3.9/site-packages/hetzner/server.py", line 152, in shell
self.observed_activate(*args, **kwargs)
File "/home/acjohnson/Projects/hetzner-kube/venv/lib/python3.9/site-packages/hetzner/server.py", line 130, in observed_activate
self.server.observed_reboot(*args, **kwargs)
File "/home/acjohnson/Projects/hetzner-kube/venv/lib/python3.9/site-packages/hetzner/server.py", line 468, in observed_reboot
return self.reset.observed_reboot(*args, **kwargs)
File "/home/acjohnson/Projects/hetzner-kube/venv/lib/python3.9/site-packages/hetzner/reset.py", line 88, in observed_reboot
self.reboot(mode)
File "/home/acjohnson/Projects/hetzner-kube/venv/lib/python3.9/site-packages/hetzner/reset.py", line 145, in reboot
return self.conn.post('/reset/{0}'.format(self.server.number),
File "/home/acjohnson/Projects/hetzner-kube/venv/lib/python3.9/site-packages/hetzner/robot.py", line 408, in post
return self.request('POST', path, data)
File "/home/acjohnson/Projects/hetzner-kube/venv/lib/python3.9/site-packages/hetzner/robot.py", line 402, in request
raise RobotError(err, response.status)
hetzner.RobotError: 400 - invalid input, fields: type (400)
Any more feedback @aszlig ?
Any more feedback @aszlig ?
Yep, using the server number instead of the IP is fine, but I'm still not convinced with the try...except
. If you can split those into different commits, I could cherry-pick the non-controversial parts.
@aszlig okay it's using _reset_types
as previously suggested, and no Try Except
now :sweat_smile:
@aszlig Happy new year! Lemme know if you think this will work now :smiley:
Rebased. @aszlig is this one mergeable as well? Thanks!
Hm, shouldn't Reset._update_status
also use the number instead of the IP?
Hm, shouldn't
Reset._update_status
also use the number instead of the IP?
Yeah and I'm not sure how this has evolved over the past several months...
According to https://robot.your-server.de/doc/webservice/en.html#get-reset-server-number it looks like server-number is preferred but the deprecation for server-ip is now crossed out lol
I went ahead and changed the GET to use server.number as well @aszlig
merge possible for this PR @aszlig?
@acjohnson: I've cherry-picked ca5af16f87c6f05a6ceb08030a8bf20e154484ce for now, can you please rebase (and possibly fixup/squash your commits)? Alternatively, if you're fine with it[^1] I can do it as well.
[^1]: This is mainly because I wouldn't like it if someone would squash/fixup my own commits, but I can see that other people might not care about commit messages that much.
@aszlig done, look good? (I pushed the non-squashed/rebased branch to rescuefixes-old
in my fork if you want to compare with the old branch)