Beispiel #1
0
    def _graph_create(self, session, lock_session, policy_dict):
        load_balancer_id = policy_dict.pop('load_balancer_id', None)
        listener_id = policy_dict['listener_id']
        policy_dict = db_prepare.create_l7policy(policy_dict, load_balancer_id,
                                                 listener_id)
        rules = policy_dict.pop('l7rules', []) or []
        db_policy = self._validate_create_l7policy(lock_session, policy_dict)

        # Check cluster quotas for l7rules.
        if rules and self.repositories.check_clusterquota_met(
                lock_session,
                data_models.L7Rule,
                base_res_id=db_policy.id,
                count=len(rules)):
            raise exceptions.ClusterQuotaException(
                resource=data_models.L7Rule._name())

        # Check quotas for l7policies.
        if rules and self.repositories.check_quota_met(session,
                                                       lock_session,
                                                       data_models.L7Rule,
                                                       db_policy.project_id,
                                                       count=len(rules)):
            raise exceptions.ClusterQuotaException(
                resource=data_models.L7Rule._name())

        new_rules = []
        for r in rules:
            r['project_id'] = db_policy.project_id
            new_rules.append(
                l7rule.L7RuleController(db_policy.id)._graph_create(
                    lock_session, r))

        db_policy.l7rules = new_rules
        return db_policy
Beispiel #2
0
    def _lookup(self, l7policy_id, *remainder):
        """Overridden pecan _lookup method for custom routing.

        Verifies that the l7policy passed in the url exists, and if so decides
        which controller, if any, should control be passed.
        """
        context = pecan.request.context.get('octavia_context')
        if l7policy_id and len(remainder) and remainder[0] == 'rules':
            remainder = remainder[1:]
            db_l7policy = self.repositories.l7policy.get(context.session,
                                                         id=l7policy_id)
            if not db_l7policy:
                LOG.info("L7Policy %s not found.", l7policy_id)
                raise exceptions.NotFound(resource='L7Policy', id=l7policy_id)
            return l7rule.L7RuleController(
                l7policy_id=db_l7policy.id), remainder
Beispiel #3
0
    def _graph_create(self, lock_session, policy_dict):
        load_balancer_id = policy_dict.pop('load_balancer_id', None)
        listener_id = policy_dict['listener_id']
        policy_dict = db_prepare.create_l7policy(policy_dict, load_balancer_id,
                                                 listener_id)
        rules = policy_dict.pop('l7rules', []) or []
        db_policy = self._validate_create_l7policy(lock_session, policy_dict)

        new_rules = []
        for r in rules:
            r['project_id'] = db_policy.project_id
            new_rules.append(
                l7rule.L7RuleController(db_policy.id)._graph_create(
                    lock_session, r))

        return db_policy