Generator that parses a line of bgp summary table and returns a dict compatible with NAPALM

    Example line:
    10.2.1.14       4    10  472516  472238      361    0    0     3w1d 9

def bgp_table_parser(bgp_table):
    """Generator that parses a line of bgp summary table and returns a dict compatible with NAPALM

    Example line:
    10.2.1.14       4    10  472516  472238      361    0    0     3w1d 9
    """
    bgp_table = bgp_table.strip()
    for bgp_entry in bgp_table.splitlines():
        bgp_table_fields = bgp_entry.split()

        try:
            if re.search(r"Shut.*Admin", bgp_entry):
                (
                    peer_ip,
                    bgp_version,
                    remote_as,
                    msg_rcvd,
                    msg_sent,
                    _,
                    _,
                    _,
                    uptime,
                    state_1,
                    state_2,
                ) = bgp_table_fields
                state_pfxrcd = "{} {}".format(state_1, state_2)
            else:
                (
                    peer_ip,
                    bgp_version,
                    remote_as,
                    msg_rcvd,
                    msg_sent,
                    _,
                    _,
                    _,
                    uptime,
                    state_pfxrcd,
                ) = bgp_table_fields
        except ValueError:
            raise ValueError(
                "Unexpected entry ({}) in BGP summary table".format(bgp_table_fields)
            )

        is_enabled = True
        try:
            received_prefixes = int(state_pfxrcd)
            is_up = True
        except ValueError:
            received_prefixes = -1
            is_up = False
            if re.search(r"Shut.*Admin", state_pfxrcd):
                is_enabled = False

        if not is_up:
            uptime = -1
        if uptime != -1:
            uptime = bgp_time_conversion(uptime)

        yield {
            peer_ip: {
                "is_enabled": is_enabled,
                "uptime": uptime,
                "remote_as": helpers.as_number(remote_as),
                "is_up": is_up,
                "description": "",
                "received_prefixes": received_prefixes,
            }
        }