X-Git-Url: http://git.efficios.com/?a=blobdiff_plain;f=src%2Fbindings%2Fpython%2Fbt2%2Fbt2%2Fplugin.py;h=b32f8ce236b50853116a738e8e44d55f96f65936;hb=9736d991ea189f29b908e9cf18103c1452c59e05;hp=2d0d8b057303afa44d1e8cb0a832ac429c4b11c3;hpb=0d1c8791396d4cf4c5cc2160838f25608fa12b4b;p=babeltrace.git diff --git a/src/bindings/python/bt2/bt2/plugin.py b/src/bindings/python/bt2/bt2/plugin.py index 2d0d8b05..b32f8ce2 100644 --- a/src/bindings/python/bt2/bt2/plugin.py +++ b/src/bindings/python/bt2/bt2/plugin.py @@ -27,29 +27,45 @@ import os.path import bt2 -def find_plugins(path, recurse=True): +def _handle_status(status, gen_error_msg): + if status == native_bt.PLUGIN_STATUS_LOADING_ERROR: + raise bt2.PluginLoadingError + elif status < 0: + raise bt2.Error(gen_error_msg) + + +def find_plugins(path, recurse=True, fail_on_load_error=False): utils._check_str(path) utils._check_bool(recurse) + utils._check_bool(fail_on_load_error) plugin_set_ptr = None if os.path.isfile(path): - plugin_set_ptr = native_bt.plugin_find_all_from_file(path) + status, plugin_set_ptr = native_bt.plugin_find_all_from_file_wrapper(path, fail_on_load_error) elif os.path.isdir(path): - plugin_set_ptr = native_bt.plugin_find_all_from_dir(path, int(recurse)) + status, plugin_set_ptr = native_bt.plugin_find_all_from_dir_wrapper(path, int(recurse), int(fail_on_load_error)) + else: + raise bt2.Error("invalid path: '{}'".format(path)) + + _handle_status(status, 'failed to find plugins') - if plugin_set_ptr is None: + if status == native_bt.PLUGIN_STATUS_NOT_FOUND: return + assert plugin_set_ptr is not None return _PluginSet._create_from_ptr(plugin_set_ptr) -def find_plugin(name): +def find_plugin(name, fail_on_load_error=False): utils._check_str(name) - ptr = native_bt.plugin_find(name) + utils._check_bool(fail_on_load_error) + status, ptr = native_bt.plugin_find_wrapper(name, int(fail_on_load_error)) + _handle_status(status, 'failed to find plugin') - if ptr is None: + if status == native_bt.PLUGIN_STATUS_NOT_FOUND: return + assert ptr is not None return _Plugin._create_from_ptr(ptr)