115 lines
4.3 KiB
PowerShell
115 lines
4.3 KiB
PowerShell
# This script is only for internal usage and should not be invoked directly by users from the command line.
|
|
# This script launches the operation to apply a candidate server installation to update or revert.
|
|
# The server JVM writes the required values into the installation-manager.properties file by using InstMgrCandidateStatus.java
|
|
param (
|
|
[Parameter(Mandatory=$true)]
|
|
[string]$installationHome,
|
|
[string]$instMgrLogProperties,
|
|
[string]$instMgrLogFile
|
|
)
|
|
|
|
function Write-Log {
|
|
param (
|
|
[Parameter(Mandatory=$true)]
|
|
[string]$Level,
|
|
[Parameter(Mandatory=$true)]
|
|
[string]$Message,
|
|
[string]$LogName = "[management-cli-installer]"
|
|
)
|
|
$TimeStamp = Get-Date -Format "yyyy-MM-dd HH:mm:ss"
|
|
$logMessage = "$TimeStamp $Level $LogName - $Message"
|
|
if ($Level -eq "INFO") {
|
|
Write-Output $logMessage
|
|
} elseif ($Level -eq "ERROR") {
|
|
Write-Error $logMessage
|
|
} else {
|
|
Write-Debug $logMessage
|
|
}
|
|
}
|
|
Write-Log -Level "INFO" -Message "Executing Management CLI Installer script."
|
|
|
|
# For security, reset the environment variables first
|
|
Set-Variable -Name INST_MGR_COMMAND -Scope Script
|
|
Set-Variable -Name INST_MGR_STATUS -Scope Script
|
|
|
|
$propsFile="$installationHome\bin\installation-manager.properties"
|
|
if ($propsFile -eq $null) {
|
|
Write-Log -Level "ERROR" -Message "Installation Manager properties file not found at $propsFile."
|
|
exit 1
|
|
}
|
|
|
|
if (Test-Path -Path $propsFile -PathType Leaf) {
|
|
# Read Script variable configuration
|
|
$properties = Get-Content $propsFile
|
|
foreach ($property in $properties) {
|
|
if (-not [string]::IsNullOrWhiteSpace($property) -and -not $property.StartsWith("#")) {
|
|
# Split property into key and value
|
|
$key, $value = $property -split '=', 2
|
|
|
|
# Remove leading/trailing whitespace from key and value
|
|
$key = $key.Trim()
|
|
$value = $value.Trim()
|
|
|
|
#Remove scaped characters
|
|
$value = $value -replace '\\(.)', '$1'
|
|
$value = $value -replace '\:(.)', ':$1'
|
|
|
|
Write-Log -Level "DEBUG" -Message "Creating variable: $key=$value"
|
|
Set-Variable -Name $key -Value "$value" -Scope Script
|
|
}
|
|
}
|
|
} else {
|
|
Write-Log -Level "ERROR" -Message "Installation Manager properties file not found at $propsFile."
|
|
exit 1
|
|
}
|
|
|
|
# Check the status is the expected
|
|
if ($INST_MGR_STATUS -eq $null) {
|
|
Write-Log -Level "ERROR" -Message "Cannot read the Installation Manager status."
|
|
exit 1
|
|
}
|
|
|
|
# Check the status is the expected
|
|
if ($INST_MGR_STATUS -ne "PREPARED") {
|
|
Write-Log -Level "ERROR" -Message "The Candidate Server installation is not in the PREPARED status. The current status is $INST_MGR_STATUS."
|
|
exit 1
|
|
}
|
|
|
|
if ($INST_MGR_COMMAND -eq $null) {
|
|
Write-Log -Level "ERROR" -Message "Installation Manager command was not set."
|
|
exit 1
|
|
}
|
|
|
|
$JAVA_OPTS="-Dorg.jboss.boot.log.file=$instMgrLogFile -Dorg.wildfly.prospero.log.file -Dlogging.configuration=file:`"$instMgrLogProperties`" $JAVA_OPTS"
|
|
|
|
Write-Log -Level "INFO" -Message "JAVA_OPTS environment variable: $JAVA_OPTS"
|
|
Write-Log -Level "INFO" -Message "Executing the Installation Manager command: $INST_MGR_COMMAND"
|
|
|
|
if ($INST_MGR_SCRIPT_WINDOWS_COUNTDOWN -eq $null) {
|
|
$INST_MGR_SCRIPT_WINDOWS_COUNTDOWN=10
|
|
}
|
|
|
|
try
|
|
{
|
|
Write-Log -Level "INFO" -Message "Waiting $INST_MGR_SCRIPT_WINDOWS_COUNTDOWN seconds before applying the Candidate Server..."
|
|
Start-Sleep -Seconds $INST_MGR_SCRIPT_WINDOWS_COUNTDOWN
|
|
|
|
Invoke-Expression "& $INST_MGR_COMMAND 2>&1"
|
|
|
|
$exitCode = if ($?) {0} else {1}
|
|
|
|
if ($exitCode -eq 0) {
|
|
Write-Log -Level "INFO" -Message "The Candidate Server was successfully applied."
|
|
$resetStatus = "INST_MGR_STATUS=CLEAN"
|
|
"$resetStatus" | Set-Content -Path $propsFile
|
|
Write-Log -Level "INFO" -Message "Management CLI Installer script finished."
|
|
exit 0
|
|
} elseif ($exitCode -eq 1) {
|
|
Write-Log -Level "ERROR" -Message "The operation was unsuccessful. The candidate server was not installed correctly. Check server logs for more information."
|
|
}
|
|
}
|
|
catch {
|
|
Write-Log -Level "ERROR" -Message "An unknown error occurred trying to launch the installation manager."
|
|
}
|
|
|
|
exit 1 |