blob: 39fdff2594e3177fb544552523425dfe95a18528 [file] [log] [blame]
#!/usr/bin/env bash
#
# 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.
#
# description: Enable/disable the Zeppelin systemd service.
#
# Directory in which the systemd unit files sit.
SYSTEMD_DIR=/etc/systemd/system
function enable_systemd_service()
{
# Where are we in the fs?
OLD_PWD=$(pwd)
# Work out where the script is run from and cd into said directory.
cd "$(dirname "${BASH_SOURCE[0]}")"
# Work out the current directory.
MY_PWD=$(readlink -f .)
# Work out the Zeppelin source directory (go up a directory actually).
ZEPPELIN_DIR=$(dirname "${MY_PWD}")
# Copy the unit file.
cp "${ZEPPELIN_DIR}"/scripts/systemd/zeppelin.systemd "${SYSTEMD_DIR}"
# Swap the template variable with the right directory path.
sed -i -e "s#%ZEPPELIN_DIR%#${ZEPPELIN_DIR}#g;" \
"${SYSTEMD_DIR}"/zeppelin.systemd
# Set up the unit file.
systemctl daemon-reload
systemctl enable zeppelin.service
# Display a help message.
echo "To start Zeppelin using systemd, simply type:
# systemctl start zeppelin
To check the service health:
# systemctl status zeppelin"
# Go back where we came from.
cd "${OLD_PWD}"
}
function disable_systemd_service()
{
# Let's mop up.
systemctl stop zeppelin.service
systemctl disable zeppelin.service
rm "${SYSMTED_DIR}"/zeppelin.systemd
systemctl daemon-reload
systemctl reset-failed
# We're done. Explain what's just happened.
echo "Zeppelin systemd service has been disabled and removed from your system."
}
function check_user()
{
# Are we root?
if [[ $(id -u) -ne 0 ]]; then
echo "Please run this script as root!"
exit -1
fi
}
function check_systemctl()
{
# Is the systemctl command available?
type -P systemctl > /dev/null
if [[ $? -ne 0 ]]; then
echo "ERROR! the 'systemctl' command has not been found!
Please install systemd if you want to use this script."
exit -1
fi
}
USAGE="usage: zeppelin-systemd-service.sh {enable|disable}
enable: enable Zeppelin systemd service.
disable: disable Zeppelin systemd service.
"
# Main method starts from here downwards.
check_user
check_systemctl
case "${1}" in
enable)
enable_systemd_service
;;
disable)
disable_systemd_service
;;
*)
echo "${USAGE}"
esac