import * as pulumi from "@pulumi/pulumi"; import * as inputs from "./types/input"; import * as outputs from "./types/output"; /** * > **Authentication:** The `nutanix.ProtectionPolicyV2` resource does **not** support API key authentication for multi-site protection policy operations. Use `username` and `password` in the provider configuration—do not use `apiKey`. Using API key will result in authorization errors (DPO-10600). * * Creates a protection policy to automate the recovery point creation and replication process. * * ## Example—Synchronous Protection Policy * * * ```typescript * import * as pulumi from "@pulumi/pulumi"; * import * as nutanix from "@pierskarsenbarg/nutanix"; * * const synchronous_protection_policy = new nutanix.ProtectionPolicyV2("synchronous-protection-policy", { * name: "synchronous_protection_policy", * replicationConfigurations: [ * { * sourceLocationLabel: "source", * remoteLocationLabel: "target", * schedule: { * recoveryPointObjectiveTimeSeconds: 0, * recoveryPointType: "CRASH_CONSISTENT", * syncReplicationAutoSuspendTimeoutSeconds: 10, * }, * }, * { * sourceLocationLabel: "target", * remoteLocationLabel: "source", * schedule: { * recoveryPointObjectiveTimeSeconds: 0, * recoveryPointType: "CRASH_CONSISTENT", * syncReplicationAutoSuspendTimeoutSeconds: 10, * }, * }, * ], * replicationLocations: [ * { * domainManagerExtId: "6a44b05e-cb9b-4e7e-8d75-b1b4715369c4", * label: "source", * isPrimary: true, * }, * { * domainManagerExtId: "75dde184-3a0e-4f59-a185-03ca1efead17", * label: "target", * isPrimary: false, * }, * ], * categoryIds: ["b08ed184-6b0c-42c1-8179-7b9026fe2676"], * }); * ``` * * * ## Example—Linear Retention Protection Policy * * * ```typescript * import * as pulumi from "@pulumi/pulumi"; * import * as nutanix from "@pierskarsenbarg/nutanix"; * * const linear_retention_protection_policy = new nutanix.ProtectionPolicyV2("linear-retention-protection-policy", { * name: "linear-retention-protection-policy", * replicationConfigurations: [ * { * sourceLocationLabel: "source", * remoteLocationLabel: "target", * schedule: { * recoveryPointObjectiveTimeSeconds: 7200, * recoveryPointType: "CRASH_CONSISTENT", * retention: { * linearRetention: { * local: 1, * remote: 1, * }, * }, * }, * }, * { * sourceLocationLabel: "target", * remoteLocationLabel: "source", * schedule: { * recoveryPointObjectiveTimeSeconds: 7200, * recoveryPointType: "CRASH_CONSISTENT", * retention: { * linearRetention: { * local: 1, * remote: 1, * }, * }, * }, * }, * ], * replicationLocations: [ * { * domainManagerExtId: "6a44b05e-cb9b-4e7e-8d75-b1b4715369c4", * label: "source", * isPrimary: true, * replicationSubLocation: { * clusterExtIds: { * clusterExtIds: [clusterExtId], * }, * }, * }, * { * domainManagerExtId: "75dde184-3a0e-4f59-a185-03ca1efead17", * label: "target", * isPrimary: false, * }, * ], * categoryIds: ["b08ed184-6b0c-42c1-8179-7b9026fe2676"], * }); * ``` * * * ## Example—Auto Rollup Retention Protection Policy * * * ```typescript * import * as pulumi from "@pulumi/pulumi"; * import * as nutanix from "@pierskarsenbarg/nutanix"; * * // Create Auto Rollup Retention Protection Policy * const auto_rollup_retention_protection_policy = new nutanix.ProtectionPolicyV2("auto-rollup-retention-protection-policy", { * name: "auto_rollup_retention_protection_policy", * replicationConfigurations: [ * { * sourceLocationLabel: "source", * remoteLocationLabel: "target", * schedule: { * recoveryPointObjectiveTimeSeconds: 60, * recoveryPointType: "CRASH_CONSISTENT", * syncReplicationAutoSuspendTimeoutSeconds: 20, * startTime: "18h:10m", * retention: { * autoRollupRetention: { * local: { * snapshotIntervalType: "WEEKLY", * frequency: 2, * }, * remote: { * snapshotIntervalType: "DAILY", * frequency: 1, * }, * }, * }, * }, * }, * { * sourceLocationLabel: "target", * remoteLocationLabel: "source", * schedule: { * recoveryPointObjectiveTimeSeconds: 60, * recoveryPointType: "CRASH_CONSISTENT", * syncReplicationAutoSuspendTimeoutSeconds: 30, * startTime: "18h:10m", * retention: { * autoRollupRetention: { * local: { * snapshotIntervalType: "DAILY", * frequency: 1, * }, * remote: { * snapshotIntervalType: "WEEKLY", * frequency: 2, * }, * }, * }, * }, * }, * ], * replicationLocations: [ * { * domainManagerExtId: "6a44b05e-cb9b-4e7e-8d75-b1b4715369c4", * label: "source", * isPrimary: true, * }, * { * domainManagerExtId: "75dde184-3a0e-4f59-a185-03ca1efead17", * label: "target", * isPrimary: false, * }, * ], * categoryIds: ["b08ed184-6b0c-42c1-8179-7b9026fe2676"], * }); * ``` * */ export declare class ProtectionPolicyV2 extends pulumi.CustomResource { /** * Get an existing ProtectionPolicyV2 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?: ProtectionPolicyV2State, opts?: pulumi.CustomResourceOptions): ProtectionPolicyV2; /** * Returns true if the given object is an instance of ProtectionPolicyV2. 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 ProtectionPolicyV2; /** * -(Optional) Host entity with its attributes. */ readonly categoryIds: pulumi.Output; /** * -(Optional) Description of the protection policy. */ readonly description: pulumi.Output; readonly extId: pulumi.Output; readonly isApprovalPolicyNeeded: pulumi.Output; readonly links: pulumi.Output; /** * -(Required) Name of the protection policy. */ readonly name: pulumi.Output; readonly ownerExtId: pulumi.Output; /** * -(Required) Cluster reference for an entity. */ readonly replicationConfigurations: pulumi.Output; /** * -(Required) Hypervisor details. */ readonly replicationLocations: pulumi.Output; readonly tenantId: pulumi.Output; /** * Create a ProtectionPolicyV2 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: ProtectionPolicyV2Args, opts?: pulumi.CustomResourceOptions); } /** * Input properties used for looking up and filtering ProtectionPolicyV2 resources. */ export interface ProtectionPolicyV2State { /** * -(Optional) Host entity with its attributes. */ categoryIds?: pulumi.Input[] | undefined>; /** * -(Optional) Description of the protection policy. */ description?: pulumi.Input; extId?: pulumi.Input; isApprovalPolicyNeeded?: pulumi.Input; links?: pulumi.Input[] | undefined>; /** * -(Required) Name of the protection policy. */ name?: pulumi.Input; ownerExtId?: pulumi.Input; /** * -(Required) Cluster reference for an entity. */ replicationConfigurations?: pulumi.Input[] | undefined>; /** * -(Required) Hypervisor details. */ replicationLocations?: pulumi.Input[] | undefined>; tenantId?: pulumi.Input; } /** * The set of arguments for constructing a ProtectionPolicyV2 resource. */ export interface ProtectionPolicyV2Args { /** * -(Optional) Host entity with its attributes. */ categoryIds: pulumi.Input[]>; /** * -(Optional) Description of the protection policy. */ description?: pulumi.Input; /** * -(Required) Name of the protection policy. */ name?: pulumi.Input; /** * -(Required) Cluster reference for an entity. */ replicationConfigurations: pulumi.Input[]>; /** * -(Required) Hypervisor details. */ replicationLocations: pulumi.Input[]>; } //# sourceMappingURL=protectionPolicyV2.d.ts.map