generated from hashicorp/terraform-provider-scaffolding
/
destination_resource_gen.go
152 lines (137 loc) · 5.39 KB
/
destination_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
// 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_destination", destinationResource)
}
// destinationResource returns the Terraform awscc_logs_destination resource.
// This Terraform resource corresponds to the CloudFormation AWS::Logs::Destination resource.
func destinationResource(ctx context.Context) (resource.Resource, error) {
attributes := map[string]schema.Attribute{ /*START SCHEMA*/
// Property: Arn
// CloudFormation resource type schema:
//
// {
// "type": "string"
// }
"arn": schema.StringAttribute{ /*START ATTRIBUTE*/
Computed: true,
PlanModifiers: []planmodifier.String{ /*START PLAN MODIFIERS*/
stringplanmodifier.UseStateForUnknown(),
}, /*END PLAN MODIFIERS*/
}, /*END ATTRIBUTE*/
// Property: DestinationName
// CloudFormation resource type schema:
//
// {
// "description": "The name of the destination resource",
// "maxLength": 512,
// "minLength": 1,
// "pattern": "^[^:*]{1,512}$",
// "type": "string"
// }
"destination_name": schema.StringAttribute{ /*START ATTRIBUTE*/
Description: "The name of the destination resource",
Required: true,
Validators: []validator.String{ /*START VALIDATORS*/
stringvalidator.LengthBetween(1, 512),
stringvalidator.RegexMatches(regexp.MustCompile("^[^:*]{1,512}$"), ""),
}, /*END VALIDATORS*/
PlanModifiers: []planmodifier.String{ /*START PLAN MODIFIERS*/
stringplanmodifier.RequiresReplace(),
}, /*END PLAN MODIFIERS*/
}, /*END ATTRIBUTE*/
// Property: DestinationPolicy
// CloudFormation resource type schema:
//
// {
// "description": "An IAM policy document that governs which AWS accounts can create subscription filters against this destination.",
// "minLength": 1,
// "type": "string"
// }
"destination_policy": schema.StringAttribute{ /*START ATTRIBUTE*/
Description: "An IAM policy document that governs which AWS accounts can create subscription filters against this destination.",
Optional: true,
Computed: true,
Validators: []validator.String{ /*START VALIDATORS*/
stringvalidator.LengthAtLeast(1),
}, /*END VALIDATORS*/
PlanModifiers: []planmodifier.String{ /*START PLAN MODIFIERS*/
stringplanmodifier.UseStateForUnknown(),
}, /*END PLAN MODIFIERS*/
}, /*END ATTRIBUTE*/
// Property: RoleArn
// CloudFormation resource type schema:
//
// {
// "description": "The ARN of an IAM role that permits CloudWatch Logs to send data to the specified AWS resource",
// "minLength": 1,
// "type": "string"
// }
"role_arn": schema.StringAttribute{ /*START ATTRIBUTE*/
Description: "The ARN of an IAM role that permits CloudWatch Logs to send data to the specified AWS resource",
Required: true,
Validators: []validator.String{ /*START VALIDATORS*/
stringvalidator.LengthAtLeast(1),
}, /*END VALIDATORS*/
}, /*END ATTRIBUTE*/
// Property: TargetArn
// CloudFormation resource type schema:
//
// {
// "description": "The ARN of the physical target where the log events are delivered (for example, a Kinesis stream)",
// "minLength": 1,
// "type": "string"
// }
"target_arn": schema.StringAttribute{ /*START ATTRIBUTE*/
Description: "The ARN of the physical target where the log events are delivered (for example, a Kinesis stream)",
Required: true,
Validators: []validator.String{ /*START VALIDATORS*/
stringvalidator.LengthAtLeast(1),
}, /*END VALIDATORS*/
}, /*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::Destination resource specifies a CloudWatch Logs destination. A destination encapsulates a physical resource (such as an Amazon Kinesis data stream) and enables you to subscribe that resource to a stream of log events.",
Version: 1,
Attributes: attributes,
}
var opts generic.ResourceOptions
opts = opts.WithCloudFormationTypeName("AWS::Logs::Destination").WithTerraformTypeName("awscc_logs_destination")
opts = opts.WithTerraformSchema(schema)
opts = opts.WithAttributeNameMap(map[string]string{
"arn": "Arn",
"destination_name": "DestinationName",
"destination_policy": "DestinationPolicy",
"role_arn": "RoleArn",
"target_arn": "TargetArn",
})
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
}