amd-node-scraper 0.0.1__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- amd_node_scraper-0.0.1/.github/CODEOWNERS +1 -0
- amd_node_scraper-0.0.1/.github/workflows/code_quality_checks.yml +26 -0
- amd_node_scraper-0.0.1/.github/workflows/functional-test.yml +30 -0
- amd_node_scraper-0.0.1/.github/workflows/release-trusted-publisher.yml +122 -0
- amd_node_scraper-0.0.1/.github/workflows/unit-test.yml +41 -0
- amd_node_scraper-0.0.1/.github/workflows/update-plugin-docs.yml +69 -0
- amd_node_scraper-0.0.1/.gitignore +133 -0
- amd_node_scraper-0.0.1/.mypy.ini +122 -0
- amd_node_scraper-0.0.1/.pre-commit-config.yaml +23 -0
- amd_node_scraper-0.0.1/CONTRIBUTING.md +92 -0
- amd_node_scraper-0.0.1/EXTENDING.md +134 -0
- amd_node_scraper-0.0.1/LICENSE +21 -0
- amd_node_scraper-0.0.1/PKG-INFO +424 -0
- amd_node_scraper-0.0.1/README.md +396 -0
- amd_node_scraper-0.0.1/amd_node_scraper.egg-info/PKG-INFO +424 -0
- amd_node_scraper-0.0.1/amd_node_scraper.egg-info/SOURCES.txt +314 -0
- amd_node_scraper-0.0.1/amd_node_scraper.egg-info/dependency_links.txt +1 -0
- amd_node_scraper-0.0.1/amd_node_scraper.egg-info/entry_points.txt +2 -0
- amd_node_scraper-0.0.1/amd_node_scraper.egg-info/requires.txt +17 -0
- amd_node_scraper-0.0.1/amd_node_scraper.egg-info/top_level.txt +1 -0
- amd_node_scraper-0.0.1/dev-setup.sh +13 -0
- amd_node_scraper-0.0.1/docs/PLUGIN_DOC.md +1560 -0
- amd_node_scraper-0.0.1/docs/generate_plugin_doc_bundle.py +571 -0
- amd_node_scraper-0.0.1/docs/node-scraper-external/README.md +142 -0
- amd_node_scraper-0.0.1/docs/node-scraper-external/ext_nodescraper_plugins/sample/__init__.py +25 -0
- amd_node_scraper-0.0.1/docs/node-scraper-external/ext_nodescraper_plugins/sample/sample_analyzer.py +51 -0
- amd_node_scraper-0.0.1/docs/node-scraper-external/ext_nodescraper_plugins/sample/sample_collector.py +45 -0
- amd_node_scraper-0.0.1/docs/node-scraper-external/ext_nodescraper_plugins/sample/sample_data.py +31 -0
- amd_node_scraper-0.0.1/docs/node-scraper-external/ext_nodescraper_plugins/sample/sample_plugin.py +41 -0
- amd_node_scraper-0.0.1/docs/node-scraper-external/pyproject.toml +12 -0
- amd_node_scraper-0.0.1/nodescraper/__init__.py +32 -0
- amd_node_scraper-0.0.1/nodescraper/base/__init__.py +34 -0
- amd_node_scraper-0.0.1/nodescraper/base/inbandcollectortask.py +118 -0
- amd_node_scraper-0.0.1/nodescraper/base/inbanddataplugin.py +39 -0
- amd_node_scraper-0.0.1/nodescraper/base/regexanalyzer.py +120 -0
- amd_node_scraper-0.0.1/nodescraper/cli/__init__.py +29 -0
- amd_node_scraper-0.0.1/nodescraper/cli/cli.py +511 -0
- amd_node_scraper-0.0.1/nodescraper/cli/constants.py +27 -0
- amd_node_scraper-0.0.1/nodescraper/cli/dynamicparserbuilder.py +171 -0
- amd_node_scraper-0.0.1/nodescraper/cli/helper.py +517 -0
- amd_node_scraper-0.0.1/nodescraper/cli/inputargtypes.py +129 -0
- amd_node_scraper-0.0.1/nodescraper/configbuilder.py +123 -0
- amd_node_scraper-0.0.1/nodescraper/configregistry.py +66 -0
- amd_node_scraper-0.0.1/nodescraper/configs/node_status.json +19 -0
- amd_node_scraper-0.0.1/nodescraper/connection/__init__.py +25 -0
- amd_node_scraper-0.0.1/nodescraper/connection/inband/__init__.py +46 -0
- amd_node_scraper-0.0.1/nodescraper/connection/inband/inband.py +171 -0
- amd_node_scraper-0.0.1/nodescraper/connection/inband/inbandlocal.py +93 -0
- amd_node_scraper-0.0.1/nodescraper/connection/inband/inbandmanager.py +151 -0
- amd_node_scraper-0.0.1/nodescraper/connection/inband/inbandremote.py +173 -0
- amd_node_scraper-0.0.1/nodescraper/connection/inband/sshparams.py +43 -0
- amd_node_scraper-0.0.1/nodescraper/constants.py +26 -0
- amd_node_scraper-0.0.1/nodescraper/enums/__init__.py +40 -0
- amd_node_scraper-0.0.1/nodescraper/enums/eventcategory.py +89 -0
- amd_node_scraper-0.0.1/nodescraper/enums/eventpriority.py +42 -0
- amd_node_scraper-0.0.1/nodescraper/enums/executionstatus.py +44 -0
- amd_node_scraper-0.0.1/nodescraper/enums/osfamily.py +34 -0
- amd_node_scraper-0.0.1/nodescraper/enums/systeminteraction.py +41 -0
- amd_node_scraper-0.0.1/nodescraper/enums/systemlocation.py +33 -0
- amd_node_scraper-0.0.1/nodescraper/generictypes.py +36 -0
- amd_node_scraper-0.0.1/nodescraper/interfaces/__init__.py +44 -0
- amd_node_scraper-0.0.1/nodescraper/interfaces/connectionmanager.py +143 -0
- amd_node_scraper-0.0.1/nodescraper/interfaces/dataanalyzertask.py +138 -0
- amd_node_scraper-0.0.1/nodescraper/interfaces/datacollectortask.py +185 -0
- amd_node_scraper-0.0.1/nodescraper/interfaces/dataplugin.py +356 -0
- amd_node_scraper-0.0.1/nodescraper/interfaces/plugin.py +127 -0
- amd_node_scraper-0.0.1/nodescraper/interfaces/resultcollator.py +56 -0
- amd_node_scraper-0.0.1/nodescraper/interfaces/task.py +164 -0
- amd_node_scraper-0.0.1/nodescraper/interfaces/taskresulthook.py +39 -0
- amd_node_scraper-0.0.1/nodescraper/models/__init__.py +48 -0
- amd_node_scraper-0.0.1/nodescraper/models/analyzerargs.py +93 -0
- amd_node_scraper-0.0.1/nodescraper/models/collectorargs.py +30 -0
- amd_node_scraper-0.0.1/nodescraper/models/connectionconfig.py +34 -0
- amd_node_scraper-0.0.1/nodescraper/models/datamodel.py +171 -0
- amd_node_scraper-0.0.1/nodescraper/models/datapluginresult.py +39 -0
- amd_node_scraper-0.0.1/nodescraper/models/event.py +158 -0
- amd_node_scraper-0.0.1/nodescraper/models/pluginconfig.py +38 -0
- amd_node_scraper-0.0.1/nodescraper/models/pluginresult.py +39 -0
- amd_node_scraper-0.0.1/nodescraper/models/systeminfo.py +44 -0
- amd_node_scraper-0.0.1/nodescraper/models/taskresult.py +185 -0
- amd_node_scraper-0.0.1/nodescraper/models/timerangeargs.py +38 -0
- amd_node_scraper-0.0.1/nodescraper/pluginexecutor.py +274 -0
- amd_node_scraper-0.0.1/nodescraper/pluginregistry.py +152 -0
- amd_node_scraper-0.0.1/nodescraper/plugins/__init__.py +25 -0
- amd_node_scraper-0.0.1/nodescraper/plugins/inband/__init__.py +25 -0
- amd_node_scraper-0.0.1/nodescraper/plugins/inband/amdsmi/__init__.py +28 -0
- amd_node_scraper-0.0.1/nodescraper/plugins/inband/amdsmi/amdsmi_analyzer.py +821 -0
- amd_node_scraper-0.0.1/nodescraper/plugins/inband/amdsmi/amdsmi_collector.py +1313 -0
- amd_node_scraper-0.0.1/nodescraper/plugins/inband/amdsmi/amdsmi_plugin.py +43 -0
- amd_node_scraper-0.0.1/nodescraper/plugins/inband/amdsmi/amdsmidata.py +1002 -0
- amd_node_scraper-0.0.1/nodescraper/plugins/inband/amdsmi/analyzer_args.py +50 -0
- amd_node_scraper-0.0.1/nodescraper/plugins/inband/amdsmi/cper.py +65 -0
- amd_node_scraper-0.0.1/nodescraper/plugins/inband/bios/__init__.py +29 -0
- amd_node_scraper-0.0.1/nodescraper/plugins/inband/bios/analyzer_args.py +64 -0
- amd_node_scraper-0.0.1/nodescraper/plugins/inband/bios/bios_analyzer.py +93 -0
- amd_node_scraper-0.0.1/nodescraper/plugins/inband/bios/bios_collector.py +93 -0
- amd_node_scraper-0.0.1/nodescraper/plugins/inband/bios/bios_plugin.py +43 -0
- amd_node_scraper-0.0.1/nodescraper/plugins/inband/bios/biosdata.py +30 -0
- amd_node_scraper-0.0.1/nodescraper/plugins/inband/cmdline/__init__.py +25 -0
- amd_node_scraper-0.0.1/nodescraper/plugins/inband/cmdline/analyzer_args.py +80 -0
- amd_node_scraper-0.0.1/nodescraper/plugins/inband/cmdline/cmdline_analyzer.py +113 -0
- amd_node_scraper-0.0.1/nodescraper/plugins/inband/cmdline/cmdline_collector.py +77 -0
- amd_node_scraper-0.0.1/nodescraper/plugins/inband/cmdline/cmdline_plugin.py +43 -0
- amd_node_scraper-0.0.1/nodescraper/plugins/inband/cmdline/cmdlinedata.py +30 -0
- amd_node_scraper-0.0.1/nodescraper/plugins/inband/device_enumeration/__init__.py +29 -0
- amd_node_scraper-0.0.1/nodescraper/plugins/inband/device_enumeration/analyzer_args.py +73 -0
- amd_node_scraper-0.0.1/nodescraper/plugins/inband/device_enumeration/device_enumeration_analyzer.py +81 -0
- amd_node_scraper-0.0.1/nodescraper/plugins/inband/device_enumeration/device_enumeration_collector.py +176 -0
- amd_node_scraper-0.0.1/nodescraper/plugins/inband/device_enumeration/device_enumeration_plugin.py +45 -0
- amd_node_scraper-0.0.1/nodescraper/plugins/inband/device_enumeration/deviceenumdata.py +36 -0
- amd_node_scraper-0.0.1/nodescraper/plugins/inband/dimm/__init__.py +25 -0
- amd_node_scraper-0.0.1/nodescraper/plugins/inband/dimm/collector_args.py +31 -0
- amd_node_scraper-0.0.1/nodescraper/plugins/inband/dimm/dimm_collector.py +151 -0
- amd_node_scraper-0.0.1/nodescraper/plugins/inband/dimm/dimm_plugin.py +40 -0
- amd_node_scraper-0.0.1/nodescraper/plugins/inband/dimm/dimmdata.py +30 -0
- amd_node_scraper-0.0.1/nodescraper/plugins/inband/dkms/__init__.py +25 -0
- amd_node_scraper-0.0.1/nodescraper/plugins/inband/dkms/analyzer_args.py +85 -0
- amd_node_scraper-0.0.1/nodescraper/plugins/inband/dkms/dkms_analyzer.py +106 -0
- amd_node_scraper-0.0.1/nodescraper/plugins/inband/dkms/dkms_collector.py +76 -0
- amd_node_scraper-0.0.1/nodescraper/plugins/inband/dkms/dkms_plugin.py +43 -0
- amd_node_scraper-0.0.1/nodescraper/plugins/inband/dkms/dkmsdata.py +33 -0
- amd_node_scraper-0.0.1/nodescraper/plugins/inband/dmesg/__init__.py +28 -0
- amd_node_scraper-0.0.1/nodescraper/plugins/inband/dmesg/analyzer_args.py +33 -0
- amd_node_scraper-0.0.1/nodescraper/plugins/inband/dmesg/collector_args.py +39 -0
- amd_node_scraper-0.0.1/nodescraper/plugins/inband/dmesg/dmesg_analyzer.py +503 -0
- amd_node_scraper-0.0.1/nodescraper/plugins/inband/dmesg/dmesg_collector.py +164 -0
- amd_node_scraper-0.0.1/nodescraper/plugins/inband/dmesg/dmesg_plugin.py +44 -0
- amd_node_scraper-0.0.1/nodescraper/plugins/inband/dmesg/dmesgdata.py +116 -0
- amd_node_scraper-0.0.1/nodescraper/plugins/inband/fabrics/__init__.py +28 -0
- amd_node_scraper-0.0.1/nodescraper/plugins/inband/fabrics/fabrics_collector.py +726 -0
- amd_node_scraper-0.0.1/nodescraper/plugins/inband/fabrics/fabrics_plugin.py +37 -0
- amd_node_scraper-0.0.1/nodescraper/plugins/inband/fabrics/fabricsdata.py +140 -0
- amd_node_scraper-0.0.1/nodescraper/plugins/inband/journal/__init__.py +28 -0
- amd_node_scraper-0.0.1/nodescraper/plugins/inband/journal/collector_args.py +33 -0
- amd_node_scraper-0.0.1/nodescraper/plugins/inband/journal/journal_collector.py +107 -0
- amd_node_scraper-0.0.1/nodescraper/plugins/inband/journal/journal_plugin.py +40 -0
- amd_node_scraper-0.0.1/nodescraper/plugins/inband/journal/journaldata.py +44 -0
- amd_node_scraper-0.0.1/nodescraper/plugins/inband/kernel/__init__.py +25 -0
- amd_node_scraper-0.0.1/nodescraper/plugins/inband/kernel/analyzer_args.py +64 -0
- amd_node_scraper-0.0.1/nodescraper/plugins/inband/kernel/kernel_analyzer.py +91 -0
- amd_node_scraper-0.0.1/nodescraper/plugins/inband/kernel/kernel_collector.py +129 -0
- amd_node_scraper-0.0.1/nodescraper/plugins/inband/kernel/kernel_plugin.py +43 -0
- amd_node_scraper-0.0.1/nodescraper/plugins/inband/kernel/kerneldata.py +32 -0
- amd_node_scraper-0.0.1/nodescraper/plugins/inband/kernel_module/__init__.py +25 -0
- amd_node_scraper-0.0.1/nodescraper/plugins/inband/kernel_module/analyzer_args.py +59 -0
- amd_node_scraper-0.0.1/nodescraper/plugins/inband/kernel_module/kernel_module_analyzer.py +211 -0
- amd_node_scraper-0.0.1/nodescraper/plugins/inband/kernel_module/kernel_module_collector.py +264 -0
- amd_node_scraper-0.0.1/nodescraper/plugins/inband/kernel_module/kernel_module_data.py +60 -0
- amd_node_scraper-0.0.1/nodescraper/plugins/inband/kernel_module/kernel_module_plugin.py +43 -0
- amd_node_scraper-0.0.1/nodescraper/plugins/inband/memory/__init__.py +25 -0
- amd_node_scraper-0.0.1/nodescraper/plugins/inband/memory/analyzer_args.py +45 -0
- amd_node_scraper-0.0.1/nodescraper/plugins/inband/memory/memory_analyzer.py +98 -0
- amd_node_scraper-0.0.1/nodescraper/plugins/inband/memory/memory_collector.py +330 -0
- amd_node_scraper-0.0.1/nodescraper/plugins/inband/memory/memory_plugin.py +43 -0
- amd_node_scraper-0.0.1/nodescraper/plugins/inband/memory/memorydata.py +90 -0
- amd_node_scraper-0.0.1/nodescraper/plugins/inband/network/__init__.py +28 -0
- amd_node_scraper-0.0.1/nodescraper/plugins/inband/network/network_collector.py +1828 -0
- amd_node_scraper-0.0.1/nodescraper/plugins/inband/network/network_plugin.py +37 -0
- amd_node_scraper-0.0.1/nodescraper/plugins/inband/network/networkdata.py +319 -0
- amd_node_scraper-0.0.1/nodescraper/plugins/inband/nvme/__init__.py +28 -0
- amd_node_scraper-0.0.1/nodescraper/plugins/inband/nvme/nvme_collector.py +167 -0
- amd_node_scraper-0.0.1/nodescraper/plugins/inband/nvme/nvme_plugin.py +37 -0
- amd_node_scraper-0.0.1/nodescraper/plugins/inband/nvme/nvmedata.py +45 -0
- amd_node_scraper-0.0.1/nodescraper/plugins/inband/os/__init__.py +25 -0
- amd_node_scraper-0.0.1/nodescraper/plugins/inband/os/analyzer_args.py +64 -0
- amd_node_scraper-0.0.1/nodescraper/plugins/inband/os/os_analyzer.py +73 -0
- amd_node_scraper-0.0.1/nodescraper/plugins/inband/os/os_collector.py +131 -0
- amd_node_scraper-0.0.1/nodescraper/plugins/inband/os/os_plugin.py +43 -0
- amd_node_scraper-0.0.1/nodescraper/plugins/inband/os/osdata.py +31 -0
- amd_node_scraper-0.0.1/nodescraper/plugins/inband/package/__init__.py +25 -0
- amd_node_scraper-0.0.1/nodescraper/plugins/inband/package/analyzer_args.py +48 -0
- amd_node_scraper-0.0.1/nodescraper/plugins/inband/package/package_analyzer.py +253 -0
- amd_node_scraper-0.0.1/nodescraper/plugins/inband/package/package_collector.py +273 -0
- amd_node_scraper-0.0.1/nodescraper/plugins/inband/package/package_plugin.py +43 -0
- amd_node_scraper-0.0.1/nodescraper/plugins/inband/package/packagedata.py +41 -0
- amd_node_scraper-0.0.1/nodescraper/plugins/inband/pcie/__init__.py +29 -0
- amd_node_scraper-0.0.1/nodescraper/plugins/inband/pcie/analyzer_args.py +63 -0
- amd_node_scraper-0.0.1/nodescraper/plugins/inband/pcie/pcie_analyzer.py +1081 -0
- amd_node_scraper-0.0.1/nodescraper/plugins/inband/pcie/pcie_collector.py +690 -0
- amd_node_scraper-0.0.1/nodescraper/plugins/inband/pcie/pcie_data.py +2017 -0
- amd_node_scraper-0.0.1/nodescraper/plugins/inband/pcie/pcie_plugin.py +43 -0
- amd_node_scraper-0.0.1/nodescraper/plugins/inband/process/__init__.py +25 -0
- amd_node_scraper-0.0.1/nodescraper/plugins/inband/process/analyzer_args.py +45 -0
- amd_node_scraper-0.0.1/nodescraper/plugins/inband/process/collector_args.py +31 -0
- amd_node_scraper-0.0.1/nodescraper/plugins/inband/process/process_analyzer.py +91 -0
- amd_node_scraper-0.0.1/nodescraper/plugins/inband/process/process_collector.py +115 -0
- amd_node_scraper-0.0.1/nodescraper/plugins/inband/process/process_plugin.py +46 -0
- amd_node_scraper-0.0.1/nodescraper/plugins/inband/process/processdata.py +34 -0
- amd_node_scraper-0.0.1/nodescraper/plugins/inband/rocm/__init__.py +25 -0
- amd_node_scraper-0.0.1/nodescraper/plugins/inband/rocm/analyzer_args.py +66 -0
- amd_node_scraper-0.0.1/nodescraper/plugins/inband/rocm/rocm_analyzer.py +100 -0
- amd_node_scraper-0.0.1/nodescraper/plugins/inband/rocm/rocm_collector.py +205 -0
- amd_node_scraper-0.0.1/nodescraper/plugins/inband/rocm/rocm_plugin.py +43 -0
- amd_node_scraper-0.0.1/nodescraper/plugins/inband/rocm/rocmdata.py +62 -0
- amd_node_scraper-0.0.1/nodescraper/plugins/inband/storage/__init__.py +25 -0
- amd_node_scraper-0.0.1/nodescraper/plugins/inband/storage/analyzer_args.py +38 -0
- amd_node_scraper-0.0.1/nodescraper/plugins/inband/storage/collector_args.py +31 -0
- amd_node_scraper-0.0.1/nodescraper/plugins/inband/storage/storage_analyzer.py +152 -0
- amd_node_scraper-0.0.1/nodescraper/plugins/inband/storage/storage_collector.py +110 -0
- amd_node_scraper-0.0.1/nodescraper/plugins/inband/storage/storage_plugin.py +44 -0
- amd_node_scraper-0.0.1/nodescraper/plugins/inband/storage/storagedata.py +70 -0
- amd_node_scraper-0.0.1/nodescraper/plugins/inband/sysctl/__init__.py +29 -0
- amd_node_scraper-0.0.1/nodescraper/plugins/inband/sysctl/analyzer_args.py +67 -0
- amd_node_scraper-0.0.1/nodescraper/plugins/inband/sysctl/sysctl_analyzer.py +81 -0
- amd_node_scraper-0.0.1/nodescraper/plugins/inband/sysctl/sysctl_collector.py +101 -0
- amd_node_scraper-0.0.1/nodescraper/plugins/inband/sysctl/sysctl_plugin.py +43 -0
- amd_node_scraper-0.0.1/nodescraper/plugins/inband/sysctl/sysctldata.py +42 -0
- amd_node_scraper-0.0.1/nodescraper/plugins/inband/syslog/__init__.py +28 -0
- amd_node_scraper-0.0.1/nodescraper/plugins/inband/syslog/syslog_collector.py +121 -0
- amd_node_scraper-0.0.1/nodescraper/plugins/inband/syslog/syslog_plugin.py +37 -0
- amd_node_scraper-0.0.1/nodescraper/plugins/inband/syslog/syslogdata.py +46 -0
- amd_node_scraper-0.0.1/nodescraper/plugins/inband/uptime/__init__.py +25 -0
- amd_node_scraper-0.0.1/nodescraper/plugins/inband/uptime/uptime_collector.py +88 -0
- amd_node_scraper-0.0.1/nodescraper/plugins/inband/uptime/uptime_plugin.py +37 -0
- amd_node_scraper-0.0.1/nodescraper/plugins/inband/uptime/uptimedata.py +31 -0
- amd_node_scraper-0.0.1/nodescraper/resultcollators/__init__.py +25 -0
- amd_node_scraper-0.0.1/nodescraper/resultcollators/tablesummary.py +159 -0
- amd_node_scraper-0.0.1/nodescraper/taskresulthooks/__init__.py +28 -0
- amd_node_scraper-0.0.1/nodescraper/taskresulthooks/filesystemloghook.py +88 -0
- amd_node_scraper-0.0.1/nodescraper/typeutils.py +171 -0
- amd_node_scraper-0.0.1/nodescraper/utils.py +412 -0
- amd_node_scraper-0.0.1/pyproject.toml +65 -0
- amd_node_scraper-0.0.1/pytest.ini +2 -0
- amd_node_scraper-0.0.1/setup.cfg +4 -0
- amd_node_scraper-0.0.1/setup.py +30 -0
- amd_node_scraper-0.0.1/test/functional/__init__.py +26 -0
- amd_node_scraper-0.0.1/test/functional/conftest.py +57 -0
- amd_node_scraper-0.0.1/test/functional/fixtures/bios_plugin_config.json +14 -0
- amd_node_scraper-0.0.1/test/functional/fixtures/cmdline_plugin_config.json +14 -0
- amd_node_scraper-0.0.1/test/functional/fixtures/dimm_plugin_config.json +9 -0
- amd_node_scraper-0.0.1/test/functional/fixtures/dkms_plugin_config.json +15 -0
- amd_node_scraper-0.0.1/test/functional/fixtures/dmesg_plugin_config.json +14 -0
- amd_node_scraper-0.0.1/test/functional/fixtures/dmesg_sample.log +43 -0
- amd_node_scraper-0.0.1/test/functional/fixtures/fabrics_plugin_config.json +11 -0
- amd_node_scraper-0.0.1/test/functional/fixtures/journal_plugin_config.json +13 -0
- amd_node_scraper-0.0.1/test/functional/fixtures/kernel_module_plugin_config.json +14 -0
- amd_node_scraper-0.0.1/test/functional/fixtures/kernel_plugin_config.json +14 -0
- amd_node_scraper-0.0.1/test/functional/fixtures/memory_plugin_config.json +14 -0
- amd_node_scraper-0.0.1/test/functional/fixtures/network_plugin_config.json +11 -0
- amd_node_scraper-0.0.1/test/functional/fixtures/nvme_plugin_config.json +9 -0
- amd_node_scraper-0.0.1/test/functional/fixtures/os_plugin_config.json +14 -0
- amd_node_scraper-0.0.1/test/functional/fixtures/package_plugin_config.json +20 -0
- amd_node_scraper-0.0.1/test/functional/fixtures/pcie_plugin_advanced_config.json +28 -0
- amd_node_scraper-0.0.1/test/functional/fixtures/pcie_plugin_config.json +19 -0
- amd_node_scraper-0.0.1/test/functional/fixtures/process_plugin_config.json +14 -0
- amd_node_scraper-0.0.1/test/functional/fixtures/rocm_plugin_config.json +13 -0
- amd_node_scraper-0.0.1/test/functional/fixtures/storage_plugin_config.json +17 -0
- amd_node_scraper-0.0.1/test/functional/fixtures/sysctl_plugin_config.json +23 -0
- amd_node_scraper-0.0.1/test/functional/fixtures/syslog_plugin_config.json +9 -0
- amd_node_scraper-0.0.1/test/functional/fixtures/uptime_plugin_config.json +9 -0
- amd_node_scraper-0.0.1/test/functional/test_cli_describe.py +55 -0
- amd_node_scraper-0.0.1/test/functional/test_cli_help.py +83 -0
- amd_node_scraper-0.0.1/test/functional/test_fabrics_plugin.py +106 -0
- amd_node_scraper-0.0.1/test/functional/test_network_plugin.py +106 -0
- amd_node_scraper-0.0.1/test/functional/test_pcie_plugin.py +148 -0
- amd_node_scraper-0.0.1/test/functional/test_plugin_configs.py +336 -0
- amd_node_scraper-0.0.1/test/functional/test_plugin_registry.py +75 -0
- amd_node_scraper-0.0.1/test/functional/test_reference_config_workflow.py +345 -0
- amd_node_scraper-0.0.1/test/functional/test_run_plugins.py +174 -0
- amd_node_scraper-0.0.1/test/unit/conftest.py +123 -0
- amd_node_scraper-0.0.1/test/unit/framework/common/shared_utils.py +96 -0
- amd_node_scraper-0.0.1/test/unit/framework/fixtures/example.json +3 -0
- amd_node_scraper-0.0.1/test/unit/framework/fixtures/example_config.json +9 -0
- amd_node_scraper-0.0.1/test/unit/framework/fixtures/invalid.json +1 -0
- amd_node_scraper-0.0.1/test/unit/framework/fixtures/log_dir/collector/biosdatamodel.json +3 -0
- amd_node_scraper-0.0.1/test/unit/framework/fixtures/log_dir/collector/result.json +8 -0
- amd_node_scraper-0.0.1/test/unit/framework/test_analyzerargs.py +51 -0
- amd_node_scraper-0.0.1/test/unit/framework/test_cli.py +152 -0
- amd_node_scraper-0.0.1/test/unit/framework/test_cli_helper.py +261 -0
- amd_node_scraper-0.0.1/test/unit/framework/test_config_builder.py +41 -0
- amd_node_scraper-0.0.1/test/unit/framework/test_config_registry.py +49 -0
- amd_node_scraper-0.0.1/test/unit/framework/test_dataanalyzer.py +91 -0
- amd_node_scraper-0.0.1/test/unit/framework/test_datacollector.py +158 -0
- amd_node_scraper-0.0.1/test/unit/framework/test_dataplugin.py +405 -0
- amd_node_scraper-0.0.1/test/unit/framework/test_file_artifact.py +74 -0
- amd_node_scraper-0.0.1/test/unit/framework/test_plugin_executor.py +165 -0
- amd_node_scraper-0.0.1/test/unit/framework/test_type_utils.py +95 -0
- amd_node_scraper-0.0.1/test/unit/plugin/fixtures/package_commands.json +21 -0
- amd_node_scraper-0.0.1/test/unit/plugin/test_amdsmi_analyzer.py +803 -0
- amd_node_scraper-0.0.1/test/unit/plugin/test_amdsmi_collector.py +485 -0
- amd_node_scraper-0.0.1/test/unit/plugin/test_analyzer_args_build_from_model.py +220 -0
- amd_node_scraper-0.0.1/test/unit/plugin/test_bios_analyzer.py +115 -0
- amd_node_scraper-0.0.1/test/unit/plugin/test_bios_collector.py +96 -0
- amd_node_scraper-0.0.1/test/unit/plugin/test_cmdline_analyzer.py +107 -0
- amd_node_scraper-0.0.1/test/unit/plugin/test_cmdline_collector.py +86 -0
- amd_node_scraper-0.0.1/test/unit/plugin/test_device_enumeration_analyzer.py +127 -0
- amd_node_scraper-0.0.1/test/unit/plugin/test_device_enumeration_collector.py +164 -0
- amd_node_scraper-0.0.1/test/unit/plugin/test_dimms_collector.py +112 -0
- amd_node_scraper-0.0.1/test/unit/plugin/test_dkms_analyzer.py +171 -0
- amd_node_scraper-0.0.1/test/unit/plugin/test_dkms_collector.py +83 -0
- amd_node_scraper-0.0.1/test/unit/plugin/test_dmesg_analyzer.py +281 -0
- amd_node_scraper-0.0.1/test/unit/plugin/test_dmesg_collector.py +303 -0
- amd_node_scraper-0.0.1/test/unit/plugin/test_fabrics_collector.py +406 -0
- amd_node_scraper-0.0.1/test/unit/plugin/test_journal_collector.py +71 -0
- amd_node_scraper-0.0.1/test/unit/plugin/test_kernel_analyzer.py +154 -0
- amd_node_scraper-0.0.1/test/unit/plugin/test_kernel_collector.py +93 -0
- amd_node_scraper-0.0.1/test/unit/plugin/test_kernel_module_analyzer.py +145 -0
- amd_node_scraper-0.0.1/test/unit/plugin/test_kernel_module_collector.py +453 -0
- amd_node_scraper-0.0.1/test/unit/plugin/test_memory_analyzer.py +67 -0
- amd_node_scraper-0.0.1/test/unit/plugin/test_memory_collector.py +375 -0
- amd_node_scraper-0.0.1/test/unit/plugin/test_network_collector.py +1861 -0
- amd_node_scraper-0.0.1/test/unit/plugin/test_nvme_collector.py +118 -0
- amd_node_scraper-0.0.1/test/unit/plugin/test_os_analyzer.py +163 -0
- amd_node_scraper-0.0.1/test/unit/plugin/test_os_collector.py +130 -0
- amd_node_scraper-0.0.1/test/unit/plugin/test_package_analyzer.py +110 -0
- amd_node_scraper-0.0.1/test/unit/plugin/test_package_collector.py +333 -0
- amd_node_scraper-0.0.1/test/unit/plugin/test_process_analyzer.py +100 -0
- amd_node_scraper-0.0.1/test/unit/plugin/test_process_collector.py +100 -0
- amd_node_scraper-0.0.1/test/unit/plugin/test_rocm_analyzer.py +111 -0
- amd_node_scraper-0.0.1/test/unit/plugin/test_rocm_collector.py +288 -0
- amd_node_scraper-0.0.1/test/unit/plugin/test_storage_analyzer.py +168 -0
- amd_node_scraper-0.0.1/test/unit/plugin/test_storage_collector.py +123 -0
- amd_node_scraper-0.0.1/test/unit/plugin/test_sysctl_analyzer.py +68 -0
- amd_node_scraper-0.0.1/test/unit/plugin/test_sysctl_collector.py +78 -0
- amd_node_scraper-0.0.1/test/unit/plugin/test_syslog_collector.py +161 -0
- amd_node_scraper-0.0.1/test/unit/plugin/test_uptime_collector.py +72 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
* @landrews-amd @alexandraBara @jaspals3123
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
# workflow to validate code formatting using pre-commit hooks
|
|
2
|
+
name: Code Quality Check
|
|
3
|
+
|
|
4
|
+
permissions:
|
|
5
|
+
contents: read
|
|
6
|
+
|
|
7
|
+
on:
|
|
8
|
+
- pull_request
|
|
9
|
+
- workflow_dispatch
|
|
10
|
+
|
|
11
|
+
jobs:
|
|
12
|
+
pre-commit:
|
|
13
|
+
runs-on: ubuntu-latest
|
|
14
|
+
container: python:3.9
|
|
15
|
+
|
|
16
|
+
steps:
|
|
17
|
+
- uses: actions/checkout@v3
|
|
18
|
+
- name: setup environment and run pre-commit hooks
|
|
19
|
+
shell: bash
|
|
20
|
+
run: |
|
|
21
|
+
source ./dev-setup.sh
|
|
22
|
+
pre-commit run --all-files --show-diff-on-failure --color=always
|
|
23
|
+
- name: Print message on failure
|
|
24
|
+
if: failure()
|
|
25
|
+
run: |
|
|
26
|
+
echo "### :x: Pre-commit hooks failed. Please check logs for changes needed" >> $GITHUB_STEP_SUMMARY
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
name: Python Functional Tests
|
|
2
|
+
|
|
3
|
+
on:
|
|
4
|
+
workflow_dispatch:
|
|
5
|
+
pull_request:
|
|
6
|
+
push:
|
|
7
|
+
branches: [ "main" ]
|
|
8
|
+
|
|
9
|
+
permissions:
|
|
10
|
+
contents: read
|
|
11
|
+
|
|
12
|
+
jobs:
|
|
13
|
+
run_tests:
|
|
14
|
+
runs-on: ubuntu-latest
|
|
15
|
+
container: python:3.9
|
|
16
|
+
|
|
17
|
+
steps:
|
|
18
|
+
- uses: actions/checkout@v3
|
|
19
|
+
|
|
20
|
+
- name: Install xmllint
|
|
21
|
+
run: |
|
|
22
|
+
apt-get update
|
|
23
|
+
apt-get install -y libxml2-utils bc
|
|
24
|
+
|
|
25
|
+
- name: Install package and run functional tests
|
|
26
|
+
id: run_functional_tests
|
|
27
|
+
shell: bash
|
|
28
|
+
run: |
|
|
29
|
+
source ./dev-setup.sh
|
|
30
|
+
pytest test/functional -s --disable-warnings -v
|
|
@@ -0,0 +1,122 @@
|
|
|
1
|
+
name: Release (Trusted Publisher)
|
|
2
|
+
|
|
3
|
+
permissions:
|
|
4
|
+
contents: write # Required for creating releases and pushing tags
|
|
5
|
+
id-token: write # Required for PyPI Trusted Publishing
|
|
6
|
+
|
|
7
|
+
on:
|
|
8
|
+
workflow_dispatch:
|
|
9
|
+
inputs:
|
|
10
|
+
release_type:
|
|
11
|
+
description: 'Release type (major, minor, patch)'
|
|
12
|
+
required: true
|
|
13
|
+
type: choice
|
|
14
|
+
options:
|
|
15
|
+
- patch
|
|
16
|
+
- minor
|
|
17
|
+
- major
|
|
18
|
+
|
|
19
|
+
jobs:
|
|
20
|
+
release:
|
|
21
|
+
runs-on: ubuntu-latest
|
|
22
|
+
|
|
23
|
+
steps:
|
|
24
|
+
- name: Checkout code
|
|
25
|
+
uses: actions/checkout@v3
|
|
26
|
+
with:
|
|
27
|
+
fetch-depth: 0 # Fetch all history and tags
|
|
28
|
+
token: ${{ secrets.GITHUB_TOKEN }}
|
|
29
|
+
|
|
30
|
+
- name: Fetch all tags
|
|
31
|
+
run: |
|
|
32
|
+
git fetch --tags --force
|
|
33
|
+
|
|
34
|
+
- name: Set up Python
|
|
35
|
+
uses: actions/setup-python@v4
|
|
36
|
+
with:
|
|
37
|
+
python-version: '3.9'
|
|
38
|
+
|
|
39
|
+
- name: Configure Git
|
|
40
|
+
run: |
|
|
41
|
+
git config --global user.name "github-actions[bot]"
|
|
42
|
+
git config --global user.email "github-actions[bot]@users.noreply.github.com"
|
|
43
|
+
|
|
44
|
+
- name: Calculate next version
|
|
45
|
+
id: next_version
|
|
46
|
+
shell: bash
|
|
47
|
+
run: |
|
|
48
|
+
# Get the latest tag, default to v0.0.0 if no tags exist
|
|
49
|
+
LATEST_TAG=$(git describe --tags --abbrev=0 2>/dev/null || echo "v0.0.0")
|
|
50
|
+
echo "Latest tag: $LATEST_TAG"
|
|
51
|
+
|
|
52
|
+
# Remove 'v' prefix and split into components
|
|
53
|
+
VERSION=${LATEST_TAG#v}
|
|
54
|
+
IFS='.' read -r -a VERSION_PARTS <<< "$VERSION"
|
|
55
|
+
MAJOR="${VERSION_PARTS[0]:-0}"
|
|
56
|
+
MINOR="${VERSION_PARTS[1]:-0}"
|
|
57
|
+
PATCH="${VERSION_PARTS[2]:-0}"
|
|
58
|
+
|
|
59
|
+
echo "Current version: $MAJOR.$MINOR.$PATCH"
|
|
60
|
+
|
|
61
|
+
# Increment based on release type
|
|
62
|
+
case "${{ github.event.inputs.release_type }}" in
|
|
63
|
+
major)
|
|
64
|
+
MAJOR=$((MAJOR + 1))
|
|
65
|
+
MINOR=0
|
|
66
|
+
PATCH=0
|
|
67
|
+
;;
|
|
68
|
+
minor)
|
|
69
|
+
MINOR=$((MINOR + 1))
|
|
70
|
+
PATCH=0
|
|
71
|
+
;;
|
|
72
|
+
patch)
|
|
73
|
+
PATCH=$((PATCH + 1))
|
|
74
|
+
;;
|
|
75
|
+
esac
|
|
76
|
+
|
|
77
|
+
NEW_VERSION="v${MAJOR}.${MINOR}.${PATCH}"
|
|
78
|
+
echo "New version: $NEW_VERSION"
|
|
79
|
+
echo "version=$NEW_VERSION" >> $GITHUB_OUTPUT
|
|
80
|
+
|
|
81
|
+
- name: Create and push tag
|
|
82
|
+
run: |
|
|
83
|
+
git tag ${{ steps.next_version.outputs.version }}
|
|
84
|
+
git push origin ${{ steps.next_version.outputs.version }}
|
|
85
|
+
|
|
86
|
+
- name: Install build dependencies
|
|
87
|
+
run: |
|
|
88
|
+
python -m pip install --upgrade pip
|
|
89
|
+
python -m pip install build
|
|
90
|
+
|
|
91
|
+
- name: Build package
|
|
92
|
+
run: |
|
|
93
|
+
python -m build
|
|
94
|
+
|
|
95
|
+
- name: Upload to PyPI using Trusted Publisher
|
|
96
|
+
uses: pypa/gh-action-pypi-publish@release/v1
|
|
97
|
+
with:
|
|
98
|
+
packages-dir: dist/
|
|
99
|
+
|
|
100
|
+
- name: Create GitHub Release
|
|
101
|
+
env:
|
|
102
|
+
GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
|
103
|
+
run: |
|
|
104
|
+
gh release create ${{ steps.next_version.outputs.version }} \
|
|
105
|
+
--title "${{ steps.next_version.outputs.version }}" \
|
|
106
|
+
--generate-notes \
|
|
107
|
+
dist/*
|
|
108
|
+
|
|
109
|
+
- name: Print summary
|
|
110
|
+
if: success()
|
|
111
|
+
run: |
|
|
112
|
+
echo "### :rocket: Release ${{ steps.next_version.outputs.version }} completed successfully!" >> $GITHUB_STEP_SUMMARY
|
|
113
|
+
echo "" >> $GITHUB_STEP_SUMMARY
|
|
114
|
+
echo "- **Release Type:** ${{ github.event.inputs.release_type }}" >> $GITHUB_STEP_SUMMARY
|
|
115
|
+
echo "- **New Version:** ${{ steps.next_version.outputs.version }}" >> $GITHUB_STEP_SUMMARY
|
|
116
|
+
echo "- **PyPI Package:** Published via Trusted Publisher" >> $GITHUB_STEP_SUMMARY
|
|
117
|
+
echo "- **GitHub Release:** Created with auto-generated notes" >> $GITHUB_STEP_SUMMARY
|
|
118
|
+
|
|
119
|
+
- name: Print failure message
|
|
120
|
+
if: failure()
|
|
121
|
+
run: |
|
|
122
|
+
echo "### :x: Release failed. Please check the logs above." >> $GITHUB_STEP_SUMMARY
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
name: Python Unit Tests
|
|
2
|
+
|
|
3
|
+
on:
|
|
4
|
+
workflow_dispatch:
|
|
5
|
+
pull_request:
|
|
6
|
+
push:
|
|
7
|
+
branches: [ "main" ]
|
|
8
|
+
|
|
9
|
+
permissions:
|
|
10
|
+
contents: read
|
|
11
|
+
|
|
12
|
+
jobs:
|
|
13
|
+
run_tests:
|
|
14
|
+
runs-on: ubuntu-latest
|
|
15
|
+
container: python:3.9
|
|
16
|
+
|
|
17
|
+
steps:
|
|
18
|
+
- uses: actions/checkout@v3
|
|
19
|
+
|
|
20
|
+
- name: Install xmllint
|
|
21
|
+
run: |
|
|
22
|
+
apt-get update
|
|
23
|
+
apt-get install -y libxml2-utils bc
|
|
24
|
+
|
|
25
|
+
- name: Install package and run unit tests with coverage
|
|
26
|
+
id: extract_coverage
|
|
27
|
+
shell: bash
|
|
28
|
+
run: |
|
|
29
|
+
source ./dev-setup.sh
|
|
30
|
+
pytest test/unit -s --cov=nodescraper --cov-report=xml --cov-report=term --cov-fail-under=70 --maxfail=1 --disable-warnings -v
|
|
31
|
+
|
|
32
|
+
- name: Print coverage
|
|
33
|
+
run: |
|
|
34
|
+
total_coverage=$(xmllint --xpath "string(//coverage/@line-rate)" coverage.xml)
|
|
35
|
+
total_coverage_percentage=$(echo "$total_coverage * 100" | bc)
|
|
36
|
+
echo "Total Coverage: $total_coverage_percentage%"
|
|
37
|
+
echo "coverage_percentage=$total_coverage_percentage" >> $GITHUB_ENV
|
|
38
|
+
|
|
39
|
+
- name: Display total coverage in Summary
|
|
40
|
+
run: |
|
|
41
|
+
echo "Total Coverage: ${{ env.coverage_percentage }}" >> $GITHUB_STEP_SUMMARY
|
|
@@ -0,0 +1,69 @@
|
|
|
1
|
+
# Workflow to run plugin documentation generation then create a PR with the updated changes
|
|
2
|
+
|
|
3
|
+
name: Plugin Documentation Generator
|
|
4
|
+
|
|
5
|
+
permissions:
|
|
6
|
+
contents: write
|
|
7
|
+
pull-requests: write
|
|
8
|
+
|
|
9
|
+
on:
|
|
10
|
+
workflow_dispatch:
|
|
11
|
+
schedule:
|
|
12
|
+
- cron: '0 0 * * *'
|
|
13
|
+
|
|
14
|
+
jobs:
|
|
15
|
+
generate_docs:
|
|
16
|
+
runs-on: ubuntu-latest
|
|
17
|
+
# To disable this workflow, set DISABLE_AUTO_DOCS to 'true' in repository variables
|
|
18
|
+
if: vars.DISABLE_AUTO_DOCS != 'true'
|
|
19
|
+
env:
|
|
20
|
+
HOME: /tmp/github-actions-home
|
|
21
|
+
|
|
22
|
+
steps:
|
|
23
|
+
- name: Setup HOME directory
|
|
24
|
+
run: |
|
|
25
|
+
mkdir -p /tmp/github-actions-home
|
|
26
|
+
export HOME=/tmp/github-actions-home
|
|
27
|
+
|
|
28
|
+
- name: Checkout repository
|
|
29
|
+
uses: actions/checkout@v4
|
|
30
|
+
with:
|
|
31
|
+
token: ${{ secrets.GITHUB_TOKEN }}
|
|
32
|
+
|
|
33
|
+
- name: Install dependencies
|
|
34
|
+
run: ./dev-setup.sh
|
|
35
|
+
|
|
36
|
+
- name: Run plugin documentation generator
|
|
37
|
+
run: |
|
|
38
|
+
source venv/bin/activate
|
|
39
|
+
python docs/generate_plugin_doc_bundle.py \
|
|
40
|
+
--package nodescraper.plugins.inband \
|
|
41
|
+
--output docs/PLUGIN_DOC.md
|
|
42
|
+
|
|
43
|
+
- name: Clean pre-commit cache
|
|
44
|
+
run: |
|
|
45
|
+
rm -rf /tmp/github-actions-home/.cache/pre-commit
|
|
46
|
+
source venv/bin/activate
|
|
47
|
+
pre-commit clean || true
|
|
48
|
+
|
|
49
|
+
- name: Format documentation with pre-commit
|
|
50
|
+
run: |
|
|
51
|
+
source venv/bin/activate
|
|
52
|
+
pre-commit install-hooks || true
|
|
53
|
+
pre-commit run --files docs/PLUGIN_DOC.md || true
|
|
54
|
+
|
|
55
|
+
- name: Create Pull Request
|
|
56
|
+
uses: peter-evans/create-pull-request@v6
|
|
57
|
+
with:
|
|
58
|
+
token: ${{ secrets.GITHUB_TOKEN }}
|
|
59
|
+
commit-message: "docs: Update plugin documentation [automated]"
|
|
60
|
+
committer: "github-actions[bot] <github-actions[bot]@users.noreply.github.com>"
|
|
61
|
+
author: "github-actions[bot] <github-actions[bot]@users.noreply.github.com>"
|
|
62
|
+
branch: automated-plugin-docs-update
|
|
63
|
+
delete-branch: true
|
|
64
|
+
title: "docs: Update plugin documentation [automated]"
|
|
65
|
+
body: |
|
|
66
|
+
Automated plugin documentation update generated by workflow.
|
|
67
|
+
|
|
68
|
+
This PR was automatically created by the Plugin Documentation Generator workflow.
|
|
69
|
+
labels: documentation,automated
|
|
@@ -0,0 +1,133 @@
|
|
|
1
|
+
# Virtual environment
|
|
2
|
+
venv/
|
|
3
|
+
|
|
4
|
+
# Byte-compiled / optimized / DLL files
|
|
5
|
+
__pycache__/
|
|
6
|
+
*.py[cod]
|
|
7
|
+
*$py.class
|
|
8
|
+
|
|
9
|
+
# C extensions
|
|
10
|
+
*.so
|
|
11
|
+
|
|
12
|
+
# Distribution / packaging
|
|
13
|
+
.Python
|
|
14
|
+
build/
|
|
15
|
+
develop-eggs/
|
|
16
|
+
dist/
|
|
17
|
+
downloads/
|
|
18
|
+
eggs/
|
|
19
|
+
.eggs/
|
|
20
|
+
lib/
|
|
21
|
+
lib64/
|
|
22
|
+
parts/
|
|
23
|
+
sdist/
|
|
24
|
+
var/
|
|
25
|
+
wheels/
|
|
26
|
+
pip-wheel-metadata/
|
|
27
|
+
share/python-wheels/
|
|
28
|
+
*.egg-info/
|
|
29
|
+
.installed.cfg
|
|
30
|
+
*.egg
|
|
31
|
+
MANIFEST
|
|
32
|
+
|
|
33
|
+
# PyInstaller
|
|
34
|
+
# Usually these files are written by a python script from a template
|
|
35
|
+
# before PyInstaller builds the exe, so as to inject date/other infos into it.
|
|
36
|
+
*.manifest
|
|
37
|
+
*.spec
|
|
38
|
+
|
|
39
|
+
# Installer logs
|
|
40
|
+
pip-log.txt
|
|
41
|
+
pip-delete-this-directory.txt
|
|
42
|
+
|
|
43
|
+
# Unit test / coverage reports
|
|
44
|
+
htmlcov/
|
|
45
|
+
.tox/
|
|
46
|
+
.nox/
|
|
47
|
+
.coverage
|
|
48
|
+
.coverage.*
|
|
49
|
+
.cache
|
|
50
|
+
nosetests.xml
|
|
51
|
+
coverage.xml
|
|
52
|
+
*.cover
|
|
53
|
+
*.py,cover
|
|
54
|
+
.hypothesis/
|
|
55
|
+
.pytest_cache/
|
|
56
|
+
|
|
57
|
+
# Translations
|
|
58
|
+
*.mo
|
|
59
|
+
*.pot
|
|
60
|
+
|
|
61
|
+
# Django stuff:
|
|
62
|
+
local_settings.py
|
|
63
|
+
db.sqlite3
|
|
64
|
+
db.sqlite3-journal
|
|
65
|
+
|
|
66
|
+
# Flask stuff:
|
|
67
|
+
instance/
|
|
68
|
+
.webassets-cache
|
|
69
|
+
|
|
70
|
+
# Scrapy stuff:
|
|
71
|
+
.scrapy
|
|
72
|
+
|
|
73
|
+
# Sphinx documentation
|
|
74
|
+
docs/_build/
|
|
75
|
+
|
|
76
|
+
# PyBuilder
|
|
77
|
+
target/
|
|
78
|
+
|
|
79
|
+
# Jupyter Notebook
|
|
80
|
+
.ipynb_checkpoints
|
|
81
|
+
|
|
82
|
+
# IPython
|
|
83
|
+
profile_default/
|
|
84
|
+
ipython_config.py
|
|
85
|
+
|
|
86
|
+
# pyenv
|
|
87
|
+
.python-version
|
|
88
|
+
|
|
89
|
+
# pipenv
|
|
90
|
+
# According to pypa/pipenv#598, it is recommended to include Pipfile.lock in version control.
|
|
91
|
+
# However, in case of collaboration, if having platform-specific dependencies or dependencies
|
|
92
|
+
# having no cross-platform support, pipenv may install dependencies that don't work, or not
|
|
93
|
+
# install all needed dependencies.
|
|
94
|
+
#Pipfile.lock
|
|
95
|
+
|
|
96
|
+
# PEP 582; used by e.g. github.com/David-OConnor/pyflow
|
|
97
|
+
__pypackages__/
|
|
98
|
+
|
|
99
|
+
# Celery stuff
|
|
100
|
+
celerybeat-schedule
|
|
101
|
+
celerybeat.pid
|
|
102
|
+
|
|
103
|
+
# SageMath parsed files
|
|
104
|
+
*.sage.py
|
|
105
|
+
|
|
106
|
+
# Environments
|
|
107
|
+
.env
|
|
108
|
+
.venv
|
|
109
|
+
env/
|
|
110
|
+
venv/
|
|
111
|
+
ENV/
|
|
112
|
+
env.bak/
|
|
113
|
+
venv.bak/
|
|
114
|
+
|
|
115
|
+
# Spyder project settings
|
|
116
|
+
.spyderproject
|
|
117
|
+
.spyproject
|
|
118
|
+
|
|
119
|
+
# Rope project settings
|
|
120
|
+
.ropeproject
|
|
121
|
+
|
|
122
|
+
# mkdocs documentation
|
|
123
|
+
/site
|
|
124
|
+
|
|
125
|
+
# mypy
|
|
126
|
+
.mypy_cache/
|
|
127
|
+
.dmypy.json
|
|
128
|
+
dmypy.json
|
|
129
|
+
|
|
130
|
+
# Pyre type checker
|
|
131
|
+
.pyre/
|
|
132
|
+
|
|
133
|
+
scraper_logs*/*
|
|
@@ -0,0 +1,122 @@
|
|
|
1
|
+
[mypy]
|
|
2
|
+
# Global mypy configuration
|
|
3
|
+
|
|
4
|
+
[mypy-nodescraper.base.regexanalyzer]
|
|
5
|
+
ignore_errors = True
|
|
6
|
+
|
|
7
|
+
[mypy-nodescraper.cli.cli]
|
|
8
|
+
ignore_errors = True
|
|
9
|
+
|
|
10
|
+
[mypy-nodescraper.cli.dynamicparserbuilder]
|
|
11
|
+
ignore_errors = True
|
|
12
|
+
|
|
13
|
+
[mypy-nodescraper.cli.helper]
|
|
14
|
+
ignore_errors = True
|
|
15
|
+
|
|
16
|
+
[mypy-nodescraper.cli.inputargtypes]
|
|
17
|
+
ignore_errors = True
|
|
18
|
+
|
|
19
|
+
[mypy-nodescraper.configbuilder]
|
|
20
|
+
ignore_errors = True
|
|
21
|
+
|
|
22
|
+
[mypy-nodescraper.configregistry]
|
|
23
|
+
ignore_errors = True
|
|
24
|
+
|
|
25
|
+
[mypy-nodescraper.enums.eventpriority]
|
|
26
|
+
ignore_errors = True
|
|
27
|
+
|
|
28
|
+
[mypy-nodescraper.enums.systeminteraction]
|
|
29
|
+
ignore_errors = True
|
|
30
|
+
|
|
31
|
+
[mypy-nodescraper.interfaces.connectionmanager]
|
|
32
|
+
ignore_errors = True
|
|
33
|
+
|
|
34
|
+
[mypy-nodescraper.interfaces.datacollectortask]
|
|
35
|
+
ignore_errors = True
|
|
36
|
+
|
|
37
|
+
[mypy-nodescraper.interfaces.dataplugin]
|
|
38
|
+
ignore_errors = True
|
|
39
|
+
|
|
40
|
+
[mypy-nodescraper.interfaces.task]
|
|
41
|
+
ignore_errors = True
|
|
42
|
+
|
|
43
|
+
[mypy-nodescraper.models.analyzerargs]
|
|
44
|
+
ignore_errors = True
|
|
45
|
+
|
|
46
|
+
[mypy-nodescraper.models.datamodel]
|
|
47
|
+
ignore_errors = True
|
|
48
|
+
|
|
49
|
+
[mypy-nodescraper.pluginexecutor]
|
|
50
|
+
ignore_errors = True
|
|
51
|
+
|
|
52
|
+
[mypy-nodescraper.plugins.inband.bios.analyzer_args]
|
|
53
|
+
ignore_errors = True
|
|
54
|
+
|
|
55
|
+
[mypy-nodescraper.plugins.inband.cmdline.cmdline_analyzer]
|
|
56
|
+
ignore_errors = True
|
|
57
|
+
|
|
58
|
+
[mypy-nodescraper.plugins.inband.dimm.dimm_collector]
|
|
59
|
+
ignore_errors = True
|
|
60
|
+
|
|
61
|
+
[mypy-nodescraper.plugins.inband.dkms.analyzer_args]
|
|
62
|
+
ignore_errors = True
|
|
63
|
+
|
|
64
|
+
[mypy-nodescraper.plugins.inband.dmesg.dmesg_analyzer]
|
|
65
|
+
ignore_errors = True
|
|
66
|
+
|
|
67
|
+
[mypy-nodescraper.plugins.inband.dmesg.dmesgdata]
|
|
68
|
+
ignore_errors = True
|
|
69
|
+
|
|
70
|
+
[mypy-nodescraper.plugins.inband.memory.memory_collector]
|
|
71
|
+
ignore_errors = True
|
|
72
|
+
|
|
73
|
+
[mypy-nodescraper.plugins.inband.os.os_collector]
|
|
74
|
+
ignore_errors = True
|
|
75
|
+
|
|
76
|
+
[mypy-nodescraper.plugins.inband.package.analyzer_args]
|
|
77
|
+
ignore_errors = True
|
|
78
|
+
|
|
79
|
+
[mypy-nodescraper.plugins.inband.process.analyzer_args]
|
|
80
|
+
ignore_errors = True
|
|
81
|
+
|
|
82
|
+
[mypy-nodescraper.plugins.inband.process.process_collector]
|
|
83
|
+
ignore_errors = True
|
|
84
|
+
|
|
85
|
+
[mypy-nodescraper.plugins.inband.rocm.rocm_plugin]
|
|
86
|
+
ignore_errors = True
|
|
87
|
+
|
|
88
|
+
[mypy-nodescraper.taskresulthooks.filesystemloghook]
|
|
89
|
+
ignore_errors = True
|
|
90
|
+
|
|
91
|
+
[mypy-nodescraper.typeutils]
|
|
92
|
+
ignore_errors = True
|
|
93
|
+
|
|
94
|
+
[mypy-nodescraper.utils]
|
|
95
|
+
ignore_errors = True
|
|
96
|
+
|
|
97
|
+
[mypy-test.unit.conftest]
|
|
98
|
+
ignore_errors = True
|
|
99
|
+
|
|
100
|
+
[mypy-test.unit.framework.common.shared_utils]
|
|
101
|
+
ignore_errors = True
|
|
102
|
+
|
|
103
|
+
[mypy-test.unit.framework.test_cli_helper]
|
|
104
|
+
ignore_errors = True
|
|
105
|
+
|
|
106
|
+
[mypy-test.unit.framework.test_dataplugin]
|
|
107
|
+
ignore_errors = True
|
|
108
|
+
|
|
109
|
+
[mypy-test.unit.framework.test_plugin_executor]
|
|
110
|
+
ignore_errors = True
|
|
111
|
+
|
|
112
|
+
[mypy-nodescraper.models.collectorargs]
|
|
113
|
+
ignore_errors = True
|
|
114
|
+
|
|
115
|
+
[mypy-nodescraper.plugins.inband.kernel_module.*]
|
|
116
|
+
ignore_errors = True
|
|
117
|
+
|
|
118
|
+
[mypy-nodescraper.plugins.inband.nvme.nvme_collector]
|
|
119
|
+
ignore_errors = True
|
|
120
|
+
|
|
121
|
+
[mypy-test.unit.framework.test_cli]
|
|
122
|
+
ignore_errors = True
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
repos:
|
|
2
|
+
- repo: https://github.com/pre-commit/pre-commit-hooks
|
|
3
|
+
rev: v5.0.0
|
|
4
|
+
hooks:
|
|
5
|
+
- id: check-yaml
|
|
6
|
+
- id: end-of-file-fixer
|
|
7
|
+
- id: trailing-whitespace
|
|
8
|
+
- repo: https://github.com/astral-sh/ruff-pre-commit
|
|
9
|
+
rev: v0.11.6
|
|
10
|
+
hooks:
|
|
11
|
+
- id: ruff
|
|
12
|
+
args:
|
|
13
|
+
- --fix
|
|
14
|
+
- repo: https://github.com/psf/black
|
|
15
|
+
rev: 25.1.0
|
|
16
|
+
hooks:
|
|
17
|
+
- id: black
|
|
18
|
+
- repo: https://github.com/pre-commit/mirrors-mypy
|
|
19
|
+
rev: v1.15.0
|
|
20
|
+
hooks:
|
|
21
|
+
- id: mypy
|
|
22
|
+
args: [--install-types, --non-interactive, --explicit-package-bases, --allow-redefinition]
|
|
23
|
+
language: system
|
|
@@ -0,0 +1,92 @@
|
|
|
1
|
+
# Contribute to Node Scraper
|
|
2
|
+
|
|
3
|
+
AMD values and encourages contributions to our code and documentation. If you want to contribute
|
|
4
|
+
to our repository, first review the following guidance.
|
|
5
|
+
|
|
6
|
+
## Development workflow
|
|
7
|
+
|
|
8
|
+
Node Scraper uses GitHub to host code, collaborate, and manage version control. We use pull requests (PRs)
|
|
9
|
+
for all changes within our repository. We use
|
|
10
|
+
[GitHub issues](https://github.com/amd/node-scraper/issues) to track known issues, such as
|
|
11
|
+
bugs.
|
|
12
|
+
|
|
13
|
+
### Issue tracking
|
|
14
|
+
|
|
15
|
+
Before filing a new issue, search the
|
|
16
|
+
[existing issues](https://github.com/amd/node-scraper/issues) to make sure your issue isn't
|
|
17
|
+
already listed.
|
|
18
|
+
|
|
19
|
+
General issue guidelines:
|
|
20
|
+
|
|
21
|
+
* Use your best judgement for issue creation. If your issue is already listed, upvote the issue and
|
|
22
|
+
comment or post to provide additional details, such as how you reproduced this issue.
|
|
23
|
+
* If you're not sure if your issue is the same, err on the side of caution and file your issue.
|
|
24
|
+
You can add a comment to include the issue number (and link) for the similar issue. If we evaluate
|
|
25
|
+
your issue as being the same as the existing issue, we'll close the duplicate.
|
|
26
|
+
* If your issue doesn't exist, use the issue template to file a new issue.
|
|
27
|
+
* When filing an issue, be sure to provide as much information as possible, including script output so
|
|
28
|
+
we can collect information about your configuration. This helps reduce the time required to
|
|
29
|
+
reproduce your issue.
|
|
30
|
+
* Check your issue regularly, as we may require additional information to successfully reproduce the
|
|
31
|
+
issue.
|
|
32
|
+
|
|
33
|
+
### Pull requests
|
|
34
|
+
|
|
35
|
+
When you create a pull request, you should target the default branch. Our repository uses the
|
|
36
|
+
**development** branch as the default integration branch.
|
|
37
|
+
|
|
38
|
+
When creating a PR, use the following process.
|
|
39
|
+
|
|
40
|
+
* Identify the issue you want to fix
|
|
41
|
+
* Target the default branch (usually the **development** branch) for integration
|
|
42
|
+
* Ensure your code builds successfully
|
|
43
|
+
* Do not break existing test cases
|
|
44
|
+
* New functionality is only merged with new unit tests
|
|
45
|
+
* Tests must have good code coverage
|
|
46
|
+
* Submit your PR and work with the reviewer or maintainer to get your PR approved
|
|
47
|
+
* Once approved, the PR is brought onto internal CI systems and may be merged into the component
|
|
48
|
+
during our release cycle, as coordinated by the maintainer
|
|
49
|
+
* We'll inform you once your change is committed
|
|
50
|
+
|
|
51
|
+
> [!IMPORTANT]
|
|
52
|
+
> By creating a PR, you agree to allow your contribution to be licensed under the
|
|
53
|
+
> terms of the LICENSE.txt file.
|
|
54
|
+
|
|
55
|
+
### Pre-commit hooks
|
|
56
|
+
|
|
57
|
+
This repository uses [pre-commit](https://pre-commit.com/) to automatically format code. When you commit changes to plugin files, the hooks will:
|
|
58
|
+
|
|
59
|
+
1. Run code formatters (ruff, black)
|
|
60
|
+
2. Run type checking (mypy)
|
|
61
|
+
|
|
62
|
+
#### Setup
|
|
63
|
+
|
|
64
|
+
Install pre-commit hooks after cloning the repository:
|
|
65
|
+
|
|
66
|
+
```bash
|
|
67
|
+
# Activate your virtual environment
|
|
68
|
+
source venv/bin/activate
|
|
69
|
+
|
|
70
|
+
# Install pre-commit hooks
|
|
71
|
+
pre-commit install
|
|
72
|
+
```
|
|
73
|
+
|
|
74
|
+
#### Usage
|
|
75
|
+
|
|
76
|
+
The hooks run automatically when you commit.
|
|
77
|
+
|
|
78
|
+
```bash
|
|
79
|
+
# First commit attempt - hooks run and may modify files
|
|
80
|
+
git commit -m "Add new plugin feature"
|
|
81
|
+
|
|
82
|
+
# If hooks modified files, stage them and commit again
|
|
83
|
+
git add .
|
|
84
|
+
git commit -m "Add new plugin feature"
|
|
85
|
+
```
|
|
86
|
+
|
|
87
|
+
You can also run hooks manually:
|
|
88
|
+
|
|
89
|
+
```bash
|
|
90
|
+
# Run all hooks on all files
|
|
91
|
+
pre-commit run --all-files
|
|
92
|
+
```
|