示例#1
0
def verify_ldp_database_session(
    device,
    interface=None,
    expected_interface=None,
    label_type='input',
    local_label=None,
    max_time=60,
    check_interval=10,
):
    """Verifies ldp session exists

    Args:
        device (obj): device object
        interface (str): Interface to use in show command
        expected_interface (str): Expected interface
        label_type (str): Database label
        local_label (str): Database local label
        max_time (int): Maximum timeout time
        check_interval (int): Interval to check
    """

    timeout = Timeout(max_time, check_interval)
    if label_type.lower() == 'input':
        label_type = 0
    elif label_type.lower() == 'output':
        label_type = 1

    while timeout.iterate():
        out = None
        try:
            out = device.parse("show ldp database session {interface}".format(
                interface=interface))
        except SchemaEmptyParserError:
            timeout.sleep()
            continue

        ldp_database = Dq(out).get_values('ldp-database', label_type)

        if ldp_database:
            for ldp in ldp_database.get('ldp-binding', []):
                if label_type == 0:
                    if not ldp.get('ldp-label'):
                        continue
                    if local_label and ldp.get('ldp-label') != str(
                            local_label):
                        continue
                else:
                    if ldp.get('ldp-label') != str(local_label):
                        continue
                if ldp.get('ldp-prefix').split('/')[0] != expected_interface:
                    continue

                return True

        timeout.sleep()
    return False
示例#2
0
def get_ldp_database_session(
    device,
    interface=None,
    expected_interface=None,
    label_type='input',
    local_label=None,
):
    """Verifies ldp session exists

    Args:
        device (obj): device object
        interface (str): Interface to use in show command
        expected_interface (str): Expected interface
        label_type (str): Database label. Defaults to input
        local_label (str): Database local label. Defaults to None

    Returns:
        ldp_label ('str'): Will return one value
    """

    if label_type.lower() == 'input':
        label_type = 0
    elif label_type.lower() == 'output':
        label_type = 1

    out = None
    try:
        out = device.parse("show ldp database session {interface}".format(
            interface=interface))
    except SchemaEmptyParserError:
        return

    ldp_database = Dq(out).get_values('ldp-database', label_type)
    if ldp_database:

        for ldp in ldp_database.get('ldp-binding', []):
            if ldp.get('ldp-prefix').split('/')[0] != expected_interface:
                return
            return (ldp.get('ldp-label'))

    return None