/*
 * 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 fsx-2018-03-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.FSx.Model
{
    /// 
    /// The Lustre logging configuration used when creating or updating an Amazon FSx for
    /// Lustre file system. An Amazon File Cache is created with Lustre logging enabled by
    /// default, with a setting of WARN_ERROR for the logging events. which can't
    /// be changed.
    /// 
    ///  
    /// 
    /// Lustre logging writes the enabled logging events for your file system or cache to
    /// Amazon CloudWatch Logs.
    /// 
    /// 
    public partial class LustreLogCreateConfiguration
    {
        private string _destination;
        private LustreAccessAuditLogLevel _level;
        /// 
        /// Gets and sets the property Destination. 
        /// 
        /// The Amazon Resource Name (ARN) that specifies the destination of the logs.
        /// 
        ///  
        /// 
        /// The destination can be any Amazon CloudWatch Logs log group ARN, with the following
        /// requirements:
        /// 
        ///   -  
        /// 
        /// The destination ARN that you provide must be in the same Amazon Web Services partition,
        /// Amazon Web Services Region, and Amazon Web Services account as your Amazon FSx file
        /// system.
        /// 
        ///  
-  
        /// 
        /// The name of the Amazon CloudWatch Logs log group must begin with the /aws/fsx/// prefix.
        /// 
        ///
-  
        /// 
        /// If you do not provide a destination, Amazon FSx will create and use a log stream in
        /// the CloudWatch Logs /aws/fsx/lustrelog group (for Amazon FSx for Lustre)
        /// or/aws/fsx/filecache(for Amazon File Cache).
        /// 
        ///
-  
        /// 
        /// If Destinationis provided and the resource does not exist, the request
        /// will fail with aBadRequesterror.
        /// 
        ///
-  
        /// 
        /// If Levelis set toDISABLED, you cannot specify a destination
        /// inDestination.
        /// 
        ///
/// 
        [AWSProperty(Min=8, Max=1024)]
        public string Destination
        {
            get { return this._destination; }
            set { this._destination = value; }
        }
        // Check to see if Destination property is set
        internal bool IsSetDestination()
        {
            return this._destination != null;
        }
        /// 
        /// Gets and sets the property Level. 
        /// 
        /// Sets which data repository events are logged by Amazon FSx.
        /// 
        /// -  
        /// 
        ///  WARN_ONLY- only warning events are logged.
        /// 
        ///
-  
        /// 
        ///  ERROR_ONLY- only error events are logged.
        /// 
        ///
-  
        /// 
        ///  WARN_ERROR- both warning events and error events are logged.
        /// 
        ///
-  
        /// 
        ///  DISABLED- logging of data repository events is turned off.
        /// 
        ///
/// 
        [AWSProperty(Required=true)]
        public LustreAccessAuditLogLevel Level
        {
            get { return this._level; }
            set { this._level = value; }
        }
        // Check to see if Level property is set
        internal bool IsSetLevel()
        {
            return this._level != null;
        }
    }
}