nsg-ethz / p4-utils

Extension to Mininet that makes P4 networks easier to build
GNU General Public License v2.0
175 stars 65 forks source link

CLI option 'p4switches_reboot' failes if 'cli_input' not given in config #4

Closed fschleiss closed 6 years ago

fschleiss commented 6 years ago

When cli_input is not defined in p4app.json for a switch, the Mininet CLI fails to reboot the switches.

How to reproduce:

Error Log

Stopping P4 switch s5.
Starting P4 switch s5.
simple_switch -i 1@s5-eth1 -i 2@s5-eth2 -i 3@s5-eth3 --thrift-port 9094 --nanolog ipc:///tmp/bm-4-log.ipc --device-id 4 p4src/main.json --log-console >/home/user/p4/data_plane_driven_network_convergence/code/v4/p4/log/s5.log
P4 switch s5 has been started.
Traceback (most recent call last):
  File "/usr/local/bin/p4run", line 11, in <module>
    load_entry_point('p4utils', 'console_scripts', 'p4run')()
  File "/home/user/p4/data_plane_driven_network_convergence/code/p4-utils/p4utils/p4run.py", line 489, in main
    app.run_app()
  File "/home/user/p4/data_plane_driven_network_convergence/code/p4-utils/p4utils/p4run.py", line 225, in run_app
    self.do_net_cli()
  File "/home/user/p4/data_plane_driven_network_convergence/code/p4-utils/p4utils/p4run.py", line 371, in do_net_cli
    P4CLI(self.net, conf_file=self.conf_file)
  File "/home/user/p4/data_plane_driven_network_convergence/code/p4-utils/p4utils/mininetlib/cli.py", line 21, in __init__
    CLI.__init__(self, *args, **kwargs)
  File "build/bdist.linux-x86_64/egg/mininet/cli.py", line 68, in __init__
  File "build/bdist.linux-x86_64/egg/mininet/cli.py", line 103, in run
  File "/usr/lib/python2.7/cmd.py", line 142, in cmdloop
    stop = self.onecmd(line)
  File "/usr/lib/python2.7/cmd.py", line 221, in onecmd
    return func(arg)
  File "/home/user/p4/data_plane_driven_network_convergence/code/p4-utils/p4utils/mininetlib/cli.py", line 176, in do_p4switches_reboot
    self.do_p4switch_start(line=line)
  File "/home/user/p4/data_plane_driven_network_convergence/code/p4-utils/p4utils/mininetlib/cli.py", line 151, in do_p4switch_start
    commands_path = switch_conf['cli_input']
KeyError: 'cli_input'