import * as pulumi from "@pulumi/pulumi";
/**
 * > **Experimental.** Schema and behavior may change in future releases. Pin the provider version if stability matters.
 *
 * Manages a Ceph pool on a Proxmox VE cluster.
 *
 * ## Example Usage
 *
 * ```typescript
 * import * as pulumi from "@pulumi/pulumi";
 * import * as proxmoxve from "@muhlba91/pulumi-proxmoxve";
 *
 * const example = new proxmoxve.ceph.Pool("example", {
 *     nodeName: "pve",
 *     name: "tank",
 *     application: "rbd",
 *     size: 3,
 *     minSize: 2,
 *     pgNum: 128,
 *     pgAutoscaleMode: "warn",
 * });
 * ```
 *
 * ## Import
 *
 * !/usr/bin/env sh
 * Ceph pools can be imported using the format `node_name/pool_name`, e.g.:
 *
 * ```sh
 * $ pulumi import proxmoxve:ceph/pool:Pool example pve/tank
 * ```
 */
export declare class Pool extends pulumi.CustomResource {
    /**
     * Get an existing Pool 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?: PoolState, opts?: pulumi.CustomResourceOptions): Pool;
    /**
     * Returns true if the given object is an instance of Pool.  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 Pool;
    /**
     * Configure VM and CT storage entries using the new pool. Applied at create time only; changing this value forces replacement.
     */
    readonly addStorages: pulumi.Output<boolean | undefined>;
    /**
     * The application using the pool. One of `rbd`, `cephfs`, `rgw`. Defaults to `rbd` server-side.
     */
    readonly application: pulumi.Output<string>;
    /**
     * The CRUSH rule name used for object placement.
     */
    readonly crushRule: pulumi.Output<string>;
    /**
     * Create an erasure coded pool. Specified as `k=<int>,m=<int>[,profile=name][,device-class=class][,failure-domain=domain]` (e.g. `k=4,m=2`). Cannot be changed after creation.
     */
    readonly erasureCoding: pulumi.Output<string | undefined>;
    /**
     * If true, destroy the pool even when in use. Passed as `force=1` on delete.
     */
    readonly forceDestroy: pulumi.Output<boolean>;
    /**
     * Minimum number of replicas per object.
     */
    readonly minSize: pulumi.Output<number>;
    /**
     * The pool name. Must be unique within the Ceph cluster.
     */
    readonly name: pulumi.Output<string>;
    /**
     * The cluster node used to dispatch the API call. Any node running Ceph is acceptable; the pool itself is cluster-wide.
     */
    readonly nodeName: pulumi.Output<string>;
    /**
     * PG autoscaler mode. One of `on`, `off`, `warn`.
     */
    readonly pgAutoscaleMode: pulumi.Output<string>;
    /**
     * Number of placement groups.
     */
    readonly pgNum: pulumi.Output<number>;
    /**
     * Minimum number of placement groups (used by the autoscaler).
     */
    readonly pgNumMin: pulumi.Output<number>;
    /**
     * If true, remove the erasure code profile on destroy. Defaults to true. Only relevant for EC pools.
     */
    readonly removeEcprofile: pulumi.Output<boolean>;
    /**
     * If true, remove all pveceph-managed storages configured for this pool on destroy.
     */
    readonly removeStorages: pulumi.Output<boolean>;
    /**
     * Number of replicas per object.
     */
    readonly size: pulumi.Output<number>;
    /**
     * Estimated target size for the PG autoscaler (e.g. `100G`). **Write-only:** PVE returns this as a bytes integer (e.g. `1073741824`) while the input accepts a unit-suffixed string, so the configured spec is not round-tripped from the server.
     */
    readonly targetSize: pulumi.Output<string | undefined>;
    /**
     * Estimated target ratio for the PG autoscaler. **Write-only:** kept symmetric with `targetSize` (which cannot be round-tripped), so the configured value is not refreshed from the server.
     */
    readonly targetSizeRatio: pulumi.Output<number | undefined>;
    /**
     * Create a Pool 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: PoolArgs, opts?: pulumi.CustomResourceOptions);
}
/**
 * Input properties used for looking up and filtering Pool resources.
 */
export interface PoolState {
    /**
     * Configure VM and CT storage entries using the new pool. Applied at create time only; changing this value forces replacement.
     */
    addStorages?: pulumi.Input<boolean | undefined>;
    /**
     * The application using the pool. One of `rbd`, `cephfs`, `rgw`. Defaults to `rbd` server-side.
     */
    application?: pulumi.Input<string | undefined>;
    /**
     * The CRUSH rule name used for object placement.
     */
    crushRule?: pulumi.Input<string | undefined>;
    /**
     * Create an erasure coded pool. Specified as `k=<int>,m=<int>[,profile=name][,device-class=class][,failure-domain=domain]` (e.g. `k=4,m=2`). Cannot be changed after creation.
     */
    erasureCoding?: pulumi.Input<string | undefined>;
    /**
     * If true, destroy the pool even when in use. Passed as `force=1` on delete.
     */
    forceDestroy?: pulumi.Input<boolean | undefined>;
    /**
     * Minimum number of replicas per object.
     */
    minSize?: pulumi.Input<number | undefined>;
    /**
     * The pool name. Must be unique within the Ceph cluster.
     */
    name?: pulumi.Input<string | undefined>;
    /**
     * The cluster node used to dispatch the API call. Any node running Ceph is acceptable; the pool itself is cluster-wide.
     */
    nodeName?: pulumi.Input<string | undefined>;
    /**
     * PG autoscaler mode. One of `on`, `off`, `warn`.
     */
    pgAutoscaleMode?: pulumi.Input<string | undefined>;
    /**
     * Number of placement groups.
     */
    pgNum?: pulumi.Input<number | undefined>;
    /**
     * Minimum number of placement groups (used by the autoscaler).
     */
    pgNumMin?: pulumi.Input<number | undefined>;
    /**
     * If true, remove the erasure code profile on destroy. Defaults to true. Only relevant for EC pools.
     */
    removeEcprofile?: pulumi.Input<boolean | undefined>;
    /**
     * If true, remove all pveceph-managed storages configured for this pool on destroy.
     */
    removeStorages?: pulumi.Input<boolean | undefined>;
    /**
     * Number of replicas per object.
     */
    size?: pulumi.Input<number | undefined>;
    /**
     * Estimated target size for the PG autoscaler (e.g. `100G`). **Write-only:** PVE returns this as a bytes integer (e.g. `1073741824`) while the input accepts a unit-suffixed string, so the configured spec is not round-tripped from the server.
     */
    targetSize?: pulumi.Input<string | undefined>;
    /**
     * Estimated target ratio for the PG autoscaler. **Write-only:** kept symmetric with `targetSize` (which cannot be round-tripped), so the configured value is not refreshed from the server.
     */
    targetSizeRatio?: pulumi.Input<number | undefined>;
}
/**
 * The set of arguments for constructing a Pool resource.
 */
export interface PoolArgs {
    /**
     * Configure VM and CT storage entries using the new pool. Applied at create time only; changing this value forces replacement.
     */
    addStorages?: pulumi.Input<boolean | undefined>;
    /**
     * The application using the pool. One of `rbd`, `cephfs`, `rgw`. Defaults to `rbd` server-side.
     */
    application?: pulumi.Input<string | undefined>;
    /**
     * The CRUSH rule name used for object placement.
     */
    crushRule?: pulumi.Input<string | undefined>;
    /**
     * Create an erasure coded pool. Specified as `k=<int>,m=<int>[,profile=name][,device-class=class][,failure-domain=domain]` (e.g. `k=4,m=2`). Cannot be changed after creation.
     */
    erasureCoding?: pulumi.Input<string | undefined>;
    /**
     * If true, destroy the pool even when in use. Passed as `force=1` on delete.
     */
    forceDestroy?: pulumi.Input<boolean | undefined>;
    /**
     * Minimum number of replicas per object.
     */
    minSize?: pulumi.Input<number | undefined>;
    /**
     * The pool name. Must be unique within the Ceph cluster.
     */
    name?: pulumi.Input<string | undefined>;
    /**
     * The cluster node used to dispatch the API call. Any node running Ceph is acceptable; the pool itself is cluster-wide.
     */
    nodeName: pulumi.Input<string>;
    /**
     * PG autoscaler mode. One of `on`, `off`, `warn`.
     */
    pgAutoscaleMode?: pulumi.Input<string | undefined>;
    /**
     * Number of placement groups.
     */
    pgNum?: pulumi.Input<number | undefined>;
    /**
     * Minimum number of placement groups (used by the autoscaler).
     */
    pgNumMin?: pulumi.Input<number | undefined>;
    /**
     * If true, remove the erasure code profile on destroy. Defaults to true. Only relevant for EC pools.
     */
    removeEcprofile?: pulumi.Input<boolean | undefined>;
    /**
     * If true, remove all pveceph-managed storages configured for this pool on destroy.
     */
    removeStorages?: pulumi.Input<boolean | undefined>;
    /**
     * Number of replicas per object.
     */
    size?: pulumi.Input<number | undefined>;
    /**
     * Estimated target size for the PG autoscaler (e.g. `100G`). **Write-only:** PVE returns this as a bytes integer (e.g. `1073741824`) while the input accepts a unit-suffixed string, so the configured spec is not round-tripped from the server.
     */
    targetSize?: pulumi.Input<string | undefined>;
    /**
     * Estimated target ratio for the PG autoscaler. **Write-only:** kept symmetric with `targetSize` (which cannot be round-tripped), so the configured value is not refreshed from the server.
     */
    targetSizeRatio?: pulumi.Input<number | undefined>;
}
//# sourceMappingURL=pool.d.ts.map