Skip to content

Commit 016a155

Browse files
committed
merged alex_diff
2 parents e4707e9 + 01dfaa6 commit 016a155

File tree

7 files changed

+24
-33
lines changed

7 files changed

+24
-33
lines changed

nodescraper/cli/cli.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -326,11 +326,12 @@ def main(arg_input: Optional[list[str]] = None):
326326
top_level_args, plugin_arg_map = process_args(arg_input, list(plugin_subparser_map.keys()))
327327

328328
parsed_args = parser.parse_args(top_level_args)
329+
system_info = get_system_info(parsed_args)
329330

330331
if parsed_args.log_path and parsed_args.subcmd not in ["gen-plugin-config", "describe"]:
331332
log_path = os.path.join(
332333
parsed_args.log_path,
333-
f"scraper_logs_{datetime.datetime.now().strftime('%Y_%m_%d-%I_%M_%S_%p')}",
334+
f"scraper_logs_{system_info.name}_{datetime.datetime.now().strftime('%Y_%m_%d-%I_%M_%S_%p')}",
334335
)
335336
os.makedirs(log_path)
336337
else:
@@ -386,7 +387,6 @@ def main(arg_input: Optional[list[str]] = None):
386387
plugin_subparser_map=plugin_subparser_map,
387388
)
388389

389-
system_info = get_system_info(parsed_args)
390390
log_system_info(log_path, system_info, logger)
391391
except Exception as e:
392392
parser.error(str(e))

nodescraper/cli/helper.py

Lines changed: 13 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -34,7 +34,7 @@
3434
from nodescraper.cli.inputargtypes import ModelArgHandler
3535
from nodescraper.configbuilder import ConfigBuilder
3636
from nodescraper.configregistry import ConfigRegistry
37-
from nodescraper.enums import SystemInteractionLevel, SystemLocation
37+
from nodescraper.enums import ExecutionStatus, SystemInteractionLevel, SystemLocation
3838
from nodescraper.models import PluginConfig, PluginResult, SystemInfo, TaskResult
3939
from nodescraper.pluginexecutor import PluginExecutor
4040
from nodescraper.pluginregistry import PluginRegistry
@@ -300,12 +300,23 @@ def generate_reference_config(
300300
plugin_config = PluginConfig()
301301
plugins = {}
302302
for obj in results:
303+
if obj.result_data.collection_result.status != ExecutionStatus.OK:
304+
logger.warning(
305+
"Plugin: %s result status is %, skipping",
306+
obj.source,
307+
obj.result_data.collection_result.status,
308+
)
309+
continue
310+
303311
data_model = obj.result_data.system_data
312+
if data_model is None:
313+
logger.warning("Plugin: %s data model not found: %s, skipping", obj.source)
314+
continue
304315

305316
plugin = plugin_reg.plugins.get(obj.source)
306317
if not plugin.ANALYZER_ARGS:
307318
logger.warning(
308-
"Plugin: %s does not support reference config creation. No analyzer args defined.",
319+
"Plugin: %s does not support reference config creation. No analyzer args defined, skipping.",
309320
obj.source,
310321
)
311322
continue

nodescraper/models/analyzerargs.py

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -23,12 +23,10 @@
2323
# SOFTWARE.
2424
#
2525
###############################################################################
26-
from abc import ABC
27-
2826
from pydantic import BaseModel
2927

3028

31-
class AnalyzerArgs(BaseModel, ABC):
29+
class AnalyzerArgs(BaseModel):
3230
model_config = {"extra": "forbid", "exclude_none": True}
3331

3432
@classmethod

nodescraper/plugins/inband/dmesg/analyzer_args.py

Lines changed: 0 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -26,24 +26,8 @@
2626
from typing import Optional
2727

2828
from nodescraper.models import TimeRangeAnalysisArgs
29-
from nodescraper.plugins.inband.dmesg.dmesgdata import DmesgData
3029

3130

3231
class DmesgAnalyzerArgs(TimeRangeAnalysisArgs):
3332
check_unknown_dmesg_errors: Optional[bool] = True
3433
exclude_category: Optional[set[str]] = None
35-
36-
@classmethod
37-
def build_from_model(cls, datamodel: DmesgData) -> "TimeRangeAnalysisArgs":
38-
"""build analyzer args from data model
39-
40-
Args:
41-
datamodel (DmesgDataModel): data model for plugin
42-
43-
Raises:
44-
NotImplementedError: does not implement abstract function
45-
46-
Returns:
47-
TimeRangeAnalysisArgs: instance of analyzer args class
48-
"""
49-
raise NotImplementedError("Dmesg does not support reference config creation")

test/unit/framework/common/shared_utils.py

Lines changed: 3 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -26,11 +26,9 @@
2626
from typing import Optional
2727
from unittest.mock import MagicMock
2828

29-
from pydantic import BaseModel
30-
3129
from nodescraper.enums import ExecutionStatus
3230
from nodescraper.interfaces import ConnectionManager, PluginInterface
33-
from nodescraper.models import PluginResult, TaskResult
31+
from nodescraper.models import AnalyzerArgs, PluginResult, TaskResult
3432
from nodescraper.models.datamodel import DataModel
3533

3634

@@ -69,12 +67,12 @@ def disconnect(self):
6967
pass
7068

7169

72-
class TestModelArg(BaseModel):
70+
class TestModelArg(AnalyzerArgs):
7371
model_attr: int = 123
7472

7573
@classmethod
7674
def build_from_model(cls, model):
77-
return cls()
75+
return cls(model_attr=int(model.some_version))
7876

7977

8078
class DummyDataModel(DataModel):

test/unit/framework/test_analyzerargs.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -13,8 +13,8 @@ def build_from_model(cls, datamodel):
1313

1414
def test_build_from_model(dummy_data_model):
1515
dummy = dummy_data_model(foo=1)
16-
args = MyArgs(args_foo=1)
17-
args = args.build_from_model(dummy)
16+
# args = args.build_from_model(dummy)
17+
args = MyArgs.build_from_model(dummy)
1818
assert isinstance(args, MyArgs)
1919
assert args.args_foo == dummy.foo
2020
dump = args.model_dump(mode="json", exclude_none=True)

test/unit/framework/test_helper.py

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -50,10 +50,10 @@ def test_generate_reference_config(plugin_registry):
5050
source="TestPluginA",
5151
message="Plugin tasks completed successfully",
5252
result_data=DataPluginResult(
53-
system_data=DummyDataModel(some_version="M17"),
53+
system_data=DummyDataModel(some_version="17"),
5454
collection_result=TaskResult(
5555
status=ExecutionStatus.OK,
56-
message="BIOS: M17",
56+
message="BIOS: 17",
5757
task="BiosCollector",
5858
parent="TestPluginA",
5959
artifacts=[],
@@ -64,7 +64,7 @@ def test_generate_reference_config(plugin_registry):
6464

6565
ref_config = cli.generate_reference_config(results, plugin_registry, logging.getLogger())
6666
dump = ref_config.dict()
67-
assert dump["plugins"] == {"TestPluginA": {"analysis_args": {"model_attr": 123}}}
67+
assert dump["plugins"] == {"TestPluginA": {"analysis_args": {"model_attr": 17}}}
6868

6969

7070
def test_get_plugin_configs():

0 commit comments

Comments
 (0)