// Code generated by generators/resource/main.go; DO NOT EDIT. package mediaconnect import ( "context" "github.com/hashicorp/terraform-plugin-framework/tfsdk" "github.com/hashicorp/terraform-plugin-framework/types" . "github.com/hashicorp/terraform-provider-awscc/internal/generic" "github.com/hashicorp/terraform-provider-awscc/internal/registry" "github.com/hashicorp/terraform-provider-awscc/internal/validate" ) func init() { registry.AddResourceTypeFactory("awscc_mediaconnect_flow_output", flowOutputResourceType) } // flowOutputResourceType returns the Terraform awscc_mediaconnect_flow_output resource type. // This Terraform resource type corresponds to the CloudFormation AWS::MediaConnect::FlowOutput resource type. func flowOutputResourceType(ctx context.Context) (tfsdk.ResourceType, error) { attributes := map[string]tfsdk.Attribute{ "cidr_allow_list": { // Property: CidrAllowList // CloudFormation resource type schema: // { // "description": "The range of IP addresses that should be allowed to initiate output requests to this flow. These IP addresses should be in the form of a Classless Inter-Domain Routing (CIDR) block; for example, 10.0.0.0/16.", // "items": { // "type": "string" // }, // "type": "array" // } Description: "The range of IP addresses that should be allowed to initiate output requests to this flow. These IP addresses should be in the form of a Classless Inter-Domain Routing (CIDR) block; for example, 10.0.0.0/16.", Type: types.ListType{ElemType: types.StringType}, Optional: true, }, "description": { // Property: Description // CloudFormation resource type schema: // { // "description": "A description of the output.", // "type": "string" // } Description: "A description of the output.", Type: types.StringType, Optional: true, }, "destination": { // Property: Destination // CloudFormation resource type schema: // { // "description": "The address where you want to send the output.", // "type": "string" // } Description: "The address where you want to send the output.", Type: types.StringType, Optional: true, }, "encryption": { // Property: Encryption // CloudFormation resource type schema: // { // "additionalProperties": false, // "description": "The type of key used for the encryption. If no keyType is provided, the service will use the default setting (static-key).", // "properties": { // "Algorithm": { // "description": "The type of algorithm that is used for the encryption (such as aes128, aes192, or aes256).", // "enum": [ // "aes128", // "aes192", // "aes256" // ], // "type": "string" // }, // "KeyType": { // "default": "static-key", // "description": "The type of key that is used for the encryption. If no keyType is provided, the service will use the default setting (static-key).", // "enum": [ // "static-key", // "srt-password" // ], // "type": "string" // }, // "RoleArn": { // "description": "The ARN of the role that you created during setup (when you set up AWS Elemental MediaConnect as a trusted entity).", // "type": "string" // }, // "SecretArn": { // "description": " The ARN of the secret that you created in AWS Secrets Manager to store the encryption key. This parameter is required for static key encryption and is not valid for SPEKE encryption.", // "type": "string" // } // }, // "required": [ // "RoleArn", // "SecretArn" // ], // "type": "object" // } Description: "The type of key used for the encryption. If no keyType is provided, the service will use the default setting (static-key).", Attributes: tfsdk.SingleNestedAttributes( map[string]tfsdk.Attribute{ "algorithm": { // Property: Algorithm Description: "The type of algorithm that is used for the encryption (such as aes128, aes192, or aes256).", Type: types.StringType, Optional: true, Validators: []tfsdk.AttributeValidator{ validate.StringInSlice([]string{ "aes128", "aes192", "aes256", }), }, }, "key_type": { // Property: KeyType Description: "The type of key that is used for the encryption. If no keyType is provided, the service will use the default setting (static-key).", Type: types.StringType, Optional: true, Computed: true, Validators: []tfsdk.AttributeValidator{ validate.StringInSlice([]string{ "static-key", "srt-password", }), }, PlanModifiers: []tfsdk.AttributePlanModifier{ DefaultValue(types.String{Value: "static-key"}), tfsdk.UseStateForUnknown(), }, }, "role_arn": { // Property: RoleArn Description: "The ARN of the role that you created during setup (when you set up AWS Elemental MediaConnect as a trusted entity).", Type: types.StringType, Required: true, }, "secret_arn": { // Property: SecretArn Description: " The ARN of the secret that you created in AWS Secrets Manager to store the encryption key. This parameter is required for static key encryption and is not valid for SPEKE encryption.", Type: types.StringType, Required: true, }, }, ), Optional: true, }, "flow_arn": { // Property: FlowArn // CloudFormation resource type schema: // { // "description": "The Amazon Resource Name (ARN), a unique identifier for any AWS resource, of the flow.", // "type": "string" // } Description: "The Amazon Resource Name (ARN), a unique identifier for any AWS resource, of the flow.", Type: types.StringType, Required: true, }, "max_latency": { // Property: MaxLatency // CloudFormation resource type schema: // { // "description": "The maximum latency in milliseconds. This parameter applies only to RIST-based and Zixi-based streams.", // "type": "integer" // } Description: "The maximum latency in milliseconds. This parameter applies only to RIST-based and Zixi-based streams.", Type: types.Int64Type, Optional: true, }, "min_latency": { // Property: MinLatency // CloudFormation resource type schema: // { // "description": "The minimum latency in milliseconds.", // "type": "integer" // } Description: "The minimum latency in milliseconds.", Type: types.Int64Type, Optional: true, }, "name": { // Property: Name // CloudFormation resource type schema: // { // "description": "The name of the output. This value must be unique within the current flow.", // "type": "string" // } Description: "The name of the output. This value must be unique within the current flow.", Type: types.StringType, Optional: true, Computed: true, PlanModifiers: []tfsdk.AttributePlanModifier{ tfsdk.UseStateForUnknown(), tfsdk.RequiresReplace(), }, }, "output_arn": { // Property: OutputArn // CloudFormation resource type schema: // { // "description": "The ARN of the output.", // "type": "string" // } Description: "The ARN of the output.", Type: types.StringType, Computed: true, PlanModifiers: []tfsdk.AttributePlanModifier{ tfsdk.UseStateForUnknown(), }, }, "port": { // Property: Port // CloudFormation resource type schema: // { // "description": "The port to use when content is distributed to this output.", // "type": "integer" // } Description: "The port to use when content is distributed to this output.", Type: types.Int64Type, Optional: true, }, "protocol": { // Property: Protocol // CloudFormation resource type schema: // { // "description": "The protocol that is used by the source or output.", // "enum": [ // "zixi-push", // "rtp-fec", // "rtp", // "zixi-pull", // "rist", // "srt-listener" // ], // "type": "string" // } Description: "The protocol that is used by the source or output.", Type: types.StringType, Required: true, Validators: []tfsdk.AttributeValidator{ validate.StringInSlice([]string{ "zixi-push", "rtp-fec", "rtp", "zixi-pull", "rist", "srt-listener", }), }, }, "remote_id": { // Property: RemoteId // CloudFormation resource type schema: // { // "description": "The remote ID for the Zixi-pull stream.", // "type": "string" // } Description: "The remote ID for the Zixi-pull stream.", Type: types.StringType, Optional: true, }, "smoothing_latency": { // Property: SmoothingLatency // CloudFormation resource type schema: // { // "description": "The smoothing latency in milliseconds for RIST, RTP, and RTP-FEC streams.", // "type": "integer" // } Description: "The smoothing latency in milliseconds for RIST, RTP, and RTP-FEC streams.", Type: types.Int64Type, Optional: true, }, "stream_id": { // Property: StreamId // CloudFormation resource type schema: // { // "description": "The stream ID that you want to use for this transport. This parameter applies only to Zixi-based streams.", // "type": "string" // } Description: "The stream ID that you want to use for this transport. This parameter applies only to Zixi-based streams.", Type: types.StringType, Optional: true, }, "vpc_interface_attachment": { // Property: VpcInterfaceAttachment // CloudFormation resource type schema: // { // "additionalProperties": false, // "description": "The name of the VPC interface attachment to use for this output.", // "properties": { // "VpcInterfaceName": { // "description": "The name of the VPC interface to use for this output.", // "type": "string" // } // }, // "type": "object" // } Description: "The name of the VPC interface attachment to use for this output.", Attributes: tfsdk.SingleNestedAttributes( map[string]tfsdk.Attribute{ "vpc_interface_name": { // Property: VpcInterfaceName Description: "The name of the VPC interface to use for this output.", Type: types.StringType, Optional: true, }, }, ), Optional: true, }, } attributes["id"] = tfsdk.Attribute{ Description: "Uniquely identifies the resource.", Type: types.StringType, Computed: true, PlanModifiers: []tfsdk.AttributePlanModifier{ tfsdk.UseStateForUnknown(), }, } schema := tfsdk.Schema{ Description: "Resource schema for AWS::MediaConnect::FlowOutput", Version: 1, Attributes: attributes, } var opts ResourceTypeOptions opts = opts.WithCloudFormationTypeName("AWS::MediaConnect::FlowOutput").WithTerraformTypeName("awscc_mediaconnect_flow_output") opts = opts.WithTerraformSchema(schema) opts = opts.WithSyntheticIDAttribute(true) opts = opts.WithAttributeNameMap(map[string]string{ "algorithm": "Algorithm", "cidr_allow_list": "CidrAllowList", "description": "Description", "destination": "Destination", "encryption": "Encryption", "flow_arn": "FlowArn", "key_type": "KeyType", "max_latency": "MaxLatency", "min_latency": "MinLatency", "name": "Name", "output_arn": "OutputArn", "port": "Port", "protocol": "Protocol", "remote_id": "RemoteId", "role_arn": "RoleArn", "secret_arn": "SecretArn", "smoothing_latency": "SmoothingLatency", "stream_id": "StreamId", "vpc_interface_attachment": "VpcInterfaceAttachment", "vpc_interface_name": "VpcInterfaceName", }) opts = opts.WithCreateTimeoutInMinutes(0).WithDeleteTimeoutInMinutes(0) opts = opts.WithUpdateTimeoutInMinutes(0) resourceType, err := NewResourceType(ctx, opts...) if err != nil { return nil, err } return resourceType, nil }