oci.DataSafe.getAlertAnalytic
Explore with Pulumi AI
This data source provides details about a specific Alert Analytic resource in Oracle Cloud Infrastructure Data Safe service.
Returns aggregation details of alerts.
Example Usage
import * as pulumi from "@pulumi/pulumi";
import * as oci from "@pulumi/oci";
const testAlertAnalytic = oci.DataSafe.getAlertAnalytic({
compartmentId: compartmentId,
accessLevel: alertAnalyticAccessLevel,
compartmentIdInSubtree: alertAnalyticCompartmentIdInSubtree,
groupBies: alertAnalyticGroupBy,
queryTimeZone: alertAnalyticQueryTimeZone,
scimQuery: alertAnalyticScimQuery,
summaryFields: alertAnalyticSummaryField,
timeEnded: alertAnalyticTimeEnded,
timeStarted: alertAnalyticTimeStarted,
});
import pulumi
import pulumi_oci as oci
test_alert_analytic = oci.DataSafe.get_alert_analytic(compartment_id=compartment_id,
access_level=alert_analytic_access_level,
compartment_id_in_subtree=alert_analytic_compartment_id_in_subtree,
group_bies=alert_analytic_group_by,
query_time_zone=alert_analytic_query_time_zone,
scim_query=alert_analytic_scim_query,
summary_fields=alert_analytic_summary_field,
time_ended=alert_analytic_time_ended,
time_started=alert_analytic_time_started)
package main
import (
"github.com/pulumi/pulumi-oci/sdk/go/oci/DataSafe"
"github.com/pulumi/pulumi/sdk/v3/go/pulumi"
)
func main() {
pulumi.Run(func(ctx *pulumi.Context) error {
_, err := DataSafe.GetAlertAnalytic(ctx, &datasafe.GetAlertAnalyticArgs{
CompartmentId: compartmentId,
AccessLevel: pulumi.StringRef(alertAnalyticAccessLevel),
CompartmentIdInSubtree: pulumi.BoolRef(alertAnalyticCompartmentIdInSubtree),
GroupBies: alertAnalyticGroupBy,
QueryTimeZone: pulumi.StringRef(alertAnalyticQueryTimeZone),
ScimQuery: pulumi.StringRef(alertAnalyticScimQuery),
SummaryFields: alertAnalyticSummaryField,
TimeEnded: pulumi.StringRef(alertAnalyticTimeEnded),
TimeStarted: pulumi.StringRef(alertAnalyticTimeStarted),
}, nil)
if err != nil {
return err
}
return nil
})
}
using System.Collections.Generic;
using System.Linq;
using Pulumi;
using Oci = Pulumi.Oci;
return await Deployment.RunAsync(() =>
{
var testAlertAnalytic = Oci.DataSafe.GetAlertAnalytic.Invoke(new()
{
CompartmentId = compartmentId,
AccessLevel = alertAnalyticAccessLevel,
CompartmentIdInSubtree = alertAnalyticCompartmentIdInSubtree,
GroupBies = alertAnalyticGroupBy,
QueryTimeZone = alertAnalyticQueryTimeZone,
ScimQuery = alertAnalyticScimQuery,
SummaryFields = alertAnalyticSummaryField,
TimeEnded = alertAnalyticTimeEnded,
TimeStarted = alertAnalyticTimeStarted,
});
});
package generated_program;
import com.pulumi.Context;
import com.pulumi.Pulumi;
import com.pulumi.core.Output;
import com.pulumi.oci.DataSafe.DataSafeFunctions;
import com.pulumi.oci.DataSafe.inputs.GetAlertAnalyticArgs;
import java.util.List;
import java.util.ArrayList;
import java.util.Map;
import java.io.File;
import java.nio.file.Files;
import java.nio.file.Paths;
public class App {
public static void main(String[] args) {
Pulumi.run(App::stack);
}
public static void stack(Context ctx) {
final var testAlertAnalytic = DataSafeFunctions.getAlertAnalytic(GetAlertAnalyticArgs.builder()
.compartmentId(compartmentId)
.accessLevel(alertAnalyticAccessLevel)
.compartmentIdInSubtree(alertAnalyticCompartmentIdInSubtree)
.groupBies(alertAnalyticGroupBy)
.queryTimeZone(alertAnalyticQueryTimeZone)
.scimQuery(alertAnalyticScimQuery)
.summaryFields(alertAnalyticSummaryField)
.timeEnded(alertAnalyticTimeEnded)
.timeStarted(alertAnalyticTimeStarted)
.build());
}
}
variables:
testAlertAnalytic:
fn::invoke:
Function: oci:DataSafe:getAlertAnalytic
Arguments:
compartmentId: ${compartmentId}
accessLevel: ${alertAnalyticAccessLevel}
compartmentIdInSubtree: ${alertAnalyticCompartmentIdInSubtree}
groupBies: ${alertAnalyticGroupBy}
queryTimeZone: ${alertAnalyticQueryTimeZone}
scimQuery: ${alertAnalyticScimQuery}
summaryFields: ${alertAnalyticSummaryField}
timeEnded: ${alertAnalyticTimeEnded}
timeStarted: ${alertAnalyticTimeStarted}
Using getAlertAnalytic
Two invocation forms are available. The direct form accepts plain arguments and either blocks until the result value is available, or returns a Promise-wrapped result. The output form accepts Input-wrapped arguments and returns an Output-wrapped result.
function getAlertAnalytic(args: GetAlertAnalyticArgs, opts?: InvokeOptions): Promise<GetAlertAnalyticResult>
function getAlertAnalyticOutput(args: GetAlertAnalyticOutputArgs, opts?: InvokeOptions): Output<GetAlertAnalyticResult>
def get_alert_analytic(access_level: Optional[str] = None,
compartment_id: Optional[str] = None,
compartment_id_in_subtree: Optional[bool] = None,
group_bies: Optional[Sequence[str]] = None,
query_time_zone: Optional[str] = None,
scim_query: Optional[str] = None,
summary_fields: Optional[Sequence[str]] = None,
time_ended: Optional[str] = None,
time_started: Optional[str] = None,
opts: Optional[InvokeOptions] = None) -> GetAlertAnalyticResult
def get_alert_analytic_output(access_level: Optional[pulumi.Input[str]] = None,
compartment_id: Optional[pulumi.Input[str]] = None,
compartment_id_in_subtree: Optional[pulumi.Input[bool]] = None,
group_bies: Optional[pulumi.Input[Sequence[pulumi.Input[str]]]] = None,
query_time_zone: Optional[pulumi.Input[str]] = None,
scim_query: Optional[pulumi.Input[str]] = None,
summary_fields: Optional[pulumi.Input[Sequence[pulumi.Input[str]]]] = None,
time_ended: Optional[pulumi.Input[str]] = None,
time_started: Optional[pulumi.Input[str]] = None,
opts: Optional[InvokeOptions] = None) -> Output[GetAlertAnalyticResult]
func GetAlertAnalytic(ctx *Context, args *GetAlertAnalyticArgs, opts ...InvokeOption) (*GetAlertAnalyticResult, error)
func GetAlertAnalyticOutput(ctx *Context, args *GetAlertAnalyticOutputArgs, opts ...InvokeOption) GetAlertAnalyticResultOutput
> Note: This function is named GetAlertAnalytic
in the Go SDK.
public static class GetAlertAnalytic
{
public static Task<GetAlertAnalyticResult> InvokeAsync(GetAlertAnalyticArgs args, InvokeOptions? opts = null)
public static Output<GetAlertAnalyticResult> Invoke(GetAlertAnalyticInvokeArgs args, InvokeOptions? opts = null)
}
public static CompletableFuture<GetAlertAnalyticResult> getAlertAnalytic(GetAlertAnalyticArgs args, InvokeOptions options)
// Output-based functions aren't available in Java yet
fn::invoke:
function: oci:DataSafe/getAlertAnalytic:getAlertAnalytic
arguments:
# arguments dictionary
The following arguments are supported:
- Compartment
Id string - A filter to return only resources that match the specified compartment OCID.
- Access
Level string - Valid values are RESTRICTED and ACCESSIBLE. Default is RESTRICTED. Setting this to ACCESSIBLE returns only those compartments for which the user has INSPECT permissions directly or indirectly (permissions can be on a resource in a subcompartment). When set to RESTRICTED permissions are checked and no partial results are displayed.
- Compartment
Id boolIn Subtree - Default is false. When set to true, the hierarchy of compartments is traversed and all compartments and subcompartments in the tenancy are returned. Depends on the 'accessLevel' setting.
- Group
Bies List<string> - A groupBy can only be used in combination with summaryField parameter. A groupBy value has to be a subset of the values mentioned in summaryField parameter.
- Query
Time stringZone - Default time zone is UTC if no time zone provided. The date-time considerations of the resource will be in accordance with the specified time zone.
- Scim
Query string The scimQuery query parameter accepts filter expressions that use the syntax described in Section 3.2.2.2 of the System for Cross-Domain Identity Management (SCIM) specification, which is available at RFC3339. In SCIM filtering expressions, text, date, and time values must be enclosed in quotation marks, with date and time values using ISO-8601 format. (Numeric and boolean values should not be quoted.)
Example: query=(timeCreated ge '2021-06-04T01-00-26') and (targetNames eq 'target_1') Supported fields: severity status alertType targetIds targetNames operationTime lifecycleState displayName timeCreated timeUpdated
- Summary
Fields List<string> - Specifies a subset of summarized fields to be returned in the response.
- Time
Ended string - An optional filter to return audit events whose creation time in the database is less than and equal to the date-time specified, in the format defined by RFC3339.
- Time
Started string - An optional filter to return audit events whose creation time in the database is greater than and equal to the date-time specified, in the format defined by RFC3339.
- Compartment
Id string - A filter to return only resources that match the specified compartment OCID.
- Access
Level string - Valid values are RESTRICTED and ACCESSIBLE. Default is RESTRICTED. Setting this to ACCESSIBLE returns only those compartments for which the user has INSPECT permissions directly or indirectly (permissions can be on a resource in a subcompartment). When set to RESTRICTED permissions are checked and no partial results are displayed.
- Compartment
Id boolIn Subtree - Default is false. When set to true, the hierarchy of compartments is traversed and all compartments and subcompartments in the tenancy are returned. Depends on the 'accessLevel' setting.
- Group
Bies []string - A groupBy can only be used in combination with summaryField parameter. A groupBy value has to be a subset of the values mentioned in summaryField parameter.
- Query
Time stringZone - Default time zone is UTC if no time zone provided. The date-time considerations of the resource will be in accordance with the specified time zone.
- Scim
Query string The scimQuery query parameter accepts filter expressions that use the syntax described in Section 3.2.2.2 of the System for Cross-Domain Identity Management (SCIM) specification, which is available at RFC3339. In SCIM filtering expressions, text, date, and time values must be enclosed in quotation marks, with date and time values using ISO-8601 format. (Numeric and boolean values should not be quoted.)
Example: query=(timeCreated ge '2021-06-04T01-00-26') and (targetNames eq 'target_1') Supported fields: severity status alertType targetIds targetNames operationTime lifecycleState displayName timeCreated timeUpdated
- Summary
Fields []string - Specifies a subset of summarized fields to be returned in the response.
- Time
Ended string - An optional filter to return audit events whose creation time in the database is less than and equal to the date-time specified, in the format defined by RFC3339.
- Time
Started string - An optional filter to return audit events whose creation time in the database is greater than and equal to the date-time specified, in the format defined by RFC3339.
- compartment
Id String - A filter to return only resources that match the specified compartment OCID.
- access
Level String - Valid values are RESTRICTED and ACCESSIBLE. Default is RESTRICTED. Setting this to ACCESSIBLE returns only those compartments for which the user has INSPECT permissions directly or indirectly (permissions can be on a resource in a subcompartment). When set to RESTRICTED permissions are checked and no partial results are displayed.
- compartment
Id BooleanIn Subtree - Default is false. When set to true, the hierarchy of compartments is traversed and all compartments and subcompartments in the tenancy are returned. Depends on the 'accessLevel' setting.
- group
Bies List<String> - A groupBy can only be used in combination with summaryField parameter. A groupBy value has to be a subset of the values mentioned in summaryField parameter.
- query
Time StringZone - Default time zone is UTC if no time zone provided. The date-time considerations of the resource will be in accordance with the specified time zone.
- scim
Query String The scimQuery query parameter accepts filter expressions that use the syntax described in Section 3.2.2.2 of the System for Cross-Domain Identity Management (SCIM) specification, which is available at RFC3339. In SCIM filtering expressions, text, date, and time values must be enclosed in quotation marks, with date and time values using ISO-8601 format. (Numeric and boolean values should not be quoted.)
Example: query=(timeCreated ge '2021-06-04T01-00-26') and (targetNames eq 'target_1') Supported fields: severity status alertType targetIds targetNames operationTime lifecycleState displayName timeCreated timeUpdated
- summary
Fields List<String> - Specifies a subset of summarized fields to be returned in the response.
- time
Ended String - An optional filter to return audit events whose creation time in the database is less than and equal to the date-time specified, in the format defined by RFC3339.
- time
Started String - An optional filter to return audit events whose creation time in the database is greater than and equal to the date-time specified, in the format defined by RFC3339.
- compartment
Id string - A filter to return only resources that match the specified compartment OCID.
- access
Level string - Valid values are RESTRICTED and ACCESSIBLE. Default is RESTRICTED. Setting this to ACCESSIBLE returns only those compartments for which the user has INSPECT permissions directly or indirectly (permissions can be on a resource in a subcompartment). When set to RESTRICTED permissions are checked and no partial results are displayed.
- compartment
Id booleanIn Subtree - Default is false. When set to true, the hierarchy of compartments is traversed and all compartments and subcompartments in the tenancy are returned. Depends on the 'accessLevel' setting.
- group
Bies string[] - A groupBy can only be used in combination with summaryField parameter. A groupBy value has to be a subset of the values mentioned in summaryField parameter.
- query
Time stringZone - Default time zone is UTC if no time zone provided. The date-time considerations of the resource will be in accordance with the specified time zone.
- scim
Query string The scimQuery query parameter accepts filter expressions that use the syntax described in Section 3.2.2.2 of the System for Cross-Domain Identity Management (SCIM) specification, which is available at RFC3339. In SCIM filtering expressions, text, date, and time values must be enclosed in quotation marks, with date and time values using ISO-8601 format. (Numeric and boolean values should not be quoted.)
Example: query=(timeCreated ge '2021-06-04T01-00-26') and (targetNames eq 'target_1') Supported fields: severity status alertType targetIds targetNames operationTime lifecycleState displayName timeCreated timeUpdated
- summary
Fields string[] - Specifies a subset of summarized fields to be returned in the response.
- time
Ended string - An optional filter to return audit events whose creation time in the database is less than and equal to the date-time specified, in the format defined by RFC3339.
- time
Started string - An optional filter to return audit events whose creation time in the database is greater than and equal to the date-time specified, in the format defined by RFC3339.
- compartment_
id str - A filter to return only resources that match the specified compartment OCID.
- access_
level str - Valid values are RESTRICTED and ACCESSIBLE. Default is RESTRICTED. Setting this to ACCESSIBLE returns only those compartments for which the user has INSPECT permissions directly or indirectly (permissions can be on a resource in a subcompartment). When set to RESTRICTED permissions are checked and no partial results are displayed.
- compartment_
id_ boolin_ subtree - Default is false. When set to true, the hierarchy of compartments is traversed and all compartments and subcompartments in the tenancy are returned. Depends on the 'accessLevel' setting.
- group_
bies Sequence[str] - A groupBy can only be used in combination with summaryField parameter. A groupBy value has to be a subset of the values mentioned in summaryField parameter.
- query_
time_ strzone - Default time zone is UTC if no time zone provided. The date-time considerations of the resource will be in accordance with the specified time zone.
- scim_
query str The scimQuery query parameter accepts filter expressions that use the syntax described in Section 3.2.2.2 of the System for Cross-Domain Identity Management (SCIM) specification, which is available at RFC3339. In SCIM filtering expressions, text, date, and time values must be enclosed in quotation marks, with date and time values using ISO-8601 format. (Numeric and boolean values should not be quoted.)
Example: query=(timeCreated ge '2021-06-04T01-00-26') and (targetNames eq 'target_1') Supported fields: severity status alertType targetIds targetNames operationTime lifecycleState displayName timeCreated timeUpdated
- summary_
fields Sequence[str] - Specifies a subset of summarized fields to be returned in the response.
- time_
ended str - An optional filter to return audit events whose creation time in the database is less than and equal to the date-time specified, in the format defined by RFC3339.
- time_
started str - An optional filter to return audit events whose creation time in the database is greater than and equal to the date-time specified, in the format defined by RFC3339.
- compartment
Id String - A filter to return only resources that match the specified compartment OCID.
- access
Level String - Valid values are RESTRICTED and ACCESSIBLE. Default is RESTRICTED. Setting this to ACCESSIBLE returns only those compartments for which the user has INSPECT permissions directly or indirectly (permissions can be on a resource in a subcompartment). When set to RESTRICTED permissions are checked and no partial results are displayed.
- compartment
Id BooleanIn Subtree - Default is false. When set to true, the hierarchy of compartments is traversed and all compartments and subcompartments in the tenancy are returned. Depends on the 'accessLevel' setting.
- group
Bies List<String> - A groupBy can only be used in combination with summaryField parameter. A groupBy value has to be a subset of the values mentioned in summaryField parameter.
- query
Time StringZone - Default time zone is UTC if no time zone provided. The date-time considerations of the resource will be in accordance with the specified time zone.
- scim
Query String The scimQuery query parameter accepts filter expressions that use the syntax described in Section 3.2.2.2 of the System for Cross-Domain Identity Management (SCIM) specification, which is available at RFC3339. In SCIM filtering expressions, text, date, and time values must be enclosed in quotation marks, with date and time values using ISO-8601 format. (Numeric and boolean values should not be quoted.)
Example: query=(timeCreated ge '2021-06-04T01-00-26') and (targetNames eq 'target_1') Supported fields: severity status alertType targetIds targetNames operationTime lifecycleState displayName timeCreated timeUpdated
- summary
Fields List<String> - Specifies a subset of summarized fields to be returned in the response.
- time
Ended String - An optional filter to return audit events whose creation time in the database is less than and equal to the date-time specified, in the format defined by RFC3339.
- time
Started String - An optional filter to return audit events whose creation time in the database is greater than and equal to the date-time specified, in the format defined by RFC3339.
getAlertAnalytic Result
The following output properties are available:
- Compartment
Id string - Id string
- The provider-assigned unique ID for this managed resource.
- Items
List<Get
Alert Analytic Item> - The aggregated data point items.
- Access
Level string - Compartment
Id boolIn Subtree - Group
Bies List<string> - GroupBy value used in aggregation.
- Query
Time stringZone - Scim
Query string - Summary
Fields List<string> - Time
Ended string - The time at which the aggregation ended.
- Time
Started string - The time at which the aggregation started.
- Compartment
Id string - Id string
- The provider-assigned unique ID for this managed resource.
- Items
[]Get
Alert Analytic Item - The aggregated data point items.
- Access
Level string - Compartment
Id boolIn Subtree - Group
Bies []string - GroupBy value used in aggregation.
- Query
Time stringZone - Scim
Query string - Summary
Fields []string - Time
Ended string - The time at which the aggregation ended.
- Time
Started string - The time at which the aggregation started.
- compartment
Id String - id String
- The provider-assigned unique ID for this managed resource.
- items
List<Get
Alert Analytic Item> - The aggregated data point items.
- access
Level String - compartment
Id BooleanIn Subtree - group
Bies List<String> - GroupBy value used in aggregation.
- query
Time StringZone - scim
Query String - summary
Fields List<String> - time
Ended String - The time at which the aggregation ended.
- time
Started String - The time at which the aggregation started.
- compartment
Id string - id string
- The provider-assigned unique ID for this managed resource.
- items
Get
Alert Analytic Item[] - The aggregated data point items.
- access
Level string - compartment
Id booleanIn Subtree - group
Bies string[] - GroupBy value used in aggregation.
- query
Time stringZone - scim
Query string - summary
Fields string[] - time
Ended string - The time at which the aggregation ended.
- time
Started string - The time at which the aggregation started.
- compartment_
id str - id str
- The provider-assigned unique ID for this managed resource.
- items
Sequence[datasafe.
Get Alert Analytic Item] - The aggregated data point items.
- access_
level str - compartment_
id_ boolin_ subtree - group_
bies Sequence[str] - GroupBy value used in aggregation.
- query_
time_ strzone - scim_
query str - summary_
fields Sequence[str] - time_
ended str - The time at which the aggregation ended.
- time_
started str - The time at which the aggregation started.
- compartment
Id String - id String
- The provider-assigned unique ID for this managed resource.
- items List<Property Map>
- The aggregated data point items.
- access
Level String - compartment
Id BooleanIn Subtree - group
Bies List<String> - GroupBy value used in aggregation.
- query
Time StringZone - scim
Query String - summary
Fields List<String> - time
Ended String - The time at which the aggregation ended.
- time
Started String - The time at which the aggregation started.
Supporting Types
GetAlertAnalyticItem
- Count string
- Total count of aggregated values.
- Dimensions
List<Get
Alert Analytic Item Dimension> - Details of aggregation dimension summarizing alerts.
- Metric
Name string - The name of the aggregation.
- Time
Ended string - An optional filter to return audit events whose creation time in the database is less than and equal to the date-time specified, in the format defined by RFC3339.
- Time
Started string - An optional filter to return audit events whose creation time in the database is greater than and equal to the date-time specified, in the format defined by RFC3339.
- Count string
- Total count of aggregated values.
- Dimensions
[]Get
Alert Analytic Item Dimension - Details of aggregation dimension summarizing alerts.
- Metric
Name string - The name of the aggregation.
- Time
Ended string - An optional filter to return audit events whose creation time in the database is less than and equal to the date-time specified, in the format defined by RFC3339.
- Time
Started string - An optional filter to return audit events whose creation time in the database is greater than and equal to the date-time specified, in the format defined by RFC3339.
- count String
- Total count of aggregated values.
- dimensions
List<Get
Alert Analytic Item Dimension> - Details of aggregation dimension summarizing alerts.
- metric
Name String - The name of the aggregation.
- time
Ended String - An optional filter to return audit events whose creation time in the database is less than and equal to the date-time specified, in the format defined by RFC3339.
- time
Started String - An optional filter to return audit events whose creation time in the database is greater than and equal to the date-time specified, in the format defined by RFC3339.
- count string
- Total count of aggregated values.
- dimensions
Get
Alert Analytic Item Dimension[] - Details of aggregation dimension summarizing alerts.
- metric
Name string - The name of the aggregation.
- time
Ended string - An optional filter to return audit events whose creation time in the database is less than and equal to the date-time specified, in the format defined by RFC3339.
- time
Started string - An optional filter to return audit events whose creation time in the database is greater than and equal to the date-time specified, in the format defined by RFC3339.
- count str
- Total count of aggregated values.
- dimensions
Sequence[datasafe.
Get Alert Analytic Item Dimension] - Details of aggregation dimension summarizing alerts.
- metric_
name str - The name of the aggregation.
- time_
ended str - An optional filter to return audit events whose creation time in the database is less than and equal to the date-time specified, in the format defined by RFC3339.
- time_
started str - An optional filter to return audit events whose creation time in the database is greater than and equal to the date-time specified, in the format defined by RFC3339.
- count String
- Total count of aggregated values.
- dimensions List<Property Map>
- Details of aggregation dimension summarizing alerts.
- metric
Name String - The name of the aggregation.
- time
Ended String - An optional filter to return audit events whose creation time in the database is less than and equal to the date-time specified, in the format defined by RFC3339.
- time
Started String - An optional filter to return audit events whose creation time in the database is greater than and equal to the date-time specified, in the format defined by RFC3339.
GetAlertAnalyticItemDimension
- Group
By Dictionary<string, object> - A groupBy can only be used in combination with summaryField parameter. A groupBy value has to be a subset of the values mentioned in summaryField parameter.
- Group
By map[string]interface{} - A groupBy can only be used in combination with summaryField parameter. A groupBy value has to be a subset of the values mentioned in summaryField parameter.
- group
By Map<String,Object> - A groupBy can only be used in combination with summaryField parameter. A groupBy value has to be a subset of the values mentioned in summaryField parameter.
- group
By {[key: string]: any} - A groupBy can only be used in combination with summaryField parameter. A groupBy value has to be a subset of the values mentioned in summaryField parameter.
- group_
by Mapping[str, Any] - A groupBy can only be used in combination with summaryField parameter. A groupBy value has to be a subset of the values mentioned in summaryField parameter.
- group
By Map<Any> - A groupBy can only be used in combination with summaryField parameter. A groupBy value has to be a subset of the values mentioned in summaryField parameter.
Package Details
- Repository
- oci pulumi/pulumi-oci
- License
- Apache-2.0
- Notes
- This Pulumi package is based on the
oci
Terraform Provider.