ps/Modules/Alkami.DevOps.Inventory/Public/Update-PlatformElementInventory.ps1
2023-05-30 22:51:22 -07:00

72 lines
2.4 KiB
PowerShell

function Update-PlatformElementInventory {
<#
.SYNOPSIS
Adds or Removes the Element name/versions in BoRG to reflect changes.
#>
[CmdletBinding()]
Param (
[Parameter(Mandatory = $false)]
[AllowNull()]
[object[]]$ElementsToAdd,
[Parameter(Mandatory = $false)]
[AllowNull()]
[object[]]$ElementsToRemove,
[Parameter(Mandatory = $true)]
[string]$EnvironmentTypeName,
[Parameter(Mandatory = $true)]
[string]$PlatformVersionName,
[Parameter(Mandatory = $true)]
[string]$ElementTierName,
[Parameter(Mandatory = $true)]
[string]$BorgUri,
[Parameter(Mandatory = $true)]
[string]$ApiKey
)
#Remove from BoRG
$deletePlatformElementInventory = New-Object System.Collections.ArrayList
foreach ($element in $ElementsToRemove) {
$delete = New-PlatformElementDetailPSObject `
-EnvironmentTypeName $EnvironmentTypeName `
-ElementName $element.Name
$deletePlatformElementInventory.Add($delete) | Out-Null
}
if ($deletePlatformElementInventory.Count -gt 0) {
Write-Host "Deleting [$($deletePlatformElementInventory.Count)] PlatformElementDetail items from BoRG"
(Remove-PlatformElementDetails -PlatformElementDetailArray $deletePlatformElementInventory.ToArray() -BorgUri $BorgUri -ApiKey $ApiKey) | Out-Null
} else {
Write-Host "No PlatformElementDetail items deleted in BoRG"
}
#Add/Update BoRG
$addPlatformElementInventory = New-Object System.Collections.ArrayList
foreach ($element in $ElementsToAdd) {
$detail = New-PlatformElementDetailPSObject `
-EnvironmentTypeName $EnvironmentTypeName `
-PlatformVersionName $PlatformVersionName `
-ElementTierName $ElementTierName `
-ElementName $element.Name `
-ElementVersionName $element.Version
$addPlatformElementInventory.Add($detail) | Out-Null
}
if ($addPlatformElementInventory.Count -gt 0) {
Write-Host "Adding/Updating [$($addPlatformElementInventory.Count)] PlatformElementDetail items in BoRG"
(New-PlatformElementDetails -PlatformElementDetailArray $addPlatformElementInventory.ToArray() -BorgUri $BorgUri -ApiKey $ApiKey) | Out-Null
} else {
Write-Host "No PlatformElementDetail items added to BoRG"
}
}