alarm_config.cc 4.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147
  1. // SPDX-License-Identifier: GPL-3.0-or-later
  2. #include "alarm_config.h"
  3. #include "proto/alarm/v1/config.pb.h"
  4. #include "libnetdata/libnetdata.h"
  5. #include "schema_wrapper_utils.h"
  6. using namespace alarms::v1;
  7. void destroy_aclk_alarm_configuration(struct aclk_alarm_configuration *cfg)
  8. {
  9. freez(cfg->alarm);
  10. freez(cfg->tmpl);
  11. freez(cfg->on_chart);
  12. freez(cfg->classification);
  13. freez(cfg->type);
  14. freez(cfg->component);
  15. freez(cfg->os);
  16. freez(cfg->hosts);
  17. freez(cfg->plugin);
  18. freez(cfg->module);
  19. freez(cfg->charts);
  20. freez(cfg->families);
  21. freez(cfg->lookup);
  22. freez(cfg->every);
  23. freez(cfg->units);
  24. freez(cfg->green);
  25. freez(cfg->red);
  26. freez(cfg->calculation_expr);
  27. freez(cfg->warning_expr);
  28. freez(cfg->critical_expr);
  29. freez(cfg->recipient);
  30. freez(cfg->exec);
  31. freez(cfg->delay);
  32. freez(cfg->repeat);
  33. freez(cfg->info);
  34. freez(cfg->options);
  35. freez(cfg->host_labels);
  36. freez(cfg->p_db_lookup_dimensions);
  37. freez(cfg->p_db_lookup_method);
  38. freez(cfg->p_db_lookup_options);
  39. }
  40. char *generate_provide_alarm_configuration(size_t *len, struct provide_alarm_configuration *data)
  41. {
  42. ProvideAlarmConfiguration msg;
  43. AlarmConfiguration *cfg = msg.mutable_config();
  44. msg.set_config_hash(data->cfg_hash);
  45. if (data->cfg.alarm)
  46. cfg->set_alarm(data->cfg.alarm);
  47. if (data->cfg.tmpl)
  48. cfg->set_template_(data->cfg.tmpl);
  49. if(data->cfg.on_chart)
  50. cfg->set_on_chart(data->cfg.on_chart);
  51. if (data->cfg.classification)
  52. cfg->set_classification(data->cfg.classification);
  53. if (data->cfg.type)
  54. cfg->set_type(data->cfg.type);
  55. if (data->cfg.component)
  56. cfg->set_component(data->cfg.component);
  57. if (data->cfg.os)
  58. cfg->set_os(data->cfg.os);
  59. if (data->cfg.hosts)
  60. cfg->set_hosts(data->cfg.hosts);
  61. if (data->cfg.plugin)
  62. cfg->set_plugin(data->cfg.plugin);
  63. if(data->cfg.module)
  64. cfg->set_module(data->cfg.module);
  65. if(data->cfg.charts)
  66. cfg->set_charts(data->cfg.charts);
  67. if(data->cfg.families)
  68. cfg->set_families(data->cfg.families);
  69. if(data->cfg.lookup)
  70. cfg->set_lookup(data->cfg.lookup);
  71. if(data->cfg.every)
  72. cfg->set_every(data->cfg.every);
  73. if(data->cfg.units)
  74. cfg->set_units(data->cfg.units);
  75. if (data->cfg.green)
  76. cfg->set_green(data->cfg.green);
  77. if (data->cfg.red)
  78. cfg->set_red(data->cfg.red);
  79. if (data->cfg.calculation_expr)
  80. cfg->set_calculation_expr(data->cfg.calculation_expr);
  81. if (data->cfg.warning_expr)
  82. cfg->set_warning_expr(data->cfg.warning_expr);
  83. if (data->cfg.critical_expr)
  84. cfg->set_critical_expr(data->cfg.critical_expr);
  85. if (data->cfg.recipient)
  86. cfg->set_recipient(data->cfg.recipient);
  87. if (data->cfg.exec)
  88. cfg->set_exec(data->cfg.exec);
  89. if (data->cfg.delay)
  90. cfg->set_delay(data->cfg.delay);
  91. if (data->cfg.repeat)
  92. cfg->set_repeat(data->cfg.repeat);
  93. if (data->cfg.info)
  94. cfg->set_info(data->cfg.info);
  95. if (data->cfg.options)
  96. cfg->set_options(data->cfg.options);
  97. if (data->cfg.host_labels)
  98. cfg->set_host_labels(data->cfg.host_labels);
  99. cfg->set_p_db_lookup_after(data->cfg.p_db_lookup_after);
  100. cfg->set_p_db_lookup_before(data->cfg.p_db_lookup_before);
  101. if (data->cfg.p_db_lookup_dimensions)
  102. cfg->set_p_db_lookup_dimensions(data->cfg.p_db_lookup_dimensions);
  103. if (data->cfg.p_db_lookup_method)
  104. cfg->set_p_db_lookup_method(data->cfg.p_db_lookup_method);
  105. if (data->cfg.p_db_lookup_options)
  106. cfg->set_p_db_lookup_options(data->cfg.p_db_lookup_options);
  107. cfg->set_p_update_every(data->cfg.p_update_every);
  108. *len = PROTO_COMPAT_MSG_SIZE(msg);
  109. char *bin = (char*)mallocz(*len);
  110. if (!msg.SerializeToArray(bin, *len))
  111. return NULL;
  112. return bin;
  113. }
  114. char *parse_send_alarm_configuration(const char *data, size_t len)
  115. {
  116. SendAlarmConfiguration msg;
  117. if (!msg.ParseFromArray(data, len))
  118. return NULL;
  119. if (!msg.config_hash().c_str())
  120. return NULL;
  121. return strdupz(msg.config_hash().c_str());
  122. }