Skip to content

Commit

Permalink
Adds new resource azurerm_security_center_automation for automation a…
Browse files Browse the repository at this point in the history
…nd data export (#8781)

Co-authored-by: jackofallops <[email protected]>
  • Loading branch information
benc-uk and jackofallops authored Nov 17, 2020
1 parent 7394bd3 commit 424faca
Show file tree
Hide file tree
Showing 7 changed files with 1,769 additions and 0 deletions.
5 changes: 5 additions & 0 deletions azurerm/internal/services/securitycenter/client/client.go
Original file line number Diff line number Diff line change
Expand Up @@ -12,6 +12,7 @@ type Client struct {
AdvancedThreatProtectionClient *security.AdvancedThreatProtectionClient
AutoProvisioningClient *security.AutoProvisioningSettingsClient
SettingClient *security.SettingsClient
AutomationsClient *security.AutomationsClient
}

func NewClient(o *common.ClientOptions) *Client {
Expand All @@ -35,12 +36,16 @@ func NewClient(o *common.ClientOptions) *Client {
SettingClient := security.NewSettingsClientWithBaseURI(o.ResourceManagerEndpoint, o.SubscriptionId, ascLocation)
o.ConfigureClient(&SettingClient.Client, o.ResourceManagerAuthorizer)

AutomationsClient := security.NewAutomationsClientWithBaseURI(o.ResourceManagerEndpoint, o.SubscriptionId, ascLocation)
o.ConfigureClient(&AutomationsClient.Client, o.ResourceManagerAuthorizer)

return &Client{
ContactsClient: &ContactsClient,
PricingClient: &PricingClient,
WorkspaceClient: &WorkspaceClient,
AdvancedThreatProtectionClient: &AdvancedThreatProtectionClient,
AutoProvisioningClient: &AutoProvisioningClient,
SettingClient: &SettingClient,
AutomationsClient: &AutomationsClient,
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,33 @@
package parse

import (
"fmt"

"github.com/terraform-providers/terraform-provider-azurerm/azurerm/helpers/azure"
)

type SecurityCenterAutomationId struct {
AutomationName string
ResourceGroup string
}

func SecurityCenterAutomationID(input string) (*SecurityCenterAutomationId, error) {
id, err := azure.ParseAzureResourceID(input)
if err != nil {
return nil, fmt.Errorf("Unable to parse Security Center Automation ID %q: %+v", input, err)
}

automation := SecurityCenterAutomationId{
ResourceGroup: id.ResourceGroup,
}

if automation.AutomationName, err = id.PopSegment("automations"); err != nil {
return nil, err
}

if err := id.ValidateNoEmptySegments(input); err != nil {
return nil, err
}

return &automation, nil
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,67 @@
package parse

import "testing"

func TestSecurityCentreAutomationID(t *testing.T) {
testData := []struct {
Name string
Input string
Error bool
Expect *SecurityCenterAutomationId
}{
{
Name: "Empty",
Input: "",
Error: true,
},
{
Name: "No Resource Group",
Input: "/subscriptions/00000000-0000-0000-0000-000000000000/",
Error: true,
},
{
Name: "No Automation Segment",
Input: "/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/testRG1/providers/Microsoft.Security/",
Error: true,
},
{
Name: "No Automation Value",
Input: "/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/testRG1/providers/Microsoft.Security/automations/",
Error: true,
},
{
Name: "Security Center Automation ID",
Input: "/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/testRG1/providers/Microsoft.Security/automations/testAutomation",
Expect: &SecurityCenterAutomationId{
ResourceGroup: "testRG1",
AutomationName: "testAutomation",
},
},
{
Name: "Wrong Case",
Input: "/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/testRG1/providers/Microsoft.Security/Automations/testAutomation",
Error: true,
},
}

for _, v := range testData {
t.Logf("[DEBUG] Testing %q", v.Name)

actual, err := SecurityCenterAutomationID(v.Input)
if err != nil {
if v.Error {
continue
}

t.Fatalf("Expected a value but got an error: %s", err)
}

if actual.AutomationName != v.Expect.AutomationName {
t.Fatalf("Expected %q but got %q for Automation Name", v.Expect.AutomationName, actual.AutomationName)
}

if actual.ResourceGroup != v.Expect.ResourceGroup {
t.Fatalf("Expected %q but got %q for Resource Group Name", v.Expect.ResourceGroup, actual.ResourceGroup)
}
}
}
1 change: 1 addition & 0 deletions azurerm/internal/services/securitycenter/registration.go
Original file line number Diff line number Diff line change
Expand Up @@ -31,6 +31,7 @@ func (r Registration) SupportedResources() map[string]*schema.Resource {
"azurerm_security_center_setting": resourceArmSecurityCenterSetting(),
"azurerm_security_center_subscription_pricing": resourceArmSecurityCenterSubscriptionPricing(),
"azurerm_security_center_workspace": resourceArmSecurityCenterWorkspace(),
"azurerm_security_center_automation": resourceArmSecurityCenterAutomation(),
"azurerm_security_center_auto_provisioning": resourceArmSecurityCenterAutoProvisioning(),
}
}
Loading

0 comments on commit 424faca

Please sign in to comment.