Add retry to Flow patterns

Implement dependency checks when adding items to flows:
- retry can't be depended on tasks from it's subflow.
- retry can't provide same values as tasks or other retries

Change-Id: Iffa8e673fd2de39407ae22cd38ad523d484cbba7
This commit is contained in:
Anastasia Karpinska
2013-12-26 09:16:10 +02:00
parent c698f848d8
commit 1222bda50d
5 changed files with 212 additions and 9 deletions

View File

@@ -47,14 +47,32 @@ class Flow(object):
- provides
"""
def __init__(self, name):
def __init__(self, name, retry=None):
self._name = six.text_type(name)
self._retry = retry
# If retry doesn't have a name,
# the name of its owner will be assigned
if self._retry:
self._retry_provides = self.retry.provides
self._retry_requires = self.retry.requires
if not self._retry.name:
self._retry.set_name(self.name + "_retry")
else:
self._retry_provides = set()
self._retry_requires = set()
@property
def name(self):
"""A non-unique name for this flow (human readable)."""
return self._name
@property
def retry(self):
"""A retry object that will affect control how (and if) this flow
retries while execution is underway.
"""
return self._retry
@abc.abstractmethod
def __len__(self):
"""Returns how many items are in this flow."""