python-harborclient icon indicating copy to clipboard operation
python-harborclient copied to clipboard

set-admin: harborclient.exceptions.BadRequest: {"code":400,"message":"Invalid json request"} (HTTP 400)

Open damwiw opened this issue 6 years ago • 0 comments

Hi,

A small issue with set-admin command.

  • Harbor version: 1.9.0

  • harbor-client commit: 09c936279323cbea276299d2a8188c264d9bbe2e

  • error:

/usr/local/bin/harbor set-admin <my user>

Traceback (most recent call last):
  File "/usr/local/bin/harbor", line 10, in <module>
    sys.exit(main())
  File "/usr/local/lib/python2.7/dist-packages/harborclient/shell.py", line 404, in main
    HarborShell().main(argv)
  File "/usr/local/lib/python2.7/dist-packages/harborclient/shell.py", line 336, in main
    args.func(self.cs, args)
  File "/usr/local/lib/python2.7/dist-packages/harborclient/v2/shell.py", line 57, in do_set_admin
    cs.users.set_admin(user['user_id'], True)
  File "/usr/local/lib/python2.7/dist-packages/harborclient/v2/users.py", line 72, in set_admin
    return self._update("/users/%s/sysadmin" % id, profile)
  File "/usr/local/lib/python2.7/dist-packages/harborclient/base.py", line 45, in _update
    return self.api.client.put(url, body=body)
  File "/usr/local/lib/python2.7/dist-packages/harborclient/client.py", line 252, in put
    return self._cs_request(url, 'PUT', **kwargs)
  File "/usr/local/lib/python2.7/dist-packages/harborclient/client.py", line 229, in _cs_request
    **kwargs)
  File "/usr/local/lib/python2.7/dist-packages/harborclient/client.py", line 215, in _time_request
    body = self.request(url, method, **kwargs)
  File "/usr/local/lib/python2.7/dist-packages/harborclient/client.py", line 205, in request
    raise exceptions.from_response(resp, resp.text, url, method)
harborclient.exceptions.BadRequest: {"code":400,"message":"Invalid json request"} (HTTP 400)
  • root cause: Expected json value is a boolean instead of a int
  • proposed fix in v2/users.py:
        if is_admin:
            profile = {"has_admin_role": True}
        else:
            profile = {"has_admin_role": False}

Don't know if such a fix may cause issues with other versions of Harbor. Would worth a try.

Thanks for your nice work. Kind regards,

Damien

damwiw avatar Dec 23 '19 16:12 damwiw