/// <summary>
 /// Initializes a new instance of the ClusterUpgradeDescriptionObject class.
 /// </summary>
 /// <param name="configVersion">The cluster configuration version (specified in the cluster manifest).</param>
 /// <param name="codeVersion">The ServiceFabric code version of the cluster.</param>
 /// <param name="upgradeKind">The kind of upgrade out of the following possible values. Possible values include:
 /// 'Invalid', 'Rolling'</param>
 /// <param name="rollingUpgradeMode">The mode used to monitor health during a rolling upgrade. The values are
 /// UnmonitoredAuto, UnmonitoredManual, and Monitored. Possible values include: 'Invalid', 'UnmonitoredAuto',
 /// 'UnmonitoredManual', 'Monitored'</param>
 /// <param name="upgradeReplicaSetCheckTimeoutInSeconds">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="enableDeltaHealthEvaluation">When true, enables delta health evaluation rather than absolute health
 /// evaluation after completion of each upgrade domain.</param>
 /// <param name="monitoringPolicy">Describes the parameters for monitoring an upgrade in Monitored mode.</param>
 /// <param name="clusterHealthPolicy">Defines a health policy used to evaluate the health of the cluster or of a
 /// cluster node.
 /// </param>
 /// <param name="clusterUpgradeHealthPolicy">Defines a health policy used to evaluate the health of the cluster during
 /// a cluster upgrade.</param>
 /// <param name="applicationHealthPolicyMap">Defines a map that contains specific application health policies for
 /// different applications.
 /// Each entry specifies as key the application name and as value an ApplicationHealthPolicy used to evaluate the
 /// application health.
 /// If an application is not specified in the map, the application health evaluation uses the ApplicationHealthPolicy
 /// found in its application manifest or the default application health policy (if no health policy is defined in the
 /// manifest).
 /// The map is empty by default.
 /// </param>
 public ClusterUpgradeDescriptionObject(
     string configVersion           = default(string),
     string codeVersion             = default(string),
     UpgradeKind?upgradeKind        = Common.UpgradeKind.Rolling,
     UpgradeMode?rollingUpgradeMode = Common.UpgradeMode.UnmonitoredAuto,
     long?upgradeReplicaSetCheckTimeoutInSeconds = default(long?),
     bool?forceRestart = default(bool?),
     bool?enableDeltaHealthEvaluation             = default(bool?),
     MonitoringPolicyDescription monitoringPolicy = default(MonitoringPolicyDescription),
     ClusterHealthPolicy clusterHealthPolicy      = default(ClusterHealthPolicy),
     ClusterUpgradeHealthPolicyObject clusterUpgradeHealthPolicy             = default(ClusterUpgradeHealthPolicyObject),
     IEnumerable <ApplicationHealthPolicyMapItem> applicationHealthPolicyMap = default(IEnumerable <ApplicationHealthPolicyMapItem>))
 {
     this.ConfigVersion      = configVersion;
     this.CodeVersion        = codeVersion;
     this.UpgradeKind        = upgradeKind;
     this.RollingUpgradeMode = rollingUpgradeMode;
     this.UpgradeReplicaSetCheckTimeoutInSeconds = upgradeReplicaSetCheckTimeoutInSeconds;
     this.ForceRestart = forceRestart;
     this.EnableDeltaHealthEvaluation = enableDeltaHealthEvaluation;
     this.MonitoringPolicy            = monitoringPolicy;
     this.ClusterHealthPolicy         = clusterHealthPolicy;
     this.ClusterUpgradeHealthPolicy  = clusterUpgradeHealthPolicy;
     this.ApplicationHealthPolicyMap  = applicationHealthPolicyMap;
 }
 /// <summary>
 /// Initializes a new instance of the StartClusterUpgradeDescription class.
 /// </summary>
 /// <param name="codeVersion">The cluster code version.</param>
 /// <param name="configVersion">The cluster configuration version.</param>
 /// <param name="upgradeKind">The kind of upgrade out of the following possible values. Possible values include:
 /// 'Invalid', 'Rolling'</param>
 /// <param name="rollingUpgradeMode">The mode used to monitor health during a rolling upgrade. The values are
 /// UnmonitoredAuto, UnmonitoredManual, and Monitored. Possible values include: 'Invalid', 'UnmonitoredAuto',
 /// 'UnmonitoredManual', 'Monitored'</param>
 /// <param name="upgradeReplicaSetCheckTimeoutInSeconds">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="sortOrder">Defines the order in which an upgrade proceeds through the cluster. Possible values
 /// include: 'Invalid', 'Default', 'Numeric', 'Lexicographical', 'ReverseNumeric', 'ReverseLexicographical'</param>
 /// <param name="monitoringPolicy">Describes the parameters for monitoring an upgrade in Monitored mode.</param>
 /// <param name="clusterHealthPolicy">Defines a health policy used to evaluate the health of the cluster or of a
 /// cluster node.
 /// </param>
 /// <param name="enableDeltaHealthEvaluation">When true, enables delta health evaluation rather than absolute health
 /// evaluation after completion of each upgrade domain.</param>
 /// <param name="clusterUpgradeHealthPolicy">Defines a health policy used to evaluate the health of the cluster during
 /// a cluster upgrade.</param>
 /// <param name="applicationHealthPolicyMap">Defines the application health policy map used to evaluate the health of
 /// an application or one of its children entities.
 /// </param>
 /// <param name="instanceCloseDelayDurationInSeconds">Duration in seconds, to wait before a stateless instance is
 /// closed, to allow the active requests to drain gracefully. This would be effective when the instance is closing
 /// during the application/cluster
 /// upgrade, only for those instances which have a non-zero delay duration configured in the service description. See
 /// InstanceCloseDelayDurationSeconds property in $ref: "#/definitions/StatelessServiceDescription.yaml" for details.
 /// Note, the default value of InstanceCloseDelayDurationInSeconds is 4294967295, which indicates that the behavior
 /// will entirely depend on the delay configured in the stateless service description.
 /// </param>
 public StartClusterUpgradeDescription(
     string codeVersion             = default(string),
     string configVersion           = default(string),
     UpgradeKind?upgradeKind        = Common.UpgradeKind.Rolling,
     UpgradeMode?rollingUpgradeMode = Common.UpgradeMode.UnmonitoredAuto,
     long?upgradeReplicaSetCheckTimeoutInSeconds = default(long?),
     bool?forceRestart          = default(bool?),
     UpgradeSortOrder?sortOrder = Common.UpgradeSortOrder.Default,
     MonitoringPolicyDescription monitoringPolicy = default(MonitoringPolicyDescription),
     ClusterHealthPolicy clusterHealthPolicy      = default(ClusterHealthPolicy),
     bool?enableDeltaHealthEvaluation             = default(bool?),
     ClusterUpgradeHealthPolicyObject clusterUpgradeHealthPolicy = default(ClusterUpgradeHealthPolicyObject),
     ApplicationHealthPolicies applicationHealthPolicyMap        = default(ApplicationHealthPolicies),
     long?instanceCloseDelayDurationInSeconds = default(long?))
 {
     this.CodeVersion        = codeVersion;
     this.ConfigVersion      = configVersion;
     this.UpgradeKind        = upgradeKind;
     this.RollingUpgradeMode = rollingUpgradeMode;
     this.UpgradeReplicaSetCheckTimeoutInSeconds = upgradeReplicaSetCheckTimeoutInSeconds;
     this.ForceRestart                        = forceRestart;
     this.SortOrder                           = sortOrder;
     this.MonitoringPolicy                    = monitoringPolicy;
     this.ClusterHealthPolicy                 = clusterHealthPolicy;
     this.EnableDeltaHealthEvaluation         = enableDeltaHealthEvaluation;
     this.ClusterUpgradeHealthPolicy          = clusterUpgradeHealthPolicy;
     this.ApplicationHealthPolicyMap          = applicationHealthPolicyMap;
     this.InstanceCloseDelayDurationInSeconds = instanceCloseDelayDurationInSeconds;
 }
 /// <summary>
 /// Initializes a new instance of the UpdateClusterUpgradeDescription class.
 /// </summary>
 /// <param name="upgradeKind">The type of upgrade out of the following possible values. Possible values include:
 /// 'Invalid', 'Rolling', 'Rolling_ForceRestart'</param>
 /// <param name="updateDescription">Describes the parameters for updating a rolling upgrade of application or
 /// cluster.</param>
 /// <param name="clusterHealthPolicy">Defines a health policy used to evaluate the health of the cluster or of a
 /// cluster node.
 /// </param>
 /// <param name="enableDeltaHealthEvaluation">When true, enables delta health evaluation rather than absolute health
 /// evaluation after completion of each upgrade domain.</param>
 /// <param name="clusterUpgradeHealthPolicy">Defines a health policy used to evaluate the health of the cluster during
 /// a cluster upgrade.</param>
 /// <param name="applicationHealthPolicyMap">Defines the application health policy map used to evaluate the health of
 /// an application or one of its children entities.
 /// </param>
 public UpdateClusterUpgradeDescription(
     UpgradeType?upgradeKind = Common.UpgradeType.Rolling,
     RollingUpgradeUpdateDescription updateDescription = default(RollingUpgradeUpdateDescription),
     ClusterHealthPolicy clusterHealthPolicy           = default(ClusterHealthPolicy),
     bool?enableDeltaHealthEvaluation = default(bool?),
     ClusterUpgradeHealthPolicyObject clusterUpgradeHealthPolicy = default(ClusterUpgradeHealthPolicyObject),
     ApplicationHealthPolicies applicationHealthPolicyMap        = default(ApplicationHealthPolicies))
 {
     this.UpgradeKind                 = upgradeKind;
     this.UpdateDescription           = updateDescription;
     this.ClusterHealthPolicy         = clusterHealthPolicy;
     this.EnableDeltaHealthEvaluation = enableDeltaHealthEvaluation;
     this.ClusterUpgradeHealthPolicy  = clusterUpgradeHealthPolicy;
     this.ApplicationHealthPolicyMap  = applicationHealthPolicyMap;
 }