This repository was archived by the owner on Mar 18, 2021. It is now read-only.
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathplugin.sh
More file actions
138 lines (118 loc) · 3.29 KB
/
Copy pathplugin.sh
File metadata and controls
138 lines (118 loc) · 3.29 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
# configure_trema - Set config files, create data dirs, etc
function configure_trema {
local _pwd=$(pwd)
# prepare dir
for d in $TREMA_SS_ETC_DIR $TREMA_SS_DB_DIR $TREMA_SS_SCRIPT_DIR; do
sudo mkdir -p $d
sudo chown -R `whoami` $d
done
sudo mkdir -p $TREMA_TMP_DIR
# Initialize databases for Sliceable Switch
cd $TREMA_SS_DIR
rm -f filter.db slice.db
./create_tables.sh
mv filter.db slice.db $TREMA_SS_DB_DIR
sed -i -e "s|/home/sliceable_switch/db|$TREMA_SS_DB_DIR|" restapi.psgi
cd $_pwd
cp $TREMA_SS_DIR/sliceable_switch_null.conf $TREMA_SS_CONFIG
sed -i -e "s|^\$apps_dir.*$|\$apps_dir = \"$TREMA_APPS_DIR\"|" \
-e "s|^\$db_dir.*$|\$db_dir = \"$TREMA_SS_DB_DIR\"|" \
$TREMA_SS_CONFIG
}
function gem_install {
[[ "$OFFLINE" = "True" ]] && return
[ -n "$RUBYGEMS_CMD" ] || get_gem_command
local pkg=$1
$RUBYGEMS_CMD list --local | grep "^${pkg} " && return
local gem_opts
if [ -n "$http_proxy" ]; then
gem_opts="-p $http_proxy"
fi
sudo $RUBYGEMS_CMD install $gem_opts $pkg
}
function gem_version {
[ -n "$RUBYGEMS_CMD" ] || get_gem_command
$RUBYGEMS_CMD --version
}
function get_gem_command {
# Trema requires ruby 1.8 on Ubuntu 12.04.
# Since Ubuntu 14.04, Trema works with newer versions of Ruby.
RUBYGEMS_CMD=$(which gem1.8 || which gem)
if [ -z "$RUBYGEMS_CMD" ]; then
echo "Warning: ruby gems command not found."
fi
}
function get_required_packages {
# Trema
cat <<EOF
make
ruby
ruby-dev
libpcap-dev
libsqlite3-dev
libglib2.0-dev
EOF
if [[ "$os_CODENAME" == "precise" ]]; then
echo rubygems
else
echo rubygems-integration
fi
# Sliceable Switch
cat <<EOF
sqlite3
libdbi-perl
libdbd-sqlite3-perl
libjson-perl
libplack-perl
EOF
}
function install_trema {
local packages=$(get_required_packages)
install_package $packages
# rubygems on Ubuntu 14.04 has a bug which prevents Trema installation.
if [[ "$os_CODENAME" == "trusty" ]]; then
local gem_ver=$(gem_version)
if [[ "$gem_ver" == "1.8.23" ]]; then
gem_install rubygems-update
sudo update_rubygems
fi
fi
# Trema
gem_install trema
# Sliceable Switch
git_clone $TREMA_APPS_REPO $TREMA_APPS_DIR $TREMA_APPS_BRANCH
make -C $TREMA_APPS_DIR/topology
make -C $TREMA_APPS_DIR/flow_manager
make -C $TREMA_APPS_DIR/sliceable_switch
}
function start_trema {
enable_service trema-ss
screen_it trema-ss "cd $TREMA_SS_DIR && plackup -r -p $OFC_API_PORT restapi.psgi"
if ! timeout $SERVICE_TIMEOUT sh -c "while ! wget --no-proxy -q -O- http://$OFC_API_HOST:$OFC_API_PORT/networks; do sleep 1; done"; then
die $LINENO "Trema Sliceable Switch REST API did not start"
fi
sudo LOGGING_LEVEL=$TREMA_LOG_LEVEL TREMA_TMP=$TREMA_TMP_DIR \
trema run -d -c $TREMA_SS_CONFIG
}
function stop_trema {
sudo TREMA_TMP=$TREMA_TMP_DIR trema killall
}
function cleanup_trema {
:
}
if [[ "$1" == "stack" && "$2" == "pre-install" ]]; then
install_trema
elif [[ "$1" == "stack" && "$2" == "post-config" ]]; then
configure_trema
start_trema
fi
if [[ "$1" == "unstack" ]]; then
cleanup_trema
stop_trema
fi
if [[ "$1" == "clean" ]]; then
cleanup_trema
fi
## Local variables:
## mode: shell-script
## End: