diff --git a/osmo-lpmgd-apitool b/osmo-lpmgd-apitool index babfafd..629a250 100755 --- a/osmo-lpmgd-apitool +++ b/osmo-lpmgd-apitool @@ -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") diff --git a/osmocom/lpmgd/rest_server.py b/osmocom/lpmgd/rest_server.py index abf43ca..b6aaee2 100644 --- a/osmocom/lpmgd/rest_server.py +++ b/osmocom/lpmgd/rest_server.py @@ -80,6 +80,27 @@ class PwrMgmtRestServer: set_headers(request) return json.dumps(token.to_dict()) + @app.route('/api/v1/resource//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//token/', 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//token//release', methods=['GET']) def token_release(self, request, resrc, token_uuid): resource = self.resources[resrc]