add GET of individual token or list of all tokens of resource

This commit is contained in:
Harald Welte 2023-06-05 10:17:27 +02:00
parent 11ffb5ca95
commit fb1b88f5af
2 changed files with 41 additions and 0 deletions

View File

@ -58,9 +58,16 @@ class ApiClient:
def release_usage_token(self, resource: str, token: str):
return self._rest_get('/resource/%s/token/%s/release' % (resource, token))
def show_usage_token(self, resource: str, token: str):
return self._rest_get('/resource/%s/token/%s' % (resource, token))
def list_resources(self):
return self._rest_get('/resource')
def list_usage_tokens(self, resource:str):
return self._rest_get('/resource/%s/token' % (resource))
if __name__ == "__main__":
parser = argparse.ArgumentParser()
@ -85,9 +92,18 @@ if __name__ == "__main__":
relut_p.add_argument("-r", "--resource", help="name of resource", required=True)
relut_p.set_defaults(operation="release-usage-token")
shtok_p = subp.add_parser("show-usage-token")
shtok_p.add_argument("-r", "--resource", help="name of resource", required=True)
shtok_p.add_argument("-t", "--token", help="Usage token (previously obtained)", required=True)
shtok_p.set_defaults(operation="show-usage-token")
lsres_p = subp.add_parser("list-resources")
lsres_p.set_defaults(operation="list-resources")
lstok_p = subp.add_parser("list-tokens")
lstok_p.add_argument("-r", "--resource", help="name of resource", required=True)
lstok_p.set_defaults(operation="list-tokens")
args = parser.parse_args()
api = ApiClient(args.host, args.port)
@ -98,7 +114,11 @@ if __name__ == "__main__":
api.obtain_usage_token(args.resource, args.user_name, args.usage, args.duration)
elif args.operation == "release-usage-token":
api.release_usage_token(args.resource, args.token)
elif args.operation == "show-usage-token":
api.show_usage_token(args.resource, args.token)
elif args.operation == "list-resources":
api.list_resources()
elif args.operation == "list-tokens":
api.list_usage_tokens(args.resource)
else:
raise Exception("Unknown/Unsupported operation")

View File

@ -80,6 +80,27 @@ class PwrMgmtRestServer:
set_headers(request)
return json.dumps(token.to_dict())
@app.route('/api/v1/resource/<resrc>/token', methods=['GET'])
def token_list(self, request, resrc):
resource = self.resources[resrc]
token_list = [t.to_dict() for t in resource.usage_tokens.values()]
set_headers(request)
request.setResponseCode(200)
return json.dumps(token_list)
@app.route('/api/v1/resource/<resrc>/token/<token_uuid>', methods=['GET'])
def token_get(self, request, resrc, token_uuid):
resource = self.resources[resrc]
# find token within resource
token = resource.usage_token_find(token_uuid)
if not token:
request.setResponseCode(404)
return
set_headers(request)
request.setResponseCode(200)
return json.dumps(token.to_dict())
@app.route('/api/v1/resource/<resrc>/token/<token_uuid>/release', methods=['GET'])
def token_release(self, request, resrc, token_uuid):
resource = self.resources[resrc]