/*
 * Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
 * 
 * Licensed under the Apache License, Version 2.0 (the "License").
 * You may not use this file except in compliance with the License.
 * A copy of the License is located at
 * 
 *  http://aws.amazon.com/apache2.0
 * 
 * or in the "license" file accompanying this file. This file is distributed
 * on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either
 * express or implied. See the License for the specific language governing
 * permissions and limitations under the License.
 */
/*
 * Do not modify this file. This file is generated from the securityhub-2018-10-26.normal.json service model.
 */
using System;
using System.Collections.Generic;
using System.Xml.Serialization;
using System.Text;
using System.IO;
using System.Net;
using Amazon.Runtime;
using Amazon.Runtime.Internal;
namespace Amazon.SecurityHub.Model
{
    /// 
    /// Details about an Amazon Redshift cluster.
    /// 
    public partial class AwsRedshiftClusterDetails
    {
        private bool? _allowVersionUpgrade;
        private int? _automatedSnapshotRetentionPeriod;
        private string _availabilityZone;
        private string _clusterAvailabilityStatus;
        private string _clusterCreateTime;
        private string _clusterIdentifier;
        private List _clusterNodes = new List();
        private List _clusterParameterGroups = new List();
        private string _clusterPublicKey;
        private string _clusterRevisionNumber;
        private List _clusterSecurityGroups = new List();
        private AwsRedshiftClusterClusterSnapshotCopyStatus _clusterSnapshotCopyStatus;
        private string _clusterStatus;
        private string _clusterSubnetGroupName;
        private string _clusterVersion;
        private string _dbName;
        private List _deferredMaintenanceWindows = new List();
        private AwsRedshiftClusterElasticIpStatus _elasticIpStatus;
        private string _elasticResizeNumberOfNodeOptions;
        private bool? _encrypted;
        private AwsRedshiftClusterEndpoint _endpoint;
        private bool? _enhancedVpcRouting;
        private string _expectedNextSnapshotScheduleTime;
        private string _expectedNextSnapshotScheduleTimeStatus;
        private AwsRedshiftClusterHsmStatus _hsmStatus;
        private List _iamRoles = new List();
        private string _kmsKeyId;
        private AwsRedshiftClusterLoggingStatus _loggingStatus;
        private string _maintenanceTrackName;
        private int? _manualSnapshotRetentionPeriod;
        private string _masterUsername;
        private string _nextMaintenanceWindowStartTime;
        private string _nodeType;
        private int? _numberOfNodes;
        private List _pendingActions = new List();
        private AwsRedshiftClusterPendingModifiedValues _pendingModifiedValues;
        private string _preferredMaintenanceWindow;
        private bool? _publiclyAccessible;
        private AwsRedshiftClusterResizeInfo _resizeInfo;
        private AwsRedshiftClusterRestoreStatus _restoreStatus;
        private string _snapshotScheduleIdentifier;
        private string _snapshotScheduleState;
        private string _vpcId;
        private List _vpcSecurityGroups = new List();
        /// 
        /// Gets and sets the property AllowVersionUpgrade. 
        /// 
        /// Indicates whether major version upgrades are applied automatically to the cluster
        /// during the maintenance window.
        /// 
        /// 
        public bool AllowVersionUpgrade
        {
            get { return this._allowVersionUpgrade.GetValueOrDefault(); }
            set { this._allowVersionUpgrade = value; }
        }
        // Check to see if AllowVersionUpgrade property is set
        internal bool IsSetAllowVersionUpgrade()
        {
            return this._allowVersionUpgrade.HasValue; 
        }
        /// 
        /// Gets and sets the property AutomatedSnapshotRetentionPeriod. 
        /// 
        /// The number of days that automatic cluster snapshots are retained.
        /// 
        /// 
        public int AutomatedSnapshotRetentionPeriod
        {
            get { return this._automatedSnapshotRetentionPeriod.GetValueOrDefault(); }
            set { this._automatedSnapshotRetentionPeriod = value; }
        }
        // Check to see if AutomatedSnapshotRetentionPeriod property is set
        internal bool IsSetAutomatedSnapshotRetentionPeriod()
        {
            return this._automatedSnapshotRetentionPeriod.HasValue; 
        }
        /// 
        /// Gets and sets the property AvailabilityZone. 
        /// 
        /// The name of the Availability Zone in which the cluster is located.
        /// 
        /// 
        public string AvailabilityZone
        {
            get { return this._availabilityZone; }
            set { this._availabilityZone = value; }
        }
        // Check to see if AvailabilityZone property is set
        internal bool IsSetAvailabilityZone()
        {
            return this._availabilityZone != null;
        }
        /// 
        /// Gets and sets the property ClusterAvailabilityStatus. 
        /// 
        /// The availability status of the cluster for queries. Possible values are the following:
        /// 
        ///   -  
        /// 
        ///  
Available - The cluster is available for queries.
        /// 
        ///    -  
        /// 
        ///  
Unavailable - The cluster is not available for queries.
        /// 
        ///    -  
        /// 
        ///  
Maintenance - The cluster is intermittently available for queries due
        /// to maintenance activities.
        /// 
        ///    -  
        /// 
        ///  
Modifying -The cluster is intermittently available for queries due to
        /// changes that modify the cluster.
        /// 
        ///    -  
        /// 
        ///  
Failed - The cluster failed and is not available for queries.
        /// 
        ///    
        /// 
        public string ClusterAvailabilityStatus
        {
            get { return this._clusterAvailabilityStatus; }
            set { this._clusterAvailabilityStatus = value; }
        }
        // Check to see if ClusterAvailabilityStatus property is set
        internal bool IsSetClusterAvailabilityStatus()
        {
            return this._clusterAvailabilityStatus != null;
        }
        /// 
        /// Gets and sets the property ClusterCreateTime. 
        /// 
        /// Indicates when the cluster was created.
        /// 
        ///  
        /// 
        /// Uses the date-time format specified in RFC
        /// 3339 section 5.6, Internet Date/Time Format. The value cannot contain spaces,
        /// and date and time should be separated by T. For example, 2020-03-22T13:22:13.933Z.
        /// 
        /// 
        public string ClusterCreateTime
        {
            get { return this._clusterCreateTime; }
            set { this._clusterCreateTime = value; }
        }
        // Check to see if ClusterCreateTime property is set
        internal bool IsSetClusterCreateTime()
        {
            return this._clusterCreateTime != null;
        }
        /// 
        /// Gets and sets the property ClusterIdentifier. 
        /// 
        /// The unique identifier of the cluster.
        /// 
        /// 
        public string ClusterIdentifier
        {
            get { return this._clusterIdentifier; }
            set { this._clusterIdentifier = value; }
        }
        // Check to see if ClusterIdentifier property is set
        internal bool IsSetClusterIdentifier()
        {
            return this._clusterIdentifier != null;
        }
        /// 
        /// Gets and sets the property ClusterNodes. 
        /// 
        /// The nodes in the cluster.
        /// 
        /// 
        public List ClusterNodes
        {
            get { return this._clusterNodes; }
            set { this._clusterNodes = value; }
        }
        // Check to see if ClusterNodes property is set
        internal bool IsSetClusterNodes()
        {
            return this._clusterNodes != null && this._clusterNodes.Count > 0; 
        }
        /// 
        /// Gets and sets the property ClusterParameterGroups. 
        /// 
        /// The list of cluster parameter groups that are associated with this cluster.
        /// 
        /// 
        public List ClusterParameterGroups
        {
            get { return this._clusterParameterGroups; }
            set { this._clusterParameterGroups = value; }
        }
        // Check to see if ClusterParameterGroups property is set
        internal bool IsSetClusterParameterGroups()
        {
            return this._clusterParameterGroups != null && this._clusterParameterGroups.Count > 0; 
        }
        /// 
        /// Gets and sets the property ClusterPublicKey. 
        /// 
        /// The public key for the cluster.
        /// 
        /// 
        public string ClusterPublicKey
        {
            get { return this._clusterPublicKey; }
            set { this._clusterPublicKey = value; }
        }
        // Check to see if ClusterPublicKey property is set
        internal bool IsSetClusterPublicKey()
        {
            return this._clusterPublicKey != null;
        }
        /// 
        /// Gets and sets the property ClusterRevisionNumber. 
        /// 
        /// The specific revision number of the database in the cluster.
        /// 
        /// 
        public string ClusterRevisionNumber
        {
            get { return this._clusterRevisionNumber; }
            set { this._clusterRevisionNumber = value; }
        }
        // Check to see if ClusterRevisionNumber property is set
        internal bool IsSetClusterRevisionNumber()
        {
            return this._clusterRevisionNumber != null;
        }
        /// 
        /// Gets and sets the property ClusterSecurityGroups. 
        /// 
        /// A list of cluster security groups that are associated with the cluster.
        /// 
        /// 
        public List ClusterSecurityGroups
        {
            get { return this._clusterSecurityGroups; }
            set { this._clusterSecurityGroups = value; }
        }
        // Check to see if ClusterSecurityGroups property is set
        internal bool IsSetClusterSecurityGroups()
        {
            return this._clusterSecurityGroups != null && this._clusterSecurityGroups.Count > 0; 
        }
        /// 
        /// Gets and sets the property ClusterSnapshotCopyStatus. 
        /// 
        /// Information about the destination Region and retention period for the cross-Region
        /// snapshot copy.
        /// 
        /// 
        public AwsRedshiftClusterClusterSnapshotCopyStatus ClusterSnapshotCopyStatus
        {
            get { return this._clusterSnapshotCopyStatus; }
            set { this._clusterSnapshotCopyStatus = value; }
        }
        // Check to see if ClusterSnapshotCopyStatus property is set
        internal bool IsSetClusterSnapshotCopyStatus()
        {
            return this._clusterSnapshotCopyStatus != null;
        }
        /// 
        /// Gets and sets the property ClusterStatus. 
        /// 
        /// The current status of the cluster.
        /// 
        ///  
        /// 
        /// Valid values: available | available, prep-for-resize | available,
        /// resize-cleanup | cancelling-resize | creating | deleting
        /// | final-snapshot | hardware-failure | incompatible-hsm
        /// | incompatible-network | incompatible-parameters | incompatible-restore
        /// | modifying | paused | rebooting | renaming
        /// | resizing | rotating-keys | storage-full |
        /// updating-hsm 
        /// 
        /// 
        public string ClusterStatus
        {
            get { return this._clusterStatus; }
            set { this._clusterStatus = value; }
        }
        // Check to see if ClusterStatus property is set
        internal bool IsSetClusterStatus()
        {
            return this._clusterStatus != null;
        }
        /// 
        /// Gets and sets the property ClusterSubnetGroupName. 
        /// 
        /// The name of the subnet group that is associated with the cluster. This parameter is
        /// valid only when the cluster is in a VPC.
        /// 
        /// 
        public string ClusterSubnetGroupName
        {
            get { return this._clusterSubnetGroupName; }
            set { this._clusterSubnetGroupName = value; }
        }
        // Check to see if ClusterSubnetGroupName property is set
        internal bool IsSetClusterSubnetGroupName()
        {
            return this._clusterSubnetGroupName != null;
        }
        /// 
        /// Gets and sets the property ClusterVersion. 
        /// 
        /// The version ID of the Amazon Redshift engine that runs on the cluster.
        /// 
        /// 
        public string ClusterVersion
        {
            get { return this._clusterVersion; }
            set { this._clusterVersion = value; }
        }
        // Check to see if ClusterVersion property is set
        internal bool IsSetClusterVersion()
        {
            return this._clusterVersion != null;
        }
        /// 
        /// Gets and sets the property DBName. 
        /// 
        /// The name of the initial database that was created when the cluster was created.
        /// 
        ///  
        /// 
        /// The same name is returned for the life of the cluster.
        /// 
        ///  
        /// 
        /// If an initial database is not specified, a database named devdev is created
        /// by default.
        /// 
        /// 
        public string DBName
        {
            get { return this._dbName; }
            set { this._dbName = value; }
        }
        // Check to see if DBName property is set
        internal bool IsSetDBName()
        {
            return this._dbName != null;
        }
        /// 
        /// Gets and sets the property DeferredMaintenanceWindows. 
        /// 
        /// List of time windows during which maintenance was deferred.
        /// 
        /// 
        public List DeferredMaintenanceWindows
        {
            get { return this._deferredMaintenanceWindows; }
            set { this._deferredMaintenanceWindows = value; }
        }
        // Check to see if DeferredMaintenanceWindows property is set
        internal bool IsSetDeferredMaintenanceWindows()
        {
            return this._deferredMaintenanceWindows != null && this._deferredMaintenanceWindows.Count > 0; 
        }
        /// 
        /// Gets and sets the property ElasticIpStatus. 
        /// 
        /// Information about the status of the Elastic IP (EIP) address.
        /// 
        /// 
        public AwsRedshiftClusterElasticIpStatus ElasticIpStatus
        {
            get { return this._elasticIpStatus; }
            set { this._elasticIpStatus = value; }
        }
        // Check to see if ElasticIpStatus property is set
        internal bool IsSetElasticIpStatus()
        {
            return this._elasticIpStatus != null;
        }
        /// 
        /// Gets and sets the property ElasticResizeNumberOfNodeOptions. 
        /// 
        /// The number of nodes that you can use the elastic resize method to resize the cluster
        /// to.
        /// 
        /// 
        public string ElasticResizeNumberOfNodeOptions
        {
            get { return this._elasticResizeNumberOfNodeOptions; }
            set { this._elasticResizeNumberOfNodeOptions = value; }
        }
        // Check to see if ElasticResizeNumberOfNodeOptions property is set
        internal bool IsSetElasticResizeNumberOfNodeOptions()
        {
            return this._elasticResizeNumberOfNodeOptions != null;
        }
        /// 
        /// Gets and sets the property Encrypted. 
        /// 
        /// Indicates whether the data in the cluster is encrypted at rest.
        /// 
        /// 
        public bool Encrypted
        {
            get { return this._encrypted.GetValueOrDefault(); }
            set { this._encrypted = value; }
        }
        // Check to see if Encrypted property is set
        internal bool IsSetEncrypted()
        {
            return this._encrypted.HasValue; 
        }
        /// 
        /// Gets and sets the property Endpoint. 
        /// 
        /// The connection endpoint.
        /// 
        /// 
        public AwsRedshiftClusterEndpoint Endpoint
        {
            get { return this._endpoint; }
            set { this._endpoint = value; }
        }
        // Check to see if Endpoint property is set
        internal bool IsSetEndpoint()
        {
            return this._endpoint != null;
        }
        /// 
        /// Gets and sets the property EnhancedVpcRouting. 
        /// 
        /// Indicates whether to create the cluster with enhanced VPC routing enabled.
        /// 
        /// 
        public bool EnhancedVpcRouting
        {
            get { return this._enhancedVpcRouting.GetValueOrDefault(); }
            set { this._enhancedVpcRouting = value; }
        }
        // Check to see if EnhancedVpcRouting property is set
        internal bool IsSetEnhancedVpcRouting()
        {
            return this._enhancedVpcRouting.HasValue; 
        }
        /// 
        /// Gets and sets the property ExpectedNextSnapshotScheduleTime. 
        /// 
        /// Indicates when the next snapshot is expected to be taken. The cluster must have a
        /// valid snapshot schedule and have backups enabled.
        /// 
        ///  
        /// 
        /// Uses the date-time format specified in RFC
        /// 3339 section 5.6, Internet Date/Time Format. The value cannot contain spaces,
        /// and date and time should be separated by T. For example, 2020-03-22T13:22:13.933Z.
        /// 
        /// 
        public string ExpectedNextSnapshotScheduleTime
        {
            get { return this._expectedNextSnapshotScheduleTime; }
            set { this._expectedNextSnapshotScheduleTime = value; }
        }
        // Check to see if ExpectedNextSnapshotScheduleTime property is set
        internal bool IsSetExpectedNextSnapshotScheduleTime()
        {
            return this._expectedNextSnapshotScheduleTime != null;
        }
        /// 
        /// Gets and sets the property ExpectedNextSnapshotScheduleTimeStatus. 
        /// 
        /// The status of the next expected snapshot.
        /// 
        ///  
        /// 
        /// Valid values: OnTrack | Pending 
        /// 
        /// 
        public string ExpectedNextSnapshotScheduleTimeStatus
        {
            get { return this._expectedNextSnapshotScheduleTimeStatus; }
            set { this._expectedNextSnapshotScheduleTimeStatus = value; }
        }
        // Check to see if ExpectedNextSnapshotScheduleTimeStatus property is set
        internal bool IsSetExpectedNextSnapshotScheduleTimeStatus()
        {
            return this._expectedNextSnapshotScheduleTimeStatus != null;
        }
        /// 
        /// Gets and sets the property HsmStatus. 
        /// 
        /// Information about whether the Amazon Redshift cluster finished applying any changes
        /// to hardware security module (HSM) settings that were specified in a modify cluster
        /// command.
        /// 
        /// 
        public AwsRedshiftClusterHsmStatus HsmStatus
        {
            get { return this._hsmStatus; }
            set { this._hsmStatus = value; }
        }
        // Check to see if HsmStatus property is set
        internal bool IsSetHsmStatus()
        {
            return this._hsmStatus != null;
        }
        /// 
        /// Gets and sets the property IamRoles. 
        /// 
        /// A list of IAM roles that the cluster can use to access other Amazon Web Services services.
        /// 
        /// 
        public List IamRoles
        {
            get { return this._iamRoles; }
            set { this._iamRoles = value; }
        }
        // Check to see if IamRoles property is set
        internal bool IsSetIamRoles()
        {
            return this._iamRoles != null && this._iamRoles.Count > 0; 
        }
        /// 
        /// Gets and sets the property KmsKeyId. 
        /// 
        /// The identifier of the KMS encryption key that is used to encrypt data in the cluster.
        /// 
        /// 
        public string KmsKeyId
        {
            get { return this._kmsKeyId; }
            set { this._kmsKeyId = value; }
        }
        // Check to see if KmsKeyId property is set
        internal bool IsSetKmsKeyId()
        {
            return this._kmsKeyId != null;
        }
        /// 
        /// Gets and sets the property LoggingStatus. 
        /// 
        /// Information about the logging status of the cluster.
        /// 
        /// 
        public AwsRedshiftClusterLoggingStatus LoggingStatus
        {
            get { return this._loggingStatus; }
            set { this._loggingStatus = value; }
        }
        // Check to see if LoggingStatus property is set
        internal bool IsSetLoggingStatus()
        {
            return this._loggingStatus != null;
        }
        /// 
        /// Gets and sets the property MaintenanceTrackName. 
        /// 
        /// The name of the maintenance track for the cluster.
        /// 
        /// 
        public string MaintenanceTrackName
        {
            get { return this._maintenanceTrackName; }
            set { this._maintenanceTrackName = value; }
        }
        // Check to see if MaintenanceTrackName property is set
        internal bool IsSetMaintenanceTrackName()
        {
            return this._maintenanceTrackName != null;
        }
        /// 
        /// Gets and sets the property ManualSnapshotRetentionPeriod. 
        /// 
        /// The default number of days to retain a manual snapshot.
        /// 
        ///  
        /// 
        /// If the value is -1, the snapshot is retained indefinitely.
        /// 
        ///  
        /// 
        /// This setting doesn't change the retention period of existing snapshots.
        /// 
        ///  
        /// 
        /// Valid values: Either -1 or an integer between 1 and 3,653
        /// 
        /// 
        public int ManualSnapshotRetentionPeriod
        {
            get { return this._manualSnapshotRetentionPeriod.GetValueOrDefault(); }
            set { this._manualSnapshotRetentionPeriod = value; }
        }
        // Check to see if ManualSnapshotRetentionPeriod property is set
        internal bool IsSetManualSnapshotRetentionPeriod()
        {
            return this._manualSnapshotRetentionPeriod.HasValue; 
        }
        /// 
        /// Gets and sets the property MasterUsername. 
        /// 
        /// The master user name for the cluster. This name is used to connect to the database
        /// that is specified in as the value of DBName.
        /// 
        /// 
        public string MasterUsername
        {
            get { return this._masterUsername; }
            set { this._masterUsername = value; }
        }
        // Check to see if MasterUsername property is set
        internal bool IsSetMasterUsername()
        {
            return this._masterUsername != null;
        }
        /// 
        /// Gets and sets the property NextMaintenanceWindowStartTime. 
        /// 
        /// Indicates the start of the next maintenance window.
        /// 
        ///  
        /// 
        /// Uses the date-time format specified in RFC
        /// 3339 section 5.6, Internet Date/Time Format. The value cannot contain spaces,
        /// and date and time should be separated by T. For example, 2020-03-22T13:22:13.933Z.
        /// 
        /// 
        public string NextMaintenanceWindowStartTime
        {
            get { return this._nextMaintenanceWindowStartTime; }
            set { this._nextMaintenanceWindowStartTime = value; }
        }
        // Check to see if NextMaintenanceWindowStartTime property is set
        internal bool IsSetNextMaintenanceWindowStartTime()
        {
            return this._nextMaintenanceWindowStartTime != null;
        }
        /// 
        /// Gets and sets the property NodeType. 
        /// 
        /// The node type for the nodes in the cluster.
        /// 
        /// 
        public string NodeType
        {
            get { return this._nodeType; }
            set { this._nodeType = value; }
        }
        // Check to see if NodeType property is set
        internal bool IsSetNodeType()
        {
            return this._nodeType != null;
        }
        /// 
        /// Gets and sets the property NumberOfNodes. 
        /// 
        /// The number of compute nodes in the cluster.
        /// 
        /// 
        public int NumberOfNodes
        {
            get { return this._numberOfNodes.GetValueOrDefault(); }
            set { this._numberOfNodes = value; }
        }
        // Check to see if NumberOfNodes property is set
        internal bool IsSetNumberOfNodes()
        {
            return this._numberOfNodes.HasValue; 
        }
        /// 
        /// Gets and sets the property PendingActions. 
        /// 
        /// A list of cluster operations that are waiting to start.
        /// 
        /// 
        public List PendingActions
        {
            get { return this._pendingActions; }
            set { this._pendingActions = value; }
        }
        // Check to see if PendingActions property is set
        internal bool IsSetPendingActions()
        {
            return this._pendingActions != null && this._pendingActions.Count > 0; 
        }
        /// 
        /// Gets and sets the property PendingModifiedValues. 
        /// 
        /// A list of changes to the cluster that are currently pending.
        /// 
        /// 
        public AwsRedshiftClusterPendingModifiedValues PendingModifiedValues
        {
            get { return this._pendingModifiedValues; }
            set { this._pendingModifiedValues = value; }
        }
        // Check to see if PendingModifiedValues property is set
        internal bool IsSetPendingModifiedValues()
        {
            return this._pendingModifiedValues != null;
        }
        /// 
        /// Gets and sets the property PreferredMaintenanceWindow. 
        /// 
        /// The weekly time range, in Universal Coordinated Time (UTC), during which system maintenance
        /// can occur.
        /// 
        ///  
        /// 
        /// Format:  <day>:HH:MM-<day>:HH:MM 
        /// 
        ///  
        /// 
        /// For the day values, use mon | tue | wed | thu
        /// | fri | sat | sun 
        /// 
        ///  
        /// 
        /// For example, sun:09:32-sun:10:02 
        /// 
        /// 
        public string PreferredMaintenanceWindow
        {
            get { return this._preferredMaintenanceWindow; }
            set { this._preferredMaintenanceWindow = value; }
        }
        // Check to see if PreferredMaintenanceWindow property is set
        internal bool IsSetPreferredMaintenanceWindow()
        {
            return this._preferredMaintenanceWindow != null;
        }
        /// 
        /// Gets and sets the property PubliclyAccessible. 
        /// 
        /// Whether the cluster can be accessed from a public network.
        /// 
        /// 
        public bool PubliclyAccessible
        {
            get { return this._publiclyAccessible.GetValueOrDefault(); }
            set { this._publiclyAccessible = value; }
        }
        // Check to see if PubliclyAccessible property is set
        internal bool IsSetPubliclyAccessible()
        {
            return this._publiclyAccessible.HasValue; 
        }
        /// 
        /// Gets and sets the property ResizeInfo. 
        /// 
        /// Information about the resize operation for the cluster.
        /// 
        /// 
        public AwsRedshiftClusterResizeInfo ResizeInfo
        {
            get { return this._resizeInfo; }
            set { this._resizeInfo = value; }
        }
        // Check to see if ResizeInfo property is set
        internal bool IsSetResizeInfo()
        {
            return this._resizeInfo != null;
        }
        /// 
        /// Gets and sets the property RestoreStatus. 
        /// 
        /// Information about the status of a cluster restore action. Only applies to a cluster
        /// that was created by restoring a snapshot.
        /// 
        /// 
        public AwsRedshiftClusterRestoreStatus RestoreStatus
        {
            get { return this._restoreStatus; }
            set { this._restoreStatus = value; }
        }
        // Check to see if RestoreStatus property is set
        internal bool IsSetRestoreStatus()
        {
            return this._restoreStatus != null;
        }
        /// 
        /// Gets and sets the property SnapshotScheduleIdentifier. 
        /// 
        /// A unique identifier for the cluster snapshot schedule.
        /// 
        /// 
        public string SnapshotScheduleIdentifier
        {
            get { return this._snapshotScheduleIdentifier; }
            set { this._snapshotScheduleIdentifier = value; }
        }
        // Check to see if SnapshotScheduleIdentifier property is set
        internal bool IsSetSnapshotScheduleIdentifier()
        {
            return this._snapshotScheduleIdentifier != null;
        }
        /// 
        /// Gets and sets the property SnapshotScheduleState. 
        /// 
        /// The current state of the cluster snapshot schedule.
        /// 
        ///  
        /// 
        /// Valid values: MODIFYING | ACTIVE | FAILED 
        /// 
        /// 
        public string SnapshotScheduleState
        {
            get { return this._snapshotScheduleState; }
            set { this._snapshotScheduleState = value; }
        }
        // Check to see if SnapshotScheduleState property is set
        internal bool IsSetSnapshotScheduleState()
        {
            return this._snapshotScheduleState != null;
        }
        /// 
        /// Gets and sets the property VpcId. 
        /// 
        /// The identifier of the VPC that the cluster is in, if the cluster is in a VPC.
        /// 
        /// 
        public string VpcId
        {
            get { return this._vpcId; }
            set { this._vpcId = value; }
        }
        // Check to see if VpcId property is set
        internal bool IsSetVpcId()
        {
            return this._vpcId != null;
        }
        /// 
        /// Gets and sets the property VpcSecurityGroups. 
        /// 
        /// The list of VPC security groups that the cluster belongs to, if the cluster is in
        /// a VPC.
        /// 
        /// 
        public List VpcSecurityGroups
        {
            get { return this._vpcSecurityGroups; }
            set { this._vpcSecurityGroups = value; }
        }
        // Check to see if VpcSecurityGroups property is set
        internal bool IsSetVpcSecurityGroups()
        {
            return this._vpcSecurityGroups != null && this._vpcSecurityGroups.Count > 0; 
        }
    }
}