generated/api/Models/AzureReplicationGroup.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>Replication group details pertaining to Azure</summary>
    public partial class AzureReplicationGroup :
        Commvault.Powershell.Models.IAzureReplicationGroup,
        Commvault.Powershell.Models.IAzureReplicationGroupInternal,
        Commvault.Powershell.Runtime.IValidates
    {
        /// <summary>
        /// Backing field for Inherited model <see cref= "Commvault.Powershell.Models.IReplicationGroup" />
        /// </summary>
        private Commvault.Powershell.Models.IReplicationGroup __replicationGroup = new Commvault.Powershell.Models.ReplicationGroup();

        /// <summary>Backing field for <see cref="AdvancedOption" /> property.</summary>
        private Commvault.Powershell.Models.IReplicationGroupAdvOptionsAzure _advancedOption;

        /// <summary>Advanced options for Azure replication group</summary>
        [Commvault.Powershell.Origin(Commvault.Powershell.PropertyOrigin.Owned)]
        internal Commvault.Powershell.Models.IReplicationGroupAdvOptionsAzure AdvancedOption { get => (this._advancedOption = this._advancedOption ?? new Commvault.Powershell.Models.ReplicationGroupAdvOptionsAzure()); set => this._advancedOption = value; }

        /// <summary>Select this option to deploy a VM only when a failover operation is requested</summary>
        [Commvault.Powershell.Origin(Commvault.Powershell.PropertyOrigin.Inlined)]
        public bool? AdvancedOptionDeployVMOnlyDuringfailover { get => ((Commvault.Powershell.Models.IReplicationGroupAdvOptionsAzureInternal)AdvancedOption).DeployVMOnlyDuringfailover; set => ((Commvault.Powershell.Models.IReplicationGroupAdvOptionsAzureInternal)AdvancedOption).DeployVMOnlyDuringfailover = value ?? default(bool); }

        /// <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.IReplicationGroupAdvOptionsAzureInternal)AdvancedOption).UnconditionalOverwrite; set => ((Commvault.Powershell.Models.IReplicationGroupAdvOptionsAzureInternal)AdvancedOption).UnconditionalOverwrite = value ?? default(bool); }

        /// <summary>Internal Acessors for AdvancedOption</summary>
        Commvault.Powershell.Models.IReplicationGroupAdvOptionsAzure Commvault.Powershell.Models.IAzureReplicationGroupInternal.AdvancedOption { get => (this._advancedOption = this._advancedOption ?? new Commvault.Powershell.Models.ReplicationGroupAdvOptionsAzure()); set { {_advancedOption = value;} } }

        /// <summary>Internal Acessors for Vendor</summary>
        string Commvault.Powershell.Models.IAzureReplicationGroupInternal.Vendor { get => this._vendor; set { {_vendor = value;} } }

        /// <summary>Replication group id</summary>
        [Commvault.Powershell.Origin(Commvault.Powershell.PropertyOrigin.Inherited)]
        public long? Id { get => ((Commvault.Powershell.Models.IReplicationGroupInternal)__replicationGroup).Id; set => ((Commvault.Powershell.Models.IReplicationGroupInternal)__replicationGroup).Id = value; }

        /// <summary>Replication group name</summary>
        [Commvault.Powershell.Origin(Commvault.Powershell.PropertyOrigin.Inherited)]
        public string Name { get => ((Commvault.Powershell.Models.IReplicationGroupInternal)__replicationGroup).Name; set => ((Commvault.Powershell.Models.IReplicationGroupInternal)__replicationGroup).Name = value; }

        /// <summary>Backing field for <see cref="ReplicationConfiguration" /> property.</summary>
        private Commvault.Powershell.Models.IReplicationConfigurationAzure[] _replicationConfiguration;

        [Commvault.Powershell.Origin(Commvault.Powershell.PropertyOrigin.Owned)]
        public Commvault.Powershell.Models.IReplicationConfigurationAzure[] ReplicationConfiguration { get => this._replicationConfiguration; set => this._replicationConfiguration = value; }

        /// <summary>Frequency of replication</summary>
        [Commvault.Powershell.Origin(Commvault.Powershell.PropertyOrigin.Inherited)]
        public Commvault.Powershell.Models.IRpo Rpo { get => ((Commvault.Powershell.Models.IReplicationGroupInternal)__replicationGroup).Rpo; set => ((Commvault.Powershell.Models.IReplicationGroupInternal)__replicationGroup).Rpo = value; }

        /// <summary>
        /// Max amount of time for which data can be lost during a service disruption. Determines frequency of backup jobs in minutes
        /// </summary>
        [Commvault.Powershell.Origin(Commvault.Powershell.PropertyOrigin.Inherited)]
        public long? RpoReplicationFrequency { get => ((Commvault.Powershell.Models.IReplicationGroupInternal)__replicationGroup).RpoReplicationFrequency; set => ((Commvault.Powershell.Models.IReplicationGroupInternal)__replicationGroup).RpoReplicationFrequency = value; }

        /// <summary>List of storage configured for a replication group</summary>
        [Commvault.Powershell.Origin(Commvault.Powershell.PropertyOrigin.Inherited)]
        public Commvault.Powershell.Models.IReplicationGroupStorageList Storage { get => ((Commvault.Powershell.Models.IReplicationGroupInternal)__replicationGroup).Storage; set => ((Commvault.Powershell.Models.IReplicationGroupInternal)__replicationGroup).Storage = value; }

        /// <summary>List of all storages which are configured for that replication group</summary>
        [Commvault.Powershell.Origin(Commvault.Powershell.PropertyOrigin.Inherited)]
        public Commvault.Powershell.Models.IStorageCopy[] StorageCopies { get => ((Commvault.Powershell.Models.IReplicationGroupInternal)__replicationGroup).StorageCopies; set => ((Commvault.Powershell.Models.IReplicationGroupInternal)__replicationGroup).StorageCopies = value; }

        /// <summary>Main storage which is used for replication</summary>
        [Commvault.Powershell.Origin(Commvault.Powershell.PropertyOrigin.Inherited)]
        public string StorageCopyForReplication { get => ((Commvault.Powershell.Models.IReplicationGroupInternal)__replicationGroup).StorageCopyForReplication; set => ((Commvault.Powershell.Models.IReplicationGroupInternal)__replicationGroup).StorageCopyForReplication = value; }

        /// <summary>Summary of replication group</summary>
        [Commvault.Powershell.Origin(Commvault.Powershell.PropertyOrigin.Inherited)]
        public Commvault.Powershell.Models.IReplicationGroupSummary Summary { get => ((Commvault.Powershell.Models.IReplicationGroupInternal)__replicationGroup).Summary; set => ((Commvault.Powershell.Models.IReplicationGroupInternal)__replicationGroup).Summary = value; }

        /// <summary>Vendor used as destination for replication.</summary>
        [Commvault.Powershell.Origin(Commvault.Powershell.PropertyOrigin.Inherited)]
        public string SummaryDestinationVendor { get => ((Commvault.Powershell.Models.IReplicationGroupInternal)__replicationGroup).SummaryDestinationVendor; set => ((Commvault.Powershell.Models.IReplicationGroupInternal)__replicationGroup).SummaryDestinationVendor = value; }

        /// <summary>Can be used to identify destination for full VM restore</summary>
        [Commvault.Powershell.Origin(Commvault.Powershell.PropertyOrigin.Inherited)]
        public string SummaryRecoveryTarget { get => ((Commvault.Powershell.Models.IReplicationGroupInternal)__replicationGroup).SummaryRecoveryTarget; set => ((Commvault.Powershell.Models.IReplicationGroupInternal)__replicationGroup).SummaryRecoveryTarget = value; }

        /// <summary>The field specifies the type of replication that is to be performed</summary>
        [Commvault.Powershell.Origin(Commvault.Powershell.PropertyOrigin.Inherited)]
        public string SummaryReplicationType { get => ((Commvault.Powershell.Models.IReplicationGroupInternal)__replicationGroup).SummaryReplicationType; set => ((Commvault.Powershell.Models.IReplicationGroupInternal)__replicationGroup).SummaryReplicationType = value; }

        /// <summary>Source hypervisor</summary>
        [Commvault.Powershell.Origin(Commvault.Powershell.PropertyOrigin.Inherited)]
        public string SummarySource { get => ((Commvault.Powershell.Models.IReplicationGroupInternal)__replicationGroup).SummarySource; set => ((Commvault.Powershell.Models.IReplicationGroupInternal)__replicationGroup).SummarySource = value; }

        /// <summary>State of replication group. Values are case sensitive</summary>
        [Commvault.Powershell.Origin(Commvault.Powershell.PropertyOrigin.Inherited)]
        public string SummaryState { get => ((Commvault.Powershell.Models.IReplicationGroupInternal)__replicationGroup).SummaryState; set => ((Commvault.Powershell.Models.IReplicationGroupInternal)__replicationGroup).SummaryState = value; }

        /// <summary>Backing field for <see cref="Vendor" /> property.</summary>
        private string _vendor= @"Azure";

        /// <summary>Vendor type of this replication group. Values in enum are case sensitive</summary>
        [Commvault.Powershell.Origin(Commvault.Powershell.PropertyOrigin.Owned)]
        public string Vendor { get => this._vendor; }

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

        }

        /// <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(__replicationGroup), __replicationGroup);
            await eventListener.AssertObjectIsValid(nameof(__replicationGroup), __replicationGroup);
        }
    }
    /// Replication group details pertaining to Azure
    public partial interface IAzureReplicationGroup :
        Commvault.Powershell.Runtime.IJsonSerializable,
        Commvault.Powershell.Models.IReplicationGroup
    {
        /// <summary>Select this option to deploy a VM only when a failover operation is requested</summary>
        [Commvault.Powershell.Runtime.Info(
        Required = false,
        ReadOnly = false,
        Description = @"Select this option to deploy a VM only when a failover operation is requested",
        SerializedName = @"deployVmOnlyDuringfailover",
        PossibleTypes = new [] { typeof(bool) })]
        bool? AdvancedOptionDeployVMOnlyDuringfailover { 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; }

        [Commvault.Powershell.Runtime.Info(
        Required = false,
        ReadOnly = false,
        Description = @"",
        SerializedName = @"replicationConfiguration",
        PossibleTypes = new [] { typeof(Commvault.Powershell.Models.IReplicationConfigurationAzure) })]
        Commvault.Powershell.Models.IReplicationConfigurationAzure[] ReplicationConfiguration { get; set; }
        /// <summary>Vendor type of this replication group. Values in enum are case sensitive</summary>
        [Commvault.Powershell.Runtime.Info(
        Required = true,
        ReadOnly = true,
        Description = @"Vendor type of this replication group. Values in enum are case sensitive",
        SerializedName = @"vendor",
        PossibleTypes = new [] { typeof(string) })]
        string Vendor { get; }

    }
    /// Replication group details pertaining to Azure
    internal partial interface IAzureReplicationGroupInternal :
        Commvault.Powershell.Models.IReplicationGroupInternal
    {
        /// <summary>Advanced options for Azure replication group</summary>
        Commvault.Powershell.Models.IReplicationGroupAdvOptionsAzure AdvancedOption { get; set; }
        /// <summary>Select this option to deploy a VM only when a failover operation is requested</summary>
        bool? AdvancedOptionDeployVMOnlyDuringfailover { 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; }

        Commvault.Powershell.Models.IReplicationConfigurationAzure[] ReplicationConfiguration { get; set; }
        /// <summary>Vendor type of this replication group. Values in enum are case sensitive</summary>
        string Vendor { get; set; }

    }
}