generated/api/Models/FailoverGroupDetails.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>Failover group details</summary>
    public partial class FailoverGroupDetails :
        Commvault.Powershell.Models.IFailoverGroupDetails,
        Commvault.Powershell.Models.IFailoverGroupDetailsInternal
    {

        /// <summary>Backing field for <see cref="ArrayReplicationPairs" /> property.</summary>
        private Commvault.Powershell.Models.IFailoverGroupArrayReplicationPair[] _arrayReplicationPairs;

        /// <summary>List of all array replication pairs for failover group</summary>
        [Commvault.Powershell.Origin(Commvault.Powershell.PropertyOrigin.Owned)]
        public Commvault.Powershell.Models.IFailoverGroupArrayReplicationPair[] ArrayReplicationPairs { get => this._arrayReplicationPairs; set => this._arrayReplicationPairs = value; }

        /// <summary>Backing field for <see cref="AutomaticFailover" /> property.</summary>
        private Commvault.Powershell.Models.IFailoverGroupAutomaticFailover _automaticFailover;

        /// <summary>
        /// The failover group automatic failover information of access nodes and monitoring status
        /// </summary>
        [Commvault.Powershell.Origin(Commvault.Powershell.PropertyOrigin.Owned)]
        internal Commvault.Powershell.Models.IFailoverGroupAutomaticFailover AutomaticFailover { get => (this._automaticFailover = this._automaticFailover ?? new Commvault.Powershell.Models.FailoverGroupAutomaticFailover()); set => this._automaticFailover = value; }

        [Commvault.Powershell.Origin(Commvault.Powershell.PropertyOrigin.Inlined)]
        public Commvault.Powershell.Models.IIdName[] AutomaticFailoverMachines { get => ((Commvault.Powershell.Models.IFailoverGroupAutomaticFailoverInternal)AutomaticFailover).Machines; set => ((Commvault.Powershell.Models.IFailoverGroupAutomaticFailoverInternal)AutomaticFailover).Machines = value ?? null /* arrayOf */; }

        /// <summary>Automatic failover monitoring status</summary>
        [Commvault.Powershell.Origin(Commvault.Powershell.PropertyOrigin.Inlined)]
        public string AutomaticFailoverMonitoringStatus { get => ((Commvault.Powershell.Models.IFailoverGroupAutomaticFailoverInternal)AutomaticFailover).MonitoringStatus; set => ((Commvault.Powershell.Models.IFailoverGroupAutomaticFailoverInternal)AutomaticFailover).MonitoringStatus = value ?? null; }

        /// <summary>Delay time before declaring outage (in minutes)</summary>
        [Commvault.Powershell.Origin(Commvault.Powershell.PropertyOrigin.Inlined)]
        public long? AutomaticFailoverOutageDelayTimeInMinutes { get => ((Commvault.Powershell.Models.IFailoverGroupAutomaticFailoverInternal)AutomaticFailover).OutageDelayTimeInMinutes; set => ((Commvault.Powershell.Models.IFailoverGroupAutomaticFailoverInternal)AutomaticFailover).OutageDelayTimeInMinutes = value ?? default(long); }

        /// <summary>Automatic failover configuration status</summary>
        [Commvault.Powershell.Origin(Commvault.Powershell.PropertyOrigin.Inlined)]
        public string AutomaticFailoverStatus { get => ((Commvault.Powershell.Models.IFailoverGroupAutomaticFailoverInternal)AutomaticFailover).Status; set => ((Commvault.Powershell.Models.IFailoverGroupAutomaticFailoverInternal)AutomaticFailover).Status = value ?? null; }

        /// <summary>Internal Acessors for AutomaticFailover</summary>
        Commvault.Powershell.Models.IFailoverGroupAutomaticFailover Commvault.Powershell.Models.IFailoverGroupDetailsInternal.AutomaticFailover { get => (this._automaticFailover = this._automaticFailover ?? new Commvault.Powershell.Models.FailoverGroupAutomaticFailover()); set { {_automaticFailover = value;} } }

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

        /// <summary>Internal Acessors for DestinationHypervisor</summary>
        Commvault.Powershell.Models.IFailoverGroupHypervisor Commvault.Powershell.Models.IFailoverGroupDetailsInternal.DestinationHypervisor { get => (this._destinationHypervisor = this._destinationHypervisor ?? new Commvault.Powershell.Models.FailoverGroupHypervisor()); set { {_destinationHypervisor = value;} } }

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

        /// <summary>Internal Acessors for SourceHypervisor</summary>
        Commvault.Powershell.Models.IFailoverGroupHypervisor Commvault.Powershell.Models.IFailoverGroupDetailsInternal.SourceHypervisor { get => (this._sourceHypervisor = this._sourceHypervisor ?? new Commvault.Powershell.Models.FailoverGroupHypervisor()); set { {_sourceHypervisor = value;} } }

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

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

        /// <summary>Backing field for <see cref="ContinueDrOnFailure" /> property.</summary>
        private bool? _continueDrOnFailure;

        /// <summary>Whether to continue to next priority on DR job failure</summary>
        [Commvault.Powershell.Origin(Commvault.Powershell.PropertyOrigin.Owned)]
        public bool? ContinueDrOnFailure { get => this._continueDrOnFailure; set => this._continueDrOnFailure = value; }

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

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

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

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

        /// <summary>Backing field for <see cref="DestinationHypervisor" /> property.</summary>
        private Commvault.Powershell.Models.IFailoverGroupHypervisor _destinationHypervisor;

        /// <summary>The hypervisor client/client group information for failover groups</summary>
        [Commvault.Powershell.Origin(Commvault.Powershell.PropertyOrigin.Owned)]
        internal Commvault.Powershell.Models.IFailoverGroupHypervisor DestinationHypervisor { get => (this._destinationHypervisor = this._destinationHypervisor ?? new Commvault.Powershell.Models.FailoverGroupHypervisor()); set => this._destinationHypervisor = value; }

        /// <summary>The Id of client/client group</summary>
        [Commvault.Powershell.Origin(Commvault.Powershell.PropertyOrigin.Inlined)]
        public long? DestinationHypervisorId { get => ((Commvault.Powershell.Models.IFailoverGroupHypervisorInternal)DestinationHypervisor).Id; set => ((Commvault.Powershell.Models.IFailoverGroupHypervisorInternal)DestinationHypervisor).Id = value ?? default(long); }

        /// <summary>The name of the hypervisor client/client group</summary>
        [Commvault.Powershell.Origin(Commvault.Powershell.PropertyOrigin.Inlined)]
        public string DestinationHypervisorName { get => ((Commvault.Powershell.Models.IFailoverGroupHypervisorInternal)DestinationHypervisor).Name; set => ((Commvault.Powershell.Models.IFailoverGroupHypervisorInternal)DestinationHypervisor).Name = value ?? null; }

        /// <summary>The type of entity is used</summary>
        [Commvault.Powershell.Origin(Commvault.Powershell.PropertyOrigin.Inlined)]
        public string DestinationHypervisorType { get => ((Commvault.Powershell.Models.IFailoverGroupHypervisorInternal)DestinationHypervisor).Type; set => ((Commvault.Powershell.Models.IFailoverGroupHypervisorInternal)DestinationHypervisor).Type = value ?? null; }

        [Commvault.Powershell.Origin(Commvault.Powershell.PropertyOrigin.Inlined)]
        public string DestinationHypervisorVendor { get => ((Commvault.Powershell.Models.IFailoverGroupHypervisorInternal)DestinationHypervisor).Vendor; set => ((Commvault.Powershell.Models.IFailoverGroupHypervisorInternal)DestinationHypervisor).Vendor = value ?? null; }

        /// <summary>Backing field for <see cref="EsxServerMappings" /> property.</summary>
        private Commvault.Powershell.Models.IEsxServerMapping[] _esxServerMappings;

        /// <summary>The list of all ESX server mappings</summary>
        [Commvault.Powershell.Origin(Commvault.Powershell.PropertyOrigin.Owned)]
        public Commvault.Powershell.Models.IEsxServerMapping[] EsxServerMappings { get => this._esxServerMappings; set => this._esxServerMappings = value; }

        /// <summary>Backing field for <see cref="Id" /> property.</summary>
        private long? _id;

        /// <summary>Failover group Id</summary>
        [Commvault.Powershell.Origin(Commvault.Powershell.PropertyOrigin.Owned)]
        public long? Id { get => this._id; set => this._id = value; }

        /// <summary>Backing field for <see cref="IsApprovalRequired" /> property.</summary>
        private bool? _isApprovalRequired;

        /// <summary>Whether a user approval is required for DR operations</summary>
        [Commvault.Powershell.Origin(Commvault.Powershell.PropertyOrigin.Owned)]
        public bool? IsApprovalRequired { get => this._isApprovalRequired; set => this._isApprovalRequired = value; }

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

        /// <summary>Failover group name</summary>
        [Commvault.Powershell.Origin(Commvault.Powershell.PropertyOrigin.Owned)]
        public string Name { get => this._name; set => this._name = value; }

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

        /// <summary>Failover group operation type</summary>
        [Commvault.Powershell.Origin(Commvault.Powershell.PropertyOrigin.Owned)]
        public string OperationType { get => this._operationType; set => this._operationType = value; }

        /// <summary>Backing field for <see cref="PlannedFailoverSchedules" /> property.</summary>
        private Commvault.Powershell.Models.IPlanSchedule[] _plannedFailoverSchedules;

        /// <summary>The list of all planned failover schedules</summary>
        [Commvault.Powershell.Origin(Commvault.Powershell.PropertyOrigin.Owned)]
        public Commvault.Powershell.Models.IPlanSchedule[] PlannedFailoverSchedules { get => this._plannedFailoverSchedules; set => this._plannedFailoverSchedules = value; }

        /// <summary>Backing field for <see cref="PriorityIntervalInMinutes" /> property.</summary>
        private long? _priorityIntervalInMinutes;

        /// <summary>The interval between DR operations of different priorities</summary>
        [Commvault.Powershell.Origin(Commvault.Powershell.PropertyOrigin.Owned)]
        public long? PriorityIntervalInMinutes { get => this._priorityIntervalInMinutes; set => this._priorityIntervalInMinutes = value; }

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

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

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

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

        /// <summary>Backing field for <see cref="ReplicationPairs" /> property.</summary>
        private Commvault.Powershell.Models.IFailoverGroupReplicationPair[] _replicationPairs;

        /// <summary>List of all replication pairs that are part of the failover group</summary>
        [Commvault.Powershell.Origin(Commvault.Powershell.PropertyOrigin.Owned)]
        public Commvault.Powershell.Models.IFailoverGroupReplicationPair[] ReplicationPairs { get => this._replicationPairs; set => this._replicationPairs = value; }

        /// <summary>Backing field for <see cref="Script" /> property.</summary>
        private Commvault.Powershell.Models.IReplicationGroupScript _script;

        /// <summary>Pre/post failover and failback scripts at group level</summary>
        [Commvault.Powershell.Origin(Commvault.Powershell.PropertyOrigin.Owned)]
        public Commvault.Powershell.Models.IReplicationGroupScript Script { get => (this._script = this._script ?? new Commvault.Powershell.Models.ReplicationGroupScript()); set => this._script = value; }

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

        /// <summary>Failover group type</summary>
        [Commvault.Powershell.Origin(Commvault.Powershell.PropertyOrigin.Owned)]
        public string Source { get => this._source; set => this._source = value; }

        /// <summary>Backing field for <see cref="SourceHypervisor" /> property.</summary>
        private Commvault.Powershell.Models.IFailoverGroupHypervisor _sourceHypervisor;

        /// <summary>The hypervisor client/client group information for failover groups</summary>
        [Commvault.Powershell.Origin(Commvault.Powershell.PropertyOrigin.Owned)]
        internal Commvault.Powershell.Models.IFailoverGroupHypervisor SourceHypervisor { get => (this._sourceHypervisor = this._sourceHypervisor ?? new Commvault.Powershell.Models.FailoverGroupHypervisor()); set => this._sourceHypervisor = value; }

        /// <summary>The Id of client/client group</summary>
        [Commvault.Powershell.Origin(Commvault.Powershell.PropertyOrigin.Inlined)]
        public long? SourceHypervisorId { get => ((Commvault.Powershell.Models.IFailoverGroupHypervisorInternal)SourceHypervisor).Id; set => ((Commvault.Powershell.Models.IFailoverGroupHypervisorInternal)SourceHypervisor).Id = value ?? default(long); }

        /// <summary>The name of the hypervisor client/client group</summary>
        [Commvault.Powershell.Origin(Commvault.Powershell.PropertyOrigin.Inlined)]
        public string SourceHypervisorName { get => ((Commvault.Powershell.Models.IFailoverGroupHypervisorInternal)SourceHypervisor).Name; set => ((Commvault.Powershell.Models.IFailoverGroupHypervisorInternal)SourceHypervisor).Name = value ?? null; }

        /// <summary>The type of entity is used</summary>
        [Commvault.Powershell.Origin(Commvault.Powershell.PropertyOrigin.Inlined)]
        public string SourceHypervisorType { get => ((Commvault.Powershell.Models.IFailoverGroupHypervisorInternal)SourceHypervisor).Type; set => ((Commvault.Powershell.Models.IFailoverGroupHypervisorInternal)SourceHypervisor).Type = value ?? null; }

        [Commvault.Powershell.Origin(Commvault.Powershell.PropertyOrigin.Inlined)]
        public string SourceHypervisorVendor { get => ((Commvault.Powershell.Models.IFailoverGroupHypervisorInternal)SourceHypervisor).Vendor; set => ((Commvault.Powershell.Models.IFailoverGroupHypervisorInternal)SourceHypervisor).Vendor = value ?? null; }

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

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

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

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

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

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

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

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

        /// <summary>Backing field for <see cref="TestBootSchedules" /> property.</summary>
        private Commvault.Powershell.Models.IPlanSchedule[] _testBootSchedules;

        /// <summary>The list of all test boot schedules</summary>
        [Commvault.Powershell.Origin(Commvault.Powershell.PropertyOrigin.Owned)]
        public Commvault.Powershell.Models.IPlanSchedule[] TestBootSchedules { get => this._testBootSchedules; set => this._testBootSchedules = value; }

        /// <summary>Backing field for <see cref="UsersToNotify" /> property.</summary>
        private Commvault.Powershell.Models.IIdNameDisplayNameCompany[] _usersToNotify;

        /// <summary>Users to notify/for approval of DR operations</summary>
        [Commvault.Powershell.Origin(Commvault.Powershell.PropertyOrigin.Owned)]
        public Commvault.Powershell.Models.IIdNameDisplayNameCompany[] UsersToNotify { get => this._usersToNotify; set => this._usersToNotify = value; }

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

        }
    }
    /// Failover group details
    public partial interface IFailoverGroupDetails :
        Commvault.Powershell.Runtime.IJsonSerializable
    {
        /// <summary>List of all array replication pairs for failover group</summary>
        [Commvault.Powershell.Runtime.Info(
        Required = false,
        ReadOnly = false,
        Description = @"List of all array replication pairs for failover group",
        SerializedName = @"arrayReplicationPairs",
        PossibleTypes = new [] { typeof(Commvault.Powershell.Models.IFailoverGroupArrayReplicationPair) })]
        Commvault.Powershell.Models.IFailoverGroupArrayReplicationPair[] ArrayReplicationPairs { get; set; }

        [Commvault.Powershell.Runtime.Info(
        Required = false,
        ReadOnly = false,
        Description = @"",
        SerializedName = @"machines",
        PossibleTypes = new [] { typeof(Commvault.Powershell.Models.IIdName) })]
        Commvault.Powershell.Models.IIdName[] AutomaticFailoverMachines { get; set; }
        /// <summary>Automatic failover monitoring status</summary>
        [Commvault.Powershell.Runtime.Info(
        Required = false,
        ReadOnly = false,
        Description = @"Automatic failover monitoring status",
        SerializedName = @"monitoringStatus",
        PossibleTypes = new [] { typeof(string) })]
        string AutomaticFailoverMonitoringStatus { get; set; }
        /// <summary>Delay time before declaring outage (in minutes)</summary>
        [Commvault.Powershell.Runtime.Info(
        Required = false,
        ReadOnly = false,
        Description = @"Delay time before declaring outage (in minutes)",
        SerializedName = @"outageDelayTimeInMinutes",
        PossibleTypes = new [] { typeof(long) })]
        long? AutomaticFailoverOutageDelayTimeInMinutes { get; set; }
        /// <summary>Automatic failover configuration status</summary>
        [Commvault.Powershell.Runtime.Info(
        Required = false,
        ReadOnly = false,
        Description = @"Automatic failover configuration status",
        SerializedName = @"status",
        PossibleTypes = new [] { typeof(string) })]
        string AutomaticFailoverStatus { get; set; }
        /// <summary>Whether to continue to next priority on DR job failure</summary>
        [Commvault.Powershell.Runtime.Info(
        Required = false,
        ReadOnly = false,
        Description = @"Whether to continue to next priority on DR job failure",
        SerializedName = @"continueDROnFailure",
        PossibleTypes = new [] { typeof(bool) })]
        bool? ContinueDrOnFailure { get; set; }

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

        [Commvault.Powershell.Runtime.Info(
        Required = false,
        ReadOnly = false,
        Description = @"",
        SerializedName = @"name",
        PossibleTypes = new [] { typeof(string) })]
        string CopyName { get; set; }
        /// <summary>The Id of client/client group</summary>
        [Commvault.Powershell.Runtime.Info(
        Required = false,
        ReadOnly = false,
        Description = @"The Id of client/client group",
        SerializedName = @"id",
        PossibleTypes = new [] { typeof(long) })]
        long? DestinationHypervisorId { get; set; }
        /// <summary>The name of the hypervisor client/client group</summary>
        [Commvault.Powershell.Runtime.Info(
        Required = false,
        ReadOnly = false,
        Description = @"The name of the hypervisor client/client group",
        SerializedName = @"name",
        PossibleTypes = new [] { typeof(string) })]
        string DestinationHypervisorName { get; set; }
        /// <summary>The type of entity is used</summary>
        [Commvault.Powershell.Runtime.Info(
        Required = false,
        ReadOnly = false,
        Description = @"The type of entity is used",
        SerializedName = @"type",
        PossibleTypes = new [] { typeof(string) })]
        string DestinationHypervisorType { get; set; }

        [Commvault.Powershell.Runtime.Info(
        Required = false,
        ReadOnly = false,
        Description = @"",
        SerializedName = @"vendor",
        PossibleTypes = new [] { typeof(string) })]
        string DestinationHypervisorVendor { get; set; }
        /// <summary>The list of all ESX server mappings</summary>
        [Commvault.Powershell.Runtime.Info(
        Required = false,
        ReadOnly = false,
        Description = @"The list of all ESX server mappings",
        SerializedName = @"esxServerMappings",
        PossibleTypes = new [] { typeof(Commvault.Powershell.Models.IEsxServerMapping) })]
        Commvault.Powershell.Models.IEsxServerMapping[] EsxServerMappings { get; set; }
        /// <summary>Failover group Id</summary>
        [Commvault.Powershell.Runtime.Info(
        Required = false,
        ReadOnly = false,
        Description = @"Failover group Id",
        SerializedName = @"id",
        PossibleTypes = new [] { typeof(long) })]
        long? Id { get; set; }
        /// <summary>Whether a user approval is required for DR operations</summary>
        [Commvault.Powershell.Runtime.Info(
        Required = false,
        ReadOnly = false,
        Description = @"Whether a user approval is required for DR operations",
        SerializedName = @"isApprovalRequired",
        PossibleTypes = new [] { typeof(bool) })]
        bool? IsApprovalRequired { get; set; }
        /// <summary>Failover group name</summary>
        [Commvault.Powershell.Runtime.Info(
        Required = false,
        ReadOnly = false,
        Description = @"Failover group name",
        SerializedName = @"name",
        PossibleTypes = new [] { typeof(string) })]
        string Name { get; set; }
        /// <summary>Failover group operation type</summary>
        [Commvault.Powershell.Runtime.Info(
        Required = false,
        ReadOnly = false,
        Description = @"Failover group operation type",
        SerializedName = @"operationType",
        PossibleTypes = new [] { typeof(string) })]
        string OperationType { get; set; }
        /// <summary>The list of all planned failover schedules</summary>
        [Commvault.Powershell.Runtime.Info(
        Required = false,
        ReadOnly = false,
        Description = @"The list of all planned failover schedules",
        SerializedName = @"plannedFailoverSchedules",
        PossibleTypes = new [] { typeof(Commvault.Powershell.Models.IPlanSchedule) })]
        Commvault.Powershell.Models.IPlanSchedule[] PlannedFailoverSchedules { get; set; }
        /// <summary>The interval between DR operations of different priorities</summary>
        [Commvault.Powershell.Runtime.Info(
        Required = false,
        ReadOnly = false,
        Description = @"The interval between DR operations of different priorities",
        SerializedName = @"priorityIntervalInMinutes",
        PossibleTypes = new [] { typeof(long) })]
        long? PriorityIntervalInMinutes { get; set; }

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

        [Commvault.Powershell.Runtime.Info(
        Required = false,
        ReadOnly = false,
        Description = @"",
        SerializedName = @"name",
        PossibleTypes = new [] { typeof(string) })]
        string RecoveryTargetName { get; set; }
        /// <summary>List of all replication pairs that are part of the failover group</summary>
        [Commvault.Powershell.Runtime.Info(
        Required = false,
        ReadOnly = false,
        Description = @"List of all replication pairs that are part of the failover group",
        SerializedName = @"replicationPairs",
        PossibleTypes = new [] { typeof(Commvault.Powershell.Models.IFailoverGroupReplicationPair) })]
        Commvault.Powershell.Models.IFailoverGroupReplicationPair[] ReplicationPairs { get; set; }
        /// <summary>Pre/post failover and failback scripts at group level</summary>
        [Commvault.Powershell.Runtime.Info(
        Required = false,
        ReadOnly = false,
        Description = @"Pre/post failover and failback scripts at group level",
        SerializedName = @"script",
        PossibleTypes = new [] { typeof(Commvault.Powershell.Models.IReplicationGroupScript) })]
        Commvault.Powershell.Models.IReplicationGroupScript Script { get; set; }
        /// <summary>Failover group type</summary>
        [Commvault.Powershell.Runtime.Info(
        Required = false,
        ReadOnly = false,
        Description = @"Failover group type",
        SerializedName = @"source",
        PossibleTypes = new [] { typeof(string) })]
        string Source { get; set; }
        /// <summary>The Id of client/client group</summary>
        [Commvault.Powershell.Runtime.Info(
        Required = false,
        ReadOnly = false,
        Description = @"The Id of client/client group",
        SerializedName = @"id",
        PossibleTypes = new [] { typeof(long) })]
        long? SourceHypervisorId { get; set; }
        /// <summary>The name of the hypervisor client/client group</summary>
        [Commvault.Powershell.Runtime.Info(
        Required = false,
        ReadOnly = false,
        Description = @"The name of the hypervisor client/client group",
        SerializedName = @"name",
        PossibleTypes = new [] { typeof(string) })]
        string SourceHypervisorName { get; set; }
        /// <summary>The type of entity is used</summary>
        [Commvault.Powershell.Runtime.Info(
        Required = false,
        ReadOnly = false,
        Description = @"The type of entity is used",
        SerializedName = @"type",
        PossibleTypes = new [] { typeof(string) })]
        string SourceHypervisorType { get; set; }

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

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

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

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

        [Commvault.Powershell.Runtime.Info(
        Required = false,
        ReadOnly = false,
        Description = @"",
        SerializedName = @"name",
        PossibleTypes = new [] { typeof(string) })]
        string SubclientName { get; set; }
        /// <summary>The list of all test boot schedules</summary>
        [Commvault.Powershell.Runtime.Info(
        Required = false,
        ReadOnly = false,
        Description = @"The list of all test boot schedules",
        SerializedName = @"testBootSchedules",
        PossibleTypes = new [] { typeof(Commvault.Powershell.Models.IPlanSchedule) })]
        Commvault.Powershell.Models.IPlanSchedule[] TestBootSchedules { get; set; }
        /// <summary>Users to notify/for approval of DR operations</summary>
        [Commvault.Powershell.Runtime.Info(
        Required = false,
        ReadOnly = false,
        Description = @"Users to notify/for approval of DR operations",
        SerializedName = @"usersToNotify",
        PossibleTypes = new [] { typeof(Commvault.Powershell.Models.IIdNameDisplayNameCompany) })]
        Commvault.Powershell.Models.IIdNameDisplayNameCompany[] UsersToNotify { get; set; }

    }
    /// Failover group details
    internal partial interface IFailoverGroupDetailsInternal

    {
        /// <summary>List of all array replication pairs for failover group</summary>
        Commvault.Powershell.Models.IFailoverGroupArrayReplicationPair[] ArrayReplicationPairs { get; set; }
        /// <summary>
        /// The failover group automatic failover information of access nodes and monitoring status
        /// </summary>
        Commvault.Powershell.Models.IFailoverGroupAutomaticFailover AutomaticFailover { get; set; }

        Commvault.Powershell.Models.IIdName[] AutomaticFailoverMachines { get; set; }
        /// <summary>Automatic failover monitoring status</summary>
        string AutomaticFailoverMonitoringStatus { get; set; }
        /// <summary>Delay time before declaring outage (in minutes)</summary>
        long? AutomaticFailoverOutageDelayTimeInMinutes { get; set; }
        /// <summary>Automatic failover configuration status</summary>
        string AutomaticFailoverStatus { get; set; }
        /// <summary>Whether to continue to next priority on DR job failure</summary>
        bool? ContinueDrOnFailure { get; set; }

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

        long? CopyId { get; set; }

        string CopyName { get; set; }
        /// <summary>The hypervisor client/client group information for failover groups</summary>
        Commvault.Powershell.Models.IFailoverGroupHypervisor DestinationHypervisor { get; set; }
        /// <summary>The Id of client/client group</summary>
        long? DestinationHypervisorId { get; set; }
        /// <summary>The name of the hypervisor client/client group</summary>
        string DestinationHypervisorName { get; set; }
        /// <summary>The type of entity is used</summary>
        string DestinationHypervisorType { get; set; }

        string DestinationHypervisorVendor { get; set; }
        /// <summary>The list of all ESX server mappings</summary>
        Commvault.Powershell.Models.IEsxServerMapping[] EsxServerMappings { get; set; }
        /// <summary>Failover group Id</summary>
        long? Id { get; set; }
        /// <summary>Whether a user approval is required for DR operations</summary>
        bool? IsApprovalRequired { get; set; }
        /// <summary>Failover group name</summary>
        string Name { get; set; }
        /// <summary>Failover group operation type</summary>
        string OperationType { get; set; }
        /// <summary>The list of all planned failover schedules</summary>
        Commvault.Powershell.Models.IPlanSchedule[] PlannedFailoverSchedules { get; set; }
        /// <summary>The interval between DR operations of different priorities</summary>
        long? PriorityIntervalInMinutes { get; set; }

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

        long? RecoveryTargetId { get; set; }

        string RecoveryTargetName { get; set; }
        /// <summary>List of all replication pairs that are part of the failover group</summary>
        Commvault.Powershell.Models.IFailoverGroupReplicationPair[] ReplicationPairs { get; set; }
        /// <summary>Pre/post failover and failback scripts at group level</summary>
        Commvault.Powershell.Models.IReplicationGroupScript Script { get; set; }
        /// <summary>Failover group type</summary>
        string Source { get; set; }
        /// <summary>The hypervisor client/client group information for failover groups</summary>
        Commvault.Powershell.Models.IFailoverGroupHypervisor SourceHypervisor { get; set; }
        /// <summary>The Id of client/client group</summary>
        long? SourceHypervisorId { get; set; }
        /// <summary>The name of the hypervisor client/client group</summary>
        string SourceHypervisorName { get; set; }
        /// <summary>The type of entity is used</summary>
        string SourceHypervisorType { get; set; }

        string SourceHypervisorVendor { get; set; }

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

        long? StoragePolicyId { get; set; }

        string StoragePolicyName { get; set; }

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

        long? SubclientId { get; set; }

        string SubclientName { get; set; }
        /// <summary>The list of all test boot schedules</summary>
        Commvault.Powershell.Models.IPlanSchedule[] TestBootSchedules { get; set; }
        /// <summary>Users to notify/for approval of DR operations</summary>
        Commvault.Powershell.Models.IIdNameDisplayNameCompany[] UsersToNotify { get; set; }

    }
}