Example #1
0
 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)
Example #2
0
 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
Example #3
0
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
Example #4
0
 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
Example #5
0
def test_stringify():
    expected = "All: ['a', 'b', 'c'] Any: ['d', 'e'] Any: ['f', 'g']"
    result = stringify_requirements(REQUIRES)
    assert expected == result