From b31ebde1789ba7575b1635bab5d16c06a773b2c7 Mon Sep 17 00:00:00 2001 From: Thierry Parmentelat Date: Thu, 24 Nov 2011 18:42:52 +0100 Subject: [PATCH] make sfa really not depending on sfatables --- sfa/util/sfatablesRuntime.py | 75 +++++++++++++++++++++--------------- 1 file changed, 43 insertions(+), 32 deletions(-) diff --git a/sfa/util/sfatablesRuntime.py b/sfa/util/sfatablesRuntime.py index 170fa880..ef8404b3 100644 --- a/sfa/util/sfatablesRuntime.py +++ b/sfa/util/sfatablesRuntime.py @@ -1,36 +1,47 @@ -from sfatables.runtime import SFATablesRules +# sfa should not depend on sfatables +# if the sfatables.runtime import fails, just define run_sfatables as identity -def fetch_context(slice_hrn, user_hrn, contexts): - """ - Returns the request context required by sfatables. At some point, this - mechanism should be changed to refer to "contexts", which is the - information that sfatables is requesting. But for now, we just return - the basic information needed in a dict. - """ - base_context = {'sfa':{'user':{'hrn':user_hrn}, 'slice':{'hrn':slice_hrn}}} - return base_context +try: + from sfatables.runtime import SFATablesRules -def run_sfatables(chain, hrn, origin_hrn, rspec, context_callback = None ): - """ - Run the rspec through sfatables - @param chain Name of rule chain - @param hrn Object's hrn - @param origin_hrn Original caller's hrn - @param rspec Incoming rspec - @param context_callback Callback used to generate the request context + def fetch_context(slice_hrn, user_hrn, contexts): + """ + Returns the request context required by sfatables. At some point, this + mechanism should be changed to refer to "contexts", which is the + information that sfatables is requesting. But for now, we just return + the basic information needed in a dict. + """ + base_context = {'sfa':{'user':{'hrn':user_hrn}, 'slice':{'hrn':slice_hrn}}} + return base_context - @return rspec - """ - if not context_callback: - context_callback = fetch_context + def run_sfatables(chain, hrn, origin_hrn, rspec, context_callback = None ): + """ + Run the rspec through sfatables + @param chain Name of rule chain + @param hrn Object's hrn + @param origin_hrn Original caller's hrn + @param rspec Incoming rspec + @param context_callback Callback used to generate the request context + + @return rspec + """ + if not context_callback: + context_callback = fetch_context - chain = chain.upper() - rules = SFATablesRules(chain) - if rules.sorted_rule_list: - contexts = rules.contexts - request_context = context_callback(hrn, origin_hrn, contexts) - rules.set_context(request_context) - newrspec = rules.apply(rspec) - else: - newrspec = rspec - return newrspec + chain = chain.upper() + rules = SFATablesRules(chain) + if rules.sorted_rule_list: + contexts = rules.contexts + request_context = context_callback(hrn, origin_hrn, contexts) + rules.set_context(request_context) + newrspec = rules.apply(rspec) + else: + newrspec = rspec + return newrspec + +except: + + from sfa.util.logging import logger + def run_sfatables (, rspec, ____): + logger.warning("Cannot import sfatables.runtime, please install package sfa-sfatables") + return rspec -- 2.43.0