Oracle Cloud Infrastructure v2.33.0 published on Thursday, May 1, 2025 by Pulumi
oci.DatabaseManagement.getExternalClusters
Explore with Pulumi AI
This data source provides the list of External Clusters in Oracle Cloud Infrastructure Database Management service.
Lists the clusters in the specified external DB system.
Example Usage
import * as pulumi from "@pulumi/pulumi";
import * as oci from "@pulumi/oci";
const testExternalClusters = oci.DatabaseManagement.getExternalClusters({
    compartmentId: compartmentId,
    displayName: externalClusterDisplayName,
    externalDbSystemId: testExternalDbSystem.id,
});
import pulumi
import pulumi_oci as oci
test_external_clusters = oci.DatabaseManagement.get_external_clusters(compartment_id=compartment_id,
    display_name=external_cluster_display_name,
    external_db_system_id=test_external_db_system["id"])
package main
import (
	"github.com/pulumi/pulumi-oci/sdk/v2/go/oci/databasemanagement"
	"github.com/pulumi/pulumi/sdk/v3/go/pulumi"
)
func main() {
	pulumi.Run(func(ctx *pulumi.Context) error {
		_, err := databasemanagement.GetExternalClusters(ctx, &databasemanagement.GetExternalClustersArgs{
			CompartmentId:      pulumi.StringRef(compartmentId),
			DisplayName:        pulumi.StringRef(externalClusterDisplayName),
			ExternalDbSystemId: pulumi.StringRef(testExternalDbSystem.Id),
		}, 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 testExternalClusters = Oci.DatabaseManagement.GetExternalClusters.Invoke(new()
    {
        CompartmentId = compartmentId,
        DisplayName = externalClusterDisplayName,
        ExternalDbSystemId = testExternalDbSystem.Id,
    });
});
package generated_program;
import com.pulumi.Context;
import com.pulumi.Pulumi;
import com.pulumi.core.Output;
import com.pulumi.oci.DatabaseManagement.DatabaseManagementFunctions;
import com.pulumi.oci.DatabaseManagement.inputs.GetExternalClustersArgs;
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 testExternalClusters = DatabaseManagementFunctions.getExternalClusters(GetExternalClustersArgs.builder()
            .compartmentId(compartmentId)
            .displayName(externalClusterDisplayName)
            .externalDbSystemId(testExternalDbSystem.id())
            .build());
    }
}
variables:
  testExternalClusters:
    fn::invoke:
      function: oci:DatabaseManagement:getExternalClusters
      arguments:
        compartmentId: ${compartmentId}
        displayName: ${externalClusterDisplayName}
        externalDbSystemId: ${testExternalDbSystem.id}
Using getExternalClusters
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 getExternalClusters(args: GetExternalClustersArgs, opts?: InvokeOptions): Promise<GetExternalClustersResult>
function getExternalClustersOutput(args: GetExternalClustersOutputArgs, opts?: InvokeOptions): Output<GetExternalClustersResult>def get_external_clusters(compartment_id: Optional[str] = None,
                          display_name: Optional[str] = None,
                          external_db_system_id: Optional[str] = None,
                          filters: Optional[Sequence[GetExternalClustersFilter]] = None,
                          opts: Optional[InvokeOptions] = None) -> GetExternalClustersResult
def get_external_clusters_output(compartment_id: Optional[pulumi.Input[str]] = None,
                          display_name: Optional[pulumi.Input[str]] = None,
                          external_db_system_id: Optional[pulumi.Input[str]] = None,
                          filters: Optional[pulumi.Input[Sequence[pulumi.Input[GetExternalClustersFilterArgs]]]] = None,
                          opts: Optional[InvokeOptions] = None) -> Output[GetExternalClustersResult]func GetExternalClusters(ctx *Context, args *GetExternalClustersArgs, opts ...InvokeOption) (*GetExternalClustersResult, error)
func GetExternalClustersOutput(ctx *Context, args *GetExternalClustersOutputArgs, opts ...InvokeOption) GetExternalClustersResultOutput> Note: This function is named GetExternalClusters in the Go SDK.
public static class GetExternalClusters 
{
    public static Task<GetExternalClustersResult> InvokeAsync(GetExternalClustersArgs args, InvokeOptions? opts = null)
    public static Output<GetExternalClustersResult> Invoke(GetExternalClustersInvokeArgs args, InvokeOptions? opts = null)
}public static CompletableFuture<GetExternalClustersResult> getExternalClusters(GetExternalClustersArgs args, InvokeOptions options)
public static Output<GetExternalClustersResult> getExternalClusters(GetExternalClustersArgs args, InvokeOptions options)
fn::invoke:
  function: oci:DatabaseManagement/getExternalClusters:getExternalClusters
  arguments:
    # arguments dictionaryThe following arguments are supported:
- CompartmentId string
- The OCID of the compartment.
- DisplayName string
- A filter to only return the resources that match the entire display name.
- ExternalDb stringSystem Id 
- The OCID of the external DB system.
- Filters
List<GetExternal Clusters Filter> 
- CompartmentId string
- The OCID of the compartment.
- DisplayName string
- A filter to only return the resources that match the entire display name.
- ExternalDb stringSystem Id 
- The OCID of the external DB system.
- Filters
[]GetExternal Clusters Filter 
- compartmentId String
- The OCID of the compartment.
- displayName String
- A filter to only return the resources that match the entire display name.
- externalDb StringSystem Id 
- The OCID of the external DB system.
- filters
List<GetExternal Clusters Filter> 
- compartmentId string
- The OCID of the compartment.
- displayName string
- A filter to only return the resources that match the entire display name.
- externalDb stringSystem Id 
- The OCID of the external DB system.
- filters
GetExternal Clusters Filter[] 
- compartment_id str
- The OCID of the compartment.
- display_name str
- A filter to only return the resources that match the entire display name.
- external_db_ strsystem_ id 
- The OCID of the external DB system.
- filters
Sequence[GetExternal Clusters Filter] 
- compartmentId String
- The OCID of the compartment.
- displayName String
- A filter to only return the resources that match the entire display name.
- externalDb StringSystem Id 
- The OCID of the external DB system.
- filters List<Property Map>
getExternalClusters Result
The following output properties are available:
- ExternalCluster List<GetCollections External Clusters External Cluster Collection> 
- The list of external_cluster_collection.
- Id string
- The provider-assigned unique ID for this managed resource.
- CompartmentId string
- The OCID of the compartment.
- DisplayName string
- The user-friendly name for the external cluster. The name does not have to be unique.
- ExternalDb stringSystem Id 
- The OCID of the external DB system that the cluster is a part of.
- Filters
List<GetExternal Clusters Filter> 
- ExternalCluster []GetCollections External Clusters External Cluster Collection 
- The list of external_cluster_collection.
- Id string
- The provider-assigned unique ID for this managed resource.
- CompartmentId string
- The OCID of the compartment.
- DisplayName string
- The user-friendly name for the external cluster. The name does not have to be unique.
- ExternalDb stringSystem Id 
- The OCID of the external DB system that the cluster is a part of.
- Filters
[]GetExternal Clusters Filter 
- externalCluster List<GetCollections External Clusters External Cluster Collection> 
- The list of external_cluster_collection.
- id String
- The provider-assigned unique ID for this managed resource.
- compartmentId String
- The OCID of the compartment.
- displayName String
- The user-friendly name for the external cluster. The name does not have to be unique.
- externalDb StringSystem Id 
- The OCID of the external DB system that the cluster is a part of.
- filters
List<GetExternal Clusters Filter> 
- externalCluster GetCollections External Clusters External Cluster Collection[] 
- The list of external_cluster_collection.
- id string
- The provider-assigned unique ID for this managed resource.
- compartmentId string
- The OCID of the compartment.
- displayName string
- The user-friendly name for the external cluster. The name does not have to be unique.
- externalDb stringSystem Id 
- The OCID of the external DB system that the cluster is a part of.
- filters
GetExternal Clusters Filter[] 
- external_cluster_ Sequence[Getcollections External Clusters External Cluster Collection] 
- The list of external_cluster_collection.
- id str
- The provider-assigned unique ID for this managed resource.
- compartment_id str
- The OCID of the compartment.
- display_name str
- The user-friendly name for the external cluster. The name does not have to be unique.
- external_db_ strsystem_ id 
- The OCID of the external DB system that the cluster is a part of.
- filters
Sequence[GetExternal Clusters Filter] 
- externalCluster List<Property Map>Collections 
- The list of external_cluster_collection.
- id String
- The provider-assigned unique ID for this managed resource.
- compartmentId String
- The OCID of the compartment.
- displayName String
- The user-friendly name for the external cluster. The name does not have to be unique.
- externalDb StringSystem Id 
- The OCID of the external DB system that the cluster is a part of.
- filters List<Property Map>
Supporting Types
GetExternalClustersExternalClusterCollection     
GetExternalClustersExternalClusterCollectionItem      
- AdditionalDetails Dictionary<string, string>
- The additional details of the external cluster defined in {"key": "value"}format. Example:{"bar-key": "value"}
- CompartmentId string
- The OCID of the compartment.
- ComponentName string
- The name of the external cluster.
- Dictionary<string, string>
- Defined tags for this resource. Each key is predefined and scoped to a namespace. For more information, see Resource Tags. Example: {"Operations.CostCenter": "42"}
- DisplayName string
- A filter to only return the resources that match the entire display name.
- ExternalCluster stringId 
- ExternalConnector stringId 
- The OCID of the external connector.
- ExternalDb stringSystem Id 
- The OCID of the external DB system.
- Dictionary<string, string>
- Free-form tags for this resource. Each tag is a simple key-value pair with no predefined name, type, or namespace. For more information, see Resource Tags. Example: {"Department": "Finance"}
- GridHome string
- The directory in which Oracle Grid Infrastructure is installed.
- Id string
- The OCID of the external cluster.
- IsFlex boolCluster 
- Indicates whether the cluster is Oracle Flex Cluster or not.
- LifecycleDetails string
- Additional information about the current lifecycle state.
- NetworkConfigurations List<GetExternal Clusters External Cluster Collection Item Network Configuration> 
- The list of network address configurations of the external cluster.
- OcrFile stringLocation 
- The location of the Oracle Cluster Registry (OCR).
- ScanConfigurations List<GetExternal Clusters External Cluster Collection Item Scan Configuration> 
- The list of Single Client Access Name (SCAN) configurations of the external cluster.
- State string
- The current lifecycle state of the external cluster.
- Dictionary<string, string>
- System tags for this resource. Each key is predefined and scoped to a namespace. For more information, see Resource Tags. System tags can be viewed by users, but can only be created by the system. Example: {"orcl-cloud.free-tier-retained": "true"}
- TimeCreated string
- The date and time the external cluster was created.
- TimeUpdated string
- The date and time the external cluster was last updated.
- Version string
- The cluster version.
- VipConfigurations List<GetExternal Clusters External Cluster Collection Item Vip Configuration> 
- The list of Virtual IP (VIP) configurations of the external cluster.
- AdditionalDetails map[string]string
- The additional details of the external cluster defined in {"key": "value"}format. Example:{"bar-key": "value"}
- CompartmentId string
- The OCID of the compartment.
- ComponentName string
- The name of the external cluster.
- map[string]string
- Defined tags for this resource. Each key is predefined and scoped to a namespace. For more information, see Resource Tags. Example: {"Operations.CostCenter": "42"}
- DisplayName string
- A filter to only return the resources that match the entire display name.
- ExternalCluster stringId 
- ExternalConnector stringId 
- The OCID of the external connector.
- ExternalDb stringSystem Id 
- The OCID of the external DB system.
- map[string]string
- Free-form tags for this resource. Each tag is a simple key-value pair with no predefined name, type, or namespace. For more information, see Resource Tags. Example: {"Department": "Finance"}
- GridHome string
- The directory in which Oracle Grid Infrastructure is installed.
- Id string
- The OCID of the external cluster.
- IsFlex boolCluster 
- Indicates whether the cluster is Oracle Flex Cluster or not.
- LifecycleDetails string
- Additional information about the current lifecycle state.
- NetworkConfigurations []GetExternal Clusters External Cluster Collection Item Network Configuration 
- The list of network address configurations of the external cluster.
- OcrFile stringLocation 
- The location of the Oracle Cluster Registry (OCR).
- ScanConfigurations []GetExternal Clusters External Cluster Collection Item Scan Configuration 
- The list of Single Client Access Name (SCAN) configurations of the external cluster.
- State string
- The current lifecycle state of the external cluster.
- map[string]string
- System tags for this resource. Each key is predefined and scoped to a namespace. For more information, see Resource Tags. System tags can be viewed by users, but can only be created by the system. Example: {"orcl-cloud.free-tier-retained": "true"}
- TimeCreated string
- The date and time the external cluster was created.
- TimeUpdated string
- The date and time the external cluster was last updated.
- Version string
- The cluster version.
- VipConfigurations []GetExternal Clusters External Cluster Collection Item Vip Configuration 
- The list of Virtual IP (VIP) configurations of the external cluster.
- additionalDetails Map<String,String>
- The additional details of the external cluster defined in {"key": "value"}format. Example:{"bar-key": "value"}
- compartmentId String
- The OCID of the compartment.
- componentName String
- The name of the external cluster.
- Map<String,String>
- Defined tags for this resource. Each key is predefined and scoped to a namespace. For more information, see Resource Tags. Example: {"Operations.CostCenter": "42"}
- displayName String
- A filter to only return the resources that match the entire display name.
- externalCluster StringId 
- externalConnector StringId 
- The OCID of the external connector.
- externalDb StringSystem Id 
- The OCID of the external DB system.
- Map<String,String>
- Free-form tags for this resource. Each tag is a simple key-value pair with no predefined name, type, or namespace. For more information, see Resource Tags. Example: {"Department": "Finance"}
- gridHome String
- The directory in which Oracle Grid Infrastructure is installed.
- id String
- The OCID of the external cluster.
- isFlex BooleanCluster 
- Indicates whether the cluster is Oracle Flex Cluster or not.
- lifecycleDetails String
- Additional information about the current lifecycle state.
- networkConfigurations List<GetExternal Clusters External Cluster Collection Item Network Configuration> 
- The list of network address configurations of the external cluster.
- ocrFile StringLocation 
- The location of the Oracle Cluster Registry (OCR).
- scanConfigurations List<GetExternal Clusters External Cluster Collection Item Scan Configuration> 
- The list of Single Client Access Name (SCAN) configurations of the external cluster.
- state String
- The current lifecycle state of the external cluster.
- Map<String,String>
- System tags for this resource. Each key is predefined and scoped to a namespace. For more information, see Resource Tags. System tags can be viewed by users, but can only be created by the system. Example: {"orcl-cloud.free-tier-retained": "true"}
- timeCreated String
- The date and time the external cluster was created.
- timeUpdated String
- The date and time the external cluster was last updated.
- version String
- The cluster version.
- vipConfigurations List<GetExternal Clusters External Cluster Collection Item Vip Configuration> 
- The list of Virtual IP (VIP) configurations of the external cluster.
- additionalDetails {[key: string]: string}
- The additional details of the external cluster defined in {"key": "value"}format. Example:{"bar-key": "value"}
- compartmentId string
- The OCID of the compartment.
- componentName string
- The name of the external cluster.
- {[key: string]: string}
- Defined tags for this resource. Each key is predefined and scoped to a namespace. For more information, see Resource Tags. Example: {"Operations.CostCenter": "42"}
- displayName string
- A filter to only return the resources that match the entire display name.
- externalCluster stringId 
- externalConnector stringId 
- The OCID of the external connector.
- externalDb stringSystem Id 
- The OCID of the external DB system.
- {[key: string]: string}
- Free-form tags for this resource. Each tag is a simple key-value pair with no predefined name, type, or namespace. For more information, see Resource Tags. Example: {"Department": "Finance"}
- gridHome string
- The directory in which Oracle Grid Infrastructure is installed.
- id string
- The OCID of the external cluster.
- isFlex booleanCluster 
- Indicates whether the cluster is Oracle Flex Cluster or not.
- lifecycleDetails string
- Additional information about the current lifecycle state.
- networkConfigurations GetExternal Clusters External Cluster Collection Item Network Configuration[] 
- The list of network address configurations of the external cluster.
- ocrFile stringLocation 
- The location of the Oracle Cluster Registry (OCR).
- scanConfigurations GetExternal Clusters External Cluster Collection Item Scan Configuration[] 
- The list of Single Client Access Name (SCAN) configurations of the external cluster.
- state string
- The current lifecycle state of the external cluster.
- {[key: string]: string}
- System tags for this resource. Each key is predefined and scoped to a namespace. For more information, see Resource Tags. System tags can be viewed by users, but can only be created by the system. Example: {"orcl-cloud.free-tier-retained": "true"}
- timeCreated string
- The date and time the external cluster was created.
- timeUpdated string
- The date and time the external cluster was last updated.
- version string
- The cluster version.
- vipConfigurations GetExternal Clusters External Cluster Collection Item Vip Configuration[] 
- The list of Virtual IP (VIP) configurations of the external cluster.
- additional_details Mapping[str, str]
- The additional details of the external cluster defined in {"key": "value"}format. Example:{"bar-key": "value"}
- compartment_id str
- The OCID of the compartment.
- component_name str
- The name of the external cluster.
- Mapping[str, str]
- Defined tags for this resource. Each key is predefined and scoped to a namespace. For more information, see Resource Tags. Example: {"Operations.CostCenter": "42"}
- display_name str
- A filter to only return the resources that match the entire display name.
- external_cluster_ strid 
- external_connector_ strid 
- The OCID of the external connector.
- external_db_ strsystem_ id 
- The OCID of the external DB system.
- Mapping[str, str]
- Free-form tags for this resource. Each tag is a simple key-value pair with no predefined name, type, or namespace. For more information, see Resource Tags. Example: {"Department": "Finance"}
- grid_home str
- The directory in which Oracle Grid Infrastructure is installed.
- id str
- The OCID of the external cluster.
- is_flex_ boolcluster 
- Indicates whether the cluster is Oracle Flex Cluster or not.
- lifecycle_details str
- Additional information about the current lifecycle state.
- network_configurations Sequence[GetExternal Clusters External Cluster Collection Item Network Configuration] 
- The list of network address configurations of the external cluster.
- ocr_file_ strlocation 
- The location of the Oracle Cluster Registry (OCR).
- scan_configurations Sequence[GetExternal Clusters External Cluster Collection Item Scan Configuration] 
- The list of Single Client Access Name (SCAN) configurations of the external cluster.
- state str
- The current lifecycle state of the external cluster.
- Mapping[str, str]
- System tags for this resource. Each key is predefined and scoped to a namespace. For more information, see Resource Tags. System tags can be viewed by users, but can only be created by the system. Example: {"orcl-cloud.free-tier-retained": "true"}
- time_created str
- The date and time the external cluster was created.
- time_updated str
- The date and time the external cluster was last updated.
- version str
- The cluster version.
- vip_configurations Sequence[GetExternal Clusters External Cluster Collection Item Vip Configuration] 
- The list of Virtual IP (VIP) configurations of the external cluster.
- additionalDetails Map<String>
- The additional details of the external cluster defined in {"key": "value"}format. Example:{"bar-key": "value"}
- compartmentId String
- The OCID of the compartment.
- componentName String
- The name of the external cluster.
- Map<String>
- Defined tags for this resource. Each key is predefined and scoped to a namespace. For more information, see Resource Tags. Example: {"Operations.CostCenter": "42"}
- displayName String
- A filter to only return the resources that match the entire display name.
- externalCluster StringId 
- externalConnector StringId 
- The OCID of the external connector.
- externalDb StringSystem Id 
- The OCID of the external DB system.
- Map<String>
- Free-form tags for this resource. Each tag is a simple key-value pair with no predefined name, type, or namespace. For more information, see Resource Tags. Example: {"Department": "Finance"}
- gridHome String
- The directory in which Oracle Grid Infrastructure is installed.
- id String
- The OCID of the external cluster.
- isFlex BooleanCluster 
- Indicates whether the cluster is Oracle Flex Cluster or not.
- lifecycleDetails String
- Additional information about the current lifecycle state.
- networkConfigurations List<Property Map>
- The list of network address configurations of the external cluster.
- ocrFile StringLocation 
- The location of the Oracle Cluster Registry (OCR).
- scanConfigurations List<Property Map>
- The list of Single Client Access Name (SCAN) configurations of the external cluster.
- state String
- The current lifecycle state of the external cluster.
- Map<String>
- System tags for this resource. Each key is predefined and scoped to a namespace. For more information, see Resource Tags. System tags can be viewed by users, but can only be created by the system. Example: {"orcl-cloud.free-tier-retained": "true"}
- timeCreated String
- The date and time the external cluster was created.
- timeUpdated String
- The date and time the external cluster was last updated.
- version String
- The cluster version.
- vipConfigurations List<Property Map>
- The list of Virtual IP (VIP) configurations of the external cluster.
GetExternalClustersExternalClusterCollectionItemNetworkConfiguration        
- NetworkNumber int
- The network number from which VIPs are obtained.
- NetworkType string
- The network type.
- Subnet string
- The subnet for the network.
- NetworkNumber int
- The network number from which VIPs are obtained.
- NetworkType string
- The network type.
- Subnet string
- The subnet for the network.
- networkNumber Integer
- The network number from which VIPs are obtained.
- networkType String
- The network type.
- subnet String
- The subnet for the network.
- networkNumber number
- The network number from which VIPs are obtained.
- networkType string
- The network type.
- subnet string
- The subnet for the network.
- network_number int
- The network number from which VIPs are obtained.
- network_type str
- The network type.
- subnet str
- The subnet for the network.
- networkNumber Number
- The network number from which VIPs are obtained.
- networkType String
- The network type.
- subnet String
- The subnet for the network.
GetExternalClustersExternalClusterCollectionItemScanConfiguration        
- NetworkNumber int
- The network number from which VIPs are obtained.
- ScanName string
- The name of the SCAN listener.
- ScanPort int
- The port number of the SCAN listener.
- ScanProtocol string
- The protocol of the SCAN listener.
- NetworkNumber int
- The network number from which VIPs are obtained.
- ScanName string
- The name of the SCAN listener.
- ScanPort int
- The port number of the SCAN listener.
- ScanProtocol string
- The protocol of the SCAN listener.
- networkNumber Integer
- The network number from which VIPs are obtained.
- scanName String
- The name of the SCAN listener.
- scanPort Integer
- The port number of the SCAN listener.
- scanProtocol String
- The protocol of the SCAN listener.
- networkNumber number
- The network number from which VIPs are obtained.
- scanName string
- The name of the SCAN listener.
- scanPort number
- The port number of the SCAN listener.
- scanProtocol string
- The protocol of the SCAN listener.
- network_number int
- The network number from which VIPs are obtained.
- scan_name str
- The name of the SCAN listener.
- scan_port int
- The port number of the SCAN listener.
- scan_protocol str
- The protocol of the SCAN listener.
- networkNumber Number
- The network number from which VIPs are obtained.
- scanName String
- The name of the SCAN listener.
- scanPort Number
- The port number of the SCAN listener.
- scanProtocol String
- The protocol of the SCAN listener.
GetExternalClustersExternalClusterCollectionItemVipConfiguration        
- Address string
- The VIP name or IP address.
- NetworkNumber int
- The network number from which VIPs are obtained.
- NodeName string
- The name of the node with the VIP.
- Address string
- The VIP name or IP address.
- NetworkNumber int
- The network number from which VIPs are obtained.
- NodeName string
- The name of the node with the VIP.
- address String
- The VIP name or IP address.
- networkNumber Integer
- The network number from which VIPs are obtained.
- nodeName String
- The name of the node with the VIP.
- address string
- The VIP name or IP address.
- networkNumber number
- The network number from which VIPs are obtained.
- nodeName string
- The name of the node with the VIP.
- address str
- The VIP name or IP address.
- network_number int
- The network number from which VIPs are obtained.
- node_name str
- The name of the node with the VIP.
- address String
- The VIP name or IP address.
- networkNumber Number
- The network number from which VIPs are obtained.
- nodeName String
- The name of the node with the VIP.
GetExternalClustersFilter   
Package Details
- Repository
- oci pulumi/pulumi-oci
- License
- Apache-2.0
- Notes
- This Pulumi package is based on the ociTerraform Provider.