node_info.cc 4.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136
  1. #include "node_info.h"
  2. #include "proto/nodeinstance/info/v1/info.pb.h"
  3. #include "schema_wrapper_utils.h"
  4. static int generate_node_info(nodeinstance::info::v1::NodeInfo *info, struct aclk_node_info *data)
  5. {
  6. google::protobuf::Map<std::string, std::string> *map;
  7. if (data->name)
  8. info->set_name(data->name);
  9. if (data->os)
  10. info->set_os(data->os);
  11. if (data->os_name)
  12. info->set_os_name(data->os_name);
  13. if (data->os_version)
  14. info->set_os_version(data->os_version);
  15. if (data->kernel_name)
  16. info->set_kernel_name(data->kernel_name);
  17. if (data->kernel_version)
  18. info->set_kernel_version(data->kernel_version);
  19. if (data->architecture)
  20. info->set_architecture(data->architecture);
  21. info->set_cpus(data->cpus);
  22. if (data->cpu_frequency)
  23. info->set_cpu_frequency(data->cpu_frequency);
  24. if (data->memory)
  25. info->set_memory(data->memory);
  26. if (data->disk_space)
  27. info->set_disk_space(data->disk_space);
  28. if (data->version)
  29. info->set_version(data->version);
  30. if (data->release_channel)
  31. info->set_release_channel(data->release_channel);
  32. if (data->timezone)
  33. info->set_timezone(data->timezone);
  34. if (data->virtualization_type)
  35. info->set_virtualization_type(data->virtualization_type);
  36. if (data->container_type)
  37. info->set_container_type(data->container_type);
  38. if (data->custom_info)
  39. info->set_custom_info(data->custom_info);
  40. if (data->machine_guid)
  41. info->set_machine_guid(data->machine_guid);
  42. nodeinstance::info::v1::MachineLearningInfo *ml_info = info->mutable_ml_info();
  43. ml_info->set_ml_capable(data->ml_info.ml_capable);
  44. ml_info->set_ml_enabled(data->ml_info.ml_enabled);
  45. map = info->mutable_host_labels();
  46. rrdlabels_walkthrough_read(data->host_labels_ptr, label_add_to_map_callback, map);
  47. return 0;
  48. }
  49. char *generate_update_node_info_message(size_t *len, struct update_node_info *info)
  50. {
  51. nodeinstance::info::v1::UpdateNodeInfo msg;
  52. msg.set_node_id(info->node_id);
  53. msg.set_claim_id(info->claim_id);
  54. if (generate_node_info(msg.mutable_data(), &info->data))
  55. return NULL;
  56. set_google_timestamp_from_timeval(info->updated_at, msg.mutable_updated_at());
  57. msg.set_machine_guid(info->machine_guid);
  58. msg.set_child(info->child);
  59. nodeinstance::info::v1::MachineLearningInfo *ml_info = msg.mutable_ml_info();
  60. ml_info->set_ml_capable(info->ml_info.ml_capable);
  61. ml_info->set_ml_enabled(info->ml_info.ml_enabled);
  62. struct capability *capa;
  63. if (info->node_capabilities) {
  64. capa = info->node_capabilities;
  65. while (capa->name) {
  66. aclk_lib::v1::Capability *proto_capa = msg.mutable_node_info()->add_capabilities();
  67. capability_set(proto_capa, capa);
  68. capa++;
  69. }
  70. }
  71. if (info->node_instance_capabilities) {
  72. capa = info->node_instance_capabilities;
  73. while (capa->name) {
  74. aclk_lib::v1::Capability *proto_capa = msg.mutable_node_instance_info()->add_capabilities();
  75. capability_set(proto_capa, capa);
  76. capa++;
  77. }
  78. }
  79. *len = PROTO_COMPAT_MSG_SIZE(msg);
  80. char *bin = (char*)malloc(*len);
  81. if (bin)
  82. msg.SerializeToArray(bin, *len);
  83. return bin;
  84. }
  85. char *generate_update_node_collectors_message(size_t *len, struct update_node_collectors *upd_node_collectors)
  86. {
  87. nodeinstance::info::v1::UpdateNodeCollectors msg;
  88. msg.set_node_id(upd_node_collectors->node_id);
  89. msg.set_claim_id(upd_node_collectors->claim_id);
  90. void *colls;
  91. dfe_start_read(upd_node_collectors->node_collectors, colls) {
  92. struct collector_info *c =(struct collector_info *)colls;
  93. nodeinstance::info::v1::CollectorInfo *col = msg.add_collectors();
  94. col->set_plugin(c->plugin);
  95. col->set_module(c->module);
  96. }
  97. dfe_done(colls);
  98. *len = PROTO_COMPAT_MSG_SIZE(msg);
  99. char *bin = (char*)malloc(*len);
  100. if (bin)
  101. msg.SerializeToArray(bin, *len);
  102. return bin;
  103. }