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)
|
return self._rest_post('/resource/%s/obtain_usage_token' % resource, js=body)
|
||||||
|
|
||||||
def release_usage_token(self, resource: str, token: str):
|
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__":
|
if __name__ == "__main__":
|
||||||
|
|
||||||
|
|
|
@ -125,7 +125,7 @@ class Resource:
|
||||||
self.description = desc
|
self.description = desc
|
||||||
self.status = "unknown"
|
self.status = "unknown"
|
||||||
self.use_count = 0
|
self.use_count = 0
|
||||||
self.usage_tokens = []
|
self.usage_tokens = {}
|
||||||
self.determine_status()
|
self.determine_status()
|
||||||
|
|
||||||
def usage_inc(self):
|
def usage_inc(self):
|
||||||
|
@ -144,15 +144,21 @@ class Resource:
|
||||||
def usage_token_get(self, user_name: str, usage: str, duration_s: int) -> UsageToken:
|
def usage_token_get(self, user_name: str, usage: str, duration_s: int) -> UsageToken:
|
||||||
"""Create/obtain a new usage token."""
|
"""Create/obtain a new usage token."""
|
||||||
token = UsageToken(self, user_name, usage, duration_s)
|
token = UsageToken(self, user_name, usage, duration_s)
|
||||||
self.usage_tokens.append(token)
|
self.usage_tokens[token.uuid.hex] = token
|
||||||
self.usage_inc()
|
self.usage_inc()
|
||||||
return token
|
return token
|
||||||
|
|
||||||
def usage_token_put(self, token: UsageToken):
|
def usage_token_put(self, token: UsageToken):
|
||||||
"""Release/put an existing usage token."""
|
"""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()
|
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):
|
def get_status(self):
|
||||||
"""Return the (cached) status of the resource."""
|
"""Return the (cached) status of the resource."""
|
||||||
return self.status
|
return self.status
|
||||||
|
|
|
@ -71,10 +71,14 @@ class PwrMgmtRestServer:
|
||||||
set_headers(request)
|
set_headers(request)
|
||||||
return json.dumps(token.to_dict())
|
return json.dumps(token.to_dict())
|
||||||
|
|
||||||
@app.route('/api/v1/resource/<resrc>/token/<token>/release', methods=['GET'])
|
@app.route('/api/v1/resource/<resrc>/token/<token_uuid>/release', methods=['GET'])
|
||||||
def token_release(self, request, resrc, token):
|
def token_release(self, request, resrc, token_uuid):
|
||||||
resource = self.resources[resrc]
|
resource = self.resources[resrc]
|
||||||
# find token within resource
|
# find token within resource
|
||||||
|
token = resource.usage_token_find(token_uuid)
|
||||||
|
if not token:
|
||||||
|
request.setResponseCode(404)
|
||||||
|
return
|
||||||
resource.usage_token_put(token)
|
resource.usage_token_put(token)
|
||||||
#set_headers(request)
|
#set_headers(request)
|
||||||
request.setResponseCode(200)
|
request.setResponseCode(200)
|
||||||
|
|
Loading…
Reference in New Issue