def __init__(self, rule_fqdn, missing): self.missing = missing details = dr.stringify_requirements(missing) super(_make_skip, self).__init__(None, rule_fqdn=rule_fqdn, reason="MISSING_REQUIREMENTS", details=details)
def invoke(self, broker): try: r = super(rule, self).invoke(broker) if r is None: raise dr.SkipComponent() except dr.MissingRequirements as mr: details = dr.stringify_requirements(mr.requirements) r = _make_skip(dr.get_name(self.component), reason="MISSING_REQUIREMENTS", details=details) if not isinstance(r, Response): raise Exception("rules must return Response objects.") return r
def rule_executor(component, broker, requires, optional, executor=dr.default_executor): try: r = executor(component, broker, requires, optional) if r is None: name = dr.get_name(component) log.debug("Rule %s returned None" % name) raise dr.SkipComponent() except dr.MissingRequirements as mr: details = dr.stringify_requirements(mr.requirements) r = make_skip(dr.get_name(component), reason="MISSING_REQUIREMENTS", details=details) validate_response(r) return r
def process(self, broker): """ Ensures dependencies have been met before delegating to `self.invoke`. """ if any(i in broker for i in dr.IGNORE.get(self.component, [])): raise dr.SkipComponent() missing = self.get_missing_dependencies(broker) if missing: details = dr.stringify_requirements(missing) return _make_skip(dr.get_name(self.component), reason="MISSING_REQUIREMENTS", details=details) r = self.invoke(broker) if r is None: raise dr.SkipComponent() if not isinstance(r, Response): raise Exception("rules must return Response objects.") return r
def test_stringify(): expected = "All: ['a', 'b', 'c'] Any: ['d', 'e'] Any: ['f', 'g']" result = stringify_requirements(REQUIRES) assert expected == result