Skip to content

Commit 5ad7149

Browse files
committed
handle empty array for graphqueries,datatypes and samplequestion in data connectors
1 parent 4c011da commit 5ad7149

File tree

1 file changed

+38
-4
lines changed

1 file changed

+38
-4
lines changed

Tools/Create-Azure-Sentinel-Solution/common/commonFunctions.ps1

Lines changed: 38 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1792,6 +1792,18 @@ function PrepareSolutionMetadata($solutionMetadataRawContent, $contentResourceDe
17921792
}
17931793
return
17941794
}
1795+
1796+
# Define a helper function to handle null or empty arrays
1797+
function Get-ValidArray($inputArray) {
1798+
if ($null -eq $inputArray -or -not $inputArray -or $inputArray.Count -eq 0) {
1799+
if (!$global:baseMainTemplate.variables.TemplateEmptyArray) {
1800+
$global:baseMainTemplate.variables | Add-Member -NotePropertyName "TemplateEmptyArray" -NotePropertyValue "[json('[]')]"
1801+
}
1802+
return "[variables('TemplateEmptyArray')]"
1803+
}
1804+
return $inputArray
1805+
}
1806+
17951807
try {
17961808
# BELOW IS OLD WAY OF CCP CONNECTOR CODE I.E CLV1 WHICH ONLY HAS CONNECTORUICONFIG AND POLLER CONFIG SECTION IN SOURCE
17971809
$ccpPollingConfig = [PSCustomObject] @{}
@@ -1811,6 +1823,19 @@ function PrepareSolutionMetadata($solutionMetadataRawContent, $contentResourceDe
18111823
{
18121824
$ccpPollingConfig = $null
18131825
$ccpConnector = $false
1826+
1827+
if ($null -eq $connectorData.graphQueries -or $connectorData.graphQueries.Count -eq 0) {
1828+
$connectorData.graphQueries = Get-ValidArray $connectorData.graphQueries
1829+
}
1830+
1831+
if ($null -eq $connectorData.dataTypes -or $connectorData.dataTypes.Count -eq 0) {
1832+
$connectorData.dataTypes = Get-ValidArray $connectorData.dataTypes
1833+
}
1834+
1835+
if ($null -eq $connectorData.sampleQueries -or $connectorData.sampleQueries.Count -eq 0) {
1836+
$connectorData.sampleQueries = Get-ValidArray $connectorData.sampleQueries
1837+
}
1838+
18141839
$templateSpecConnectorData = $connectorData
18151840
}
18161841
}
@@ -2081,12 +2106,14 @@ function PrepareSolutionMetadata($solutionMetadataRawContent, $contentResourceDe
20812106
$connectorObj = [PSCustomObject]@{}
20822107
# If direct title is available, assume standard connector format
20832108
if ($connectorData.title) {
2109+
$graphQueriesValue = Get-ValidArray $connectorData.graphQueries;
2110+
$dataTypesValue = Get-ValidArray $connectorData.dataTypes;
20842111
$standardConnectorUiConfig = [PSCustomObject]@{
20852112
title = $connectorData.title;
20862113
publisher = $connectorData.publisher;
20872114
descriptionMarkdown = $connectorData.descriptionMarkdown;
2088-
graphQueries = $connectorData.graphQueries;
2089-
dataTypes = $connectorData.dataTypes;
2115+
graphQueries = $graphQueriesValue;
2116+
dataTypes = $dataTypesValue;
20902117
#connectivityCriterias = $connectorData.connectivityCriterias;
20912118
}
20922119

@@ -2101,7 +2128,8 @@ function PrepareSolutionMetadata($solutionMetadataRawContent, $contentResourceDe
21012128

21022129
if(!$is1PConnector)
21032130
{
2104-
$standardConnectorUiConfig | Add-Member -NotePropertyName "sampleQueries" -NotePropertyValue $connectorData.sampleQueries;
2131+
$sampleQueriesValue = Get-ValidArray $connectorData.sampleQueries
2132+
$standardConnectorUiConfig | Add-Member -NotePropertyName "sampleQueries" -NotePropertyValue $sampleQueriesValue;
21052133
$standardConnectorUiConfig | Add-Member -NotePropertyName "availability" -NotePropertyValue $connectorData.availability;
21062134
$standardConnectorUiConfig | Add-Member -NotePropertyName "permissions" -NotePropertyValue $connectorData.permissions;
21072135
$standardConnectorUiConfig | Add-Member -NotePropertyName "instructionSteps" -NotePropertyValue $connectorData.instructionSteps;
@@ -2179,7 +2207,13 @@ function PrepareSolutionMetadata($solutionMetadataRawContent, $contentResourceDe
21792207
}
21802208
return $typeResult
21812209
}
2182-
$connectorDataType = $(getConnectorDataTypes $connectorData.dataTypes)
2210+
2211+
if($connectorData.dataTypes -eq "[variables('TemplateEmptyArray')]") {
2212+
$connectorDataType = "custom log"
2213+
} else {
2214+
$connectorDataType = $(getConnectorDataTypes $connectorData.dataTypes)
2215+
}
2216+
21832217
$isParserAvailable = $($contentToImport.Parsers -and ($contentToImport.Parsers.Count -gt 0))
21842218
$baseDescriptionText = "This Solution installs the data connector for $solutionName. You can get $solutionName $connectorDataType data in your Microsoft Sentinel workspace. Configure and enable this data connector in the Data Connector gallery after this Solution deploys."
21852219
$customLogsText = "$baseDescriptionText This data connector creates custom log table(s) $(getAllDataTypeNames $connectorData.dataTypes) in your Microsoft Sentinel / Azure Log Analytics workspace."

0 commit comments

Comments
 (0)