32static void csv_addjsonfield(FILE* reportfile,
const cJSON* json,
char* fieldname) {
33 char* text =
json2text(cJSON_GetObjectItemCaseSensitive(json, fieldname));
40 "cluster_host,name,rack_aware,created_time,free_memory,"
41 "available_memory,available_memory_no_overbooking,available_flash,"
42 "available_flash_no_overbooking,ephemeral_storage_avail,"
43 "ephemeral_storage_free,persistent_storage_avail,"
44 "persistent_storage_free,provisional_flash,"
45 "provisional_flash_no_overbooking,provisional_memory,"
46 "provisional_memory_no_overbooking,activation_date,expiration_date,"
47 "cluster_name,owner,features,shards_limit,ram_shards_in_use,"
48 "ram_shards_limit,flash_shards_in_use,flash_shards_limit,expired\r\n"
52static cJSON* report_querygetjson(
const cluster_t* cluster,
const char* endpoint) {
56 fprintf(stderr,
"report_querygetjson cluster_new failed\n");
60 fprintf(stderr,
"report_querygetjson cluster_open failed\n");
67 const char *error_ptr = cJSON_GetErrorPtr();
68 if (error_ptr !=
NULL)
69 fprintf(stderr,
"Error before: %s\n", error_ptr);
70 retval = cJSON_CreateObject();
81 cJSON* clusterstats_json;
84 cluster_json = report_querygetjson(cluster,
"/v1/cluster");
85 clusterstats_json = report_querygetjson(cluster,
"/v1/cluster/stats/last");
86 license_json = report_querygetjson(cluster,
"/v1/license");
89 csv_addjsonfield(reportfile, cluster_json,
"name");
90 csv_addjsonfield(reportfile, cluster_json,
"rack_aware");
91 csv_addjsonfield(reportfile, cluster_json,
"created_time");
92 csv_addjsonfield(reportfile, clusterstats_json,
"free_memory");
93 csv_addjsonfield(reportfile, clusterstats_json,
"available_memory");
94 csv_addjsonfield(reportfile, clusterstats_json,
"available_memory_no_overbooking");
95 csv_addjsonfield(reportfile, clusterstats_json,
"available_flash");
96 csv_addjsonfield(reportfile, clusterstats_json,
"available_flash_no_overbooking");
97 csv_addjsonfield(reportfile, clusterstats_json,
"ephemeral_storage_avail");
98 csv_addjsonfield(reportfile, clusterstats_json,
"ephemeral_storage_free");
99 csv_addjsonfield(reportfile, clusterstats_json,
"persistent_storage_avail");
100 csv_addjsonfield(reportfile, clusterstats_json,
"persistent_storage_free");
101 csv_addjsonfield(reportfile, clusterstats_json,
"provisional_flash");
102 csv_addjsonfield(reportfile, clusterstats_json,
"provisional_flash_no_overbooking");
103 csv_addjsonfield(reportfile, clusterstats_json,
"provisional_memory");
104 csv_addjsonfield(reportfile, clusterstats_json,
"provisional_memory_no_overbooking");
105 csv_addjsonfield(reportfile, license_json,
"activation_date");
106 csv_addjsonfield(reportfile, license_json,
"expiration_date");
107 csv_addjsonfield(reportfile, license_json,
"cluster_name");
108 csv_addjsonfield(reportfile, license_json,
"owner");
109 csv_addjsonfield(reportfile, license_json,
"features");
110 csv_addjsonfield(reportfile, license_json,
"shards_limit");
111 csv_addjsonfield(reportfile, license_json,
"ram_shards_in_use");
112 csv_addjsonfield(reportfile, license_json,
"ram_shards_limit");
113 csv_addjsonfield(reportfile, license_json,
"flash_shards_in_use");
114 csv_addjsonfield(reportfile, license_json,
"flash_shards_limit");
115 csv_addjsonfield(reportfile, license_json,
"expired");
118 cJSON_Delete(cluster_json);
119 cJSON_Delete(clusterstats_json);
120 cJSON_Delete(license_json);
void cluster_close(rsclustercon_t *rsclustercon)
void cluster_del(rsclustercon_t *rsclustercon)
rsclustercon_t * cluster_new(const cluster_t *cluster)
int cluster_open(rsclustercon_t *rsclustercon)
cJSON * cluster_queryget(const rsclustercon_t *rsclustercon, const char *endpoint)
void csv_addfield(FILE *reportfile, const char *value)
void csv_addline(FILE *reportfile)
char * json2text(cJSON *value_json)
Convert a cJSON object in a C String.
Wrapper around cJSON library with helpers.
void report_cluster(FILE *reportfile, const cluster_t *cluster)
void report_cluster_header(FILE *reportfile)