private ApplicationUpgradePolicy SetUpgradePolicy(ApplicationUpgradePolicy currentPolicy) { if (currentPolicy == null) { currentPolicy = new ApplicationUpgradePolicy(); } if (ForceRestart.IsPresent) { currentPolicy.ForceRestart = true; } if (this.IsParameterBound(c => c.UpgradeReplicaSetCheckTimeoutSec)) { currentPolicy.UpgradeReplicaSetCheckTimeout = TimeSpan.FromSeconds(UpgradeReplicaSetCheckTimeoutSec).ToString(""); } //RollingUpgradeMonitoringPolicy if (currentPolicy.RollingUpgradeMonitoringPolicy == null) { //initialize with defaults currentPolicy.RollingUpgradeMonitoringPolicy = new ArmRollingUpgradeMonitoringPolicy( failureAction: "Manual", healthCheckStableDuration: TimeSpan.FromSeconds(120).ToString("c"), healthCheckRetryTimeout: TimeSpan.FromSeconds(600).ToString("c"), healthCheckWaitDuration: TimeSpan.FromSeconds(0).ToString("c"), upgradeTimeout: TimeSpan.MaxValue.ToString("c"), upgradeDomainTimeout: TimeSpan.MaxValue.ToString("c")); } if (this.IsParameterBound(c => c.FailureAction)) { currentPolicy.RollingUpgradeMonitoringPolicy.FailureAction = FailureAction.ToString(); } if (this.IsParameterBound(c => c.HealthCheckRetryTimeoutSec)) { currentPolicy.RollingUpgradeMonitoringPolicy.HealthCheckRetryTimeout = TimeSpan.FromSeconds(HealthCheckRetryTimeoutSec).ToString("c"); } if (this.IsParameterBound(c => c.HealthCheckWaitDurationSec)) { currentPolicy.RollingUpgradeMonitoringPolicy.HealthCheckWaitDuration = TimeSpan.FromSeconds(HealthCheckWaitDurationSec).ToString("c"); } if (this.IsParameterBound(c => c.HealthCheckStableDurationSec)) { currentPolicy.RollingUpgradeMonitoringPolicy.HealthCheckStableDuration = TimeSpan.FromSeconds(HealthCheckStableDurationSec).ToString("c"); } if (this.IsParameterBound(c => c.UpgradeDomainTimeoutSec)) { currentPolicy.RollingUpgradeMonitoringPolicy.UpgradeDomainTimeout = TimeSpan.FromSeconds(UpgradeDomainTimeoutSec).ToString("c"); } if (this.IsParameterBound(c => c.UpgradeTimeoutSec)) { currentPolicy.RollingUpgradeMonitoringPolicy.UpgradeTimeout = TimeSpan.FromSeconds(UpgradeTimeoutSec).ToString("c"); } //ApplicationHealthPolicy if (currentPolicy.ApplicationHealthPolicy == null) { currentPolicy.ApplicationHealthPolicy = new ArmApplicationHealthPolicy(); } if (ConsiderWarningAsError.IsPresent) { currentPolicy.ApplicationHealthPolicy.ConsiderWarningAsError = true; } if (currentPolicy.ApplicationHealthPolicy.DefaultServiceTypeHealthPolicy == null) { currentPolicy.ApplicationHealthPolicy.DefaultServiceTypeHealthPolicy = new ArmServiceTypeHealthPolicy( maxPercentUnhealthyPartitionsPerService: DefaultServiceTypeMaxPercentUnhealthyPartitionsPerService, maxPercentUnhealthyReplicasPerPartition: DefaultServiceTypeMaxPercentUnhealthyReplicasPerPartition, maxPercentUnhealthyServices: DefaultServiceTypeUnhealthyServicesMaxPercent); } else { if (this.IsParameterBound(c => c.DefaultServiceTypeMaxPercentUnhealthyPartitionsPerService)) { currentPolicy.ApplicationHealthPolicy.DefaultServiceTypeHealthPolicy.MaxPercentUnhealthyPartitionsPerService = DefaultServiceTypeMaxPercentUnhealthyPartitionsPerService; } if (this.IsParameterBound(c => c.DefaultServiceTypeMaxPercentUnhealthyReplicasPerPartition)) { currentPolicy.ApplicationHealthPolicy.DefaultServiceTypeHealthPolicy.MaxPercentUnhealthyReplicasPerPartition = DefaultServiceTypeMaxPercentUnhealthyReplicasPerPartition; } if (this.IsParameterBound(c => c.DefaultServiceTypeUnhealthyServicesMaxPercent)) { currentPolicy.ApplicationHealthPolicy.DefaultServiceTypeHealthPolicy.MaxPercentUnhealthyServices = DefaultServiceTypeUnhealthyServicesMaxPercent; } if (this.IsParameterBound(c => c.UnhealthyDeployedApplicationsMaxPercent)) { currentPolicy.ApplicationHealthPolicy.MaxPercentUnhealthyDeployedApplications = UnhealthyDeployedApplicationsMaxPercent; } } if (ServiceTypeHealthPolicyMap != null) { foreach (DictionaryEntry entry in this.ServiceTypeHealthPolicyMap) { currentPolicy.ApplicationHealthPolicy.ServiceTypeHealthPolicyMap.Add(entry.Key as string, this.ParseServiceTypeHealthPolicy(entry.Value as string)); } } return(currentPolicy); }
private ApplicationUpgradePolicy SetUpgradePolicy(ApplicationUpgradePolicy currentPolicy) { if (currentPolicy == null) { currentPolicy = new ApplicationUpgradePolicy(); } if (this.IsParameterBound(c => c.ForceRestart)) { currentPolicy.ForceRestart = this.ForceRestart.ToBool(); } if (this.IsParameterBound(c => c.RecreateApplication)) { currentPolicy.RecreateApplication = this.RecreateApplication.ToBool(); } if (this.IsParameterBound(c => c.UpgradeReplicaSetCheckTimeoutSec)) { currentPolicy.UpgradeReplicaSetCheckTimeout = this.UpgradeReplicaSetCheckTimeoutSec; } if (this.IsParameterBound(c => c.InstanceCloseDelayDurationSec)) { currentPolicy.InstanceCloseDelayDuration = this.InstanceCloseDelayDurationSec; } if (this.IsParameterBound(c => c.UpgradeMode)) { currentPolicy.UpgradeMode = this.UpgradeMode.ToString(); } if (this.RecreateApplication.ToBool()) { if ( this.IsParameterBound(c => c.UpgradeReplicaSetCheckTimeoutSec) || this.IsParameterBound(c => c.InstanceCloseDelayDurationSec) || this.IsParameterBound(c => c.UpgradeMode) || this.IsParameterBound(c => c.ForceRestart) || // RollingUpgradeMonitoringPolicy this.IsParameterBound(c => c.UpgradeDomainTimeoutSec) || this.IsParameterBound(c => c.UpgradeTimeoutSec) || this.IsParameterBound(c => c.HealthCheckWaitDurationSec) || this.IsParameterBound(c => c.HealthCheckRetryTimeoutSec) || this.IsParameterBound(c => c.HealthCheckStableDurationSec) || this.IsParameterBound(c => c.FailureAction) || // ApplicationHealthPolicy this.IsParameterBound(c => c.ServiceTypeHealthPolicyMap) || this.IsParameterBound(c => c.UnhealthyDeployedApplicationsMaxPercent) || this.IsParameterBound(c => c.DefaultServiceTypeUnhealthyServicesMaxPercent) || this.IsParameterBound(c => c.DefaultServiceTypeMaxPercentUnhealthyReplicasPerPartition) || this.IsParameterBound(c => c.DefaultServiceTypeMaxPercentUnhealthyPartitionsPerService) || this.IsParameterBound(c => c.DefaultServiceTypeMaxPercentUnhealthyPartitionsPerService) ) { throw new InvalidOperationException("If RecreateApplication=True, no other parameters are accepted."); } } else { // RollingUpgradeMonitoringPolicy if (currentPolicy.RollingUpgradeMonitoringPolicy == null) { // initialize with defaults currentPolicy.RollingUpgradeMonitoringPolicy = new RollingUpgradeMonitoringPolicy( failureAction: FailureActionDefault.ToString(), healthCheckStableDuration: HealthCheckStableDurationDefault, healthCheckRetryTimeout: HealthCheckRetryTimeoutDefault, healthCheckWaitDuration: HealthCheckWaitDurationDefault, upgradeTimeout: UpgradeTimeoutDefault, upgradeDomainTimeout: UpgradeDomainTimeoutDefault); } if (this.IsParameterBound(c => c.FailureAction)) { currentPolicy.RollingUpgradeMonitoringPolicy.FailureAction = this.FailureAction.ToString(); } if (this.IsParameterBound(c => c.HealthCheckRetryTimeoutSec)) { currentPolicy.RollingUpgradeMonitoringPolicy.HealthCheckRetryTimeout = TimeSpan.FromSeconds(this.HealthCheckRetryTimeoutSec).ToString("c"); } if (this.IsParameterBound(c => c.HealthCheckWaitDurationSec)) { currentPolicy.RollingUpgradeMonitoringPolicy.HealthCheckWaitDuration = TimeSpan.FromSeconds(this.HealthCheckWaitDurationSec).ToString("c"); } if (this.IsParameterBound(c => c.HealthCheckStableDurationSec)) { currentPolicy.RollingUpgradeMonitoringPolicy.HealthCheckStableDuration = TimeSpan.FromSeconds(this.HealthCheckStableDurationSec).ToString("c"); } if (this.IsParameterBound(c => c.UpgradeDomainTimeoutSec)) { currentPolicy.RollingUpgradeMonitoringPolicy.UpgradeDomainTimeout = TimeSpan.FromSeconds(this.UpgradeDomainTimeoutSec).ToString("c"); } if (this.IsParameterBound(c => c.UpgradeTimeoutSec)) { currentPolicy.RollingUpgradeMonitoringPolicy.UpgradeTimeout = TimeSpan.FromSeconds(this.UpgradeTimeoutSec).ToString("c"); } //ApplicationHealthPolicy if (currentPolicy.ApplicationHealthPolicy == null) { currentPolicy.ApplicationHealthPolicy = new ApplicationHealthPolicy(); } if (this.IsParameterBound(c => c.ConsiderWarningAsError)) { currentPolicy.ApplicationHealthPolicy.ConsiderWarningAsError = this.ConsiderWarningAsError.ToBool(); } if (currentPolicy.ApplicationHealthPolicy.DefaultServiceTypeHealthPolicy == null) { currentPolicy.ApplicationHealthPolicy.DefaultServiceTypeHealthPolicy = new ServiceTypeHealthPolicy( maxPercentUnhealthyPartitionsPerService: ServiceTypeMaxPercentUnhealthyPartitionsPerServiceDefault, maxPercentUnhealthyReplicasPerPartition: ServiceTypeMaxPercentUnhealthyReplicasPerPartitionDefault, maxPercentUnhealthyServices: ServiceTypeUnhealthyServicesMaxPercentDefault); } if (this.IsParameterBound(c => c.DefaultServiceTypeMaxPercentUnhealthyPartitionsPerService)) { currentPolicy.ApplicationHealthPolicy.DefaultServiceTypeHealthPolicy.MaxPercentUnhealthyPartitionsPerService = this.DefaultServiceTypeMaxPercentUnhealthyPartitionsPerService; } if (this.IsParameterBound(c => c.DefaultServiceTypeMaxPercentUnhealthyReplicasPerPartition)) { currentPolicy.ApplicationHealthPolicy.DefaultServiceTypeHealthPolicy.MaxPercentUnhealthyReplicasPerPartition = this.DefaultServiceTypeMaxPercentUnhealthyReplicasPerPartition; } if (this.IsParameterBound(c => c.DefaultServiceTypeUnhealthyServicesMaxPercent)) { currentPolicy.ApplicationHealthPolicy.DefaultServiceTypeHealthPolicy.MaxPercentUnhealthyServices = this.DefaultServiceTypeUnhealthyServicesMaxPercent; } if (this.IsParameterBound(c => c.UnhealthyDeployedApplicationsMaxPercent)) { currentPolicy.ApplicationHealthPolicy.MaxPercentUnhealthyDeployedApplications = this.UnhealthyDeployedApplicationsMaxPercent; } if (this.IsParameterBound(c => c.ServiceTypeHealthPolicyMap)) { if (this.ServiceTypeHealthPolicyMap == null) { currentPolicy.ApplicationHealthPolicy.ServiceTypeHealthPolicyMap = null; } else { if (currentPolicy.ApplicationHealthPolicy.ServiceTypeHealthPolicyMap == null) { currentPolicy.ApplicationHealthPolicy.ServiceTypeHealthPolicyMap = new Dictionary <string, ServiceTypeHealthPolicy>(); } foreach (DictionaryEntry entry in this.ServiceTypeHealthPolicyMap) { currentPolicy.ApplicationHealthPolicy.ServiceTypeHealthPolicyMap.Add(entry.Key as string, this.ParseServiceTypeHealthPolicy(entry.Value as string)); } } } } return(currentPolicy); }