By default use a in memory backend (when none is provided)
Change-Id: I6891d53389f302f104d45d22e489cf66feb85fd8
This commit is contained in:
		| @@ -45,6 +45,8 @@ class PathBasedBackend(base.Backend): | |||||||
|  |  | ||||||
| @six.add_metaclass(abc.ABCMeta) | @six.add_metaclass(abc.ABCMeta) | ||||||
| class PathBasedConnection(base.Connection): | class PathBasedConnection(base.Connection): | ||||||
|  |     """Base class for path based backend connections.""" | ||||||
|  |  | ||||||
|     def __init__(self, backend): |     def __init__(self, backend): | ||||||
|         self._backend = backend |         self._backend = backend | ||||||
|         self._book_path = self._join_path(backend.path, "books") |         self._book_path = self._join_path(backend.path, "books") | ||||||
| @@ -187,7 +189,8 @@ class PathBasedConnection(base.Connection): | |||||||
|     def _do_update_flow_details(self, flow_detail, transaction, |     def _do_update_flow_details(self, flow_detail, transaction, | ||||||
|                                 ignore_missing=False): |                                 ignore_missing=False): | ||||||
|         flow_path = self._get_obj_path(flow_detail) |         flow_path = self._get_obj_path(flow_detail) | ||||||
|         self._update_object(flow_detail, transaction, ignore_missing) |         self._update_object(flow_detail, transaction, | ||||||
|  |                             ignore_missing=ignore_missing) | ||||||
|         for atom_details in flow_detail: |         for atom_details in flow_detail: | ||||||
|             atom_path = self._get_obj_path(atom_details) |             atom_path = self._get_obj_path(atom_details) | ||||||
|             link_path = self._join_path(flow_path, atom_details.uuid) |             link_path = self._join_path(flow_path, atom_details.uuid) | ||||||
| @@ -198,7 +201,7 @@ class PathBasedConnection(base.Connection): | |||||||
|     def update_flow_details(self, flow_detail, ignore_missing=False): |     def update_flow_details(self, flow_detail, ignore_missing=False): | ||||||
|         with self._transaction() as transaction: |         with self._transaction() as transaction: | ||||||
|             return self._do_update_flow_details(flow_detail, transaction, |             return self._do_update_flow_details(flow_detail, transaction, | ||||||
|                                                 ignore_missing) |                                                 ignore_missing=ignore_missing) | ||||||
|  |  | ||||||
|     def get_atoms_for_flow(self, flow_uuid): |     def get_atoms_for_flow(self, flow_uuid): | ||||||
|         flow_path = self._join_path(self.flow_path, flow_uuid) |         flow_path = self._join_path(self.flow_path, flow_uuid) | ||||||
| @@ -213,7 +216,7 @@ class PathBasedConnection(base.Connection): | |||||||
|     def update_atom_details(self, atom_detail, ignore_missing=False): |     def update_atom_details(self, atom_detail, ignore_missing=False): | ||||||
|         with self._transaction() as transaction: |         with self._transaction() as transaction: | ||||||
|             return self._update_object(atom_detail, transaction, |             return self._update_object(atom_detail, transaction, | ||||||
|                                        ignore_missing) |                                        ignore_missing=ignore_missing) | ||||||
|  |  | ||||||
|     def _do_destroy_logbook(self, book_uuid, transaction): |     def _do_destroy_logbook(self, book_uuid, transaction): | ||||||
|         book_path = self._join_path(self.book_path, book_uuid) |         book_path = self._join_path(self.book_path, book_uuid) | ||||||
|   | |||||||
| @@ -22,6 +22,7 @@ import six | |||||||
|  |  | ||||||
| from taskflow import exceptions | from taskflow import exceptions | ||||||
| from taskflow import logging | from taskflow import logging | ||||||
|  | from taskflow.persistence.backends import impl_memory | ||||||
| from taskflow.persistence import logbook | from taskflow.persistence import logbook | ||||||
| from taskflow import retry | from taskflow import retry | ||||||
| from taskflow import states | from taskflow import states | ||||||
| @@ -121,6 +122,10 @@ class Storage(object): | |||||||
|     atom_details, flow_details) for use by engines. This makes it easier to |     atom_details, flow_details) for use by engines. This makes it easier to | ||||||
|     interact with the underlying storage & backend mechanism through this |     interact with the underlying storage & backend mechanism through this | ||||||
|     interface rather than accessing those objects directly. |     interface rather than accessing those objects directly. | ||||||
|  |  | ||||||
|  |     NOTE(harlowja): if no backend is provided then a in-memory backend will | ||||||
|  |     be automatically used and the provided flow detail object will be placed | ||||||
|  |     into it for the duration of this objects existence. | ||||||
|     """ |     """ | ||||||
|  |  | ||||||
|     injector_name = '_TaskFlow_INJECTOR' |     injector_name = '_TaskFlow_INJECTOR' | ||||||
| @@ -134,6 +139,13 @@ class Storage(object): | |||||||
|     def __init__(self, flow_detail, backend=None, scope_fetcher=None): |     def __init__(self, flow_detail, backend=None, scope_fetcher=None): | ||||||
|         self._result_mappings = {} |         self._result_mappings = {} | ||||||
|         self._reverse_mapping = {} |         self._reverse_mapping = {} | ||||||
|  |         if backend is None: | ||||||
|  |             # Err on the likely-hood that most people don't make there | ||||||
|  |             # objects able to be deepcopyable (resources, locks and such | ||||||
|  |             # can't be deepcopied)... | ||||||
|  |             backend = impl_memory.MemoryBackend({'deep_copy': False}) | ||||||
|  |             with contextlib.closing(backend.get_connection()) as conn: | ||||||
|  |                 conn.update_flow_details(flow_detail, ignore_missing=True) | ||||||
|         self._backend = backend |         self._backend = backend | ||||||
|         self._flowdetail = flow_detail |         self._flowdetail = flow_detail | ||||||
|         self._transients = {} |         self._transients = {} | ||||||
| @@ -169,11 +181,9 @@ class Storage(object): | |||||||
|                                      dict((name, name) for name in names)) |                                      dict((name, name) for name in names)) | ||||||
|  |  | ||||||
|     def _with_connection(self, functor, *args, **kwargs): |     def _with_connection(self, functor, *args, **kwargs): | ||||||
|         # NOTE(harlowja): Activate the given function with a backend |         # Run the given functor with a backend connection as its first | ||||||
|         # connection, if a backend is provided in the first place, otherwise |         # argument (providing the additional positional arguments and keyword | ||||||
|         # don't call the function. |         # arguments as subsequent arguments). | ||||||
|         if self._backend is None: |  | ||||||
|             return |  | ||||||
|         with contextlib.closing(self._backend.get_connection()) as conn: |         with contextlib.closing(self._backend.get_connection()) as conn: | ||||||
|             functor(conn, *args, **kwargs) |             functor(conn, *args, **kwargs) | ||||||
|  |  | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user
	 Joshua Harlow
					Joshua Harlow