1. Packages
  2. Nutanix
  3. API Docs
  4. ProtectionPolicyV2
Nutanix v0.8.0 published on Sunday, May 11, 2025 by Piers Karsenbarg

nutanix.ProtectionPolicyV2

Explore with Pulumi AI

nutanix logo
Nutanix v0.8.0 published on Sunday, May 11, 2025 by Piers Karsenbarg

    Creates a protection policy to automate the recovery point creation and replication process.

    Example—Synchronous Protection Policy

    import * as pulumi from "@pulumi/pulumi";
    import * as nutanix from "@pierskarsenbarg/nutanix";
    
    const synchronous_protection_policy = new nutanix.ProtectionPolicyV2("synchronous-protection-policy", {
        categoryIds: ["b08ed184-6b0c-42c1-8179-7b9026fe2676"],
        replicationConfigurations: [
            {
                remoteLocationLabel: "target",
                schedule: {
                    recoveryPointObjectiveTimeSeconds: 0,
                    recoveryPointType: "CRASH_CONSISTENT",
                    syncReplicationAutoSuspendTimeoutSeconds: 10,
                },
                sourceLocationLabel: "source",
            },
            {
                remoteLocationLabel: "source",
                schedule: {
                    recoveryPointObjectiveTimeSeconds: 0,
                    recoveryPointType: "CRASH_CONSISTENT",
                    syncReplicationAutoSuspendTimeoutSeconds: 10,
                },
                sourceLocationLabel: "target",
            },
        ],
        replicationLocations: [
            {
                domainManagerExtId: "6a44b05e-cb9b-4e7e-8d75-b1b4715369c4",
                isPrimary: true,
                label: "source",
            },
            {
                domainManagerExtId: "75dde184-3a0e-4f59-a185-03ca1efead17",
                isPrimary: false,
                label: "target",
            },
        ],
    });
    
    import pulumi
    import pulumi_nutanix as nutanix
    
    synchronous_protection_policy = nutanix.ProtectionPolicyV2("synchronous-protection-policy",
        category_ids=["b08ed184-6b0c-42c1-8179-7b9026fe2676"],
        replication_configurations=[
            {
                "remote_location_label": "target",
                "schedule": {
                    "recovery_point_objective_time_seconds": 0,
                    "recovery_point_type": "CRASH_CONSISTENT",
                    "sync_replication_auto_suspend_timeout_seconds": 10,
                },
                "source_location_label": "source",
            },
            {
                "remote_location_label": "source",
                "schedule": {
                    "recovery_point_objective_time_seconds": 0,
                    "recovery_point_type": "CRASH_CONSISTENT",
                    "sync_replication_auto_suspend_timeout_seconds": 10,
                },
                "source_location_label": "target",
            },
        ],
        replication_locations=[
            {
                "domain_manager_ext_id": "6a44b05e-cb9b-4e7e-8d75-b1b4715369c4",
                "is_primary": True,
                "label": "source",
            },
            {
                "domain_manager_ext_id": "75dde184-3a0e-4f59-a185-03ca1efead17",
                "is_primary": False,
                "label": "target",
            },
        ])
    
    package main
    
    import (
    	"github.com/pierskarsenbarg/pulumi-nutanix/sdk/go/nutanix"
    	"github.com/pulumi/pulumi/sdk/v3/go/pulumi"
    )
    
    func main() {
    	pulumi.Run(func(ctx *pulumi.Context) error {
    		_, err := nutanix.NewProtectionPolicyV2(ctx, "synchronous-protection-policy", &nutanix.ProtectionPolicyV2Args{
    			CategoryIds: pulumi.StringArray{
    				pulumi.String("b08ed184-6b0c-42c1-8179-7b9026fe2676"),
    			},
    			ReplicationConfigurations: nutanix.ProtectionPolicyV2ReplicationConfigurationArray{
    				&nutanix.ProtectionPolicyV2ReplicationConfigurationArgs{
    					RemoteLocationLabel: pulumi.String("target"),
    					Schedule: &nutanix.ProtectionPolicyV2ReplicationConfigurationScheduleArgs{
    						RecoveryPointObjectiveTimeSeconds:        pulumi.Int(0),
    						RecoveryPointType:                        pulumi.String("CRASH_CONSISTENT"),
    						SyncReplicationAutoSuspendTimeoutSeconds: pulumi.Int(10),
    					},
    					SourceLocationLabel: pulumi.String("source"),
    				},
    				&nutanix.ProtectionPolicyV2ReplicationConfigurationArgs{
    					RemoteLocationLabel: pulumi.String("source"),
    					Schedule: &nutanix.ProtectionPolicyV2ReplicationConfigurationScheduleArgs{
    						RecoveryPointObjectiveTimeSeconds:        pulumi.Int(0),
    						RecoveryPointType:                        pulumi.String("CRASH_CONSISTENT"),
    						SyncReplicationAutoSuspendTimeoutSeconds: pulumi.Int(10),
    					},
    					SourceLocationLabel: pulumi.String("target"),
    				},
    			},
    			ReplicationLocations: nutanix.ProtectionPolicyV2ReplicationLocationArray{
    				&nutanix.ProtectionPolicyV2ReplicationLocationArgs{
    					DomainManagerExtId: pulumi.String("6a44b05e-cb9b-4e7e-8d75-b1b4715369c4"),
    					IsPrimary:          pulumi.Bool(true),
    					Label:              pulumi.String("source"),
    				},
    				&nutanix.ProtectionPolicyV2ReplicationLocationArgs{
    					DomainManagerExtId: pulumi.String("75dde184-3a0e-4f59-a185-03ca1efead17"),
    					IsPrimary:          pulumi.Bool(false),
    					Label:              pulumi.String("target"),
    				},
    			},
    		})
    		if err != nil {
    			return err
    		}
    		return nil
    	})
    }
    
    using System.Collections.Generic;
    using System.Linq;
    using Pulumi;
    using Nutanix = PiersKarsenbarg.Nutanix;
    
    return await Deployment.RunAsync(() => 
    {
        var synchronous_protection_policy = new Nutanix.ProtectionPolicyV2("synchronous-protection-policy", new()
        {
            CategoryIds = new[]
            {
                "b08ed184-6b0c-42c1-8179-7b9026fe2676",
            },
            ReplicationConfigurations = new[]
            {
                new Nutanix.Inputs.ProtectionPolicyV2ReplicationConfigurationArgs
                {
                    RemoteLocationLabel = "target",
                    Schedule = new Nutanix.Inputs.ProtectionPolicyV2ReplicationConfigurationScheduleArgs
                    {
                        RecoveryPointObjectiveTimeSeconds = 0,
                        RecoveryPointType = "CRASH_CONSISTENT",
                        SyncReplicationAutoSuspendTimeoutSeconds = 10,
                    },
                    SourceLocationLabel = "source",
                },
                new Nutanix.Inputs.ProtectionPolicyV2ReplicationConfigurationArgs
                {
                    RemoteLocationLabel = "source",
                    Schedule = new Nutanix.Inputs.ProtectionPolicyV2ReplicationConfigurationScheduleArgs
                    {
                        RecoveryPointObjectiveTimeSeconds = 0,
                        RecoveryPointType = "CRASH_CONSISTENT",
                        SyncReplicationAutoSuspendTimeoutSeconds = 10,
                    },
                    SourceLocationLabel = "target",
                },
            },
            ReplicationLocations = new[]
            {
                new Nutanix.Inputs.ProtectionPolicyV2ReplicationLocationArgs
                {
                    DomainManagerExtId = "6a44b05e-cb9b-4e7e-8d75-b1b4715369c4",
                    IsPrimary = true,
                    Label = "source",
                },
                new Nutanix.Inputs.ProtectionPolicyV2ReplicationLocationArgs
                {
                    DomainManagerExtId = "75dde184-3a0e-4f59-a185-03ca1efead17",
                    IsPrimary = false,
                    Label = "target",
                },
            },
        });
    
    });
    
    package generated_program;
    
    import com.pulumi.Context;
    import com.pulumi.Pulumi;
    import com.pulumi.core.Output;
    import com.pulumi.nutanix.ProtectionPolicyV2;
    import com.pulumi.nutanix.ProtectionPolicyV2Args;
    import com.pulumi.nutanix.inputs.ProtectionPolicyV2ReplicationConfigurationArgs;
    import com.pulumi.nutanix.inputs.ProtectionPolicyV2ReplicationConfigurationScheduleArgs;
    import com.pulumi.nutanix.inputs.ProtectionPolicyV2ReplicationLocationArgs;
    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) {
            var synchronous_protection_policy = new ProtectionPolicyV2("synchronous-protection-policy", ProtectionPolicyV2Args.builder()
                .categoryIds("b08ed184-6b0c-42c1-8179-7b9026fe2676")
                .replicationConfigurations(            
                    ProtectionPolicyV2ReplicationConfigurationArgs.builder()
                        .remoteLocationLabel("target")
                        .schedule(ProtectionPolicyV2ReplicationConfigurationScheduleArgs.builder()
                            .recoveryPointObjectiveTimeSeconds(0)
                            .recoveryPointType("CRASH_CONSISTENT")
                            .syncReplicationAutoSuspendTimeoutSeconds(10)
                            .build())
                        .sourceLocationLabel("source")
                        .build(),
                    ProtectionPolicyV2ReplicationConfigurationArgs.builder()
                        .remoteLocationLabel("source")
                        .schedule(ProtectionPolicyV2ReplicationConfigurationScheduleArgs.builder()
                            .recoveryPointObjectiveTimeSeconds(0)
                            .recoveryPointType("CRASH_CONSISTENT")
                            .syncReplicationAutoSuspendTimeoutSeconds(10)
                            .build())
                        .sourceLocationLabel("target")
                        .build())
                .replicationLocations(            
                    ProtectionPolicyV2ReplicationLocationArgs.builder()
                        .domainManagerExtId("6a44b05e-cb9b-4e7e-8d75-b1b4715369c4")
                        .isPrimary(true)
                        .label("source")
                        .build(),
                    ProtectionPolicyV2ReplicationLocationArgs.builder()
                        .domainManagerExtId("75dde184-3a0e-4f59-a185-03ca1efead17")
                        .isPrimary(false)
                        .label("target")
                        .build())
                .build());
    
        }
    }
    
    resources:
      synchronous-protection-policy:
        type: nutanix:ProtectionPolicyV2
        properties:
          categoryIds:
            - b08ed184-6b0c-42c1-8179-7b9026fe2676
          replicationConfigurations:
            - remoteLocationLabel: target
              schedule:
                recoveryPointObjectiveTimeSeconds: 0
                recoveryPointType: CRASH_CONSISTENT
                syncReplicationAutoSuspendTimeoutSeconds: 10
              sourceLocationLabel: source
            - remoteLocationLabel: source
              schedule:
                recoveryPointObjectiveTimeSeconds: 0
                recoveryPointType: CRASH_CONSISTENT
                syncReplicationAutoSuspendTimeoutSeconds: 10
              sourceLocationLabel: target
          replicationLocations:
            - domainManagerExtId: 6a44b05e-cb9b-4e7e-8d75-b1b4715369c4
              isPrimary: true
              label: source
            - domainManagerExtId: 75dde184-3a0e-4f59-a185-03ca1efead17
              isPrimary: false
              label: target
    

    Example—Linear Retention Protection Policy

    import * as pulumi from "@pulumi/pulumi";
    import * as nutanix from "@pierskarsenbarg/nutanix";
    
    const linear_retention_protection_policy = new nutanix.ProtectionPolicyV2("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: [local.clusterExtId],
                    },
                },
            },
            {
                domainManagerExtId: "75dde184-3a0e-4f59-a185-03ca1efead17",
                label: "target",
                isPrimary: false,
            },
        ],
        categoryIds: ["b08ed184-6b0c-42c1-8179-7b9026fe2676"],
    });
    
    import pulumi
    import pulumi_nutanix as nutanix
    
    linear_retention_protection_policy = nutanix.ProtectionPolicyV2("linear-retention-protection-policy",
        replication_configurations=[
            {
                "source_location_label": "source",
                "remote_location_label": "target",
                "schedule": {
                    "recovery_point_objective_time_seconds": 7200,
                    "recovery_point_type": "CRASH_CONSISTENT",
                    "retention": {
                        "linear_retention": {
                            "local": 1,
                            "remote": 1,
                        },
                    },
                },
            },
            {
                "source_location_label": "target",
                "remote_location_label": "source",
                "schedule": {
                    "recovery_point_objective_time_seconds": 7200,
                    "recovery_point_type": "CRASH_CONSISTENT",
                    "retention": {
                        "linear_retention": {
                            "local": 1,
                            "remote": 1,
                        },
                    },
                },
            },
        ],
        replication_locations=[
            {
                "domain_manager_ext_id": "6a44b05e-cb9b-4e7e-8d75-b1b4715369c4",
                "label": "source",
                "is_primary": True,
                "replication_sub_location": {
                    "cluster_ext_ids": {
                        "cluster_ext_ids": [local["clusterExtId"]],
                    },
                },
            },
            {
                "domain_manager_ext_id": "75dde184-3a0e-4f59-a185-03ca1efead17",
                "label": "target",
                "is_primary": False,
            },
        ],
        category_ids=["b08ed184-6b0c-42c1-8179-7b9026fe2676"])
    
    package main
    
    import (
    	"github.com/pierskarsenbarg/pulumi-nutanix/sdk/go/nutanix"
    	"github.com/pulumi/pulumi/sdk/v3/go/pulumi"
    )
    
    func main() {
    	pulumi.Run(func(ctx *pulumi.Context) error {
    		_, err := nutanix.NewProtectionPolicyV2(ctx, "linear-retention-protection-policy", &nutanix.ProtectionPolicyV2Args{
    			ReplicationConfigurations: nutanix.ProtectionPolicyV2ReplicationConfigurationArray{
    				&nutanix.ProtectionPolicyV2ReplicationConfigurationArgs{
    					SourceLocationLabel: pulumi.String("source"),
    					RemoteLocationLabel: pulumi.String("target"),
    					Schedule: &nutanix.ProtectionPolicyV2ReplicationConfigurationScheduleArgs{
    						RecoveryPointObjectiveTimeSeconds: pulumi.Int(7200),
    						RecoveryPointType:                 pulumi.String("CRASH_CONSISTENT"),
    						Retention: &nutanix.ProtectionPolicyV2ReplicationConfigurationScheduleRetentionArgs{
    							LinearRetention: &nutanix.ProtectionPolicyV2ReplicationConfigurationScheduleRetentionLinearRetentionArgs{
    								Local:  pulumi.Int(1),
    								Remote: pulumi.Int(1),
    							},
    						},
    					},
    				},
    				&nutanix.ProtectionPolicyV2ReplicationConfigurationArgs{
    					SourceLocationLabel: pulumi.String("target"),
    					RemoteLocationLabel: pulumi.String("source"),
    					Schedule: &nutanix.ProtectionPolicyV2ReplicationConfigurationScheduleArgs{
    						RecoveryPointObjectiveTimeSeconds: pulumi.Int(7200),
    						RecoveryPointType:                 pulumi.String("CRASH_CONSISTENT"),
    						Retention: &nutanix.ProtectionPolicyV2ReplicationConfigurationScheduleRetentionArgs{
    							LinearRetention: &nutanix.ProtectionPolicyV2ReplicationConfigurationScheduleRetentionLinearRetentionArgs{
    								Local:  pulumi.Int(1),
    								Remote: pulumi.Int(1),
    							},
    						},
    					},
    				},
    			},
    			ReplicationLocations: nutanix.ProtectionPolicyV2ReplicationLocationArray{
    				&nutanix.ProtectionPolicyV2ReplicationLocationArgs{
    					DomainManagerExtId: pulumi.String("6a44b05e-cb9b-4e7e-8d75-b1b4715369c4"),
    					Label:              pulumi.String("source"),
    					IsPrimary:          pulumi.Bool(true),
    					ReplicationSubLocation: &nutanix.ProtectionPolicyV2ReplicationLocationReplicationSubLocationArgs{
    						ClusterExtIds: &nutanix.ProtectionPolicyV2ReplicationLocationReplicationSubLocationClusterExtIdsArgs{
    							ClusterExtIds: pulumi.StringArray{
    								local.ClusterExtId,
    							},
    						},
    					},
    				},
    				&nutanix.ProtectionPolicyV2ReplicationLocationArgs{
    					DomainManagerExtId: pulumi.String("75dde184-3a0e-4f59-a185-03ca1efead17"),
    					Label:              pulumi.String("target"),
    					IsPrimary:          pulumi.Bool(false),
    				},
    			},
    			CategoryIds: pulumi.StringArray{
    				pulumi.String("b08ed184-6b0c-42c1-8179-7b9026fe2676"),
    			},
    		})
    		if err != nil {
    			return err
    		}
    		return nil
    	})
    }
    
    using System.Collections.Generic;
    using System.Linq;
    using Pulumi;
    using Nutanix = PiersKarsenbarg.Nutanix;
    
    return await Deployment.RunAsync(() => 
    {
        var linear_retention_protection_policy = new Nutanix.ProtectionPolicyV2("linear-retention-protection-policy", new()
        {
            ReplicationConfigurations = new[]
            {
                new Nutanix.Inputs.ProtectionPolicyV2ReplicationConfigurationArgs
                {
                    SourceLocationLabel = "source",
                    RemoteLocationLabel = "target",
                    Schedule = new Nutanix.Inputs.ProtectionPolicyV2ReplicationConfigurationScheduleArgs
                    {
                        RecoveryPointObjectiveTimeSeconds = 7200,
                        RecoveryPointType = "CRASH_CONSISTENT",
                        Retention = new Nutanix.Inputs.ProtectionPolicyV2ReplicationConfigurationScheduleRetentionArgs
                        {
                            LinearRetention = new Nutanix.Inputs.ProtectionPolicyV2ReplicationConfigurationScheduleRetentionLinearRetentionArgs
                            {
                                Local = 1,
                                Remote = 1,
                            },
                        },
                    },
                },
                new Nutanix.Inputs.ProtectionPolicyV2ReplicationConfigurationArgs
                {
                    SourceLocationLabel = "target",
                    RemoteLocationLabel = "source",
                    Schedule = new Nutanix.Inputs.ProtectionPolicyV2ReplicationConfigurationScheduleArgs
                    {
                        RecoveryPointObjectiveTimeSeconds = 7200,
                        RecoveryPointType = "CRASH_CONSISTENT",
                        Retention = new Nutanix.Inputs.ProtectionPolicyV2ReplicationConfigurationScheduleRetentionArgs
                        {
                            LinearRetention = new Nutanix.Inputs.ProtectionPolicyV2ReplicationConfigurationScheduleRetentionLinearRetentionArgs
                            {
                                Local = 1,
                                Remote = 1,
                            },
                        },
                    },
                },
            },
            ReplicationLocations = new[]
            {
                new Nutanix.Inputs.ProtectionPolicyV2ReplicationLocationArgs
                {
                    DomainManagerExtId = "6a44b05e-cb9b-4e7e-8d75-b1b4715369c4",
                    Label = "source",
                    IsPrimary = true,
                    ReplicationSubLocation = new Nutanix.Inputs.ProtectionPolicyV2ReplicationLocationReplicationSubLocationArgs
                    {
                        ClusterExtIds = new Nutanix.Inputs.ProtectionPolicyV2ReplicationLocationReplicationSubLocationClusterExtIdsArgs
                        {
                            ClusterExtIds = new[]
                            {
                                local.ClusterExtId,
                            },
                        },
                    },
                },
                new Nutanix.Inputs.ProtectionPolicyV2ReplicationLocationArgs
                {
                    DomainManagerExtId = "75dde184-3a0e-4f59-a185-03ca1efead17",
                    Label = "target",
                    IsPrimary = false,
                },
            },
            CategoryIds = new[]
            {
                "b08ed184-6b0c-42c1-8179-7b9026fe2676",
            },
        });
    
    });
    
    package generated_program;
    
    import com.pulumi.Context;
    import com.pulumi.Pulumi;
    import com.pulumi.core.Output;
    import com.pulumi.nutanix.ProtectionPolicyV2;
    import com.pulumi.nutanix.ProtectionPolicyV2Args;
    import com.pulumi.nutanix.inputs.ProtectionPolicyV2ReplicationConfigurationArgs;
    import com.pulumi.nutanix.inputs.ProtectionPolicyV2ReplicationConfigurationScheduleArgs;
    import com.pulumi.nutanix.inputs.ProtectionPolicyV2ReplicationConfigurationScheduleRetentionArgs;
    import com.pulumi.nutanix.inputs.ProtectionPolicyV2ReplicationConfigurationScheduleRetentionLinearRetentionArgs;
    import com.pulumi.nutanix.inputs.ProtectionPolicyV2ReplicationLocationArgs;
    import com.pulumi.nutanix.inputs.ProtectionPolicyV2ReplicationLocationReplicationSubLocationArgs;
    import com.pulumi.nutanix.inputs.ProtectionPolicyV2ReplicationLocationReplicationSubLocationClusterExtIdsArgs;
    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) {
            var linear_retention_protection_policy = new ProtectionPolicyV2("linear-retention-protection-policy", ProtectionPolicyV2Args.builder()
                .replicationConfigurations(            
                    ProtectionPolicyV2ReplicationConfigurationArgs.builder()
                        .sourceLocationLabel("source")
                        .remoteLocationLabel("target")
                        .schedule(ProtectionPolicyV2ReplicationConfigurationScheduleArgs.builder()
                            .recoveryPointObjectiveTimeSeconds(7200)
                            .recoveryPointType("CRASH_CONSISTENT")
                            .retention(ProtectionPolicyV2ReplicationConfigurationScheduleRetentionArgs.builder()
                                .linearRetention(ProtectionPolicyV2ReplicationConfigurationScheduleRetentionLinearRetentionArgs.builder()
                                    .local(1)
                                    .remote(1)
                                    .build())
                                .build())
                            .build())
                        .build(),
                    ProtectionPolicyV2ReplicationConfigurationArgs.builder()
                        .sourceLocationLabel("target")
                        .remoteLocationLabel("source")
                        .schedule(ProtectionPolicyV2ReplicationConfigurationScheduleArgs.builder()
                            .recoveryPointObjectiveTimeSeconds(7200)
                            .recoveryPointType("CRASH_CONSISTENT")
                            .retention(ProtectionPolicyV2ReplicationConfigurationScheduleRetentionArgs.builder()
                                .linearRetention(ProtectionPolicyV2ReplicationConfigurationScheduleRetentionLinearRetentionArgs.builder()
                                    .local(1)
                                    .remote(1)
                                    .build())
                                .build())
                            .build())
                        .build())
                .replicationLocations(            
                    ProtectionPolicyV2ReplicationLocationArgs.builder()
                        .domainManagerExtId("6a44b05e-cb9b-4e7e-8d75-b1b4715369c4")
                        .label("source")
                        .isPrimary(true)
                        .replicationSubLocation(ProtectionPolicyV2ReplicationLocationReplicationSubLocationArgs.builder()
                            .clusterExtIds(ProtectionPolicyV2ReplicationLocationReplicationSubLocationClusterExtIdsArgs.builder()
                                .clusterExtIds(local.clusterExtId())
                                .build())
                            .build())
                        .build(),
                    ProtectionPolicyV2ReplicationLocationArgs.builder()
                        .domainManagerExtId("75dde184-3a0e-4f59-a185-03ca1efead17")
                        .label("target")
                        .isPrimary(false)
                        .build())
                .categoryIds("b08ed184-6b0c-42c1-8179-7b9026fe2676")
                .build());
    
        }
    }
    
    resources:
      linear-retention-protection-policy:
        type: nutanix:ProtectionPolicyV2
        properties:
          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:
                    - ${local.clusterExtId}
            - domainManagerExtId: 75dde184-3a0e-4f59-a185-03ca1efead17
              label: target
              isPrimary: false
          categoryIds:
            - b08ed184-6b0c-42c1-8179-7b9026fe2676
    

    Example—Auto Rollup Retention Protection Policy

    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", {
        categoryIds: ["b08ed184-6b0c-42c1-8179-7b9026fe2676"],
        replicationConfigurations: [
            {
                remoteLocationLabel: "target",
                schedule: {
                    recoveryPointObjectiveTimeSeconds: 60,
                    recoveryPointType: "CRASH_CONSISTENT",
                    retention: {
                        autoRollupRetention: {
                            local: {
                                frequency: 2,
                                snapshotIntervalType: "WEEKLY",
                            },
                            remote: {
                                frequency: 1,
                                snapshotIntervalType: "DAILY",
                            },
                        },
                    },
                    startTime: "18h:10m",
                    syncReplicationAutoSuspendTimeoutSeconds: 20,
                },
                sourceLocationLabel: "source",
            },
            {
                remoteLocationLabel: "source",
                schedule: {
                    recoveryPointObjectiveTimeSeconds: 60,
                    recoveryPointType: "CRASH_CONSISTENT",
                    retention: {
                        autoRollupRetention: {
                            local: {
                                frequency: 1,
                                snapshotIntervalType: "DAILY",
                            },
                            remote: {
                                frequency: 2,
                                snapshotIntervalType: "WEEKLY",
                            },
                        },
                    },
                    startTime: "18h:10m",
                    syncReplicationAutoSuspendTimeoutSeconds: 30,
                },
                sourceLocationLabel: "target",
            },
        ],
        replicationLocations: [
            {
                domainManagerExtId: "6a44b05e-cb9b-4e7e-8d75-b1b4715369c4",
                isPrimary: true,
                label: "source",
            },
            {
                domainManagerExtId: "75dde184-3a0e-4f59-a185-03ca1efead17",
                isPrimary: false,
                label: "target",
            },
        ],
    });
    
    import pulumi
    import pulumi_nutanix as nutanix
    
    # Create Auto Rollup Retention Protection Policy
    auto_rollup_retention_protection_policy = nutanix.ProtectionPolicyV2("auto-rollup-retention-protection-policy",
        category_ids=["b08ed184-6b0c-42c1-8179-7b9026fe2676"],
        replication_configurations=[
            {
                "remote_location_label": "target",
                "schedule": {
                    "recovery_point_objective_time_seconds": 60,
                    "recovery_point_type": "CRASH_CONSISTENT",
                    "retention": {
                        "auto_rollup_retention": {
                            "local": {
                                "frequency": 2,
                                "snapshot_interval_type": "WEEKLY",
                            },
                            "remote": {
                                "frequency": 1,
                                "snapshot_interval_type": "DAILY",
                            },
                        },
                    },
                    "start_time": "18h:10m",
                    "sync_replication_auto_suspend_timeout_seconds": 20,
                },
                "source_location_label": "source",
            },
            {
                "remote_location_label": "source",
                "schedule": {
                    "recovery_point_objective_time_seconds": 60,
                    "recovery_point_type": "CRASH_CONSISTENT",
                    "retention": {
                        "auto_rollup_retention": {
                            "local": {
                                "frequency": 1,
                                "snapshot_interval_type": "DAILY",
                            },
                            "remote": {
                                "frequency": 2,
                                "snapshot_interval_type": "WEEKLY",
                            },
                        },
                    },
                    "start_time": "18h:10m",
                    "sync_replication_auto_suspend_timeout_seconds": 30,
                },
                "source_location_label": "target",
            },
        ],
        replication_locations=[
            {
                "domain_manager_ext_id": "6a44b05e-cb9b-4e7e-8d75-b1b4715369c4",
                "is_primary": True,
                "label": "source",
            },
            {
                "domain_manager_ext_id": "75dde184-3a0e-4f59-a185-03ca1efead17",
                "is_primary": False,
                "label": "target",
            },
        ])
    
    package main
    
    import (
    	"github.com/pierskarsenbarg/pulumi-nutanix/sdk/go/nutanix"
    	"github.com/pulumi/pulumi/sdk/v3/go/pulumi"
    )
    
    func main() {
    	pulumi.Run(func(ctx *pulumi.Context) error {
    		// Create Auto Rollup Retention Protection Policy
    		_, err := nutanix.NewProtectionPolicyV2(ctx, "auto-rollup-retention-protection-policy", &nutanix.ProtectionPolicyV2Args{
    			CategoryIds: pulumi.StringArray{
    				pulumi.String("b08ed184-6b0c-42c1-8179-7b9026fe2676"),
    			},
    			ReplicationConfigurations: nutanix.ProtectionPolicyV2ReplicationConfigurationArray{
    				&nutanix.ProtectionPolicyV2ReplicationConfigurationArgs{
    					RemoteLocationLabel: pulumi.String("target"),
    					Schedule: &nutanix.ProtectionPolicyV2ReplicationConfigurationScheduleArgs{
    						RecoveryPointObjectiveTimeSeconds: pulumi.Int(60),
    						RecoveryPointType:                 pulumi.String("CRASH_CONSISTENT"),
    						Retention: &nutanix.ProtectionPolicyV2ReplicationConfigurationScheduleRetentionArgs{
    							AutoRollupRetention: &nutanix.ProtectionPolicyV2ReplicationConfigurationScheduleRetentionAutoRollupRetentionArgs{
    								Local: &nutanix.ProtectionPolicyV2ReplicationConfigurationScheduleRetentionAutoRollupRetentionLocalArgs{
    									Frequency:            pulumi.Int(2),
    									SnapshotIntervalType: pulumi.String("WEEKLY"),
    								},
    								Remote: &nutanix.ProtectionPolicyV2ReplicationConfigurationScheduleRetentionAutoRollupRetentionRemoteArgs{
    									Frequency:            pulumi.Int(1),
    									SnapshotIntervalType: pulumi.String("DAILY"),
    								},
    							},
    						},
    						StartTime:                                pulumi.String("18h:10m"),
    						SyncReplicationAutoSuspendTimeoutSeconds: pulumi.Int(20),
    					},
    					SourceLocationLabel: pulumi.String("source"),
    				},
    				&nutanix.ProtectionPolicyV2ReplicationConfigurationArgs{
    					RemoteLocationLabel: pulumi.String("source"),
    					Schedule: &nutanix.ProtectionPolicyV2ReplicationConfigurationScheduleArgs{
    						RecoveryPointObjectiveTimeSeconds: pulumi.Int(60),
    						RecoveryPointType:                 pulumi.String("CRASH_CONSISTENT"),
    						Retention: &nutanix.ProtectionPolicyV2ReplicationConfigurationScheduleRetentionArgs{
    							AutoRollupRetention: &nutanix.ProtectionPolicyV2ReplicationConfigurationScheduleRetentionAutoRollupRetentionArgs{
    								Local: &nutanix.ProtectionPolicyV2ReplicationConfigurationScheduleRetentionAutoRollupRetentionLocalArgs{
    									Frequency:            pulumi.Int(1),
    									SnapshotIntervalType: pulumi.String("DAILY"),
    								},
    								Remote: &nutanix.ProtectionPolicyV2ReplicationConfigurationScheduleRetentionAutoRollupRetentionRemoteArgs{
    									Frequency:            pulumi.Int(2),
    									SnapshotIntervalType: pulumi.String("WEEKLY"),
    								},
    							},
    						},
    						StartTime:                                pulumi.String("18h:10m"),
    						SyncReplicationAutoSuspendTimeoutSeconds: pulumi.Int(30),
    					},
    					SourceLocationLabel: pulumi.String("target"),
    				},
    			},
    			ReplicationLocations: nutanix.ProtectionPolicyV2ReplicationLocationArray{
    				&nutanix.ProtectionPolicyV2ReplicationLocationArgs{
    					DomainManagerExtId: pulumi.String("6a44b05e-cb9b-4e7e-8d75-b1b4715369c4"),
    					IsPrimary:          pulumi.Bool(true),
    					Label:              pulumi.String("source"),
    				},
    				&nutanix.ProtectionPolicyV2ReplicationLocationArgs{
    					DomainManagerExtId: pulumi.String("75dde184-3a0e-4f59-a185-03ca1efead17"),
    					IsPrimary:          pulumi.Bool(false),
    					Label:              pulumi.String("target"),
    				},
    			},
    		})
    		if err != nil {
    			return err
    		}
    		return nil
    	})
    }
    
    using System.Collections.Generic;
    using System.Linq;
    using Pulumi;
    using Nutanix = PiersKarsenbarg.Nutanix;
    
    return await Deployment.RunAsync(() => 
    {
        // Create Auto Rollup Retention Protection Policy
        var auto_rollup_retention_protection_policy = new Nutanix.ProtectionPolicyV2("auto-rollup-retention-protection-policy", new()
        {
            CategoryIds = new[]
            {
                "b08ed184-6b0c-42c1-8179-7b9026fe2676",
            },
            ReplicationConfigurations = new[]
            {
                new Nutanix.Inputs.ProtectionPolicyV2ReplicationConfigurationArgs
                {
                    RemoteLocationLabel = "target",
                    Schedule = new Nutanix.Inputs.ProtectionPolicyV2ReplicationConfigurationScheduleArgs
                    {
                        RecoveryPointObjectiveTimeSeconds = 60,
                        RecoveryPointType = "CRASH_CONSISTENT",
                        Retention = new Nutanix.Inputs.ProtectionPolicyV2ReplicationConfigurationScheduleRetentionArgs
                        {
                            AutoRollupRetention = new Nutanix.Inputs.ProtectionPolicyV2ReplicationConfigurationScheduleRetentionAutoRollupRetentionArgs
                            {
                                Local = new Nutanix.Inputs.ProtectionPolicyV2ReplicationConfigurationScheduleRetentionAutoRollupRetentionLocalArgs
                                {
                                    Frequency = 2,
                                    SnapshotIntervalType = "WEEKLY",
                                },
                                Remote = new Nutanix.Inputs.ProtectionPolicyV2ReplicationConfigurationScheduleRetentionAutoRollupRetentionRemoteArgs
                                {
                                    Frequency = 1,
                                    SnapshotIntervalType = "DAILY",
                                },
                            },
                        },
                        StartTime = "18h:10m",
                        SyncReplicationAutoSuspendTimeoutSeconds = 20,
                    },
                    SourceLocationLabel = "source",
                },
                new Nutanix.Inputs.ProtectionPolicyV2ReplicationConfigurationArgs
                {
                    RemoteLocationLabel = "source",
                    Schedule = new Nutanix.Inputs.ProtectionPolicyV2ReplicationConfigurationScheduleArgs
                    {
                        RecoveryPointObjectiveTimeSeconds = 60,
                        RecoveryPointType = "CRASH_CONSISTENT",
                        Retention = new Nutanix.Inputs.ProtectionPolicyV2ReplicationConfigurationScheduleRetentionArgs
                        {
                            AutoRollupRetention = new Nutanix.Inputs.ProtectionPolicyV2ReplicationConfigurationScheduleRetentionAutoRollupRetentionArgs
                            {
                                Local = new Nutanix.Inputs.ProtectionPolicyV2ReplicationConfigurationScheduleRetentionAutoRollupRetentionLocalArgs
                                {
                                    Frequency = 1,
                                    SnapshotIntervalType = "DAILY",
                                },
                                Remote = new Nutanix.Inputs.ProtectionPolicyV2ReplicationConfigurationScheduleRetentionAutoRollupRetentionRemoteArgs
                                {
                                    Frequency = 2,
                                    SnapshotIntervalType = "WEEKLY",
                                },
                            },
                        },
                        StartTime = "18h:10m",
                        SyncReplicationAutoSuspendTimeoutSeconds = 30,
                    },
                    SourceLocationLabel = "target",
                },
            },
            ReplicationLocations = new[]
            {
                new Nutanix.Inputs.ProtectionPolicyV2ReplicationLocationArgs
                {
                    DomainManagerExtId = "6a44b05e-cb9b-4e7e-8d75-b1b4715369c4",
                    IsPrimary = true,
                    Label = "source",
                },
                new Nutanix.Inputs.ProtectionPolicyV2ReplicationLocationArgs
                {
                    DomainManagerExtId = "75dde184-3a0e-4f59-a185-03ca1efead17",
                    IsPrimary = false,
                    Label = "target",
                },
            },
        });
    
    });
    
    package generated_program;
    
    import com.pulumi.Context;
    import com.pulumi.Pulumi;
    import com.pulumi.core.Output;
    import com.pulumi.nutanix.ProtectionPolicyV2;
    import com.pulumi.nutanix.ProtectionPolicyV2Args;
    import com.pulumi.nutanix.inputs.ProtectionPolicyV2ReplicationConfigurationArgs;
    import com.pulumi.nutanix.inputs.ProtectionPolicyV2ReplicationConfigurationScheduleArgs;
    import com.pulumi.nutanix.inputs.ProtectionPolicyV2ReplicationConfigurationScheduleRetentionArgs;
    import com.pulumi.nutanix.inputs.ProtectionPolicyV2ReplicationConfigurationScheduleRetentionAutoRollupRetentionArgs;
    import com.pulumi.nutanix.inputs.ProtectionPolicyV2ReplicationConfigurationScheduleRetentionAutoRollupRetentionLocalArgs;
    import com.pulumi.nutanix.inputs.ProtectionPolicyV2ReplicationConfigurationScheduleRetentionAutoRollupRetentionRemoteArgs;
    import com.pulumi.nutanix.inputs.ProtectionPolicyV2ReplicationLocationArgs;
    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) {
            // Create Auto Rollup Retention Protection Policy
            var auto_rollup_retention_protection_policy = new ProtectionPolicyV2("auto-rollup-retention-protection-policy", ProtectionPolicyV2Args.builder()
                .categoryIds("b08ed184-6b0c-42c1-8179-7b9026fe2676")
                .replicationConfigurations(            
                    ProtectionPolicyV2ReplicationConfigurationArgs.builder()
                        .remoteLocationLabel("target")
                        .schedule(ProtectionPolicyV2ReplicationConfigurationScheduleArgs.builder()
                            .recoveryPointObjectiveTimeSeconds(60)
                            .recoveryPointType("CRASH_CONSISTENT")
                            .retention(ProtectionPolicyV2ReplicationConfigurationScheduleRetentionArgs.builder()
                                .autoRollupRetention(ProtectionPolicyV2ReplicationConfigurationScheduleRetentionAutoRollupRetentionArgs.builder()
                                    .local(ProtectionPolicyV2ReplicationConfigurationScheduleRetentionAutoRollupRetentionLocalArgs.builder()
                                        .frequency(2)
                                        .snapshotIntervalType("WEEKLY")
                                        .build())
                                    .remote(ProtectionPolicyV2ReplicationConfigurationScheduleRetentionAutoRollupRetentionRemoteArgs.builder()
                                        .frequency(1)
                                        .snapshotIntervalType("DAILY")
                                        .build())
                                    .build())
                                .build())
                            .startTime("18h:10m")
                            .syncReplicationAutoSuspendTimeoutSeconds(20)
                            .build())
                        .sourceLocationLabel("source")
                        .build(),
                    ProtectionPolicyV2ReplicationConfigurationArgs.builder()
                        .remoteLocationLabel("source")
                        .schedule(ProtectionPolicyV2ReplicationConfigurationScheduleArgs.builder()
                            .recoveryPointObjectiveTimeSeconds(60)
                            .recoveryPointType("CRASH_CONSISTENT")
                            .retention(ProtectionPolicyV2ReplicationConfigurationScheduleRetentionArgs.builder()
                                .autoRollupRetention(ProtectionPolicyV2ReplicationConfigurationScheduleRetentionAutoRollupRetentionArgs.builder()
                                    .local(ProtectionPolicyV2ReplicationConfigurationScheduleRetentionAutoRollupRetentionLocalArgs.builder()
                                        .frequency(1)
                                        .snapshotIntervalType("DAILY")
                                        .build())
                                    .remote(ProtectionPolicyV2ReplicationConfigurationScheduleRetentionAutoRollupRetentionRemoteArgs.builder()
                                        .frequency(2)
                                        .snapshotIntervalType("WEEKLY")
                                        .build())
                                    .build())
                                .build())
                            .startTime("18h:10m")
                            .syncReplicationAutoSuspendTimeoutSeconds(30)
                            .build())
                        .sourceLocationLabel("target")
                        .build())
                .replicationLocations(            
                    ProtectionPolicyV2ReplicationLocationArgs.builder()
                        .domainManagerExtId("6a44b05e-cb9b-4e7e-8d75-b1b4715369c4")
                        .isPrimary(true)
                        .label("source")
                        .build(),
                    ProtectionPolicyV2ReplicationLocationArgs.builder()
                        .domainManagerExtId("75dde184-3a0e-4f59-a185-03ca1efead17")
                        .isPrimary(false)
                        .label("target")
                        .build())
                .build());
    
        }
    }
    
    resources:
      # Create Auto Rollup Retention Protection Policy
      auto-rollup-retention-protection-policy:
        type: nutanix:ProtectionPolicyV2
        properties:
          categoryIds:
            - b08ed184-6b0c-42c1-8179-7b9026fe2676
          replicationConfigurations:
            - remoteLocationLabel: target
              schedule:
                recoveryPointObjectiveTimeSeconds: 60
                recoveryPointType: CRASH_CONSISTENT
                retention:
                  autoRollupRetention:
                    local:
                      frequency: 2
                      snapshotIntervalType: WEEKLY
                    remote:
                      frequency: 1
                      snapshotIntervalType: DAILY
                startTime: 18h:10m
                syncReplicationAutoSuspendTimeoutSeconds: 20
              sourceLocationLabel: source
            - remoteLocationLabel: source
              schedule:
                recoveryPointObjectiveTimeSeconds: 60
                recoveryPointType: CRASH_CONSISTENT
                retention:
                  autoRollupRetention:
                    local:
                      frequency: 1
                      snapshotIntervalType: DAILY
                    remote:
                      frequency: 2
                      snapshotIntervalType: WEEKLY
                startTime: 18h:10m
                syncReplicationAutoSuspendTimeoutSeconds: 30
              sourceLocationLabel: target
          replicationLocations:
            - domainManagerExtId: 6a44b05e-cb9b-4e7e-8d75-b1b4715369c4
              isPrimary: true
              label: source
            - domainManagerExtId: 75dde184-3a0e-4f59-a185-03ca1efead17
              isPrimary: false
              label: target
    

    Create ProtectionPolicyV2 Resource

    Resources are created with functions called constructors. To learn more about declaring and configuring resources, see Resources.

    Constructor syntax

    new ProtectionPolicyV2(name: string, args: ProtectionPolicyV2Args, opts?: CustomResourceOptions);
    @overload
    def ProtectionPolicyV2(resource_name: str,
                           args: ProtectionPolicyV2Args,
                           opts: Optional[ResourceOptions] = None)
    
    @overload
    def ProtectionPolicyV2(resource_name: str,
                           opts: Optional[ResourceOptions] = None,
                           category_ids: Optional[Sequence[str]] = None,
                           replication_configurations: Optional[Sequence[ProtectionPolicyV2ReplicationConfigurationArgs]] = None,
                           replication_locations: Optional[Sequence[ProtectionPolicyV2ReplicationLocationArgs]] = None,
                           description: Optional[str] = None,
                           name: Optional[str] = None)
    func NewProtectionPolicyV2(ctx *Context, name string, args ProtectionPolicyV2Args, opts ...ResourceOption) (*ProtectionPolicyV2, error)
    public ProtectionPolicyV2(string name, ProtectionPolicyV2Args args, CustomResourceOptions? opts = null)
    public ProtectionPolicyV2(String name, ProtectionPolicyV2Args args)
    public ProtectionPolicyV2(String name, ProtectionPolicyV2Args args, CustomResourceOptions options)
    
    type: nutanix:ProtectionPolicyV2
    properties: # The arguments to resource properties.
    options: # Bag of options to control resource's behavior.
    
    

    Parameters

    name string
    The unique name of the resource.
    args ProtectionPolicyV2Args
    The arguments to resource properties.
    opts CustomResourceOptions
    Bag of options to control resource's behavior.
    resource_name str
    The unique name of the resource.
    args ProtectionPolicyV2Args
    The arguments to resource properties.
    opts ResourceOptions
    Bag of options to control resource's behavior.
    ctx Context
    Context object for the current deployment.
    name string
    The unique name of the resource.
    args ProtectionPolicyV2Args
    The arguments to resource properties.
    opts ResourceOption
    Bag of options to control resource's behavior.
    name string
    The unique name of the resource.
    args ProtectionPolicyV2Args
    The arguments to resource properties.
    opts CustomResourceOptions
    Bag of options to control resource's behavior.
    name String
    The unique name of the resource.
    args ProtectionPolicyV2Args
    The arguments to resource properties.
    options CustomResourceOptions
    Bag of options to control resource's behavior.

    Constructor example

    The following reference example uses placeholder values for all input properties.

    var protectionPolicyV2Resource = new Nutanix.ProtectionPolicyV2("protectionPolicyV2Resource", new()
    {
        CategoryIds = new[]
        {
            "string",
        },
        ReplicationConfigurations = new[]
        {
            new Nutanix.Inputs.ProtectionPolicyV2ReplicationConfigurationArgs
            {
                Schedule = new Nutanix.Inputs.ProtectionPolicyV2ReplicationConfigurationScheduleArgs
                {
                    RecoveryPointObjectiveTimeSeconds = 0,
                    RecoveryPointType = "string",
                    Retention = new Nutanix.Inputs.ProtectionPolicyV2ReplicationConfigurationScheduleRetentionArgs
                    {
                        AutoRollupRetention = new Nutanix.Inputs.ProtectionPolicyV2ReplicationConfigurationScheduleRetentionAutoRollupRetentionArgs
                        {
                            Local = new Nutanix.Inputs.ProtectionPolicyV2ReplicationConfigurationScheduleRetentionAutoRollupRetentionLocalArgs
                            {
                                Frequency = 0,
                                SnapshotIntervalType = "string",
                            },
                            Remote = new Nutanix.Inputs.ProtectionPolicyV2ReplicationConfigurationScheduleRetentionAutoRollupRetentionRemoteArgs
                            {
                                Frequency = 0,
                                SnapshotIntervalType = "string",
                            },
                        },
                        LinearRetention = new Nutanix.Inputs.ProtectionPolicyV2ReplicationConfigurationScheduleRetentionLinearRetentionArgs
                        {
                            Local = 0,
                            Remote = 0,
                        },
                    },
                    StartTime = "string",
                    SyncReplicationAutoSuspendTimeoutSeconds = 0,
                },
                SourceLocationLabel = "string",
                RemoteLocationLabel = "string",
            },
        },
        ReplicationLocations = new[]
        {
            new Nutanix.Inputs.ProtectionPolicyV2ReplicationLocationArgs
            {
                DomainManagerExtId = "string",
                Label = "string",
                IsPrimary = false,
                ReplicationSubLocation = new Nutanix.Inputs.ProtectionPolicyV2ReplicationLocationReplicationSubLocationArgs
                {
                    ClusterExtIds = new Nutanix.Inputs.ProtectionPolicyV2ReplicationLocationReplicationSubLocationClusterExtIdsArgs
                    {
                        ClusterExtIds = new[]
                        {
                            "string",
                        },
                    },
                },
            },
        },
        Description = "string",
        Name = "string",
    });
    
    example, err := nutanix.NewProtectionPolicyV2(ctx, "protectionPolicyV2Resource", &nutanix.ProtectionPolicyV2Args{
    	CategoryIds: pulumi.StringArray{
    		pulumi.String("string"),
    	},
    	ReplicationConfigurations: nutanix.ProtectionPolicyV2ReplicationConfigurationArray{
    		&nutanix.ProtectionPolicyV2ReplicationConfigurationArgs{
    			Schedule: &nutanix.ProtectionPolicyV2ReplicationConfigurationScheduleArgs{
    				RecoveryPointObjectiveTimeSeconds: pulumi.Int(0),
    				RecoveryPointType:                 pulumi.String("string"),
    				Retention: &nutanix.ProtectionPolicyV2ReplicationConfigurationScheduleRetentionArgs{
    					AutoRollupRetention: &nutanix.ProtectionPolicyV2ReplicationConfigurationScheduleRetentionAutoRollupRetentionArgs{
    						Local: &nutanix.ProtectionPolicyV2ReplicationConfigurationScheduleRetentionAutoRollupRetentionLocalArgs{
    							Frequency:            pulumi.Int(0),
    							SnapshotIntervalType: pulumi.String("string"),
    						},
    						Remote: &nutanix.ProtectionPolicyV2ReplicationConfigurationScheduleRetentionAutoRollupRetentionRemoteArgs{
    							Frequency:            pulumi.Int(0),
    							SnapshotIntervalType: pulumi.String("string"),
    						},
    					},
    					LinearRetention: &nutanix.ProtectionPolicyV2ReplicationConfigurationScheduleRetentionLinearRetentionArgs{
    						Local:  pulumi.Int(0),
    						Remote: pulumi.Int(0),
    					},
    				},
    				StartTime:                                pulumi.String("string"),
    				SyncReplicationAutoSuspendTimeoutSeconds: pulumi.Int(0),
    			},
    			SourceLocationLabel: pulumi.String("string"),
    			RemoteLocationLabel: pulumi.String("string"),
    		},
    	},
    	ReplicationLocations: nutanix.ProtectionPolicyV2ReplicationLocationArray{
    		&nutanix.ProtectionPolicyV2ReplicationLocationArgs{
    			DomainManagerExtId: pulumi.String("string"),
    			Label:              pulumi.String("string"),
    			IsPrimary:          pulumi.Bool(false),
    			ReplicationSubLocation: &nutanix.ProtectionPolicyV2ReplicationLocationReplicationSubLocationArgs{
    				ClusterExtIds: &nutanix.ProtectionPolicyV2ReplicationLocationReplicationSubLocationClusterExtIdsArgs{
    					ClusterExtIds: pulumi.StringArray{
    						pulumi.String("string"),
    					},
    				},
    			},
    		},
    	},
    	Description: pulumi.String("string"),
    	Name:        pulumi.String("string"),
    })
    
    var protectionPolicyV2Resource = new ProtectionPolicyV2("protectionPolicyV2Resource", ProtectionPolicyV2Args.builder()
        .categoryIds("string")
        .replicationConfigurations(ProtectionPolicyV2ReplicationConfigurationArgs.builder()
            .schedule(ProtectionPolicyV2ReplicationConfigurationScheduleArgs.builder()
                .recoveryPointObjectiveTimeSeconds(0)
                .recoveryPointType("string")
                .retention(ProtectionPolicyV2ReplicationConfigurationScheduleRetentionArgs.builder()
                    .autoRollupRetention(ProtectionPolicyV2ReplicationConfigurationScheduleRetentionAutoRollupRetentionArgs.builder()
                        .local(ProtectionPolicyV2ReplicationConfigurationScheduleRetentionAutoRollupRetentionLocalArgs.builder()
                            .frequency(0)
                            .snapshotIntervalType("string")
                            .build())
                        .remote(ProtectionPolicyV2ReplicationConfigurationScheduleRetentionAutoRollupRetentionRemoteArgs.builder()
                            .frequency(0)
                            .snapshotIntervalType("string")
                            .build())
                        .build())
                    .linearRetention(ProtectionPolicyV2ReplicationConfigurationScheduleRetentionLinearRetentionArgs.builder()
                        .local(0)
                        .remote(0)
                        .build())
                    .build())
                .startTime("string")
                .syncReplicationAutoSuspendTimeoutSeconds(0)
                .build())
            .sourceLocationLabel("string")
            .remoteLocationLabel("string")
            .build())
        .replicationLocations(ProtectionPolicyV2ReplicationLocationArgs.builder()
            .domainManagerExtId("string")
            .label("string")
            .isPrimary(false)
            .replicationSubLocation(ProtectionPolicyV2ReplicationLocationReplicationSubLocationArgs.builder()
                .clusterExtIds(ProtectionPolicyV2ReplicationLocationReplicationSubLocationClusterExtIdsArgs.builder()
                    .clusterExtIds("string")
                    .build())
                .build())
            .build())
        .description("string")
        .name("string")
        .build());
    
    protection_policy_v2_resource = nutanix.ProtectionPolicyV2("protectionPolicyV2Resource",
        category_ids=["string"],
        replication_configurations=[{
            "schedule": {
                "recovery_point_objective_time_seconds": 0,
                "recovery_point_type": "string",
                "retention": {
                    "auto_rollup_retention": {
                        "local": {
                            "frequency": 0,
                            "snapshot_interval_type": "string",
                        },
                        "remote": {
                            "frequency": 0,
                            "snapshot_interval_type": "string",
                        },
                    },
                    "linear_retention": {
                        "local": 0,
                        "remote": 0,
                    },
                },
                "start_time": "string",
                "sync_replication_auto_suspend_timeout_seconds": 0,
            },
            "source_location_label": "string",
            "remote_location_label": "string",
        }],
        replication_locations=[{
            "domain_manager_ext_id": "string",
            "label": "string",
            "is_primary": False,
            "replication_sub_location": {
                "cluster_ext_ids": {
                    "cluster_ext_ids": ["string"],
                },
            },
        }],
        description="string",
        name="string")
    
    const protectionPolicyV2Resource = new nutanix.ProtectionPolicyV2("protectionPolicyV2Resource", {
        categoryIds: ["string"],
        replicationConfigurations: [{
            schedule: {
                recoveryPointObjectiveTimeSeconds: 0,
                recoveryPointType: "string",
                retention: {
                    autoRollupRetention: {
                        local: {
                            frequency: 0,
                            snapshotIntervalType: "string",
                        },
                        remote: {
                            frequency: 0,
                            snapshotIntervalType: "string",
                        },
                    },
                    linearRetention: {
                        local: 0,
                        remote: 0,
                    },
                },
                startTime: "string",
                syncReplicationAutoSuspendTimeoutSeconds: 0,
            },
            sourceLocationLabel: "string",
            remoteLocationLabel: "string",
        }],
        replicationLocations: [{
            domainManagerExtId: "string",
            label: "string",
            isPrimary: false,
            replicationSubLocation: {
                clusterExtIds: {
                    clusterExtIds: ["string"],
                },
            },
        }],
        description: "string",
        name: "string",
    });
    
    type: nutanix:ProtectionPolicyV2
    properties:
        categoryIds:
            - string
        description: string
        name: string
        replicationConfigurations:
            - remoteLocationLabel: string
              schedule:
                recoveryPointObjectiveTimeSeconds: 0
                recoveryPointType: string
                retention:
                    autoRollupRetention:
                        local:
                            frequency: 0
                            snapshotIntervalType: string
                        remote:
                            frequency: 0
                            snapshotIntervalType: string
                    linearRetention:
                        local: 0
                        remote: 0
                startTime: string
                syncReplicationAutoSuspendTimeoutSeconds: 0
              sourceLocationLabel: string
        replicationLocations:
            - domainManagerExtId: string
              isPrimary: false
              label: string
              replicationSubLocation:
                clusterExtIds:
                    clusterExtIds:
                        - string
    

    ProtectionPolicyV2 Resource Properties

    To learn more about resource properties and how to use them, see Inputs and Outputs in the Architecture and Concepts docs.

    Inputs

    In Python, inputs that are objects can be passed either as argument classes or as dictionary literals.

    The ProtectionPolicyV2 resource accepts the following input properties:

    CategoryIds List<string>
    -(Optional) Host entity with its attributes.
    ReplicationConfigurations List<PiersKarsenbarg.Nutanix.Inputs.ProtectionPolicyV2ReplicationConfiguration>
    -(Required) Cluster reference for an entity.
    ReplicationLocations List<PiersKarsenbarg.Nutanix.Inputs.ProtectionPolicyV2ReplicationLocation>
    -(Required) Hypervisor details.
    Description string
    -(Optional) Description of the protection policy.
    Name string
    -(Required) Name of the protection policy.
    CategoryIds []string
    -(Optional) Host entity with its attributes.
    ReplicationConfigurations []ProtectionPolicyV2ReplicationConfigurationArgs
    -(Required) Cluster reference for an entity.
    ReplicationLocations []ProtectionPolicyV2ReplicationLocationArgs
    -(Required) Hypervisor details.
    Description string
    -(Optional) Description of the protection policy.
    Name string
    -(Required) Name of the protection policy.
    categoryIds List<String>
    -(Optional) Host entity with its attributes.
    replicationConfigurations List<ProtectionPolicyV2ReplicationConfiguration>
    -(Required) Cluster reference for an entity.
    replicationLocations List<ProtectionPolicyV2ReplicationLocation>
    -(Required) Hypervisor details.
    description String
    -(Optional) Description of the protection policy.
    name String
    -(Required) Name of the protection policy.
    categoryIds string[]
    -(Optional) Host entity with its attributes.
    replicationConfigurations ProtectionPolicyV2ReplicationConfiguration[]
    -(Required) Cluster reference for an entity.
    replicationLocations ProtectionPolicyV2ReplicationLocation[]
    -(Required) Hypervisor details.
    description string
    -(Optional) Description of the protection policy.
    name string
    -(Required) Name of the protection policy.
    category_ids Sequence[str]
    -(Optional) Host entity with its attributes.
    replication_configurations Sequence[ProtectionPolicyV2ReplicationConfigurationArgs]
    -(Required) Cluster reference for an entity.
    replication_locations Sequence[ProtectionPolicyV2ReplicationLocationArgs]
    -(Required) Hypervisor details.
    description str
    -(Optional) Description of the protection policy.
    name str
    -(Required) Name of the protection policy.
    categoryIds List<String>
    -(Optional) Host entity with its attributes.
    replicationConfigurations List<Property Map>
    -(Required) Cluster reference for an entity.
    replicationLocations List<Property Map>
    -(Required) Hypervisor details.
    description String
    -(Optional) Description of the protection policy.
    name String
    -(Required) Name of the protection policy.

    Outputs

    All input properties are implicitly available as output properties. Additionally, the ProtectionPolicyV2 resource produces the following output properties:

    ExtId string
    Id string
    The provider-assigned unique ID for this managed resource.
    IsApprovalPolicyNeeded bool
    Links List<PiersKarsenbarg.Nutanix.Outputs.ProtectionPolicyV2Link>
    OwnerExtId string
    TenantId string
    ExtId string
    Id string
    The provider-assigned unique ID for this managed resource.
    IsApprovalPolicyNeeded bool
    Links []ProtectionPolicyV2Link
    OwnerExtId string
    TenantId string
    extId String
    id String
    The provider-assigned unique ID for this managed resource.
    isApprovalPolicyNeeded Boolean
    links List<ProtectionPolicyV2Link>
    ownerExtId String
    tenantId String
    extId string
    id string
    The provider-assigned unique ID for this managed resource.
    isApprovalPolicyNeeded boolean
    links ProtectionPolicyV2Link[]
    ownerExtId string
    tenantId string
    ext_id str
    id str
    The provider-assigned unique ID for this managed resource.
    is_approval_policy_needed bool
    links Sequence[ProtectionPolicyV2Link]
    owner_ext_id str
    tenant_id str
    extId String
    id String
    The provider-assigned unique ID for this managed resource.
    isApprovalPolicyNeeded Boolean
    links List<Property Map>
    ownerExtId String
    tenantId String

    Look up Existing ProtectionPolicyV2 Resource

    Get an existing ProtectionPolicyV2 resource’s state with the given name, ID, and optional extra properties used to qualify the lookup.

    public static get(name: string, id: Input<ID>, state?: ProtectionPolicyV2State, opts?: CustomResourceOptions): ProtectionPolicyV2
    @staticmethod
    def get(resource_name: str,
            id: str,
            opts: Optional[ResourceOptions] = None,
            category_ids: Optional[Sequence[str]] = None,
            description: Optional[str] = None,
            ext_id: Optional[str] = None,
            is_approval_policy_needed: Optional[bool] = None,
            links: Optional[Sequence[ProtectionPolicyV2LinkArgs]] = None,
            name: Optional[str] = None,
            owner_ext_id: Optional[str] = None,
            replication_configurations: Optional[Sequence[ProtectionPolicyV2ReplicationConfigurationArgs]] = None,
            replication_locations: Optional[Sequence[ProtectionPolicyV2ReplicationLocationArgs]] = None,
            tenant_id: Optional[str] = None) -> ProtectionPolicyV2
    func GetProtectionPolicyV2(ctx *Context, name string, id IDInput, state *ProtectionPolicyV2State, opts ...ResourceOption) (*ProtectionPolicyV2, error)
    public static ProtectionPolicyV2 Get(string name, Input<string> id, ProtectionPolicyV2State? state, CustomResourceOptions? opts = null)
    public static ProtectionPolicyV2 get(String name, Output<String> id, ProtectionPolicyV2State state, CustomResourceOptions options)
    resources:  _:    type: nutanix:ProtectionPolicyV2    get:      id: ${id}
    name
    The unique name of the resulting resource.
    id
    The unique provider ID of the resource to lookup.
    state
    Any extra arguments used during the lookup.
    opts
    A bag of options that control this resource's behavior.
    resource_name
    The unique name of the resulting resource.
    id
    The unique provider ID of the resource to lookup.
    name
    The unique name of the resulting resource.
    id
    The unique provider ID of the resource to lookup.
    state
    Any extra arguments used during the lookup.
    opts
    A bag of options that control this resource's behavior.
    name
    The unique name of the resulting resource.
    id
    The unique provider ID of the resource to lookup.
    state
    Any extra arguments used during the lookup.
    opts
    A bag of options that control this resource's behavior.
    name
    The unique name of the resulting resource.
    id
    The unique provider ID of the resource to lookup.
    state
    Any extra arguments used during the lookup.
    opts
    A bag of options that control this resource's behavior.
    The following state arguments are supported:
    CategoryIds List<string>
    -(Optional) Host entity with its attributes.
    Description string
    -(Optional) Description of the protection policy.
    ExtId string
    IsApprovalPolicyNeeded bool
    Links List<PiersKarsenbarg.Nutanix.Inputs.ProtectionPolicyV2Link>
    Name string
    -(Required) Name of the protection policy.
    OwnerExtId string
    ReplicationConfigurations List<PiersKarsenbarg.Nutanix.Inputs.ProtectionPolicyV2ReplicationConfiguration>
    -(Required) Cluster reference for an entity.
    ReplicationLocations List<PiersKarsenbarg.Nutanix.Inputs.ProtectionPolicyV2ReplicationLocation>
    -(Required) Hypervisor details.
    TenantId string
    CategoryIds []string
    -(Optional) Host entity with its attributes.
    Description string
    -(Optional) Description of the protection policy.
    ExtId string
    IsApprovalPolicyNeeded bool
    Links []ProtectionPolicyV2LinkArgs
    Name string
    -(Required) Name of the protection policy.
    OwnerExtId string
    ReplicationConfigurations []ProtectionPolicyV2ReplicationConfigurationArgs
    -(Required) Cluster reference for an entity.
    ReplicationLocations []ProtectionPolicyV2ReplicationLocationArgs
    -(Required) Hypervisor details.
    TenantId string
    categoryIds List<String>
    -(Optional) Host entity with its attributes.
    description String
    -(Optional) Description of the protection policy.
    extId String
    isApprovalPolicyNeeded Boolean
    links List<ProtectionPolicyV2Link>
    name String
    -(Required) Name of the protection policy.
    ownerExtId String
    replicationConfigurations List<ProtectionPolicyV2ReplicationConfiguration>
    -(Required) Cluster reference for an entity.
    replicationLocations List<ProtectionPolicyV2ReplicationLocation>
    -(Required) Hypervisor details.
    tenantId String
    categoryIds string[]
    -(Optional) Host entity with its attributes.
    description string
    -(Optional) Description of the protection policy.
    extId string
    isApprovalPolicyNeeded boolean
    links ProtectionPolicyV2Link[]
    name string
    -(Required) Name of the protection policy.
    ownerExtId string
    replicationConfigurations ProtectionPolicyV2ReplicationConfiguration[]
    -(Required) Cluster reference for an entity.
    replicationLocations ProtectionPolicyV2ReplicationLocation[]
    -(Required) Hypervisor details.
    tenantId string
    category_ids Sequence[str]
    -(Optional) Host entity with its attributes.
    description str
    -(Optional) Description of the protection policy.
    ext_id str
    is_approval_policy_needed bool
    links Sequence[ProtectionPolicyV2LinkArgs]
    name str
    -(Required) Name of the protection policy.
    owner_ext_id str
    replication_configurations Sequence[ProtectionPolicyV2ReplicationConfigurationArgs]
    -(Required) Cluster reference for an entity.
    replication_locations Sequence[ProtectionPolicyV2ReplicationLocationArgs]
    -(Required) Hypervisor details.
    tenant_id str
    categoryIds List<String>
    -(Optional) Host entity with its attributes.
    description String
    -(Optional) Description of the protection policy.
    extId String
    isApprovalPolicyNeeded Boolean
    links List<Property Map>
    name String
    -(Required) Name of the protection policy.
    ownerExtId String
    replicationConfigurations List<Property Map>
    -(Required) Cluster reference for an entity.
    replicationLocations List<Property Map>
    -(Required) Hypervisor details.
    tenantId String

    Supporting Types

    Href string
    Rel string
    Href string
    Rel string
    href String
    rel String
    href string
    rel string
    href str
    rel str
    href String
    rel String

    ProtectionPolicyV2ReplicationConfiguration, ProtectionPolicyV2ReplicationConfigurationArgs

    Schedule PiersKarsenbarg.Nutanix.Inputs.ProtectionPolicyV2ReplicationConfigurationSchedule
    -(Required) Schedule for protection. The schedule specifies the recovery point objective and the retention policy for the participating locations.
    SourceLocationLabel string
    -(Required) Label of the source location from the replication locations list, where the entity is running. The location of type MST can not be specified as the replication source.
    RemoteLocationLabel string
    -(Optional) Label of the source location from the replication locations list, where the entity will be replicated.
    Schedule ProtectionPolicyV2ReplicationConfigurationSchedule
    -(Required) Schedule for protection. The schedule specifies the recovery point objective and the retention policy for the participating locations.
    SourceLocationLabel string
    -(Required) Label of the source location from the replication locations list, where the entity is running. The location of type MST can not be specified as the replication source.
    RemoteLocationLabel string
    -(Optional) Label of the source location from the replication locations list, where the entity will be replicated.
    schedule ProtectionPolicyV2ReplicationConfigurationSchedule
    -(Required) Schedule for protection. The schedule specifies the recovery point objective and the retention policy for the participating locations.
    sourceLocationLabel String
    -(Required) Label of the source location from the replication locations list, where the entity is running. The location of type MST can not be specified as the replication source.
    remoteLocationLabel String
    -(Optional) Label of the source location from the replication locations list, where the entity will be replicated.
    schedule ProtectionPolicyV2ReplicationConfigurationSchedule
    -(Required) Schedule for protection. The schedule specifies the recovery point objective and the retention policy for the participating locations.
    sourceLocationLabel string
    -(Required) Label of the source location from the replication locations list, where the entity is running. The location of type MST can not be specified as the replication source.
    remoteLocationLabel string
    -(Optional) Label of the source location from the replication locations list, where the entity will be replicated.
    schedule ProtectionPolicyV2ReplicationConfigurationSchedule
    -(Required) Schedule for protection. The schedule specifies the recovery point objective and the retention policy for the participating locations.
    source_location_label str
    -(Required) Label of the source location from the replication locations list, where the entity is running. The location of type MST can not be specified as the replication source.
    remote_location_label str
    -(Optional) Label of the source location from the replication locations list, where the entity will be replicated.
    schedule Property Map
    -(Required) Schedule for protection. The schedule specifies the recovery point objective and the retention policy for the participating locations.
    sourceLocationLabel String
    -(Required) Label of the source location from the replication locations list, where the entity is running. The location of type MST can not be specified as the replication source.
    remoteLocationLabel String
    -(Optional) Label of the source location from the replication locations list, where the entity will be replicated.

    ProtectionPolicyV2ReplicationConfigurationSchedule, ProtectionPolicyV2ReplicationConfigurationScheduleArgs

    RecoveryPointObjectiveTimeSeconds int
    -(Required) The Recovery point objective of the schedule in seconds and specified in multiple of 60 seconds. Only following RPO values can be provided for rollup retention type:

    • Minute(s): 1, 2, 3, 4, 5, 6, 10, 12, 15
    • Hour(s): 1, 2, 3, 4, 6, 8, 12
    • Day(s): 1
    • Week(s): 1, 2
    RecoveryPointType string
    -(Optional) Type of recovery point.

    • CRASH_CONSISTENT: Crash-consistent Recovery points capture all the VM and application level details.
    • APP_CONSISTENT: Application-consistent Recovery points can capture all the data stored in the memory and also the in-progress transaction details.
    Retention PiersKarsenbarg.Nutanix.Inputs.ProtectionPolicyV2ReplicationConfigurationScheduleRetention
    -(Optional) Specifies the retention policy for the recovery point schedule.
    StartTime string
    -(Optional) Represents the protection start time for the new entities added to the policy after the policy is created in h:m format. The values must be between 00h:00m and 23h:59m and in UTC timezone. It specifies the time when the first snapshot is taken and replicated for any entity added to the policy. If this is not specified, the snapshot is taken immediately and replicated for any new entity added to the policy.
    SyncReplicationAutoSuspendTimeoutSeconds int
    -(Optional) Auto suspend timeout if there is a connection failure between locations for synchronous replication. If this value is not set, then the policy will not be suspended.
    RecoveryPointObjectiveTimeSeconds int
    -(Required) The Recovery point objective of the schedule in seconds and specified in multiple of 60 seconds. Only following RPO values can be provided for rollup retention type:

    • Minute(s): 1, 2, 3, 4, 5, 6, 10, 12, 15
    • Hour(s): 1, 2, 3, 4, 6, 8, 12
    • Day(s): 1
    • Week(s): 1, 2
    RecoveryPointType string
    -(Optional) Type of recovery point.

    • CRASH_CONSISTENT: Crash-consistent Recovery points capture all the VM and application level details.
    • APP_CONSISTENT: Application-consistent Recovery points can capture all the data stored in the memory and also the in-progress transaction details.
    Retention ProtectionPolicyV2ReplicationConfigurationScheduleRetention
    -(Optional) Specifies the retention policy for the recovery point schedule.
    StartTime string
    -(Optional) Represents the protection start time for the new entities added to the policy after the policy is created in h:m format. The values must be between 00h:00m and 23h:59m and in UTC timezone. It specifies the time when the first snapshot is taken and replicated for any entity added to the policy. If this is not specified, the snapshot is taken immediately and replicated for any new entity added to the policy.
    SyncReplicationAutoSuspendTimeoutSeconds int
    -(Optional) Auto suspend timeout if there is a connection failure between locations for synchronous replication. If this value is not set, then the policy will not be suspended.
    recoveryPointObjectiveTimeSeconds Integer
    -(Required) The Recovery point objective of the schedule in seconds and specified in multiple of 60 seconds. Only following RPO values can be provided for rollup retention type:

    • Minute(s): 1, 2, 3, 4, 5, 6, 10, 12, 15
    • Hour(s): 1, 2, 3, 4, 6, 8, 12
    • Day(s): 1
    • Week(s): 1, 2
    recoveryPointType String
    -(Optional) Type of recovery point.

    • CRASH_CONSISTENT: Crash-consistent Recovery points capture all the VM and application level details.
    • APP_CONSISTENT: Application-consistent Recovery points can capture all the data stored in the memory and also the in-progress transaction details.
    retention ProtectionPolicyV2ReplicationConfigurationScheduleRetention
    -(Optional) Specifies the retention policy for the recovery point schedule.
    startTime String
    -(Optional) Represents the protection start time for the new entities added to the policy after the policy is created in h:m format. The values must be between 00h:00m and 23h:59m and in UTC timezone. It specifies the time when the first snapshot is taken and replicated for any entity added to the policy. If this is not specified, the snapshot is taken immediately and replicated for any new entity added to the policy.
    syncReplicationAutoSuspendTimeoutSeconds Integer
    -(Optional) Auto suspend timeout if there is a connection failure between locations for synchronous replication. If this value is not set, then the policy will not be suspended.
    recoveryPointObjectiveTimeSeconds number
    -(Required) The Recovery point objective of the schedule in seconds and specified in multiple of 60 seconds. Only following RPO values can be provided for rollup retention type:

    • Minute(s): 1, 2, 3, 4, 5, 6, 10, 12, 15
    • Hour(s): 1, 2, 3, 4, 6, 8, 12
    • Day(s): 1
    • Week(s): 1, 2
    recoveryPointType string
    -(Optional) Type of recovery point.

    • CRASH_CONSISTENT: Crash-consistent Recovery points capture all the VM and application level details.
    • APP_CONSISTENT: Application-consistent Recovery points can capture all the data stored in the memory and also the in-progress transaction details.
    retention ProtectionPolicyV2ReplicationConfigurationScheduleRetention
    -(Optional) Specifies the retention policy for the recovery point schedule.
    startTime string
    -(Optional) Represents the protection start time for the new entities added to the policy after the policy is created in h:m format. The values must be between 00h:00m and 23h:59m and in UTC timezone. It specifies the time when the first snapshot is taken and replicated for any entity added to the policy. If this is not specified, the snapshot is taken immediately and replicated for any new entity added to the policy.
    syncReplicationAutoSuspendTimeoutSeconds number
    -(Optional) Auto suspend timeout if there is a connection failure between locations for synchronous replication. If this value is not set, then the policy will not be suspended.
    recovery_point_objective_time_seconds int
    -(Required) The Recovery point objective of the schedule in seconds and specified in multiple of 60 seconds. Only following RPO values can be provided for rollup retention type:

    • Minute(s): 1, 2, 3, 4, 5, 6, 10, 12, 15
    • Hour(s): 1, 2, 3, 4, 6, 8, 12
    • Day(s): 1
    • Week(s): 1, 2
    recovery_point_type str
    -(Optional) Type of recovery point.

    • CRASH_CONSISTENT: Crash-consistent Recovery points capture all the VM and application level details.
    • APP_CONSISTENT: Application-consistent Recovery points can capture all the data stored in the memory and also the in-progress transaction details.
    retention ProtectionPolicyV2ReplicationConfigurationScheduleRetention
    -(Optional) Specifies the retention policy for the recovery point schedule.
    start_time str
    -(Optional) Represents the protection start time for the new entities added to the policy after the policy is created in h:m format. The values must be between 00h:00m and 23h:59m and in UTC timezone. It specifies the time when the first snapshot is taken and replicated for any entity added to the policy. If this is not specified, the snapshot is taken immediately and replicated for any new entity added to the policy.
    sync_replication_auto_suspend_timeout_seconds int
    -(Optional) Auto suspend timeout if there is a connection failure between locations for synchronous replication. If this value is not set, then the policy will not be suspended.
    recoveryPointObjectiveTimeSeconds Number
    -(Required) The Recovery point objective of the schedule in seconds and specified in multiple of 60 seconds. Only following RPO values can be provided for rollup retention type:

    • Minute(s): 1, 2, 3, 4, 5, 6, 10, 12, 15
    • Hour(s): 1, 2, 3, 4, 6, 8, 12
    • Day(s): 1
    • Week(s): 1, 2
    recoveryPointType String
    -(Optional) Type of recovery point.

    • CRASH_CONSISTENT: Crash-consistent Recovery points capture all the VM and application level details.
    • APP_CONSISTENT: Application-consistent Recovery points can capture all the data stored in the memory and also the in-progress transaction details.
    retention Property Map
    -(Optional) Specifies the retention policy for the recovery point schedule.
    startTime String
    -(Optional) Represents the protection start time for the new entities added to the policy after the policy is created in h:m format. The values must be between 00h:00m and 23h:59m and in UTC timezone. It specifies the time when the first snapshot is taken and replicated for any entity added to the policy. If this is not specified, the snapshot is taken immediately and replicated for any new entity added to the policy.
    syncReplicationAutoSuspendTimeoutSeconds Number
    -(Optional) Auto suspend timeout if there is a connection failure between locations for synchronous replication. If this value is not set, then the policy will not be suspended.

    ProtectionPolicyV2ReplicationConfigurationScheduleRetention, ProtectionPolicyV2ReplicationConfigurationScheduleRetentionArgs

    autoRollupRetention Property Map
    -(Optional) Auto rollup retention policy.
    linearRetention Property Map
    -(Optional) Linear retention policy.

    ProtectionPolicyV2ReplicationConfigurationScheduleRetentionAutoRollupRetention, ProtectionPolicyV2ReplicationConfigurationScheduleRetentionAutoRollupRetentionArgs

    local Property Map
    -(Required) Specifies the auto rollup retention details.
    remote Property Map
    -(Optional) Specifies the auto rollup retention details.

    ProtectionPolicyV2ReplicationConfigurationScheduleRetentionAutoRollupRetentionLocal, ProtectionPolicyV2ReplicationConfigurationScheduleRetentionAutoRollupRetentionLocalArgs

    Frequency int

    -(Required) Multiplier to 'snapshotIntervalType'. For example, if 'snapshotIntervalType' is 'YEARLY' and 'multiple' is 5, then 5 years worth of rollup snapshots will be retained.

    See detailed information in Nutanix Protection Policy v4.

    SnapshotIntervalType string
    -(Required) Snapshot interval period.

    • YEARLY: Specifies the number of latest yearly recovery points to retain.
    • WEEKLY: Specifies the number of latest weekly recovery points to retain.
    • DAILY: Specifies the number of latest daily recovery points to retain.
    • MONTHLY: Specifies the number of latest monthly recovery points to retain.
    • HOURLY: Specifies the number of latest hourly recovery points to retain.
    Frequency int

    -(Required) Multiplier to 'snapshotIntervalType'. For example, if 'snapshotIntervalType' is 'YEARLY' and 'multiple' is 5, then 5 years worth of rollup snapshots will be retained.

    See detailed information in Nutanix Protection Policy v4.

    SnapshotIntervalType string
    -(Required) Snapshot interval period.

    • YEARLY: Specifies the number of latest yearly recovery points to retain.
    • WEEKLY: Specifies the number of latest weekly recovery points to retain.
    • DAILY: Specifies the number of latest daily recovery points to retain.
    • MONTHLY: Specifies the number of latest monthly recovery points to retain.
    • HOURLY: Specifies the number of latest hourly recovery points to retain.
    frequency Integer

    -(Required) Multiplier to 'snapshotIntervalType'. For example, if 'snapshotIntervalType' is 'YEARLY' and 'multiple' is 5, then 5 years worth of rollup snapshots will be retained.

    See detailed information in Nutanix Protection Policy v4.

    snapshotIntervalType String
    -(Required) Snapshot interval period.

    • YEARLY: Specifies the number of latest yearly recovery points to retain.
    • WEEKLY: Specifies the number of latest weekly recovery points to retain.
    • DAILY: Specifies the number of latest daily recovery points to retain.
    • MONTHLY: Specifies the number of latest monthly recovery points to retain.
    • HOURLY: Specifies the number of latest hourly recovery points to retain.
    frequency number

    -(Required) Multiplier to 'snapshotIntervalType'. For example, if 'snapshotIntervalType' is 'YEARLY' and 'multiple' is 5, then 5 years worth of rollup snapshots will be retained.

    See detailed information in Nutanix Protection Policy v4.

    snapshotIntervalType string
    -(Required) Snapshot interval period.

    • YEARLY: Specifies the number of latest yearly recovery points to retain.
    • WEEKLY: Specifies the number of latest weekly recovery points to retain.
    • DAILY: Specifies the number of latest daily recovery points to retain.
    • MONTHLY: Specifies the number of latest monthly recovery points to retain.
    • HOURLY: Specifies the number of latest hourly recovery points to retain.
    frequency int

    -(Required) Multiplier to 'snapshotIntervalType'. For example, if 'snapshotIntervalType' is 'YEARLY' and 'multiple' is 5, then 5 years worth of rollup snapshots will be retained.

    See detailed information in Nutanix Protection Policy v4.

    snapshot_interval_type str
    -(Required) Snapshot interval period.

    • YEARLY: Specifies the number of latest yearly recovery points to retain.
    • WEEKLY: Specifies the number of latest weekly recovery points to retain.
    • DAILY: Specifies the number of latest daily recovery points to retain.
    • MONTHLY: Specifies the number of latest monthly recovery points to retain.
    • HOURLY: Specifies the number of latest hourly recovery points to retain.
    frequency Number

    -(Required) Multiplier to 'snapshotIntervalType'. For example, if 'snapshotIntervalType' is 'YEARLY' and 'multiple' is 5, then 5 years worth of rollup snapshots will be retained.

    See detailed information in Nutanix Protection Policy v4.

    snapshotIntervalType String
    -(Required) Snapshot interval period.

    • YEARLY: Specifies the number of latest yearly recovery points to retain.
    • WEEKLY: Specifies the number of latest weekly recovery points to retain.
    • DAILY: Specifies the number of latest daily recovery points to retain.
    • MONTHLY: Specifies the number of latest monthly recovery points to retain.
    • HOURLY: Specifies the number of latest hourly recovery points to retain.

    ProtectionPolicyV2ReplicationConfigurationScheduleRetentionAutoRollupRetentionRemote, ProtectionPolicyV2ReplicationConfigurationScheduleRetentionAutoRollupRetentionRemoteArgs

    Frequency int

    -(Required) Multiplier to 'snapshotIntervalType'. For example, if 'snapshotIntervalType' is 'YEARLY' and 'multiple' is 5, then 5 years worth of rollup snapshots will be retained.

    See detailed information in Nutanix Protection Policy v4.

    SnapshotIntervalType string
    -(Required) Snapshot interval period.

    • YEARLY: Specifies the number of latest yearly recovery points to retain.
    • WEEKLY: Specifies the number of latest weekly recovery points to retain.
    • DAILY: Specifies the number of latest daily recovery points to retain.
    • MONTHLY: Specifies the number of latest monthly recovery points to retain.
    • HOURLY: Specifies the number of latest hourly recovery points to retain.
    Frequency int

    -(Required) Multiplier to 'snapshotIntervalType'. For example, if 'snapshotIntervalType' is 'YEARLY' and 'multiple' is 5, then 5 years worth of rollup snapshots will be retained.

    See detailed information in Nutanix Protection Policy v4.

    SnapshotIntervalType string
    -(Required) Snapshot interval period.

    • YEARLY: Specifies the number of latest yearly recovery points to retain.
    • WEEKLY: Specifies the number of latest weekly recovery points to retain.
    • DAILY: Specifies the number of latest daily recovery points to retain.
    • MONTHLY: Specifies the number of latest monthly recovery points to retain.
    • HOURLY: Specifies the number of latest hourly recovery points to retain.
    frequency Integer

    -(Required) Multiplier to 'snapshotIntervalType'. For example, if 'snapshotIntervalType' is 'YEARLY' and 'multiple' is 5, then 5 years worth of rollup snapshots will be retained.

    See detailed information in Nutanix Protection Policy v4.

    snapshotIntervalType String
    -(Required) Snapshot interval period.

    • YEARLY: Specifies the number of latest yearly recovery points to retain.
    • WEEKLY: Specifies the number of latest weekly recovery points to retain.
    • DAILY: Specifies the number of latest daily recovery points to retain.
    • MONTHLY: Specifies the number of latest monthly recovery points to retain.
    • HOURLY: Specifies the number of latest hourly recovery points to retain.
    frequency number

    -(Required) Multiplier to 'snapshotIntervalType'. For example, if 'snapshotIntervalType' is 'YEARLY' and 'multiple' is 5, then 5 years worth of rollup snapshots will be retained.

    See detailed information in Nutanix Protection Policy v4.

    snapshotIntervalType string
    -(Required) Snapshot interval period.

    • YEARLY: Specifies the number of latest yearly recovery points to retain.
    • WEEKLY: Specifies the number of latest weekly recovery points to retain.
    • DAILY: Specifies the number of latest daily recovery points to retain.
    • MONTHLY: Specifies the number of latest monthly recovery points to retain.
    • HOURLY: Specifies the number of latest hourly recovery points to retain.
    frequency int

    -(Required) Multiplier to 'snapshotIntervalType'. For example, if 'snapshotIntervalType' is 'YEARLY' and 'multiple' is 5, then 5 years worth of rollup snapshots will be retained.

    See detailed information in Nutanix Protection Policy v4.

    snapshot_interval_type str
    -(Required) Snapshot interval period.

    • YEARLY: Specifies the number of latest yearly recovery points to retain.
    • WEEKLY: Specifies the number of latest weekly recovery points to retain.
    • DAILY: Specifies the number of latest daily recovery points to retain.
    • MONTHLY: Specifies the number of latest monthly recovery points to retain.
    • HOURLY: Specifies the number of latest hourly recovery points to retain.
    frequency Number

    -(Required) Multiplier to 'snapshotIntervalType'. For example, if 'snapshotIntervalType' is 'YEARLY' and 'multiple' is 5, then 5 years worth of rollup snapshots will be retained.

    See detailed information in Nutanix Protection Policy v4.

    snapshotIntervalType String
    -(Required) Snapshot interval period.

    • YEARLY: Specifies the number of latest yearly recovery points to retain.
    • WEEKLY: Specifies the number of latest weekly recovery points to retain.
    • DAILY: Specifies the number of latest daily recovery points to retain.
    • MONTHLY: Specifies the number of latest monthly recovery points to retain.
    • HOURLY: Specifies the number of latest hourly recovery points to retain.

    ProtectionPolicyV2ReplicationConfigurationScheduleRetentionLinearRetention, ProtectionPolicyV2ReplicationConfigurationScheduleRetentionLinearRetentionArgs

    Local int
    -(Required) Specifies the number of recovery points to retain on the local location.
    Remote int
    -(Optional) Specifies the number of recovery points to retain on the remote location.
    Local int
    -(Required) Specifies the number of recovery points to retain on the local location.
    Remote int
    -(Optional) Specifies the number of recovery points to retain on the remote location.
    local Integer
    -(Required) Specifies the number of recovery points to retain on the local location.
    remote Integer
    -(Optional) Specifies the number of recovery points to retain on the remote location.
    local number
    -(Required) Specifies the number of recovery points to retain on the local location.
    remote number
    -(Optional) Specifies the number of recovery points to retain on the remote location.
    local int
    -(Required) Specifies the number of recovery points to retain on the local location.
    remote int
    -(Optional) Specifies the number of recovery points to retain on the remote location.
    local Number
    -(Required) Specifies the number of recovery points to retain on the local location.
    remote Number
    -(Optional) Specifies the number of recovery points to retain on the remote location.

    ProtectionPolicyV2ReplicationLocation, ProtectionPolicyV2ReplicationLocationArgs

    DomainManagerExtId string
    -(Required) External identifier of the domain manager.
    Label string
    -(Required) This is a unique user defined label of the replication location. It is used to identify the location in the replication configurations.
    IsPrimary bool
    -(Optional) One of the locations must be specified as the primary location. All the other locations must be connected to the primary location.
    ReplicationSubLocation PiersKarsenbarg.Nutanix.Inputs.ProtectionPolicyV2ReplicationLocationReplicationSubLocation
    -(Optional) Specifies the replication sub-locations where recovery points can be created or replicated.
    DomainManagerExtId string
    -(Required) External identifier of the domain manager.
    Label string
    -(Required) This is a unique user defined label of the replication location. It is used to identify the location in the replication configurations.
    IsPrimary bool
    -(Optional) One of the locations must be specified as the primary location. All the other locations must be connected to the primary location.
    ReplicationSubLocation ProtectionPolicyV2ReplicationLocationReplicationSubLocation
    -(Optional) Specifies the replication sub-locations where recovery points can be created or replicated.
    domainManagerExtId String
    -(Required) External identifier of the domain manager.
    label String
    -(Required) This is a unique user defined label of the replication location. It is used to identify the location in the replication configurations.
    isPrimary Boolean
    -(Optional) One of the locations must be specified as the primary location. All the other locations must be connected to the primary location.
    replicationSubLocation ProtectionPolicyV2ReplicationLocationReplicationSubLocation
    -(Optional) Specifies the replication sub-locations where recovery points can be created or replicated.
    domainManagerExtId string
    -(Required) External identifier of the domain manager.
    label string
    -(Required) This is a unique user defined label of the replication location. It is used to identify the location in the replication configurations.
    isPrimary boolean
    -(Optional) One of the locations must be specified as the primary location. All the other locations must be connected to the primary location.
    replicationSubLocation ProtectionPolicyV2ReplicationLocationReplicationSubLocation
    -(Optional) Specifies the replication sub-locations where recovery points can be created or replicated.
    domain_manager_ext_id str
    -(Required) External identifier of the domain manager.
    label str
    -(Required) This is a unique user defined label of the replication location. It is used to identify the location in the replication configurations.
    is_primary bool
    -(Optional) One of the locations must be specified as the primary location. All the other locations must be connected to the primary location.
    replication_sub_location ProtectionPolicyV2ReplicationLocationReplicationSubLocation
    -(Optional) Specifies the replication sub-locations where recovery points can be created or replicated.
    domainManagerExtId String
    -(Required) External identifier of the domain manager.
    label String
    -(Required) This is a unique user defined label of the replication location. It is used to identify the location in the replication configurations.
    isPrimary Boolean
    -(Optional) One of the locations must be specified as the primary location. All the other locations must be connected to the primary location.
    replicationSubLocation Property Map
    -(Optional) Specifies the replication sub-locations where recovery points can be created or replicated.

    ProtectionPolicyV2ReplicationLocationReplicationSubLocation, ProtectionPolicyV2ReplicationLocationReplicationSubLocationArgs

    clusterExtIds Property Map
    -(Optional) External identifier of the clusters.

    ProtectionPolicyV2ReplicationLocationReplicationSubLocationClusterExtIds, ProtectionPolicyV2ReplicationLocationReplicationSubLocationClusterExtIdsArgs

    ClusterExtIds List<string>
    -(Optional) External identifier of the clusters.
    ClusterExtIds []string
    -(Optional) External identifier of the clusters.
    clusterExtIds List<String>
    -(Optional) External identifier of the clusters.
    clusterExtIds string[]
    -(Optional) External identifier of the clusters.
    cluster_ext_ids Sequence[str]
    -(Optional) External identifier of the clusters.
    clusterExtIds List<String>
    -(Optional) External identifier of the clusters.

    Package Details

    Repository
    nutanix pierskarsenbarg/pulumi-nutanix
    License
    Apache-2.0
    Notes
    This Pulumi package is based on the nutanix Terraform Provider.
    nutanix logo
    Nutanix v0.8.0 published on Sunday, May 11, 2025 by Piers Karsenbarg