/// <summary>
 /// Validate the object.
 /// </summary>
 /// <exception cref="Rest.ValidationException">
 /// Thrown if validation fails
 /// </exception>
 public virtual void Validate()
 {
     if (ApplicationHealthPolicy != null)
     {
         ApplicationHealthPolicy.Validate();
     }
 }
 /// <summary>
 /// Initializes a new instance of the ApplicationUpgradePolicy class.
 /// </summary>
 /// <param name="upgradeReplicaSetCheckTimeout">The maximum amount of
 /// time to block processing of an upgrade domain and prevent loss of
 /// availability when there are unexpected issues. When this timeout
 /// expires, processing of the upgrade domain will proceed regardless
 /// of availability loss issues. The timeout is reset at the start of
 /// each upgrade domain. Valid values are between 0 and 42949672925
 /// inclusive. (unsigned 32-bit integer).</param>
 /// <param name="forceRestart">If true, then processes are forcefully
 /// restarted during upgrade even when the code version has not changed
 /// (the upgrade only changes configuration or data).</param>
 /// <param name="rollingUpgradeMonitoringPolicy">The policy used for
 /// monitoring the application upgrade</param>
 /// <param name="applicationHealthPolicy">Defines a health policy used
 /// to evaluate the health of an application or one of its children
 /// entities.
 /// </param>
 public ApplicationUpgradePolicy(long?upgradeReplicaSetCheckTimeout = default(long?), bool?forceRestart = default(bool?), RollingUpgradeMonitoringPolicy rollingUpgradeMonitoringPolicy = default(RollingUpgradeMonitoringPolicy), ApplicationHealthPolicy applicationHealthPolicy = default(ApplicationHealthPolicy))
 {
     UpgradeReplicaSetCheckTimeout = upgradeReplicaSetCheckTimeout;
     ForceRestart = forceRestart;
     RollingUpgradeMonitoringPolicy = rollingUpgradeMonitoringPolicy;
     ApplicationHealthPolicy        = applicationHealthPolicy;
     CustomInit();
 }