# 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_5_0_36
  module Models
    #
    # Represents data structure that contains load information for a certain
    # metric in a cluster.
    #
    class LoadMetricInformation

      include MsRestAzure

      # @return [String] Name of the metric for which this load information is
      # provided.
      attr_accessor :name

      # @return [Boolean] Value that indicates whether the metrics is balanced
      # or not before resource balancer run
      attr_accessor :is_balanced_before

      # @return [Boolean] Value that indicates whether the metrics is balanced
      # or not after resource balancer run.
      attr_accessor :is_balanced_after

      # @return [String] The standard average deviation of the metrics before
      # resource balancer run.
      attr_accessor :deviation_before

      # @return [String] The standard average deviation of the metrics after
      # resource balancer run.
      attr_accessor :deviation_after

      # @return [String] The balancing threshold for a certain metric.
      attr_accessor :balancing_threshold

      # @return [String] The current action being taken with regard to this
      # metric
      attr_accessor :action

      # @return [String] The Activity Threshold specified for this metric in
      # the system Cluster Manifest.
      attr_accessor :activity_threshold

      # @return [String] The total cluster capacity for a given metric
      attr_accessor :cluster_capacity

      # @return [String] The total cluster load. In future releases of Service
      # Fabric this parameter will be deprecated in favor of
      # CurrentClusterLoad.
      attr_accessor :cluster_load

      # @return [String] The total cluster load.
      attr_accessor :current_cluster_load

      # @return [String] The remaining capacity for the metric in the cluster.
      # In future releases of Service Fabric this parameter will be deprecated
      # in favor of ClusterCapacityRemaining.
      attr_accessor :cluster_remaining_capacity

      # @return [String] The remaining capacity for the metric in the cluster.
      attr_accessor :cluster_capacity_remaining

      # @return [Boolean] Indicates that the metric is currently over capacity
      # in the cluster.
      attr_accessor :is_cluster_capacity_violation

      # @return [String] The reserved percentage of total node capacity for
      # this metric.
      attr_accessor :node_buffer_percentage

      # @return [String] Remaining capacity in the cluster excluding the
      # reserved space. In future releases of Service Fabric this parameter
      # will be deprecated in favor of BufferedClusterCapacityRemaining.
      attr_accessor :cluster_buffered_capacity

      # @return [String] Remaining capacity in the cluster excluding the
      # reserved space.
      attr_accessor :buffered_cluster_capacity_remaining

      # @return [String] The remaining percentage of cluster total capacity for
      # this metric.
      attr_accessor :cluster_remaining_buffered_capacity

      # @return [String] The minimum load on any node for this metric. In
      # future releases of Service Fabric this parameter will be deprecated in
      # favor of MinimumNodeLoad.
      attr_accessor :min_node_load_value

      # @return [String] The minimum load on any node for this metric.
      attr_accessor :minimum_node_load

      # @return [NodeId] The node id of the node with the minimum load for this
      # metric.
      attr_accessor :min_node_load_node_id

      # @return [String] The maximum load on any node for this metric. In
      # future releases of Service Fabric this parameter will be deprecated in
      # favor of MaximumNodeLoad.
      attr_accessor :max_node_load_value

      # @return [String] The maximum load on any node for this metric.
      attr_accessor :maximum_node_load

      # @return [NodeId] The node id of the node with the maximum load for this
      # metric.
      attr_accessor :max_node_load_node_id

      # @return [String] This value represents the load of the replicas that
      # are planned to be removed in the future within the cluster.
      # This kind of load is reported for replicas that are currently being
      # moving to other nodes and for replicas that are currently being dropped
      # but still use the load on the source node.
      attr_accessor :planned_load_removal


      #
      # Mapper for LoadMetricInformation class as Ruby Hash.
      # This will be used for serialization/deserialization.
      #
      def self.mapper()
        {
          client_side_validation: true,
          required: false,
          serialized_name: 'LoadMetricInformation',
          type: {
            name: 'Composite',
            class_name: 'LoadMetricInformation',
            model_properties: {
              name: {
                client_side_validation: true,
                required: false,
                serialized_name: 'Name',
                type: {
                  name: 'String'
                }
              },
              is_balanced_before: {
                client_side_validation: true,
                required: false,
                serialized_name: 'IsBalancedBefore',
                type: {
                  name: 'Boolean'
                }
              },
              is_balanced_after: {
                client_side_validation: true,
                required: false,
                serialized_name: 'IsBalancedAfter',
                type: {
                  name: 'Boolean'
                }
              },
              deviation_before: {
                client_side_validation: true,
                required: false,
                serialized_name: 'DeviationBefore',
                type: {
                  name: 'String'
                }
              },
              deviation_after: {
                client_side_validation: true,
                required: false,
                serialized_name: 'DeviationAfter',
                type: {
                  name: 'String'
                }
              },
              balancing_threshold: {
                client_side_validation: true,
                required: false,
                serialized_name: 'BalancingThreshold',
                type: {
                  name: 'String'
                }
              },
              action: {
                client_side_validation: true,
                required: false,
                serialized_name: 'Action',
                type: {
                  name: 'String'
                }
              },
              activity_threshold: {
                client_side_validation: true,
                required: false,
                serialized_name: 'ActivityThreshold',
                type: {
                  name: 'String'
                }
              },
              cluster_capacity: {
                client_side_validation: true,
                required: false,
                serialized_name: 'ClusterCapacity',
                type: {
                  name: 'String'
                }
              },
              cluster_load: {
                client_side_validation: true,
                required: false,
                serialized_name: 'ClusterLoad',
                type: {
                  name: 'String'
                }
              },
              current_cluster_load: {
                client_side_validation: true,
                required: false,
                serialized_name: 'CurrentClusterLoad',
                type: {
                  name: 'String'
                }
              },
              cluster_remaining_capacity: {
                client_side_validation: true,
                required: false,
                serialized_name: 'ClusterRemainingCapacity',
                type: {
                  name: 'String'
                }
              },
              cluster_capacity_remaining: {
                client_side_validation: true,
                required: false,
                serialized_name: 'ClusterCapacityRemaining',
                type: {
                  name: 'String'
                }
              },
              is_cluster_capacity_violation: {
                client_side_validation: true,
                required: false,
                serialized_name: 'IsClusterCapacityViolation',
                type: {
                  name: 'Boolean'
                }
              },
              node_buffer_percentage: {
                client_side_validation: true,
                required: false,
                serialized_name: 'NodeBufferPercentage',
                type: {
                  name: 'String'
                }
              },
              cluster_buffered_capacity: {
                client_side_validation: true,
                required: false,
                serialized_name: 'ClusterBufferedCapacity',
                type: {
                  name: 'String'
                }
              },
              buffered_cluster_capacity_remaining: {
                client_side_validation: true,
                required: false,
                serialized_name: 'BufferedClusterCapacityRemaining',
                type: {
                  name: 'String'
                }
              },
              cluster_remaining_buffered_capacity: {
                client_side_validation: true,
                required: false,
                serialized_name: 'ClusterRemainingBufferedCapacity',
                type: {
                  name: 'String'
                }
              },
              min_node_load_value: {
                client_side_validation: true,
                required: false,
                serialized_name: 'MinNodeLoadValue',
                type: {
                  name: 'String'
                }
              },
              minimum_node_load: {
                client_side_validation: true,
                required: false,
                serialized_name: 'MinimumNodeLoad',
                type: {
                  name: 'String'
                }
              },
              min_node_load_node_id: {
                client_side_validation: true,
                required: false,
                serialized_name: 'MinNodeLoadNodeId',
                type: {
                  name: 'Composite',
                  class_name: 'NodeId'
                }
              },
              max_node_load_value: {
                client_side_validation: true,
                required: false,
                serialized_name: 'MaxNodeLoadValue',
                type: {
                  name: 'String'
                }
              },
              maximum_node_load: {
                client_side_validation: true,
                required: false,
                serialized_name: 'MaximumNodeLoad',
                type: {
                  name: 'String'
                }
              },
              max_node_load_node_id: {
                client_side_validation: true,
                required: false,
                serialized_name: 'MaxNodeLoadNodeId',
                type: {
                  name: 'Composite',
                  class_name: 'NodeId'
                }
              },
              planned_load_removal: {
                client_side_validation: true,
                required: false,
                serialized_name: 'PlannedLoadRemoval',
                type: {
                  name: 'String'
                }
              }
            }
          }
        }
      end
    end
  end
end
