# encoding: utf-8
# Code generated by Microsoft (R) AutoRest Code Generator.
# Changes may cause incorrect behavior and will be lost if the code is
# regenerated.

module Azure::Monitor::Mgmt::V2015_05_01
  module Models
    #
    # Properties that define a Continuous Export configuration.
    #
    class ApplicationInsightsComponentExportConfiguration

      include MsRestAzure

      # @return [String] The unique ID of the export configuration inside an
      # Application Insights component. It is auto generated when the
      # Continuous Export configuration is created.
      attr_accessor :export_id

      # @return [String] The instrumentation key of the Application Insights
      # component.
      attr_accessor :instrumentation_key

      # @return [String] This comma separated list of document types that will
      # be exported. The possible values include 'Requests', 'Event',
      # 'Exceptions', 'Metrics', 'PageViews', 'PageViewPerformance', 'Rdd',
      # 'PerformanceCounters', 'Availability', 'Messages'.
      attr_accessor :record_types

      # @return [String] The name of the Application Insights component.
      attr_accessor :application_name

      # @return [String] The subscription of the Application Insights
      # component.
      attr_accessor :subscription_id

      # @return [String] The resource group of the Application Insights
      # component.
      attr_accessor :resource_group

      # @return [String] The destination storage account subscription ID.
      attr_accessor :destination_storage_subscription_id

      # @return [String] The destination account location ID.
      attr_accessor :destination_storage_location_id

      # @return [String] The name of destination account.
      attr_accessor :destination_account_id

      # @return [String] The destination type.
      attr_accessor :destination_type

      # @return [String] This will be 'true' if the Continuous Export
      # configuration is enabled, otherwise it will be 'false'.
      attr_accessor :is_user_enabled

      # @return [String] Last time the Continuous Export configuration was
      # updated.
      attr_accessor :last_user_update

      # @return [String] Deprecated
      attr_accessor :notification_queue_enabled

      # @return [String] This indicates current Continuous Export configuration
      # status. The possible values are 'Preparing', 'Success', 'Failure'.
      attr_accessor :export_status

      # @return [String] The last time data was successfully delivered to the
      # destination storage container for this Continuous Export configuration.
      attr_accessor :last_success_time

      # @return [String] The last time the Continuous Export configuration
      # started failing.
      attr_accessor :last_gap_time

      # @return [String] This is the reason the Continuous Export configuration
      # started failing. It can be 'AzureStorageNotFound' or
      # 'AzureStorageAccessDenied'.
      attr_accessor :permanent_error_reason

      # @return [String] The name of the destination storage account.
      attr_accessor :storage_name

      # @return [String] The name of the destination storage container.
      attr_accessor :container_name


      #
      # Mapper for ApplicationInsightsComponentExportConfiguration class as
      # Ruby Hash.
      # This will be used for serialization/deserialization.
      #
      def self.mapper()
        {
          client_side_validation: true,
          required: false,
          serialized_name: 'ApplicationInsightsComponentExportConfiguration',
          type: {
            name: 'Composite',
            class_name: 'ApplicationInsightsComponentExportConfiguration',
            model_properties: {
              export_id: {
                client_side_validation: true,
                required: false,
                read_only: true,
                serialized_name: 'ExportId',
                type: {
                  name: 'String'
                }
              },
              instrumentation_key: {
                client_side_validation: true,
                required: false,
                read_only: true,
                serialized_name: 'InstrumentationKey',
                type: {
                  name: 'String'
                }
              },
              record_types: {
                client_side_validation: true,
                required: false,
                serialized_name: 'RecordTypes',
                type: {
                  name: 'String'
                }
              },
              application_name: {
                client_side_validation: true,
                required: false,
                read_only: true,
                serialized_name: 'ApplicationName',
                type: {
                  name: 'String'
                }
              },
              subscription_id: {
                client_side_validation: true,
                required: false,
                read_only: true,
                serialized_name: 'SubscriptionId',
                type: {
                  name: 'String'
                }
              },
              resource_group: {
                client_side_validation: true,
                required: false,
                read_only: true,
                serialized_name: 'ResourceGroup',
                type: {
                  name: 'String'
                }
              },
              destination_storage_subscription_id: {
                client_side_validation: true,
                required: false,
                read_only: true,
                serialized_name: 'DestinationStorageSubscriptionId',
                type: {
                  name: 'String'
                }
              },
              destination_storage_location_id: {
                client_side_validation: true,
                required: false,
                read_only: true,
                serialized_name: 'DestinationStorageLocationId',
                type: {
                  name: 'String'
                }
              },
              destination_account_id: {
                client_side_validation: true,
                required: false,
                read_only: true,
                serialized_name: 'DestinationAccountId',
                type: {
                  name: 'String'
                }
              },
              destination_type: {
                client_side_validation: true,
                required: false,
                read_only: true,
                serialized_name: 'DestinationType',
                type: {
                  name: 'String'
                }
              },
              is_user_enabled: {
                client_side_validation: true,
                required: false,
                read_only: true,
                serialized_name: 'IsUserEnabled',
                type: {
                  name: 'String'
                }
              },
              last_user_update: {
                client_side_validation: true,
                required: false,
                read_only: true,
                serialized_name: 'LastUserUpdate',
                type: {
                  name: 'String'
                }
              },
              notification_queue_enabled: {
                client_side_validation: true,
                required: false,
                serialized_name: 'NotificationQueueEnabled',
                type: {
                  name: 'String'
                }
              },
              export_status: {
                client_side_validation: true,
                required: false,
                read_only: true,
                serialized_name: 'ExportStatus',
                type: {
                  name: 'String'
                }
              },
              last_success_time: {
                client_side_validation: true,
                required: false,
                read_only: true,
                serialized_name: 'LastSuccessTime',
                type: {
                  name: 'String'
                }
              },
              last_gap_time: {
                client_side_validation: true,
                required: false,
                read_only: true,
                serialized_name: 'LastGapTime',
                type: {
                  name: 'String'
                }
              },
              permanent_error_reason: {
                client_side_validation: true,
                required: false,
                read_only: true,
                serialized_name: 'PermanentErrorReason',
                type: {
                  name: 'String'
                }
              },
              storage_name: {
                client_side_validation: true,
                required: false,
                read_only: true,
                serialized_name: 'StorageName',
                type: {
                  name: 'String'
                }
              },
              container_name: {
                client_side_validation: true,
                required: false,
                read_only: true,
                serialized_name: 'ContainerName',
                type: {
                  name: 'String'
                }
              }
            }
          }
        }
      end
    end
  end
end
