/*
 * 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
{
    /// 
    /// Provides details about an Amazon SageMaker notebook instance.
    /// 
    public partial class AwsSageMakerNotebookInstanceDetails
    {
        private List _acceleratorTypes = new List();
        private List _additionalCodeRepositories = new List();
        private string _defaultCodeRepository;
        private string _directInternetAccess;
        private string _failureReason;
        private AwsSageMakerNotebookInstanceMetadataServiceConfigurationDetails _instanceMetadataServiceConfiguration;
        private string _instanceType;
        private string _kmsKeyId;
        private string _networkInterfaceId;
        private string _notebookInstanceArn;
        private string _notebookInstanceLifecycleConfigName;
        private string _notebookInstanceName;
        private string _notebookInstanceStatus;
        private string _platformIdentifier;
        private string _roleArn;
        private string _rootAccess;
        private List _securityGroups = new List();
        private string _subnetId;
        private string _url;
        private int? _volumeSizeInGB;
        /// 
        /// Gets and sets the property AcceleratorTypes. 
        /// 
        ///  A list of Amazon Elastic Inference instance types to associate with the notebook
        /// instance. Currently, only one instance type can be associated with a notebook instance.
        /// 
        /// 
        /// 
        public List AcceleratorTypes
        {
            get { return this._acceleratorTypes; }
            set { this._acceleratorTypes = value; }
        }
        // Check to see if AcceleratorTypes property is set
        internal bool IsSetAcceleratorTypes()
        {
            return this._acceleratorTypes != null && this._acceleratorTypes.Count > 0; 
        }
        /// 
        /// Gets and sets the property AdditionalCodeRepositories. 
        /// 
        ///  An array of up to three Git repositories associated with the notebook instance. These
        /// can be either the names of Git repositories stored as resources in your account, or
        /// the URL of Git repositories in CodeCommit
        /// or in any other Git repository. These repositories are cloned at the same level as
        /// the default repository of your notebook instance. For more information, see Associating
        /// Git repositories with SageMaker notebook instances in the Amazon SageMaker
        /// Developer Guide. 
        /// 
        /// 
        public List AdditionalCodeRepositories
        {
            get { return this._additionalCodeRepositories; }
            set { this._additionalCodeRepositories = value; }
        }
        // Check to see if AdditionalCodeRepositories property is set
        internal bool IsSetAdditionalCodeRepositories()
        {
            return this._additionalCodeRepositories != null && this._additionalCodeRepositories.Count > 0; 
        }
        /// 
        /// Gets and sets the property DefaultCodeRepository. 
        /// 
        ///  The Git repository associated with the notebook instance as its default code repository.
        /// This can be either the name of a Git repository stored as a resource in your account,
        /// or the URL of a Git repository in CodeCommit
        /// or in any other Git repository. When you open a notebook instance, it opens in the
        /// directory that contains this repository. For more information, see Associating
        /// Git repositories with SageMaker notebook instances in the Amazon SageMaker
        /// Developer Guide. 
        /// 
        /// 
        public string DefaultCodeRepository
        {
            get { return this._defaultCodeRepository; }
            set { this._defaultCodeRepository = value; }
        }
        // Check to see if DefaultCodeRepository property is set
        internal bool IsSetDefaultCodeRepository()
        {
            return this._defaultCodeRepository != null;
        }
        /// 
        /// Gets and sets the property DirectInternetAccess. 
        /// 
        ///  Sets whether SageMaker provides internet access to the notebook instance. If you
        /// set this to Disabled, this notebook instance is able to access resources
        /// only in your VPC, and is not be able to connect to SageMaker training and endpoint
        /// services unless you configure a Network Address Translation (NAT) Gateway in your
        /// VPC. 
        /// 
        /// 
        public string DirectInternetAccess
        {
            get { return this._directInternetAccess; }
            set { this._directInternetAccess = value; }
        }
        // Check to see if DirectInternetAccess property is set
        internal bool IsSetDirectInternetAccess()
        {
            return this._directInternetAccess != null;
        }
        /// 
        /// Gets and sets the property FailureReason. 
        /// 
        ///  If status of the instance is Failed, the reason it failed. 
        /// 
        /// 
        public string FailureReason
        {
            get { return this._failureReason; }
            set { this._failureReason = value; }
        }
        // Check to see if FailureReason property is set
        internal bool IsSetFailureReason()
        {
            return this._failureReason != null;
        }
        /// 
        /// Gets and sets the property InstanceMetadataServiceConfiguration. 
        /// 
        ///  Information on the IMDS configuration of the notebook instance. 
        /// 
        /// 
        public AwsSageMakerNotebookInstanceMetadataServiceConfigurationDetails InstanceMetadataServiceConfiguration
        {
            get { return this._instanceMetadataServiceConfiguration; }
            set { this._instanceMetadataServiceConfiguration = value; }
        }
        // Check to see if InstanceMetadataServiceConfiguration property is set
        internal bool IsSetInstanceMetadataServiceConfiguration()
        {
            return this._instanceMetadataServiceConfiguration != null;
        }
        /// 
        /// Gets and sets the property InstanceType. 
        /// 
        ///  The type of machine learning (ML) compute instance to launch for the notebook instance.
        /// 
        /// 
        /// 
        public string InstanceType
        {
            get { return this._instanceType; }
            set { this._instanceType = value; }
        }
        // Check to see if InstanceType property is set
        internal bool IsSetInstanceType()
        {
            return this._instanceType != null;
        }
        /// 
        /// Gets and sets the property KmsKeyId. 
        /// 
        ///  The Amazon Resource Name (ARN) of an Key Management Service (KMS) key that SageMaker
        /// uses to encrypt data on the storage volume attached to your notebook instance. The
        /// KMS key you provide must be enabled. For information, see Enabling
        /// and disabling keys in the Key Management Service Developer Guide. 
        /// 
        /// 
        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 NetworkInterfaceId. 
        /// 
        ///  The network interface ID that SageMaker created when the instance was created. 
        /// 
        /// 
        public string NetworkInterfaceId
        {
            get { return this._networkInterfaceId; }
            set { this._networkInterfaceId = value; }
        }
        // Check to see if NetworkInterfaceId property is set
        internal bool IsSetNetworkInterfaceId()
        {
            return this._networkInterfaceId != null;
        }
        /// 
        /// Gets and sets the property NotebookInstanceArn. 
        /// 
        ///  The Amazon Resource Name (ARN) of the notebook instance. 
        /// 
        /// 
        public string NotebookInstanceArn
        {
            get { return this._notebookInstanceArn; }
            set { this._notebookInstanceArn = value; }
        }
        // Check to see if NotebookInstanceArn property is set
        internal bool IsSetNotebookInstanceArn()
        {
            return this._notebookInstanceArn != null;
        }
        /// 
        /// Gets and sets the property NotebookInstanceLifecycleConfigName. 
        /// 
        ///  The name of a notebook instance lifecycle configuration. 
        /// 
        /// 
        public string NotebookInstanceLifecycleConfigName
        {
            get { return this._notebookInstanceLifecycleConfigName; }
            set { this._notebookInstanceLifecycleConfigName = value; }
        }
        // Check to see if NotebookInstanceLifecycleConfigName property is set
        internal bool IsSetNotebookInstanceLifecycleConfigName()
        {
            return this._notebookInstanceLifecycleConfigName != null;
        }
        /// 
        /// Gets and sets the property NotebookInstanceName. 
        /// 
        ///  The name of the new notebook instance. 
        /// 
        /// 
        public string NotebookInstanceName
        {
            get { return this._notebookInstanceName; }
            set { this._notebookInstanceName = value; }
        }
        // Check to see if NotebookInstanceName property is set
        internal bool IsSetNotebookInstanceName()
        {
            return this._notebookInstanceName != null;
        }
        /// 
        /// Gets and sets the property NotebookInstanceStatus. 
        /// 
        ///  The status of the notebook instance. 
        /// 
        /// 
        public string NotebookInstanceStatus
        {
            get { return this._notebookInstanceStatus; }
            set { this._notebookInstanceStatus = value; }
        }
        // Check to see if NotebookInstanceStatus property is set
        internal bool IsSetNotebookInstanceStatus()
        {
            return this._notebookInstanceStatus != null;
        }
        /// 
        /// Gets and sets the property PlatformIdentifier. 
        /// 
        ///  The platform identifier of the notebook instance runtime environment. 
        /// 
        /// 
        public string PlatformIdentifier
        {
            get { return this._platformIdentifier; }
            set { this._platformIdentifier = value; }
        }
        // Check to see if PlatformIdentifier property is set
        internal bool IsSetPlatformIdentifier()
        {
            return this._platformIdentifier != null;
        }
        /// 
        /// Gets and sets the property RoleArn. 
        /// 
        ///  The Amazon Resource Name (ARN) of the IAM role associated with the instance. 
        /// 
        /// 
        public string RoleArn
        {
            get { return this._roleArn; }
            set { this._roleArn = value; }
        }
        // Check to see if RoleArn property is set
        internal bool IsSetRoleArn()
        {
            return this._roleArn != null;
        }
        /// 
        /// Gets and sets the property RootAccess. 
        /// 
        ///  Whether root access is enabled or disabled for users of the notebook instance. 
        /// 
        /// 
        public string RootAccess
        {
            get { return this._rootAccess; }
            set { this._rootAccess = value; }
        }
        // Check to see if RootAccess property is set
        internal bool IsSetRootAccess()
        {
            return this._rootAccess != null;
        }
        /// 
        /// Gets and sets the property SecurityGroups. 
        /// 
        ///  The VPC security group IDs. 
        /// 
        /// 
        public List SecurityGroups
        {
            get { return this._securityGroups; }
            set { this._securityGroups = value; }
        }
        // Check to see if SecurityGroups property is set
        internal bool IsSetSecurityGroups()
        {
            return this._securityGroups != null && this._securityGroups.Count > 0; 
        }
        /// 
        /// Gets and sets the property SubnetId. 
        /// 
        ///  The ID of the VPC subnet to which you have a connectivity from your ML compute instance.
        /// 
        /// 
        /// 
        public string SubnetId
        {
            get { return this._subnetId; }
            set { this._subnetId = value; }
        }
        // Check to see if SubnetId property is set
        internal bool IsSetSubnetId()
        {
            return this._subnetId != null;
        }
        /// 
        /// Gets and sets the property Url. 
        /// 
        ///  The URL that you use to connect to the Jupyter notebook that is running in your notebook
        /// instance. 
        /// 
        /// 
        public string Url
        {
            get { return this._url; }
            set { this._url = value; }
        }
        // Check to see if Url property is set
        internal bool IsSetUrl()
        {
            return this._url != null;
        }
        /// 
        /// Gets and sets the property VolumeSizeInGB. 
        /// 
        ///  The size, in GB, of the ML storage volume to attach to the notebook instance. 
        /// 
        /// 
        public int VolumeSizeInGB
        {
            get { return this._volumeSizeInGB.GetValueOrDefault(); }
            set { this._volumeSizeInGB = value; }
        }
        // Check to see if VolumeSizeInGB property is set
        internal bool IsSetVolumeSizeInGB()
        {
            return this._volumeSizeInGB.HasValue; 
        }
    }
}