import * as pulumi from "@pulumi/pulumi";
import * as inputs from "./types/input";
import * as outputs from "./types/output";
/**
* Provides Nutanix resource to create storage policy
*
* > **Note**:
* Once `encryptionState` is explicitly set to `ENABLED`, it cannot be reverted back to a system-derived value.
*
* If compression_state, encryption_state, or replicationFactor are intended to be system-derived, ensure that the qosSpec block is included.
*
* ## Example
*
* ### Complete Example with All Fields
*
*
* ```typescript
* import * as pulumi from "@pulumi/pulumi";
* import * as nutanix from "@pierskarsenbarg/nutanix";
*
* const example = new nutanix.StoragePolicyV2("example", {
* name: "my-storage-policy",
* compressionSpecs: [{
* compressionState: "POSTPROCESS",
* }],
* encryptionSpecs: [{
* encryptionState: "ENABLED",
* }],
* qosSpecs: [{
* throttledIops: 1000,
* }],
* faultToleranceSpecs: [{
* replicationFactor: "THREE",
* }],
* categoryExtIds: [
* "4d552748-e119-540a-b06c-3c6f0d213fa2",
* "5e663859-f220-651b-c17d-4d7f0e324fb3",
* ],
* });
* ```
*
*
* ### Minimal Example with System-Derived Values
*
*
* ```typescript
* import * as pulumi from "@pulumi/pulumi";
* import * as nutanix from "@pierskarsenbarg/nutanix";
*
* const minimal = new nutanix.StoragePolicyV2("minimal", {
* name: "minimal-storage-policy",
* qosSpecs: [{
* throttledIops: 100,
* }],
* compressionSpecs: [{
* compressionState: "SYSTEM_DERIVED",
* }],
* encryptionSpecs: [{
* encryptionState: "SYSTEM_DERIVED",
* }],
* faultToleranceSpecs: [{
* replicationFactor: "SYSTEM_DERIVED",
* }],
* });
* ```
*
*
* ### Example with Inline Compression
*
*
* ```typescript
* import * as pulumi from "@pulumi/pulumi";
* import * as nutanix from "@pierskarsenbarg/nutanix";
*
* const inlineCompression = new nutanix.StoragePolicyV2("inline_compression", {
* name: "inline-compression-policy",
* compressionSpecs: [{
* compressionState: "INLINE",
* }],
* encryptionSpecs: [{
* encryptionState: "ENABLED",
* }],
* qosSpecs: [{
* throttledIops: 5000,
* }],
* faultToleranceSpecs: [{
* replicationFactor: "TWO",
* }],
* });
* ```
*
*
* ### Example with Disabled Compression
*
*
* ```typescript
* import * as pulumi from "@pulumi/pulumi";
* import * as nutanix from "@pierskarsenbarg/nutanix";
*
* const noCompression = new nutanix.StoragePolicyV2("no_compression", {
* name: "no-compression-policy",
* compressionSpecs: [{
* compressionState: "DISABLED",
* }],
* qosSpecs: [{
* throttledIops: 2000,
* }],
* faultToleranceSpecs: [{
* replicationFactor: "THREE",
* }],
* });
* ```
*
*
* ### Example with Categories Only
*
*
* ```typescript
* import * as pulumi from "@pulumi/pulumi";
* import * as nutanix from "@pierskarsenbarg/nutanix";
*
* // Rest all will be System Derived
* const categorized = new nutanix.StoragePolicyV2("categorized", {
* name: "categorized-policy",
* categoryExtIds: ["4d552748-e119-540a-b06c-3c6f0d213fa2"],
* qosSpecs: [{
* throttledIops: 100,
* }],
* });
* ```
*
*/
export declare class StoragePolicyV2 extends pulumi.CustomResource {
/**
* Get an existing StoragePolicyV2 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, state?: StoragePolicyV2State, opts?: pulumi.CustomResourceOptions): StoragePolicyV2;
/**
* Returns true if the given object is an instance of StoragePolicyV2. 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 StoragePolicyV2;
/**
* - (Optional) List of external identifiers for Categories to be included in the Storage Policy. Each ID must be a valid UUID format. Maximum 20 items allowed.
*/
readonly categoryExtIds: pulumi.Output;
/**
* - (Optional) Defines compression parameters for entities governed by the Storage Policy.
*/
readonly compressionSpecs: pulumi.Output;
/**
* - (Optional) Defines encryption parameters for entities governed by the Storage Policy.
*/
readonly encryptionSpecs: pulumi.Output;
/**
* - (Computed) External identifier of the Storage Policy.
*/
readonly extId: pulumi.Output;
/**
* - (Optional) Defines Fault Tolerance parameters for the entities.
*/
readonly faultToleranceSpecs: pulumi.Output;
/**
* - A HATEOAS style link for the response. Each link contains a user-friendly name identifying the link and an address for retrieving the particular resource.
*/
readonly links: pulumi.Output;
/**
* - (Required) Storage Policy name. Must be unique and cannot exceed 64 characters.
*/
readonly name: pulumi.Output;
/**
* - (Computed) Indicates whether the policy is user-created or system-created. Valid values: `"USER"`, `"SYSTEM"`.
*/
readonly policyType: pulumi.Output;
/**
* - (Optional) Defines Storage Quality of Service (QOS) parameters for the entities.
*/
readonly qosSpecs: pulumi.Output;
/**
* - A globally unique identifier that represents the tenant that owns this entity.
*/
readonly tenantId: pulumi.Output;
/**
* Create a StoragePolicyV2 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?: StoragePolicyV2Args, opts?: pulumi.CustomResourceOptions);
}
/**
* Input properties used for looking up and filtering StoragePolicyV2 resources.
*/
export interface StoragePolicyV2State {
/**
* - (Optional) List of external identifiers for Categories to be included in the Storage Policy. Each ID must be a valid UUID format. Maximum 20 items allowed.
*/
categoryExtIds?: pulumi.Input[] | undefined>;
/**
* - (Optional) Defines compression parameters for entities governed by the Storage Policy.
*/
compressionSpecs?: pulumi.Input[] | undefined>;
/**
* - (Optional) Defines encryption parameters for entities governed by the Storage Policy.
*/
encryptionSpecs?: pulumi.Input[] | undefined>;
/**
* - (Computed) External identifier of the Storage Policy.
*/
extId?: pulumi.Input;
/**
* - (Optional) Defines Fault Tolerance parameters for the entities.
*/
faultToleranceSpecs?: pulumi.Input[] | undefined>;
/**
* - A HATEOAS style link for the response. Each link contains a user-friendly name identifying the link and an address for retrieving the particular resource.
*/
links?: pulumi.Input[] | undefined>;
/**
* - (Required) Storage Policy name. Must be unique and cannot exceed 64 characters.
*/
name?: pulumi.Input;
/**
* - (Computed) Indicates whether the policy is user-created or system-created. Valid values: `"USER"`, `"SYSTEM"`.
*/
policyType?: pulumi.Input;
/**
* - (Optional) Defines Storage Quality of Service (QOS) parameters for the entities.
*/
qosSpecs?: pulumi.Input[] | undefined>;
/**
* - A globally unique identifier that represents the tenant that owns this entity.
*/
tenantId?: pulumi.Input;
}
/**
* The set of arguments for constructing a StoragePolicyV2 resource.
*/
export interface StoragePolicyV2Args {
/**
* - (Optional) List of external identifiers for Categories to be included in the Storage Policy. Each ID must be a valid UUID format. Maximum 20 items allowed.
*/
categoryExtIds?: pulumi.Input[] | undefined>;
/**
* - (Optional) Defines compression parameters for entities governed by the Storage Policy.
*/
compressionSpecs?: pulumi.Input[] | undefined>;
/**
* - (Optional) Defines encryption parameters for entities governed by the Storage Policy.
*/
encryptionSpecs?: pulumi.Input[] | undefined>;
/**
* - (Optional) Defines Fault Tolerance parameters for the entities.
*/
faultToleranceSpecs?: pulumi.Input[] | undefined>;
/**
* - (Required) Storage Policy name. Must be unique and cannot exceed 64 characters.
*/
name?: pulumi.Input;
/**
* - (Optional) Defines Storage Quality of Service (QOS) parameters for the entities.
*/
qosSpecs?: pulumi.Input[] | undefined>;
}
//# sourceMappingURL=storagePolicyV2.d.ts.map