def beacon(config):
    '''
    Emit the network statistics of this host.

    Specify thresholds for each network stat
    and only emit a beacon if any of them are
    exceeded.

    Emit beacon when any values are equal to
    configured values.

    .. code-block:: yaml

        beacons:
          network_info:
            - interfaces:
                eth0:
                  type: equal
                  bytes_sent: 100000
                  bytes_recv: 100000
                  packets_sent: 100000
                  packets_recv: 100000
                  errin: 100
                  errout: 100
                  dropin: 100
                  dropout: 100

    Emit beacon when any values are greater
    than configured values.

    .. code-block:: yaml

        beacons:
          network_info:
            - interfaces:
                eth0:
                  type: greater
                  bytes_sent: 100000
                  bytes_recv: 100000
                  packets_sent: 100000
                  packets_recv: 100000
                  errin: 100
                  errout: 100
                  dropin: 100
                  dropout: 100


    '''
    ret = []

    _config = {}
    list(map(_config.update, config))

    log.debug('psutil.net_io_counters %s', psutil.net_io_counters)

    _stats = psutil.net_io_counters(pernic=True)

    log.debug('_stats %s', _stats)
    for interface in _config.get('interfaces', {}):
        if interface in _stats:
            interface_config = _config['interfaces'][interface]
            _if_stats = _stats[interface]
            _diff = False
            for attr in __attrs:
                if attr in interface_config:
                    if 'type' in interface_config and \
                            interface_config['type'] == 'equal':
                        if getattr(_if_stats, attr, None) == \
                                int(interface_config[attr]):
                            _diff = True
                    elif 'type' in interface_config and \
                            interface_config['type'] == 'greater':
                        if getattr(_if_stats, attr, None) > \
                                int(interface_config[attr]):
                            _diff = True
                        else:
                            log.debug('attr %s', getattr(_if_stats,
                                                         attr, None))
                    else:
                        if getattr(_if_stats, attr, None) == \
                                int(interface_config[attr]):
                            _diff = True
            if _diff:
                ret.append({'interface': interface,
                            'network_info': _to_list(_if_stats)})
    return ret
def beacon ( config ) : ret = [ ] _config = { } list ( map ( _config . update , config ) ) log . debug ( 'psutil.net_io_counters %s' , psutil . net_io_counters ) _stats = psutil . net_io_counters ( pernic = True ) log . debug ( '_stats %s' , _stats ) for interface in _config . get ( 'interfaces' , { } ) : if interface in _stats : interface_config = _config [ 'interfaces' ] [ interface ] _if_stats = _stats [ interface ] _diff = False for attr in __attrs : if attr in interface_config : if 'type' in interface_config and interface_config [ 'type' ] == 'equal' : if getattr ( _if_stats , attr , None ) == int ( interface_config [ attr ] ) : _diff = True elif 'type' in interface_config and interface_config [ 'type' ] == 'greater' : if getattr ( _if_stats , attr , None ) > int ( interface_config [ attr ] ) : _diff = True else : log . debug ( 'attr %s' , getattr ( _if_stats , attr , None ) ) else : if getattr ( _if_stats , attr , None ) == int ( interface_config [ attr ] ) : _diff = True if _diff : ret . append ( { 'interface' : interface , 'network_info' : _to_list ( _if_stats ) } ) return ret
Emit the network statistics of this host.

    Specify thresholds for each network stat
    and only emit a beacon if any of them are
    exceeded.

    Emit beacon when any values are equal to
    configured values.

    .. code-block:: yaml

        beacons:
          network_info:
            - interfaces:
                eth0:
                  type: equal
                  bytes_sent: 100000
                  bytes_recv: 100000
                  packets_sent: 100000
                  packets_recv: 100000
                  errin: 100
                  errout: 100
                  dropin: 100
                  dropout: 100

    Emit beacon when any values are greater
    than configured values.

    .. code-block:: yaml

        beacons:
          network_info:
            - interfaces:
                eth0:
                  type: greater
                  bytes_sent: 100000
                  bytes_recv: 100000
                  packets_sent: 100000
                  packets_recv: 100000
                  errin: 100
                  errout: 100
                  dropin: 100
                  dropout: 100