-
Notifications
You must be signed in to change notification settings - Fork 4.6k
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
new resource "azurerm_security_center_assessment" and rename "azurerm…
…_security_center_assessment_metadata" to "azurerm_security_center_assessment_policy" (#10694)
- Loading branch information
Showing
12 changed files
with
1,222 additions
and
5 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
42 changes: 42 additions & 0 deletions
42
azurerm/internal/services/securitycenter/parse/assessment.go
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,42 @@ | ||
package parse | ||
|
||
import ( | ||
"fmt" | ||
"strings" | ||
|
||
"github.com/terraform-providers/terraform-provider-azurerm/azurerm/helpers/azure" | ||
) | ||
|
||
type AssessmentId struct { | ||
TargetResourceID string | ||
Name string | ||
} | ||
|
||
func NewAssessmentID(targetResourceID, name string) AssessmentId { | ||
return AssessmentId{ | ||
TargetResourceID: targetResourceID, | ||
Name: name, | ||
} | ||
} | ||
|
||
func (id AssessmentId) ID() string { | ||
fmtString := "%s/providers/Microsoft.Security/assessments/%s" | ||
return fmt.Sprintf(fmtString, id.TargetResourceID, id.Name) | ||
} | ||
|
||
func AssessmentID(input string) (*AssessmentId, error) { | ||
id, err := azure.ParseAzureResourceID(input) | ||
if err != nil { | ||
return nil, fmt.Errorf("parsing Security Assessment ID %q: %+v", input, err) | ||
} | ||
|
||
parts := strings.Split(input, "/providers/Microsoft.Security/assessments/") | ||
if len(parts) != 2 { | ||
return nil, fmt.Errorf("parsing Security Assessment ID: %q", id) | ||
} | ||
|
||
return &AssessmentId{ | ||
TargetResourceID: parts[0], | ||
Name: parts[1], | ||
}, nil | ||
} |
85 changes: 85 additions & 0 deletions
85
azurerm/internal/services/securitycenter/parse/assessment_test.go
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,85 @@ | ||
package parse | ||
|
||
import ( | ||
"testing" | ||
|
||
"github.com/terraform-providers/terraform-provider-azurerm/azurerm/internal/resourceid" | ||
) | ||
|
||
var _ resourceid.Formatter = AssessmentId{} | ||
|
||
func TestAssessmentIDFormatter(t *testing.T) { | ||
actual := NewAssessmentID("/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/resourceGroup1/providers/Microsoft.Compute/virtualMachineScaleSets/scaleset1", "assessment1").ID() | ||
expected := "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/resourceGroup1/providers/Microsoft.Compute/virtualMachineScaleSets/scaleset1/providers/Microsoft.Security/assessments/assessment1" | ||
if actual != expected { | ||
t.Fatalf("Expected %q but got %q", expected, actual) | ||
} | ||
} | ||
|
||
func TestAssessmentID(t *testing.T) { | ||
testData := []struct { | ||
Name string | ||
Input string | ||
Error bool | ||
Expect *AssessmentId | ||
}{ | ||
{ | ||
Name: "Empty", | ||
Input: "", | ||
Error: true, | ||
}, | ||
{ | ||
Name: "No Security resource provider", | ||
Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/resourceGroup1/providers/Microsoft.Compute/virtualMachineScaleSets/scaleset1", | ||
Error: true, | ||
}, | ||
{ | ||
Name: "No target resource Segment", | ||
Input: "/providers/Microsoft.Security/assessments/assessment1", | ||
Error: true, | ||
}, | ||
{ | ||
Name: "No Security Center Assessment Segment", | ||
Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/resourceGroup1/providers/Microsoft.Compute/virtualMachineScaleSets/scaleset1/providers/Microsoft.Security/", | ||
Error: true, | ||
}, | ||
{ | ||
Name: "No Security Center Assessment name", | ||
Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/resourceGroup1/providers/Microsoft.Compute/virtualMachineScaleSets/scaleset1/providers/Microsoft.Security/assessments/", | ||
Error: true, | ||
}, | ||
{ | ||
Name: "ID of Security Center Assessment", | ||
Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/resourceGroup1/providers/Microsoft.Compute/virtualMachineScaleSets/scaleset1/providers/Microsoft.Security/assessments/assessment1", | ||
Error: false, | ||
Expect: &AssessmentId{ | ||
TargetResourceID: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/resourceGroup1/providers/Microsoft.Compute/virtualMachineScaleSets/scaleset1", | ||
Name: "assessment1", | ||
}, | ||
}, | ||
{ | ||
Name: "Wrong Casing", | ||
Input: "/SUBSCRIPTIONS/12345678-1234-9876-4563-123456789012/RESOURCEGROUPS/RESOURCEGROUP1/PROVIDERS/MICROSOFT.COMPUTE/VIRTUALMACHINESCALESETS/SCALESET1/PROVIDERS/MICROSOFT.SECURITY/ASSESSMENTS/ASSESSMENT1", | ||
Error: true, | ||
}, | ||
} | ||
|
||
for _, v := range testData { | ||
t.Logf("[DEBUG] Testing %q..", v.Name) | ||
|
||
actual, err := AssessmentID(v.Input) | ||
if err != nil { | ||
if v.Expect == nil { | ||
continue | ||
} | ||
t.Fatalf("Expected a value but got an error: %s", err) | ||
} | ||
|
||
if actual.Name != v.Expect.Name { | ||
t.Fatalf("Expected %q but got %q for Name", v.Expect.Name, actual.Name) | ||
} | ||
if actual.TargetResourceID != v.Expect.TargetResourceID { | ||
t.Fatalf("Expected %q but got %q for TargetResourceID", v.Expect.TargetResourceID, actual.TargetResourceID) | ||
} | ||
} | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Oops, something went wrong.