Example #1
0
        /// <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);
        }
Example #2
0
        /// <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());
        }
Example #3
0
        /// <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];
                }
            }
        }
Example #4
0
        /// <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];
                }
            }
        }
Example #5
0
        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);
        }
Example #6
0
        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;
        }
Example #7
0
        /// <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;
        }
Example #8
0
        /// <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);
        }
Example #9
0
        /// <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;
        }
Example #10
0
        /// <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();
        }