Borealis/Launch-API-Collector-Agent.ps1
Nicole Rappe a75c472c98 - Implemented Agent-based Data Collection Nodes
- Added More Dark Theming throughout Borealis
- Added API Data Collector Node
- Added Image Viewer Node
- Added Agent Deployment Script (Powershell)
2025-04-04 03:23:01 -06:00

87 lines
3.1 KiB
PowerShell

# Launch-API-Collector-Agent.ps1
# Run this script with:
# Set-ExecutionPolicy Unrestricted -Scope Process; .\Launch-API-Collector-Agent.ps1
# ---------------------- Initialization & Visuals ----------------------
$symbols = @{
Success = [char]0x2705
Running = [char]0x23F3
Fail = [char]0x274C
Info = [char]0x2139
}
function Write-ProgressStep {
param (
[string]$Message,
[string]$Status = $symbols["Info"]
)
Write-Host "`r$Status $Message... " -NoNewline
}
function Run-Step {
param (
[string]$Message,
[scriptblock]$Script
)
Write-ProgressStep -Message $Message -Status "$($symbols.Running)"
try {
& $Script
if ($LASTEXITCODE -eq 0 -or $?) {
Write-Host "`r$($symbols.Success) $Message "
} else {
throw "Non-zero exit code"
}
} catch {
Write-Host "`r$($symbols.Fail) $Message - Failed: $_ " -ForegroundColor Red
exit 1
}
}
Clear-Host
Write-Host "Deploying Borealis API Collector Agent..." -ForegroundColor Green
Write-Host "===================================================================================="
# ---------------------- Path Definitions ----------------------
$venvFolder = "Borealis-API-Collector-Agent"
$agentSourcePath = "Data\Agent\api-collector-agent.py"
$agentRequirements = "Data\Agent\requirements.txt"
$agentDestinationFolder = "$venvFolder\Agent"
$agentDestinationFile = "$agentDestinationFolder\api-collector-agent.py"
# ---------------------- Create Python Virtual Environment & Copy Agent ----------------------
Run-Step "Create Virtual Python Environment for Collector Agent" {
if (!(Test-Path "$venvFolder\Scripts\Activate")) {
python -m venv $venvFolder | Out-Null
}
# Copy Agent Script
if (Test-Path $agentSourcePath) {
if (Test-Path $agentDestinationFolder) {
Remove-Item -Recurse -Force $agentDestinationFolder | Out-Null
}
New-Item -Path $agentDestinationFolder -ItemType Directory -Force | Out-Null
Copy-Item -Path $agentSourcePath -Destination $agentDestinationFile -Force
} else {
Write-Host "`r$($symbols.Info) Warning: Agent script not found at '$agentSourcePath', skipping copy." -ForegroundColor Yellow
}
. "$venvFolder\Scripts\Activate"
}
# ---------------------- Install Python Dependencies ----------------------
Run-Step "Install Python Dependencies for Collector Agent" {
if (Test-Path $agentRequirements) {
pip install -q -r $agentRequirements 2>&1 | Out-Null
} else {
Write-Host "`r$($symbols.Info) Agent-specific requirements.txt not found at '$agentRequirements', skipping Python packages." -ForegroundColor Yellow
}
}
# ---------------------- Launch Agent ----------------------
Push-Location $venvFolder
Write-Host "`nLaunching Borealis API Collector Agent..." -ForegroundColor Green
Write-Host "===================================================================================="
Write-Host "$($symbols.Running) Starting Agent..." -NoNewline
python "Agent\api-collector-agent.py"
Pop-Location