Skip to content

Commit f0a146d

Browse files
Jaspal SinghJaspal Singh
authored andcommitted
techsupport changes
1 parent cb523bc commit f0a146d

File tree

2 files changed

+45
-2
lines changed

2 files changed

+45
-2
lines changed

nodescraper/plugins/inband/package/analyzer_args.py

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -34,6 +34,9 @@
3434
class PackageAnalyzerArgs(AnalyzerArgs):
3535
exp_package_ver: Dict[str, Optional[str]] = Field(default_factory=dict)
3636
regex_match: bool = False
37+
rocm_regex: str = (
38+
r"ocl-icd|kfdtest|llvm-amd|miopen|half|hip|hcc|hsa|rocm|atmi|comgr|composa|amd-smi|aomp|amdgpu|rock|mivision|migraph|rocprofiler|roctracer|rocbl|hipify|rocsol|rocthr|rocff|rocalu|rocprim|rocrand|rccl|rocspar|rdc|rocwmma|rpp|openmp|amdfwflash|ocl|opencl"
39+
)
3740

3841
@classmethod
3942
def build_from_model(cls, datamodel: PackageDataModel) -> "PackageAnalyzerArgs":

nodescraper/plugins/inband/package/package_collector.py

Lines changed: 42 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -34,10 +34,11 @@
3434
from nodescraper.models import TaskResult
3535
from nodescraper.utils import get_exception_details
3636

37+
from .analyzer_args import PackageAnalyzerArgs
3738
from .packagedata import PackageDataModel
3839

3940

40-
class PackageCollector(InBandDataCollector[PackageDataModel, None]):
41+
class PackageCollector(InBandDataCollector[PackageDataModel, PackageAnalyzerArgs]):
4142
"""Collecting Package information from the system"""
4243

4344
DATA_MODEL = PackageDataModel
@@ -181,9 +182,34 @@ def _handle_command_failure(self, command_artifact: CommandArtifact):
181182
self.result.message = "Failed to run Package Manager command"
182183
self.result.status = ExecutionStatus.EXECUTION_FAILURE
183184

184-
def collect_data(self, args=None) -> tuple[TaskResult, Optional[PackageDataModel]]:
185+
def _filter_rocm_packages(self, packages: dict[str, str], rocm_pattern: str) -> dict[str, str]:
186+
"""Filter ROCm-related packages from a package dictionary.
187+
188+
This method searches package names for ROCm-related patterns and returns
189+
only the matching packages.
190+
191+
Args:
192+
packages (dict[str, str]): Dictionary with package names as keys and versions as values.
193+
rocm_pattern (str): Regex pattern to match ROCm-related package names.
194+
195+
Returns:
196+
dict[str, str]: Filtered dictionary containing only ROCm-related packages.
197+
"""
198+
rocm_packages = {}
199+
pattern = re.compile(rocm_pattern, re.IGNORECASE)
200+
for package_name, version in packages.items():
201+
if pattern.search(package_name):
202+
rocm_packages[package_name] = version
203+
return rocm_packages
204+
205+
def collect_data(
206+
self, args: Optional[PackageAnalyzerArgs] = None
207+
) -> tuple[TaskResult, Optional[PackageDataModel]]:
185208
"""Collect package information from the system.
186209
210+
Args:
211+
args (Optional[PackageAnalyzerArgs]): Optional arguments containing ROCm regex pattern.
212+
187213
Returns:
188214
tuple[TaskResult, Optional[PackageDataModel]]: tuple containing the task result and a PackageDataModel instance
189215
with the collected package information, or None if there was an error.
@@ -205,6 +231,20 @@ def collect_data(self, args=None) -> tuple[TaskResult, Optional[PackageDataModel
205231
self.result.message = "Unsupported OS"
206232
self.result.status = ExecutionStatus.NOT_RAN
207233
return self.result, None
234+
235+
# Filter and log ROCm packages if on Linux
236+
if self.system_info.os_family == OSFamily.LINUX and packages:
237+
# Get ROCm pattern from args or use default
238+
rocm_pattern = args.rocm_regex if args else PackageAnalyzerArgs().rocm_regex
239+
rocm_packages = self._filter_rocm_packages(packages, rocm_pattern)
240+
if rocm_packages:
241+
self._log_event(
242+
category=EventCategory.OS,
243+
description=f"Found {len(rocm_packages)} ROCm-related packages installed",
244+
priority=EventPriority.INFO,
245+
data={"rocm_packages": sorted(rocm_packages.keys())},
246+
)
247+
208248
try:
209249
package_model = PackageDataModel(version_info=packages)
210250
except ValidationError as val_err:

0 commit comments

Comments
 (0)