papi: add wrapper to validate crc manifest 25/22725/7
authorOle Troan <ot@cisco.com>
Mon, 14 Oct 2019 21:07:06 +0000 (23:07 +0200)
committerPaul Vinciguerra <pvinci@vinciconsulting.com>
Tue, 12 Nov 2019 17:59:18 +0000 (17:59 +0000)
commitc046d709e1e493d20fee80f8c23b4106be67a98e
treecfcaa5abe549fe8dc6103c0df6499a465ae8cbbf
parent31bd035621bdc57deb757613b534bd6c2b032814
papi: add wrapper to validate crc manifest

If a client application is built against 19.08, it can dump the "manifest" of API signatures.
Either the all APIs (--dump) or the APIs it is interested in (--dumpfiltered).

When the developers of said client application wants to verify that it works with VPP 20.01.
It can connect to VPP and --validate the old mainfest file, and will be told a list of
messages (both request and reply) that has changed.

import argparse
from vpp_papi import VPP
import sys
import argparse

parser = argparse.ArgumentParser()
group = parser.add_mutually_exclusive_group()
group.add_argument("--dump", action="store_true")
group.add_argument("--dumpfiltered", action="store_true")
group.add_argument("--validate", action="store_true")
args = parser.parse_args()

vpp = VPP(use_socket=True)

vpp.connect(name='apimanifest')

if args.validate:
    # Verify manifest
    message_table = eval(sys.stdin.read())
    missing = vpp.validate_message_table(message_table)
    print ('Changed message signatures: {}'.format(missing))
elif args.dump:
    # Output manifest to stdout
    print('{}'.format(vpp.dump_message_table()))
elif args.dumpfiltered:
    # Output manifest to stdout
    filterlist = eval(sys.stdin.read())
    print('{}'.format(vpp.dump_message_table_filtered(filterlist)))

vpp.disconnect()

Type: feature
Change-Id: I7e708b36f599ed88e4864970c8593cc2fe5fbf61
Signed-off-by: Ole Troan <ot@cisco.com>
src/vpp-api/python/vpp_papi/vpp_papi.py