summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--ick2/apibase.py13
-rw-r--r--ick2/projectapi.py7
2 files changed, 14 insertions, 6 deletions
diff --git a/ick2/apibase.py b/ick2/apibase.py
index d02e3a1..13b258a 100644
--- a/ick2/apibase.py
+++ b/ick2/apibase.py
@@ -157,7 +157,7 @@ class ResourceApiBase(APIbase):
return self._state.get_resource(self._type_name, name)
def create(self, body, **kwargs):
- resource = self.mangle_resource(body)
+ resource = self.mangle_new_resource(body)
name = self.get_resource_name(resource)
try:
self._state.get_resource(self._type_name, name)
@@ -166,21 +166,24 @@ class ResourceApiBase(APIbase):
else:
raise ick2.ExistsAlready(name)
- def mangle_resource(self, resource): # pragma: no cover
+ def mangle_new_resource(self, resource): # pragma: no cover
return resource
def get_resource_name(self, resource): # pragma: no cover
raise NotImplementedError()
def update(self, body, name, **kwargs):
- resource = self.mangle_resource(body)
- name = self.get_resource_name(resource)
+ name = self.get_resource_name(body)
try:
- self._state.get_resource(self._type_name, name)
+ old = self._state.get_resource(self._type_name, name)
except ick2.NotFound:
raise
else:
+ resource = self.mangle_updated_resource(old, body)
return self._state.update_resource(self._type_name, name, resource)
+ def mangle_updated_resource(self, old, new): # pragma: no cover
+ return new
+
def delete(self, name, **kwargs):
self._state.remove_resource(self._type_name, name)
diff --git a/ick2/projectapi.py b/ick2/projectapi.py
index ffa1f1b..9548c38 100644
--- a/ick2/projectapi.py
+++ b/ick2/projectapi.py
@@ -22,12 +22,17 @@ class ProjectAPI(ick2.ResourceApiBase):
super().__init__('projects', state)
self._pi = ick2.PipelineInstances(self.get_state())
- def mangle_resource(self, resource):
+ def mangle_new_resource(self, resource):
new = dict(resource)
if 'next_build_id' not in new:
new['next_build_id'] = None
return new
+ def mangle_updated_resource(self, old, new):
+ new = dict(new)
+ new['next_build_id'] = old.get('next_build_id')
+ return new
+
def get_resource_name(self, resource):
return resource['project']