generated/api/Models/RecoveryOptionsCreate.cs

// Code generated by Microsoft (R) AutoRest Code Generator (autorest: 3.9.4, generator: @autorest/powershell@3.0.415)
// Changes may cause incorrect behavior and will be lost if the code is regenerated.

namespace Commvault.Powershell.Models
{
    using static Commvault.Powershell.Runtime.Extensions;

    /// <summary>
    /// Recovery options for a continuous replication group. recoveryPointStore is an intermediate storage for recovery points.
    /// Provide both the id and the name of the recoveryPointStore. Either crash consistent or application consistent RP interval
    /// is mandatory.
    /// </summary>
    public partial class RecoveryOptionsCreate :
        Commvault.Powershell.Models.IRecoveryOptionsCreate,
        Commvault.Powershell.Models.IRecoveryOptionsCreateInternal
    {

        /// <summary>Internal Acessors for RecoveryPointInterval</summary>
        Commvault.Powershell.Models.IRecoveryPointIntervalCreate Commvault.Powershell.Models.IRecoveryOptionsCreateInternal.RecoveryPointInterval { get => (this._recoveryPointInterval = this._recoveryPointInterval ?? new Commvault.Powershell.Models.RecoveryPointIntervalCreate()); set { {_recoveryPointInterval = value;} } }

        /// <summary>Internal Acessors for RecoveryPointRetention</summary>
        Commvault.Powershell.Models.IRecoveryPointRetentionCreate Commvault.Powershell.Models.IRecoveryOptionsCreateInternal.RecoveryPointRetention { get => (this._recoveryPointRetention = this._recoveryPointRetention ?? new Commvault.Powershell.Models.RecoveryPointRetentionCreate()); set { {_recoveryPointRetention = value;} } }

        /// <summary>Internal Acessors for RecoveryPointStore</summary>
        Commvault.Powershell.Models.IIdName Commvault.Powershell.Models.IRecoveryOptionsCreateInternal.RecoveryPointStore { get => (this._recoveryPointStore = this._recoveryPointStore ?? new Commvault.Powershell.Models.IdName()); set { {_recoveryPointStore = value;} } }

        /// <summary>Backing field for <see cref="RecoveryPointInterval" /> property.</summary>
        private Commvault.Powershell.Models.IRecoveryPointIntervalCreate _recoveryPointInterval;

        /// <summary>
        /// Recovery point interval inputs for continuous replication group. Provide atleast one of crash consistent and application
        /// consistent interval.
        /// </summary>
        [Commvault.Powershell.Origin(Commvault.Powershell.PropertyOrigin.Owned)]
        internal Commvault.Powershell.Models.IRecoveryPointIntervalCreate RecoveryPointInterval { get => (this._recoveryPointInterval = this._recoveryPointInterval ?? new Commvault.Powershell.Models.RecoveryPointIntervalCreate()); set => this._recoveryPointInterval = value; }

        /// <summary>
        /// Time(in seconds) after which the source VMs are quiesced to create application-consistent recovery points for destination
        /// VMs. Applicable only for Point in time recovery.
        /// </summary>
        [Commvault.Powershell.Origin(Commvault.Powershell.PropertyOrigin.Inlined)]
        public long? RecoveryPointIntervalApplicationConsistentRpInterval { get => ((Commvault.Powershell.Models.IRecoveryPointIntervalCreateInternal)RecoveryPointInterval).ApplicationConsistentRpInterval; set => ((Commvault.Powershell.Models.IRecoveryPointIntervalCreateInternal)RecoveryPointInterval).ApplicationConsistentRpInterval = value ?? default(long); }

        /// <summary>
        /// Minimum time interval(in seconds) between VM recovery points. Applicable only for Point in time recovery.
        /// </summary>
        [Commvault.Powershell.Origin(Commvault.Powershell.PropertyOrigin.Inlined)]
        public long? RecoveryPointIntervalCrashConsistentRpInterval { get => ((Commvault.Powershell.Models.IRecoveryPointIntervalCreateInternal)RecoveryPointInterval).CrashConsistentRpInterval; set => ((Commvault.Powershell.Models.IRecoveryPointIntervalCreateInternal)RecoveryPointInterval).CrashConsistentRpInterval = value ?? default(long); }

        /// <summary>Backing field for <see cref="RecoveryPointRetention" /> property.</summary>
        private Commvault.Powershell.Models.IRecoveryPointRetentionCreate _recoveryPointRetention;

        /// <summary>Recovery point retention inputs for continuous replication group.</summary>
        [Commvault.Powershell.Origin(Commvault.Powershell.PropertyOrigin.Owned)]
        internal Commvault.Powershell.Models.IRecoveryPointRetentionCreate RecoveryPointRetention { get => (this._recoveryPointRetention = this._recoveryPointRetention ?? new Commvault.Powershell.Models.RecoveryPointRetentionCreate()); set => this._recoveryPointRetention = value; }

        /// <summary>
        /// Merge the recovery points beyond the time provided in mergeRecoveryPointsOlderThan
        /// </summary>
        [Commvault.Powershell.Origin(Commvault.Powershell.PropertyOrigin.Inlined)]
        public bool? RecoveryPointRetentionMergeRecoveryPoints { get => ((Commvault.Powershell.Models.IRecoveryPointRetentionCreateInternal)RecoveryPointRetention).MergeRecoveryPoints; set => ((Commvault.Powershell.Models.IRecoveryPointRetentionCreateInternal)RecoveryPointRetention).MergeRecoveryPoints = value ?? default(bool); }

        /// <summary>
        /// Applicable only if mergeRecoveryPoints is set to true. Beyond this period(in seconds), older recovery points will be merged
        /// into progressively coarser intervals going back in time. Applicable only for Point in time recovery. The value cannot
        /// exceed the value of retainRecoveryPointsFor.
        /// </summary>
        [Commvault.Powershell.Origin(Commvault.Powershell.PropertyOrigin.Inlined)]
        public long? RecoveryPointRetentionMergeRecoveryPointsOlderThan { get => ((Commvault.Powershell.Models.IRecoveryPointRetentionCreateInternal)RecoveryPointRetention).MergeRecoveryPointsOlderThan; set => ((Commvault.Powershell.Models.IRecoveryPointRetentionCreateInternal)RecoveryPointRetention).MergeRecoveryPointsOlderThan = value ?? default(long); }

        /// <summary>
        /// Transfers the updates of the oldest recovery points to destination VM only during off-peak hours. The peak interval time
        /// should be configured in the RP store. Applicable only for Point in time recovery.
        /// </summary>
        [Commvault.Powershell.Origin(Commvault.Powershell.PropertyOrigin.Inlined)]
        public bool? RecoveryPointRetentionPruneAndMergeDuringOffPeak { get => ((Commvault.Powershell.Models.IRecoveryPointRetentionCreateInternal)RecoveryPointRetention).PruneAndMergeDuringOffPeak; set => ((Commvault.Powershell.Models.IRecoveryPointRetentionCreateInternal)RecoveryPointRetention).PruneAndMergeDuringOffPeak = value ?? default(bool); }

        /// <summary>
        /// Applicable only if mergeRecoveryPoints is set to true. Time interval(in seconds) between the older recovery points. Applicable
        /// only if mergeRecoveryPointsOlderThan and Point in time recovery is selected. The value cannot exceed the value of retainRecoveryPointsFor
        /// or 86400 seconds(1 day).
        /// </summary>
        [Commvault.Powershell.Origin(Commvault.Powershell.PropertyOrigin.Inlined)]
        public long? RecoveryPointRetentionRecoveryPointIntervalAtEndofRetention { get => ((Commvault.Powershell.Models.IRecoveryPointRetentionCreateInternal)RecoveryPointRetention).RecoveryPointIntervalAtEndofRetention; set => ((Commvault.Powershell.Models.IRecoveryPointRetentionCreateInternal)RecoveryPointRetention).RecoveryPointIntervalAtEndofRetention = value ?? default(long); }

        /// <summary>
        /// The lengh of time(in seconds) to a retain the recovery point entries. Applicable only for Point in time recovery.
        /// </summary>
        [Commvault.Powershell.Origin(Commvault.Powershell.PropertyOrigin.Inlined)]
        public long? RecoveryPointRetentionRetainRecoveryPointsFor { get => ((Commvault.Powershell.Models.IRecoveryPointRetentionCreateInternal)RecoveryPointRetention).RetainRecoveryPointsFor; set => ((Commvault.Powershell.Models.IRecoveryPointRetentionCreateInternal)RecoveryPointRetention).RetainRecoveryPointsFor = value ?? default(long); }

        /// <summary>
        /// Time(in seconds) after which the recovery type is switched to 'Latest recovery' if RP store is offline. Applicable only
        /// for Point in time recovery.
        /// </summary>
        [Commvault.Powershell.Origin(Commvault.Powershell.PropertyOrigin.Inlined)]
        public long? RecoveryPointRetentionRpStoreOfflineFor { get => ((Commvault.Powershell.Models.IRecoveryPointRetentionCreateInternal)RecoveryPointRetention).RpStoreOfflineFor; set => ((Commvault.Powershell.Models.IRecoveryPointRetentionCreateInternal)RecoveryPointRetention).RpStoreOfflineFor = value ?? default(long); }

        /// <summary>Backing field for <see cref="RecoveryPointStore" /> property.</summary>
        private Commvault.Powershell.Models.IIdName _recoveryPointStore;

        [Commvault.Powershell.Origin(Commvault.Powershell.PropertyOrigin.Owned)]
        internal Commvault.Powershell.Models.IIdName RecoveryPointStore { get => (this._recoveryPointStore = this._recoveryPointStore ?? new Commvault.Powershell.Models.IdName()); set => this._recoveryPointStore = value; }

        [Commvault.Powershell.Origin(Commvault.Powershell.PropertyOrigin.Inlined)]
        public long? RecoveryPointStoreId { get => ((Commvault.Powershell.Models.IIdNameInternal)RecoveryPointStore).Id; set => ((Commvault.Powershell.Models.IIdNameInternal)RecoveryPointStore).Id = value ?? default(long); }

        [Commvault.Powershell.Origin(Commvault.Powershell.PropertyOrigin.Inlined)]
        public string RecoveryPointStoreName { get => ((Commvault.Powershell.Models.IIdNameInternal)RecoveryPointStore).Name; set => ((Commvault.Powershell.Models.IIdNameInternal)RecoveryPointStore).Name = value ?? null; }

        /// <summary>Backing field for <see cref="RecoveryType" /> property.</summary>
        private string _recoveryType;

        /// <summary>Type of recovery.</summary>
        [Commvault.Powershell.Origin(Commvault.Powershell.PropertyOrigin.Owned)]
        public string RecoveryType { get => this._recoveryType; set => this._recoveryType = value; }

        /// <summary>Creates an new <see cref="RecoveryOptionsCreate" /> instance.</summary>
        public RecoveryOptionsCreate()
        {

        }
    }
    /// Recovery options for a continuous replication group. recoveryPointStore is an intermediate storage for recovery points.
    /// Provide both the id and the name of the recoveryPointStore. Either crash consistent or application consistent RP interval
    /// is mandatory.
    public partial interface IRecoveryOptionsCreate :
        Commvault.Powershell.Runtime.IJsonSerializable
    {
        /// <summary>
        /// Time(in seconds) after which the source VMs are quiesced to create application-consistent recovery points for destination
        /// VMs. Applicable only for Point in time recovery.
        /// </summary>
        [Commvault.Powershell.Runtime.Info(
        Required = false,
        ReadOnly = false,
        Description = @"Time(in seconds) after which the source VMs are quiesced to create application-consistent recovery points for destination VMs. Applicable only for Point in time recovery.",
        SerializedName = @"applicationConsistentRpInterval",
        PossibleTypes = new [] { typeof(long) })]
        long? RecoveryPointIntervalApplicationConsistentRpInterval { get; set; }
        /// <summary>
        /// Minimum time interval(in seconds) between VM recovery points. Applicable only for Point in time recovery.
        /// </summary>
        [Commvault.Powershell.Runtime.Info(
        Required = false,
        ReadOnly = false,
        Description = @"Minimum time interval(in seconds) between VM recovery points. Applicable only for Point in time recovery.",
        SerializedName = @"crashConsistentRpInterval",
        PossibleTypes = new [] { typeof(long) })]
        long? RecoveryPointIntervalCrashConsistentRpInterval { get; set; }
        /// <summary>
        /// Merge the recovery points beyond the time provided in mergeRecoveryPointsOlderThan
        /// </summary>
        [Commvault.Powershell.Runtime.Info(
        Required = false,
        ReadOnly = false,
        Description = @"Merge the recovery points beyond the time provided in mergeRecoveryPointsOlderThan",
        SerializedName = @"mergeRecoveryPoints",
        PossibleTypes = new [] { typeof(bool) })]
        bool? RecoveryPointRetentionMergeRecoveryPoints { get; set; }
        /// <summary>
        /// Applicable only if mergeRecoveryPoints is set to true. Beyond this period(in seconds), older recovery points will be merged
        /// into progressively coarser intervals going back in time. Applicable only for Point in time recovery. The value cannot
        /// exceed the value of retainRecoveryPointsFor.
        /// </summary>
        [Commvault.Powershell.Runtime.Info(
        Required = false,
        ReadOnly = false,
        Description = @"Applicable only if mergeRecoveryPoints is set to true. Beyond this period(in seconds), older recovery points will be merged into progressively coarser intervals going back in time. Applicable only for Point in time recovery. The value cannot exceed the value of retainRecoveryPointsFor.",
        SerializedName = @"mergeRecoveryPointsOlderThan",
        PossibleTypes = new [] { typeof(long) })]
        long? RecoveryPointRetentionMergeRecoveryPointsOlderThan { get; set; }
        /// <summary>
        /// Transfers the updates of the oldest recovery points to destination VM only during off-peak hours. The peak interval time
        /// should be configured in the RP store. Applicable only for Point in time recovery.
        /// </summary>
        [Commvault.Powershell.Runtime.Info(
        Required = false,
        ReadOnly = false,
        Description = @"Transfers the updates of the oldest recovery points to destination VM only during off-peak hours. The peak interval time should be configured in the RP store. Applicable only for Point in time recovery.",
        SerializedName = @"pruneAndMergeDuringOffPeak",
        PossibleTypes = new [] { typeof(bool) })]
        bool? RecoveryPointRetentionPruneAndMergeDuringOffPeak { get; set; }
        /// <summary>
        /// Applicable only if mergeRecoveryPoints is set to true. Time interval(in seconds) between the older recovery points. Applicable
        /// only if mergeRecoveryPointsOlderThan and Point in time recovery is selected. The value cannot exceed the value of retainRecoveryPointsFor
        /// or 86400 seconds(1 day).
        /// </summary>
        [Commvault.Powershell.Runtime.Info(
        Required = false,
        ReadOnly = false,
        Description = @"Applicable only if mergeRecoveryPoints is set to true. Time interval(in seconds) between the older recovery points. Applicable only if mergeRecoveryPointsOlderThan and Point in time recovery is selected. The value cannot exceed the value of retainRecoveryPointsFor or 86400 seconds(1 day).",
        SerializedName = @"recoveryPointIntervalAtEndofRetention",
        PossibleTypes = new [] { typeof(long) })]
        long? RecoveryPointRetentionRecoveryPointIntervalAtEndofRetention { get; set; }
        /// <summary>
        /// The lengh of time(in seconds) to a retain the recovery point entries. Applicable only for Point in time recovery.
        /// </summary>
        [Commvault.Powershell.Runtime.Info(
        Required = false,
        ReadOnly = false,
        Description = @"The lengh of time(in seconds) to a retain the recovery point entries. Applicable only for Point in time recovery.",
        SerializedName = @"retainRecoveryPointsFor",
        PossibleTypes = new [] { typeof(long) })]
        long? RecoveryPointRetentionRetainRecoveryPointsFor { get; set; }
        /// <summary>
        /// Time(in seconds) after which the recovery type is switched to 'Latest recovery' if RP store is offline. Applicable only
        /// for Point in time recovery.
        /// </summary>
        [Commvault.Powershell.Runtime.Info(
        Required = false,
        ReadOnly = false,
        Description = @"Time(in seconds) after which the recovery type is switched to 'Latest recovery' if RP store is offline. Applicable only for Point in time recovery.",
        SerializedName = @"rpStoreOfflineFor",
        PossibleTypes = new [] { typeof(long) })]
        long? RecoveryPointRetentionRpStoreOfflineFor { get; set; }

        [Commvault.Powershell.Runtime.Info(
        Required = false,
        ReadOnly = false,
        Description = @"",
        SerializedName = @"id",
        PossibleTypes = new [] { typeof(long) })]
        long? RecoveryPointStoreId { get; set; }

        [Commvault.Powershell.Runtime.Info(
        Required = false,
        ReadOnly = false,
        Description = @"",
        SerializedName = @"name",
        PossibleTypes = new [] { typeof(string) })]
        string RecoveryPointStoreName { get; set; }
        /// <summary>Type of recovery.</summary>
        [Commvault.Powershell.Runtime.Info(
        Required = true,
        ReadOnly = false,
        Description = @"Type of recovery.",
        SerializedName = @"recoveryType",
        PossibleTypes = new [] { typeof(string) })]
        string RecoveryType { get; set; }

    }
    /// Recovery options for a continuous replication group. recoveryPointStore is an intermediate storage for recovery points.
    /// Provide both the id and the name of the recoveryPointStore. Either crash consistent or application consistent RP interval
    /// is mandatory.
    internal partial interface IRecoveryOptionsCreateInternal

    {
        /// <summary>
        /// Recovery point interval inputs for continuous replication group. Provide atleast one of crash consistent and application
        /// consistent interval.
        /// </summary>
        Commvault.Powershell.Models.IRecoveryPointIntervalCreate RecoveryPointInterval { get; set; }
        /// <summary>
        /// Time(in seconds) after which the source VMs are quiesced to create application-consistent recovery points for destination
        /// VMs. Applicable only for Point in time recovery.
        /// </summary>
        long? RecoveryPointIntervalApplicationConsistentRpInterval { get; set; }
        /// <summary>
        /// Minimum time interval(in seconds) between VM recovery points. Applicable only for Point in time recovery.
        /// </summary>
        long? RecoveryPointIntervalCrashConsistentRpInterval { get; set; }
        /// <summary>Recovery point retention inputs for continuous replication group.</summary>
        Commvault.Powershell.Models.IRecoveryPointRetentionCreate RecoveryPointRetention { get; set; }
        /// <summary>
        /// Merge the recovery points beyond the time provided in mergeRecoveryPointsOlderThan
        /// </summary>
        bool? RecoveryPointRetentionMergeRecoveryPoints { get; set; }
        /// <summary>
        /// Applicable only if mergeRecoveryPoints is set to true. Beyond this period(in seconds), older recovery points will be merged
        /// into progressively coarser intervals going back in time. Applicable only for Point in time recovery. The value cannot
        /// exceed the value of retainRecoveryPointsFor.
        /// </summary>
        long? RecoveryPointRetentionMergeRecoveryPointsOlderThan { get; set; }
        /// <summary>
        /// Transfers the updates of the oldest recovery points to destination VM only during off-peak hours. The peak interval time
        /// should be configured in the RP store. Applicable only for Point in time recovery.
        /// </summary>
        bool? RecoveryPointRetentionPruneAndMergeDuringOffPeak { get; set; }
        /// <summary>
        /// Applicable only if mergeRecoveryPoints is set to true. Time interval(in seconds) between the older recovery points. Applicable
        /// only if mergeRecoveryPointsOlderThan and Point in time recovery is selected. The value cannot exceed the value of retainRecoveryPointsFor
        /// or 86400 seconds(1 day).
        /// </summary>
        long? RecoveryPointRetentionRecoveryPointIntervalAtEndofRetention { get; set; }
        /// <summary>
        /// The lengh of time(in seconds) to a retain the recovery point entries. Applicable only for Point in time recovery.
        /// </summary>
        long? RecoveryPointRetentionRetainRecoveryPointsFor { get; set; }
        /// <summary>
        /// Time(in seconds) after which the recovery type is switched to 'Latest recovery' if RP store is offline. Applicable only
        /// for Point in time recovery.
        /// </summary>
        long? RecoveryPointRetentionRpStoreOfflineFor { get; set; }

        Commvault.Powershell.Models.IIdName RecoveryPointStore { get; set; }

        long? RecoveryPointStoreId { get; set; }

        string RecoveryPointStoreName { get; set; }
        /// <summary>Type of recovery.</summary>
        string RecoveryType { get; set; }

    }
}