/*
 * 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 globalaccelerator-2018-08-08.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.GlobalAccelerator.Model
{
    /// <summary>
    /// Container for the parameters to the UpdateAcceleratorAttributes operation.
    /// Update the attributes for an accelerator.
    /// </summary>
    public partial class UpdateAcceleratorAttributesRequest : AmazonGlobalAcceleratorRequest
    {
        private string _acceleratorArn;
        private bool? _flowLogsEnabled;
        private string _flowLogsS3Bucket;
        private string _flowLogsS3Prefix;

        /// <summary>
        /// Gets and sets the property AcceleratorArn. 
        /// <para>
        /// The Amazon Resource Name (ARN) of the accelerator that you want to update.
        /// </para>
        /// </summary>
        [AWSProperty(Required=true, Max=255)]
        public string AcceleratorArn
        {
            get { return this._acceleratorArn; }
            set { this._acceleratorArn = value; }
        }

        // Check to see if AcceleratorArn property is set
        internal bool IsSetAcceleratorArn()
        {
            return this._acceleratorArn != null;
        }

        /// <summary>
        /// Gets and sets the property FlowLogsEnabled. 
        /// <para>
        /// Update whether flow logs are enabled. The default value is false. If the value is
        /// true, <code>FlowLogsS3Bucket</code> and <code>FlowLogsS3Prefix</code> must be specified.
        /// </para>
        ///  
        /// <para>
        /// For more information, see <a href="https://docs.aws.amazon.com/global-accelerator/latest/dg/monitoring-global-accelerator.flow-logs.html">Flow
        /// Logs</a> in the <i>Global Accelerator Developer Guide</i>.
        /// </para>
        /// </summary>
        public bool FlowLogsEnabled
        {
            get { return this._flowLogsEnabled.GetValueOrDefault(); }
            set { this._flowLogsEnabled = value; }
        }

        // Check to see if FlowLogsEnabled property is set
        internal bool IsSetFlowLogsEnabled()
        {
            return this._flowLogsEnabled.HasValue; 
        }

        /// <summary>
        /// Gets and sets the property FlowLogsS3Bucket. 
        /// <para>
        /// The name of the Amazon S3 bucket for the flow logs. Attribute is required if <code>FlowLogsEnabled</code>
        /// is <code>true</code>. The bucket must exist and have a bucket policy that grants Global
        /// Accelerator permission to write to the bucket.
        /// </para>
        /// </summary>
        [AWSProperty(Max=255)]
        public string FlowLogsS3Bucket
        {
            get { return this._flowLogsS3Bucket; }
            set { this._flowLogsS3Bucket = value; }
        }

        // Check to see if FlowLogsS3Bucket property is set
        internal bool IsSetFlowLogsS3Bucket()
        {
            return this._flowLogsS3Bucket != null;
        }

        /// <summary>
        /// Gets and sets the property FlowLogsS3Prefix. 
        /// <para>
        /// Update the prefix for the location in the Amazon S3 bucket for the flow logs. Attribute
        /// is required if <code>FlowLogsEnabled</code> is <code>true</code>. 
        /// </para>
        ///  
        /// <para>
        /// If you specify slash (/) for the S3 bucket prefix, the log file bucket folder structure
        /// will include a double slash (//), like the following:
        /// </para>
        ///  
        /// <para>
        /// s3-bucket_name//AWSLogs/aws_account_id
        /// </para>
        /// </summary>
        [AWSProperty(Max=255)]
        public string FlowLogsS3Prefix
        {
            get { return this._flowLogsS3Prefix; }
            set { this._flowLogsS3Prefix = value; }
        }

        // Check to see if FlowLogsS3Prefix property is set
        internal bool IsSetFlowLogsS3Prefix()
        {
            return this._flowLogsS3Prefix != null;
        }

    }
}