Hello,

Thank you for the pointers. Seems to be working although with few notes:


1)  It is not possible to keep both connection open:

vpp1 = VPP(jsonfiles)
r1 = vpp1.connect('vpp1', chroot_prefix='vpp1')
print('VPP1 version', vpp1.api.show_version().version.decode().rstrip('\0x00'))
vpp2 = VPP(jsonfiles)
r2 = vpp2.connect('vpp2', chroot_prefix='vpp2')
print('VPP2 version', vpp2.api.show_version().version.decode().rstrip('\0x00'))
vpp1.disconnect()
vpp2.disconnect()

>> DEBUG:vpp_papi:No such message type or failed CRC checksum: 
>> cdp_enable_disable_4eec6097
>> DEBUG:vpp_papi:No such message type or failed CRC checksum: 
>> cdp_enable_disable_reply_e8d4e804
>> ('VPP1 version', u'18.04-release')
>> WARNING:vpp_papi:VPP API client:: vac_connect:285: vl_client_api map rv -1
>>
>> WARNING:vpp_papi:VPP API client:: vac_connect:285: vl_client_api map rv -1
>>
>> Traceback (most recent call last):
>>   File "pythonAPI.py", line 18, in <module>
>>    r2 = vpp2.connect('vpp2', chroot_prefix='vpp')
>>   File "/usr/lib/python2.7/dist-packages/vpp_papi.py", line 690, in connect
>>     async)
>>   File "/usr/lib/python2.7/dist-packages/vpp_papi.py", line 661, in 
>> connect_internal
>>     raise IOError(2, 'Connect failed')
>> IOError: [Errno 2] Connect failed
>> DEBUG:vpp_papi:Cleaning up VPP on exit


On the other side this is possible:

vpp1 = VPP(jsonfiles)
r1 = vpp1.connect('vpp1', chroot_prefix='vpp1')
print('VPP1 version', vpp1.api.show_version().version.decode().rstrip('\0x00'))
vpp1.disconnect()
vpp2 = VPP(jsonfiles)
r2 = vpp2.connect('vpp2', chroot_prefix='vpp2')
print('VPP2 version', vpp2.api.show_version().version.decode().rstrip('\0x00'))
vpp2.disconnect()


>> DEBUG:vpp_papi:No such message type or failed CRC checksum: 
>> cdp_enable_disable_4eec6097
>> DEBUG:vpp_papi:No such message type or failed CRC checksum: 
>> cdp_enable_disable_reply_e8d4e804
>> ('VPP1 version', u'18.04-release')
>> DEBUG:vpp_papi:No such message type or failed CRC checksum: 
>> cdp_enable_disable_4eec6097
>> DEBUG:vpp_papi:No such message type or failed CRC checksum: 
>> cdp_enable_disable_reply_e8d4e804
>> ('VPP2 version', u'18.04-release')



2)  print('VPP1', intf.interface_name.decode().rstrip('\0x00')) broke the 
output of interface 7/0/0

>> ('VPP1', u'TenGigabitEthernet7/0/')


3)  DEBUG:vpp_papi:No such message type or failed CRC checksum: 
cdp_enable_disable_4eec6097

DEBUG:vpp_papi:No such message type or failed CRC checksum: 
cdp_enable_disable_reply_e8d4e804



Looks like some API’s need update



4)  Connect() requires sudo, that means script needs to be running as root.



Peter Mikus
Engineer – Software
Cisco Systems Limited

From: Justin Iurman [mailto:justin.iur...@uliege.be]
Sent: Friday, May 11, 2018 9:59 AM
To: Peter Mikus -X (pmikus - PANTHEON TECHNOLOGIES at Cisco) <pmi...@cisco.com>
Cc: Dave Barach (dbarach) <dbar...@cisco.com>; Damjan Marion 
<dmarion.li...@gmail.com>; vpp-dev <vpp-dev@lists.fd.io>
Subject: Re: [vpp-dev] vpp_api_test via socket file

Peter,

…however, are there any other options to full control 2+ instances of VPP via 
API (not vppctl)? PythonAPI for example [1].

Ole’s answer to the same question:

r = vpp.connect('vpp1', chroot_prefix='name of shared address segment')

Cheers,

Justin

Reply via email to