Influx2Config.cs 1.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960
  1. using System;
  2. using InfluxDB.Client;
  3. namespace OhmGraphite
  4. {
  5. public class Influx2Config
  6. {
  7. public InfluxDBClientOptions Options { get; }
  8. public Influx2Config(InfluxDBClientOptions options)
  9. {
  10. Options = options;
  11. }
  12. public static Influx2Config ParseAppSettings(IAppConfig config)
  13. {
  14. var builder = new InfluxDBClientOptions.Builder();
  15. string influxAddress = config["influx2_address"];
  16. if (!Uri.TryCreate(influxAddress, UriKind.Absolute, out var addr))
  17. {
  18. throw new ApplicationException($"Unable to parse {influxAddress} into a Uri");
  19. }
  20. builder.Url(influxAddress);
  21. var token = config["influx2_token"];
  22. var user = config["influx2_user"];
  23. var password = config["influx2_password"];
  24. if (!string.IsNullOrEmpty(token))
  25. {
  26. builder.AuthenticateToken(token);
  27. }
  28. else
  29. {
  30. builder.Authenticate(user, password.ToCharArray());
  31. }
  32. var bucket = config["influx2_bucket"];
  33. if (string.IsNullOrEmpty(bucket))
  34. {
  35. throw new ApplicationException($"influx2 needs a bucket to be configured");
  36. }
  37. builder.Bucket(bucket);
  38. var org = config["influx2_org"];
  39. if (string.IsNullOrEmpty(org))
  40. {
  41. throw new ApplicationException($"influx2 needs an org to be configured");
  42. }
  43. builder.Org(org);
  44. var validation = MetricConfig.CertificateValidationCallback(config["certificate_verification"] ?? "True");
  45. builder.RemoteCertificateValidationCallback(validation);
  46. return new Influx2Config(builder.Build());
  47. }
  48. }
  49. }