/// <summary> /// start an application upgrade /// </summary> /// <param name="fromPackage">from package</param> /// <param name="toPackage">to package</param> /// <param name="isRolling">specify if rolling</param> /// <param name="mode">monitor mode</param> /// <param name="timeout">timeout for upgrade start</param> /// <returns>true if upgrade started</returns> public bool TryApplicationUpgrade(PackageSettings fromPackage, PackageSettings toPackage, bool isRolling, UpgradeMonitor mode, TimeSpan timeout) { this.LastException = null; try { ApplicationUpgradeDescription upgradeDescription = new ApplicationUpgradeDescription(); // we use the "from" package's address upgradeDescription.ApplicationName = new Uri(fromPackage.ApplicationAddress); // we use the "to" package's version upgradeDescription.TargetApplicationTypeVersion = toPackage.ApplicationVersion; // split parameters if any are specified NameValueCollection upgradeParams = Control64.GetApplicationParameters(toPackage); if (upgradeParams != null && upgradeParams.Count > 0) { upgradeDescription.ApplicationParameters.Add(upgradeParams); } RollingUpgradePolicyDescription policy = new RollingUpgradePolicyDescription(); policy.ForceRestart = true; policy.UpgradeMode = RollingUpgradeMode.UnmonitoredManual; if (isRolling) { switch (mode) { case UpgradeMonitor.Auto: policy.UpgradeMode = RollingUpgradeMode.UnmonitoredAuto; break; case UpgradeMonitor.Manual: policy.UpgradeMode = RollingUpgradeMode.UnmonitoredManual; break; } policy.UpgradeReplicaSetCheckTimeout = timeout; } upgradeDescription.UpgradePolicyDescription = policy; this.fc.ApplicationManager.UpgradeApplicationAsync(upgradeDescription, Defaults.UpgradeTimeout, CancellationToken.None).Wait(); return true; } catch (Exception e) { this.LastException = e; if (e is AggregateException) { if (e is FabricException) { log.Error("Upgrade failed: " + e.InnerException.Message); return false; } log.Error("UpgradeApplication Aggregate failure, err={0}", e.InnerException.Message); } else { log.Error("UpgradeApplication failed, err={0}", e.Message); } } return false; }
/// <summary> /// start an application upgrade /// </summary> /// <param name="fromPackage">from package</param> /// <param name="toPackage">to package</param> /// <param name="isRolling">specify if rolling</param> /// <param name="mode">monitor mode</param> /// <param name="timeout">timeout for upgrade start</param> /// <returns>true if upgrade started</returns> public bool TryApplicationUpgrade(PackageSettings fromPackage, PackageSettings toPackage, bool isRolling, UpgradeMonitor mode, TimeSpan timeout) { this.LastException = null; try { ApplicationUpgradeDescription upgradeDescription = new ApplicationUpgradeDescription(); // we use the "from" package's address upgradeDescription.ApplicationName = new Uri(fromPackage.ApplicationAddress); // we use the "to" package's version upgradeDescription.TargetApplicationTypeVersion = toPackage.ApplicationVersion; // split parameters if any are specified NameValueCollection upgradeParams = Control64.GetApplicationParameters(toPackage); if (upgradeParams != null && upgradeParams.Count > 0) { upgradeDescription.ApplicationParameters.Add(upgradeParams); } RollingUpgradePolicyDescription policy = new RollingUpgradePolicyDescription(); policy.ForceRestart = true; policy.UpgradeMode = RollingUpgradeMode.UnmonitoredManual; if (isRolling) { switch (mode) { case UpgradeMonitor.Auto: policy.UpgradeMode = RollingUpgradeMode.UnmonitoredAuto; break; case UpgradeMonitor.Manual: policy.UpgradeMode = RollingUpgradeMode.UnmonitoredManual; break; } policy.UpgradeReplicaSetCheckTimeout = timeout; } upgradeDescription.UpgradePolicyDescription = policy; this.fc.ApplicationManager.UpgradeApplicationAsync(upgradeDescription, Defaults.UpgradeTimeout, CancellationToken.None).Wait(); return(true); } catch (Exception e) { this.LastException = e; if (e is AggregateException) { if (e is FabricException) { log.Error("Upgrade failed: " + e.InnerException.Message); return(false); } log.Error("UpgradeApplication Aggregate failure, err={0}", e.InnerException.Message); } else { log.Error("UpgradeApplication failed, err={0}", e.Message); } } return(false); }