web-3/wildfly/bin/installation-manager.ps1

115 lines
4.3 KiB
PowerShell
Raw Permalink Normal View History

2024-11-26 02:32:07 +03:00
# 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