mirror of
https://github.com/OpenNebula/one.git
synced 2025-01-27 14:03:40 +03:00
bug #394: created opensuse init script from opensuse's skeleton
This commit is contained in:
parent
010a26d5cb
commit
6b6390667e
@ -1,195 +1,97 @@
|
||||
#!/bin/bash
|
||||
#
|
||||
# oned This shell script takes care of starting and stopping
|
||||
# the Opennebula subsystem (oned).
|
||||
#
|
||||
# chkconfig: 2345 65 35
|
||||
# description: oned cloud server.
|
||||
# processname: oned
|
||||
# config: /etc/one/oned.conf
|
||||
# pidfile: /var/run/one/oned.pid
|
||||
#!/bin/sh
|
||||
|
||||
# Source function library.
|
||||
. /etc/rc.d/init.d/functions
|
||||
# -------------------------------------------------------------------------- #
|
||||
# Copyright 2002-2010, OpenNebula Project Leads (OpenNebula.org) #
|
||||
# #
|
||||
# Licensed 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. #
|
||||
#--------------------------------------------------------------------------- #
|
||||
|
||||
# Source networking configuration.
|
||||
. /etc/sysconfig/network
|
||||
### BEGIN INIT INFO
|
||||
# Provides: ONE
|
||||
# Required-Start: $remote_fs
|
||||
# Required-Stop: $remote_fs
|
||||
# Default-Start: 3 5
|
||||
# Default-Stop: 0 1 2 6
|
||||
# Short-Description: OpenNebula Init Script
|
||||
# Description: OpenNebula Init Script
|
||||
### END INIT INFO
|
||||
|
||||
# Set the ONE_LOCATION
|
||||
# ONE_LOCATION="/srv/cloud/one"
|
||||
ONE_LOCATION=""
|
||||
ONE_BIN=/usr/bin/one
|
||||
|
||||
prog="oned"
|
||||
|
||||
if [ -z "$ONE_LOCATION" ]; then
|
||||
ONE_PID=/var/run/one/oned.pid
|
||||
ONE_SCHEDPID=/var/run/one/sched.pid
|
||||
ONE_CONF=/etc/one/oned.conf
|
||||
ONE_DB=/var/lib/one/one.db
|
||||
|
||||
ONED=/usr/bin/oned
|
||||
ONE_SCHEDULER=/usr/bin/mm_sched
|
||||
|
||||
LOCK_FILE=/var/lock/one/one
|
||||
else
|
||||
ONE_PID=$ONE_LOCATION/var/oned.pid
|
||||
ONE_SCHEDPID=$ONE_LOCATION/var/sched.pid
|
||||
ONE_CONF=$ONE_LOCATION/etc/oned.conf
|
||||
ONE_DB=$ONE_LOCATION/var/one.db
|
||||
|
||||
ONED=$ONE_LOCATION/bin/oned
|
||||
ONE_SCHEDULER=$ONE_LOCATION/bin/mm_sched
|
||||
|
||||
LOCK_FILE=$ONE_LOCATION/var/.lock
|
||||
fi
|
||||
|
||||
setup()
|
||||
{
|
||||
PORT=`cat $ONE_CONF | grep ^PORT= | cut -d= -f2`
|
||||
|
||||
if [ $? -ne 0 ]; then
|
||||
echo "Can not find PORT in $ONE_CONF."
|
||||
exit 1
|
||||
fi
|
||||
|
||||
if [ -f $LOCK_FILE ]; then
|
||||
if [ -f $ONE_PID ]; then
|
||||
ONEPID=`cat $ONE_PID`
|
||||
ps $ONEPID > /dev/null 2>&1
|
||||
if [ $? -eq 0 ]; then
|
||||
echo "ONE is still running (PID:$ONEPID). Please try 'one stop' first."
|
||||
exit 1
|
||||
fi
|
||||
fi
|
||||
if [ -f $ONE_SCHEDPID ]; then
|
||||
ONESCHEDPID=`cat $ONE_SCHEDPID`
|
||||
ps $ONESCHEDPID > /dev/null 2>&1
|
||||
if [ $? -eq 0 ]; then
|
||||
echo "The scheduler is still running (PID:$ONEPID). Please try 'one stop' first."
|
||||
exit 1
|
||||
fi
|
||||
fi
|
||||
echo "Stale .lock detected. Erasing it."
|
||||
rm $LOCK_FILE
|
||||
fi
|
||||
}
|
||||
|
||||
start()
|
||||
{
|
||||
if [ ! -x "$ONED" ]; then
|
||||
echo "Can not find $ONED."
|
||||
exit 1
|
||||
fi
|
||||
|
||||
if [ ! -x "$ONE_SCHEDULER" ]; then
|
||||
echo "Can not find $ONE_SCHEDULER."
|
||||
exit 1
|
||||
fi
|
||||
|
||||
if [ ! -f "$ONE_DB" ]; then
|
||||
if [ -f "$HOME/.one/one_auth" ]; then
|
||||
. $HOME/.one/one_auth
|
||||
elif [ -z "$ONE_AUTH" ]; then
|
||||
echo "You should have ONE_AUTH set the first time you start"
|
||||
echo "OpenNebula as it is used to set the credentials for"
|
||||
echo "the adminitrator user."
|
||||
exit 1
|
||||
fi
|
||||
fi
|
||||
|
||||
# Start the one daemon
|
||||
daemon --user=oneadmin $ONED -f 2>&1 &
|
||||
|
||||
LASTRC=$?
|
||||
LASTPID=$!
|
||||
|
||||
if [ $LASTRC -ne 0 ]; then
|
||||
echo "Error executing $ONED"
|
||||
exit 1
|
||||
else
|
||||
echo $LASTPID > $ONE_PID
|
||||
fi
|
||||
|
||||
sleep 1
|
||||
ps $LASTPID > /dev/null 2>&1
|
||||
|
||||
if [ $? -ne 0 ]; then
|
||||
echo "Error executing $ONED."
|
||||
exit 1
|
||||
fi
|
||||
|
||||
# Start the scheduler
|
||||
# The following command line arguments are supported by mm_shed:
|
||||
# [-p port] to connect to oned - default: 2633
|
||||
# [-t timer] seconds between two scheduling actions - default: 30
|
||||
# [-m machines limit] max number of VMs managed in each scheduling action
|
||||
# - default: 300
|
||||
# [-d dispatch limit] max number of VMs dispatched in each scheduling action
|
||||
# - default: 30
|
||||
# [-h host dispatch] max number of VMs dispatched to a given host in each
|
||||
# scheduling action - default: 1
|
||||
|
||||
daemon --user=oneadmin $ONE_SCHEDULER -p $PORT -t 30 -m 300 -d 30 -h 1&
|
||||
|
||||
LASTRC=$?
|
||||
LASTPID=$!
|
||||
|
||||
if [ $LASTRC -ne 0 ]; then
|
||||
echo "Error executing $ONE_SCHEDULER"
|
||||
exit 1
|
||||
else
|
||||
echo $LASTPID > $ONE_SCHEDPID
|
||||
fi
|
||||
|
||||
echo "oned and scheduler started"
|
||||
}
|
||||
|
||||
#
|
||||
# Function that stops the daemon/service
|
||||
#
|
||||
stop()
|
||||
{
|
||||
if [ ! -f $ONE_PID ]; then
|
||||
echo "Couldn't find oned process pid."
|
||||
exit 1
|
||||
fi
|
||||
|
||||
if [ ! -f $ONE_SCHEDPID ]; then
|
||||
echo "Couldn't find scheduler process pid."
|
||||
exit 1
|
||||
fi
|
||||
|
||||
# Kill the one daemon
|
||||
|
||||
killproc oned
|
||||
|
||||
# Kill the scheduler
|
||||
|
||||
killproc mm_sched
|
||||
|
||||
# Remove pid files
|
||||
|
||||
rm -f $ONE_PID > /dev/null 2>&1
|
||||
rm -f $ONE_SCHEDPID > /dev/null 2>&1
|
||||
|
||||
echo "oned and scheduler stopped"
|
||||
}
|
||||
. /etc/rc.status
|
||||
|
||||
rc_reset
|
||||
|
||||
case "$1" in
|
||||
start)
|
||||
setup
|
||||
start
|
||||
start)
|
||||
echo -n "Starting ONE "
|
||||
/sbin/startproc -u oneadmin $ONE_BIN start
|
||||
rc_status -v
|
||||
;;
|
||||
stop)
|
||||
stop
|
||||
stop)
|
||||
echo -n "Shutting down ONE "
|
||||
/sbin/startproc -u oneadmin $ONE_BIN stop
|
||||
rc_status -v
|
||||
;;
|
||||
status)
|
||||
status oned
|
||||
status mm_sched
|
||||
try-restart|condrestart)
|
||||
if test "$1" = "condrestart"; then
|
||||
echo "${attn} Use try-restart ${done}(LSB)${attn} rather than condrestart ${warn}(RH)${norm}"
|
||||
fi
|
||||
$0 status
|
||||
if test $? = 0; then
|
||||
$0 restart
|
||||
else
|
||||
rc_reset # Not running is not a failure.
|
||||
fi
|
||||
# Remember status and be quiet
|
||||
rc_status
|
||||
;;
|
||||
*)
|
||||
echo "Usage: one {start|stop|status}" >&2
|
||||
exit 3
|
||||
restart)
|
||||
$0 stop
|
||||
$0 start
|
||||
|
||||
rc_status
|
||||
;;
|
||||
force-reload)
|
||||
$0 try-restart
|
||||
rc_status
|
||||
;;
|
||||
reload)
|
||||
rc_failed 3
|
||||
rc_status -v
|
||||
;;
|
||||
status)
|
||||
echo -n "Checking for service ONE "
|
||||
## Check status with checkproc(8), if process is running
|
||||
## checkproc will return with exit status 0.
|
||||
|
||||
# Return value is slightly different for the status command:
|
||||
# 0 - service up and running
|
||||
# 1 - service dead, but /var/run/ pid file exists
|
||||
# 2 - service dead, but /var/lock/ lock file exists
|
||||
# 3 - service not running (unused)
|
||||
# 4 - service status unknown :-(
|
||||
# 5--199 reserved (5--99 LSB, 100--149 distro, 150--199 appl.)
|
||||
|
||||
# NOTE: checkproc returns LSB compliant status values.
|
||||
/sbin/checkproc $ONE_BIN
|
||||
# NOTE: rc_status knows that we called this init script with
|
||||
# "status" option and adapts its messages accordingly.
|
||||
rc_status -v
|
||||
;;
|
||||
*)
|
||||
echo "Usage: $0 {start|stop|status|try-restart|restart|force-reload|reload}"
|
||||
exit 1
|
||||
;;
|
||||
esac
|
||||
rc_exit
|
||||
|
Loading…
x
Reference in New Issue
Block a user