Load engines with defined args and provided kwargs

To match the other fetch() functions, make the engine
load and run methods take in kwargs which can be used
by a specific engine if needed. Instead of the previous
passing engine args by invoke_kwds, use the invoke_args
with the specific kwargs being placed in invoke_kwds.

Change-Id: I7974ed774909de82a8b48615dfe29836ca8d809d
This commit is contained in:
Joshua Harlow
2014-04-25 15:27:51 -07:00
parent cb2ea424c7
commit 2a0851c2ab

View File

@@ -47,7 +47,8 @@ def _fetch_validate_factory(flow_factory):
def load(flow, store=None, flow_detail=None, book=None,
engine_conf=None, backend=None, namespace=ENGINES_NAMESPACE):
engine_conf=None, backend=None, namespace=ENGINES_NAMESPACE,
**kwargs):
"""Load flow into engine.
This function creates and prepares engine to run the
@@ -100,12 +101,8 @@ def load(flow, store=None, flow_detail=None, book=None,
mgr = stevedore.driver.DriverManager(
namespace, engine_name,
invoke_on_load=True,
invoke_kwds={
'conf': engine_conf.copy(),
'flow': flow,
'flow_detail': flow_detail,
'backend': backend
})
invoke_args=(flow, flow_detail, backend, engine_conf),
invoke_kwds=kwargs)
engine = mgr.driver
if store:
engine.storage.inject(store)
@@ -113,7 +110,7 @@ def load(flow, store=None, flow_detail=None, book=None,
def run(flow, store=None, flow_detail=None, book=None,
engine_conf=None, backend=None, namespace=ENGINES_NAMESPACE):
engine_conf=None, backend=None, namespace=ENGINES_NAMESPACE, **kwargs):
"""Run the flow.
This function load the flow into engine (with 'load' function)
@@ -141,7 +138,7 @@ def run(flow, store=None, flow_detail=None, book=None,
"""
engine = load(flow, store=store, flow_detail=flow_detail, book=book,
engine_conf=engine_conf, backend=backend,
namespace=namespace)
namespace=namespace, **kwargs)
engine.run()
return engine.storage.fetch_all()
@@ -187,7 +184,7 @@ def save_factory_details(flow_detail,
def load_from_factory(flow_factory, factory_args=None, factory_kwargs=None,
store=None, book=None, engine_conf=None, backend=None,
namespace=ENGINES_NAMESPACE):
namespace=ENGINES_NAMESPACE, **kwargs):
"""Loads a flow from a factory function into an engine.
Gets flow factory function (or name of it) and creates flow with
@@ -220,7 +217,8 @@ def load_from_factory(flow_factory, factory_args=None, factory_kwargs=None,
flow_factory, factory_args, factory_kwargs,
backend=backend)
return load(flow=flow, store=store, flow_detail=flow_detail, book=book,
engine_conf=engine_conf, backend=backend, namespace=namespace)
engine_conf=engine_conf, backend=backend, namespace=namespace,
**kwargs)
def flow_from_detail(flow_detail):
@@ -249,7 +247,7 @@ def flow_from_detail(flow_detail):
def load_from_detail(flow_detail, store=None, engine_conf=None, backend=None,
namespace=ENGINES_NAMESPACE):
namespace=ENGINES_NAMESPACE, **kwargs):
"""Reload flow previously loaded with load_form_factory function.
Gets flow factory name from metadata, calls it to recreate the flow
@@ -266,4 +264,4 @@ def load_from_detail(flow_detail, store=None, engine_conf=None, backend=None,
flow = flow_from_detail(flow_detail)
return load(flow, flow_detail=flow_detail,
store=store, engine_conf=engine_conf, backend=backend,
namespace=namespace)
namespace=namespace, **kwargs)