generated from hashicorp/terraform-provider-scaffolding
/
account_policy_resource_gen.go
185 lines (170 loc) · 6.44 KB
/
account_policy_resource_gen.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
// Copyright (c) HashiCorp, Inc.
// SPDX-License-Identifier: MPL-2.0
// Code generated by generators/resource/main.go; DO NOT EDIT.
package logs
import (
"context"
"regexp"
"github.com/hashicorp/terraform-plugin-framework-validators/stringvalidator"
"github.com/hashicorp/terraform-plugin-framework/resource"
"github.com/hashicorp/terraform-plugin-framework/resource/schema"
"github.com/hashicorp/terraform-plugin-framework/resource/schema/planmodifier"
"github.com/hashicorp/terraform-plugin-framework/resource/schema/stringplanmodifier"
"github.com/hashicorp/terraform-plugin-framework/schema/validator"
"github.com/hashicorp/terraform-provider-awscc/internal/generic"
"github.com/hashicorp/terraform-provider-awscc/internal/registry"
)
func init() {
registry.AddResourceFactory("awscc_logs_account_policy", accountPolicyResource)
}
// accountPolicyResource returns the Terraform awscc_logs_account_policy resource.
// This Terraform resource corresponds to the CloudFormation AWS::Logs::AccountPolicy resource.
func accountPolicyResource(ctx context.Context) (resource.Resource, error) {
attributes := map[string]schema.Attribute{ /*START SCHEMA*/
// Property: AccountId
// CloudFormation resource type schema:
//
// {
// "description": "User account id",
// "pattern": "^\\d{12}$",
// "type": "string"
// }
"account_id": schema.StringAttribute{ /*START ATTRIBUTE*/
Description: "User account id",
Computed: true,
PlanModifiers: []planmodifier.String{ /*START PLAN MODIFIERS*/
stringplanmodifier.UseStateForUnknown(),
}, /*END PLAN MODIFIERS*/
}, /*END ATTRIBUTE*/
// Property: PolicyDocument
// CloudFormation resource type schema:
//
// {
// "description": "The body of the policy document you want to use for this topic.\n\nYou can only add one policy per PolicyType.\n\nThe policy must be in JSON string format.\n\nLength Constraints: Maximum length of 30720",
// "maxLength": 30720,
// "minLength": 1,
// "type": "string"
// }
"policy_document": schema.StringAttribute{ /*START ATTRIBUTE*/
Description: "The body of the policy document you want to use for this topic.\n\nYou can only add one policy per PolicyType.\n\nThe policy must be in JSON string format.\n\nLength Constraints: Maximum length of 30720",
Required: true,
Validators: []validator.String{ /*START VALIDATORS*/
stringvalidator.LengthBetween(1, 30720),
}, /*END VALIDATORS*/
}, /*END ATTRIBUTE*/
// Property: PolicyName
// CloudFormation resource type schema:
//
// {
// "description": "The name of the account policy",
// "maxLength": 256,
// "minLength": 1,
// "pattern": "^[^:*]{1,256}$",
// "type": "string"
// }
"policy_name": schema.StringAttribute{ /*START ATTRIBUTE*/
Description: "The name of the account policy",
Required: true,
Validators: []validator.String{ /*START VALIDATORS*/
stringvalidator.LengthBetween(1, 256),
stringvalidator.RegexMatches(regexp.MustCompile("^[^:*]{1,256}$"), ""),
}, /*END VALIDATORS*/
PlanModifiers: []planmodifier.String{ /*START PLAN MODIFIERS*/
stringplanmodifier.RequiresReplace(),
}, /*END PLAN MODIFIERS*/
}, /*END ATTRIBUTE*/
// Property: PolicyType
// CloudFormation resource type schema:
//
// {
// "description": "Type of the policy.",
// "enum": [
// "DATA_PROTECTION_POLICY",
// "SUBSCRIPTION_FILTER_POLICY"
// ],
// "type": "string"
// }
"policy_type": schema.StringAttribute{ /*START ATTRIBUTE*/
Description: "Type of the policy.",
Required: true,
Validators: []validator.String{ /*START VALIDATORS*/
stringvalidator.OneOf(
"DATA_PROTECTION_POLICY",
"SUBSCRIPTION_FILTER_POLICY",
),
}, /*END VALIDATORS*/
PlanModifiers: []planmodifier.String{ /*START PLAN MODIFIERS*/
stringplanmodifier.RequiresReplace(),
}, /*END PLAN MODIFIERS*/
}, /*END ATTRIBUTE*/
// Property: Scope
// CloudFormation resource type schema:
//
// {
// "description": "Scope for policy application",
// "enum": [
// "ALL"
// ],
// "type": "string"
// }
"scope": schema.StringAttribute{ /*START ATTRIBUTE*/
Description: "Scope for policy application",
Optional: true,
Computed: true,
Validators: []validator.String{ /*START VALIDATORS*/
stringvalidator.OneOf(
"ALL",
),
}, /*END VALIDATORS*/
PlanModifiers: []planmodifier.String{ /*START PLAN MODIFIERS*/
stringplanmodifier.UseStateForUnknown(),
}, /*END PLAN MODIFIERS*/
}, /*END ATTRIBUTE*/
// Property: SelectionCriteria
// CloudFormation resource type schema:
//
// {
// "description": "Log group selection criteria to apply policy only to a subset of log groups. SelectionCriteria string can be up to 25KB and cloudwatchlogs determines the length of selectionCriteria by using its UTF-8 bytes",
// "type": "string"
// }
"selection_criteria": schema.StringAttribute{ /*START ATTRIBUTE*/
Description: "Log group selection criteria to apply policy only to a subset of log groups. SelectionCriteria string can be up to 25KB and cloudwatchlogs determines the length of selectionCriteria by using its UTF-8 bytes",
Optional: true,
Computed: true,
PlanModifiers: []planmodifier.String{ /*START PLAN MODIFIERS*/
stringplanmodifier.UseStateForUnknown(),
}, /*END PLAN MODIFIERS*/
}, /*END ATTRIBUTE*/
} /*END SCHEMA*/
// Corresponds to CloudFormation primaryIdentifier.
attributes["id"] = schema.StringAttribute{
Description: "Uniquely identifies the resource.",
Computed: true,
PlanModifiers: []planmodifier.String{
stringplanmodifier.UseStateForUnknown(),
},
}
schema := schema.Schema{
Description: "The AWS::Logs::AccountPolicy resource specifies a CloudWatch Logs AccountPolicy.",
Version: 1,
Attributes: attributes,
}
var opts generic.ResourceOptions
opts = opts.WithCloudFormationTypeName("AWS::Logs::AccountPolicy").WithTerraformTypeName("awscc_logs_account_policy")
opts = opts.WithTerraformSchema(schema)
opts = opts.WithAttributeNameMap(map[string]string{
"account_id": "AccountId",
"policy_document": "PolicyDocument",
"policy_name": "PolicyName",
"policy_type": "PolicyType",
"scope": "Scope",
"selection_criteria": "SelectionCriteria",
})
opts = opts.WithCreateTimeoutInMinutes(0).WithDeleteTimeoutInMinutes(0)
opts = opts.WithUpdateTimeoutInMinutes(0)
v, err := generic.NewResource(ctx, opts...)
if err != nil {
return nil, err
}
return v, nil
}