# 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::ServiceFabric::V6_4_0_36
  module Models
    #
    # Represents a health evaluation which describes the data and the algorithm
    # used by health manager to evaluate the health of an entity.
    #
    class HealthEvaluation

      include MsRestAzure

      @@discriminatorMap = Hash.new
      @@discriminatorMap["Application"] = "ApplicationHealthEvaluation"
      @@discriminatorMap["Applications"] = "ApplicationsHealthEvaluation"
      @@discriminatorMap["ApplicationTypeApplications"] = "ApplicationTypeApplicationsHealthEvaluation"
      @@discriminatorMap["DeltaNodesCheck"] = "DeltaNodesCheckHealthEvaluation"
      @@discriminatorMap["DeployedApplication"] = "DeployedApplicationHealthEvaluation"
      @@discriminatorMap["DeployedApplications"] = "DeployedApplicationsHealthEvaluation"
      @@discriminatorMap["DeployedServicePackage"] = "DeployedServicePackageHealthEvaluation"
      @@discriminatorMap["DeployedServicePackages"] = "DeployedServicePackagesHealthEvaluation"
      @@discriminatorMap["Event"] = "EventHealthEvaluation"
      @@discriminatorMap["Node"] = "NodeHealthEvaluation"
      @@discriminatorMap["Nodes"] = "NodesHealthEvaluation"
      @@discriminatorMap["Partition"] = "PartitionHealthEvaluation"
      @@discriminatorMap["Partitions"] = "PartitionsHealthEvaluation"
      @@discriminatorMap["Replica"] = "ReplicaHealthEvaluation"
      @@discriminatorMap["Replicas"] = "ReplicasHealthEvaluation"
      @@discriminatorMap["Service"] = "ServiceHealthEvaluation"
      @@discriminatorMap["Services"] = "ServicesHealthEvaluation"
      @@discriminatorMap["SystemApplication"] = "SystemApplicationHealthEvaluation"
      @@discriminatorMap["UpgradeDomainDeltaNodesCheck"] = "UpgradeDomainDeltaNodesCheckHealthEvaluation"
      @@discriminatorMap["UpgradeDomainNodes"] = "UpgradeDomainNodesHealthEvaluation"

      def initialize
        @Kind = "HealthEvaluation"
      end

      attr_accessor :Kind

      # @return [HealthState] The health state of a Service Fabric entity such
      # as Cluster, Node, Application, Service, Partition, Replica etc.
      # Possible values include: 'Invalid', 'Ok', 'Warning', 'Error', 'Unknown'
      attr_accessor :aggregated_health_state

      # @return [String] Description of the health evaluation, which represents
      # a summary of the evaluation process.
      attr_accessor :description


      #
      # Mapper for HealthEvaluation class as Ruby Hash.
      # This will be used for serialization/deserialization.
      #
      def self.mapper()
        {
          client_side_validation: true,
          required: false,
          serialized_name: 'HealthEvaluation',
          type: {
            name: 'Composite',
            polymorphic_discriminator: 'Kind',
            uber_parent: 'HealthEvaluation',
            class_name: 'HealthEvaluation',
            model_properties: {
              aggregated_health_state: {
                client_side_validation: true,
                required: false,
                serialized_name: 'AggregatedHealthState',
                type: {
                  name: 'String'
                }
              },
              description: {
                client_side_validation: true,
                required: false,
                serialized_name: 'Description',
                type: {
                  name: 'String'
                }
              }
            }
          }
        }
      end
    end
  end
end
