mirror of
				https://github.com/opennetworkinglab/onos.git
				synced 2025-10-31 08:11:00 +01:00 
			
		
		
		
	Change-Id: Iacf2ca8f8467dc91e696ace5ed30412f7869110a (cherry picked from commit 2b8bcbcd3d0e3e66ee2bc681f0f1dfbb0e2a218f)
		
			
				
	
	
		
			113 lines
		
	
	
		
			3.8 KiB
		
	
	
	
		
			Bash
		
	
	
		
			Executable File
		
	
	
	
	
			
		
		
	
	
			113 lines
		
	
	
		
			3.8 KiB
		
	
	
	
		
			Bash
		
	
	
		
			Executable File
		
	
	
	
	
| #!/bin/bash
 | |
| set -xe
 | |
| 
 | |
| VM_TYPE=${1:-unknown}
 | |
| USE_STRATUM=${2:-false}
 | |
| 
 | |
| cd /home/sdn
 | |
| 
 | |
| cp /etc/skel/.bashrc ~/
 | |
| cp /etc/skel/.profile ~/
 | |
| cp /etc/skel/.bash_logout ~/
 | |
| 
 | |
| #  With Ubuntu 18.04 sometimes .cache is owned by root...
 | |
| mkdir -p ~/.cache
 | |
| sudo chown -hR sdn:sdn ~/.cache
 | |
| 
 | |
| echo 'export JAVA_HOME=$(readlink -f /usr/bin/java | sed "s:bin/java::")' >>  ~/.bash_aliases
 | |
| 
 | |
| if [[ ${VM_TYPE} = "dev" ]]
 | |
| then
 | |
|     git clone https://github.com/opennetworkinglab/onos.git
 | |
|     tee -a ~/.bash_aliases <<'EOF'
 | |
| 
 | |
| # ONOS
 | |
| export ONOS_ROOT=~/onos
 | |
| source ~/onos/tools/dev/bash_profile
 | |
| source ~/onos/tools/dev/p4vm/bm-commands.sh
 | |
| 
 | |
| export OCI=127.0.0.1
 | |
| # Uncomment if ONOS runs on the host system and we access the VM via ssh
 | |
| # export OCI=`echo $SSH_CLIENT | awk '{ print $1}'`
 | |
| 
 | |
| export OC1=$OCI
 | |
| export ONOS_APPS=gui,drivers.bmv2,lldpprovider,hostprovider
 | |
| EOF
 | |
| else
 | |
|     # Tutorial. Install ONOS release.
 | |
|     cp /vagrant/tmp/onos.tar.gz ~/
 | |
|     echo 'export OCI=127.0.0.1' >> ~/.bash_aliases
 | |
|     echo 'export OC1=$OCI' >> ~/.bash_aliases
 | |
|     echo 'export ONOS_INSTANCES="$OC1"' >> ~/.bash_aliases
 | |
|     echo 'export ONOS_WEB_USER=onos' >> ~/.bash_aliases
 | |
|     echo 'export ONOS_WEB_PASS=rocks' >> ~/.bash_aliases
 | |
|     echo 'export ONOS_APPS=gui,drivers.bmv2,lldpprovider,hostprovider' >> ~/.bash_aliases
 | |
|     cp /vagrant/start_onos.sh ~/
 | |
|     chmod +x ~/start_onos.sh
 | |
|     # onos-admin commands
 | |
|     mkdir ~/onos-admin
 | |
|     tar xzf /vagrant/tmp/onos-admin.tar.gz -C onos-admin --strip-components 1
 | |
|     echo 'export PATH=$PATH:~/onos-admin' >> ~/.bash_aliases
 | |
|     # Maven artifacts
 | |
|     mkdir -p ~/.m2/repository/org/onosproject
 | |
|     cp -r /vagrant/tmp/artifacts/* ~/.m2/repository/org/onosproject/
 | |
|     # Export alias for bm-* commands
 | |
|     cp /vagrant/bm-commands.sh ~/
 | |
|     echo 'source ~/bm-commands.sh' >> ~/.bash_aliases
 | |
|     # BMv2 custom Mininet switch classes.
 | |
|     cp /vagrant/tmp/bmv2.py ~/
 | |
|     echo 'export BMV2_MN_PY=~/bmv2.py' >> ~/.bash_aliases
 | |
|     if [[ ${USE_STRATUM} = true ]]
 | |
|     then
 | |
|         # Install stratum_bmv2 binary.
 | |
|         mkdir stratum
 | |
|         tar xzf /vagrant/tmp/stratum_bmv2.tar.gz -C stratum --strip-components 1
 | |
|     fi
 | |
| fi
 | |
| 
 | |
| # Build and install P4 tools
 | |
| DEBUG_FLAGS=true FAST_BUILD=true USE_STRATUM=false bash /vagrant/install-p4-tools.sh
 | |
| echo 'export BMV2_INSTALL=/usr/local' >> ~/.bash_aliases
 | |
| if [[ ${USE_STRATUM} = true ]]
 | |
| then
 | |
|     # Rebuild and install PI/BMv2 with stratum config parameters. Building first
 | |
|     # without stratum parameters is useful to get P4Runtime Python binding
 | |
|     # installed as well as simple_switch_grpc.
 | |
|     rm -rf ~/p4tools/bmv2/.last_built_commit*
 | |
|     rm -rf ~/p4tools/PI/.last_built_commit*
 | |
|     # Build up until bmv2. No need to re-build p4c and others.
 | |
|     DEBUG_FLAGS=true FAST_BUILD=true USE_STRATUM=true bash /vagrant/install-p4-tools.sh bmv2
 | |
|     echo 'export STRATUM_ROOT=~/stratum' >> ~/.bash_aliases
 | |
| fi
 | |
| 
 | |
| # We'll delete bmv2 sources later...
 | |
| cp ~/p4tools/bmv2/tools/veth_setup.sh ~/veth_setup.sh
 | |
| cp ~/p4tools/bmv2/tools/veth_teardown.sh ~/veth_teardown.sh
 | |
| 
 | |
| # Mininet
 | |
| git clone git://github.com/mininet/mininet
 | |
| sudo ~/mininet/util/install.sh -nv
 | |
| 
 | |
| if [[ ${VM_TYPE} = "dev" ]]
 | |
| then
 | |
|     # Trellis - checkout routing repo
 | |
|     git clone https://github.com/opennetworkinglab/routing.git
 | |
|     # Trellis - install Quagga
 | |
|     git clone -b onos-1.11 https://gerrit.opencord.org/quagga
 | |
|     cd quagga
 | |
|     ./bootstrap.sh
 | |
|     ./configure --enable-fpm --sbindir=/usr/lib/quagga enable_user=root enable_group=root
 | |
|     make
 | |
|     sudo make install
 | |
|     cd ..
 | |
|     sudo ldconfig
 | |
|     # Trellis - modify apparmor for the DHCP to run properly
 | |
|     sudo /etc/init.d/apparmor stop
 | |
|     sudo ln -s /etc/apparmor.d/usr.sbin.dhcpd /etc/apparmor.d/disable/
 | |
|     sudo apparmor_parser -R /etc/apparmor.d/usr.sbin.dhcpd
 | |
|     sudo sed -i '30i  /var/lib/dhcp{,3}/dhcpclient* lrw,' /etc/apparmor.d/sbin.dhclient
 | |
|     sudo /etc/init.d/apparmor start
 | |
|     # fabric-p4test
 | |
|     git clone https://github.com/opennetworkinglab/fabric-p4test.git
 | |
| fi
 |