summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--ick2/__init__.py1
-rw-r--r--ick2/apibase.py21
-rw-r--r--ick2/persistent.py82
-rw-r--r--ick2/persistent_tests.py17
-rw-r--r--ick2/trans.py40
5 files changed, 59 insertions, 102 deletions
diff --git a/ick2/__init__.py b/ick2/__init__.py
index 8bfa867..e21f666 100644
--- a/ick2/__init__.py
+++ b/ick2/__init__.py
@@ -21,7 +21,6 @@ from .store import (
)
from .persistent import (
MemoryPersistentState,
- MuckPersistentState,
NotFound,
Resource,
resource_from_dict,
diff --git a/ick2/apibase.py b/ick2/apibase.py
index e18ebe2..b950c11 100644
--- a/ick2/apibase.py
+++ b/ick2/apibase.py
@@ -23,8 +23,7 @@ class APIbase:
def __init__(self, state):
assert (state is None or
- isinstance(state, ick2.MemoryPersistentState) or
- isinstance(state, ick2.MuckPersistentState))
+ isinstance(state, ick2.MemoryPersistentState))
self._trans = ick2.TransactionalState(state)
def get_routes(self, path):
@@ -182,11 +181,11 @@ class ResourceApiBase(APIbase):
body=body, token=token, kwargs=kwargs)
as_dict = self.mangle_new_resource(body)
- rid = self.get_resource_name(as_dict)
- if self._trans.has_resource(token, self._type_name, rid):
- raise ick2.ExistsAlready(rid)
+ 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, rid) as resource:
+ with self._trans.new(token, self._type_name, name) as resource:
resource.from_dict(as_dict)
return as_dict
@@ -198,11 +197,11 @@ class ResourceApiBase(APIbase):
raise NotImplementedError()
def update(self, body, name, token=None, **kwargs):
- rid = self.get_resource_name(body)
- if not self._trans.has_resource(token, self._type_name, rid):
- raise ick2.NotFound(kind=self._type_name, rid=rid)
+ 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, rid) as resource:
+ with self._trans.modify(token, self._type_name, name) as resource:
as_dict = self.mangle_updated_resource(resource.as_dict(), body)
resource.from_dict(as_dict)
@@ -213,5 +212,5 @@ class ResourceApiBase(APIbase):
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, rid=name)
+ raise ick2.NotFound(kind=self._type_name, name=name)
self._trans.remove_resource(token, self._type_name, name)
diff --git a/ick2/persistent.py b/ick2/persistent.py
index d323db7..e225b88 100644
--- a/ick2/persistent.py
+++ b/ick2/persistent.py
@@ -27,28 +27,28 @@ import ick2
class PersistentStateInterface: # pragma: no cover
- def get_resource_ids(self, token, kind):
+ def get_resource_names(self, token, kind):
raise NotImplementedError()
- def has_resource(self, token, kind, rid):
+ def has_resource(self, token, kind, name):
raise NotImplementedError()
- def get_resource(self, token, kind, rid):
+ def get_resource(self, token, kind, name):
raise NotImplementedError()
def get_resources(self, token, kind):
return [
- self.get_resource(token, kind, rid)
- for rid in self.get_resource_ids(token, kind)
+ self.get_resource(token, kind, name)
+ for name in self.get_resource_names(token, kind)
]
- def write_resource(self, token, kind, rid, resource):
+ def write_resource(self, token, kind, name, resource):
raise NotImplementedError()
- def update_resource(self, token, kind, rid, resource):
+ def update_resource(self, token, kind, name, resource):
raise NotImplementedError()
- def remove_resource(self, token, kind, rid):
+ def remove_resource(self, token, kind, name):
raise NotImplementedError()
@@ -57,71 +57,39 @@ class MemoryPersistentState(PersistentStateInterface):
def __init__(self):
self._res = {}
- def get_resource_ids(self, token, kind):
+ def get_resource_names(self, token, kind):
if kind not in self._res:
return []
return list(self._res[kind].keys())
- def has_resource(self, token, kind, rid):
- return kind in self._res and rid in self._res[kind]
+ def has_resource(self, token, kind, name):
+ return kind in self._res and name in self._res[kind]
- def get_resource(self, token, kind, rid):
- if kind not in self._res or rid not in self._res[kind]:
- raise ick2.NotFound(kind=kind, rid=rid)
- return self._res[kind][rid]
+ def get_resource(self, token, kind, name):
+ if kind not in self._res or name not in self._res[kind]:
+ raise ick2.NotFound(kind=kind, name=name)
+ return self._res[kind][name]
- def write_resource(self, token, kind, rid, resource):
+ def write_resource(self, token, kind, name, resource):
if kind not in self._res:
self._res[kind] = {}
- self._res[kind][rid] = resource
+ self._res[kind][name] = resource
- def update_resource(self, token, kind, rid, resource):
- self.write_resource(token, kind, rid, resource)
+ def update_resource(self, token, kind, name, resource):
+ self.write_resource(token, kind, name, resource)
- def remove_resource(self, token, kind, rid):
- if kind not in self._res or rid not in self._res[kind]:
- raise ick2.NotFound(kind=kind, rid=rid)
- del self._res[kind][rid]
-
-
-class MuckPersistentState(PersistentStateInterface):
-
- def __init__(self):
- self._res = {}
-
- def get_resource_ids(self, token, kind):
- if kind not in self._res:
- return []
- return list(self._res[kind].keys())
-
- def has_resource(self, token, kind, rid):
- return kind in self._res and rid in self._res[kind]
-
- def get_resource(self, token, kind, rid):
- if kind not in self._res or rid not in self._res[kind]:
- raise ick2.NotFound(kind=kind, rid=rid)
- return self._res[kind][rid]
-
- def write_resource(self, token, kind, rid, resource):
- if kind not in self._res:
- self._res[kind] = {}
- self._res[kind][rid] = resource
-
- def update_resource(self, token, kind, rid, resource):
- self.write_resource(token, kind, rid, resource)
-
- def remove_resource(self, token, kind, rid):
- if kind not in self._res or rid not in self._res[kind]:
- raise ick2.NotFound(kind=kind, rid=rid)
- del self._res[kind][rid]
+ def remove_resource(self, token, kind, name):
+ if kind not in self._res or name not in self._res[kind]:
+ raise ick2.NotFound(kind=kind, name=name)
+ del self._res[kind][name]
class NotFound(Exception):
- def __init__(self, kind, rid):
+ def __init__(self, kind, name):
super().__init__(
'Resource {}:{} not found'.format(
- kind or "unknown", rid or "unknown"))
+ kind or "unknown", name or "unknown"))
class Resource: # pragma: no cover
diff --git a/ick2/persistent_tests.py b/ick2/persistent_tests.py
index 8406acf..18b5c5c 100644
--- a/ick2/persistent_tests.py
+++ b/ick2/persistent_tests.py
@@ -29,7 +29,7 @@ class PersistentStateTestsMixIn:
def test_has_no_resources_initially(self):
token = self.get_token()
- self.assertEqual(self.state.get_resource_ids(token, 'silly'), [])
+ self.assertEqual(self.state.get_resource_names(token, 'silly'), [])
def test_has_no_resource_initially(self):
token = self.get_token()
@@ -43,7 +43,7 @@ class PersistentStateTestsMixIn:
token = self.get_token()
self.state.write_resource(token, 'silly', '#1', r)
self.assertTrue(self.state.has_resource(token, 'silly', '#1'))
- self.assertEqual(self.state.get_resource_ids(token, 'silly'), ['#1'])
+ self.assertEqual(self.state.get_resource_names(token, 'silly'), ['#1'])
r2 = self.state.get_resource(token, 'silly', '#1')
self.assertTrue(isinstance(r2, ick2.Resource))
@@ -61,7 +61,7 @@ class PersistentStateTestsMixIn:
self.state.update_resource(token, 'silly', '#1', r2)
self.assertTrue(self.state.has_resource(token, 'silly', '#1'))
- self.assertEqual(self.state.get_resource_ids(token, 'silly'), ['#1'])
+ self.assertEqual(self.state.get_resource_names(token, 'silly'), ['#1'])
actual = self.state.get_resource(token, 'silly', '#1')
self.assertTrue(isinstance(actual, ick2.Resource))
@@ -75,7 +75,7 @@ class PersistentStateTestsMixIn:
self.state.write_resource(token, 'silly', '#1', r)
self.state.remove_resource(token, 'silly', '#1')
self.assertFalse(self.state.has_resource(token, 'silly', '#1'))
- self.assertEqual(self.state.get_resource_ids(token, 'silly'), [])
+ self.assertEqual(self.state.get_resource_names(token, 'silly'), [])
def test_raises_error_removing_nonexistent_resource_kind(self):
token = self.get_token()
@@ -99,12 +99,3 @@ class MemoryPersistentStateTests(unittest.TestCase, PersistentStateTestsMixIn):
def setUp(self):
self.state = ick2.MemoryPersistentState()
-
-
-class MuckPersistentStateTests(unittest.TestCase, PersistentStateTestsMixIn):
-
- def get_token(self):
- return 'DUMMY-TOKEN'
-
- def setUp(self):
- self.state = ick2.MuckPersistentState()
diff --git a/ick2/trans.py b/ick2/trans.py
index 171c996..afbeeb2 100644
--- a/ick2/trans.py
+++ b/ick2/trans.py
@@ -19,14 +19,14 @@ import ick2
class TransactionalResource:
- def __init__(self, token, state, kind, rid):
+ def __init__(self, token, state, kind, name):
self.token = token
self.state = state
self.kind = kind
- self.rid = rid
- if state.has_resource(self.token, kind, rid):
+ self.name = name
+ if state.has_resource(self.token, kind, name):
self.new = False
- self.resource = state.get_resource(self.token, kind, rid)
+ self.resource = state.get_resource(self.token, kind, name)
else:
self.new = True
self.resource = ick2.resource_from_dict({})
@@ -48,10 +48,10 @@ class TransactionalResource:
if exc_type is None:
if self.new:
self.state.write_resource(
- self.token, self.kind, self.rid, self.resource)
+ self.token, self.kind, self.name, self.resource)
else:
self.state.update_resource(
- self.token, self.kind, self.rid, self.resource)
+ self.token, self.kind, self.name, self.resource)
class TransactionalState:
@@ -59,25 +59,25 @@ class TransactionalState:
def __init__(self, state):
self.state = state
- def new(self, token, kind, rid):
- return TransactionalResource(token, self.state, kind, rid)
+ def new(self, token, kind, name):
+ return TransactionalResource(token, self.state, kind, name)
- def modify(self, token, kind, rid):
- if not self.state.has_resource(token, kind, rid):
- raise ick2.NotFound(kind=kind, rid=rid)
- return TransactionalResource(token, self.state, kind, rid)
+ def modify(self, token, kind, name):
+ if not self.state.has_resource(token, kind, name):
+ raise ick2.NotFound(kind=kind, name=name)
+ return TransactionalResource(token, self.state, kind, name)
- def get_resource_ids(self, token, kind):
- return self.state.get_resource_ids(token, kind)
+ def get_resource_names(self, token, kind):
+ return self.state.get_resource_names(token, kind)
- def has_resource(self, token, kind, rid):
- return self.state.has_resource(token, kind, rid)
+ def has_resource(self, token, kind, name):
+ return self.state.has_resource(token, kind, name)
- def get_resource(self, token, kind, rid):
- return self.state.get_resource(token, kind, rid)
+ def get_resource(self, token, kind, name):
+ return self.state.get_resource(token, kind, name)
def get_resources(self, token, kind):
return self.state.get_resources(token, kind)
- def remove_resource(self, token, kind, rid):
- self.state.remove_resource(token, kind, rid)
+ def remove_resource(self, token, kind, name):
+ self.state.remove_resource(token, kind, name)