summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorLars Wirzenius <liw@liw.fi>2017-10-23 20:43:45 +0300
committerLars Wirzenius <liw@liw.fi>2017-10-25 16:10:14 +0300
commitae18ed25c64fe4cafd46ebb7cc3599d1c9c95741 (patch)
tree76c2c4705140b9e7737f7f8968cf4b3977aeba7f
parent55db4288d32c73fd69c1c3a54278e860c5ec6f39 (diff)
downloadqvisqve-ae18ed25c64fe4cafd46ebb7cc3599d1c9c95741.tar.gz
Add: listen_on_type field to listeners
This makes it possible to only return listeners for a specific resource type.
-rw-r--r--qvarn/notification_router.py20
-rw-r--r--resource_type/listeners.yaml1
2 files changed, 20 insertions, 1 deletions
diff --git a/qvarn/notification_router.py b/qvarn/notification_router.py
index 000c445..b96e38e 100644
--- a/qvarn/notification_router.py
+++ b/qvarn/notification_router.py
@@ -106,6 +106,12 @@ class NotificationRouter(qvarn.Router):
if 'type' not in body:
body['type'] = 'listener'
+ rtype = self._parent_coll.get_type_name()
+ if body.get('listen_on_type', rtype) != rtype:
+ return qvarn.bad_request_response(
+ 'listen_on_type does not have value {}'.format(rtype))
+ body['listen_on_type'] = rtype
+
result_body = self._listener_coll.post(body)
location = self._get_new_resource_location(result_body)
qvarn.log.log(
@@ -119,7 +125,19 @@ class NotificationRouter(qvarn.Router):
resource['id'])
def _get_listener_list(self, content_type, body, *args, **kwargs):
- body = self._listener_coll.list()
+ rtype = self._parent_coll.get_type_name()
+ listener_list = self._listener_coll.list()['resources']
+ listener_ids = [listener['id'] for listener in listener_list]
+ listeners = [self._listener_coll.get(lid) for lid in listener_ids]
+ qvarn.log.log('trace', msg_text='xxx', listeners=listeners)
+ correct_ids = [
+ {"id": listener['id']}
+ for listener in listeners
+ if listener['listen_on_type'] == rtype
+ ]
+ body = {
+ 'resources': correct_ids,
+ }
return qvarn.ok_response(body)
def _get_a_listener(self, *args, **kwargs):
diff --git a/resource_type/listeners.yaml b/resource_type/listeners.yaml
index 07c2e53..19caa3f 100644
--- a/resource_type/listeners.yaml
+++ b/resource_type/listeners.yaml
@@ -6,6 +6,7 @@ versions:
id: ""
type: ""
revision: ""
+ listen_on_type: ""
notify_of_new: false
listen_on_all: false
listen_on: [""]