blob: 4ed8aa9d1bf01a9c0bfadbcdc8b5c409668687cd [file] [log] [blame]
#!/bin/sh
# Licensed to the Apache Software Foundation (ASF) under one
# or more contributor license agreements. See the NOTICE file
# distributed with this work for additional information
# regarding copyright ownership. The ASF licenses this file
# to you under the Apache License, Version 2.0 (the
# "License"); you may not use this file except in compliance
# with the License. You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing,
# software distributed under the License is distributed on an
# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
# KIND, either express or implied. See the License for the
# specific language governing permissions and limitations
# under the License.
errExit() {
echo $@
exit 1
}
stopHeartbeat() {
pidFile="/var/run/ovs-agent/heartbeat.pid"
if [ -f $pidFile ]; then
pid=`cat $pidFile`
ps -p $pid &>/dev/null
if [ $? -eq 0 ]; then
kill $pid &>/dev/null
fi
fi
}
openPortOnIptables() {
port="$1"
protocol="$2"
chkconfig --list iptables | grep "on"
if [ $? -eq 0 ]; then
iptables-save | grep "A INPUT -p $protocol -m $protocol --dport $port -j ACCEPT" >/dev/null
if [ $? -ne 0 ]; then
iptables -I INPUT 1 -p $protocol --dport $port -j ACCEPT
if [ $? -ne 0 ]; then
exit_with_error "iptables -I INPUT 1 -p $protocol --dport $port -j ACCEPT failed"
fi
echo "iptables:Open $protocol port $port for DHCP"
fi
fi
}
applyPatch() {
patchFile="$1"
level="$2"
[ ! -f $patchFile ] && errExit "Can not find $patchFile"
if [ $? -ne 0 ]; then
pushd /opt/ovs-agent-latest &>/dev/null
test=`patch -p$level --dry-run -N < $patchFile`
if [ $? -ne 0 ]; then
tmp=`mktemp`
echo $test > $tmp
grep "Reversed (or previously applied) patch detected" $tmp &>/dev/null
if [ $? -eq 0 ]; then
# The file has been patched
rm $tmp -f
popd &>/dev/null
return
else
rm $tmp -f
popd &>/dev/null
errExit "Can not apply $patchFile beacuse $test"
fi
fi
patch -p$level < $patchFile
[ $? -ne 0 ] && errExit "Patch to $target failed"
popd &>/dev/null
fi
}
postSetup() {
openPortOnIptables 7777 tcp # for OCFS2, maybe tcp only
openPortOnIptables 7777 udp
openPortOnIptables 3260 tcp # for ISCSI, maybe tcp only
openPortOnIptables 3260 udp
applyPatch "/opt/ovs-agent-latest/OvmPatch.patch" 2
applyPatch "/opt/ovs-agent-latest/OvmDontTouchOCFS2ClusterWhenAgentStart.patch" 1
applyPatch "/opt/ovs-agent-latest/Fixget_storage_reposExceptionDueToWrongReturnValueCheck.patch" 1
stopHeartbeat
/etc/init.d/ovs-agent restart --disable-nowayout
[ $? -ne 0 ] && errExit "Restart ovs agent failed"
exit 0
}
preSetup() {
agentConfig="/etc/ovs-agent/agent.ini"
agentInitScript="/etc/init.d/ovs-agent"
[ ! -f $agentConfig ] && errExit "Can not find $agentConfig"
[ ! -f $agentInitScript ] && errExit "Can not find $agentInitScript"
version=`grep "version=" $agentInitScript | cut -d "=" -f 2`
[ x"$version" != x"2.3" ] && errExit "The OVS agent version is $version, we only support 2.3 now"
# disable SSL
sed -i 's/ssl=enable/ssl=disable/g' $agentConfig
[ $? -ne 0 ] && errExit "configure ovs agent to non ssl failed"
if [ ! -L /opt/ovs-agent-latest ]; then
eval $agentInitScript status | grep 'down' && $agentInitScript start
[ $? -ne 0 ] && errExit "Start ovs agent failed"
[ ! -L /opt/ovs-agent-latest ] && errExit "No link at /opt/ovs-agent-latest"
fi
exit 0
}
[ $# -ne 1 ] && errExit "Usage: configureOvm.sh command"
case "$1" in
preSetup)
preSetup
;;
postSetup)
postSetup
;;
*)
errExit "Valid commands: preSetup postSetup"
esac