# 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::ImportExport::Mgmt::V2016_11_01
  module Models
    #
    # Provides information about the drive's status
    #
    class DriveStatus

      include MsRestAzure

      # @return [String] The drive's hardware serial number, without spaces.
      attr_accessor :drive_id

      # @return [String] The BitLocker key used to encrypt the drive.
      attr_accessor :bit_locker_key

      # @return [String] The relative path of the manifest file on the drive.
      attr_accessor :manifest_file

      # @return [String] The Base16-encoded MD5 hash of the manifest file on
      # the drive.
      attr_accessor :manifest_hash

      # @return [String] The drive header hash value.
      attr_accessor :drive_header_hash

      # @return [DriveState] The drive's current state. Possible values
      # include: 'Specified', 'Received', 'NeverReceived', 'Transferring',
      # 'Completed', 'CompletedMoreInfo', 'ShippedBack'
      attr_accessor :state

      # @return [String] Detailed status about the data transfer process. This
      # field is not returned in the response until the drive is in the
      # Transferring state.
      attr_accessor :copy_status

      # @return [Integer] Percentage completed for the drive.
      attr_accessor :percent_complete

      # @return [String] A URI that points to the blob containing the verbose
      # log for the data transfer operation.
      attr_accessor :verbose_log_uri

      # @return [String] A URI that points to the blob containing the error log
      # for the data transfer operation.
      attr_accessor :error_log_uri

      # @return [String] A URI that points to the blob containing the drive
      # manifest file.
      attr_accessor :manifest_uri

      # @return [Integer] Bytes successfully transferred for the drive.
      attr_accessor :bytes_succeeded


      #
      # Mapper for DriveStatus class as Ruby Hash.
      # This will be used for serialization/deserialization.
      #
      def self.mapper()
        {
          client_side_validation: true,
          required: false,
          serialized_name: 'DriveStatus',
          type: {
            name: 'Composite',
            class_name: 'DriveStatus',
            model_properties: {
              drive_id: {
                client_side_validation: true,
                required: false,
                serialized_name: 'driveId',
                type: {
                  name: 'String'
                }
              },
              bit_locker_key: {
                client_side_validation: true,
                required: false,
                serialized_name: 'bitLockerKey',
                type: {
                  name: 'String'
                }
              },
              manifest_file: {
                client_side_validation: true,
                required: false,
                serialized_name: 'manifestFile',
                type: {
                  name: 'String'
                }
              },
              manifest_hash: {
                client_side_validation: true,
                required: false,
                serialized_name: 'manifestHash',
                type: {
                  name: 'String'
                }
              },
              drive_header_hash: {
                client_side_validation: true,
                required: false,
                serialized_name: 'driveHeaderHash',
                type: {
                  name: 'String'
                }
              },
              state: {
                client_side_validation: true,
                required: false,
                serialized_name: 'state',
                type: {
                  name: 'String'
                }
              },
              copy_status: {
                client_side_validation: true,
                required: false,
                serialized_name: 'copyStatus',
                type: {
                  name: 'String'
                }
              },
              percent_complete: {
                client_side_validation: true,
                required: false,
                serialized_name: 'percentComplete',
                type: {
                  name: 'Number'
                }
              },
              verbose_log_uri: {
                client_side_validation: true,
                required: false,
                serialized_name: 'verboseLogUri',
                type: {
                  name: 'String'
                }
              },
              error_log_uri: {
                client_side_validation: true,
                required: false,
                serialized_name: 'errorLogUri',
                type: {
                  name: 'String'
                }
              },
              manifest_uri: {
                client_side_validation: true,
                required: false,
                serialized_name: 'manifestUri',
                type: {
                  name: 'String'
                }
              },
              bytes_succeeded: {
                client_side_validation: true,
                required: false,
                serialized_name: 'bytesSucceeded',
                type: {
                  name: 'Number'
                }
              }
            }
          }
        }
      end
    end
  end
end
