summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorLars Wirzenius <liw@liw.fi>2018-08-03 10:44:36 +0300
committerLars Wirzenius <liw@liw.fi>2018-08-03 10:44:36 +0300
commita2bd5bca4c60499b3f9a2b99ec0dd0645bc718fe (patch)
treed2f385b16355b5f3efe3dc6c2e9699cc1bba59b2
parent9353d90a656acc45451956b4048f7a5befcf22cd (diff)
downloadqvisqve-a2bd5bca4c60499b3f9a2b99ec0dd0645bc718fe.tar.gz
Add: PUT /applications/id
-rw-r--r--qvisqve/management_router.py19
-rwxr-xr-xqvisqvetool12
2 files changed, 31 insertions, 0 deletions
diff --git a/qvisqve/management_router.py b/qvisqve/management_router.py
index 6095d41..5592677 100644
--- a/qvisqve/management_router.py
+++ b/qvisqve/management_router.py
@@ -69,6 +69,11 @@ class ManagementEndpoint:
},
{
'method': 'PUT',
+ 'path': '{}/<id>'.format(self._path),
+ 'callback': self._update,
+ },
+ {
+ 'method': 'PUT',
'path': '{}/<id>/secret'.format(self._path),
'callback': self._set_secret,
},
@@ -93,6 +98,20 @@ class ManagementEndpoint:
location = '{}{}/{}'.format(self._baseurl, self._path, entity_id)
return qvisqve.created_response(entity, location)
+ def _update(self, content_type, body, **kwargs):
+ qvisqve.log.log('info', msg_text='Updating', path=self._path)
+
+ entity_id = kwargs['id']
+ try:
+ entity = self._entities.get(entity_id)
+ except qvisqve.ResourceDoesNotExist as e:
+ return qvisqve.not_found_response()
+
+ self._entities.create(entity_id, body)
+
+ entity = self._entities.get(entity_id)
+ return qvisqve.ok_response(entity)
+
def _list(self, content_type, body, **kwargs):
qvisqve.log.log('info', msg_text='Listing', path=self._path)
entity_ids = list(self._entities.list())
diff --git a/qvisqvetool b/qvisqvetool
index 731606e..bfd92fe 100755
--- a/qvisqvetool
+++ b/qvisqvetool
@@ -150,6 +150,17 @@ class QvisqveTool(cliapp.Application):
self.output.write('Set secret for {}\n'.format(name))
+ def cmd_add_callback(self, args):
+ name, callback = args
+
+ api, token = self.get_api()
+
+ path = '/applications/{}'.format(name)
+ r = api.GET(token, path)
+ app = r.json()
+ app['callbacks'] = app.get('callbacks', []) + [callback]
+ api.PUT(token, path, json.dumps(app), json_content_type)
+
def cmd_GET(self, args):
api, token = self.get_api()
r = api.GET(token, args[0])
@@ -313,6 +324,7 @@ def default_scopes():
scopes.append('uapi_{}_post'.format(resource_type))
scopes.append('uapi_{}_get'.format(resource_type))
scopes.append('uapi_{}_id_get'.format(resource_type))
+ scopes.append('uapi_{}_id_put'.format(resource_type))
scopes.append('uapi_{}_id_secret_put'.format(resource_type))
scopes.append('uapi_{}_id_delete'.format(resource_type))
return ' '.join(scopes)