Skip to content

Commit bc9e5f6

Browse files
committed
removed err throw for invalid plugin
1 parent 7c24ad0 commit bc9e5f6

File tree

3 files changed

+25
-23
lines changed

3 files changed

+25
-23
lines changed

nodescraper/cli/cli.py

Lines changed: 12 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -338,7 +338,18 @@ def process_args(
338338
else:
339339
cur_plugin = None
340340
for arg in plugin_args:
341-
if arg in plugin_names:
341+
# Handle comma-separated plugin names (but not arguments)
342+
if not arg.startswith("-") and "," in arg:
343+
# Split comma-separated plugin names
344+
for potential_plugin in arg.split(","):
345+
potential_plugin = potential_plugin.strip()
346+
if potential_plugin in plugin_names:
347+
plugin_arg_map[potential_plugin] = []
348+
cur_plugin = potential_plugin
349+
elif potential_plugin:
350+
# Track invalid plugin names to log event later
351+
invalid_plugins.append(potential_plugin)
352+
elif arg in plugin_names:
342353
plugin_arg_map[arg] = []
343354
cur_plugin = arg
344355
elif cur_plugin:

nodescraper/pluginexecutor.py

Lines changed: 0 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -33,7 +33,6 @@
3333
from pydantic import BaseModel
3434

3535
from nodescraper.constants import DEFAULT_LOGGER
36-
from nodescraper.enums import ExecutionStatus
3736
from nodescraper.interfaces import ConnectionManager, DataPlugin, PluginInterface
3837
from nodescraper.models import PluginConfig, SystemInfo
3938
from nodescraper.models.pluginresult import PluginResult
@@ -120,13 +119,6 @@ def run_queue(self) -> list[PluginResult]:
120119
plugin_name, plugin_args = plugin_queue.popleft()
121120
if plugin_name not in self.plugin_registry.plugins:
122121
self.logger.error("Unable to find registered plugin for name %s", plugin_name)
123-
plugin_results.append(
124-
PluginResult(
125-
status=ExecutionStatus.ERROR,
126-
source=plugin_name,
127-
message=f"Plugin '{plugin_name}' not found in registry",
128-
)
129-
)
130122
continue
131123

132124
plugin_class = self.plugin_registry.plugins[plugin_name]
@@ -148,13 +140,6 @@ def run_queue(self) -> list[PluginResult]:
148140
"Unable to find registered connection manager class for %s that is required by",
149141
connection_manager_class.__name__,
150142
)
151-
plugin_results.append(
152-
PluginResult(
153-
status=ExecutionStatus.ERROR,
154-
source=plugin_name,
155-
message=f"Connection manager '{connection_manager_class.__name__}' not found in registry",
156-
)
157-
)
158143
continue
159144

160145
if connection_manager_class not in self.connection_library:
@@ -201,13 +186,6 @@ def run_queue(self) -> list[PluginResult]:
201186
plugin_name,
202187
str(ve),
203188
)
204-
plugin_results.append(
205-
PluginResult(
206-
status=ExecutionStatus.ERROR,
207-
source=plugin_name,
208-
message=f"Invalid global_args for plugin: {str(ve)}",
209-
)
210-
)
211189
continue
212190

213191
self.logger.info("-" * 50)

test/functional/test_run_plugins.py

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -100,3 +100,16 @@ def test_run_plugin_with_invalid_name(run_cli_command):
100100
assert "running default config" in output.lower() or "NodeStatus" in output
101101
# Verify it didn't crash
102102
assert "Data written to csv file" in output
103+
104+
105+
def test_run_comma_separated_plugins_with_invalid(run_cli_command):
106+
"""Test that comma-separated plugins run valid ones and ignore invalid ones."""
107+
result = run_cli_command(["run-plugins", "AmdSmiPlugin,SomePlugin"], check=False)
108+
109+
output = result.stdout + result.stderr
110+
# Check that warning was logged for invalid plugin
111+
assert "Invalid plugin name(s) ignored: SomePlugin" in output
112+
# Check that AmdSmiPlugin actually ran
113+
assert "Running plugin AmdSmiPlugin" in output
114+
# Verify it didn't crash
115+
assert "Data written to csv file" in output

0 commit comments

Comments
 (0)