'Implement method proxies for all policy-rule-specific requests. For
a given request type (such as to update a rule), a single method will
handle requests for all rule types.  For example, the
update_policy_rule method will handle requests for both
update_policy_dscp_marking_rule and update_policy_bandwidth_limit_rule.
:param attrib: the requested method; in the normal case, this will be,
for example, "update_policy_dscp_marking_rule"
:type attrib: str'

def __getattr__(self, attrib):

    for pattern in self.qos_rule_method_patterns:
        res = re.match(pattern, attrib)
        if res:
            rule_type = res.group('rule_type')
            if (rule_type in self.rule_objects):
                proxy_method = attrib.replace((rule_type + '_'), '')
                rule_cls = self.rule_objects[rule_type]
                return self._call_proxy_method(proxy_method, rule_cls)
    raise AttributeError(attrib)
