/// <summary> /// try to create a new <see cref="PackageSettings"/> /// </summary> /// <param name="args">arguments to use</param> /// <param name="packageSettings">the new package settings</param> /// <returns>true if successful</returns> public static bool TryCreate(string[] args, out PackageSettings packageSettings) { packageSettings = null; if (args == null) { return(false); } packageSettings = new PackageSettings(); packageSettings.InitDefs(args); return(true); }
/// <summary> /// try to create a new <see cref="PackageSettings"/> /// </summary> /// <param name="appPath">path to load application manifest</param> /// <param name="packageSettings">the new package settings</param> /// <returns>true if successful</returns> public static bool TryCreate(string appPath, out PackageSettings packageSettings) { packageSettings = null; if (appPath == null) { return(false); } packageSettings = new PackageSettings(); packageSettings.data[InputPath] = appPath; return(packageSettings.IsValidForCreate()); }
/// <summary> /// creates a control container /// </summary> /// <param name="clusterSettings">cluster settings to use</param> /// <param name="packageSettings">package settings to use</param> public Control64(ClusterSettings clusterSettings, PackageSettings packageSettings) { if (clusterSettings != null) { foreach (string k in clusterSettings.Data.Keys) { this.control.Cluster.Data[k] = clusterSettings.Data[k]; } } if (packageSettings != null) { foreach (string k in packageSettings.Data.Keys) { this.control.Package.Data[k] = packageSettings.Data[k]; } } }
static NameValueCollection GetApplicationParameters(PackageSettings package) { NameValueCollection nvc = new NameValueCollection(); if (package.ApplicationParameters != null && !string.IsNullOrWhiteSpace(package.ApplicationParameters)) { string[] values = package.ApplicationParameters.Split(PackageSettings.ApplicationParameterSplitChar); for (int i = 0; i < values.Length; i++) { string[] nv = values[i].Split('='); if (nv.Length == 2) { nvc[nv[0]] = nv[1]; } } } return(nvc); }
static NameValueCollection GetApplicationParameters(PackageSettings package) { NameValueCollection nvc = new NameValueCollection(); if (package.ApplicationParameters != null && !string.IsNullOrWhiteSpace(package.ApplicationParameters)) { string[] values = package.ApplicationParameters.Split(PackageSettings.ApplicationParameterSplitChar); for (int i = 0; i < values.Length; i++) { string[] nv = values[i].Split('='); if (nv.Length == 2) { nvc[nv[0]] = nv[1]; } } } return nvc; }
/// <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); }
/// <summary> /// try to create a new <see cref="PackageSettings"/> /// </summary> /// <param name="args">arguments to use</param> /// <param name="packageSettings">the new package settings</param> /// <returns>true if successful</returns> public static bool TryCreate(string[] args, out PackageSettings packageSettings) { packageSettings = null; if (args == null) { return false; } packageSettings = new PackageSettings(); packageSettings.InitDefs(args); return true; }
/// <summary> /// try to create a new <see cref="PackageSettings"/> /// </summary> /// <param name="appPath">path to load application manifest</param> /// <param name="packageSettings">the new package settings</param> /// <returns>true if successful</returns> public static bool TryCreate(string appPath, out PackageSettings packageSettings) { packageSettings = null; if (appPath == null) { return false; } packageSettings = new PackageSettings(); packageSettings.data[InputPath] = appPath; return packageSettings.IsValidForCreate(); }