예제 #1
0
    def get_metering_label(self, context, label_id, fields=None):
        try:
            metering_label = self._get_by_id(context, MeteringLabel, label_id)
        except orm.exc.NoResultFound:
            raise metering.MeteringLabelNotFound(label_id=label_id)

        return self._make_metering_label_dict(metering_label, fields)
예제 #2
0
    def delete_metering_label(self, context, label_id):
        with context.session.begin(subtransactions=True):
            try:
                label = self._get_by_id(context, MeteringLabel, label_id)
            except orm.exc.NoResultFound:
                raise metering.MeteringLabelNotFound(label_id=label_id)

            context.session.delete(label)
예제 #3
0
    def delete_metering_label(self, context, label_id):
        with db_api.context_manager.writer.using(context):
            try:
                label = self._get_by_id(context, metering_models.MeteringLabel,
                                        label_id)
            except orm.exc.NoResultFound:
                raise metering.MeteringLabelNotFound(label_id=label_id)

            context.session.delete(label)
예제 #4
0
    def create_metering_label_rule(self, context, metering_label_rule):
        m = metering_label_rule['metering_label_rule']
        try:
            with context.session.begin(subtransactions=True):
                label_id = m['metering_label_id']
                ip_prefix = m['remote_ip_prefix']
                direction = m['direction']
                excluded = m['excluded']

                self._validate_cidr(context, label_id, ip_prefix, direction,
                                    excluded)
                metering_db = MeteringLabelRule(id=uuidutils.generate_uuid(),
                                                metering_label_id=label_id,
                                                direction=direction,
                                                excluded=m['excluded'],
                                                remote_ip_prefix=ip_prefix)
                context.session.add(metering_db)
        except db_exc.DBReferenceError:
            raise metering.MeteringLabelNotFound(label_id=label_id)

        return self._make_metering_label_rule_dict(metering_db)
예제 #5
0
    def create_metering_label_rule(self, context, metering_label_rule):
        m = metering_label_rule['metering_label_rule']
        try:
            with db_api.context_manager.writer.using(context):
                label_id = m['metering_label_id']
                ip_prefix = m['remote_ip_prefix']
                direction = m['direction']
                excluded = m['excluded']

                self._validate_cidr(context, label_id, ip_prefix, direction,
                                    excluded)
                rule = metering_objs.MeteringLabelRule(
                    context,
                    id=uuidutils.generate_uuid(),
                    metering_label_id=label_id,
                    direction=direction,
                    excluded=m['excluded'],
                    remote_ip_prefix=netaddr.IPNetwork(ip_prefix))
                rule.create()
        except db_exc.DBReferenceError:
            raise metering.MeteringLabelNotFound(label_id=label_id)

        return self._make_metering_label_rule_dict(rule)
예제 #6
0
 def delete_metering_label(self, context, label_id):
     deleted = metering_objs.MeteringLabel.delete_objects(context,
                                                          id=label_id)
     if not deleted:
         raise metering.MeteringLabelNotFound(label_id=label_id)
예제 #7
0
 def _get_metering_label(self, context, label_id):
     metering_label = metering_objs.MeteringLabel.get_object(context,
                                                             id=label_id)
     if not metering_label:
         raise metering.MeteringLabelNotFound(label_id=label_id)
     return metering_label