generated/api/Models/CreateReplicationGroupVMWare.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>
    /// Create a replication group with VMWare as the destination vendor. SourceHypervisor is the hypervisor that has the VM's
    /// to be backed up. Recovery target contains the replication options that will be applied to the selected VM's. ID is mandatory
    /// for sourceHypervisor and recovery target. Provide both the id and the name for the storage and the vms.
    /// </summary>
    public partial class CreateReplicationGroupVMWare :
        Commvault.Powershell.Models.ICreateReplicationGroupVMWare,
        Commvault.Powershell.Models.ICreateReplicationGroupVMWareInternal,
        Commvault.Powershell.Runtime.IValidates
    {
        /// <summary>
        /// Backing field for Inherited model <see cref= "Commvault.Powershell.Models.ICreateReplicationGroup" />
        /// </summary>
        private Commvault.Powershell.Models.ICreateReplicationGroup __createReplicationGroup = new Commvault.Powershell.Models.CreateReplicationGroup();

        /// <summary>The disk provisioning type for the destination VM.</summary>
        [Commvault.Powershell.Origin(Commvault.Powershell.PropertyOrigin.Inlined)]
        public string AdvancedOptionDiskProvisioning { get => ((Commvault.Powershell.Models.IReplicationGroupAdvOptionsVMWareCreateInternal)AdvancedOptions).DiskProvisioning; set => ((Commvault.Powershell.Models.IReplicationGroupAdvOptionsVMWareCreateInternal)AdvancedOptions).DiskProvisioning = value ?? null; }

        /// <summary>
        /// Number of snapshots to retain on destination VM. This is only applicable if snap engine is provided
        /// </summary>
        [Commvault.Powershell.Origin(Commvault.Powershell.PropertyOrigin.Inlined)]
        public long? AdvancedOptionSnapshotsToRetain { get => ((Commvault.Powershell.Models.IReplicationGroupAdvOptionsVMWareCreateInternal)AdvancedOptions).SnapshotsToRetain; set => ((Commvault.Powershell.Models.IReplicationGroupAdvOptionsVMWareCreateInternal)AdvancedOptions).SnapshotsToRetain = value ?? default(long); }

        /// <summary>The transport mode based on environment.</summary>
        [Commvault.Powershell.Origin(Commvault.Powershell.PropertyOrigin.Inlined)]
        public string AdvancedOptionTransportMode { get => ((Commvault.Powershell.Models.IReplicationGroupAdvOptionsVMWareCreateInternal)AdvancedOptions).TransportMode; set => ((Commvault.Powershell.Models.IReplicationGroupAdvOptionsVMWareCreateInternal)AdvancedOptions).TransportMode = value ?? null; }

        /// <summary>
        /// This will replace the instance at the destination if the instance with the same name already exists.
        /// </summary>
        [Commvault.Powershell.Origin(Commvault.Powershell.PropertyOrigin.Inlined)]
        public bool? AdvancedOptionUnconditionalOverwrite { get => ((Commvault.Powershell.Models.IReplicationGroupAdvOptionsVMWareCreateInternal)AdvancedOptions).UnconditionalOverwrite; set => ((Commvault.Powershell.Models.IReplicationGroupAdvOptionsVMWareCreateInternal)AdvancedOptions).UnconditionalOverwrite = value ?? default(bool); }

        /// <summary>
        /// Validates that the destination VM is bootable by powering it on and then powering off
        /// </summary>
        [Commvault.Powershell.Origin(Commvault.Powershell.PropertyOrigin.Inlined)]
        public bool? AdvancedOptionValidateDestinationVM { get => ((Commvault.Powershell.Models.IReplicationGroupAdvOptionsVMWareCreateInternal)AdvancedOptions).ValidateDestinationVM; set => ((Commvault.Powershell.Models.IReplicationGroupAdvOptionsVMWareCreateInternal)AdvancedOptions).ValidateDestinationVM = value ?? default(bool); }

        /// <summary>Backing field for <see cref="AdvancedOptions" /> property.</summary>
        private Commvault.Powershell.Models.IReplicationGroupAdvOptionsVMWareCreate _advancedOptions;

        /// <summary>Advanced options for VMWare replication group</summary>
        [Commvault.Powershell.Origin(Commvault.Powershell.PropertyOrigin.Owned)]
        internal Commvault.Powershell.Models.IReplicationGroupAdvOptionsVMWareCreate AdvancedOptions { get => (this._advancedOptions = this._advancedOptions ?? new Commvault.Powershell.Models.ReplicationGroupAdvOptionsVMWareCreate()); set => this._advancedOptions = value; }

        /// <summary>Internal Acessors for AdvancedOptions</summary>
        Commvault.Powershell.Models.IReplicationGroupAdvOptionsVMWareCreate Commvault.Powershell.Models.ICreateReplicationGroupVMWareInternal.AdvancedOptions { get => (this._advancedOptions = this._advancedOptions ?? new Commvault.Powershell.Models.ReplicationGroupAdvOptionsVMWareCreate()); set { {_advancedOptions = value;} } }

        /// <summary>Internal Acessors for DestVendor</summary>
        string Commvault.Powershell.Models.ICreateReplicationGroupVMWareInternal.DestVendor { get => this._destVendor; set { {_destVendor = value;} } }

        /// <summary>Internal Acessors for RecoveryOptionRecoveryPointInterval</summary>
        Commvault.Powershell.Models.IRecoveryPointIntervalCreate Commvault.Powershell.Models.ICreateReplicationGroupVMWareInternal.RecoveryOptionRecoveryPointInterval { get => ((Commvault.Powershell.Models.IRecoveryOptionsCreateInternal)RecoveryOptions).RecoveryPointInterval; set => ((Commvault.Powershell.Models.IRecoveryOptionsCreateInternal)RecoveryOptions).RecoveryPointInterval = value; }

        /// <summary>Internal Acessors for RecoveryOptionRecoveryPointRetention</summary>
        Commvault.Powershell.Models.IRecoveryPointRetentionCreate Commvault.Powershell.Models.ICreateReplicationGroupVMWareInternal.RecoveryOptionRecoveryPointRetention { get => ((Commvault.Powershell.Models.IRecoveryOptionsCreateInternal)RecoveryOptions).RecoveryPointRetention; set => ((Commvault.Powershell.Models.IRecoveryOptionsCreateInternal)RecoveryOptions).RecoveryPointRetention = value; }

        /// <summary>Internal Acessors for RecoveryOptionRecoveryPointStore</summary>
        Commvault.Powershell.Models.IIdName Commvault.Powershell.Models.ICreateReplicationGroupVMWareInternal.RecoveryOptionRecoveryPointStore { get => ((Commvault.Powershell.Models.IRecoveryOptionsCreateInternal)RecoveryOptions).RecoveryPointStore; set => ((Commvault.Powershell.Models.IRecoveryOptionsCreateInternal)RecoveryOptions).RecoveryPointStore = value; }

        /// <summary>Internal Acessors for RecoveryOptions</summary>
        Commvault.Powershell.Models.IRecoveryOptionsCreate Commvault.Powershell.Models.ICreateReplicationGroupVMWareInternal.RecoveryOptions { get => (this._recoveryOptions = this._recoveryOptions ?? new Commvault.Powershell.Models.RecoveryOptionsCreate()); set { {_recoveryOptions = value;} } }

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

        /// <summary>Backing field for <see cref="DestVendor" /> property.</summary>
        private string _destVendor= @"VMware";

        [Commvault.Powershell.Origin(Commvault.Powershell.PropertyOrigin.Owned)]
        public string DestVendor { get => this._destVendor; }

        /// <summary>The field denotes the frequency of replication.</summary>
        [Commvault.Powershell.Origin(Commvault.Powershell.PropertyOrigin.Inherited)]
        public long? FrequencyInMinutes { get => ((Commvault.Powershell.Models.ICreateReplicationGroupInternal)__createReplicationGroup).FrequencyInMinutes; set => ((Commvault.Powershell.Models.ICreateReplicationGroupInternal)__createReplicationGroup).FrequencyInMinutes = value; }

        /// <summary>The name of the replication group being created</summary>
        [Commvault.Powershell.Origin(Commvault.Powershell.PropertyOrigin.Inherited)]
        public string Name { get => ((Commvault.Powershell.Models.ICreateReplicationGroupInternal)__createReplicationGroup).Name; set => ((Commvault.Powershell.Models.ICreateReplicationGroupInternal)__createReplicationGroup).Name = value; }

        /// <summary>Backing field for <see cref="OverrideReplicationOptions" /> property.</summary>
        private Commvault.Powershell.Models.IOverrideReplicationOptionsVMWareCreate[] _overrideReplicationOptions;

        /// <summary>
        /// The replication options per instance, if provided, will override the replication options from the target. For the instances
        /// not in this list, the options are applied from the target.
        /// </summary>
        [Commvault.Powershell.Origin(Commvault.Powershell.PropertyOrigin.Owned)]
        public Commvault.Powershell.Models.IOverrideReplicationOptionsVMWareCreate[] OverrideReplicationOptions { get => this._overrideReplicationOptions; set => this._overrideReplicationOptions = value; }

        /// <summary>Type of recovery.</summary>
        [Commvault.Powershell.Origin(Commvault.Powershell.PropertyOrigin.Inlined)]
        public string RecoveryOptionRecoveryType { get => ((Commvault.Powershell.Models.IRecoveryOptionsCreateInternal)RecoveryOptions).RecoveryType; set => ((Commvault.Powershell.Models.IRecoveryOptionsCreateInternal)RecoveryOptions).RecoveryType = value ?? null; }

        /// <summary>Backing field for <see cref="RecoveryOptions" /> property.</summary>
        private Commvault.Powershell.Models.IRecoveryOptionsCreate _recoveryOptions;

        /// <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>
        [Commvault.Powershell.Origin(Commvault.Powershell.PropertyOrigin.Owned)]
        internal Commvault.Powershell.Models.IRecoveryOptionsCreate RecoveryOptions { get => (this._recoveryOptions = this._recoveryOptions ?? new Commvault.Powershell.Models.RecoveryOptionsCreate()); set => this._recoveryOptions = 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.IRecoveryOptionsCreateInternal)RecoveryOptions).RecoveryPointIntervalApplicationConsistentRpInterval; set => ((Commvault.Powershell.Models.IRecoveryOptionsCreateInternal)RecoveryOptions).RecoveryPointIntervalApplicationConsistentRpInterval = 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.IRecoveryOptionsCreateInternal)RecoveryOptions).RecoveryPointIntervalCrashConsistentRpInterval; set => ((Commvault.Powershell.Models.IRecoveryOptionsCreateInternal)RecoveryOptions).RecoveryPointIntervalCrashConsistentRpInterval = value ?? default(long); }

        /// <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.IRecoveryOptionsCreateInternal)RecoveryOptions).RecoveryPointRetentionMergeRecoveryPoints; set => ((Commvault.Powershell.Models.IRecoveryOptionsCreateInternal)RecoveryOptions).RecoveryPointRetentionMergeRecoveryPoints = 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.IRecoveryOptionsCreateInternal)RecoveryOptions).RecoveryPointRetentionMergeRecoveryPointsOlderThan; set => ((Commvault.Powershell.Models.IRecoveryOptionsCreateInternal)RecoveryOptions).RecoveryPointRetentionMergeRecoveryPointsOlderThan = 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.IRecoveryOptionsCreateInternal)RecoveryOptions).RecoveryPointRetentionPruneAndMergeDuringOffPeak; set => ((Commvault.Powershell.Models.IRecoveryOptionsCreateInternal)RecoveryOptions).RecoveryPointRetentionPruneAndMergeDuringOffPeak = 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.IRecoveryOptionsCreateInternal)RecoveryOptions).RecoveryPointRetentionRecoveryPointIntervalAtEndofRetention; set => ((Commvault.Powershell.Models.IRecoveryOptionsCreateInternal)RecoveryOptions).RecoveryPointRetentionRecoveryPointIntervalAtEndofRetention = 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.IRecoveryOptionsCreateInternal)RecoveryOptions).RecoveryPointRetentionRetainRecoveryPointsFor; set => ((Commvault.Powershell.Models.IRecoveryOptionsCreateInternal)RecoveryOptions).RecoveryPointRetentionRetainRecoveryPointsFor = 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.IRecoveryOptionsCreateInternal)RecoveryOptions).RecoveryPointRetentionRpStoreOfflineFor; set => ((Commvault.Powershell.Models.IRecoveryOptionsCreateInternal)RecoveryOptions).RecoveryPointRetentionRpStoreOfflineFor = value ?? default(long); }

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

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

        [Commvault.Powershell.Origin(Commvault.Powershell.PropertyOrigin.Inherited)]
        public Commvault.Powershell.Models.IIdName RecoveryTarget { get => ((Commvault.Powershell.Models.ICreateReplicationGroupInternal)__createReplicationGroup).RecoveryTarget; set => ((Commvault.Powershell.Models.ICreateReplicationGroupInternal)__createReplicationGroup).RecoveryTarget = value; }

        [Commvault.Powershell.Origin(Commvault.Powershell.PropertyOrigin.Inherited)]
        public long? RecoveryTargetId { get => ((Commvault.Powershell.Models.ICreateReplicationGroupInternal)__createReplicationGroup).RecoveryTargetId; set => ((Commvault.Powershell.Models.ICreateReplicationGroupInternal)__createReplicationGroup).RecoveryTargetId = value; }

        [Commvault.Powershell.Origin(Commvault.Powershell.PropertyOrigin.Inherited)]
        public string RecoveryTargetName { get => ((Commvault.Powershell.Models.ICreateReplicationGroupInternal)__createReplicationGroup).RecoveryTargetName; set => ((Commvault.Powershell.Models.ICreateReplicationGroupInternal)__createReplicationGroup).RecoveryTargetName = value; }

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

        /// <summary>The field specifies the type of replication that is to be performed</summary>
        [Commvault.Powershell.Origin(Commvault.Powershell.PropertyOrigin.Owned)]
        public string ReplicationType { get => this._replicationType; set => this._replicationType = value; }

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

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

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

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

        [Commvault.Powershell.Origin(Commvault.Powershell.PropertyOrigin.Inherited)]
        public Commvault.Powershell.Models.IIdName SourceHypervisor { get => ((Commvault.Powershell.Models.ICreateReplicationGroupInternal)__createReplicationGroup).SourceHypervisor; set => ((Commvault.Powershell.Models.ICreateReplicationGroupInternal)__createReplicationGroup).SourceHypervisor = value; }

        [Commvault.Powershell.Origin(Commvault.Powershell.PropertyOrigin.Inherited)]
        public long? SourceHypervisorId { get => ((Commvault.Powershell.Models.ICreateReplicationGroupInternal)__createReplicationGroup).SourceHypervisorId; set => ((Commvault.Powershell.Models.ICreateReplicationGroupInternal)__createReplicationGroup).SourceHypervisorId = value; }

        [Commvault.Powershell.Origin(Commvault.Powershell.PropertyOrigin.Inherited)]
        public string SourceHypervisorName { get => ((Commvault.Powershell.Models.ICreateReplicationGroupInternal)__createReplicationGroup).SourceHypervisorName; set => ((Commvault.Powershell.Models.ICreateReplicationGroupInternal)__createReplicationGroup).SourceHypervisorName = value; }

        /// <summary>
        /// The primary and an optional secondary storage that will be used for storing the source VM data for replication. The secondary
        /// storage if provided, will be the default source for replication.
        /// </summary>
        [Commvault.Powershell.Origin(Commvault.Powershell.PropertyOrigin.Inherited)]
        public Commvault.Powershell.Models.IStorageCopyCreate[] Storage { get => ((Commvault.Powershell.Models.ICreateReplicationGroupInternal)__createReplicationGroup).Storage; set => ((Commvault.Powershell.Models.ICreateReplicationGroupInternal)__createReplicationGroup).Storage = value; }

        /// <summary>A list of name and GUID of all the virtual machines that have to be replicated</summary>
        [Commvault.Powershell.Origin(Commvault.Powershell.PropertyOrigin.Inherited)]
        public Commvault.Powershell.Models.INameGuid[] Vms { get => ((Commvault.Powershell.Models.ICreateReplicationGroupInternal)__createReplicationGroup).Vms; set => ((Commvault.Powershell.Models.ICreateReplicationGroupInternal)__createReplicationGroup).Vms = value; }

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

        }

        /// <summary>Validates that this object meets the validation criteria.</summary>
        /// <param name="eventListener">an <see cref="Commvault.Powershell.Runtime.IEventListener" /> instance that will receive validation
        /// events.</param>
        /// <returns>
        /// A < see cref = "global::System.Threading.Tasks.Task" /> that will be complete when validation is completed.
        /// </returns>
        public async global::System.Threading.Tasks.Task Validate(Commvault.Powershell.Runtime.IEventListener eventListener)
        {
            await eventListener.AssertNotNull(nameof(__createReplicationGroup), __createReplicationGroup);
            await eventListener.AssertObjectIsValid(nameof(__createReplicationGroup), __createReplicationGroup);
        }
    }
    /// Create a replication group with VMWare as the destination vendor. SourceHypervisor is the hypervisor that has the VM's
    /// to be backed up. Recovery target contains the replication options that will be applied to the selected VM's. ID is mandatory
    /// for sourceHypervisor and recovery target. Provide both the id and the name for the storage and the vms.
    public partial interface ICreateReplicationGroupVMWare :
        Commvault.Powershell.Runtime.IJsonSerializable,
        Commvault.Powershell.Models.ICreateReplicationGroup
    {
        /// <summary>The disk provisioning type for the destination VM.</summary>
        [Commvault.Powershell.Runtime.Info(
        Required = false,
        ReadOnly = false,
        Description = @"The disk provisioning type for the destination VM.",
        SerializedName = @"diskProvisioning",
        PossibleTypes = new [] { typeof(string) })]
        string AdvancedOptionDiskProvisioning { get; set; }
        /// <summary>
        /// Number of snapshots to retain on destination VM. This is only applicable if snap engine is provided
        /// </summary>
        [Commvault.Powershell.Runtime.Info(
        Required = false,
        ReadOnly = false,
        Description = @"Number of snapshots to retain on destination VM. This is only applicable if snap engine is provided",
        SerializedName = @"SnapshotsToRetain",
        PossibleTypes = new [] { typeof(long) })]
        long? AdvancedOptionSnapshotsToRetain { get; set; }
        /// <summary>The transport mode based on environment.</summary>
        [Commvault.Powershell.Runtime.Info(
        Required = false,
        ReadOnly = false,
        Description = @"The transport mode based on environment.",
        SerializedName = @"transportMode",
        PossibleTypes = new [] { typeof(string) })]
        string AdvancedOptionTransportMode { get; set; }
        /// <summary>
        /// This will replace the instance at the destination if the instance with the same name already exists.
        /// </summary>
        [Commvault.Powershell.Runtime.Info(
        Required = false,
        ReadOnly = false,
        Description = @"This will replace the instance at the destination if the instance with the same name already exists.",
        SerializedName = @"unconditionalOverwrite",
        PossibleTypes = new [] { typeof(bool) })]
        bool? AdvancedOptionUnconditionalOverwrite { get; set; }
        /// <summary>
        /// Validates that the destination VM is bootable by powering it on and then powering off
        /// </summary>
        [Commvault.Powershell.Runtime.Info(
        Required = false,
        ReadOnly = false,
        Description = @"Validates that the destination VM is bootable by powering it on and then powering off",
        SerializedName = @"validateDestinationVM",
        PossibleTypes = new [] { typeof(bool) })]
        bool? AdvancedOptionValidateDestinationVM { get; set; }

        [Commvault.Powershell.Runtime.Info(
        Required = true,
        ReadOnly = true,
        Description = @"",
        SerializedName = @"destVendor",
        PossibleTypes = new [] { typeof(string) })]
        string DestVendor { get; }
        /// <summary>
        /// The replication options per instance, if provided, will override the replication options from the target. For the instances
        /// not in this list, the options are applied from the target.
        /// </summary>
        [Commvault.Powershell.Runtime.Info(
        Required = false,
        ReadOnly = false,
        Description = @"The replication options per instance, if provided, will override the replication options from the target. For the instances not in this list, the options are applied from the target.",
        SerializedName = @"overrideReplicationOptions",
        PossibleTypes = new [] { typeof(Commvault.Powershell.Models.IOverrideReplicationOptionsVMWareCreate) })]
        Commvault.Powershell.Models.IOverrideReplicationOptionsVMWareCreate[] OverrideReplicationOptions { get; set; }
        /// <summary>Type of recovery.</summary>
        [Commvault.Powershell.Runtime.Info(
        Required = false,
        ReadOnly = false,
        Description = @"Type of recovery.",
        SerializedName = @"recoveryType",
        PossibleTypes = new [] { typeof(string) })]
        string RecoveryOptionRecoveryType { 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>
        [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>The field specifies the type of replication that is to be performed</summary>
        [Commvault.Powershell.Runtime.Info(
        Required = false,
        ReadOnly = false,
        Description = @"The field specifies the type of replication that is to be performed",
        SerializedName = @"replicationType",
        PossibleTypes = new [] { typeof(string) })]
        string ReplicationType { get; set; }

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

        [Commvault.Powershell.Runtime.Info(
        Required = false,
        ReadOnly = false,
        Description = @"",
        SerializedName = @"name",
        PossibleTypes = new [] { typeof(string) })]
        string SnapEngineName { get; set; }

    }
    /// Create a replication group with VMWare as the destination vendor. SourceHypervisor is the hypervisor that has the VM's
    /// to be backed up. Recovery target contains the replication options that will be applied to the selected VM's. ID is mandatory
    /// for sourceHypervisor and recovery target. Provide both the id and the name for the storage and the vms.
    internal partial interface ICreateReplicationGroupVMWareInternal :
        Commvault.Powershell.Models.ICreateReplicationGroupInternal
    {
        /// <summary>The disk provisioning type for the destination VM.</summary>
        string AdvancedOptionDiskProvisioning { get; set; }
        /// <summary>
        /// Number of snapshots to retain on destination VM. This is only applicable if snap engine is provided
        /// </summary>
        long? AdvancedOptionSnapshotsToRetain { get; set; }
        /// <summary>The transport mode based on environment.</summary>
        string AdvancedOptionTransportMode { get; set; }
        /// <summary>
        /// This will replace the instance at the destination if the instance with the same name already exists.
        /// </summary>
        bool? AdvancedOptionUnconditionalOverwrite { get; set; }
        /// <summary>
        /// Validates that the destination VM is bootable by powering it on and then powering off
        /// </summary>
        bool? AdvancedOptionValidateDestinationVM { get; set; }
        /// <summary>Advanced options for VMWare replication group</summary>
        Commvault.Powershell.Models.IReplicationGroupAdvOptionsVMWareCreate AdvancedOptions { get; set; }

        string DestVendor { get; set; }
        /// <summary>
        /// The replication options per instance, if provided, will override the replication options from the target. For the instances
        /// not in this list, the options are applied from the target.
        /// </summary>
        Commvault.Powershell.Models.IOverrideReplicationOptionsVMWareCreate[] OverrideReplicationOptions { get; set; }
        /// <summary>
        /// Recovery point interval inputs for continuous replication group. Provide atleast one of crash consistent and application
        /// consistent interval.
        /// </summary>
        Commvault.Powershell.Models.IRecoveryPointIntervalCreate RecoveryOptionRecoveryPointInterval { get; set; }
        /// <summary>Recovery point retention inputs for continuous replication group.</summary>
        Commvault.Powershell.Models.IRecoveryPointRetentionCreate RecoveryOptionRecoveryPointRetention { get; set; }

        Commvault.Powershell.Models.IIdName RecoveryOptionRecoveryPointStore { get; set; }
        /// <summary>Type of recovery.</summary>
        string RecoveryOptionRecoveryType { get; set; }
        /// <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>
        Commvault.Powershell.Models.IRecoveryOptionsCreate RecoveryOptions { 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>
        /// 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; }

        long? RecoveryPointStoreId { get; set; }

        string RecoveryPointStoreName { get; set; }
        /// <summary>The field specifies the type of replication that is to be performed</summary>
        string ReplicationType { get; set; }

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

        long? SnapEngineId { get; set; }

        string SnapEngineName { get; set; }

    }
}