manifests/collectors/Containers/ContainerGroups.psd1

#
# GENERATED by scripts/ConvertTo-ScoutCollectorDefinition.ps1 from Modules/Public/InventoryModules/Containers/ContainerGroups.ps1 (AB#5660).
# Field expressions are copied verbatim from the original collector and evaluate in an
# equivalent scope -- see docs/design/decisions/declarative-collectors.md.
# Review before trusting; regenerate rather than hand-patch if the source collector changes.
#
@{
    ResourceTypes = @(
        'microsoft.containerinstance/containergroups'
    )

    ResourceTypeMatching = 'Grouped'

    AdditionalFilter = $null

    FilterPreamble = ''

    RowLoopVariable = '1'

    Preamble = @'
$ResUCount = 1
                $sub1 = $SUB | Where-Object { $_.id -eq $1.subscriptionId }
                $data = $1.PROPERTIES
                $Retired = $Retirements | Where-Object { $_.id -eq $1.id }
                if ($Retired)
                    {
                        $RetiredFeature = foreach ($Retire in $Retired)
                            {
                                $RetiredServiceID = $Unsupported | Where-Object {$_.Id -eq $Retired.ServiceID}
                                $tmp0 = [pscustomobject]@{
                                        'RetiredFeature' = $RetiredServiceID.RetiringFeature
                                        'RetiredDate' = $RetiredServiceID.RetirementDate
                                    }
                                $tmp0
                            }
                        $RetiringFeature = if (@($RetiredFeature.RetiredFeature).count -gt 1) { $RetiredFeature.RetiredFeature | ForEach-Object { $_ + ' ,' } }else { $RetiredFeature.RetiredFeature}
                        $RetiringFeature = [string]$RetiringFeature
                        $RetiringFeature = if ($RetiringFeature -like '* ,*') { $RetiringFeature -replace ".$" }else { $RetiringFeature }
 
                        $RetiringDate = if (@($RetiredFeature.RetiredDate).count -gt 1) { $RetiredFeature.RetiredDate | ForEach-Object { $_ + ' ,' } }else { $RetiredFeature.RetiredDate}
                        $RetiringDate = [string]$RetiringDate
                        $RetiringDate = if ($RetiringDate -like '* ,*') { $RetiringDate -replace ".$" }else { $RetiringDate }
                    }
                else
                    {
                        $RetiringFeature = $null
                        $RetiringDate = $null
                    }
                $Tags = if(![string]::IsNullOrEmpty($1.tags.psobject.properties)){$1.tags.psobject.properties}else{'0'}
'@


    AdditionalRowLoops = @(
        @{
            Variable = '2'
            Source = '$data.containers'
            # AB#6845: a container group whose `containers` array is absent -- a failed or
            # mid-creation deployment, which is exactly the group an operator is looking for --
            # produced no row and vanished from the worksheet.
            EmitNullWhenEmpty = $true
            Preamble = ''
        }
    )

    TagLoop = @{
        Variable = 'Tag'
        Source = '$Tags'
        Preamble = ''
    }

    Fields = @(
        @{
            Name = 'ID'
            Expression = '$1.id'
        }
        @{
            Name = 'Subscription'
            Expression = '$sub1.Name'
        }
        @{
            Name = 'Resource Group'
            Expression = '$1.RESOURCEGROUP'
        }
        @{
            Name = 'Instance Name'
            Expression = '$1.NAME'
        }
        @{
            Name = 'Location'
            Expression = '$1.LOCATION'
        }
        @{
            Name = 'Retiring Feature'
            Expression = '$RetiringFeature'
        }
        @{
            Name = 'Retiring Date'
            Expression = '$RetiringDate'
        }
        @{
            Name = 'Instance OS Type'
            Expression = '$data.osType'
        }
        @{
            Name = 'Container Name'
            Expression = '$2.name'
        }
        @{
            Name = 'Container State'
            Expression = '$2.properties.instanceView.currentState.state'
        }
        @{
            Name = 'Container Image'
            Expression = '[string]$2.properties.image'
        }
        @{
            Name = 'Restart Count'
            Expression = '$2.properties.instanceView.restartCount'
        }
        @{
            Name = 'Start Time'
            Expression = '$2.properties.instanceView.currentState.startTime'
        }
        @{
            Name = 'Command'
            Expression = '[string]$2.properties.command'
        }
        @{
            Name = 'Request CPU'
            Expression = '$2.properties.resources.requests.cpu'
        }
        @{
            Name = 'Request Memory (GB)'
            Expression = '$2.properties.resources.requests.memoryInGB'
        }
        @{
            Name = 'IP'
            Expression = '$data.ipAddress.ip'
        }
        @{
            Name = 'Protocol'
            Expression = '[string]$2.properties.ports.protocol'
        }
        @{
            Name = 'Port'
            Expression = '[string]$2.properties.ports.port'
        }
        @{
            Name = 'Resource U'
            Expression = '$ResUCount'
        }
        @{
            Name = 'Tag Name'
            Expression = '[string]$Tag.Name'
        }
        @{
            Name = 'Tag Value'
            Expression = '[string]$Tag.Value'
        }
    )

    Export = @{
        WorksheetName = 'Containers'
        TableNamePrefix = 'ContsTable_'
        Columns = @(
            'Subscription'
            'Resource Group'
            'Instance Name'
            'Location'
            'Retiring Feature'
            'Retiring Date'
            'Instance OS Type'
            'Container Name'
            'Container State'
            'Container Image'
            'Restart Count'
            'Start Time'
            'Command'
            'Request CPU'
            'Request Memory (GB)'
            'IP'
            'Protocol'
            'Port'
            'Resource U'
        )
        TagColumns = @(
            'Tag Name'
            'Tag Value'
        )
        TagColumnsBefore = 'Resource U'
        NumberFormat = '0'
        ConditionalText = @(
            'New-ConditionalText -Range E2:E100 -ConditionalType ContainsText'
        )
    }

    SourceCollector = 'Modules/Public/InventoryModules/Containers/ContainerGroups.ps1'
}