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
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