/// <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]); } }
/// <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); } }