X-Git-Url: https://git.tokkee.org/?p=sysdb.git;a=blobdiff_plain;f=src%2Fplugins%2Fstore%2Fnetwork.c;h=fc416fe34b978de5c93515030797118af7579051;hp=c7ee4293a5384a1485c20adaf6ab3eae81be6e51;hb=dcf7802ad0958d4752b2c13f70e2fdf345d3509f;hpb=2618c6cbc271fcc78ddde81b7f689d366ed300d1 diff --git a/src/plugins/store/network.c b/src/plugins/store/network.c index c7ee429..fc416fe 100644 --- a/src/plugins/store/network.c +++ b/src/plugins/store/network.c @@ -96,20 +96,20 @@ store_rpc(user_data_t *ud, const char *msg, size_t msg_len) if (sdb_client_eof(ud->client)) { sdb_client_close(ud->client); if (sdb_client_connect(ud->client, ud->username)) { - sdb_log(SDB_LOG_ERR, "store::network: Failed to reconnect " - "to SysDB at %s as user %s", ud->addr, ud->username); + sdb_log(SDB_LOG_ERR, "Failed to reconnect to SysDB " + "at %s as user %s", ud->addr, ud->username); return -1; } - sdb_log(SDB_LOG_INFO, "store::network: Successfully reconnected " - "to SysDB at %s as user %s", ud->addr, ud->username); + sdb_log(SDB_LOG_INFO, "Successfully reconnected to SysDB " + "at %s as user %s", ud->addr, ud->username); } status = sdb_client_rpc(ud->client, SDB_CONNECTION_STORE, (uint32_t)msg_len, msg, &rstatus, buf); if (status < 0) - sdb_log(SDB_LOG_ERR, "store::network: %s", sdb_strbuf_string(buf)); + sdb_log(SDB_LOG_ERR, "%s", sdb_strbuf_string(buf)); else if (rstatus != SDB_CONNECTION_OK) { - sdb_log(SDB_LOG_ERR, "store::network: Failed to send object: %s", + sdb_log(SDB_LOG_ERR, "Failed to send object: %s", sdb_strbuf_string(buf)); status = -1; } @@ -121,91 +121,62 @@ store_rpc(user_data_t *ud, const char *msg, size_t msg_len) } /* store_rpc */ static int -store_host(const char *name, sdb_time_t last_update, sdb_object_t *user_data) +store_host(sdb_store_host_t *host, sdb_object_t *user_data) { - sdb_proto_host_t host = { last_update, name }; - size_t len = sdb_proto_marshal_host(NULL, 0, &host); + sdb_proto_host_t h = { host->last_update, host->name }; + size_t len = sdb_proto_marshal_host(NULL, 0, &h); char buf[len]; - sdb_proto_marshal_host(buf, len, &host); + sdb_proto_marshal_host(buf, len, &h); return store_rpc(UD(user_data), buf, len); } /* store_host */ static int -store_service(const char *hostname, const char *name, sdb_time_t last_update, - sdb_object_t *user_data) +store_service(sdb_store_service_t *service, sdb_object_t *user_data) { - sdb_proto_service_t svc = { last_update, hostname, name }; - ssize_t len = sdb_proto_marshal_service(NULL, 0, &svc); + sdb_proto_service_t s = { + service->last_update, service->hostname, service->name, + }; + ssize_t len = sdb_proto_marshal_service(NULL, 0, &s); char buf[len]; - sdb_proto_marshal_service(buf, len, &svc); + sdb_proto_marshal_service(buf, len, &s); return store_rpc(UD(user_data), buf, len); } /* store_service */ static int -store_metric(const char *hostname, const char *name, - sdb_metric_store_t *store, sdb_time_t last_update, - sdb_object_t *user_data) +store_metric(sdb_store_metric_t *metric, sdb_object_t *user_data) { - sdb_proto_metric_t metric = { - last_update, hostname, name, - store ? store->type : NULL, store ? store->id : NULL, + sdb_proto_metric_t m = { + metric->last_update, metric->hostname, metric->name, + /* TODO: Add support for sending all data stores. */ + metric->stores_num ? metric->stores[0].type : NULL, + metric->stores_num ? metric->stores[0].id : NULL, + metric->stores_num ? metric->stores[0].last_update : 0, }; - size_t len = sdb_proto_marshal_metric(NULL, 0, &metric); + size_t len = sdb_proto_marshal_metric(NULL, 0, &m); char buf[len]; - sdb_proto_marshal_metric(buf, len, &metric); + sdb_proto_marshal_metric(buf, len, &m); return store_rpc(UD(user_data), buf, len); } /* store_metric */ static int -store_attr(const char *hostname, const char *key, const sdb_data_t *value, - sdb_time_t last_update, sdb_object_t *user_data) +store_attr(sdb_store_attribute_t *attr, sdb_object_t *user_data) { - sdb_proto_attribute_t attr = { - last_update, SDB_HOST, NULL, hostname, key, *value, + sdb_proto_attribute_t a = { + attr->last_update, attr->parent_type, attr->hostname, attr->parent, + attr->key, attr->value, }; - size_t len = sdb_proto_marshal_attribute(NULL, 0, &attr); + size_t len = sdb_proto_marshal_attribute(NULL, 0, &a); char buf[len]; - sdb_proto_marshal_attribute(buf, len, &attr); + sdb_proto_marshal_attribute(buf, len, &a); return store_rpc(UD(user_data), buf, len); } /* store_attr */ -static int -store_service_attr(const char *hostname, const char *service, - const char *key, const sdb_data_t *value, sdb_time_t last_update, - sdb_object_t *user_data) -{ - sdb_proto_attribute_t attr = { - last_update, SDB_SERVICE, hostname, service, key, *value, - }; - size_t len = sdb_proto_marshal_attribute(NULL, 0, &attr); - char buf[len]; - - sdb_proto_marshal_attribute(buf, len, &attr); - return store_rpc(UD(user_data), buf, len); -} /* store_service_attr */ - -static int -store_metric_attr(const char *hostname, const char *metric, - const char *key, const sdb_data_t *value, sdb_time_t last_update, - sdb_object_t *user_data) -{ - sdb_proto_attribute_t attr = { - last_update, SDB_METRIC, hostname, metric, key, *value, - }; - size_t len = sdb_proto_marshal_attribute(NULL, 0, &attr); - char buf[len]; - - sdb_proto_marshal_attribute(buf, len, &attr); - return store_rpc(UD(user_data), buf, len); -} /* store_metric_attr */ - static sdb_store_writer_t store_impl = { - store_host, store_service, store_metric, - store_attr, store_service_attr, store_metric_attr, + store_host, store_service, store_metric, store_attr, }; /* @@ -222,13 +193,13 @@ store_init(sdb_object_t *user_data) ud = SDB_OBJ_WRAPPER(user_data)->data; if (sdb_client_connect(ud->client, ud->username)) { - sdb_log(SDB_LOG_ERR, "store::network: Failed to connect " - "to SysDB at %s as user %s", ud->addr, ud->username); + sdb_log(SDB_LOG_ERR, "Failed to connect to SysDB " + "at %s as user %s", ud->addr, ud->username); return -1; } - sdb_log(SDB_LOG_INFO, "store::network: Successfully connected " - "to SysDB at %s as user %s", ud->addr, ud->username); + sdb_log(SDB_LOG_INFO, "Successfully connected to SysDB " + "at %s as user %s", ud->addr, ud->username); return 0; } /* store_init */ @@ -243,22 +214,20 @@ store_config_server(oconfig_item_t *ci) ud = calloc(1, sizeof(*ud)); if (! ud) { char errbuf[1024]; - sdb_log(SDB_LOG_ERR, "store::network: Failed to allocate " - "a user-data object: %s", + sdb_log(SDB_LOG_ERR, "Failed to allocate a user-data object: %s", sdb_strerror(errno, errbuf, sizeof(errbuf))); return -1; } if (oconfig_get_string(ci, &ud->addr)) { - sdb_log(SDB_LOG_ERR, "store::network: Server requires " - "a single string argument\n\tUsage: "); + sdb_log(SDB_LOG_ERR, "Server requires a single string argument\n" + "\tUsage: "); user_data_destroy(ud); return -1; } ud->addr = strdup(ud->addr); if (! ud->addr) { - sdb_log(SDB_LOG_ERR, "store::network: Failed to duplicate " - "a string"); + sdb_log(SDB_LOG_ERR, "Failed to duplicate a string"); user_data_destroy(ud); return -1; } @@ -266,9 +235,8 @@ store_config_server(oconfig_item_t *ci) ud->client = sdb_client_create(ud->addr); if (! ud->client) { char errbuf[1024]; - sdb_log(SDB_LOG_ERR, "store::network: Failed to create client " - "connecting to '%s': %s", ud->addr, - sdb_strerror(errno, errbuf, sizeof(errbuf))); + sdb_log(SDB_LOG_ERR, "Failed to create client connecting to '%s': %s", + ud->addr, sdb_strerror(errno, errbuf, sizeof(errbuf))); user_data_destroy(ud); return -1; } @@ -306,9 +274,8 @@ store_config_server(oconfig_item_t *ci) ud->ssl_opts.ca_file = strdup(tmp); } else - sdb_log(SDB_LOG_WARNING, "store::network: Ignoring " - "unknown config option '%s' inside .", - child->key, ud->addr); + sdb_log(SDB_LOG_WARNING, "Ignoring unknown config option '%s' " + "inside .", child->key, ud->addr); } if (ret) { @@ -319,7 +286,7 @@ store_config_server(oconfig_item_t *ci) ud->username = sdb_get_current_user(); if (sdb_client_set_ssl_options(ud->client, &ud->ssl_opts)) { - sdb_log(SDB_LOG_ERR, "store::network: Failed to apply SSL options"); + sdb_log(SDB_LOG_ERR, "Failed to apply SSL options"); user_data_destroy(ud); return -1; } @@ -328,8 +295,7 @@ store_config_server(oconfig_item_t *ci) user_data_destroy); if (! user_data) { char errbuf[1024]; - sdb_log(SDB_LOG_ERR, "store::network: Failed to allocate " - "a user-data wrapper object: %s", + sdb_log(SDB_LOG_ERR, "Failed to allocate a user-data wrapper object: %s", sdb_strerror(errno, errbuf, sizeof(errbuf))); user_data_destroy(ud); return -1; @@ -355,8 +321,8 @@ store_config(oconfig_item_t *ci) if (! strcasecmp(child->key, "Server")) store_config_server(child); else - sdb_log(SDB_LOG_WARNING, "store::network: Ignoring " - "unknown config option '%s'.", child->key); + sdb_log(SDB_LOG_WARNING, "Ignoring unknown config option '%s'.", + child->key); } return 0; } /* store_config */