diff options
author | Lars Wirzenius <liw@liw.fi> | 2019-07-20 16:16:24 +0300 |
---|---|---|
committer | Lars Wirzenius <liw@liw.fi> | 2019-08-03 21:06:50 +0300 |
commit | 2cdb28a8350478a5d92607be8c95d5e5d43f4dfc (patch) | |
tree | 0fcaa29580cc4cdbb69950e5a184a59360f7f7d4 /ick2 | |
parent | a40f2829d97a5c139c0d83a454b5cbeb5426ba27 (diff) | |
download | ick2-2cdb28a8350478a5d92607be8c95d5e5d43f4dfc.tar.gz |
Drop: TransactionalState.has_resource (bad, racy)
Diffstat (limited to 'ick2')
-rw-r--r-- | ick2/apibase.py | 6 | ||||
-rw-r--r-- | ick2/trans.py | 7 |
2 files changed, 4 insertions, 9 deletions
diff --git a/ick2/apibase.py b/ick2/apibase.py index b950c11..19f70e4 100644 --- a/ick2/apibase.py +++ b/ick2/apibase.py @@ -182,8 +182,6 @@ class ResourceApiBase(APIbase): as_dict = self.mangle_new_resource(body) name = self.get_resource_name(as_dict) - if self._trans.has_resource(token, self._type_name, name): - raise ick2.ExistsAlready(name) with self._trans.new(token, self._type_name, name) as resource: resource.from_dict(as_dict) @@ -198,8 +196,6 @@ class ResourceApiBase(APIbase): def update(self, body, name, token=None, **kwargs): name = self.get_resource_name(body) - if not self._trans.has_resource(token, self._type_name, name): - raise ick2.NotFound(kind=self._type_name, name=name) with self._trans.modify(token, self._type_name, name) as resource: as_dict = self.mangle_updated_resource(resource.as_dict(), body) @@ -211,6 +207,4 @@ class ResourceApiBase(APIbase): return new def delete(self, name, token=None, **kwargs): - if not self._trans.has_resource(token, self._type_name, name): - raise ick2.NotFound(kind=self._type_name, name=name) self._trans.remove_resource(token, self._type_name, name) diff --git a/ick2/trans.py b/ick2/trans.py index b35cf50..119f277 100644 --- a/ick2/trans.py +++ b/ick2/trans.py @@ -60,6 +60,8 @@ class TransactionalState: self.state = state def new(self, token, kind, name): + if self.state.has_resource(token, kind, name): + raise ick2.ExistsAlaready(name) return TransactionalResource(token, self.state, kind, name) def modify(self, token, kind, name): @@ -67,9 +69,6 @@ class TransactionalState: raise ick2.NotFound(kind=kind, name=name) return TransactionalResource(token, self.state, kind, name) - def has_resource(self, token, kind, name): - return self.state.has_resource(token, kind, name) - def get_resource(self, token, kind, name): return self.state.get_resource(token, kind, name) @@ -77,4 +76,6 @@ class TransactionalState: return self.state.get_resources(token, kind) def remove_resource(self, token, kind, name): + if not self.state.has_resource(token, kind, name): + raise ick2.NotFound(kind=kind, name=name) self.state.remove_resource(token, kind, name) |