lib: bt_plugin_find*(): return status code; add "fail on load error" param
[babeltrace.git] / src / cli / babeltrace2.c
index 9aa52a873ed165abcd71c432edfc353b803f7d78..c89fabce97ad9e3dd5e43f979517c1fad8d38bd8 100644 (file)
  * modules.
  */
 static const char* log_level_env_var_names[] = {
-       "BABELTRACE_FLT_LTTNG_UTILS_DEBUG_INFO_LOG_LEVEL",
-       "BABELTRACE_FLT_UTILS_COUNTER_LOG_LEVEL",
-       "BABELTRACE_FLT_UTILS_MUXER_LOG_LEVEL",
-       "BABELTRACE_FLT_UTILS_TRIMMER_LOG_LEVEL",
-       "BABELTRACE_PLUGIN_CTF_BFCR_LOG_LEVEL",
        "BABELTRACE_PLUGIN_CTF_METADATA_LOG_LEVEL",
-       "BABELTRACE_PLUGIN_CTF_MSG_ITER_LOG_LEVEL",
-       "BABELTRACE_PLUGIN_CTF_UTILS_LOG_LEVEL",
        "BABELTRACE_PYTHON_BT2_LOG_LEVEL",
-       "BABELTRACE_SINK_CTF_FS_LOG_LEVEL",
-       "BABELTRACE_SINK_TEXT_DETAILS_LOG_LEVEL",
-       "BABELTRACE_SRC_CTF_FS_LOG_LEVEL",
-       "BABELTRACE_SRC_CTF_LTTNG_LIVE_LOG_LEVEL",
-       "BABELTRACE_SRC_TEXT_DMESG_LOG_LEVEL",
        NULL,
 };
 
@@ -167,9 +155,9 @@ void destroy_the_query_executor(void)
 }
 
 static
-int query(const bt_component_class *comp_cls, const char *obj,
-               const bt_value *params, const bt_value **user_result,
-               const char **fail_reason)
+int query(struct bt_config *cfg, const bt_component_class *comp_cls,
+               const char *obj, const bt_value *params,
+               const bt_value **user_result, const char **fail_reason)
 {
        const bt_value *result = NULL;
        bt_query_executor_status status;
@@ -195,7 +183,7 @@ int query(const bt_component_class *comp_cls, const char *obj,
 
        while (true) {
                status = bt_query_executor_query(the_query_executor,
-                       comp_cls, obj, params, &result);
+                       comp_cls, obj, params, cfg->log_level, &result);
                switch (status) {
                case BT_QUERY_EXECUTOR_STATUS_OK:
                        goto ok;
@@ -809,7 +797,8 @@ int load_dynamic_plugins(const bt_value *plugin_paths)
        for (i = 0; i < nr_paths; i++) {
                const bt_value *plugin_path_value = NULL;
                const char *plugin_path;
-               const bt_plugin_set *plugin_set;
+               const bt_plugin_set *plugin_set = NULL;
+               bt_plugin_status status;
 
                plugin_path_value =
                        bt_value_array_borrow_element_by_index_const(
@@ -827,13 +816,20 @@ int load_dynamic_plugins(const bt_value *plugin_paths)
                        continue;
                }
 
-               plugin_set = bt_plugin_find_all_from_dir(plugin_path, false);
-               if (!plugin_set) {
-                       BT_LOGI("Unable to load dynamic plugins from directory: "
+               status = bt_plugin_find_all_from_dir(plugin_path, BT_FALSE,
+                       BT_FALSE, &plugin_set);
+               if (status < 0) {
+                       BT_LOGE("Unable to load dynamic plugins from directory: "
                                "path=\"%s\"", plugin_path);
                        continue;
+               } else if (status == BT_PLUGIN_STATUS_NOT_FOUND) {
+                       BT_LOGI("No plugins found in directory: path=\"%s\"",
+                               plugin_path);
+                       continue;
                }
 
+               BT_ASSERT(status == BT_PLUGIN_STATUS_OK);
+               BT_ASSERT(plugin_set);
                add_to_loaded_plugins(plugin_set);
                bt_plugin_set_put_ref(plugin_set);
        }
@@ -846,15 +842,21 @@ int load_static_plugins(void)
 {
        int ret = 0;
        const bt_plugin_set *plugin_set;
+       bt_plugin_status status;
 
        BT_LOGI("Loading static plugins.");
-       plugin_set = bt_plugin_find_all_from_static();
-       if (!plugin_set) {
+       status = bt_plugin_find_all_from_static(BT_FALSE, &plugin_set);
+       if (status < 0) {
                BT_LOGE("Unable to load static plugins.");
                ret = -1;
                goto end;
+       } else if (status == BT_PLUGIN_STATUS_NOT_FOUND) {
+               BT_LOGI("No static plugins found.");
+               goto end;
        }
 
+       BT_ASSERT(status == BT_PLUGIN_STATUS_OK);
+       BT_ASSERT(plugin_set);
        add_to_loaded_plugins(plugin_set);
        bt_plugin_set_put_ref(plugin_set);
 end:
@@ -964,7 +966,7 @@ int cmd_query(struct bt_config *cfg)
                goto end;
        }
 
-       ret = query(comp_cls, cfg->cmd_data.query.object->str,
+       ret = query(cfg, comp_cls, cfg->cmd_data.query.object->str,
                cfg->cmd_data.query.cfg_component->params,
                &results, &fail_reason);
        if (ret) {
@@ -1260,7 +1262,7 @@ int cmd_print_lttng_live_sessions(struct bt_config *cfg)
                goto error;
        }
 
-       ret = query(comp_cls, "sessions", params,
+       ret = query(cfg, comp_cls, "sessions", params,
                    &results, &fail_reason);
        if (ret) {
                goto failed;
@@ -1414,7 +1416,7 @@ int cmd_print_ctf_metadata(struct bt_config *cfg)
                goto end;
        }
 
-       ret = query(comp_cls, "metadata-info",
+       ret = query(cfg, comp_cls, "metadata-info",
                params, &results, &fail_reason);
        if (ret) {
                goto failed;
@@ -1821,24 +1823,6 @@ int cmd_run_ctx_connect_upstream_port_to_downstream_component(
                        BT_LOGI_STR("Graph was canceled by user.");
                        status = BT_GRAPH_STATUS_OK;
                        break;
-               case BT_GRAPH_STATUS_COMPONENT_REFUSES_PORT_CONNECTION:
-                       BT_LOGE("A component refused a connection to one of its ports: "
-                               "upstream-comp-addr=%p, upstream-comp-name=\"%s\", "
-                               "upstream-port-addr=%p, upstream-port-name=\"%s\", "
-                               "downstream-comp-addr=%p, downstream-comp-name=\"%s\", "
-                               "downstream-port-addr=%p, downstream-port-name=\"%s\", "
-                               "conn-arg=\"%s\"",
-                               upstream_comp, bt_component_get_name(upstream_comp),
-                               upstream_port, bt_port_get_name(upstream_port),
-                               downstream_comp, cfg_conn->downstream_comp_name->str,
-                               downstream_port, downstream_port_name,
-                               cfg_conn->arg->str);
-                       fprintf(stderr,
-                               "A component refused a connection to one of its ports (`%s` to `%s`): %s\n",
-                               bt_port_get_name(upstream_port),
-                               downstream_port_name,
-                               cfg_conn->arg->str);
-                       break;
                default:
                        BT_LOGE("Cannot create connection: graph refuses to connect ports: "
                                "upstream-comp-addr=%p, upstream-comp-name=\"%s\", "
@@ -2173,7 +2157,7 @@ int set_stream_intersections(struct cmd_run_ctx *ctx,
        const bt_component_class *comp_cls =
                bt_component_class_source_as_component_class_const(src_comp_cls);
 
-       ret = query(comp_cls, "trace-info",
+       ret = query(ctx->cfg, comp_cls, "trace-info",
                cfg_comp->params, &query_result,
                &fail_reason);
        if (ret) {
@@ -2386,7 +2370,7 @@ int cmd_run_ctx_create_components_from_config_components(
                        goto error;
                }
 
-               BT_ASSERT(cfg_comp->log_level >= BT_LOG_VERBOSE);
+               BT_ASSERT(cfg_comp->log_level >= BT_LOG_TRACE);
 
                switch (cfg_comp->type) {
                case BT_COMPONENT_CLASS_TYPE_SOURCE:
@@ -2586,8 +2570,6 @@ const char *bt_graph_status_str(bt_graph_status status)
                return "BT_GRAPH_STATUS_END";
        case BT_GRAPH_STATUS_AGAIN:
                return "BT_GRAPH_STATUS_AGAIN";
-       case BT_GRAPH_STATUS_COMPONENT_REFUSES_PORT_CONNECTION:
-               return "BT_GRAPH_STATUS_COMPONENT_REFUSES_PORT_CONNECTION";
        case BT_GRAPH_STATUS_CANCELED:
                return "BT_GRAPH_STATUS_CANCELED";
        case BT_GRAPH_STATUS_ERROR:
@@ -2658,7 +2640,7 @@ int cmd_run(struct bt_config *cfg)
                printf("%s", bt_common_color_reset());
                fflush(stdout);
                fprintf(stderr, "%s", bt_common_color_reset());
-               BT_LOGV("bt_graph_run() returned: status=%s",
+               BT_LOGT("bt_graph_run() returned: status=%s",
                        bt_graph_status_str(graph_status));
 
                switch (graph_status) {
@@ -2674,7 +2656,7 @@ int cmd_run(struct bt_config *cfg)
                        }
 
                        if (cfg->cmd_data.run.retry_duration_us > 0) {
-                               BT_LOGV("Got BT_GRAPH_STATUS_AGAIN: sleeping: "
+                               BT_LOGT("Got BT_GRAPH_STATUS_AGAIN: sleeping: "
                                        "time-us=%" PRIu64,
                                        cfg->cmd_data.run.retry_duration_us);
 
@@ -2751,7 +2733,7 @@ void set_auto_log_levels(struct bt_config *cfg)
         */
        if (getenv("BABELTRACE_DEBUG") &&
                        strcmp(getenv("BABELTRACE_DEBUG"), "1") == 0) {
-               cfg->log_level = BT_LOG_VERBOSE;
+               cfg->log_level = BT_LOG_TRACE;
        } else if (getenv("BABELTRACE_VERBOSE") &&
                        strcmp(getenv("BABELTRACE_VERBOSE"), "1") == 0) {
                cfg->log_level = BT_LOG_INFO;
@@ -2763,15 +2745,15 @@ void set_auto_log_levels(struct bt_config *cfg)
         * --verbose. So:
         *
         *     --verbose: INFO log level
-        *     --debug:   VERBOSE log level (includes DEBUG, which is
-        *                is less verbose than VERBOSE in the internal
+        *     --debug:   TRACE log level (includes DEBUG, which is
+        *                is less verbose than TRACE in the internal
         *                logging framework)
         */
-       if (!getenv("BABELTRACE_LOGGING_GLOBAL_LEVEL")) {
+       if (!getenv("LIBBABELTRACE2_INIT_LOG_LEVEL")) {
                if (cfg->verbose) {
                        bt_logging_set_global_level(BT_LOG_INFO);
                } else if (cfg->debug) {
-                       bt_logging_set_global_level(BT_LOG_VERBOSE);
+                       bt_logging_set_global_level(BT_LOG_TRACE);
                } else {
                        /*
                         * Set library's default log level if not
@@ -2785,7 +2767,7 @@ void set_auto_log_levels(struct bt_config *cfg)
                if (cfg->verbose) {
                        bt_cli_log_level = BT_LOG_INFO;
                } else if (cfg->debug) {
-                       bt_cli_log_level = BT_LOG_VERBOSE;
+                       bt_cli_log_level = BT_LOG_TRACE;
                } else {
                        /*
                         * Set CLI's default log level if not explicitly
@@ -2800,9 +2782,9 @@ void set_auto_log_levels(struct bt_config *cfg)
        while (*env_var_name) {
                if (!getenv(*env_var_name)) {
                        if (cfg->verbose) {
-                               g_setenv(*env_var_name, "I", 1);
+                               g_setenv(*env_var_name, "INFO", 1);
                        } else if (cfg->debug) {
-                               g_setenv(*env_var_name, "V", 1);
+                               g_setenv(*env_var_name, "TRACE", 1);
                        } else {
                                char val[2] = { 0 };
 
This page took 0.02848 seconds and 4 git commands to generate.