/// <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;
 }
Example #2
0
 /// <summary>
 /// Initializes a new instance of the ApplicationUpgradeDescription class.
 /// </summary>
 /// <param name="name">The name of the target application, including the 'fabric:' URI scheme.</param>
 /// <param name="targetApplicationTypeVersion">The target application type version (found in the application manifest)
 /// for the application upgrade.</param>
 /// <param name="parameters">List of application parameters with overridden values from their default values specified
 /// in the application manifest.</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="monitoringPolicy">Describes the parameters for monitoring an upgrade in Monitored mode.</param>
 /// <param name="applicationHealthPolicy">Defines a health policy used to evaluate the health of an application or one
 /// of its children entities.
 /// </param>
 public ApplicationUpgradeDescription(
     string name,
     string targetApplicationTypeVersion,
     IReadOnlyDictionary <string, string> parameters,
     UpgradeKind?upgradeKind        = Common.UpgradeKind.Rolling,
     UpgradeMode?rollingUpgradeMode = Common.UpgradeMode.UnmonitoredAuto,
     long?upgradeReplicaSetCheckTimeoutInSeconds = default(long?),
     bool?forceRestart = default(bool?),
     MonitoringPolicyDescription monitoringPolicy    = default(MonitoringPolicyDescription),
     ApplicationHealthPolicy applicationHealthPolicy = default(ApplicationHealthPolicy))
 {
     name.ThrowIfNull(nameof(name));
     targetApplicationTypeVersion.ThrowIfNull(nameof(targetApplicationTypeVersion));
     parameters.ThrowIfNull(nameof(parameters));
     upgradeKind.ThrowIfNull(nameof(upgradeKind));
     this.Name = name;
     this.TargetApplicationTypeVersion = targetApplicationTypeVersion;
     this.Parameters         = parameters;
     this.UpgradeKind        = upgradeKind;
     this.RollingUpgradeMode = rollingUpgradeMode;
     this.UpgradeReplicaSetCheckTimeoutInSeconds = upgradeReplicaSetCheckTimeoutInSeconds;
     this.ForceRestart            = forceRestart;
     this.MonitoringPolicy        = monitoringPolicy;
     this.ApplicationHealthPolicy = applicationHealthPolicy;
 }
 /// <summary>
 /// Initializes a new instance of the ApplicationUpgradeDescription class.
 /// </summary>
 /// <param name="name">The name of the target application, including the 'fabric:' URI scheme.</param>
 /// <param name="targetApplicationTypeVersion">The target application type version (found in the application manifest)
 /// for the application upgrade.</param>
 /// <param name="upgradeKind">The kind of upgrade out of the following possible values. Possible values include:
 /// 'Invalid', 'Rolling'</param>
 /// <param name="parameters">List of application parameters with overridden values from their default values specified
 /// in the application manifest.</param>
 /// <param name="rollingUpgradeMode">The mode used to monitor health during a rolling upgrade. The values are
 /// UnmonitoredAuto, UnmonitoredManual, Monitored, and UnmonitoredDeferred. Possible values include: 'Invalid',
 /// 'UnmonitoredAuto', 'UnmonitoredManual', 'Monitored', 'UnmonitoredDeferred'</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="applicationHealthPolicy">Defines a health policy 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>
 /// <param name="managedApplicationIdentity">Managed application identity description.</param>
 public ApplicationUpgradeDescription(
     string name,
     string targetApplicationTypeVersion,
     UpgradeKind?upgradeKind = Common.UpgradeKind.Rolling,
     IReadOnlyDictionary <string, string> parameters = default(IReadOnlyDictionary <string, string>),
     UpgradeMode?rollingUpgradeMode = Common.UpgradeMode.UnmonitoredAuto,
     long?upgradeReplicaSetCheckTimeoutInSeconds = default(long?),
     bool?forceRestart          = default(bool?),
     UpgradeSortOrder?sortOrder = Common.UpgradeSortOrder.Default,
     MonitoringPolicyDescription monitoringPolicy    = default(MonitoringPolicyDescription),
     ApplicationHealthPolicy applicationHealthPolicy = default(ApplicationHealthPolicy),
     long?instanceCloseDelayDurationInSeconds        = default(long?),
     ManagedApplicationIdentityDescription managedApplicationIdentity = default(ManagedApplicationIdentityDescription))
 {
     name.ThrowIfNull(nameof(name));
     targetApplicationTypeVersion.ThrowIfNull(nameof(targetApplicationTypeVersion));
     upgradeKind.ThrowIfNull(nameof(upgradeKind));
     this.Name = name;
     this.TargetApplicationTypeVersion = targetApplicationTypeVersion;
     this.UpgradeKind        = upgradeKind;
     this.Parameters         = parameters;
     this.RollingUpgradeMode = rollingUpgradeMode;
     this.UpgradeReplicaSetCheckTimeoutInSeconds = upgradeReplicaSetCheckTimeoutInSeconds;
     this.ForceRestart                        = forceRestart;
     this.SortOrder                           = sortOrder;
     this.MonitoringPolicy                    = monitoringPolicy;
     this.ApplicationHealthPolicy             = applicationHealthPolicy;
     this.InstanceCloseDelayDurationInSeconds = instanceCloseDelayDurationInSeconds;
     this.ManagedApplicationIdentity          = managedApplicationIdentity;
 }
 /// <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 ComposeDeploymentUpgradeProgressInfo class.
 /// </summary>
 /// <param name="deploymentName">The name of the target deployment.</param>
 /// <param name="applicationName">The name of the target application, including the 'fabric:' URI scheme.</param>
 /// <param name="upgradeState">The state of the compose deployment upgrade.
 /// . Possible values include: 'Invalid', 'ProvisioningTarget', 'RollingForwardInProgress', 'RollingForwardPending',
 /// 'UnprovisioningCurrent', 'RollingForwardCompleted', 'RollingBackInProgress', 'UnprovisioningTarget',
 /// 'RollingBackCompleted', 'Failed'</param>
 /// <param name="upgradeStatusDetails">Additional detailed information about the status of the pending upgrade.</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="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="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="monitoringPolicy">Describes the parameters for monitoring an upgrade in Monitored mode.</param>
 /// <param name="applicationHealthPolicy">Defines a health policy used to evaluate the health of an application or one
 /// of its children entities.
 /// </param>
 /// <param name="targetApplicationTypeVersion">The target application type version (found in the application manifest)
 /// for the application upgrade.</param>
 /// <param name="upgradeDuration">The estimated amount of time that the overall upgrade elapsed. It is first
 /// interpreted as a string representing an ISO 8601 duration. If that fails, then it is interpreted as a number
 /// representing the total number of milliseconds.</param>
 /// <param name="currentUpgradeDomainDuration">The estimated amount of time spent processing current Upgrade Domain. It
 /// is first interpreted as a string representing an ISO 8601 duration. If that fails, then it is interpreted as a
 /// number representing the total number of milliseconds.</param>
 /// <param name="applicationUnhealthyEvaluations">List of health evaluations that resulted in the current aggregated
 /// health state.</param>
 /// <param name="currentUpgradeDomainProgress">Information about the current in-progress upgrade domain.</param>
 /// <param name="startTimestampUtc">The estimated UTC datetime when the upgrade started.</param>
 /// <param name="failureTimestampUtc">The estimated UTC datetime when the upgrade failed and FailureAction was
 /// executed.</param>
 /// <param name="failureReason">The cause of an upgrade failure that resulted in FailureAction being executed. Possible
 /// values include: 'None', 'Interrupted', 'HealthCheck', 'UpgradeDomainTimeout', 'OverallUpgradeTimeout'</param>
 /// <param name="upgradeDomainProgressAtFailure">Information about the upgrade domain progress at the time of upgrade
 /// failure.</param>
 /// <param name="applicationUpgradeStatusDetails">Additional details of application upgrade including failure
 /// message.</param>
 public ComposeDeploymentUpgradeProgressInfo(
     string deploymentName  = default(string),
     string applicationName = default(string),
     ComposeDeploymentUpgradeState?upgradeState = default(ComposeDeploymentUpgradeState?),
     string upgradeStatusDetails    = default(string),
     UpgradeKind?upgradeKind        = Common.UpgradeKind.Rolling,
     UpgradeMode?rollingUpgradeMode = Common.UpgradeMode.UnmonitoredAuto,
     bool?forceRestart = default(bool?),
     long?upgradeReplicaSetCheckTimeoutInSeconds     = default(long?),
     MonitoringPolicyDescription monitoringPolicy    = default(MonitoringPolicyDescription),
     ApplicationHealthPolicy applicationHealthPolicy = default(ApplicationHealthPolicy),
     string targetApplicationTypeVersion             = default(string),
     string upgradeDuration = default(string),
     string currentUpgradeDomainDuration = default(string),
     IEnumerable <HealthEvaluationWrapper> applicationUnhealthyEvaluations = default(IEnumerable <HealthEvaluationWrapper>),
     CurrentUpgradeDomainProgressInfo currentUpgradeDomainProgress         = default(CurrentUpgradeDomainProgressInfo),
     string startTimestampUtc    = default(string),
     string failureTimestampUtc  = default(string),
     FailureReason?failureReason = default(FailureReason?),
     FailureUpgradeDomainProgressInfo upgradeDomainProgressAtFailure = default(FailureUpgradeDomainProgressInfo),
     string applicationUpgradeStatusDetails = default(string))
 {
     this.DeploymentName       = deploymentName;
     this.ApplicationName      = applicationName;
     this.UpgradeState         = upgradeState;
     this.UpgradeStatusDetails = upgradeStatusDetails;
     this.UpgradeKind          = upgradeKind;
     this.RollingUpgradeMode   = rollingUpgradeMode;
     this.ForceRestart         = forceRestart;
     this.UpgradeReplicaSetCheckTimeoutInSeconds = upgradeReplicaSetCheckTimeoutInSeconds;
     this.MonitoringPolicy             = monitoringPolicy;
     this.ApplicationHealthPolicy      = applicationHealthPolicy;
     this.TargetApplicationTypeVersion = targetApplicationTypeVersion;
     this.UpgradeDuration = upgradeDuration;
     this.CurrentUpgradeDomainDuration    = currentUpgradeDomainDuration;
     this.ApplicationUnhealthyEvaluations = applicationUnhealthyEvaluations;
     this.CurrentUpgradeDomainProgress    = currentUpgradeDomainProgress;
     this.StartTimestampUtc               = startTimestampUtc;
     this.FailureTimestampUtc             = failureTimestampUtc;
     this.FailureReason                   = failureReason;
     this.UpgradeDomainProgressAtFailure  = upgradeDomainProgressAtFailure;
     this.ApplicationUpgradeStatusDetails = applicationUpgradeStatusDetails;
 }
Example #6
0
 /// <summary>
 /// Initializes a new instance of the ComposeDeploymentUpgradeDescription class.
 /// </summary>
 /// <param name="deploymentName">The name of the deployment.</param>
 /// <param name="composeFileContent">The content of the compose file that describes the deployment to create.</param>
 /// <param name="upgradeKind">The kind of upgrade out of the following possible values. Possible values include:
 /// 'Invalid', 'Rolling'</param>
 /// <param name="registryCredential">Credential information to connect to container registry.</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="monitoringPolicy">Describes the parameters for monitoring an upgrade in Monitored mode.</param>
 /// <param name="applicationHealthPolicy">Defines a health policy used to evaluate the health of an application or one
 /// of its children entities.
 /// </param>
 public ComposeDeploymentUpgradeDescription(
     string deploymentName,
     string composeFileContent,
     UpgradeKind?upgradeKind = Common.UpgradeKind.Rolling,
     RegistryCredential registryCredential       = default(RegistryCredential),
     UpgradeMode?rollingUpgradeMode              = Common.UpgradeMode.UnmonitoredAuto,
     long?upgradeReplicaSetCheckTimeoutInSeconds = default(long?),
     bool?forceRestart = default(bool?),
     MonitoringPolicyDescription monitoringPolicy    = default(MonitoringPolicyDescription),
     ApplicationHealthPolicy applicationHealthPolicy = default(ApplicationHealthPolicy))
 {
     deploymentName.ThrowIfNull(nameof(deploymentName));
     composeFileContent.ThrowIfNull(nameof(composeFileContent));
     upgradeKind.ThrowIfNull(nameof(upgradeKind));
     this.DeploymentName     = deploymentName;
     this.ComposeFileContent = composeFileContent;
     this.UpgradeKind        = upgradeKind;
     this.RegistryCredential = registryCredential;
     this.RollingUpgradeMode = rollingUpgradeMode;
     this.UpgradeReplicaSetCheckTimeoutInSeconds = upgradeReplicaSetCheckTimeoutInSeconds;
     this.ForceRestart            = forceRestart;
     this.MonitoringPolicy        = monitoringPolicy;
     this.ApplicationHealthPolicy = applicationHealthPolicy;
 }