Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

New Resource: aws_auditmanager_control #27857

Merged
merged 11 commits into from
Dec 8, 2022
3 changes: 3 additions & 0 deletions .changelog/27857.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
```release-note:new-resource
aws_auditmanager_control
```
103 changes: 58 additions & 45 deletions .ci/.semgrep-service-name0.yml
Original file line number Diff line number Diff line change
Expand Up @@ -1173,6 +1173,64 @@ rules:
patterns:
- pattern-regex: "(?i)Athena"
severity: WARNING
- id: auditmanager-in-func-name
languages:
- go
message: Do not use "AuditManager" in func name inside auditmanager package
paths:
include:
- internal/service/auditmanager
patterns:
- pattern: func $NAME( ... ) { ... }
- metavariable-pattern:
metavariable: $NAME
patterns:
- pattern-regex: "(?i)AuditManager"
- pattern-not-regex: ^TestAcc.*
severity: WARNING
- id: auditmanager-in-test-name
languages:
- go
message: Include "AuditManager" in test name
paths:
include:
- internal/service/auditmanager/*_test.go
patterns:
- pattern: func $NAME( ... ) { ... }
- metavariable-pattern:
metavariable: $NAME
patterns:
- pattern-not-regex: "^TestAccAuditManager"
- pattern-regex: ^TestAcc.*
severity: WARNING
- id: auditmanager-in-const-name
languages:
- go
message: Do not use "AuditManager" in const name inside auditmanager package
paths:
include:
- internal/service/auditmanager
patterns:
- pattern: const $NAME = ...
- metavariable-pattern:
metavariable: $NAME
patterns:
- pattern-regex: "(?i)AuditManager"
severity: WARNING
- id: auditmanager-in-var-name
languages:
- go
message: Do not use "AuditManager" in var name inside auditmanager package
paths:
include:
- internal/service/auditmanager
patterns:
- pattern: var $NAME = ...
- metavariable-pattern:
metavariable: $NAME
patterns:
- pattern-regex: "(?i)AuditManager"
severity: WARNING
- id: autoscaling-in-func-name
languages:
- go
Expand Down Expand Up @@ -3129,48 +3187,3 @@ rules:
- pattern-not-regex: .*uickConnect.*
- pattern-not-regex: ^TestAcc.*
severity: WARNING
- id: connect-in-test-name
languages:
- go
message: Include "Connect" in test name
paths:
include:
- internal/service/connect/*_test.go
patterns:
- pattern: func $NAME( ... ) { ... }
- metavariable-pattern:
metavariable: $NAME
patterns:
- pattern-not-regex: "^TestAccConnect"
- pattern-regex: ^TestAcc.*
severity: WARNING
- id: connect-in-const-name
languages:
- go
message: Do not use "Connect" in const name inside connect package
paths:
include:
- internal/service/connect
patterns:
- pattern: const $NAME = ...
- metavariable-pattern:
metavariable: $NAME
patterns:
- pattern-regex: "(?i)Connect"
- pattern-not-regex: .*uickConnect.*
severity: WARNING
- id: connect-in-var-name
languages:
- go
message: Do not use "Connect" in var name inside connect package
paths:
include:
- internal/service/connect
patterns:
- pattern: var $NAME = ...
- metavariable-pattern:
metavariable: $NAME
patterns:
- pattern-regex: "(?i)Connect"
- pattern-not-regex: .*uickConnect.*
severity: WARNING
73 changes: 45 additions & 28 deletions .ci/.semgrep-service-name1.yml
Original file line number Diff line number Diff line change
@@ -1,5 +1,50 @@
# Generated by internal/generate/servicesemgrep/main.go; DO NOT EDIT.
rules:
- id: connect-in-test-name
languages:
- go
message: Include "Connect" in test name
paths:
include:
- internal/service/connect/*_test.go
patterns:
- pattern: func $NAME( ... ) { ... }
- metavariable-pattern:
metavariable: $NAME
patterns:
- pattern-not-regex: "^TestAccConnect"
- pattern-regex: ^TestAcc.*
severity: WARNING
- id: connect-in-const-name
languages:
- go
message: Do not use "Connect" in const name inside connect package
paths:
include:
- internal/service/connect
patterns:
- pattern: const $NAME = ...
- metavariable-pattern:
metavariable: $NAME
patterns:
- pattern-regex: "(?i)Connect"
- pattern-not-regex: .*uickConnect.*
severity: WARNING
- id: connect-in-var-name
languages:
- go
message: Do not use "Connect" in var name inside connect package
paths:
include:
- internal/service/connect
patterns:
- pattern: var $NAME = ...
- metavariable-pattern:
metavariable: $NAME
patterns:
- pattern-regex: "(?i)Connect"
- pattern-not-regex: .*uickConnect.*
severity: WARNING
- id: controltower-in-func-name
languages:
- go
Expand Down Expand Up @@ -3131,31 +3176,3 @@ rules:
- pattern-not-regex: "^TestAccInspector2"
- pattern-regex: ^TestAcc.*
severity: WARNING
- id: inspector2-in-const-name
languages:
- go
message: Do not use "Inspector2" in const name inside inspector2 package
paths:
include:
- internal/service/inspector2
patterns:
- pattern: const $NAME = ...
- metavariable-pattern:
metavariable: $NAME
patterns:
- pattern-regex: "(?i)Inspector2"
severity: WARNING
- id: inspector2-in-var-name
languages:
- go
message: Do not use "Inspector2" in var name inside inspector2 package
paths:
include:
- internal/service/inspector2
patterns:
- pattern: var $NAME = ...
- metavariable-pattern:
metavariable: $NAME
patterns:
- pattern-regex: "(?i)Inspector2"
severity: WARNING
42 changes: 28 additions & 14 deletions .ci/.semgrep-service-name2.yml
Original file line number Diff line number Diff line change
@@ -1,5 +1,33 @@
# Generated by internal/generate/servicesemgrep/main.go; DO NOT EDIT.
rules:
- id: inspector2-in-const-name
languages:
- go
message: Do not use "Inspector2" in const name inside inspector2 package
paths:
include:
- internal/service/inspector2
patterns:
- pattern: const $NAME = ...
- metavariable-pattern:
metavariable: $NAME
patterns:
- pattern-regex: "(?i)Inspector2"
severity: WARNING
- id: inspector2-in-var-name
languages:
- go
message: Do not use "Inspector2" in var name inside inspector2 package
paths:
include:
- internal/service/inspector2
patterns:
- pattern: var $NAME = ...
- metavariable-pattern:
metavariable: $NAME
patterns:
- pattern-regex: "(?i)Inspector2"
severity: WARNING
- id: inspectorv2-in-func-name
languages:
- go
Expand Down Expand Up @@ -3143,17 +3171,3 @@ rules:
- pattern-not-regex: "^TestAccRedshift"
- pattern-regex: ^TestAcc.*
severity: WARNING
- id: redshift-in-const-name
languages:
- go
message: Do not use "Redshift" in const name inside redshift package
paths:
include:
- internal/service/redshift
patterns:
- pattern: const $NAME = ...
- metavariable-pattern:
metavariable: $NAME
patterns:
- pattern-regex: "(?i)Redshift"
severity: WARNING
14 changes: 14 additions & 0 deletions .ci/.semgrep-service-name3.yml
Original file line number Diff line number Diff line change
@@ -1,5 +1,19 @@
# Generated by internal/generate/servicesemgrep/main.go; DO NOT EDIT.
rules:
- id: redshift-in-const-name
languages:
- go
message: Do not use "Redshift" in const name inside redshift package
paths:
include:
- internal/service/redshift
patterns:
- pattern: const $NAME = ...
- metavariable-pattern:
metavariable: $NAME
patterns:
- pattern-regex: "(?i)Redshift"
severity: WARNING
- id: redshift-in-var-name
languages:
- go
Expand Down
1 change: 1 addition & 0 deletions .teamcity/components/generated/services_all.kt
Original file line number Diff line number Diff line change
Expand Up @@ -19,6 +19,7 @@ val services = mapOf(
"appstream" to ServiceSpec("AppStream 2.0", vpcLock = true, parallelismOverride = 10),
"appsync" to ServiceSpec("AppSync"),
"athena" to ServiceSpec("Athena"),
"auditmanager" to ServiceSpec("Audit Manager"),
"autoscaling" to ServiceSpec("Auto Scaling", vpcLock = true),
"autoscalingplans" to ServiceSpec("Auto Scaling Plans"),
"backup" to ServiceSpec("Backup"),
Expand Down
17 changes: 16 additions & 1 deletion internal/flex/framework.go
Original file line number Diff line number Diff line change
Expand Up @@ -156,6 +156,21 @@ func BoolToFrameworkLegacy(_ context.Context, v *bool) types.Bool {
return types.BoolValue(aws.ToBool(v))
}

// StringValueToFramework converts a string value to a Framework String value.
// An empty string is converted to a null String.
func StringValueToFramework[T ~string](_ context.Context, v T) types.String {
if v == "" {
return types.StringNull()
}
return types.StringValue(string(v))
}

// StringValueToFrameworkLegacy converts a string value to a Framework String value.
// An empty string is left as an empty String.
func StringValueToFrameworkLegacy[T ~string](_ context.Context, v T) types.String {
return types.StringValue(string(v))
}

// Int64ToFramework converts an int64 pointer to a Framework Int64 value.
// A nil int64 pointer is converted to a null Int64.
func Int64ToFramework(_ context.Context, v *int64) types.Int64 {
Expand All @@ -166,7 +181,7 @@ func Int64ToFramework(_ context.Context, v *int64) types.Int64 {
return types.Int64Value(aws.ToInt64(v))
}

// Int64ToFramework converts an int64 pointer to a Framework Int64 value.
// Int64ToFrameworkLegacy converts an int64 pointer to a Framework Int64 value.
// A nil int64 pointer is converted to a zero Int64.
func Int64ToFrameworkLegacy(_ context.Context, v *int64) types.Int64 {
return types.Int64Value(aws.ToInt64(v))
Expand Down
66 changes: 66 additions & 0 deletions internal/flex/framework_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -621,3 +621,69 @@ func TestStringToFrameworkWithTransform(t *testing.T) {
})
}
}

func TestStringValueToFramework(t *testing.T) {
t.Parallel()

// AWS enums use custom types with an underlying string type
type custom string

type testCase struct {
input custom
expected types.String
}
tests := map[string]testCase{
"valid": {
input: "TEST",
expected: types.StringValue("TEST"),
},
"empty": {
input: "",
expected: types.StringNull(),
},
}

for name, test := range tests {
name, test := name, test
t.Run(name, func(t *testing.T) {
got := StringValueToFramework(context.Background(), test.input)

if diff := cmp.Diff(got, test.expected); diff != "" {
t.Errorf("unexpected diff (+wanted, -got): %s", diff)
}
})
}
}

func TestStringValueToFrameworkLegacy(t *testing.T) {
t.Parallel()

// AWS enums use custom types with an underlying string type
type custom string

type testCase struct {
input custom
expected types.String
}
tests := map[string]testCase{
"valid": {
input: "TEST",
expected: types.StringValue("TEST"),
},
"empty": {
input: "",
expected: types.StringValue(""),
},
}

for name, test := range tests {
name, test := name, test
t.Run(name, func(t *testing.T) {
got := StringValueToFrameworkLegacy(context.Background(), test.input)

if diff := cmp.Diff(got, test.expected); diff != "" {
t.Errorf("unexpected diff (+wanted, -got): %s", diff)
}
})
}
}
9 changes: 9 additions & 0 deletions internal/framework/id_attribute.go
Original file line number Diff line number Diff line change
Expand Up @@ -14,3 +14,12 @@ func IDAttribute() schema.StringAttribute {
},
}
}

func ARNAttribute() schema.StringAttribute {
return schema.StringAttribute{
Computed: true,
PlanModifiers: []planmodifier.String{
stringplanmodifier.UseStateForUnknown(),
},
}
}
Loading