/*
 * 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 redshift-2012-12-01.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.Redshift.Model
{
    /// 
    /// Container for the parameters to the GetReservedNodeExchangeConfigurationOptions operation.
    /// Gets the configuration options for the reserved-node exchange. These options include
    /// information about the source reserved node and target reserved node offering. Details
    /// include the node type, the price, the node count, and the offering type.
    /// 
    public partial class GetReservedNodeExchangeConfigurationOptionsRequest : AmazonRedshiftRequest
    {
        private ReservedNodeExchangeActionType _actionType;
        private string _clusterIdentifier;
        private string _marker;
        private int? _maxRecords;
        private string _snapshotIdentifier;
        /// 
        /// Gets and sets the property ActionType. 
        /// 
        /// The action type of the reserved-node configuration. The action type can be an exchange
        /// initiated from either a snapshot or a resize.
        /// 
        /// 
        [AWSProperty(Required=true)]
        public ReservedNodeExchangeActionType ActionType
        {
            get { return this._actionType; }
            set { this._actionType = value; }
        }
        // Check to see if ActionType property is set
        internal bool IsSetActionType()
        {
            return this._actionType != null;
        }
        /// 
        /// Gets and sets the property ClusterIdentifier. 
        /// 
        /// The identifier for the cluster that is the source for a reserved-node exchange.
        /// 
        /// 
        [AWSProperty(Max=2147483647)]
        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 Marker. 
        /// 
        /// An optional pagination token provided by a previous GetReservedNodeExchangeConfigurationOptions
        /// request. If this parameter is specified, the response includes only records beyond
        /// the marker, up to the value specified by the MaxRecords parameter. You
        /// can retrieve the next set of response records by providing the returned marker value
        /// in the Marker parameter and retrying the request.
        /// 
        /// 
        [AWSProperty(Max=2147483647)]
        public string Marker
        {
            get { return this._marker; }
            set { this._marker = value; }
        }
        // Check to see if Marker property is set
        internal bool IsSetMarker()
        {
            return this._marker != null;
        }
        /// 
        /// Gets and sets the property MaxRecords. 
        /// 
        /// The maximum number of response records to return in each call. If the number of remaining
        /// response records exceeds the specified MaxRecords value, a value is returned
        /// in a Marker field of the response. You can retrieve the next set of records
        /// by retrying the command with the returned marker value.
        /// 
        /// 
        public int MaxRecords
        {
            get { return this._maxRecords.GetValueOrDefault(); }
            set { this._maxRecords = value; }
        }
        // Check to see if MaxRecords property is set
        internal bool IsSetMaxRecords()
        {
            return this._maxRecords.HasValue; 
        }
        /// 
        /// Gets and sets the property SnapshotIdentifier. 
        /// 
        /// The identifier for the snapshot that is the source for the reserved-node exchange.
        /// 
        /// 
        [AWSProperty(Max=2147483647)]
        public string SnapshotIdentifier
        {
            get { return this._snapshotIdentifier; }
            set { this._snapshotIdentifier = value; }
        }
        // Check to see if SnapshotIdentifier property is set
        internal bool IsSetSnapshotIdentifier()
        {
            return this._snapshotIdentifier != null;
        }
    }
}