diff options
author | Lars Wirzenius <liw@liw.fi> | 2018-07-26 10:37:51 +0300 |
---|---|---|
committer | Lars Wirzenius <liw@liw.fi> | 2018-07-26 10:37:51 +0300 |
commit | 070edf9b2f55bdf50f84d2deb13a214031fce35d (patch) | |
tree | ec09dfba77478fd97f3356f5bcdd4d8baa335b33 /ick2 | |
parent | 44abb5b581b33dad7309cc36f65e3b6649c8886d (diff) | |
download | ick2-070edf9b2f55bdf50f84d2deb13a214031fce35d.tar.gz |
Change: upon triggering build, check project defines all parameters
Diffstat (limited to 'ick2')
-rw-r--r-- | ick2/__init__.py | 1 | ||||
-rw-r--r-- | ick2/apibase.py | 3 | ||||
-rw-r--r-- | ick2/exceptions.py | 7 | ||||
-rw-r--r-- | ick2/projectapi.py | 9 |
4 files changed, 20 insertions, 0 deletions
diff --git a/ick2/__init__.py b/ick2/__init__.py index fe8027c..f489396 100644 --- a/ick2/__init__.py +++ b/ick2/__init__.py @@ -51,6 +51,7 @@ from .exceptions import ( IckException, MethodNotAllowed, ClientIdMissing, + ParametersMissing, ) from .responses import ( OK, diff --git a/ick2/apibase.py b/ick2/apibase.py index b629f68..a7b3927 100644 --- a/ick2/apibase.py +++ b/ick2/apibase.py @@ -61,6 +61,9 @@ class APIbase: if 'raw_uri_path' in kwargs: del kwargs['raw_uri_path'] body = callback(**kwargs) + except ick2.ParametersMissing as e: + ick2.log.log('error', msg_text=str(e), kwargs=kwargs) + return ick2.not_found(str(e)) except ick2.NotFound as e: ick2.log.log( 'error', msg_text='GET Not found', kwargs=kwargs, diff --git a/ick2/exceptions.py b/ick2/exceptions.py index 8a5447d..3af7ff0 100644 --- a/ick2/exceptions.py +++ b/ick2/exceptions.py @@ -39,3 +39,10 @@ class ClientIdMissing(IckException): class MethodNotAllowed(IckException): pass + + +class ParametersMissing(IckException): + + def __init__(self, names): + super().__init__( + 'Project must define parameters: {}'.format(' '. join(names))) diff --git a/ick2/projectapi.py b/ick2/projectapi.py index 90197ae..0d9f8f5 100644 --- a/ick2/projectapi.py +++ b/ick2/projectapi.py @@ -103,7 +103,16 @@ class ProjectAPI(ick2.ResourceApiBase): def _get_actions(self, project): # pragma: no cover actions = [] + params = project.get('parameters', {}) for pipeline_name in project.get('pipelines', []): pipeline = self._trans.get_resource('pipelines', pipeline_name) + wanted = pipeline.get('parameters', []) + missing = [ + name + for name in wanted + if name not in params + ] + if missing: + raise ick2.ParametersMissing(missing) actions.extend(list(pipeline['actions'])) return actions |