p4app
p4app copied to clipboard
Mininet crash when "program" is placed in subdirectory
Hi everyone,
I've got a problem with running my own package when P4 source file are not placed in package root.
It seems to be issue with p4apprunner.py
, which set log file from program
section of manifest as is, so single_switch_mininet.py
cannot create log file in non existing directory.
Changing p4apprunner.py resolved issue and also work with example packages.
log_file = os.path.join('/var/log', manifest.program_file + '.log')
to
log_file = os.path.join('/var/log', (os.path.split(manifest.program_file)[-1]) + '.log')
Config:
{
"program": "src/main.p4",
"language": "p4-14",
"targets": {
"debug": {
"use": "mininet",
"num-hosts": 2,
"switch-config": "cfg/p4app.d/sim_config.config"
}
}
}
Run output:
Entering build directory.
Extracting package.
> touch /tmp/p4app_logs/p4s.s1.log
> ln -s /tmp/p4app_logs/p4s.s1.log /tmp/p4s.s1.log
Reading package manifest.
> p4c-bm2-ss --p4v 14 -D _BMV2_ -I include/ "src/main.p4" -o "main.json"
> python2 "/scripts/mininet/single_switch_mininet.py" --log-file "/var/log/src/main.p4.log" --cli-message "mininet_message.txt" --num-hosts 2 --switch-config "cfg/p4app.d/sim_config.config" --behavioral-exe "simple_switch" --json "main.json"
Adding host h1
Adding host h2
*** Error setting resource limits. Mininet's performance may be affected.
*** Creating network
*** Adding hosts:
h1 h2
*** Adding switches:
Traceback (most recent call last):
File "/scripts/mininet/single_switch_mininet.py", line 137, in <module>
main()
File "/scripts/mininet/single_switch_mininet.py", line 88, in main
controller = None)
File "build/bdist.linux-x86_64/egg/mininet/net.py", line 173, in __init__
File "build/bdist.linux-x86_64/egg/mininet/net.py", line 501, in build
File "build/bdist.linux-x86_64/egg/mininet/net.py", line 482, in buildFromTopo
File "build/bdist.linux-x86_64/egg/mininet/net.py", line 259, in addSwitch
File "/scripts/mininet/p4_mininet.py", line 80, in __init__
self.output = open(self.log_file, 'w')
IOError: [Errno 2] No such file or directory: '/var/log/src/main.p4.log'
This change is in my fork of this repo and can be PR here.