You've already forked mariadb-columnstore-engine
							
							
				mirror of
				https://github.com/mariadb-corporation/mariadb-columnstore-engine.git
				synced 2025-11-03 17:13:17 +03:00 
			
		
		
		
	
		
			
				
	
	
		
			152 lines
		
	
	
		
			4.1 KiB
		
	
	
	
		
			Bash
		
	
	
		
			Executable File
		
	
	
	
	
			
		
		
	
	
			152 lines
		
	
	
		
			4.1 KiB
		
	
	
	
		
			Bash
		
	
	
		
			Executable File
		
	
	
	
	
#!/bin/bash
 | 
						|
 | 
						|
CPACK_PACKAGE_DESCRIPTION_SUMMARY="Mariadb Columnstore Cluster Manager API"
 | 
						|
SVC_NAME="mariadb-columnstore-cmapi"
 | 
						|
 | 
						|
SVC_CMD=$1
 | 
						|
arg_2=${2}
 | 
						|
 | 
						|
UNIT_PATH=/usr/lib/systemd/system/${SVC_NAME}.service
 | 
						|
TEMPLATE_PATH=./service.template
 | 
						|
TEMP_PATH=./service.temp
 | 
						|
SYSTEMD_ENV_FILE=/etc/columnstore/systemd.env
 | 
						|
 | 
						|
CMAPI_DIR=$(pwd)
 | 
						|
CMAPI_USER=root
 | 
						|
CONFIG_FOLDER=/etc/columnstore
 | 
						|
CONFIG_FILENAME=cmapi_server.conf
 | 
						|
 | 
						|
user_id=$(id -u)
 | 
						|
 | 
						|
# systemctl must run as sudo
 | 
						|
if [ $user_id -ne 0 ]; then
 | 
						|
    echo "Must run as sudo"
 | 
						|
    exit 1
 | 
						|
fi
 | 
						|
 | 
						|
function failed()
 | 
						|
{
 | 
						|
   local error=${1:-Undefined error}
 | 
						|
   echo "Failed: $error" >&2
 | 
						|
   exit 1
 | 
						|
}
 | 
						|
 | 
						|
if [ ! -f "${TEMPLATE_PATH}" ]; then
 | 
						|
    failed "Must run from package folder or install is corrupt"
 | 
						|
fi
 | 
						|
 | 
						|
# check if we run as root
 | 
						|
if [[ $(id -u) != "0" ]]; then
 | 
						|
    echo "Failed: This script requires to run with sudo." >&2
 | 
						|
    exit 1
 | 
						|
fi
 | 
						|
 | 
						|
function install()
 | 
						|
{
 | 
						|
    echo "Creating service in ${UNIT_PATH}"
 | 
						|
    if [ -f "${UNIT_PATH}" ]; then
 | 
						|
        failed "error: exists ${UNIT_PATH}"
 | 
						|
    fi
 | 
						|
 | 
						|
    if [ -f "${TEMP_PATH}" ]; then
 | 
						|
      rm "${TEMP_PATH}" || failed "failed to delete ${TEMP_PATH}"
 | 
						|
    fi
 | 
						|
 | 
						|
    # can optionally use username supplied
 | 
						|
    #run_as_user=${arg_2:-$SUDO_USER}
 | 
						|
    #echo "Run as user: ${run_as_user}"
 | 
						|
 | 
						|
    #run_as_uid=$(id -u ${run_as_user}) || failed "User does not exist"
 | 
						|
    #echo "Run as uid: ${run_as_uid}"
 | 
						|
 | 
						|
    #run_as_gid=$(id -g ${run_as_user}) || failed "Group not available"
 | 
						|
    #echo "gid: ${run_as_gid}"
 | 
						|
 | 
						|
    sed "s/\${CPACK_PACKAGE_DESCRIPTION_SUMMARY}/${CPACK_PACKAGE_DESCRIPTION_SUMMARY}/g; s/\${CMAPI_USER}/${CMAPI_USER}/g; s/\${CMAPI_DIR}/$(echo ${CMAPI_DIR} | sed -e 's/[\/&]/\\&/g')/g;" "${TEMPLATE_PATH}" > "${TEMP_PATH}" || failed "failed to create replacement temp file"
 | 
						|
    mv "${TEMP_PATH}" "${UNIT_PATH}" || failed "failed to copy unit file"
 | 
						|
 | 
						|
    if [ ! -d "${CONFIG_FOLDER}" ]; then
 | 
						|
        mkdir $CONFIG_FOLDER || failed "failed to create configuration folder"
 | 
						|
    fi
 | 
						|
 | 
						|
    if [ ! -f "${CONFIG_FOLDER}/${CONFIG_FILENAME}" ]; then
 | 
						|
        cp cmapi_server/cmapi_server.conf.default "${CONFIG_FOLDER}/${CONFIG_FILENAME}" || failed "failed to copy config file"
 | 
						|
    fi
 | 
						|
 | 
						|
    # Unit file should not be executable and world writable
 | 
						|
    chmod 664 ${UNIT_PATH} || failed "failed to set permissions on ${UNIT_PATH}"
 | 
						|
 | 
						|
    # Since we started with sudo, files will be owned by root. Change this to specific user
 | 
						|
    #chown -R ${run_as_uid}:${run_as_gid} $CMAPI_DIR || failed "failed to set owner for $CMAPI_DIR"
 | 
						|
 | 
						|
    systemctl enable ${SVC_NAME} || failed "failed to enable ${SVC_NAME}"
 | 
						|
 | 
						|
    # chown ${run_as_uid}:${run_as_gid} ${CONFIG_FOLDER}/${CONFIG_FILENAME} || failed "failed to set permission for ${CONFIG_FOLDER}/${CONFIG_FILENAME}"
 | 
						|
    echo PYTHONPATH=${CMAPI_DIR}/deps > ${SYSTEMD_ENV_FILE}
 | 
						|
 | 
						|
    systemctl daemon-reload || failed "failed to reload daemons"
 | 
						|
}
 | 
						|
 | 
						|
function start()
 | 
						|
{
 | 
						|
    systemctl start ${SVC_NAME} || failed "failed to start ${SVC_NAME}"
 | 
						|
    status
 | 
						|
}
 | 
						|
 | 
						|
function stop()
 | 
						|
{
 | 
						|
    systemctl stop ${SVC_NAME} || failed "failed to stop ${SVC_NAME}"
 | 
						|
    status
 | 
						|
}
 | 
						|
 | 
						|
function uninstall()
 | 
						|
{
 | 
						|
    stop
 | 
						|
    systemctl disable ${SVC_NAME} || failed "failed to disable ${SVC_NAME}"
 | 
						|
    rm "${UNIT_PATH}" || failed "failed to delete ${UNIT_PATH}"
 | 
						|
    rm "${SYSTEMD_ENV_FILE}" || failed "failed to delete ${SYSTEMD_ENV_FILE}"
 | 
						|
    systemctl daemon-reload || failed "failed to reload daemons"
 | 
						|
}
 | 
						|
 | 
						|
function status()
 | 
						|
{
 | 
						|
    if [ -f "${UNIT_PATH}" ]; then
 | 
						|
        echo
 | 
						|
        echo "${UNIT_PATH}"
 | 
						|
    else
 | 
						|
        echo
 | 
						|
        echo "not installed"
 | 
						|
        echo
 | 
						|
        return
 | 
						|
    fi
 | 
						|
 | 
						|
    systemctl --no-pager status ${SVC_NAME}
 | 
						|
}
 | 
						|
 | 
						|
function usage()
 | 
						|
{
 | 
						|
    echo
 | 
						|
    echo Usage:
 | 
						|
    echo "./install.sh [install, start, stop, status, uninstall]"
 | 
						|
    echo "Commands:"
 | 
						|
    #echo "   install [user]: Install as Root or specified user"
 | 
						|
    echo "   install: Install"
 | 
						|
    echo "   start: Manually start"
 | 
						|
    echo "   stop: Manually stop"
 | 
						|
    echo "   status: Display intallation status"
 | 
						|
    echo "   uninstall: Uninstall"
 | 
						|
    echo
 | 
						|
}
 | 
						|
 | 
						|
case $SVC_CMD in
 | 
						|
   "install") install;;
 | 
						|
   "status") status;;
 | 
						|
   "uninstall") uninstall;;
 | 
						|
   "start") start;;
 | 
						|
   "stop") stop;;
 | 
						|
   "status") status;;
 | 
						|
   *) usage;;
 | 
						|
esac
 | 
						|
 | 
						|
exit 0
 |