import * as pulumi from "@pulumi/pulumi";
import { input as inputs, output as outputs } from "../types";
/**
 * Manages a cluster resource within HuaweiCloud MRS.
 *
 * ## Example Usage
 * ### Create an analysis cluster
 *
 * ```typescript
 * import * as pulumi from "@pulumi/pulumi";
 * import * as huaweicloud from "@pulumi/huaweicloud";
 * import * as pulumi from "@huaweicloudos/pulumi";
 *
 * const testAvailabilityZones = huaweicloud.getAvailabilityZones({});
 * const config = new pulumi.Config();
 * const clusterName = config.requireObject("clusterName");
 * const password = config.requireObject("password");
 * const vpcId = config.requireObject("vpcId");
 * const subnetId = config.requireObject("subnetId");
 * const testcluster = new huaweicloud.mrs.Cluster("testcluster", {
 *     availabilityZone: testAvailabilityZones.then(testAvailabilityZones => testAvailabilityZones.names?[0]),
 *     version: "MRS 1.9.2",
 *     type: "ANALYSIS",
 *     componentLists: [
 *         "Hadoop",
 *         "Hive",
 *         "Tez",
 *     ],
 *     managerAdminPass: password,
 *     nodeAdminPass: password,
 *     vpcId: vpcId,
 *     subnetId: subnetId,
 *     masterNodes: {
 *         flavor: "c6.2xlarge.4.linux.bigdata",
 *         nodeNumber: 2,
 *         rootVolumeType: "SAS",
 *         rootVolumeSize: 300,
 *         dataVolumeType: "SAS",
 *         dataVolumeSize: 480,
 *         dataVolumeCount: 1,
 *     },
 *     analysisCoreNodes: {
 *         flavor: "c6.2xlarge.4.linux.bigdata",
 *         nodeNumber: 2,
 *         rootVolumeType: "SAS",
 *         rootVolumeSize: 300,
 *         dataVolumeType: "SAS",
 *         dataVolumeSize: 480,
 *         dataVolumeCount: 1,
 *     },
 *     analysisTaskNodes: {
 *         flavor: "c6.2xlarge.4.linux.bigdata",
 *         nodeNumber: 1,
 *         rootVolumeType: "SAS",
 *         rootVolumeSize: 300,
 *         dataVolumeType: "SAS",
 *         dataVolumeSize: 480,
 *         dataVolumeCount: 1,
 *     },
 *     tags: {
 *         foo: "bar",
 *         key: "value",
 *     },
 * });
 * ```
 * ### Create a stream cluster
 *
 * ```typescript
 * import * as pulumi from "@pulumi/pulumi";
 * import * as huaweicloud from "@pulumi/huaweicloud";
 * import * as pulumi from "@huaweicloudos/pulumi";
 *
 * const testAvailabilityZones = huaweicloud.getAvailabilityZones({});
 * const config = new pulumi.Config();
 * const clusterName = config.requireObject("clusterName");
 * const password = config.requireObject("password");
 * const vpcId = config.requireObject("vpcId");
 * const subnetId = config.requireObject("subnetId");
 * const testcluster = new huaweicloud.mrs.Cluster("testcluster", {
 *     availabilityZone: testAvailabilityZones.then(testAvailabilityZones => testAvailabilityZones.names?[0]),
 *     type: "STREAMING",
 *     version: "MRS 1.9.2",
 *     managerAdminPass: password,
 *     nodeAdminPass: password,
 *     vpcId: vpcId,
 *     subnetId: subnetId,
 *     componentLists: ["Storm"],
 *     masterNodes: {
 *         flavor: "c6.2xlarge.4.linux.bigdata",
 *         nodeNumber: 2,
 *         rootVolumeType: "SAS",
 *         rootVolumeSize: 300,
 *         dataVolumeType: "SAS",
 *         dataVolumeSize: 480,
 *         dataVolumeCount: 1,
 *     },
 *     streamingCoreNodes: {
 *         flavor: "c6.2xlarge.4.linux.bigdata",
 *         nodeNumber: 2,
 *         rootVolumeType: "SAS",
 *         rootVolumeSize: 300,
 *         dataVolumeType: "SAS",
 *         dataVolumeSize: 480,
 *         dataVolumeCount: 1,
 *     },
 *     tags: {
 *         foo: "bar",
 *         key: "value",
 *     },
 * });
 * ```
 * ### Create a hybrid cluster
 *
 * ```typescript
 * import * as pulumi from "@pulumi/pulumi";
 * import * as huaweicloud from "@pulumi/huaweicloud";
 * import * as pulumi from "@huaweicloudos/pulumi";
 *
 * const testAvailabilityZones = huaweicloud.getAvailabilityZones({});
 * const config = new pulumi.Config();
 * const clusterName = config.requireObject("clusterName");
 * const password = config.requireObject("password");
 * const vpcId = config.requireObject("vpcId");
 * const subnetId = config.requireObject("subnetId");
 * const testcluster = new huaweicloud.mrs.Cluster("testcluster", {
 *     availabilityZone: testAvailabilityZones.then(testAvailabilityZones => testAvailabilityZones.names?[0]),
 *     version: "MRS 3.1.5",
 *     type: "MIXED",
 *     componentLists: [
 *         "Hadoop",
 *         "ZooKeeper",
 *         "Ranger",
 *         "Tez",
 *         "Spark2x",
 *         "Hive",
 *         "Kafka",
 *         "Flume",
 *     ],
 *     managerAdminPass: password,
 *     nodeAdminPass: password,
 *     vpcId: vpcId,
 *     subnetId: subnetId,
 *     masterNodes: {
 *         flavor: "ac7.4xlarge.4.linux.bigdata",
 *         nodeNumber: 2,
 *         rootVolumeType: "SAS",
 *         rootVolumeSize: 100,
 *         dataVolumeType: "SAS",
 *         dataVolumeSize: 200,
 *         dataVolumeCount: 1,
 *     },
 *     analysisCoreNodes: {
 *         flavor: "ac7.4xlarge.4.linux.bigdata",
 *         nodeNumber: 2,
 *         rootVolumeType: "SAS",
 *         rootVolumeSize: 100,
 *         dataVolumeType: "SAS",
 *         dataVolumeSize: 200,
 *         dataVolumeCount: 1,
 *     },
 *     streamingCoreNodes: {
 *         flavor: "ac7.4xlarge.4.linux.bigdata",
 *         nodeNumber: 2,
 *         rootVolumeType: "SAS",
 *         rootVolumeSize: 100,
 *         dataVolumeType: "SAS",
 *         dataVolumeSize: 200,
 *         dataVolumeCount: 1,
 *     },
 *     analysisTaskNodes: {
 *         flavor: "ac7.4xlarge.4.linux.bigdata",
 *         nodeNumber: 2,
 *         rootVolumeType: "SAS",
 *         rootVolumeSize: 100,
 *         dataVolumeType: "SAS",
 *         dataVolumeSize: 200,
 *         dataVolumeCount: 1,
 *     },
 *     tags: {
 *         foo: "bar",
 *         key: "value",
 *     },
 * });
 * ```
 * ### Create a custom cluster
 *
 * ```typescript
 * import * as pulumi from "@pulumi/pulumi";
 * import * as huaweicloud from "@pulumi/huaweicloud";
 * import * as pulumi from "@huaweicloudos/pulumi";
 *
 * const testAvailabilityZones = huaweicloud.getAvailabilityZones({});
 * const config = new pulumi.Config();
 * const clusterName = config.requireObject("clusterName");
 * const password = config.requireObject("password");
 * const vpcId = config.requireObject("vpcId");
 * const subnetId = config.requireObject("subnetId");
 * const testcluster = new huaweicloud.mrs.Cluster("testcluster", {
 *     availabilityZone: testAvailabilityZones.then(testAvailabilityZones => testAvailabilityZones.names?[0]),
 *     version: "MRS 3.1.0",
 *     type: "CUSTOM",
 *     safeMode: true,
 *     managerAdminPass: password,
 *     nodeAdminPass: password,
 *     vpcId: vpcId,
 *     subnetId: subnetId,
 *     templateId: "mgmt_control_combined_v4",
 *     componentLists: [
 *         "DBService",
 *         "Hadoop",
 *         "ZooKeeper",
 *         "Ranger",
 *     ],
 *     masterNodes: {
 *         flavor: "c6.4xlarge.4.linux.bigdata",
 *         nodeNumber: 3,
 *         rootVolumeType: "SAS",
 *         rootVolumeSize: 480,
 *         dataVolumeType: "SAS",
 *         dataVolumeSize: 600,
 *         dataVolumeCount: 1,
 *         assignedRoles: [
 *             "OMSServer:1,2",
 *             "SlapdServer:1,2",
 *             "KerberosServer:1,2",
 *             "KerberosAdmin:1,2",
 *             "quorumpeer:1,2,3",
 *             "NameNode:2,3",
 *             "Zkfc:2,3",
 *             "JournalNode:1,2,3",
 *             "ResourceManager:2,3",
 *             "JobHistoryServer:3",
 *             "DBServer:1,3",
 *             "HttpFS:1,3",
 *             "TimelineServer:3",
 *             "RangerAdmin:1,2",
 *             "UserSync:2",
 *             "TagSync:2",
 *             "KerberosClient",
 *             "SlapdClient",
 *             "meta",
 *         ],
 *     },
 *     customNodes: [{
 *         groupName: "node_group_1",
 *         flavor: "c6.4xlarge.4.linux.bigdata",
 *         nodeNumber: 4,
 *         rootVolumeType: "SAS",
 *         rootVolumeSize: 480,
 *         dataVolumeType: "SAS",
 *         dataVolumeSize: 600,
 *         dataVolumeCount: 1,
 *         assignedRoles: [
 *             "DataNode",
 *             "NodeManager",
 *             "KerberosClient",
 *             "SlapdClient",
 *             "meta",
 *         ],
 *     }],
 * });
 * ```
 * ### Create an analysis cluster and bind public IP
 *
 * ```typescript
 * import * as pulumi from "@pulumi/pulumi";
 * import * as huaweicloud from "@pulumi/huaweicloud";
 * import * as pulumi from "@huaweicloudos/pulumi";
 *
 * const testAvailabilityZones = huaweicloud.getAvailabilityZones({});
 * const config = new pulumi.Config();
 * const clusterName = config.requireObject("clusterName");
 * const password = config.requireObject("password");
 * const vpcId = config.requireObject("vpcId");
 * const subnetId = config.requireObject("subnetId");
 * const publicIp = config.requireObject("publicIp");
 * const testcluster = new huaweicloud.mrs.Cluster("testcluster", {
 *     availabilityZone: testAvailabilityZones.then(testAvailabilityZones => testAvailabilityZones.names?[0]),
 *     version: "MRS 1.9.2",
 *     type: "ANALYSIS",
 *     componentLists: [
 *         "Hadoop",
 *         "Hive",
 *         "Tez",
 *     ],
 *     managerAdminPass: password,
 *     nodeAdminPass: password,
 *     vpcId: vpcId,
 *     subnetId: subnetId,
 *     publicIp: publicIp,
 *     masterNodes: {
 *         flavor: "c6.2xlarge.4.linux.bigdata",
 *         nodeNumber: 2,
 *         rootVolumeType: "SAS",
 *         rootVolumeSize: 300,
 *         dataVolumeType: "SAS",
 *         dataVolumeSize: 480,
 *         dataVolumeCount: 1,
 *     },
 *     analysisCoreNodes: {
 *         flavor: "c6.2xlarge.4.linux.bigdata",
 *         nodeNumber: 2,
 *         rootVolumeType: "SAS",
 *         rootVolumeSize: 300,
 *         dataVolumeType: "SAS",
 *         dataVolumeSize: 480,
 *         dataVolumeCount: 1,
 *     },
 *     analysisTaskNodes: {
 *         flavor: "c6.2xlarge.4.linux.bigdata",
 *         nodeNumber: 1,
 *         rootVolumeType: "SAS",
 *         rootVolumeSize: 300,
 *         dataVolumeType: "SAS",
 *         dataVolumeSize: 480,
 *         dataVolumeCount: 1,
 *     },
 *     tags: {
 *         foo: "bar",
 *         key: "value",
 *     },
 * });
 * ```
 * ### Create a prePaid stream cluster
 *
 * ```typescript
 * import * as pulumi from "@pulumi/pulumi";
 * import * as huaweicloud from "@pulumi/huaweicloud";
 * import * as pulumi from "@huaweicloudos/pulumi";
 *
 * const testAvailabilityZones = huaweicloud.getAvailabilityZones({});
 * const config = new pulumi.Config();
 * const clusterName = config.requireObject("clusterName");
 * const password = config.requireObject("password");
 * const vpcId = config.requireObject("vpcId");
 * const subnetId = config.requireObject("subnetId");
 * const period = config.requireObject("period");
 * const periodUnit = config.requireObject("periodUnit");
 * const testcluster = new huaweicloud.mrs.Cluster("testcluster", {
 *     availabilityZone: testAvailabilityZones.then(testAvailabilityZones => testAvailabilityZones.names?[0]),
 *     type: "STREAMING",
 *     version: "MRS 1.9.2",
 *     managerAdminPass: password,
 *     nodeAdminPass: password,
 *     vpcId: vpcId,
 *     subnetId: subnetId,
 *     componentLists: ["Storm"],
 *     chargingMode: "prePaid",
 *     period: period,
 *     periodUnit: periodUnit,
 *     masterNodes: {
 *         flavor: "c6.2xlarge.4.linux.bigdata",
 *         nodeNumber: 2,
 *         rootVolumeType: "SAS",
 *         rootVolumeSize: 300,
 *         dataVolumeType: "SAS",
 *         dataVolumeSize: 480,
 *         dataVolumeCount: 1,
 *     },
 *     streamingCoreNodes: {
 *         flavor: "c6.2xlarge.4.linux.bigdata",
 *         nodeNumber: 2,
 *         rootVolumeType: "SAS",
 *         rootVolumeSize: 300,
 *         dataVolumeType: "SAS",
 *         dataVolumeSize: 480,
 *         dataVolumeCount: 1,
 *     },
 * });
 * ```
 *
 * ## Import
 *
 * Clusters can be imported by their `id`. For example, bash
 *
 * ```sh
 *  $ pulumi import huaweicloud:Mrs/cluster:cluster test b11b407c-e604-4e8d-8bc4-92398320b847
 * ```
 *
 *  Note that the imported state may not be identical to your resource definition, due to some attributes missing from the API response, security or some other reason. The missing attributes include`manager_admin_pass`, `node_admin_pass`,`template_id`, `assigned_roles`, `external_datasources`, `component_configs`, `smn_notify`, `charging_mode`, `period` and `period_unit`. It is generally recommended running `terraform plan` after importing a cluster. You can then decide if changes should be applied to the cluster, or the resource definition should be updated to align with the cluster. Also you can ignore changes as below. hcl resource "huaweicloud_mapreduce_cluster" "test" {
 *
 *  ...
 *
 *  lifecycle {
 *
 *  ignore_changes = [
 *
 *  manager_admin_pass, node_admin_pass, template_id, assigned_roles, external_datasources, component_configs, smn_notify,
 *
 *  charging_mode, period, period_unit,
 *
 *  ]
 *
 *  } }
 */
export declare class Cluster extends pulumi.CustomResource {
    /**
     * Get an existing Cluster resource's state with the given name, ID, and optional extra
     * properties used to qualify the lookup.
     *
     * @param name The _unique_ name of the resulting resource.
     * @param id The _unique_ provider ID of the resource to lookup.
     * @param state Any extra arguments used during the lookup.
     * @param opts Optional settings to control the behavior of the CustomResource.
     */
    static get(name: string, id: pulumi.Input<pulumi.ID>, state?: ClusterState, opts?: pulumi.CustomResourceOptions): Cluster;
    /**
     * Returns true if the given object is an instance of Cluster.  This is designed to work even
     * when multiple copies of the Pulumi SDK have been loaded into the same process.
     */
    static isInstance(obj: any): obj is Cluster;
    /**
     * Specifies the informations about analysis core nodes in the
     * MapReduce cluster.
     * The masterNodes structure is documented below.
     * Changing this will create a new MapReduce cluster resource.
     */
    readonly analysisCoreNodes: pulumi.Output<outputs.Mrs.ClusterAnalysisCoreNodes | undefined>;
    /**
     * Specifies the informations about analysis task nodes in the
     * MapReduce cluster.
     * The masterNodes structure is documented below.
     * Changing this will create a new MapReduce cluster resource.
     */
    readonly analysisTaskNodes: pulumi.Output<outputs.Mrs.ClusterAnalysisTaskNodes | undefined>;
    /**
     * Specifies the availability zone in which to create the cluster.
     * Please following [reference](https://developer.huaweicloud.com/intl/en-us/endpoint?all)
     * Changing this will create a new MapReduce cluster resource.
     */
    readonly availabilityZone: pulumi.Output<string>;
    /**
     * Specifies the bootstrap action scripts.
     * Bootstrap action scripts will be executed on specified cluster nodes before or after big data components are
     * started. You can execute bootstrap actions to install third-party software, modify the cluster running environment,
     * and customize cluster configuration. [Learn more](https://support.huaweicloud.com/intl/en-us/usermanual-mrs/mrs_01_0414.html)
     */
    readonly bootstrapScripts: pulumi.Output<outputs.Mrs.ClusterBootstrapScript[] | undefined>;
    /**
     * Specifies the charging mode of the cluster.
     * Valid values are **prePaid** and **postPaid**, defaults to **postPaid**.
     * Changing this parameter will create a new MapReduce cluster resource.
     */
    readonly chargingMode: pulumi.Output<string>;
    /**
     * The charging start time which is the start time of billing, in RFC-3339 format.
     */
    readonly chargingStartTime: pulumi.Output<string>;
    /**
     * Specifies the component configurations of the cluster.
     * The object structure is documented below.
     * Changing this will create a new MapReduce cluster resource.
     */
    readonly componentConfigs: pulumi.Output<outputs.Mrs.ClusterComponentConfig[] | undefined>;
    /**
     * Specifies the list of component names. For the components supported by
     * the cluster, please following [reference](https://support.huaweicloud.com/intl/en-us/productdesc-mrs/mrs_08_0005.html)
     * Changing this will create a new MapReduce cluster resource.
     */
    readonly componentLists: pulumi.Output<string[]>;
    /**
     * The cluster creation time, in RFC-3339 format.
     */
    readonly createTime: pulumi.Output<string>;
    /**
     * Specifies the informations about custom nodes in the MapReduce cluster.
     * The masterNodes structure is documented below.
     * Changing this will create a new MapReduce cluster resource.
     */
    readonly customNodes: pulumi.Output<outputs.Mrs.ClusterCustomNode[] | undefined>;
    /**
     * Specifies the EIP ID which bound to the MapReduce cluster.
     * The EIP must have been created and must be in the same region as the cluster.
     * Changing this will create a new MapReduce cluster resource.
     */
    readonly eipId: pulumi.Output<string>;
    /**
     * Specifies a unique ID in UUID format of enterprise project.
     */
    readonly enterpriseProjectId: pulumi.Output<string>;
    /**
     * Specifies the external datasource configurations of the cluster.
     * The object structure is documented below.
     * Changing this will create a new MapReduce cluster resource.
     */
    readonly externalDatasources: pulumi.Output<outputs.Mrs.ClusterExternalDatasource[] | undefined>;
    /**
     * Specifies whether logs are collected when cluster installation fails.
     * Defaults to true. If `logCollection` set true, the OBS buckets will be created and only used to collect logs that
     * record MapReduce cluster creation failures. Changing this will create a new MapReduce cluster resource.
     */
    readonly logCollection: pulumi.Output<boolean | undefined>;
    /**
     * Specifies the administrator password, which is used to log in to
     * the cluster management page. The password can contain 8 to 26 characters and cannot be the username or the username
     * spelled backwards. The password must contain lowercase letters, uppercase letters, digits, spaces and the special
     * characters: `!?,.:-_{}[]@$^+=/`. Changing this will create a new MapReduce cluster resource.
     */
    readonly managerAdminPass: pulumi.Output<string>;
    /**
     * The IP address of the master node.
     */
    readonly masterNodeIp: pulumi.Output<string>;
    /**
     * Specifies the informations about master nodes in the MapReduce cluster.
     * The masterNodes structure is documented below.
     * Changing this will create a new MapReduce cluster resource.
     */
    readonly masterNodes: pulumi.Output<outputs.Mrs.ClusterMasterNodes>;
    /**
     * Specifies the name of a bootstrap action script.
     * Changing this will create a new MapReduce cluster resource.
     */
    readonly name: pulumi.Output<string>;
    /**
     * Specifies the administrator password, which is used to log in to the
     * each nodes(/ECSs). The password can contain 8 to 26 characters and cannot be the username or the username spelled
     * backwards. The password must contain lowercase letters, uppercase letters, digits, spaces and the special
     * characters: `!?,.:-_{}[]@$^+=/`. Changing this will create a new MapReduce cluster resource. This parameter
     * and `nodeKeyPair` are alternative.
     */
    readonly nodeAdminPass: pulumi.Output<string | undefined>;
    /**
     * Specifies the name of a key pair, which is used to log in to the each
     * nodes(/ECSs). Changing this will create a new MapReduce cluster resource.
     */
    readonly nodeKeyPair: pulumi.Output<string | undefined>;
    /**
     * Specifies the charging period of the cluster.
     * If `periodUnit` is set to **month**, the value ranges from 1 to 9.
     * If `periodUnit` is set to **year**, the value ranges from 1 to 3.
     * This parameter is mandatory if `chargingMode` is set to **prePaid**.
     * Changing this parameter will create a new MapReduce cluster resource.
     */
    readonly period: pulumi.Output<number | undefined>;
    /**
     * Specifies the charging period unit of the cluster.
     * Valid values are **month** and **year**. This parameter is mandatory if `chargingMode` is set to **prePaid**.
     * Changing this parameter will create a new MapReduce cluster resource.
     */
    readonly periodUnit: pulumi.Output<string | undefined>;
    /**
     * The preferred private IP address of the master node.
     */
    readonly privateIp: pulumi.Output<string>;
    /**
     * Specifies the EIP address which bound to the MapReduce cluster.
     * The EIP must have been created and must be in the same region as the cluster.
     * Changing this will create a new MapReduce cluster resource.
     */
    readonly publicIp: pulumi.Output<string>;
    /**
     * The region in which to create the MapReduce cluster resource. If omitted, the
     * provider-level region will be used. Changing this will create a new MapReduce cluster resource.
     */
    readonly region: pulumi.Output<string>;
    /**
     * Specifies whether the running mode of the MapReduce cluster is secure,
     * defaults to **true**. The options are as follows:
     * + **true**: enable Kerberos authentication.
     * + **false**: disable Kerberos authentication. Changing this will create a new MapReduce cluster resource.
     */
    readonly safeMode: pulumi.Output<boolean | undefined>;
    /**
     * Specifies an array of one or more security group ID to attach to the
     * MapReduce cluster. If using the specified security group, the group need to open the specified port (9022) rules.
     */
    readonly securityGroupIds: pulumi.Output<string[]>;
    /**
     * Specifies the alarm configuration of the cluster. The smnNotify
     * structure is documented below.
     * Changing this will create a new MapReduce cluster resource.
     */
    readonly smnNotify: pulumi.Output<outputs.Mrs.ClusterSmnNotify | undefined>;
    /**
     * The cluster state, which include: running, frozen, abnormal and failed.
     */
    readonly status: pulumi.Output<string>;
    /**
     * Specifies the informations about streaming core nodes in the
     * MapReduce cluster.
     * The masterNodes structure is documented below.
     * Changing this will create a new MapReduce cluster resource.
     */
    readonly streamingCoreNodes: pulumi.Output<outputs.Mrs.ClusterStreamingCoreNodes | undefined>;
    /**
     * Specifies the informations about streaming task nodes in the
     * MapReduce cluster.
     * The masterNodes structure is documented below.
     * Changing this will create a new MapReduce cluster resource.
     */
    readonly streamingTaskNodes: pulumi.Output<outputs.Mrs.ClusterStreamingTaskNodes | undefined>;
    /**
     * Specifies the network ID of a subnet which bound to the MapReduce cluster.
     * Changing this will create a new MapReduce cluster resource.
     */
    readonly subnetId: pulumi.Output<string>;
    /**
     * Specifies the key/value pairs to associate with the cluster.
     */
    readonly tags: pulumi.Output<{
        [key: string]: string;
    } | undefined>;
    /**
     * Specifies the template used for node deployment when the cluster type is
     * **CUSTOM**. The options are as follows:
     * + **mgmt_control_combined_v2**: template for jointly deploying the management and control nodes. The management and
     * control roles are co-deployed on the Master node, and data instances are deployed in the same node group. This
     * deployment mode applies to scenarios where the number of control nodes is less than 100, reducing costs.
     * + **mgmt_control_separated_v2**: The management and control roles are deployed on different master nodes, and data
     * instances are deployed in the same node group. This deployment mode is applicable to a cluster with 100 to 500 nodes
     * and delivers better performance in high-concurrency load scenarios.
     * + **mgmt_control_data_separated_v2**: The management role and control role are deployed on different Master nodes,
     * and data instances are deployed in different node groups. This deployment mode is applicable to a cluster with more
     * than 500 nodes. Components can be deployed separately, which can be used for a larger cluster scale.
     */
    readonly templateId: pulumi.Output<string | undefined>;
    /**
     * The total number of nodes deployed in the cluster.
     */
    readonly totalNodeNumber: pulumi.Output<number>;
    /**
     * Specifies the type of the MapReduce cluster. The valid values are **ANALYSIS**,
     * **STREAMING** and **MIXED**, defaults to **ANALYSIS**. Changing this will create a new MapReduce cluster resource.
     */
    readonly type: pulumi.Output<string | undefined>;
    /**
     * The cluster update time, in RFC-3339 format.
     */
    readonly updateTime: pulumi.Output<string>;
    /**
     * Specifies the MapReduce cluster version. The valid values are `MRS 1.9.2`
     * , `MRS 3.0.5` and `MRS 3.1.0`. Changing this will create a new MapReduce cluster resource.
     */
    readonly version: pulumi.Output<string>;
    /**
     * Specifies the ID of the VPC which bound to the MapReduce cluster. Changing
     * this will create a new MapReduce cluster resource.
     */
    readonly vpcId: pulumi.Output<string>;
    /**
     * Create a Cluster resource with the given unique name, arguments, and options.
     *
     * @param name The _unique_ name of the resource.
     * @param args The arguments to use to populate this resource's properties.
     * @param opts A bag of options that control this resource's behavior.
     */
    constructor(name: string, args: ClusterArgs, opts?: pulumi.CustomResourceOptions);
}
/**
 * Input properties used for looking up and filtering cluster resources.
 */
export interface ClusterState {
    /**
     * Specifies the informations about analysis core nodes in the
     * MapReduce cluster.
     * The masterNodes structure is documented below.
     * Changing this will create a new MapReduce cluster resource.
     */
    analysisCoreNodes?: pulumi.Input<inputs.Mrs.ClusterAnalysisCoreNodes>;
    /**
     * Specifies the informations about analysis task nodes in the
     * MapReduce cluster.
     * The masterNodes structure is documented below.
     * Changing this will create a new MapReduce cluster resource.
     */
    analysisTaskNodes?: pulumi.Input<inputs.Mrs.ClusterAnalysisTaskNodes>;
    /**
     * Specifies the availability zone in which to create the cluster.
     * Please following [reference](https://developer.huaweicloud.com/intl/en-us/endpoint?all)
     * Changing this will create a new MapReduce cluster resource.
     */
    availabilityZone?: pulumi.Input<string>;
    /**
     * Specifies the bootstrap action scripts.
     * Bootstrap action scripts will be executed on specified cluster nodes before or after big data components are
     * started. You can execute bootstrap actions to install third-party software, modify the cluster running environment,
     * and customize cluster configuration. [Learn more](https://support.huaweicloud.com/intl/en-us/usermanual-mrs/mrs_01_0414.html)
     */
    bootstrapScripts?: pulumi.Input<pulumi.Input<inputs.Mrs.ClusterBootstrapScript>[]>;
    /**
     * Specifies the charging mode of the cluster.
     * Valid values are **prePaid** and **postPaid**, defaults to **postPaid**.
     * Changing this parameter will create a new MapReduce cluster resource.
     */
    chargingMode?: pulumi.Input<string>;
    /**
     * The charging start time which is the start time of billing, in RFC-3339 format.
     */
    chargingStartTime?: pulumi.Input<string>;
    /**
     * Specifies the component configurations of the cluster.
     * The object structure is documented below.
     * Changing this will create a new MapReduce cluster resource.
     */
    componentConfigs?: pulumi.Input<pulumi.Input<inputs.Mrs.ClusterComponentConfig>[]>;
    /**
     * Specifies the list of component names. For the components supported by
     * the cluster, please following [reference](https://support.huaweicloud.com/intl/en-us/productdesc-mrs/mrs_08_0005.html)
     * Changing this will create a new MapReduce cluster resource.
     */
    componentLists?: pulumi.Input<pulumi.Input<string>[]>;
    /**
     * The cluster creation time, in RFC-3339 format.
     */
    createTime?: pulumi.Input<string>;
    /**
     * Specifies the informations about custom nodes in the MapReduce cluster.
     * The masterNodes structure is documented below.
     * Changing this will create a new MapReduce cluster resource.
     */
    customNodes?: pulumi.Input<pulumi.Input<inputs.Mrs.ClusterCustomNode>[]>;
    /**
     * Specifies the EIP ID which bound to the MapReduce cluster.
     * The EIP must have been created and must be in the same region as the cluster.
     * Changing this will create a new MapReduce cluster resource.
     */
    eipId?: pulumi.Input<string>;
    /**
     * Specifies a unique ID in UUID format of enterprise project.
     */
    enterpriseProjectId?: pulumi.Input<string>;
    /**
     * Specifies the external datasource configurations of the cluster.
     * The object structure is documented below.
     * Changing this will create a new MapReduce cluster resource.
     */
    externalDatasources?: pulumi.Input<pulumi.Input<inputs.Mrs.ClusterExternalDatasource>[]>;
    /**
     * Specifies whether logs are collected when cluster installation fails.
     * Defaults to true. If `logCollection` set true, the OBS buckets will be created and only used to collect logs that
     * record MapReduce cluster creation failures. Changing this will create a new MapReduce cluster resource.
     */
    logCollection?: pulumi.Input<boolean>;
    /**
     * Specifies the administrator password, which is used to log in to
     * the cluster management page. The password can contain 8 to 26 characters and cannot be the username or the username
     * spelled backwards. The password must contain lowercase letters, uppercase letters, digits, spaces and the special
     * characters: `!?,.:-_{}[]@$^+=/`. Changing this will create a new MapReduce cluster resource.
     */
    managerAdminPass?: pulumi.Input<string>;
    /**
     * The IP address of the master node.
     */
    masterNodeIp?: pulumi.Input<string>;
    /**
     * Specifies the informations about master nodes in the MapReduce cluster.
     * The masterNodes structure is documented below.
     * Changing this will create a new MapReduce cluster resource.
     */
    masterNodes?: pulumi.Input<inputs.Mrs.ClusterMasterNodes>;
    /**
     * Specifies the name of a bootstrap action script.
     * Changing this will create a new MapReduce cluster resource.
     */
    name?: pulumi.Input<string>;
    /**
     * Specifies the administrator password, which is used to log in to the
     * each nodes(/ECSs). The password can contain 8 to 26 characters and cannot be the username or the username spelled
     * backwards. The password must contain lowercase letters, uppercase letters, digits, spaces and the special
     * characters: `!?,.:-_{}[]@$^+=/`. Changing this will create a new MapReduce cluster resource. This parameter
     * and `nodeKeyPair` are alternative.
     */
    nodeAdminPass?: pulumi.Input<string>;
    /**
     * Specifies the name of a key pair, which is used to log in to the each
     * nodes(/ECSs). Changing this will create a new MapReduce cluster resource.
     */
    nodeKeyPair?: pulumi.Input<string>;
    /**
     * Specifies the charging period of the cluster.
     * If `periodUnit` is set to **month**, the value ranges from 1 to 9.
     * If `periodUnit` is set to **year**, the value ranges from 1 to 3.
     * This parameter is mandatory if `chargingMode` is set to **prePaid**.
     * Changing this parameter will create a new MapReduce cluster resource.
     */
    period?: pulumi.Input<number>;
    /**
     * Specifies the charging period unit of the cluster.
     * Valid values are **month** and **year**. This parameter is mandatory if `chargingMode` is set to **prePaid**.
     * Changing this parameter will create a new MapReduce cluster resource.
     */
    periodUnit?: pulumi.Input<string>;
    /**
     * The preferred private IP address of the master node.
     */
    privateIp?: pulumi.Input<string>;
    /**
     * Specifies the EIP address which bound to the MapReduce cluster.
     * The EIP must have been created and must be in the same region as the cluster.
     * Changing this will create a new MapReduce cluster resource.
     */
    publicIp?: pulumi.Input<string>;
    /**
     * The region in which to create the MapReduce cluster resource. If omitted, the
     * provider-level region will be used. Changing this will create a new MapReduce cluster resource.
     */
    region?: pulumi.Input<string>;
    /**
     * Specifies whether the running mode of the MapReduce cluster is secure,
     * defaults to **true**. The options are as follows:
     * + **true**: enable Kerberos authentication.
     * + **false**: disable Kerberos authentication. Changing this will create a new MapReduce cluster resource.
     */
    safeMode?: pulumi.Input<boolean>;
    /**
     * Specifies an array of one or more security group ID to attach to the
     * MapReduce cluster. If using the specified security group, the group need to open the specified port (9022) rules.
     */
    securityGroupIds?: pulumi.Input<pulumi.Input<string>[]>;
    /**
     * Specifies the alarm configuration of the cluster. The smnNotify
     * structure is documented below.
     * Changing this will create a new MapReduce cluster resource.
     */
    smnNotify?: pulumi.Input<inputs.Mrs.ClusterSmnNotify>;
    /**
     * The cluster state, which include: running, frozen, abnormal and failed.
     */
    status?: pulumi.Input<string>;
    /**
     * Specifies the informations about streaming core nodes in the
     * MapReduce cluster.
     * The masterNodes structure is documented below.
     * Changing this will create a new MapReduce cluster resource.
     */
    streamingCoreNodes?: pulumi.Input<inputs.Mrs.ClusterStreamingCoreNodes>;
    /**
     * Specifies the informations about streaming task nodes in the
     * MapReduce cluster.
     * The masterNodes structure is documented below.
     * Changing this will create a new MapReduce cluster resource.
     */
    streamingTaskNodes?: pulumi.Input<inputs.Mrs.ClusterStreamingTaskNodes>;
    /**
     * Specifies the network ID of a subnet which bound to the MapReduce cluster.
     * Changing this will create a new MapReduce cluster resource.
     */
    subnetId?: pulumi.Input<string>;
    /**
     * Specifies the key/value pairs to associate with the cluster.
     */
    tags?: pulumi.Input<{
        [key: string]: pulumi.Input<string>;
    }>;
    /**
     * Specifies the template used for node deployment when the cluster type is
     * **CUSTOM**. The options are as follows:
     * + **mgmt_control_combined_v2**: template for jointly deploying the management and control nodes. The management and
     * control roles are co-deployed on the Master node, and data instances are deployed in the same node group. This
     * deployment mode applies to scenarios where the number of control nodes is less than 100, reducing costs.
     * + **mgmt_control_separated_v2**: The management and control roles are deployed on different master nodes, and data
     * instances are deployed in the same node group. This deployment mode is applicable to a cluster with 100 to 500 nodes
     * and delivers better performance in high-concurrency load scenarios.
     * + **mgmt_control_data_separated_v2**: The management role and control role are deployed on different Master nodes,
     * and data instances are deployed in different node groups. This deployment mode is applicable to a cluster with more
     * than 500 nodes. Components can be deployed separately, which can be used for a larger cluster scale.
     */
    templateId?: pulumi.Input<string>;
    /**
     * The total number of nodes deployed in the cluster.
     */
    totalNodeNumber?: pulumi.Input<number>;
    /**
     * Specifies the type of the MapReduce cluster. The valid values are **ANALYSIS**,
     * **STREAMING** and **MIXED**, defaults to **ANALYSIS**. Changing this will create a new MapReduce cluster resource.
     */
    type?: pulumi.Input<string>;
    /**
     * The cluster update time, in RFC-3339 format.
     */
    updateTime?: pulumi.Input<string>;
    /**
     * Specifies the MapReduce cluster version. The valid values are `MRS 1.9.2`
     * , `MRS 3.0.5` and `MRS 3.1.0`. Changing this will create a new MapReduce cluster resource.
     */
    version?: pulumi.Input<string>;
    /**
     * Specifies the ID of the VPC which bound to the MapReduce cluster. Changing
     * this will create a new MapReduce cluster resource.
     */
    vpcId?: pulumi.Input<string>;
}
/**
 * The set of arguments for constructing a Cluster resource.
 */
export interface ClusterArgs {
    /**
     * Specifies the informations about analysis core nodes in the
     * MapReduce cluster.
     * The masterNodes structure is documented below.
     * Changing this will create a new MapReduce cluster resource.
     */
    analysisCoreNodes?: pulumi.Input<inputs.Mrs.ClusterAnalysisCoreNodes>;
    /**
     * Specifies the informations about analysis task nodes in the
     * MapReduce cluster.
     * The masterNodes structure is documented below.
     * Changing this will create a new MapReduce cluster resource.
     */
    analysisTaskNodes?: pulumi.Input<inputs.Mrs.ClusterAnalysisTaskNodes>;
    /**
     * Specifies the availability zone in which to create the cluster.
     * Please following [reference](https://developer.huaweicloud.com/intl/en-us/endpoint?all)
     * Changing this will create a new MapReduce cluster resource.
     */
    availabilityZone: pulumi.Input<string>;
    /**
     * Specifies the bootstrap action scripts.
     * Bootstrap action scripts will be executed on specified cluster nodes before or after big data components are
     * started. You can execute bootstrap actions to install third-party software, modify the cluster running environment,
     * and customize cluster configuration. [Learn more](https://support.huaweicloud.com/intl/en-us/usermanual-mrs/mrs_01_0414.html)
     */
    bootstrapScripts?: pulumi.Input<pulumi.Input<inputs.Mrs.ClusterBootstrapScript>[]>;
    /**
     * Specifies the charging mode of the cluster.
     * Valid values are **prePaid** and **postPaid**, defaults to **postPaid**.
     * Changing this parameter will create a new MapReduce cluster resource.
     */
    chargingMode?: pulumi.Input<string>;
    /**
     * Specifies the component configurations of the cluster.
     * The object structure is documented below.
     * Changing this will create a new MapReduce cluster resource.
     */
    componentConfigs?: pulumi.Input<pulumi.Input<inputs.Mrs.ClusterComponentConfig>[]>;
    /**
     * Specifies the list of component names. For the components supported by
     * the cluster, please following [reference](https://support.huaweicloud.com/intl/en-us/productdesc-mrs/mrs_08_0005.html)
     * Changing this will create a new MapReduce cluster resource.
     */
    componentLists: pulumi.Input<pulumi.Input<string>[]>;
    /**
     * Specifies the informations about custom nodes in the MapReduce cluster.
     * The masterNodes structure is documented below.
     * Changing this will create a new MapReduce cluster resource.
     */
    customNodes?: pulumi.Input<pulumi.Input<inputs.Mrs.ClusterCustomNode>[]>;
    /**
     * Specifies the EIP ID which bound to the MapReduce cluster.
     * The EIP must have been created and must be in the same region as the cluster.
     * Changing this will create a new MapReduce cluster resource.
     */
    eipId?: pulumi.Input<string>;
    /**
     * Specifies a unique ID in UUID format of enterprise project.
     */
    enterpriseProjectId?: pulumi.Input<string>;
    /**
     * Specifies the external datasource configurations of the cluster.
     * The object structure is documented below.
     * Changing this will create a new MapReduce cluster resource.
     */
    externalDatasources?: pulumi.Input<pulumi.Input<inputs.Mrs.ClusterExternalDatasource>[]>;
    /**
     * Specifies whether logs are collected when cluster installation fails.
     * Defaults to true. If `logCollection` set true, the OBS buckets will be created and only used to collect logs that
     * record MapReduce cluster creation failures. Changing this will create a new MapReduce cluster resource.
     */
    logCollection?: pulumi.Input<boolean>;
    /**
     * Specifies the administrator password, which is used to log in to
     * the cluster management page. The password can contain 8 to 26 characters and cannot be the username or the username
     * spelled backwards. The password must contain lowercase letters, uppercase letters, digits, spaces and the special
     * characters: `!?,.:-_{}[]@$^+=/`. Changing this will create a new MapReduce cluster resource.
     */
    managerAdminPass: pulumi.Input<string>;
    /**
     * Specifies the informations about master nodes in the MapReduce cluster.
     * The masterNodes structure is documented below.
     * Changing this will create a new MapReduce cluster resource.
     */
    masterNodes: pulumi.Input<inputs.Mrs.ClusterMasterNodes>;
    /**
     * Specifies the name of a bootstrap action script.
     * Changing this will create a new MapReduce cluster resource.
     */
    name?: pulumi.Input<string>;
    /**
     * Specifies the administrator password, which is used to log in to the
     * each nodes(/ECSs). The password can contain 8 to 26 characters and cannot be the username or the username spelled
     * backwards. The password must contain lowercase letters, uppercase letters, digits, spaces and the special
     * characters: `!?,.:-_{}[]@$^+=/`. Changing this will create a new MapReduce cluster resource. This parameter
     * and `nodeKeyPair` are alternative.
     */
    nodeAdminPass?: pulumi.Input<string>;
    /**
     * Specifies the name of a key pair, which is used to log in to the each
     * nodes(/ECSs). Changing this will create a new MapReduce cluster resource.
     */
    nodeKeyPair?: pulumi.Input<string>;
    /**
     * Specifies the charging period of the cluster.
     * If `periodUnit` is set to **month**, the value ranges from 1 to 9.
     * If `periodUnit` is set to **year**, the value ranges from 1 to 3.
     * This parameter is mandatory if `chargingMode` is set to **prePaid**.
     * Changing this parameter will create a new MapReduce cluster resource.
     */
    period?: pulumi.Input<number>;
    /**
     * Specifies the charging period unit of the cluster.
     * Valid values are **month** and **year**. This parameter is mandatory if `chargingMode` is set to **prePaid**.
     * Changing this parameter will create a new MapReduce cluster resource.
     */
    periodUnit?: pulumi.Input<string>;
    /**
     * Specifies the EIP address which bound to the MapReduce cluster.
     * The EIP must have been created and must be in the same region as the cluster.
     * Changing this will create a new MapReduce cluster resource.
     */
    publicIp?: pulumi.Input<string>;
    /**
     * The region in which to create the MapReduce cluster resource. If omitted, the
     * provider-level region will be used. Changing this will create a new MapReduce cluster resource.
     */
    region?: pulumi.Input<string>;
    /**
     * Specifies whether the running mode of the MapReduce cluster is secure,
     * defaults to **true**. The options are as follows:
     * + **true**: enable Kerberos authentication.
     * + **false**: disable Kerberos authentication. Changing this will create a new MapReduce cluster resource.
     */
    safeMode?: pulumi.Input<boolean>;
    /**
     * Specifies an array of one or more security group ID to attach to the
     * MapReduce cluster. If using the specified security group, the group need to open the specified port (9022) rules.
     */
    securityGroupIds?: pulumi.Input<pulumi.Input<string>[]>;
    /**
     * Specifies the alarm configuration of the cluster. The smnNotify
     * structure is documented below.
     * Changing this will create a new MapReduce cluster resource.
     */
    smnNotify?: pulumi.Input<inputs.Mrs.ClusterSmnNotify>;
    /**
     * Specifies the informations about streaming core nodes in the
     * MapReduce cluster.
     * The masterNodes structure is documented below.
     * Changing this will create a new MapReduce cluster resource.
     */
    streamingCoreNodes?: pulumi.Input<inputs.Mrs.ClusterStreamingCoreNodes>;
    /**
     * Specifies the informations about streaming task nodes in the
     * MapReduce cluster.
     * The masterNodes structure is documented below.
     * Changing this will create a new MapReduce cluster resource.
     */
    streamingTaskNodes?: pulumi.Input<inputs.Mrs.ClusterStreamingTaskNodes>;
    /**
     * Specifies the network ID of a subnet which bound to the MapReduce cluster.
     * Changing this will create a new MapReduce cluster resource.
     */
    subnetId: pulumi.Input<string>;
    /**
     * Specifies the key/value pairs to associate with the cluster.
     */
    tags?: pulumi.Input<{
        [key: string]: pulumi.Input<string>;
    }>;
    /**
     * Specifies the template used for node deployment when the cluster type is
     * **CUSTOM**. The options are as follows:
     * + **mgmt_control_combined_v2**: template for jointly deploying the management and control nodes. The management and
     * control roles are co-deployed on the Master node, and data instances are deployed in the same node group. This
     * deployment mode applies to scenarios where the number of control nodes is less than 100, reducing costs.
     * + **mgmt_control_separated_v2**: The management and control roles are deployed on different master nodes, and data
     * instances are deployed in the same node group. This deployment mode is applicable to a cluster with 100 to 500 nodes
     * and delivers better performance in high-concurrency load scenarios.
     * + **mgmt_control_data_separated_v2**: The management role and control role are deployed on different Master nodes,
     * and data instances are deployed in different node groups. This deployment mode is applicable to a cluster with more
     * than 500 nodes. Components can be deployed separately, which can be used for a larger cluster scale.
     */
    templateId?: pulumi.Input<string>;
    /**
     * Specifies the type of the MapReduce cluster. The valid values are **ANALYSIS**,
     * **STREAMING** and **MIXED**, defaults to **ANALYSIS**. Changing this will create a new MapReduce cluster resource.
     */
    type?: pulumi.Input<string>;
    /**
     * Specifies the MapReduce cluster version. The valid values are `MRS 1.9.2`
     * , `MRS 3.0.5` and `MRS 3.1.0`. Changing this will create a new MapReduce cluster resource.
     */
    version: pulumi.Input<string>;
    /**
     * Specifies the ID of the VPC which bound to the MapReduce cluster. Changing
     * this will create a new MapReduce cluster resource.
     */
    vpcId: pulumi.Input<string>;
}
