Compare commits
3 Commits
8893527121
...
425f84f552
Author | SHA1 | Date |
---|---|---|
Harald Welte | 425f84f552 | |
Harald Welte | 6544151ff9 | |
Harald Welte | 1b0ae2814b |
|
@ -56,7 +56,7 @@ class ApiClient:
|
|||
return self._rest_post('/resource/%s/obtain_usage_token' % resource, js=body)
|
||||
|
||||
def release_usage_token(self, resource: str, token: str):
|
||||
return self._rest_get('/resource/%s/token/%s/release')
|
||||
return self._rest_get('/resource/%s/token/%s/release' % (resource, token))
|
||||
|
||||
if __name__ == "__main__":
|
||||
|
||||
|
|
|
@ -125,7 +125,7 @@ class Resource:
|
|||
self.description = desc
|
||||
self.status = "unknown"
|
||||
self.use_count = 0
|
||||
self.usage_tokens = []
|
||||
self.usage_tokens = {}
|
||||
self.determine_status()
|
||||
|
||||
def usage_inc(self):
|
||||
|
@ -144,15 +144,21 @@ class Resource:
|
|||
def usage_token_get(self, user_name: str, usage: str, duration_s: int) -> UsageToken:
|
||||
"""Create/obtain a new usage token."""
|
||||
token = UsageToken(self, user_name, usage, duration_s)
|
||||
self.usage_tokens.append(token)
|
||||
self.usage_tokens[token.uuid.hex] = token
|
||||
self.usage_inc()
|
||||
return token
|
||||
|
||||
def usage_token_put(self, token: UsageToken):
|
||||
"""Release/put an existing usage token."""
|
||||
self.usage_tokens.delete(token)
|
||||
uuid_hex = token.uuid.hex
|
||||
del self.usage_tokens[uuid_hex]
|
||||
self.usage_dec()
|
||||
|
||||
def usage_token_find(self, uuid_hex: str):
|
||||
if uuid_hex in self.usage_tokens:
|
||||
return self.usage_tokens[uuid_hex]
|
||||
return None
|
||||
|
||||
def get_status(self):
|
||||
"""Return the (cached) status of the resource."""
|
||||
return self.status
|
||||
|
|
|
@ -71,10 +71,14 @@ class PwrMgmtRestServer:
|
|||
set_headers(request)
|
||||
return json.dumps(token.to_dict())
|
||||
|
||||
@app.route('/api/v1/resource/<resrc>/token/<token>/release', methods=['GET'])
|
||||
def token_release(self, request, resrc, token):
|
||||
@app.route('/api/v1/resource/<resrc>/token/<token_uuid>/release', methods=['GET'])
|
||||
def token_release(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
|
||||
resource.usage_token_put(token)
|
||||
#set_headers(request)
|
||||
request.setResponseCode(200)
|
||||
|
|
Loading…
Reference in New Issue