# 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::Batch::Mgmt::V2017_09_01
  module Models
    #
    # Contains information about a certificate.
    #
    class Certificate < ProxyResource

      include MsRestAzure

      # @return [String] The algorithm of the certificate thumbprint. This must
      # match the first portion of the certificate name. Currently required to
      # be 'SHA1'.
      attr_accessor :thumbprint_algorithm

      # @return [String] The thumbprint of the certificate. This must match the
      # thumbprint from the name.
      attr_accessor :thumbprint

      # @return [CertificateFormat] The format of the certificate - either Pfx
      # or Cer. If omitted, the default is Pfx. Possible values include: 'Pfx',
      # 'Cer'
      attr_accessor :format

      # @return [CertificateProvisioningState] The provisioned state of the
      # resource. Values are:
      #
      # Succeeded - The certificate is available for use in pools.
      # Deleting - The user has requested that the certificate be deleted, but
      # the delete operation has not yet completed. You may not reference the
      # certificate when creating or updating pools.
      # Failed - The user requested that the certificate be deleted, but there
      # are pools that still have references to the certificate, or it is still
      # installed on one or more compute nodes. (The latter can occur if the
      # certificate has been removed from the pool, but the node has not yet
      # restarted. Nodes refresh their certificates only when they restart.)
      # You may use the cancel certificate delete operation to cancel the
      # delete, or the delete certificate operation to retry the delete.
      # Possible values include: 'Succeeded', 'Deleting', 'Failed'
      attr_accessor :provisioning_state

      # @return [DateTime] The time at which the certificate entered its
      # current state.
      attr_accessor :provisioning_state_transition_time

      # @return [CertificateProvisioningState] The previous provisioned state
      # of the resource. Possible values include: 'Succeeded', 'Deleting',
      # 'Failed'
      attr_accessor :previous_provisioning_state

      # @return [DateTime] The time at which the certificate entered its
      # previous state.
      attr_accessor :previous_provisioning_state_transition_time

      # @return [String] The public key of the certificate.
      attr_accessor :public_data

      # @return [DeleteCertificateError] The error which occurred while
      # deleting the certificate. This is only returned when the certificate
      # provisioningState is 'Failed'.
      attr_accessor :delete_certificate_error


      #
      # Mapper for Certificate class as Ruby Hash.
      # This will be used for serialization/deserialization.
      #
      def self.mapper()
        {
          client_side_validation: true,
          required: false,
          serialized_name: 'Certificate',
          type: {
            name: 'Composite',
            class_name: 'Certificate',
            model_properties: {
              id: {
                client_side_validation: true,
                required: false,
                read_only: true,
                serialized_name: 'id',
                type: {
                  name: 'String'
                }
              },
              name: {
                client_side_validation: true,
                required: false,
                read_only: true,
                serialized_name: 'name',
                type: {
                  name: 'String'
                }
              },
              type: {
                client_side_validation: true,
                required: false,
                read_only: true,
                serialized_name: 'type',
                type: {
                  name: 'String'
                }
              },
              etag: {
                client_side_validation: true,
                required: false,
                read_only: true,
                serialized_name: 'etag',
                type: {
                  name: 'String'
                }
              },
              thumbprint_algorithm: {
                client_side_validation: true,
                required: false,
                serialized_name: 'properties.thumbprintAlgorithm',
                type: {
                  name: 'String'
                }
              },
              thumbprint: {
                client_side_validation: true,
                required: false,
                serialized_name: 'properties.thumbprint',
                type: {
                  name: 'String'
                }
              },
              format: {
                client_side_validation: true,
                required: false,
                serialized_name: 'properties.format',
                type: {
                  name: 'Enum',
                  module: 'CertificateFormat'
                }
              },
              provisioning_state: {
                client_side_validation: true,
                required: false,
                read_only: true,
                serialized_name: 'properties.provisioningState',
                type: {
                  name: 'Enum',
                  module: 'CertificateProvisioningState'
                }
              },
              provisioning_state_transition_time: {
                client_side_validation: true,
                required: false,
                read_only: true,
                serialized_name: 'properties.provisioningStateTransitionTime',
                type: {
                  name: 'DateTime'
                }
              },
              previous_provisioning_state: {
                client_side_validation: true,
                required: false,
                read_only: true,
                serialized_name: 'properties.previousProvisioningState',
                type: {
                  name: 'Enum',
                  module: 'CertificateProvisioningState'
                }
              },
              previous_provisioning_state_transition_time: {
                client_side_validation: true,
                required: false,
                read_only: true,
                serialized_name: 'properties.previousProvisioningStateTransitionTime',
                type: {
                  name: 'DateTime'
                }
              },
              public_data: {
                client_side_validation: true,
                required: false,
                read_only: true,
                serialized_name: 'properties.publicData',
                type: {
                  name: 'String'
                }
              },
              delete_certificate_error: {
                client_side_validation: true,
                required: false,
                read_only: true,
                serialized_name: 'properties.deleteCertificateError',
                type: {
                  name: 'Composite',
                  class_name: 'DeleteCertificateError'
                }
              }
            }
          }
        }
      end
    end
  end
end
