Skip to content

Commit

Permalink
Backup configuration file and uninstall if sql-server-agent exists.
Browse files Browse the repository at this point in the history
PiperOrigin-RevId: 722719923
  • Loading branch information
Google Cloud Workload Agent Dev authored and copybara-github committed Feb 3, 2025
1 parent a3b3f3a commit 2ded61d
Show file tree
Hide file tree
Showing 3 changed files with 97 additions and 0 deletions.
27 changes: 27 additions & 0 deletions build/google-cloud-workload-agent-install.ps1
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,7 @@ $INSTALL_DIR = 'C:\Program Files\Google\google-cloud-workload-agent'
$SVC_NAME = 'google-cloud-workload-agent'
$BIN_NAME_EXE = 'google-cloud-workload-agent.exe'
$MONITOR_TASK = 'google-cloud-workload-agent-monitor'
$MIGRATION_TASK = 'google-cloud-workload-agent-migration'
$LOGS_DIR = "$INSTALL_DIR\logs"
$CONF_DIR = "$INSTALL_DIR\conf"
$LOG_FILE ="$LOGS_DIR\google-cloud-workload-agent-install.log"
Expand Down Expand Up @@ -107,6 +108,26 @@ function AddMonitor-Task {
Log-Write "Added scheduled task: $MONITOR_TASK"
}

function AddMigration-Task {
if ($(Get-ScheduledTask $MIGRATION_TASK -ErrorAction Ignore).TaskName) {
Log-Write "Scheduled task exists: $MIGRATION_TASK"
Unregister-ScheduledTask -TaskName $MIGRATION_TASK -Confirm:$false
}
Log-Write "Adding scheduled task: $MIGRATION_TASK"

$action = New-ScheduledTaskAction `
-Execute 'Powershell.exe' `
-Argument "-File `"$INSTALL_DIR\google-cloud-workload-agent-migration.ps1`" -WindowStyle Hidden" `
-WorkingDirectory $INSTALL_DIR
$trigger = New-ScheduledTaskTrigger `
-Once `
-At (Get-Date).AddSeconds(30)
Register-ScheduledTask -Action $action -Trigger $trigger `
-TaskName $MIGRATION_TASK `
-Description $MIGRATION_TASK -User 'System'
Log-Write "Added scheduled task: $MIGRATION_TASK"
}

function StopService-AndTasks {
if ($(Get-ScheduledTask $MONITOR_TASK -ErrorAction Ignore).TaskName) {
Disable-ScheduledTask $MONITOR_TASK
Expand Down Expand Up @@ -150,6 +171,12 @@ try {
AddMonitor-Task
Log-Write 'Monitor task added'

if ((Get-Service google-cloud-sql-server-agent -ErrorAction SilentlyContinue) -ne $null) {
Log-Write 'sql-server-agent service is running, adding migration task'
AddMigration-Task
Log-Write 'Migration task added'
}

$Success = $true
Log-Write 'Successuflly installed the Google Cloud Workload Agent'
# log usage metrics for install
Expand Down
49 changes: 49 additions & 0 deletions build/google-cloud-workload-agent-migration.ps1
Original file line number Diff line number Diff line change
@@ -0,0 +1,49 @@

$ErrorActionPreference = 'Stop'
$INSTALL_DIR = 'C:\Program Files\Google\google-cloud-workload-agent'
$LOGS_DIR = "$INSTALL_DIR\logs"
$LOG_FILE ="$LOGS_DIR\google-cloud-workload-agent-migration.log"

function Log-Write {
#.DESCRIPTION
# Writes to log file.
param (
[string] $log_message
)
Write-Host $log_message
if (-not (Test-Path $LOGS_DIR)) {
return
}
#(Write-EventLog -EntryType Info -Source $EVENT_LOG_NAME -LogName Application `
# -Message $log_message -EventId 1111) | Out-Null
$time_stamp = Get-Date -Format 'yyyy-MM-dd HH:mm:ss'
$logFileSize = $(Get-Item $LOG_FILE -ErrorAction Ignore).Length/1kb
if ($logFileSize -ge 1024) {
Write-Host "Logfilesize: $logFileSize kb, rotating"
Move-Item -Force $LOG_FILE "$LOG_FILE.1"
}
Add-Content -Value ("$time_stamp - $log_message") -path $LOG_FILE
}

try {
Log-Write 'Updating google-cloud-sql-server-agent to the latest version'
# update google-cloud-sql-server-agent to the latest version
googet -noconfirm install google-cloud-sql-server-agent
Log-Write 'google-cloud-sql-server-agent updated'

Log-Write 'Backing up the old configuration file'
# copy and rename the old configuration file
Copy-Item -Path 'C:\Program Files\Google\google-cloud-sql-server-agent\configuration.json' -Destination 'C:\Program Files\Google\google-cloud-workload-agent\conf\cfg_sqlserver_backup.json'
Log-Write 'Backup completed'

Log-Write 'Removing google-cloud-sql-server-agent'
# uninstall google-cloud-sql-server-agent
googet -noconfirm remove google-cloud-sql-server-agent
Log-Write 'google-cloud-sql-server-agent removed'
}
catch {
Log-Write $_.Exception|Format-List -force | Out-String
break
}
finally {
}
21 changes: 21 additions & 0 deletions google-cloud-workload-agent.spec
Original file line number Diff line number Diff line change
Expand Up @@ -65,10 +65,31 @@ if [ -d "/usr/lib/systemd/system/" ]; then
systemctl daemon-reload
fi

%define _sqlserver_agent_installed false
# Backup configuration from google-cloud-sql-server-agent
if `systemctl is-active --quiet google-cloud-sql-server-agent > /dev/null 2>&1`; then
_sqlserver_agent_installed=true
# Backup the configuration file
if [ -f /etc/google-cloud-sql-server-agent/configuration.json ]; then
cp /etc/google-cloud-sql-server-agent/configuration.json /etc/google-cloud-workload-agent/cfg_sqlserver_backup.json
fi
fi

# enable and start the agent
systemctl enable %{name}
systemctl start %{name}

# Uninstall google-cloud-sql-server-agent
if [ "${_sqlserver_agent_installed}" = true ]; then
if command -v yum &> /dev/null; then
nohup sleep 30 && yum remove -y google-cloud-sql-server-agent > /dev/null 2>&1 &
elif command -v zypper &> /dev/null; then
nohup sleep 30 && zypper remove -y google-cloud-sql-server-agent > /dev/null 2>&1 &
else
true
fi
fi

# log usage metrics for install
timeout 30 %{_bindir}/google_cloud_workload_agent logusage -s INSTALLED &> /dev/null || true

Expand Down

0 comments on commit 2ded61d

Please sign in to comment.