示例#1
0
        /// <summary>
        /// Lists the traffic manager rules.
        /// </summary>
        /// <param name="predicate">Optional predicate used to filter the output rules.</param>
        /// <returns>The <see cref="IEnumerable{T}"/> of traffic manager rules.</returns>
        public IEnumerable <TrafficRule> ListRules(Func <TrafficRule, bool> predicate = null)
        {
            var rulesResponse = hive.Consul.Client.KV.ListOrDefault <JObject>($"{proxyManagerPrefix}/conf/{Name}/rules/").Result;

            if (rulesResponse != null)
            {
                var rules = new List <TrafficRule>();

                foreach (var rulebject in rulesResponse)
                {
                    var rule = TrafficRule.ParseJson(rulebject.ToString());

                    if (predicate == null || predicate(rule))
                    {
                        rules.Add(rule);
                    }
                }

                return(rules);
            }
            else
            {
                return(new TrafficRule[0]);
            }
        }
示例#2
0
        /// <summary>
        /// Returns a traffic manager rule if it exists.
        /// </summary>
        /// <param name="ruleName">The rule name.</param>
        /// <returns>The <see cref="TrafficRule"/> or <c>null</c>.</returns>
        public TrafficRule GetRule(string ruleName)
        {
            Covenant.Requires <ArgumentException>(HiveDefinition.IsValidName(ruleName));

            var ruleKey = GetProxyRuleKey(ruleName);

            if (hive.Consul.Client.KV.Exists(ruleKey).Result)
            {
                return(TrafficRule.ParseJson(hive.Consul.Client.KV.GetString(ruleKey).Result));
            }
            else
            {
                return(null);
            }
        }