add REST + apitool support for listing all resources
This commit is contained in:
parent
425f84f552
commit
11ffb5ca95
|
@ -58,28 +58,36 @@ class ApiClient:
|
|||
def release_usage_token(self, resource: str, token: str):
|
||||
return self._rest_get('/resource/%s/token/%s/release' % (resource, token))
|
||||
|
||||
def list_resources(self):
|
||||
return self._rest_get('/resource')
|
||||
|
||||
if __name__ == "__main__":
|
||||
|
||||
parser = argparse.ArgumentParser()
|
||||
parser.add_argument("-H", "--host", help="host to connect to", default="localhost")
|
||||
parser.add_argument("-p", "--port", help="HTTP port to connect to", type=int, default=9996)
|
||||
parser.add_argument("-v", "--verbose", help="increase output verbosity", action="count", default=0)
|
||||
parser.add_argument("-r", "--resource", help="name of resource", required=True)
|
||||
subp = parser.add_subparsers()
|
||||
|
||||
getst_p = subp.add_parser("get-status", help="Get current resource status")
|
||||
getst_p.add_argument("-r", "--resource", help="name of resource", required=True)
|
||||
getst_p.set_defaults(operation="get-status")
|
||||
|
||||
obtut_p = subp.add_parser("obtain-usage-token", help="Obtain usage token for resource")
|
||||
obtut_p.add_argument("-n", "--user-name", help="User name", required=True)
|
||||
obtut_p.add_argument("-u", "--usage", help="Usage (string describing reason for use)", required=True)
|
||||
obtut_p.add_argument("-d", "--duration", help="Duration of usage in seconds)", type=int, required=True)
|
||||
obtut_p.add_argument("-r", "--resource", help="name of resource", required=True)
|
||||
obtut_p.set_defaults(operation="obtain-usage-token")
|
||||
|
||||
relut_p = subp.add_parser("release-usage-token")
|
||||
relut_p.add_argument("-t", "--token", help="Usage token (previously obtained)", required=True)
|
||||
relut_p.add_argument("-r", "--resource", help="name of resource", required=True)
|
||||
relut_p.set_defaults(operation="release-usage-token")
|
||||
|
||||
lsres_p = subp.add_parser("list-resources")
|
||||
lsres_p.set_defaults(operation="list-resources")
|
||||
|
||||
args = parser.parse_args()
|
||||
|
||||
api = ApiClient(args.host, args.port)
|
||||
|
@ -90,5 +98,7 @@ 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 == "list-resources":
|
||||
api.list_resources()
|
||||
else:
|
||||
raise Exception("Unknown/Unsupported operation")
|
||||
|
|
|
@ -46,6 +46,15 @@ class PwrMgmtRestServer:
|
|||
request.setResponseCode(404)
|
||||
return str(ApiError("Unknown resource"))
|
||||
|
||||
@app.route('/api/v1/resource', methods=['GET'])
|
||||
def resource_list(self, request):
|
||||
out = []
|
||||
for r in self.resources.values():
|
||||
r.determine_status()
|
||||
out.append(r.to_dict())
|
||||
set_headers(request)
|
||||
return json.dumps(out)
|
||||
|
||||
@app.route('/api/v1/resource/<resrc>/status', methods=['GET'])
|
||||
def resource_status(self, request, resrc):
|
||||
resource = self.resources[resrc]
|
||||
|
|
Loading…
Reference in New Issue