diff options
author | Lars Wirzenius <liw@liw.fi> | 2017-10-12 15:52:54 +0300 |
---|---|---|
committer | Lars Wirzenius <liw@liw.fi> | 2017-10-12 15:52:54 +0300 |
commit | 9255a00983e4b270c1901a8399ce58adcd2906ff (patch) | |
tree | 6769a80a0e5d7469fc7cccdb03c43e338db8f5ad | |
parent | ac7bacfce90b38a65bbb017c6283ba1482c74278 (diff) | |
download | qvisqve-9255a00983e4b270c1901a8399ce58adcd2906ff.tar.gz |
Refactor: use helper methods to fix repeated code
-rw-r--r-- | qvarn/api.py | 52 |
1 files changed, 22 insertions, 30 deletions
diff --git a/qvarn/api.py b/qvarn/api.py index 6b3c8fd..a2f3e64 100644 --- a/qvarn/api.py +++ b/qvarn/api.py @@ -34,11 +34,7 @@ class QvarnAPI: def add_resource_type(self, rt): path = rt.get_path() - cond1 = qvarn.Equal('path', path) - cond2 = qvarn.Equal('type', 'resource_type') - cond = qvarn.All(cond1, cond2) - results = self._store.find_objects(cond) - objs = [obj for _, obj in results] + objs = self._get_resource_type_given_path(path) if not objs: obj = { 'id': rt.get_type(), @@ -50,12 +46,7 @@ class QvarnAPI: obj, obj_id=obj['id'], subpath='', auxtable=True) def get_resource_type(self, path): - cond1 = qvarn.Equal('path', path) - cond2 = qvarn.Equal('type', 'resource_type') - cond = qvarn.All(cond1, cond2) - results = self._store.find_objects(cond) - objs = [obj for _, obj in results] - qvarn.log.log('debug', objs=objs) + objs = self._get_resource_type_given_path(path) if len(objs) == 0: qvarn.log.log( 'error', @@ -73,32 +64,33 @@ class QvarnAPI: rt.from_spec(objs[0]['spec']) return rt - def get_listener_resource_type(self): - cond1 = qvarn.Equal('id', 'listener') - cond2 = qvarn.Equal('type', 'resource_type') - cond = qvarn.All(cond1, cond2) + def _get_resource_type_given_path(self, path): + cond = qvarn.All( + qvarn.Equal('path', path), + qvarn.Equal('type', 'resource_type'), + ) results = self._store.find_objects(cond) - objs = [obj for _, obj in results] - qvarn.log.log('debug', objs=objs) - if len(objs) == 0: # pragma: no cover - raise qvarn.NoSuchResourceType('listener') - elif len(objs) > 1: # pragma: no cover - raise qvarn.TooManyResourceTypes('listener') - rt = qvarn.ResourceType() - rt.from_spec(objs[0]['spec']) - return rt + return [obj for _, obj in results] + + def get_listener_resource_type(self): + return self._get_resource_type_given_type('listener') def get_notification_resource_type(self): # pragma: no cover - cond1 = qvarn.Equal('id', 'notification') - cond2 = qvarn.Equal('type', 'resource_type') - cond = qvarn.All(cond1, cond2) + return self._get_resource_type_given_type('notification') + + def _get_resource_type_given_type(self, type_name): + cond = qvarn.All( + qvarn.Equal('id', type_name), + qvarn.Equal('type', 'resource_type'), + ) results = self._store.find_objects(cond) objs = [obj for _, obj in results] - qvarn.log.log('debug', objs=objs) + if len(objs) == 0: # pragma: no cover - raise qvarn.NoSuchResourceType('listener') + raise qvarn.NoSuchResourceType(type_name) elif len(objs) > 1: # pragma: no cover - raise qvarn.TooManyResourceTypes('listener') + raise qvarn.TooManyResourceTypes(type_name) + rt = qvarn.ResourceType() rt.from_spec(objs[0]['spec']) return rt |