Skip to content

Commit

Permalink
new resource "azurerm_synapse_sql_pool_vulnerability_assessment_basel…
Browse files Browse the repository at this point in the history
…ine"
  • Loading branch information
ms-henglu committed Oct 15, 2021
1 parent d0fe7e6 commit 5cab458
Show file tree
Hide file tree
Showing 10 changed files with 1,020 additions and 51 deletions.
73 changes: 39 additions & 34 deletions internal/services/synapse/client/client.go
Original file line number Diff line number Diff line change
Expand Up @@ -12,23 +12,24 @@ import (
)

type Client struct {
FirewallRulesClient *synapse.IPFirewallRulesClient
IntegrationRuntimeAuthKeysClient *synapse.IntegrationRuntimeAuthKeysClient
IntegrationRuntimesClient *synapse.IntegrationRuntimesClient
KeysClient *synapse.KeysClient
PrivateLinkHubsClient *synapse.PrivateLinkHubsClient
SparkPoolClient *synapse.BigDataPoolsClient
SqlPoolClient *synapse.SQLPoolsClient
SqlPoolExtendedBlobAuditingPoliciesClient *synapse.ExtendedSQLPoolBlobAuditingPoliciesClient
SqlPoolSecurityAlertPolicyClient *synapse.SQLPoolSecurityAlertPoliciesClient
SqlPoolTransparentDataEncryptionClient *synapse.SQLPoolTransparentDataEncryptionsClient
SqlPoolVulnerabilityAssessmentsClient *synapse.SQLPoolVulnerabilityAssessmentsClient
WorkspaceAadAdminsClient *synapse.WorkspaceAadAdminsClient
WorkspaceClient *synapse.WorkspacesClient
WorkspaceExtendedBlobAuditingPoliciesClient *synapse.WorkspaceManagedSQLServerExtendedBlobAuditingPoliciesClient
WorkspaceManagedIdentitySQLControlSettingsClient *synapse.WorkspaceManagedIdentitySQLControlSettingsClient
WorkspaceSecurityAlertPolicyClient *synapse.WorkspaceManagedSQLServerSecurityAlertPolicyClient
WorkspaceVulnerabilityAssessmentsClient *synapse.WorkspaceManagedSQLServerVulnerabilityAssessmentsClient
FirewallRulesClient *synapse.IPFirewallRulesClient
IntegrationRuntimeAuthKeysClient *synapse.IntegrationRuntimeAuthKeysClient
IntegrationRuntimesClient *synapse.IntegrationRuntimesClient
KeysClient *synapse.KeysClient
PrivateLinkHubsClient *synapse.PrivateLinkHubsClient
SparkPoolClient *synapse.BigDataPoolsClient
SqlPoolClient *synapse.SQLPoolsClient
SqlPoolExtendedBlobAuditingPoliciesClient *synapse.ExtendedSQLPoolBlobAuditingPoliciesClient
SqlPoolSecurityAlertPolicyClient *synapse.SQLPoolSecurityAlertPoliciesClient
SqlPoolTransparentDataEncryptionClient *synapse.SQLPoolTransparentDataEncryptionsClient
SqlPoolVulnerabilityAssessmentsClient *synapse.SQLPoolVulnerabilityAssessmentsClient
SQLPoolVulnerabilityAssessmentRuleBaselinesClient *synapse.SQLPoolVulnerabilityAssessmentRuleBaselinesClient
WorkspaceAadAdminsClient *synapse.WorkspaceAadAdminsClient
WorkspaceClient *synapse.WorkspacesClient
WorkspaceExtendedBlobAuditingPoliciesClient *synapse.WorkspaceManagedSQLServerExtendedBlobAuditingPoliciesClient
WorkspaceManagedIdentitySQLControlSettingsClient *synapse.WorkspaceManagedIdentitySQLControlSettingsClient
WorkspaceSecurityAlertPolicyClient *synapse.WorkspaceManagedSQLServerSecurityAlertPolicyClient
WorkspaceVulnerabilityAssessmentsClient *synapse.WorkspaceManagedSQLServerVulnerabilityAssessmentsClient

synapseAuthorizer autorest.Authorizer
}
Expand Down Expand Up @@ -68,6 +69,9 @@ func NewClient(o *common.ClientOptions) *Client {
sqlPoolVulnerabilityAssessmentsClient := synapse.NewSQLPoolVulnerabilityAssessmentsClientWithBaseURI(o.ResourceManagerEndpoint, o.SubscriptionId)
o.ConfigureClient(&sqlPoolVulnerabilityAssessmentsClient.Client, o.ResourceManagerAuthorizer)

sqlPoolVulnerabilityAssessmentRuleBaselinesClient := synapse.NewSQLPoolVulnerabilityAssessmentRuleBaselinesClientWithBaseURI(o.ResourceManagerEndpoint, o.SubscriptionId)
o.ConfigureClient(&sqlPoolVulnerabilityAssessmentRuleBaselinesClient.Client, o.ResourceManagerAuthorizer)

workspaceAadAdminsClient := synapse.NewWorkspaceAadAdminsClientWithBaseURI(o.ResourceManagerEndpoint, o.SubscriptionId)
o.ConfigureClient(&workspaceAadAdminsClient.Client, o.ResourceManagerAuthorizer)

Expand All @@ -87,23 +91,24 @@ func NewClient(o *common.ClientOptions) *Client {
o.ConfigureClient(&workspaceVulnerabilityAssessmentsClient.Client, o.ResourceManagerAuthorizer)

return &Client{
FirewallRulesClient: &firewallRuleClient,
IntegrationRuntimeAuthKeysClient: &integrationRuntimeAuthKeysClient,
IntegrationRuntimesClient: &integrationRuntimesClient,
KeysClient: &keysClient,
PrivateLinkHubsClient: &privateLinkHubsClient,
SparkPoolClient: &sparkPoolClient,
SqlPoolClient: &sqlPoolClient,
SqlPoolExtendedBlobAuditingPoliciesClient: &sqlPoolExtendedBlobAuditingPoliciesClient,
SqlPoolSecurityAlertPolicyClient: &sqlPoolSecurityAlertPolicyClient,
SqlPoolTransparentDataEncryptionClient: &sqlPoolTransparentDataEncryptionClient,
SqlPoolVulnerabilityAssessmentsClient: &sqlPoolVulnerabilityAssessmentsClient,
WorkspaceAadAdminsClient: &workspaceAadAdminsClient,
WorkspaceClient: &workspaceClient,
WorkspaceExtendedBlobAuditingPoliciesClient: &workspaceExtendedBlobAuditingPoliciesClient,
WorkspaceManagedIdentitySQLControlSettingsClient: &workspaceManagedIdentitySQLControlSettingsClient,
WorkspaceSecurityAlertPolicyClient: &workspaceSecurityAlertPolicyClient,
WorkspaceVulnerabilityAssessmentsClient: &workspaceVulnerabilityAssessmentsClient,
FirewallRulesClient: &firewallRuleClient,
IntegrationRuntimeAuthKeysClient: &integrationRuntimeAuthKeysClient,
IntegrationRuntimesClient: &integrationRuntimesClient,
KeysClient: &keysClient,
PrivateLinkHubsClient: &privateLinkHubsClient,
SparkPoolClient: &sparkPoolClient,
SqlPoolClient: &sqlPoolClient,
SqlPoolExtendedBlobAuditingPoliciesClient: &sqlPoolExtendedBlobAuditingPoliciesClient,
SqlPoolSecurityAlertPolicyClient: &sqlPoolSecurityAlertPolicyClient,
SqlPoolTransparentDataEncryptionClient: &sqlPoolTransparentDataEncryptionClient,
SqlPoolVulnerabilityAssessmentsClient: &sqlPoolVulnerabilityAssessmentsClient,
SQLPoolVulnerabilityAssessmentRuleBaselinesClient: &sqlPoolVulnerabilityAssessmentRuleBaselinesClient,
WorkspaceAadAdminsClient: &workspaceAadAdminsClient,
WorkspaceClient: &workspaceClient,
WorkspaceExtendedBlobAuditingPoliciesClient: &workspaceExtendedBlobAuditingPoliciesClient,
WorkspaceManagedIdentitySQLControlSettingsClient: &workspaceManagedIdentitySQLControlSettingsClient,
WorkspaceSecurityAlertPolicyClient: &workspaceSecurityAlertPolicyClient,
WorkspaceVulnerabilityAssessmentsClient: &workspaceVulnerabilityAssessmentsClient,

synapseAuthorizer: o.SynapseAuthorizer,
}
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,93 @@
package parse

// NOTE: this file is generated via 'go:generate' - manual changes will be overwritten

import (
"fmt"
"strings"

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

type SqlPoolVulnerabilityAssessmentBaselineId struct {
SubscriptionId string
ResourceGroup string
WorkspaceName string
SqlPoolName string
VulnerabilityAssessmentName string
RuleName string
BaselineName string
}

func NewSqlPoolVulnerabilityAssessmentBaselineID(subscriptionId, resourceGroup, workspaceName, sqlPoolName, vulnerabilityAssessmentName, ruleName, baselineName string) SqlPoolVulnerabilityAssessmentBaselineId {
return SqlPoolVulnerabilityAssessmentBaselineId{
SubscriptionId: subscriptionId,
ResourceGroup: resourceGroup,
WorkspaceName: workspaceName,
SqlPoolName: sqlPoolName,
VulnerabilityAssessmentName: vulnerabilityAssessmentName,
RuleName: ruleName,
BaselineName: baselineName,
}
}

func (id SqlPoolVulnerabilityAssessmentBaselineId) String() string {
segments := []string{
fmt.Sprintf("Baseline Name %q", id.BaselineName),
fmt.Sprintf("Rule Name %q", id.RuleName),
fmt.Sprintf("Vulnerability Assessment Name %q", id.VulnerabilityAssessmentName),
fmt.Sprintf("Sql Pool Name %q", id.SqlPoolName),
fmt.Sprintf("Workspace Name %q", id.WorkspaceName),
fmt.Sprintf("Resource Group %q", id.ResourceGroup),
}
segmentsStr := strings.Join(segments, " / ")
return fmt.Sprintf("%s: (%s)", "Sql Pool Vulnerability Assessment Baseline", segmentsStr)
}

func (id SqlPoolVulnerabilityAssessmentBaselineId) ID() string {
fmtString := "/subscriptions/%s/resourceGroups/%s/providers/Microsoft.Synapse/workspaces/%s/sqlPools/%s/vulnerabilityAssessments/%s/rules/%s/baselines/%s"
return fmt.Sprintf(fmtString, id.SubscriptionId, id.ResourceGroup, id.WorkspaceName, id.SqlPoolName, id.VulnerabilityAssessmentName, id.RuleName, id.BaselineName)
}

// SqlPoolVulnerabilityAssessmentBaselineID parses a SqlPoolVulnerabilityAssessmentBaseline ID into an SqlPoolVulnerabilityAssessmentBaselineId struct
func SqlPoolVulnerabilityAssessmentBaselineID(input string) (*SqlPoolVulnerabilityAssessmentBaselineId, error) {
id, err := azure.ParseAzureResourceID(input)
if err != nil {
return nil, err
}

resourceId := SqlPoolVulnerabilityAssessmentBaselineId{
SubscriptionId: id.SubscriptionID,
ResourceGroup: id.ResourceGroup,
}

if resourceId.SubscriptionId == "" {
return nil, fmt.Errorf("ID was missing the 'subscriptions' element")
}

if resourceId.ResourceGroup == "" {
return nil, fmt.Errorf("ID was missing the 'resourceGroups' element")
}

if resourceId.WorkspaceName, err = id.PopSegment("workspaces"); err != nil {
return nil, err
}
if resourceId.SqlPoolName, err = id.PopSegment("sqlPools"); err != nil {
return nil, err
}
if resourceId.VulnerabilityAssessmentName, err = id.PopSegment("vulnerabilityAssessments"); err != nil {
return nil, err
}
if resourceId.RuleName, err = id.PopSegment("rules"); err != nil {
return nil, err
}
if resourceId.BaselineName, err = id.PopSegment("baselines"); err != nil {
return nil, err
}

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

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

// NOTE: this file is generated via 'go:generate' - manual changes will be overwritten

import (
"testing"

"github.com/hashicorp/terraform-provider-azurerm/internal/resourceid"
)

var _ resourceid.Formatter = SqlPoolVulnerabilityAssessmentBaselineId{}

func TestSqlPoolVulnerabilityAssessmentBaselineIDFormatter(t *testing.T) {
actual := NewSqlPoolVulnerabilityAssessmentBaselineID("12345678-1234-9876-4563-123456789012", "resGroup1", "workspace1", "sqlPool1", "default", "rule1", "baseline1").ID()
expected := "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/resGroup1/providers/Microsoft.Synapse/workspaces/workspace1/sqlPools/sqlPool1/vulnerabilityAssessments/default/rules/rule1/baselines/baseline1"
if actual != expected {
t.Fatalf("Expected %q but got %q", expected, actual)
}
}

func TestSqlPoolVulnerabilityAssessmentBaselineID(t *testing.T) {
testData := []struct {
Input string
Error bool
Expected *SqlPoolVulnerabilityAssessmentBaselineId
}{

{
// empty
Input: "",
Error: true,
},

{
// missing SubscriptionId
Input: "/",
Error: true,
},

{
// missing value for SubscriptionId
Input: "/subscriptions/",
Error: true,
},

{
// missing ResourceGroup
Input: "/subscriptions/12345678-1234-9876-4563-123456789012/",
Error: true,
},

{
// missing value for ResourceGroup
Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/",
Error: true,
},

{
// missing WorkspaceName
Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/resGroup1/providers/Microsoft.Synapse/",
Error: true,
},

{
// missing value for WorkspaceName
Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/resGroup1/providers/Microsoft.Synapse/workspaces/",
Error: true,
},

{
// missing SqlPoolName
Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/resGroup1/providers/Microsoft.Synapse/workspaces/workspace1/",
Error: true,
},

{
// missing value for SqlPoolName
Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/resGroup1/providers/Microsoft.Synapse/workspaces/workspace1/sqlPools/",
Error: true,
},

{
// missing VulnerabilityAssessmentName
Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/resGroup1/providers/Microsoft.Synapse/workspaces/workspace1/sqlPools/sqlPool1/",
Error: true,
},

{
// missing value for VulnerabilityAssessmentName
Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/resGroup1/providers/Microsoft.Synapse/workspaces/workspace1/sqlPools/sqlPool1/vulnerabilityAssessments/",
Error: true,
},

{
// missing RuleName
Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/resGroup1/providers/Microsoft.Synapse/workspaces/workspace1/sqlPools/sqlPool1/vulnerabilityAssessments/default/",
Error: true,
},

{
// missing value for RuleName
Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/resGroup1/providers/Microsoft.Synapse/workspaces/workspace1/sqlPools/sqlPool1/vulnerabilityAssessments/default/rules/",
Error: true,
},

{
// missing BaselineName
Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/resGroup1/providers/Microsoft.Synapse/workspaces/workspace1/sqlPools/sqlPool1/vulnerabilityAssessments/default/rules/rule1/",
Error: true,
},

{
// missing value for BaselineName
Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/resGroup1/providers/Microsoft.Synapse/workspaces/workspace1/sqlPools/sqlPool1/vulnerabilityAssessments/default/rules/rule1/baselines/",
Error: true,
},

{
// valid
Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/resGroup1/providers/Microsoft.Synapse/workspaces/workspace1/sqlPools/sqlPool1/vulnerabilityAssessments/default/rules/rule1/baselines/baseline1",
Expected: &SqlPoolVulnerabilityAssessmentBaselineId{
SubscriptionId: "12345678-1234-9876-4563-123456789012",
ResourceGroup: "resGroup1",
WorkspaceName: "workspace1",
SqlPoolName: "sqlPool1",
VulnerabilityAssessmentName: "default",
RuleName: "rule1",
BaselineName: "baseline1",
},
},

{
// upper-cased
Input: "/SUBSCRIPTIONS/12345678-1234-9876-4563-123456789012/RESOURCEGROUPS/RESGROUP1/PROVIDERS/MICROSOFT.SYNAPSE/WORKSPACES/WORKSPACE1/SQLPOOLS/SQLPOOL1/VULNERABILITYASSESSMENTS/DEFAULT/RULES/RULE1/BASELINES/BASELINE1",
Error: true,
},
}

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

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

t.Fatalf("Expect a value but got an error: %s", err)
}
if v.Error {
t.Fatal("Expect an error but didn't get one")
}

if actual.SubscriptionId != v.Expected.SubscriptionId {
t.Fatalf("Expected %q but got %q for SubscriptionId", v.Expected.SubscriptionId, actual.SubscriptionId)
}
if actual.ResourceGroup != v.Expected.ResourceGroup {
t.Fatalf("Expected %q but got %q for ResourceGroup", v.Expected.ResourceGroup, actual.ResourceGroup)
}
if actual.WorkspaceName != v.Expected.WorkspaceName {
t.Fatalf("Expected %q but got %q for WorkspaceName", v.Expected.WorkspaceName, actual.WorkspaceName)
}
if actual.SqlPoolName != v.Expected.SqlPoolName {
t.Fatalf("Expected %q but got %q for SqlPoolName", v.Expected.SqlPoolName, actual.SqlPoolName)
}
if actual.VulnerabilityAssessmentName != v.Expected.VulnerabilityAssessmentName {
t.Fatalf("Expected %q but got %q for VulnerabilityAssessmentName", v.Expected.VulnerabilityAssessmentName, actual.VulnerabilityAssessmentName)
}
if actual.RuleName != v.Expected.RuleName {
t.Fatalf("Expected %q but got %q for RuleName", v.Expected.RuleName, actual.RuleName)
}
if actual.BaselineName != v.Expected.BaselineName {
t.Fatalf("Expected %q but got %q for BaselineName", v.Expected.BaselineName, actual.BaselineName)
}
}
}
Loading

0 comments on commit 5cab458

Please sign in to comment.