alarm_config.cc 4.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152
  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. freez(cfg->chart_labels);
  40. }
  41. char *generate_provide_alarm_configuration(size_t *len, struct provide_alarm_configuration *data)
  42. {
  43. ProvideAlarmConfiguration msg;
  44. AlarmConfiguration *cfg = msg.mutable_config();
  45. msg.set_config_hash(data->cfg_hash);
  46. if (data->cfg.alarm)
  47. cfg->set_alarm(data->cfg.alarm);
  48. if (data->cfg.tmpl)
  49. cfg->set_template_(data->cfg.tmpl);
  50. if(data->cfg.on_chart)
  51. cfg->set_on_chart(data->cfg.on_chart);
  52. if (data->cfg.classification)
  53. cfg->set_classification(data->cfg.classification);
  54. if (data->cfg.type)
  55. cfg->set_type(data->cfg.type);
  56. if (data->cfg.component)
  57. cfg->set_component(data->cfg.component);
  58. if (data->cfg.os)
  59. cfg->set_os(data->cfg.os);
  60. if (data->cfg.hosts)
  61. cfg->set_hosts(data->cfg.hosts);
  62. if (data->cfg.plugin)
  63. cfg->set_plugin(data->cfg.plugin);
  64. if(data->cfg.module)
  65. cfg->set_module(data->cfg.module);
  66. if(data->cfg.charts)
  67. cfg->set_charts(data->cfg.charts);
  68. if(data->cfg.families)
  69. cfg->set_families(data->cfg.families);
  70. if(data->cfg.lookup)
  71. cfg->set_lookup(data->cfg.lookup);
  72. if(data->cfg.every)
  73. cfg->set_every(data->cfg.every);
  74. if(data->cfg.units)
  75. cfg->set_units(data->cfg.units);
  76. if (data->cfg.green)
  77. cfg->set_green(data->cfg.green);
  78. if (data->cfg.red)
  79. cfg->set_red(data->cfg.red);
  80. if (data->cfg.calculation_expr)
  81. cfg->set_calculation_expr(data->cfg.calculation_expr);
  82. if (data->cfg.warning_expr)
  83. cfg->set_warning_expr(data->cfg.warning_expr);
  84. if (data->cfg.critical_expr)
  85. cfg->set_critical_expr(data->cfg.critical_expr);
  86. if (data->cfg.recipient)
  87. cfg->set_recipient(data->cfg.recipient);
  88. if (data->cfg.exec)
  89. cfg->set_exec(data->cfg.exec);
  90. if (data->cfg.delay)
  91. cfg->set_delay(data->cfg.delay);
  92. if (data->cfg.repeat)
  93. cfg->set_repeat(data->cfg.repeat);
  94. if (data->cfg.info)
  95. cfg->set_info(data->cfg.info);
  96. if (data->cfg.options)
  97. cfg->set_options(data->cfg.options);
  98. if (data->cfg.host_labels)
  99. cfg->set_host_labels(data->cfg.host_labels);
  100. cfg->set_p_db_lookup_after(data->cfg.p_db_lookup_after);
  101. cfg->set_p_db_lookup_before(data->cfg.p_db_lookup_before);
  102. if (data->cfg.p_db_lookup_dimensions)
  103. cfg->set_p_db_lookup_dimensions(data->cfg.p_db_lookup_dimensions);
  104. if (data->cfg.p_db_lookup_method)
  105. cfg->set_p_db_lookup_method(data->cfg.p_db_lookup_method);
  106. if (data->cfg.p_db_lookup_options)
  107. cfg->set_p_db_lookup_options(data->cfg.p_db_lookup_options);
  108. cfg->set_p_update_every(data->cfg.p_update_every);
  109. if (data->cfg.chart_labels)
  110. cfg->set_chart_labels(data->cfg.chart_labels);
  111. *len = PROTO_COMPAT_MSG_SIZE(msg);
  112. char *bin = (char*)mallocz(*len);
  113. if (!msg.SerializeToArray(bin, *len))
  114. return NULL;
  115. return bin;
  116. }
  117. char *parse_send_alarm_configuration(const char *data, size_t len)
  118. {
  119. SendAlarmConfiguration msg;
  120. if (!msg.ParseFromArray(data, len))
  121. return NULL;
  122. if (!msg.config_hash().c_str())
  123. return NULL;
  124. return strdupz(msg.config_hash().c_str());
  125. }