Пример #1
0
    def get_policy_rule(self,
                        context,
                        rule_cls,
                        rule_id,
                        policy_id,
                        fields=None):
        """Get a QoS policy rule.

        :param context: neutron api request context
        :type context: neutron.context.Context
        :param rule_cls: the rule object class
        :type rule_cls: a class from the rule_object (qos.objects.rule) module
        :param rule_id: the id of the QoS policy rule to get
        :type rule_id: str uuid
        :param policy_id: the id of the rule's policy
        :type policy_id: str uuid

        :returns: a QoS policy rule object
        :raises: n_exc.QosRuleNotFound
        """
        with db_api.autonested_transaction(context.session):
            # Ensure we have access to the policy.
            self._get_policy_obj(context, policy_id)
            rule = rule_cls.get_object(context, id=rule_id)
        if not rule:
            raise n_exc.QosRuleNotFound(policy_id=policy_id, rule_id=rule_id)
        return rule
Пример #2
0
    def get_rule_by_id(self, rule_id):
        """Return rule specified by rule_id.

        @raise QosRuleNotFound: if there is no such rule in the policy.
        """

        for rule in self.rules:
            if rule_id == rule.id:
                return rule
        raise exceptions.QosRuleNotFound(policy_id=self.id, rule_id=rule_id)
Пример #3
0
 def get_policy_bandwidth_limit_rule(self, context, rule_id,
                                     policy_id, fields=None):
     # make sure we have access to the policy when fetching the rule
     with db_api.autonested_transaction(context.session):
         # first, validate that we have access to the policy
         self._get_policy_obj(context, policy_id)
         rule = rule_object.QosBandwidthLimitRule.get_by_id(
             context, rule_id)
     if not rule:
         raise n_exc.QosRuleNotFound(policy_id=policy_id, rule_id=rule_id)
     return rule