Yandex

v0.10.0 published on Thursday, Nov 18, 2021 by Pulumi

MessageQueue

Allows management of Yandex.Cloud Message Queue.

FIFO queue

import * as pulumi from "@pulumi/pulumi";
import * as yandex from "@pulumi/yandex";

const exampleFifoQueue = new yandex.MessageQueue("example_fifo_queue", {
    contentBasedDeduplication: true,
    fifoQueue: true,
});
import pulumi
import pulumi_yandex as yandex

example_fifo_queue = yandex.MessageQueue("exampleFifoQueue",
    content_based_deduplication=True,
    fifo_queue=True)
using Pulumi;
using Yandex = Pulumi.Yandex;

class MyStack : Stack
{
    public MyStack()
    {
        var exampleFifoQueue = new Yandex.MessageQueue("exampleFifoQueue", new Yandex.MessageQueueArgs
        {
            ContentBasedDeduplication = true,
            FifoQueue = true,
        });
    }

}
package main

import (
	"github.com/pulumi/pulumi-yandex/sdk/go/yandex"
	"github.com/pulumi/pulumi/sdk/v3/go/pulumi"
)

func main() {
	pulumi.Run(func(ctx *pulumi.Context) error {
		_, err := yandex.NewMessageQueue(ctx, "exampleFifoQueue", &yandex.MessageQueueArgs{
			ContentBasedDeduplication: pulumi.Bool(true),
			FifoQueue:                 pulumi.Bool(true),
		})
		if err != nil {
			return err
		}
		return nil
	})
}

Example Usage

using System.Collections.Generic;
using System.Text.Json;
using Pulumi;
using Yandex = Pulumi.Yandex;

class MyStack : Stack
{
    public MyStack()
    {
        var exampleDeadletterQueue = new Yandex.MessageQueue("exampleDeadletterQueue", new Yandex.MessageQueueArgs
        {
        });
        var exampleQueue = new Yandex.MessageQueue("exampleQueue", new Yandex.MessageQueueArgs
        {
            VisibilityTimeoutSeconds = 600,
            ReceiveWaitTimeSeconds = 20,
            MessageRetentionSeconds = 1209600,
            RedrivePolicy = exampleDeadletterQueue.Arn.Apply(arn => JsonSerializer.Serialize(new Dictionary<string, object?>
            {
                { "deadLetterTargetArn", arn },
                { "maxReceiveCount", 3 },
            })),
        });
    }

}
package main

import (
	"encoding/json"

	"github.com/pulumi/pulumi-yandex/sdk/go/yandex"
	"github.com/pulumi/pulumi/sdk/v3/go/pulumi"
)

func main() {
	pulumi.Run(func(ctx *pulumi.Context) error {
		exampleDeadletterQueue, err := yandex.NewMessageQueue(ctx, "exampleDeadletterQueue", nil)
		if err != nil {
			return err
		}
		_, err = yandex.NewMessageQueue(ctx, "exampleQueue", &yandex.MessageQueueArgs{
			VisibilityTimeoutSeconds: pulumi.Int(600),
			ReceiveWaitTimeSeconds:   pulumi.Int(20),
			MessageRetentionSeconds:  pulumi.Int(1209600),
			RedrivePolicy: exampleDeadletterQueue.Arn.ApplyT(func(arn string) (pulumi.String, error) {
				var _zero pulumi.String
				tmpJSON0, err := json.Marshal(map[string]interface{}{
					"deadLetterTargetArn": arn,
					"maxReceiveCount":     3,
				})
				if err != nil {
					return _zero, err
				}
				json0 := string(tmpJSON0)
				return json0, nil
			}).(pulumi.StringOutput),
		})
		if err != nil {
			return err
		}
		return nil
	})
}
import pulumi
import json
import pulumi_yandex as yandex

example_deadletter_queue = yandex.MessageQueue("exampleDeadletterQueue")
example_queue = yandex.MessageQueue("exampleQueue",
    visibility_timeout_seconds=600,
    receive_wait_time_seconds=20,
    message_retention_seconds=1209600,
    redrive_policy=example_deadletter_queue.arn.apply(lambda arn: json.dumps({
        "deadLetterTargetArn": arn,
        "maxReceiveCount": 3,
    })))
import * as pulumi from "@pulumi/pulumi";
import * as yandex from "@pulumi/yandex";

const exampleDeadletterQueue = new yandex.MessageQueue("exampleDeadletterQueue", {});
const exampleQueue = new yandex.MessageQueue("exampleQueue", {
    visibilityTimeoutSeconds: 600,
    receiveWaitTimeSeconds: 20,
    messageRetentionSeconds: 1209600,
    redrivePolicy: exampleDeadletterQueue.arn.apply(arn => JSON.stringify({
        deadLetterTargetArn: arn,
        maxReceiveCount: 3,
    })),
});

Create a MessageQueue Resource

new MessageQueue(name: string, args?: MessageQueueArgs, opts?: CustomResourceOptions);
@overload
def MessageQueue(resource_name: str,
                 opts: Optional[ResourceOptions] = None,
                 access_key: Optional[str] = None,
                 content_based_deduplication: Optional[bool] = None,
                 delay_seconds: Optional[int] = None,
                 fifo_queue: Optional[bool] = None,
                 max_message_size: Optional[int] = None,
                 message_retention_seconds: Optional[int] = None,
                 name: Optional[str] = None,
                 name_prefix: Optional[str] = None,
                 receive_wait_time_seconds: Optional[int] = None,
                 redrive_policy: Optional[str] = None,
                 secret_key: Optional[str] = None,
                 visibility_timeout_seconds: Optional[int] = None)
@overload
def MessageQueue(resource_name: str,
                 args: Optional[MessageQueueArgs] = None,
                 opts: Optional[ResourceOptions] = None)
func NewMessageQueue(ctx *Context, name string, args *MessageQueueArgs, opts ...ResourceOption) (*MessageQueue, error)
public MessageQueue(string name, MessageQueueArgs? args = null, CustomResourceOptions? opts = null)
name string
The unique name of the resource.
args MessageQueueArgs
The arguments to resource properties.
opts CustomResourceOptions
Bag of options to control resource's behavior.
resource_name str
The unique name of the resource.
args MessageQueueArgs
The arguments to resource properties.
opts ResourceOptions
Bag of options to control resource's behavior.
ctx Context
Context object for the current deployment.
name string
The unique name of the resource.
args MessageQueueArgs
The arguments to resource properties.
opts ResourceOption
Bag of options to control resource's behavior.
name string
The unique name of the resource.
args MessageQueueArgs
The arguments to resource properties.
opts CustomResourceOptions
Bag of options to control resource's behavior.

MessageQueue Resource Properties

To learn more about resource properties and how to use them, see Inputs and Outputs in the Architecture and Concepts docs.

Inputs

The MessageQueue resource accepts the following input properties:

AccessKey string
The access key to use when applying changes. If omitted, ymq_access_key specified in provider config is used. For more information see documentation.
ContentBasedDeduplication bool
Enables content-based deduplication. Can be used only if queue is FIFO.
DelaySeconds int
Number of seconds to delay the message from being available for processing. Valid values: from 0 to 900 seconds (15 minutes). Default: 0.
FifoQueue bool
Is this queue FIFO. If this parameter is not used, a standard queue is created. You cannot change the parameter value for a created queue.
MaxMessageSize int
Maximum message size in bytes. Valid values: from 1024 bytes (1 KB) to 262144 bytes (256 KB). Default: 262144 (256 KB). For more information see documentation.
MessageRetentionSeconds int
The length of time in seconds to retain a message. Valid values: from 60 seconds (1 minute) to 1209600 seconds (14 days). Default: 345600 (4 days). For more information see documentation.
Name string
Queue name. The maximum length is 80 characters. You can use numbers, letters, underscores, and hyphens in the name. The name of a FIFO queue must end with the .fifo suffix. If not specified, random name will be generated. Conflicts with name_prefix. For more information see documentation.
NamePrefix string
Generates random name with the specified prefix. Conflicts with name.
ReceiveWaitTimeSeconds int
Wait time for the ReceiveMessage method (for long polling), in seconds. Valid values: from 0 to 20 seconds. Default: 0. For more information about long polling see documentation.
RedrivePolicy string
Message redrive policy in Dead Letter Queue. The source queue and DLQ must be the same type: for FIFO queues, the DLQ must also be a FIFO queue. For more information about redrive policy see documentation. Also you can use example in this page.
SecretKey string
The secret key to use when applying changes. If omitted, ymq_secret_key specified in provider config is used. For more information see documentation.
VisibilityTimeoutSeconds int
Visibility timeout for messages in a queue, specified in seconds. Valid values: from 0 to 43200 seconds (12 hours). Default: 30.
AccessKey string
The access key to use when applying changes. If omitted, ymq_access_key specified in provider config is used. For more information see documentation.
ContentBasedDeduplication bool
Enables content-based deduplication. Can be used only if queue is FIFO.
DelaySeconds int
Number of seconds to delay the message from being available for processing. Valid values: from 0 to 900 seconds (15 minutes). Default: 0.
FifoQueue bool
Is this queue FIFO. If this parameter is not used, a standard queue is created. You cannot change the parameter value for a created queue.
MaxMessageSize int
Maximum message size in bytes. Valid values: from 1024 bytes (1 KB) to 262144 bytes (256 KB). Default: 262144 (256 KB). For more information see documentation.
MessageRetentionSeconds int
The length of time in seconds to retain a message. Valid values: from 60 seconds (1 minute) to 1209600 seconds (14 days). Default: 345600 (4 days). For more information see documentation.
Name string
Queue name. The maximum length is 80 characters. You can use numbers, letters, underscores, and hyphens in the name. The name of a FIFO queue must end with the .fifo suffix. If not specified, random name will be generated. Conflicts with name_prefix. For more information see documentation.
NamePrefix string
Generates random name with the specified prefix. Conflicts with name.
ReceiveWaitTimeSeconds int
Wait time for the ReceiveMessage method (for long polling), in seconds. Valid values: from 0 to 20 seconds. Default: 0. For more information about long polling see documentation.
RedrivePolicy string
Message redrive policy in Dead Letter Queue. The source queue and DLQ must be the same type: for FIFO queues, the DLQ must also be a FIFO queue. For more information about redrive policy see documentation. Also you can use example in this page.
SecretKey string
The secret key to use when applying changes. If omitted, ymq_secret_key specified in provider config is used. For more information see documentation.
VisibilityTimeoutSeconds int
Visibility timeout for messages in a queue, specified in seconds. Valid values: from 0 to 43200 seconds (12 hours). Default: 30.
accessKey string
The access key to use when applying changes. If omitted, ymq_access_key specified in provider config is used. For more information see documentation.
contentBasedDeduplication boolean
Enables content-based deduplication. Can be used only if queue is FIFO.
delaySeconds number
Number of seconds to delay the message from being available for processing. Valid values: from 0 to 900 seconds (15 minutes). Default: 0.
fifoQueue boolean
Is this queue FIFO. If this parameter is not used, a standard queue is created. You cannot change the parameter value for a created queue.
maxMessageSize number
Maximum message size in bytes. Valid values: from 1024 bytes (1 KB) to 262144 bytes (256 KB). Default: 262144 (256 KB). For more information see documentation.
messageRetentionSeconds number
The length of time in seconds to retain a message. Valid values: from 60 seconds (1 minute) to 1209600 seconds (14 days). Default: 345600 (4 days). For more information see documentation.
name string
Queue name. The maximum length is 80 characters. You can use numbers, letters, underscores, and hyphens in the name. The name of a FIFO queue must end with the .fifo suffix. If not specified, random name will be generated. Conflicts with name_prefix. For more information see documentation.
namePrefix string
Generates random name with the specified prefix. Conflicts with name.
receiveWaitTimeSeconds number
Wait time for the ReceiveMessage method (for long polling), in seconds. Valid values: from 0 to 20 seconds. Default: 0. For more information about long polling see documentation.
redrivePolicy string
Message redrive policy in Dead Letter Queue. The source queue and DLQ must be the same type: for FIFO queues, the DLQ must also be a FIFO queue. For more information about redrive policy see documentation. Also you can use example in this page.
secretKey string
The secret key to use when applying changes. If omitted, ymq_secret_key specified in provider config is used. For more information see documentation.
visibilityTimeoutSeconds number
Visibility timeout for messages in a queue, specified in seconds. Valid values: from 0 to 43200 seconds (12 hours). Default: 30.
access_key str
The access key to use when applying changes. If omitted, ymq_access_key specified in provider config is used. For more information see documentation.
content_based_deduplication bool
Enables content-based deduplication. Can be used only if queue is FIFO.
delay_seconds int
Number of seconds to delay the message from being available for processing. Valid values: from 0 to 900 seconds (15 minutes). Default: 0.
fifo_queue bool
Is this queue FIFO. If this parameter is not used, a standard queue is created. You cannot change the parameter value for a created queue.
max_message_size int
Maximum message size in bytes. Valid values: from 1024 bytes (1 KB) to 262144 bytes (256 KB). Default: 262144 (256 KB). For more information see documentation.
message_retention_seconds int
The length of time in seconds to retain a message. Valid values: from 60 seconds (1 minute) to 1209600 seconds (14 days). Default: 345600 (4 days). For more information see documentation.
name str
Queue name. The maximum length is 80 characters. You can use numbers, letters, underscores, and hyphens in the name. The name of a FIFO queue must end with the .fifo suffix. If not specified, random name will be generated. Conflicts with name_prefix. For more information see documentation.
name_prefix str
Generates random name with the specified prefix. Conflicts with name.
receive_wait_time_seconds int
Wait time for the ReceiveMessage method (for long polling), in seconds. Valid values: from 0 to 20 seconds. Default: 0. For more information about long polling see documentation.
redrive_policy str
Message redrive policy in Dead Letter Queue. The source queue and DLQ must be the same type: for FIFO queues, the DLQ must also be a FIFO queue. For more information about redrive policy see documentation. Also you can use example in this page.
secret_key str
The secret key to use when applying changes. If omitted, ymq_secret_key specified in provider config is used. For more information see documentation.
visibility_timeout_seconds int
Visibility timeout for messages in a queue, specified in seconds. Valid values: from 0 to 43200 seconds (12 hours). Default: 30.

Outputs

All input properties are implicitly available as output properties. Additionally, the MessageQueue resource produces the following output properties:

Arn string
ARN of the Yandex Message Queue. It is used for setting up a redrive policy. See documentation.
Id string
The provider-assigned unique ID for this managed resource.
Arn string
ARN of the Yandex Message Queue. It is used for setting up a redrive policy. See documentation.
Id string
The provider-assigned unique ID for this managed resource.
arn string
ARN of the Yandex Message Queue. It is used for setting up a redrive policy. See documentation.
id string
The provider-assigned unique ID for this managed resource.
arn str
ARN of the Yandex Message Queue. It is used for setting up a redrive policy. See documentation.
id str
The provider-assigned unique ID for this managed resource.

Look up an Existing MessageQueue Resource

Get an existing MessageQueue resource’s state with the given name, ID, and optional extra properties used to qualify the lookup.

public static get(name: string, id: Input<ID>, state?: MessageQueueState, opts?: CustomResourceOptions): MessageQueue
@staticmethod
def get(resource_name: str,
        id: str,
        opts: Optional[ResourceOptions] = None,
        access_key: Optional[str] = None,
        arn: Optional[str] = None,
        content_based_deduplication: Optional[bool] = None,
        delay_seconds: Optional[int] = None,
        fifo_queue: Optional[bool] = None,
        max_message_size: Optional[int] = None,
        message_retention_seconds: Optional[int] = None,
        name: Optional[str] = None,
        name_prefix: Optional[str] = None,
        receive_wait_time_seconds: Optional[int] = None,
        redrive_policy: Optional[str] = None,
        secret_key: Optional[str] = None,
        visibility_timeout_seconds: Optional[int] = None) -> MessageQueue
func GetMessageQueue(ctx *Context, name string, id IDInput, state *MessageQueueState, opts ...ResourceOption) (*MessageQueue, error)
public static MessageQueue Get(string name, Input<string> id, MessageQueueState? state, CustomResourceOptions? opts = null)
name
The unique name of the resulting resource.
id
The unique provider ID of the resource to lookup.
state
Any extra arguments used during the lookup.
opts
A bag of options that control this resource's behavior.
resource_name
The unique name of the resulting resource.
id
The unique provider ID of the resource to lookup.
name
The unique name of the resulting resource.
id
The unique provider ID of the resource to lookup.
state
Any extra arguments used during the lookup.
opts
A bag of options that control this resource's behavior.
name
The unique name of the resulting resource.
id
The unique provider ID of the resource to lookup.
state
Any extra arguments used during the lookup.
opts
A bag of options that control this resource's behavior.

The following state arguments are supported:

AccessKey string
The access key to use when applying changes. If omitted, ymq_access_key specified in provider config is used. For more information see documentation.
Arn string
ARN of the Yandex Message Queue. It is used for setting up a redrive policy. See documentation.
ContentBasedDeduplication bool
Enables content-based deduplication. Can be used only if queue is FIFO.
DelaySeconds int
Number of seconds to delay the message from being available for processing. Valid values: from 0 to 900 seconds (15 minutes). Default: 0.
FifoQueue bool
Is this queue FIFO. If this parameter is not used, a standard queue is created. You cannot change the parameter value for a created queue.
MaxMessageSize int
Maximum message size in bytes. Valid values: from 1024 bytes (1 KB) to 262144 bytes (256 KB). Default: 262144 (256 KB). For more information see documentation.
MessageRetentionSeconds int
The length of time in seconds to retain a message. Valid values: from 60 seconds (1 minute) to 1209600 seconds (14 days). Default: 345600 (4 days). For more information see documentation.
Name string
Queue name. The maximum length is 80 characters. You can use numbers, letters, underscores, and hyphens in the name. The name of a FIFO queue must end with the .fifo suffix. If not specified, random name will be generated. Conflicts with name_prefix. For more information see documentation.
NamePrefix string
Generates random name with the specified prefix. Conflicts with name.
ReceiveWaitTimeSeconds int
Wait time for the ReceiveMessage method (for long polling), in seconds. Valid values: from 0 to 20 seconds. Default: 0. For more information about long polling see documentation.
RedrivePolicy string
Message redrive policy in Dead Letter Queue. The source queue and DLQ must be the same type: for FIFO queues, the DLQ must also be a FIFO queue. For more information about redrive policy see documentation. Also you can use example in this page.
SecretKey string
The secret key to use when applying changes. If omitted, ymq_secret_key specified in provider config is used. For more information see documentation.
VisibilityTimeoutSeconds int
Visibility timeout for messages in a queue, specified in seconds. Valid values: from 0 to 43200 seconds (12 hours). Default: 30.
AccessKey string
The access key to use when applying changes. If omitted, ymq_access_key specified in provider config is used. For more information see documentation.
Arn string
ARN of the Yandex Message Queue. It is used for setting up a redrive policy. See documentation.
ContentBasedDeduplication bool
Enables content-based deduplication. Can be used only if queue is FIFO.
DelaySeconds int
Number of seconds to delay the message from being available for processing. Valid values: from 0 to 900 seconds (15 minutes). Default: 0.
FifoQueue bool
Is this queue FIFO. If this parameter is not used, a standard queue is created. You cannot change the parameter value for a created queue.
MaxMessageSize int
Maximum message size in bytes. Valid values: from 1024 bytes (1 KB) to 262144 bytes (256 KB). Default: 262144 (256 KB). For more information see documentation.
MessageRetentionSeconds int
The length of time in seconds to retain a message. Valid values: from 60 seconds (1 minute) to 1209600 seconds (14 days). Default: 345600 (4 days). For more information see documentation.
Name string
Queue name. The maximum length is 80 characters. You can use numbers, letters, underscores, and hyphens in the name. The name of a FIFO queue must end with the .fifo suffix. If not specified, random name will be generated. Conflicts with name_prefix. For more information see documentation.
NamePrefix string
Generates random name with the specified prefix. Conflicts with name.
ReceiveWaitTimeSeconds int
Wait time for the ReceiveMessage method (for long polling), in seconds. Valid values: from 0 to 20 seconds. Default: 0. For more information about long polling see documentation.
RedrivePolicy string
Message redrive policy in Dead Letter Queue. The source queue and DLQ must be the same type: for FIFO queues, the DLQ must also be a FIFO queue. For more information about redrive policy see documentation. Also you can use example in this page.
SecretKey string
The secret key to use when applying changes. If omitted, ymq_secret_key specified in provider config is used. For more information see documentation.
VisibilityTimeoutSeconds int
Visibility timeout for messages in a queue, specified in seconds. Valid values: from 0 to 43200 seconds (12 hours). Default: 30.
accessKey string
The access key to use when applying changes. If omitted, ymq_access_key specified in provider config is used. For more information see documentation.
arn string
ARN of the Yandex Message Queue. It is used for setting up a redrive policy. See documentation.
contentBasedDeduplication boolean
Enables content-based deduplication. Can be used only if queue is FIFO.
delaySeconds number
Number of seconds to delay the message from being available for processing. Valid values: from 0 to 900 seconds (15 minutes). Default: 0.
fifoQueue boolean
Is this queue FIFO. If this parameter is not used, a standard queue is created. You cannot change the parameter value for a created queue.
maxMessageSize number
Maximum message size in bytes. Valid values: from 1024 bytes (1 KB) to 262144 bytes (256 KB). Default: 262144 (256 KB). For more information see documentation.
messageRetentionSeconds number
The length of time in seconds to retain a message. Valid values: from 60 seconds (1 minute) to 1209600 seconds (14 days). Default: 345600 (4 days). For more information see documentation.
name string
Queue name. The maximum length is 80 characters. You can use numbers, letters, underscores, and hyphens in the name. The name of a FIFO queue must end with the .fifo suffix. If not specified, random name will be generated. Conflicts with name_prefix. For more information see documentation.
namePrefix string
Generates random name with the specified prefix. Conflicts with name.
receiveWaitTimeSeconds number
Wait time for the ReceiveMessage method (for long polling), in seconds. Valid values: from 0 to 20 seconds. Default: 0. For more information about long polling see documentation.
redrivePolicy string
Message redrive policy in Dead Letter Queue. The source queue and DLQ must be the same type: for FIFO queues, the DLQ must also be a FIFO queue. For more information about redrive policy see documentation. Also you can use example in this page.
secretKey string
The secret key to use when applying changes. If omitted, ymq_secret_key specified in provider config is used. For more information see documentation.
visibilityTimeoutSeconds number
Visibility timeout for messages in a queue, specified in seconds. Valid values: from 0 to 43200 seconds (12 hours). Default: 30.
access_key str
The access key to use when applying changes. If omitted, ymq_access_key specified in provider config is used. For more information see documentation.
arn str
ARN of the Yandex Message Queue. It is used for setting up a redrive policy. See documentation.
content_based_deduplication bool
Enables content-based deduplication. Can be used only if queue is FIFO.
delay_seconds int
Number of seconds to delay the message from being available for processing. Valid values: from 0 to 900 seconds (15 minutes). Default: 0.
fifo_queue bool
Is this queue FIFO. If this parameter is not used, a standard queue is created. You cannot change the parameter value for a created queue.
max_message_size int
Maximum message size in bytes. Valid values: from 1024 bytes (1 KB) to 262144 bytes (256 KB). Default: 262144 (256 KB). For more information see documentation.
message_retention_seconds int
The length of time in seconds to retain a message. Valid values: from 60 seconds (1 minute) to 1209600 seconds (14 days). Default: 345600 (4 days). For more information see documentation.
name str
Queue name. The maximum length is 80 characters. You can use numbers, letters, underscores, and hyphens in the name. The name of a FIFO queue must end with the .fifo suffix. If not specified, random name will be generated. Conflicts with name_prefix. For more information see documentation.
name_prefix str
Generates random name with the specified prefix. Conflicts with name.
receive_wait_time_seconds int
Wait time for the ReceiveMessage method (for long polling), in seconds. Valid values: from 0 to 20 seconds. Default: 0. For more information about long polling see documentation.
redrive_policy str
Message redrive policy in Dead Letter Queue. The source queue and DLQ must be the same type: for FIFO queues, the DLQ must also be a FIFO queue. For more information about redrive policy see documentation. Also you can use example in this page.
secret_key str
The secret key to use when applying changes. If omitted, ymq_secret_key specified in provider config is used. For more information see documentation.
visibility_timeout_seconds int
Visibility timeout for messages in a queue, specified in seconds. Valid values: from 0 to 43200 seconds (12 hours). Default: 30.

Import

Yandex Message Queues can be imported using its queue url, e.g.

 $ pulumi import yandex:index/messageQueue:MessageQueue example_import_queue https://message-queue.api.cloud.yandex.net/abcdefghijklmn123456/opqrstuvwxyz87654321/ymq_terraform_import_example

Package Details

Repository
https://github.com/pulumi/pulumi-yandex
License
Apache-2.0
Notes
This Pulumi package is based on the yandex Terraform Provider.