hetzner icon indicating copy to clipboard operation
hetzner copied to clipboard

[bugfix] server ip is deprecated for POST /reset/ skip 'soft' reset if not supported

Open acjohnson opened this issue 3 years ago • 12 comments

acjohnson avatar Nov 19 '21 22:11 acjohnson

@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

acjohnson avatar Nov 20 '21 04:11 acjohnson

  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?

aszlig avatar Nov 20 '21 16:11 aszlig

  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)

acjohnson avatar Nov 20 '21 23:11 acjohnson

Any more feedback @aszlig ?

acjohnson avatar Dec 01 '21 01:12 acjohnson

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 avatar Dec 10 '21 05:12 aszlig

@aszlig okay it's using _reset_types as previously suggested, and no Try Except now :sweat_smile:

acjohnson avatar Dec 10 '21 21:12 acjohnson

@aszlig Happy new year! Lemme know if you think this will work now :smiley:

acjohnson avatar Jan 05 '22 18:01 acjohnson

Rebased. @aszlig is this one mergeable as well? Thanks!

acjohnson avatar Jul 27 '22 15:07 acjohnson

Hm, shouldn't Reset._update_status also use the number instead of the IP?

aszlig avatar Jul 27 '22 17:07 aszlig

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

acjohnson avatar Jul 27 '22 17:07 acjohnson

I went ahead and changed the GET to use server.number as well @aszlig

acjohnson avatar Jul 27 '22 20:07 acjohnson

merge possible for this PR @aszlig?

acjohnson avatar Aug 26 '22 15:08 acjohnson

@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 avatar Oct 26 '22 10:10 aszlig

@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)

acjohnson avatar Oct 26 '22 12:10 acjohnson