pluginsd_dyncfg.c 2.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263
  1. // SPDX-License-Identifier: GPL-3.0-or-later
  2. #include "pluginsd_dyncfg.h"
  3. // ----------------------------------------------------------------------------
  4. PARSER_RC pluginsd_config(char **words, size_t num_words, PARSER *parser) {
  5. RRDHOST *host = pluginsd_require_scope_host(parser, PLUGINSD_KEYWORD_CONFIG);
  6. if(!host) return PARSER_RC_ERROR;
  7. size_t i = 1;
  8. char *id = get_word(words, num_words, i++);
  9. char *action = get_word(words, num_words, i++);
  10. if(strcmp(action, PLUGINSD_KEYWORD_CONFIG_ACTION_CREATE) == 0) {
  11. char *status_str = get_word(words, num_words, i++);
  12. char *type_str = get_word(words, num_words, i++);
  13. char *path = get_word(words, num_words, i++);
  14. char *source_type_str = get_word(words, num_words, i++);
  15. char *source = get_word(words, num_words, i++);
  16. char *supported_cmds_str = get_word(words, num_words, i++);
  17. DYNCFG_STATUS status = dyncfg_status2id(status_str);
  18. DYNCFG_TYPE type = dyncfg_type2id(type_str);
  19. DYNCFG_SOURCE_TYPE source_type = dyncfg_source_type2id(source_type_str);
  20. DYNCFG_CMDS cmds = dyncfg_cmds2id(supported_cmds_str);
  21. if(!dyncfg_add_low_level(
  22. host,
  23. id,
  24. path,
  25. status,
  26. type,
  27. source_type,
  28. source,
  29. cmds,
  30. 0,
  31. 0,
  32. false,
  33. pluginsd_function_execute_cb,
  34. parser))
  35. return PARSER_RC_ERROR;
  36. }
  37. else if(strcmp(action, PLUGINSD_KEYWORD_CONFIG_ACTION_DELETE) == 0) {
  38. dyncfg_del_low_level(host, id);
  39. }
  40. else if(strcmp(action, PLUGINSD_KEYWORD_CONFIG_ACTION_STATUS) == 0) {
  41. char *status_str = get_word(words, num_words, i++);
  42. dyncfg_status_low_level(host, id, dyncfg_status2id(status_str));
  43. }
  44. else
  45. nd_log(NDLS_COLLECTORS, NDLP_WARNING, "DYNCFG: unknown action '%s' received from plugin", action);
  46. parser->user.data_collections_count++;
  47. return PARSER_RC_OK;
  48. }
  49. // ----------------------------------------------------------------------------
  50. PARSER_RC pluginsd_dyncfg_noop(char **words __maybe_unused, size_t num_words __maybe_unused, PARSER *parser __maybe_unused) {
  51. return PARSER_RC_OK;
  52. }