# 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::SQL::Mgmt::V2015_05_01_preview
  module Models
    #
    # Contains information of current state for an Azure SQL Database, Server
    # or Elastic Pool Recommended Action.
    #
    class RecommendedActionStateInfo

      include MsRestAzure

      # @return [RecommendedActionCurrentState] Current state the recommended
      # action is in. Some commonly used states are: Active      -> recommended
      # action is active and no action has been taken yet. Pending     ->
      # recommended action is approved for and is awaiting execution. Executing
      # -> recommended action is being applied on the user database. Verifying
      # -> recommended action was applied and is being verified of its
      # usefulness by the system. Success     -> recommended action was applied
      # and improvement found during verification. Pending Revert  ->
      # verification found little or no improvement so recommended action is
      # queued for revert or user has manually reverted. Reverting   -> changes
      # made while applying recommended action are being reverted on the user
      # database. Reverted    -> successfully reverted the changes made by
      # recommended action on user database. Ignored     -> user explicitly
      # ignored/discarded the recommended action. Possible values include:
      # 'Active', 'Pending', 'Executing', 'Verifying', 'PendingRevert',
      # 'RevertCancelled', 'Reverting', 'Reverted', 'Ignored', 'Expired',
      # 'Monitoring', 'Resolved', 'Success', 'Error'
      attr_accessor :current_value

      # @return [RecommendedActionInitiatedBy] Gets who initiated the execution
      # of this recommended action. Possible Value are: User    -> When user
      # explicitly notified system to apply the recommended action. System  ->
      # When auto-execute status of this advisor was set to 'Enabled', in which
      # case the system applied it. Possible values include: 'User', 'System'
      attr_accessor :action_initiated_by

      # @return [DateTime] Gets the time when the state was last modified
      attr_accessor :last_modified


      #
      # Mapper for RecommendedActionStateInfo class as Ruby Hash.
      # This will be used for serialization/deserialization.
      #
      def self.mapper()
        {
          client_side_validation: true,
          required: false,
          serialized_name: 'RecommendedActionStateInfo',
          type: {
            name: 'Composite',
            class_name: 'RecommendedActionStateInfo',
            model_properties: {
              current_value: {
                client_side_validation: true,
                required: true,
                serialized_name: 'currentValue',
                type: {
                  name: 'String'
                }
              },
              action_initiated_by: {
                client_side_validation: true,
                required: false,
                read_only: true,
                serialized_name: 'actionInitiatedBy',
                type: {
                  name: 'Enum',
                  module: 'RecommendedActionInitiatedBy'
                }
              },
              last_modified: {
                client_side_validation: true,
                required: false,
                read_only: true,
                serialized_name: 'lastModified',
                type: {
                  name: 'DateTime'
                }
              }
            }
          }
        }
      end
    end
  end
end
