示例#1
0
 def _delta_usage_maps(self, current_usage, last_usage):
     """
     Calculate the delta between the 2 usage maps and returns a new
     usage map.
     """
     if len(last_usage) == 0:
         return current_usage
     new_usage = {}
     for key, current in current_usage.items():
         last = last_usage.get(key, None)
         if last is not None:
             rec = RuleRecord()
             rec.MergeFrom(current)  # copy metadata
             if current.bytes_rx < last.bytes_rx or \
                     current.bytes_tx < last.bytes_tx:
                 self.logger.error(
                     'Resetting usage for rule %s, for subscriber %s, '
                     'current usage(rx/tx) %d/%d, last usage %d/%d',
                     rec.sid, rec.rule_id, current.bytes_rx,
                     current.bytes_tx, last.bytes_rx, last.bytes_tx)
                 rec.bytes_rx = last.bytes_rx
                 rec.bytes_tx = last.bytes_tx
             else:
                 rec.bytes_rx = current.bytes_rx - last.bytes_rx
                 rec.bytes_tx = current.bytes_tx - last.bytes_tx
             new_usage[key] = rec
         else:
             new_usage[key] = current
     return new_usage
示例#2
0
def _merge_usage_maps(current_usage, last_usage):
    """
    Merge the usage records from 2 map into a single map
    """
    if len(last_usage) == 0:
        return current_usage
    new_usage = {}
    for key, current in current_usage.items():
        last = last_usage.get(key, None)
        if last is not None:
            rec = RuleRecord()
            rec.MergeFrom(current)  # copy metadata
            rec.bytes_rx = current.bytes_rx + last.bytes_rx
            rec.bytes_tx = current.bytes_tx + last.bytes_tx
            new_usage[key] = rec
        else:
            new_usage[key] = current
    return new_usage
def _delta_usage_maps(current_usage, last_usage):
    """
    Calculate the delta between the 2 usage maps and returns a new
    usage map.
    """
    if len(last_usage) == 0:
        return current_usage
    new_usage = {}
    for key, current in current_usage.items():
        last = last_usage.get(key, None)
        if last is not None:
            rec = RuleRecord()
            rec.MergeFrom(current)  # copy metadata
            rec.bytes_rx = current.bytes_rx - last.bytes_rx
            rec.bytes_tx = current.bytes_tx - last.bytes_tx
            new_usage[key] = rec
        else:
            new_usage[key] = current
    return new_usage