Ejemplo n.º 1
0
def get_qos_interfaces():
    """Gets QOS configurations"""

    # Deletes table data
    DbOps.delete_rows('InterfaceQos_front_end', device)
    make_ints_lists = is_instance(get_stats())

    for i in make_ints_lists:
        if i.get("diffserv-target-entry", {}).get("direction", {}):
            for index, stat in enumerate(
                    i.get("diffserv-target-entry",
                          {}).get("diffserv-target-classifier-statistics",
                                  {})):
                DbOps.update_qos_table(
                    device, i['name'],
                    i.get('diffserv-target-entry', {}).get('policy-name', {}),
                    i.get('diffserv-target-entry', {}).get('direction', {}),
                    stat.get('classifier-entry-name', {}),
                    stat.get("classifier-entry-statistics",
                             {}).get("classified-rate", {}),
                    stat.get('classifier-entry-statistics',
                             {}).get('classified-bytes', {}),
                    stat.get('classifier-entry-statistics',
                             {}).get('classified-pkts', {}),
                    stat.get('queuing-statistics', {}).get('output-bytes', {}),
                    stat.get('queuing-statistics', {}).get('output-pkts', {}),
                    stat.get('queuing-statistics', {}).get('drop-pkts', {}),
                    stat.get('queuing-statistics', {}).get('drop-bytes', {}),
                    stat.get('queuing-statistics',
                             {}).get('wred-stats',
                                     {}).get('early-drop-pkts', {}),
                    stat.get('queuing-statistics',
                             {}).get('wred-stats',
                                     {}).get('early-drop-bytes', {}))
Ejemplo n.º 2
0
def get_qos_interfaces():
    """Gets one interface with policies, queues, and stats"""

    policies = collections.defaultdict(list)

    # Deletes table data
    DbOps.delete_rows('InterfaceQos_front_end', device)
    make_ints_lists = is_instance(get_stats())

    for i in make_ints_lists:
        if i.get("diffserv-target-entry", {}).get("direction", {}):
            queues = collections.defaultdict(list)
            policy_detials = {
                'Policy_name':
                i.get('diffserv-target-entry', {}).get('policy-name', {}),
                'Direction':
                i.get('diffserv-target-entry', {}).get('direction', {})
            }
            policies[i['name']].append(policy_detials)
            for index, stat in enumerate(
                    i.get("diffserv-target-entry",
                          {}).get("diffserv-target-classifier-statistics",
                                  {})):
                # Creates list and resets at each iteration
                queue = {
                    'queue_name':
                    stat.get('classifier-entry-name', {}),
                    'rate':
                    stat.get("classifier-entry-statistics",
                             {}).get("classified-rate", {}),
                    'bytes':
                    stat.get('classifier-entry-statistics',
                             {}).get('classified-bytes', {}),
                    'packets':
                    stat.get('classifier-entry-statistics',
                             {}).get('classified-pkts', {}),
                    'out_bytes':
                    stat.get('queuing-statistics', {}).get('output-bytes', {}),
                    'out_packets':
                    stat.get('queuing-statistics', {}).get('output-pkts', {}),
                    'drop_packets':
                    stat.get('queuing-statistics', {}).get('drop-pkts', {}),
                    'drop_bytes':
                    stat.get('queuing-statistics', {}).get('drop-bytes', {}),
                    'wred_drops_pkts':
                    stat.get('queuing-statistics',
                             {}).get('wred-stats',
                                     {}).get('early-drop-pkts', {}),
                    'wred_drop_bytes':
                    stat.get('queuing-statistics',
                             {}).get('wred-stats',
                                     {}).get('early-drop-bytes', {})
                }
                # Write dictionary values to list, add string formatting
                # Write list as value to key which is our policy name
                queues['queues'].append(queue)
                policies[i['name']].append(queues)

    # Read policy dictionaries and write to database
    for k, v in policies.items():
        for stat in v[1]['queues']:
            DbOps.update_qos_table(device, k, v[0]['Policy_name'],
                                   v[0]['Direction'], stat['queue_name'],
                                   stat['rate'], stat['bytes'],
                                   stat['packets'], stat['out_bytes'],
                                   stat['out_packets'], stat['drop_packets'],
                                   stat['drop_bytes'], stat['wred_drops_pkts'],
                                   stat['wred_drop_bytes'])