Skip to content

Commit

Permalink
new resource "azurerm_synapse_sql_pool_workload_classifier" (#14412)
Browse files Browse the repository at this point in the history
  • Loading branch information
ms-henglu authored Dec 16, 2021
1 parent cdc2910 commit ef4940b
Show file tree
Hide file tree
Showing 10 changed files with 919 additions and 0 deletions.
5 changes: 5 additions & 0 deletions internal/services/synapse/client/client.go
Original file line number Diff line number Diff line change
Expand Up @@ -24,6 +24,7 @@ type Client struct {
SqlPoolTransparentDataEncryptionClient *synapse.SQLPoolTransparentDataEncryptionsClient
SqlPoolVulnerabilityAssessmentsClient *synapse.SQLPoolVulnerabilityAssessmentsClient
SQLPoolVulnerabilityAssessmentRuleBaselinesClient *synapse.SQLPoolVulnerabilityAssessmentRuleBaselinesClient
SQLPoolWorkloadClassifierClient *synapse.SQLPoolWorkloadClassifierClient
SQLPoolWorkloadGroupClient *synapse.SQLPoolWorkloadGroupClient
WorkspaceAadAdminsClient *synapse.WorkspaceAadAdminsClient
WorkspaceClient *synapse.WorkspacesClient
Expand Down Expand Up @@ -71,6 +72,9 @@ func NewClient(o *common.ClientOptions) *Client {
sqlPoolVulnerabilityAssessmentsClient := synapse.NewSQLPoolVulnerabilityAssessmentsClientWithBaseURI(o.ResourceManagerEndpoint, o.SubscriptionId)
o.ConfigureClient(&sqlPoolVulnerabilityAssessmentsClient.Client, o.ResourceManagerAuthorizer)

sqlPoolWorkloadClassifierClient := synapse.NewSQLPoolWorkloadClassifierClientWithBaseURI(o.ResourceManagerEndpoint, o.SubscriptionId)
o.ConfigureClient(&sqlPoolWorkloadClassifierClient.Client, o.ResourceManagerAuthorizer)

sqlPoolWorkloadGroupClient := synapse.NewSQLPoolWorkloadGroupClientWithBaseURI(o.ResourceManagerEndpoint, o.SubscriptionId)
o.ConfigureClient(&sqlPoolWorkloadGroupClient.Client, o.ResourceManagerAuthorizer)

Expand Down Expand Up @@ -111,6 +115,7 @@ func NewClient(o *common.ClientOptions) *Client {
SqlPoolTransparentDataEncryptionClient: &sqlPoolTransparentDataEncryptionClient,
SqlPoolVulnerabilityAssessmentsClient: &sqlPoolVulnerabilityAssessmentsClient,
SQLPoolVulnerabilityAssessmentRuleBaselinesClient: &sqlPoolVulnerabilityAssessmentRuleBaselinesClient,
SQLPoolWorkloadClassifierClient: &sqlPoolWorkloadClassifierClient,
SQLPoolWorkloadGroupClient: &sqlPoolWorkloadGroupClient,
WorkspaceAadAdminsClient: &workspaceAadAdminsClient,
WorkspaceClient: &workspaceClient,
Expand Down
87 changes: 87 additions & 0 deletions internal/services/synapse/parse/sql_pool_workload_classifier.go
Original file line number Diff line number Diff line change
@@ -0,0 +1,87 @@
package parse

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

import (
"fmt"
"strings"

"github.com/hashicorp/go-azure-helpers/resourcemanager/resourceids"
)

type SqlPoolWorkloadClassifierId struct {
SubscriptionId string
ResourceGroup string
WorkspaceName string
SqlPoolName string
WorkloadGroupName string
WorkloadClassifierName string
}

func NewSqlPoolWorkloadClassifierID(subscriptionId, resourceGroup, workspaceName, sqlPoolName, workloadGroupName, workloadClassifierName string) SqlPoolWorkloadClassifierId {
return SqlPoolWorkloadClassifierId{
SubscriptionId: subscriptionId,
ResourceGroup: resourceGroup,
WorkspaceName: workspaceName,
SqlPoolName: sqlPoolName,
WorkloadGroupName: workloadGroupName,
WorkloadClassifierName: workloadClassifierName,
}
}

func (id SqlPoolWorkloadClassifierId) String() string {
segments := []string{
fmt.Sprintf("Workload Classifier Name %q", id.WorkloadClassifierName),
fmt.Sprintf("Workload Group Name %q", id.WorkloadGroupName),
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 Workload Classifier", segmentsStr)
}

func (id SqlPoolWorkloadClassifierId) ID() string {
fmtString := "/subscriptions/%s/resourceGroups/%s/providers/Microsoft.Synapse/workspaces/%s/sqlPools/%s/workloadGroups/%s/workloadClassifiers/%s"
return fmt.Sprintf(fmtString, id.SubscriptionId, id.ResourceGroup, id.WorkspaceName, id.SqlPoolName, id.WorkloadGroupName, id.WorkloadClassifierName)
}

// SqlPoolWorkloadClassifierID parses a SqlPoolWorkloadClassifier ID into an SqlPoolWorkloadClassifierId struct
func SqlPoolWorkloadClassifierID(input string) (*SqlPoolWorkloadClassifierId, error) {
id, err := resourceids.ParseAzureResourceID(input)
if err != nil {
return nil, err
}

resourceId := SqlPoolWorkloadClassifierId{
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.WorkloadGroupName, err = id.PopSegment("workloadGroups"); err != nil {
return nil, err
}
if resourceId.WorkloadClassifierName, err = id.PopSegment("workloadClassifiers"); err != nil {
return nil, err
}

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

return &resourceId, nil
}
160 changes: 160 additions & 0 deletions internal/services/synapse/parse/sql_pool_workload_classifier_test.go
Original file line number Diff line number Diff line change
@@ -0,0 +1,160 @@
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 = SqlPoolWorkloadClassifierId{}

func TestSqlPoolWorkloadClassifierIDFormatter(t *testing.T) {
actual := NewSqlPoolWorkloadClassifierID("12345678-1234-9876-4563-123456789012", "resGroup1", "workspace1", "sqlPool1", "workloadGroup1", "workloadClassifier1").ID()
expected := "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/resGroup1/providers/Microsoft.Synapse/workspaces/workspace1/sqlPools/sqlPool1/workloadGroups/workloadGroup1/workloadClassifiers/workloadClassifier1"
if actual != expected {
t.Fatalf("Expected %q but got %q", expected, actual)
}
}

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

{
// 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 WorkloadGroupName
Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/resGroup1/providers/Microsoft.Synapse/workspaces/workspace1/sqlPools/sqlPool1/",
Error: true,
},

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

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

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

{
// valid
Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/resGroup1/providers/Microsoft.Synapse/workspaces/workspace1/sqlPools/sqlPool1/workloadGroups/workloadGroup1/workloadClassifiers/workloadClassifier1",
Expected: &SqlPoolWorkloadClassifierId{
SubscriptionId: "12345678-1234-9876-4563-123456789012",
ResourceGroup: "resGroup1",
WorkspaceName: "workspace1",
SqlPoolName: "sqlPool1",
WorkloadGroupName: "workloadGroup1",
WorkloadClassifierName: "workloadClassifier1",
},
},

{
// upper-cased
Input: "/SUBSCRIPTIONS/12345678-1234-9876-4563-123456789012/RESOURCEGROUPS/RESGROUP1/PROVIDERS/MICROSOFT.SYNAPSE/WORKSPACES/WORKSPACE1/SQLPOOLS/SQLPOOL1/WORKLOADGROUPS/WORKLOADGROUP1/WORKLOADCLASSIFIERS/WORKLOADCLASSIFIER1",
Error: true,
},
}

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

actual, err := SqlPoolWorkloadClassifierID(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.WorkloadGroupName != v.Expected.WorkloadGroupName {
t.Fatalf("Expected %q but got %q for WorkloadGroupName", v.Expected.WorkloadGroupName, actual.WorkloadGroupName)
}
if actual.WorkloadClassifierName != v.Expected.WorkloadClassifierName {
t.Fatalf("Expected %q but got %q for WorkloadClassifierName", v.Expected.WorkloadClassifierName, actual.WorkloadClassifierName)
}
}
}
1 change: 1 addition & 0 deletions internal/services/synapse/registration.go
Original file line number Diff line number Diff line change
Expand Up @@ -39,6 +39,7 @@ func (r Registration) SupportedResources() map[string]*pluginsdk.Resource {
"azurerm_synapse_sql_pool_security_alert_policy": resourceSynapseSqlPoolSecurityAlertPolicy(),
"azurerm_synapse_sql_pool_vulnerability_assessment": resourceSynapseSqlPoolVulnerabilityAssessment(),
"azurerm_synapse_sql_pool_vulnerability_assessment_baseline": resourceSynapseSqlPoolVulnerabilityAssessmentBaseline(),
"azurerm_synapse_sql_pool_workload_classifier": resourceSynapseSQLPoolWorkloadClassifier(),
"azurerm_synapse_sql_pool_workload_group": resourceSynapseSQLPoolWorkloadGroup(),
"azurerm_synapse_workspace": resourceSynapseWorkspace(),
"azurerm_synapse_workspace_aad_admin": resourceSynapseWorkspaceAADAdmin(),
Expand Down
1 change: 1 addition & 0 deletions internal/services/synapse/resourceids.go
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,7 @@ package synapse
//go:generate go run ../../tools/generator-resource-id/main.go -path=./ -name=SqlPoolExtendedAuditingPolicy -id=/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/resGroup1/providers/Microsoft.Synapse/workspaces/workspace1/sqlPools/sqlPool1/extendedAuditingSettings/default
//go:generate go run ../../tools/generator-resource-id/main.go -path=./ -name=SqlPoolSecurityAlertPolicy -id=/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/resGroup1/providers/Microsoft.Synapse/workspaces/workspace1/sqlPools/sqlPool1/securityAlertPolicies/Default
//go:generate go run ../../tools/generator-resource-id/main.go -path=./ -name=SqlPoolVulnerabilityAssessment -id=/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/resGroup1/providers/Microsoft.Synapse/workspaces/workspace1/sqlPools/sqlPool1/vulnerabilityAssessments/default
//go:generate go run ../../tools/generator-resource-id/main.go -path=./ -name=SqlPoolWorkloadClassifier -id=/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/resGroup1/providers/Microsoft.Synapse/workspaces/workspace1/sqlPools/sqlPool1/workloadGroups/workloadGroup1/workloadClassifiers/workloadClassifier1
//go:generate go run ../../tools/generator-resource-id/main.go -path=./ -name=SqlPoolWorkloadGroup -id=/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/resGroup1/providers/Microsoft.Synapse/workspaces/workspace1/sqlPools/sqlPool1/workloadGroups/workloadGroup1
//go:generate go run ../../tools/generator-resource-id/main.go -path=./ -name=SqlPoolVulnerabilityAssessmentBaseline -id=/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/resGroup1/providers/Microsoft.Synapse/workspaces/workspace1/sqlPools/sqlPool1/vulnerabilityAssessments/default/rules/rule1/baselines/baseline1
//go:generate go run ../../tools/generator-resource-id/main.go -path=./ -name=Workspace -id=/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/resGroup1/providers/Microsoft.Synapse/workspaces/workspace1
Expand Down
Loading

0 comments on commit ef4940b

Please sign in to comment.