Skip to content

Commit

Permalink
Merge pull request #61 from Azure/feature/heinrich/autodoc
Browse files Browse the repository at this point in the history
Fixing bugs with built-in versus custom assignments and autodoc
  • Loading branch information
techlake authored Aug 26, 2022
2 parents fb1cc5a + a3e8006 commit 937f29d
Show file tree
Hide file tree
Showing 22 changed files with 1,041 additions and 930 deletions.
10 changes: 6 additions & 4 deletions Scripts/Helpers/Build-AzPolicyAssignmentsPlan.ps1
Original file line number Diff line number Diff line change
Expand Up @@ -130,14 +130,15 @@ function Build-AzPolicyAssignmentsPlan {
}
else {
$initiativeDefinition = $allInitiativeDefinitions[$name]
$parametersInDefinition = $initiativeDefinition.Parameter
if ($customInitiativeDefinitions.ContainsKey($name)) {
# is custom
$policyDefinitionId = $rootScopeId + "/providers/Microsoft.Authorization/policySetDefinitions/" + $name
$parametersInDefinition = $initiativeDefinition.Parameter
}
else {
# is built in
$policyDefinitionId = "/providers/Microsoft.Authorization/policySetDefinitions/" + $name
$parametersInDefinition = $initiativeDefinition.parameters
}
$policySpec = @{ initiativeId = $policyDefinitionId }
if ($initiativeNeededRoleDefinitionIds.ContainsKey($name)) {
Expand All @@ -159,14 +160,15 @@ function Build-AzPolicyAssignmentsPlan {
}
else {
$policyDefinition = $allPolicyDefinitions[$name]
$parametersInDefinition = $policyDefinition.Parameter
if ($customPolicyDefinitions.ContainsKey($name)) {
# is custom
$policyDefinitionId = $rootScopeId + "/providers/Microsoft.Authorization/policyDefinitions/" + $name
$parametersInDefinition = $policyDefinition.Parameter
}
else {
# is built in
$policyDefinitionId = "/providers/Microsoft.Authorization/policyDefinitions/" + $name
$parametersInDefinition = $policyDefinition.parameters
}
$policySpec = @{ policyId = $policyDefinitionId }
if ($policyNeededRoleDefinitionIds.ContainsKey($name)) {
Expand Down Expand Up @@ -422,8 +424,8 @@ function Build-AzPolicyAssignmentsPlan {
)
}
}
}
}

} }
Write-Information ""
Write-Information ""

Expand Down
8 changes: 6 additions & 2 deletions Scripts/Helpers/Build-AzPolicyDefinitionsPlan.ps1
Original file line number Diff line number Diff line change
Expand Up @@ -71,20 +71,24 @@ function Build-AzPolicyDefinitionsPlan {
$Mode = $policyObject.properties.mode
}



# Constructing policy definitions parameters for splatting
$policyDefinitionConfig = @{
Name = $name
DisplayName = $displayName
Policy = $policyObject.properties.policyRule
Parameter = $policyObject.properties.parameters
Metadata = $policyObject.properties.metadata
Mode = $Mode
}
if ($null -ne $policyObject.properties.metadata) {
$null = $policyDefinitionConfig.Add("Metadata", $policyObject.properties.metadata)
}

# Calculate roleDefinitionIds for this Policy
if ($policyObject.properties.policyRule.then.details -and $policyObject.properties.policyRule.then.details.roleDefinitionIds) {
$roleDefinitionIdsInPolicy = $policyObject.properties.policyRule.then.details.roleDefinitionIds
$policyNeededRoleDefinitionIds.Add($name, $roleDefinitionIdsInPolicy)
$null = $policyNeededRoleDefinitionIds.Add($name, $roleDefinitionIdsInPolicy)
}

# Adding SubscriptionId or ManagementGroupName value (depending on the parameter set in use)
Expand Down
87 changes: 0 additions & 87 deletions Scripts/Helpers/Convert-AssignmentsInfoToFlatPolicyList.ps1

This file was deleted.

14 changes: 0 additions & 14 deletions Scripts/Helpers/Convert-EffectToShortForm.ps1

This file was deleted.

37 changes: 18 additions & 19 deletions Scripts/Helpers/Convert-EffectToString.ps1
Original file line number Diff line number Diff line change
Expand Up @@ -8,27 +8,26 @@ function Convert-EffectToString {
)

[string] $text = ""
$effectShort = Convert-EffectToShortForm -effect $effect
if ($Markdown.IsPresent) {
if ($allowedValues.Count -eq 1) {
$text = "***$effectShort***"
}
else {
$text = "**$effectShort**"
}
foreach ($allowed in $allowedValues) {
if ($allowed -cne $effect) {
$effectShort = Convert-EffectToShortForm -effect $allowed
$text += "<br/>*$effectShort*"
if ($null -ne $effect) {
if ($Markdown.IsPresent) {
if ($allowedValues.Count -eq 1) {
$text = "***$effect***"
}
else {
$text = "**$effect**"
}
foreach ($allowed in $allowedValues) {
if ($allowed -cne $effect) {
$text += "<br/>*$allowed*"
}
}
}
}
else {
$text += $effectShort
foreach ($allowed in $allowedValues) {
if ($allowed -cne $effect) {
$effectShort = Convert-EffectToShortForm -effect $allowed
$text += ", $effectShort"
else {
$text += $effect
foreach ($allowed in $allowedValues) {
if ($allowed -cne $effect) {
$text += ", $allowed"
}
}
}
}
Expand Down
77 changes: 53 additions & 24 deletions Scripts/Helpers/Convert-ParametersToString.ps1
Original file line number Diff line number Diff line change
Expand Up @@ -4,41 +4,70 @@
function Convert-ParametersToString {
param (
[hashtable] $parameters,
[switch] $Markdown
[string] $outputType
)

[string] $text = ""
[hashtable] $csvParametersHt = @{}
if ($parameters.Count -gt 0) {
[string[]] $parameterList = @()
foreach ($parameterName in $parameters.Keys) {
$parameter = $parameters.$parameterName
$multiUse = $parameter.multiUse
$isEffect = $parameter.isEffect
$value = $parameter.value
if ($null -eq $value) {
$value = "undefined"
if ($parameter.defaultValue) {
$value = $parameter.defaultValue
}

$defaultValue = $parameter.defaultValue
$definition = $parameter.definition
$initiativeDisplayNames = $parameter.initiatives
if ($null -eq $value -and $null -eq $defaultValue) {
$noDefault = $true
$value = "++ no default ++"
}
$value = ConvertTo-Json $value -Compress
$parameterList += "$parameterName=``$value``"
}
if ($Markdown.IsPresent) {
foreach ($parameterText in $parameterList) {
$text += "<br/>&nbsp;&nbsp;&nbsp;&nbsp;*$parameterText*"
elseif ($null -eq $value) {
$value = $defaultValue
}
}
else {
$newLine = ""
foreach ($parameterText in $parameterList) {
$text += "$newLine$parameterText"
$newLine = "; "
switch ($outputType) {
markdown {
if ($value -is [string]) {
$text += "<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*$parameterName = ``$value``*"
}
else {
$json = ConvertTo-Json $value -Depth 100 -Compress
$jsonTruncated = $json
if ($json.length -gt 40) {
$jsonTruncated = $json.substring(0, 40) + "..."
}
$text += "<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*$parameterName = ``$jsonTruncated``*"
}
}
csvValues {
if (-not ($multiUse -or $isEffect)) {
$null = $csvParametersHt.Add($parameterName, $value)
}
}
csvDefinitions {
if (-not $multiUse) {
$null = $csvParametersHt.Add($parameterName, $definition)
}
}
jsonc {
$parameterString = "`"$($parameterName)`": $(ConvertTo-Json $value -Depth 100 -Compress), // '$($initiativeDisplayNames -Join "', '")'"
if ($multiUse) {
$text += "`n // Multi-use: ($parameterString)"
}
elseif ($noDefault) {
$text += "`n // No-default: ($parameterString)"
}
else {
$text += "`n $($parameterString),"
}
}
Default {
Write-Error "Convert-ParametersToString: unknown outputType '$outputType'" -ErrorAction Stop
}
}
}
}
else {
if (-not $Markdown.IsPresent) {
$text = "n/a"
if (($outputType -eq "csvValues" -or $outputType -eq "csvDefinitions") -and $csvParametersHt.Count -gt 0) {
$text = ConvertTo-Json $csvParametersHt -Depth 100 -Compress
}
}
return $text
Expand Down
Loading

0 comments on commit 937f29d

Please sign in to comment.