diff options
Diffstat (limited to 'ick2/apibase.py')
-rw-r--r-- | ick2/apibase.py | 13 |
1 files changed, 9 insertions, 4 deletions
diff --git a/ick2/apibase.py b/ick2/apibase.py index c0b1aa5..6fb2839 100644 --- a/ick2/apibase.py +++ b/ick2/apibase.py @@ -157,25 +157,30 @@ class ResourceApiBase(APIbase): return self._state.get_resource(self._type_name, name) def create(self, body, **kwargs): - name = self.get_resource_name(body) + resource = self.mangle_resource(body) + name = self.get_resource_name(resource) try: self._state.get_resource(self._type_name, name) except ick2.NotFound: - return self._state.add_resource(self._type_name, name, body) + return self._state.add_resource(self._type_name, name, resource) else: raise ick2.ExistsAlready(name) + def mangle_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): - name = self.get_resource_name(body) + resource = self.mangle_resource(body) + name = self.get_resource_name(resource) try: self._state.get_resource(self._type_name, name) except ick2.NotFound: raise else: - return self._state.update_resource(self._type_name, name, body) + return self._state.update_resource(self._type_name, name, resource) def delete(self, name, **kwargs): self._state.remove_resource(self._type_name, name) |