def create_metering_label_rule(self, context, metering_label_rule): label_id = metering_label_rule['metering_label_id'] try: with db_api.CONTEXT_WRITER.using(context): rule = metering_objs.MeteringLabelRule( context, id=uuidutils.generate_uuid(), metering_label_id=label_id, direction=metering_label_rule['direction'], excluded=metering_label_rule['excluded'], ) if metering_label_rule.get('remote_ip_prefix'): rule.remote_ip_prefix = netaddr.IPNetwork( metering_label_rule['remote_ip_prefix']) if metering_label_rule.get('source_ip_prefix'): rule.source_ip_prefix = netaddr.IPNetwork( metering_label_rule['source_ip_prefix']) if metering_label_rule.get('destination_ip_prefix'): rule.destination_ip_prefix = netaddr.IPNetwork( metering_label_rule['destination_ip_prefix']) rule.create() return self._make_metering_label_rule_dict(rule) except db_exc.DBReferenceError: raise metering_exc.MeteringLabelNotFound(label_id=label_id)
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_exc.MeteringLabelNotFound(label_id=label_id) return self._make_metering_label_rule_dict(rule)