/*
 * 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 kendra-2019-02-03.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.Kendra.Model
{
    /// 
    /// Provides the configuration information to connect to Amazon FSx as your data source.
    /// 
    public partial class FsxConfiguration
    {
        private List _exclusionPatterns = new List();
        private List _fieldMappings = new List();
        private string _fileSystemId;
        private FsxFileSystemType _fileSystemType;
        private List _inclusionPatterns = new List();
        private string _secretArn;
        private DataSourceVpcConfiguration _vpcConfiguration;
        /// 
        /// Gets and sets the property ExclusionPatterns. 
        /// 
        /// A list of regular expression patterns to exclude certain files in your Amazon FSx
        /// file system. Files that match the patterns are excluded from the index. Files that
        /// don't match the patterns are included in the index. If a file matches both an inclusion
        /// and exclusion pattern, the exclusion pattern takes precedence and the file isn't included
        /// in the index.
        /// 
        /// 
        [AWSProperty(Min=0, Max=250)]
        public List ExclusionPatterns
        {
            get { return this._exclusionPatterns; }
            set { this._exclusionPatterns = value; }
        }
        // Check to see if ExclusionPatterns property is set
        internal bool IsSetExclusionPatterns()
        {
            return this._exclusionPatterns != null && this._exclusionPatterns.Count > 0; 
        }
        /// 
        /// Gets and sets the property FieldMappings. 
        /// 
        /// A list of DataSourceToIndexFieldMapping objects that map Amazon FSx data
        /// source attributes or field names to Amazon Kendra index field names. To create custom
        /// fields, use the UpdateIndex API before you map to Amazon FSx fields.
        /// For more information, see Mapping
        /// data source fields. The Amazon FSx data source field names must exist in your
        /// Amazon FSx custom metadata.
        /// 
        /// 
        [AWSProperty(Min=1, Max=100)]
        public List FieldMappings
        {
            get { return this._fieldMappings; }
            set { this._fieldMappings = value; }
        }
        // Check to see if FieldMappings property is set
        internal bool IsSetFieldMappings()
        {
            return this._fieldMappings != null && this._fieldMappings.Count > 0; 
        }
        /// 
        /// Gets and sets the property FileSystemId. 
        /// 
        /// The identifier of the Amazon FSx file system.
        /// 
        ///  
        /// 
        /// You can find your file system ID on the file system dashboard in the Amazon FSx console.
        /// For information on how to create a file system in Amazon FSx console, using Windows
        /// File Server as an example, see Amazon
        /// FSx Getting started guide.
        /// 
        /// 
        [AWSProperty(Required=true, Min=11, Max=21)]
        public string FileSystemId
        {
            get { return this._fileSystemId; }
            set { this._fileSystemId = value; }
        }
        // Check to see if FileSystemId property is set
        internal bool IsSetFileSystemId()
        {
            return this._fileSystemId != null;
        }
        /// 
        /// Gets and sets the property FileSystemType. 
        /// 
        /// The Amazon FSx file system type. Windows is currently the only supported type.
        /// 
        /// 
        [AWSProperty(Required=true)]
        public FsxFileSystemType FileSystemType
        {
            get { return this._fileSystemType; }
            set { this._fileSystemType = value; }
        }
        // Check to see if FileSystemType property is set
        internal bool IsSetFileSystemType()
        {
            return this._fileSystemType != null;
        }
        /// 
        /// Gets and sets the property InclusionPatterns. 
        /// 
        /// A list of regular expression patterns to include certain files in your Amazon FSx
        /// file system. Files that match the patterns are included in the index. Files that don't
        /// match the patterns are excluded from the index. If a file matches both an inclusion
        /// and exclusion pattern, the exclusion pattern takes precedence and the file isn't included
        /// in the index.
        /// 
        /// 
        [AWSProperty(Min=0, Max=250)]
        public List InclusionPatterns
        {
            get { return this._inclusionPatterns; }
            set { this._inclusionPatterns = value; }
        }
        // Check to see if InclusionPatterns property is set
        internal bool IsSetInclusionPatterns()
        {
            return this._inclusionPatterns != null && this._inclusionPatterns.Count > 0; 
        }
        /// 
        /// Gets and sets the property SecretArn. 
        /// 
        /// The Amazon Resource Name (ARN) of an Secrets Manager secret that contains the key-value
        /// pairs required to connect to your Amazon FSx file system. Windows is currently the
        /// only supported type. The secret must contain a JSON structure with the following keys:
        /// 
        ///   -  
        /// 
        /// username—The Active Directory user name, along with the Domain Name System (DNS) domain
        /// name. For example, user@corp.example.com. The Active Directory user account
        /// must have read and mounting access to the Amazon FSx file system for Windows.
        /// 
        ///  
  -  
        /// 
        /// password—The password of the Active Directory user account with read and mounting
        /// access to the Amazon FSx Windows file system.
        /// 
        ///  
  
        /// 
        [AWSProperty(Min=1, Max=1284)]
        public string SecretArn
        {
            get { return this._secretArn; }
            set { this._secretArn = value; }
        }
        // Check to see if SecretArn property is set
        internal bool IsSetSecretArn()
        {
            return this._secretArn != null;
        }
        /// 
        /// Gets and sets the property VpcConfiguration. 
        /// 
        /// Configuration information for an Amazon Virtual Private Cloud to connect to your Amazon
        /// FSx. Your Amazon FSx instance must reside inside your VPC.
        /// 
        /// 
        [AWSProperty(Required=true)]
        public DataSourceVpcConfiguration VpcConfiguration
        {
            get { return this._vpcConfiguration; }
            set { this._vpcConfiguration = value; }
        }
        // Check to see if VpcConfiguration property is set
        internal bool IsSetVpcConfiguration()
        {
            return this._vpcConfiguration != null;
        }
    }
}