summaryrefslogtreecommitdiff
path: root/ambari-server/src/main/windows/ambari-server.ps1
diff options
context:
space:
mode:
Diffstat (limited to 'ambari-server/src/main/windows/ambari-server.ps1')
-rw-r--r--ambari-server/src/main/windows/ambari-server.ps1303
1 files changed, 303 insertions, 0 deletions
diff --git a/ambari-server/src/main/windows/ambari-server.ps1 b/ambari-server/src/main/windows/ambari-server.ps1
new file mode 100644
index 0000000000..9afb341b21
--- /dev/null
+++ b/ambari-server/src/main/windows/ambari-server.ps1
@@ -0,0 +1,303 @@
+# 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: ambari-server service
+# processname: ambari-server
+
+$VERSION="1.3.0-SNAPSHOT"
+$HASH="testhash"
+
+switch ($($args[0])){
+ "--version" {
+ echo "$VERSION"
+ exit 0
+ }
+ "--hash" {
+ echo "$HASH"
+ exit 0
+ }
+}
+
+$AMBARI_SERVER="ambari-server"
+$AMBARI_SVC_NAME = "Ambari Server"
+$current_directory = (Get-Item -Path ".\" -Verbose).FullName
+#environment variables used in python, check if they exists, otherwise set them to $current_directory
+#and pass to child python process
+$Env:PYTHONPATH="$current_directory\sbin;$($Env:PYTHONPATH)"
+$Env:PYTHON = "python.exe"
+
+$AMBARI_LOG_DIR="\var\log\ambari-server"
+$OUTFILE_STDOUT=Join-Path -path $AMBARI_LOG_DIR -childpath "ambari-server.stdout"
+$OUTFILE_STDERR=Join-Path -path $AMBARI_LOG_DIR -childpath "ambari-server.stderr"
+$LOGFILE=Join-Path -path $AMBARI_LOG_DIR -childpath "ambari-server.log"
+$AMBARI_SERVER_PY_SCRIPT=Join-Path -path $PSScriptRoot -childpath "sbin\ambari-server-windows.py"
+if($AMBARI_SERVER_PY_SCRIPT.Contains(' '))
+{
+ $AMBARI_SERVER_PY_SCRIPT = """" + $AMBARI_SERVER_PY_SCRIPT + """"
+}
+
+$OK=1
+$NOTOK=0
+
+
+# Reading the environment file
+#if [ -a /var/lib/ambari-server/ambari-env.sh ]; then
+# . /var/lib/ambari-server/ambari-env.sh
+#fi
+
+
+#echo $AMBARI_PASSPHRASE
+
+$retcode=0
+
+function _exit($code)
+{
+ $host.SetShouldExit($code)
+ exit $code
+}
+
+function _detect_python()
+{
+ if(![boolean]$(Get-Command $Env:PYTHON -ErrorAction SilentlyContinue))
+ {
+ echo "ERROR: Can not find python.exe in PATH. Add python executable to PATH and try again."
+ _exit(1)
+ }
+}
+function _detect_local_sql()
+{
+ $services = Get-Service -Include @("MSSQL$*")
+ if($services)
+ {
+ echo "Detected following local SQL Server instances:"
+ foreach ($instance in $services) {
+ echo $instance
+ }
+ } else {
+ echo "WARNING: No local SQL Server instances detected. Make sure you have properly configured SQL Server"
+ }
+}
+
+function _echo([switch]$off)
+{
+ if($off)
+ {
+ try
+ {
+ stop-transcript|out-null
+ }
+ catch [System.InvalidOperationException]
+ {}
+ }
+ else
+ {
+ try
+ {
+ start-transcript|out-null
+ }
+ catch [System.InvalidOperationException]
+ {}
+ }
+}
+
+Function _pstart_brief($cmd_args)
+{
+ #start python with -u to make stdout and stderr unbuffered
+ $arguments = @("-u",$AMBARI_SERVER_PY_SCRIPT) + $cmd_args
+
+ $psi = New-Object System.Diagnostics.ProcessStartInfo
+
+ $psi.RedirectStandardError = $True
+ $psi.RedirectStandardOutput = $True
+
+ $psi.UseShellExecute = $False
+
+ $psi.FileName = $Env:PYTHON
+ $psi.Arguments = $arguments
+ #$psi.WindowStyle = WindowStyle.Hidden
+
+ $process = [Diagnostics.Process]::Start($psi)
+
+ $process.WaitForExit()
+
+ Write-Output $process.StandardOutput.ReadToEnd()
+}
+
+Function _start($cmd_args)
+{
+ echo "Starting $AMBARI_SVC_NAME..."
+ _echo -off
+
+ _pstart_brief($cmd_args)
+
+ $cnt = 0
+ do
+ {
+ Start-Sleep -Milliseconds 250
+ $svc = Get-Service -Name $AMBARI_SVC_NAME
+ $cnt += 1
+ if ($cnt -eq 120)
+ {
+ echo "$AMBARI_SVC_NAME still starting...".
+ return
+ }
+ }
+ until($svc.status -eq "Running")
+
+ echo "$AMBARI_SVC_NAME is running"
+}
+
+Function _pstart($cmd_args)
+{
+ New-Item -ItemType Directory -Force -Path $AMBARI_LOG_DIR | Out-Null
+
+ $arguments = @($AMBARI_SERVER_PY_SCRIPT) + $cmd_args
+
+ $p = New-Object System.Diagnostics.Process
+ $p.StartInfo.UseShellExecute = $false
+ $p.StartInfo.FileName = $Env:PYTHON
+ $p.StartInfo.Arguments = $arguments
+ [void]$p.Start();
+
+ echo "Verifying $AMBARI_SERVER process status..."
+ if (!$p){
+ echo "ERROR: $AMBARI_SERVER start failed"
+ $host.SetShouldExit(-1)
+ exit
+ }
+ echo "Server log at: $LOGFILE"
+
+ $p.WaitForExit()
+}
+
+Function _pstart_ioredir($cmd_args)
+{
+ New-Item -ItemType Directory -Force -Path $AMBARI_LOG_DIR | Out-Null
+
+ #start python with -u to make stdout and stderr unbuffered
+ $arguments = @("-u",$AMBARI_SERVER_PY_SCRIPT) + $cmd_args
+ $process = Start-Process -FilePath $Env:PYTHON -ArgumentList $arguments -WindowStyle Hidden -RedirectStandardError $OUTFILE_STDERR -RedirectStandardOutput $OUTFILE_STDOUT -PassThru
+ echo "Verifying $AMBARI_SERVER process status..."
+ if (!$process){
+ echo "ERROR: $AMBARI_SERVER start failed"
+ $host.SetShouldExit(-1)
+ exit
+ }
+ echo "Server stdout at: $OUTFILE_STDOUT"
+ echo "Server stderr at: $OUTFILE_STDERR"
+ echo "Server log at: $LOGFILE"
+
+ $process.WaitForExit()
+}
+
+Function _upgrade($cmd_args){
+ _pstart($cmd_args)
+}
+
+Function _stop($cmd_args){
+ echo "Stopping $AMBARI_SVC_NAME..."
+ _pstart_brief($cmd_args)
+
+ $cnt = 0
+ do
+ {
+ Start-Sleep -Milliseconds 250
+ $svc = Get-Service -Name $AMBARI_SVC_NAME
+ $cnt += 1
+ if ($cnt -eq 40)
+ {
+ echo "$AMBARI_SVC_NAME still stopping...".
+ return
+ }
+ }
+ until($svc.status -eq "Stopped")
+ echo "$AMBARI_SVC_NAME is stopped"
+}
+
+Function _status($cmd_args){
+ echo "Getting $AMBARI_SVC_NAME status..."
+ _pstart_brief($cmd_args)
+}
+
+# check for python before any action
+_detect_python
+switch ($($args[0])){
+ "start" {_start $args}
+ "pstart"
+ {
+ echo "Starting Ambari Server"
+ _pstart_ioredir $args
+ echo "Ambari Server Start finished"
+ }
+ "stop"
+ {
+ echo "Stopping Ambari Server"
+ _stop $args
+ echo "Ambari Server Stop finished"
+ }
+ "reset"
+ {
+ echo "Reseting Ambari Server"
+ _pstart $args
+ echo "Ambari Server Reset finished"
+ }
+ "restart"
+ {
+ echo "Restarting Ambari Server"
+ _stop @("stop")
+ _start @("start")
+ echo "Ambari Server Restart finished"
+ }
+ "upgrade"
+ {
+ echo "Upgrade Ambari Server"
+ _upgrade $args
+ echo "Ambari Server Upgrade finished"
+ }
+ "status"
+ {
+ echo "Checking Ambari Server status"
+ _status $args
+ }
+# "upgradestack" {_pstart $args}
+ "setup"
+ {
+ echo "Installing Ambari Server"
+ _detect_local_sql
+ _pstart $args
+ echo "Ambari Server Installation finished"
+ }
+ "setup-ldap"
+ {
+ echo "Setting up LDAP for Ambari Server"
+ _pstart $args
+ echo "Ambari Server LDAP setup finished"
+ }
+ "setup-security"
+ {
+ echo "Setting up security for Ambari Server"
+ _pstart $args
+ echo "Ambari Server security setup finished"
+ }
+ default
+ {
+ echo "Usage: ambari-server {start|stop|restart|setup|upgrade|status|upgradestack|setup-ldap|setup-security} [options]"
+ echo "Use ambari-server <action> --help to get details on options available."
+ echo "Or, simply invoke ambari-server.py --help to print the options."
+ $retcode=1
+ }
+}
+
+_exit($retcode)