amd-node-scraper 1.1.0__tar.gz → 1.1.2__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.
Files changed (405) hide show
  1. {amd_node_scraper-1.1.0 → amd_node_scraper-1.1.2}/PKG-INFO +143 -6
  2. {amd_node_scraper-1.1.0 → amd_node_scraper-1.1.2}/README.md +141 -4
  3. {amd_node_scraper-1.1.0 → amd_node_scraper-1.1.2}/amd_node_scraper.egg-info/PKG-INFO +143 -6
  4. {amd_node_scraper-1.1.0 → amd_node_scraper-1.1.2}/amd_node_scraper.egg-info/SOURCES.txt +58 -1
  5. {amd_node_scraper-1.1.0 → amd_node_scraper-1.1.2}/amd_node_scraper.egg-info/requires.txt +1 -1
  6. {amd_node_scraper-1.1.0 → amd_node_scraper-1.1.2}/docs/PLUGIN_DOC.md +296 -77
  7. {amd_node_scraper-1.1.0 → amd_node_scraper-1.1.2}/docs/generate_plugin_doc_bundle.py +38 -1
  8. {amd_node_scraper-1.1.0 → amd_node_scraper-1.1.2}/nodescraper/__init__.py +1 -1
  9. {amd_node_scraper-1.1.0 → amd_node_scraper-1.1.2}/nodescraper/base/__init__.py +4 -0
  10. amd_node_scraper-1.1.2/nodescraper/base/inbanddataplugin.py +39 -0
  11. amd_node_scraper-1.1.2/nodescraper/base/oobanddataplugin.py +48 -0
  12. amd_node_scraper-1.1.2/nodescraper/base/redfishcollectortask.py +79 -0
  13. {amd_node_scraper-1.1.0 → amd_node_scraper-1.1.2}/nodescraper/cli/cli.py +80 -15
  14. {amd_node_scraper-1.1.0 → amd_node_scraper-1.1.2}/nodescraper/cli/helper.py +17 -6
  15. {amd_node_scraper-1.1.0 → amd_node_scraper-1.1.2}/nodescraper/connection/inband/inbandremote.py +2 -2
  16. amd_node_scraper-1.1.2/nodescraper/connection/redfish/__init__.py +48 -0
  17. amd_node_scraper-1.1.2/nodescraper/connection/redfish/redfish_connection.py +206 -0
  18. amd_node_scraper-1.1.2/nodescraper/connection/redfish/redfish_manager.py +142 -0
  19. amd_node_scraper-1.1.2/nodescraper/connection/redfish/redfish_oem_diag.py +381 -0
  20. amd_node_scraper-1.1.2/nodescraper/connection/redfish/redfish_params.py +53 -0
  21. amd_node_scraper-1.1.2/nodescraper/connection/redfish/redfish_path.py +61 -0
  22. {amd_node_scraper-1.1.0 → amd_node_scraper-1.1.2}/nodescraper/enums/__init__.py +2 -0
  23. {amd_node_scraper-1.1.0 → amd_node_scraper-1.1.2}/nodescraper/enums/eventcategory.py +3 -0
  24. amd_node_scraper-1.1.2/nodescraper/enums/taskstate.py +44 -0
  25. {amd_node_scraper-1.1.0 → amd_node_scraper-1.1.2}/nodescraper/interfaces/dataplugin.py +137 -1
  26. {amd_node_scraper-1.1.0 → amd_node_scraper-1.1.2}/nodescraper/models/taskresult.py +51 -4
  27. {amd_node_scraper-1.1.0 → amd_node_scraper-1.1.2}/nodescraper/pluginexecutor.py +27 -1
  28. {amd_node_scraper-1.1.0 → amd_node_scraper-1.1.2}/nodescraper/plugins/inband/amdsmi/amdsmi_analyzer.py +18 -25
  29. {amd_node_scraper-1.1.0 → amd_node_scraper-1.1.2}/nodescraper/plugins/inband/amdsmi/amdsmi_collector.py +138 -4
  30. {amd_node_scraper-1.1.0 → amd_node_scraper-1.1.2}/nodescraper/plugins/inband/amdsmi/amdsmidata.py +12 -12
  31. {amd_node_scraper-1.1.0 → amd_node_scraper-1.1.2}/nodescraper/plugins/inband/fabrics/fabrics_collector.py +65 -173
  32. {amd_node_scraper-1.1.0 → amd_node_scraper-1.1.2}/nodescraper/plugins/inband/fabrics/fabricsdata.py +8 -29
  33. amd_node_scraper-1.1.2/nodescraper/plugins/inband/network/network_collector.py +730 -0
  34. amd_node_scraper-1.1.2/nodescraper/plugins/inband/network/networkdata.py +120 -0
  35. amd_node_scraper-1.1.2/nodescraper/plugins/inband/nic/__init__.py +28 -0
  36. amd_node_scraper-1.1.2/nodescraper/plugins/inband/nic/analyzer_args.py +75 -0
  37. amd_node_scraper-1.1.2/nodescraper/plugins/inband/nic/collector_args.py +36 -0
  38. amd_node_scraper-1.1.2/nodescraper/plugins/inband/nic/nic_analyzer.py +322 -0
  39. amd_node_scraper-1.1.2/nodescraper/plugins/inband/nic/nic_collector.py +1312 -0
  40. amd_node_scraper-1.1.2/nodescraper/plugins/inband/nic/nic_data.py +411 -0
  41. amd_node_scraper-1.1.2/nodescraper/plugins/inband/nic/nic_plugin.py +46 -0
  42. amd_node_scraper-1.1.2/nodescraper/plugins/inband/rdma/__init__.py +28 -0
  43. amd_node_scraper-1.1.2/nodescraper/plugins/inband/rdma/rdma_analyzer.py +186 -0
  44. amd_node_scraper-1.1.2/nodescraper/plugins/inband/rdma/rdma_collector.py +315 -0
  45. amd_node_scraper-1.1.2/nodescraper/plugins/inband/rdma/rdma_plugin.py +38 -0
  46. amd_node_scraper-1.1.2/nodescraper/plugins/inband/rdma/rdmadata.py +104 -0
  47. amd_node_scraper-1.1.2/nodescraper/plugins/inband/rocm/collector_args.py +32 -0
  48. {amd_node_scraper-1.1.0 → amd_node_scraper-1.1.2}/nodescraper/plugins/inband/rocm/rocm_collector.py +30 -21
  49. {amd_node_scraper-1.1.0 → amd_node_scraper-1.1.2}/nodescraper/plugins/inband/rocm/rocm_plugin.py +4 -1
  50. {amd_node_scraper-1.1.0 → amd_node_scraper-1.1.2}/nodescraper/plugins/inband/sys_settings/collector_args.py +1 -1
  51. {amd_node_scraper-1.1.0 → amd_node_scraper-1.1.2}/nodescraper/plugins/inband/sys_settings/sys_settings_collector.py +26 -12
  52. amd_node_scraper-1.1.2/nodescraper/plugins/ooband/__init__.py +26 -0
  53. amd_node_scraper-1.1.2/nodescraper/plugins/ooband/redfish_endpoint/__init__.py +40 -0
  54. amd_node_scraper-1.1.2/nodescraper/plugins/ooband/redfish_endpoint/analyzer_args.py +67 -0
  55. amd_node_scraper-1.1.2/nodescraper/plugins/ooband/redfish_endpoint/collector_args.py +40 -0
  56. amd_node_scraper-1.1.2/nodescraper/plugins/ooband/redfish_endpoint/endpoint_analyzer.py +145 -0
  57. amd_node_scraper-1.1.2/nodescraper/plugins/ooband/redfish_endpoint/endpoint_collector.py +86 -0
  58. amd_node_scraper-1.1.2/nodescraper/plugins/ooband/redfish_endpoint/endpoint_data.py +34 -0
  59. amd_node_scraper-1.1.2/nodescraper/plugins/ooband/redfish_endpoint/endpoint_plugin.py +48 -0
  60. amd_node_scraper-1.1.2/nodescraper/plugins/ooband/redfish_oem_diag/__init__.py +22 -0
  61. amd_node_scraper-1.1.2/nodescraper/plugins/ooband/redfish_oem_diag/analyzer_args.py +37 -0
  62. amd_node_scraper-1.1.2/nodescraper/plugins/ooband/redfish_oem_diag/collector_args.py +63 -0
  63. amd_node_scraper-1.1.2/nodescraper/plugins/ooband/redfish_oem_diag/oem_diag_analyzer.py +69 -0
  64. amd_node_scraper-1.1.2/nodescraper/plugins/ooband/redfish_oem_diag/oem_diag_collector.py +109 -0
  65. amd_node_scraper-1.1.2/nodescraper/plugins/ooband/redfish_oem_diag/oem_diag_data.py +44 -0
  66. amd_node_scraper-1.1.2/nodescraper/plugins/ooband/redfish_oem_diag/oem_diag_plugin.py +52 -0
  67. {amd_node_scraper-1.1.0 → amd_node_scraper-1.1.2}/nodescraper/utils.py +34 -1
  68. {amd_node_scraper-1.1.0 → amd_node_scraper-1.1.2}/pyproject.toml +1 -1
  69. amd_node_scraper-1.1.2/test/functional/fixtures/nic_plugin_config_full_analyzer_args.json +37 -0
  70. amd_node_scraper-1.1.2/test/functional/fixtures/niccli_plugin_config.json +19 -0
  71. amd_node_scraper-1.1.2/test/functional/fixtures/rdma_plugin_config.json +9 -0
  72. amd_node_scraper-1.1.2/test/functional/fixtures/redfish_connection_config.json +9 -0
  73. amd_node_scraper-1.1.2/test/functional/fixtures/redfish_endpoint_plugin_config.json +12 -0
  74. {amd_node_scraper-1.1.0 → amd_node_scraper-1.1.2}/test/functional/test_cli_help.py +0 -14
  75. amd_node_scraper-1.1.2/test/functional/test_nic_plugin.py +137 -0
  76. {amd_node_scraper-1.1.0 → amd_node_scraper-1.1.2}/test/functional/test_plugin_configs.py +3 -0
  77. amd_node_scraper-1.1.2/test/functional/test_rdma_plugin.py +106 -0
  78. amd_node_scraper-1.1.2/test/functional/test_redfish_endpoint_plugin.py +114 -0
  79. {amd_node_scraper-1.1.0 → amd_node_scraper-1.1.2}/test/functional/test_reference_config_workflow.py +18 -3
  80. {amd_node_scraper-1.1.0 → amd_node_scraper-1.1.2}/test/functional/test_run_plugins.py +55 -0
  81. {amd_node_scraper-1.1.0 → amd_node_scraper-1.1.2}/test/unit/conftest.py +5 -0
  82. amd_node_scraper-1.1.2/test/unit/connection/redfish/test_redfish_oem_diag.py +186 -0
  83. {amd_node_scraper-1.1.0 → amd_node_scraper-1.1.2}/test/unit/framework/test_plugin_executor.py +2 -1
  84. amd_node_scraper-1.1.2/test/unit/plugin/fixtures/rdma_link_example_data.json +38 -0
  85. amd_node_scraper-1.1.2/test/unit/plugin/fixtures/rdma_statistic_example_data.json +826 -0
  86. {amd_node_scraper-1.1.0 → amd_node_scraper-1.1.2}/test/unit/plugin/test_amdsmi_analyzer.py +248 -44
  87. {amd_node_scraper-1.1.0 → amd_node_scraper-1.1.2}/test/unit/plugin/test_amdsmi_collector.py +82 -1
  88. {amd_node_scraper-1.1.0 → amd_node_scraper-1.1.2}/test/unit/plugin/test_fabrics_collector.py +54 -92
  89. amd_node_scraper-1.1.2/test/unit/plugin/test_network_collector.py +650 -0
  90. amd_node_scraper-1.1.2/test/unit/plugin/test_niccli_collector.py +270 -0
  91. amd_node_scraper-1.1.2/test/unit/plugin/test_rdma_analyzer.py +279 -0
  92. amd_node_scraper-1.1.2/test/unit/plugin/test_rdma_collector.py +156 -0
  93. amd_node_scraper-1.1.2/test/unit/plugin/test_redfish_endpoint_analyzer.py +209 -0
  94. amd_node_scraper-1.1.2/test/unit/plugin/test_redfish_endpoint_collector.py +145 -0
  95. amd_node_scraper-1.1.2/test/unit/plugin/test_redfish_endpoint_plugin.py +66 -0
  96. amd_node_scraper-1.1.2/test/unit/plugin/test_redfish_oem_diag_analyzer.py +114 -0
  97. amd_node_scraper-1.1.2/test/unit/plugin/test_redfish_oem_diag_collector.py +126 -0
  98. {amd_node_scraper-1.1.0 → amd_node_scraper-1.1.2}/test/unit/plugin/test_rocm_collector.py +1 -1
  99. {amd_node_scraper-1.1.0 → amd_node_scraper-1.1.2}/test/unit/plugin/test_sys_settings_collector.py +50 -0
  100. amd_node_scraper-1.1.2/test/unit/test_version.py +73 -0
  101. amd_node_scraper-1.1.0/nodescraper/base/inbanddataplugin.py +0 -174
  102. amd_node_scraper-1.1.0/nodescraper/plugins/inband/network/network_collector.py +0 -1899
  103. amd_node_scraper-1.1.0/nodescraper/plugins/inband/network/networkdata.py +0 -320
  104. amd_node_scraper-1.1.0/test/unit/plugin/test_network_collector.py +0 -1943
  105. {amd_node_scraper-1.1.0 → amd_node_scraper-1.1.2}/.github/CODEOWNERS +0 -0
  106. {amd_node_scraper-1.1.0 → amd_node_scraper-1.1.2}/.github/workflows/code_quality_checks.yml +0 -0
  107. {amd_node_scraper-1.1.0 → amd_node_scraper-1.1.2}/.github/workflows/functional-test.yml +0 -0
  108. {amd_node_scraper-1.1.0 → amd_node_scraper-1.1.2}/.github/workflows/release-trusted-publisher.yml +0 -0
  109. {amd_node_scraper-1.1.0 → amd_node_scraper-1.1.2}/.github/workflows/unit-test.yml +0 -0
  110. {amd_node_scraper-1.1.0 → amd_node_scraper-1.1.2}/.github/workflows/update-plugin-docs.yml +0 -0
  111. {amd_node_scraper-1.1.0 → amd_node_scraper-1.1.2}/.gitignore +0 -0
  112. {amd_node_scraper-1.1.0 → amd_node_scraper-1.1.2}/.mypy.ini +0 -0
  113. {amd_node_scraper-1.1.0 → amd_node_scraper-1.1.2}/.pre-commit-config.yaml +0 -0
  114. {amd_node_scraper-1.1.0 → amd_node_scraper-1.1.2}/CONTRIBUTING.md +0 -0
  115. {amd_node_scraper-1.1.0 → amd_node_scraper-1.1.2}/EXTENDING.md +0 -0
  116. {amd_node_scraper-1.1.0 → amd_node_scraper-1.1.2}/LICENSE +0 -0
  117. {amd_node_scraper-1.1.0 → amd_node_scraper-1.1.2}/amd_node_scraper.egg-info/dependency_links.txt +0 -0
  118. {amd_node_scraper-1.1.0 → amd_node_scraper-1.1.2}/amd_node_scraper.egg-info/entry_points.txt +0 -0
  119. {amd_node_scraper-1.1.0 → amd_node_scraper-1.1.2}/amd_node_scraper.egg-info/top_level.txt +0 -0
  120. {amd_node_scraper-1.1.0 → amd_node_scraper-1.1.2}/dev-setup.sh +0 -0
  121. {amd_node_scraper-1.1.0 → amd_node_scraper-1.1.2}/docs/node-scraper-external/README.md +0 -0
  122. {amd_node_scraper-1.1.0 → amd_node_scraper-1.1.2}/docs/node-scraper-external/ext_nodescraper_plugins/sample/__init__.py +0 -0
  123. {amd_node_scraper-1.1.0 → amd_node_scraper-1.1.2}/docs/node-scraper-external/ext_nodescraper_plugins/sample/sample_analyzer.py +0 -0
  124. {amd_node_scraper-1.1.0 → amd_node_scraper-1.1.2}/docs/node-scraper-external/ext_nodescraper_plugins/sample/sample_collector.py +0 -0
  125. {amd_node_scraper-1.1.0 → amd_node_scraper-1.1.2}/docs/node-scraper-external/ext_nodescraper_plugins/sample/sample_data.py +0 -0
  126. {amd_node_scraper-1.1.0 → amd_node_scraper-1.1.2}/docs/node-scraper-external/ext_nodescraper_plugins/sample/sample_plugin.py +0 -0
  127. {amd_node_scraper-1.1.0 → amd_node_scraper-1.1.2}/docs/node-scraper-external/pyproject.toml +0 -0
  128. {amd_node_scraper-1.1.0 → amd_node_scraper-1.1.2}/nodescraper/base/inbandcollectortask.py +0 -0
  129. {amd_node_scraper-1.1.0 → amd_node_scraper-1.1.2}/nodescraper/base/regexanalyzer.py +0 -0
  130. {amd_node_scraper-1.1.0 → amd_node_scraper-1.1.2}/nodescraper/cli/__init__.py +0 -0
  131. {amd_node_scraper-1.1.0 → amd_node_scraper-1.1.2}/nodescraper/cli/compare_runs.py +0 -0
  132. {amd_node_scraper-1.1.0 → amd_node_scraper-1.1.2}/nodescraper/cli/constants.py +0 -0
  133. {amd_node_scraper-1.1.0 → amd_node_scraper-1.1.2}/nodescraper/cli/dynamicparserbuilder.py +0 -0
  134. {amd_node_scraper-1.1.0 → amd_node_scraper-1.1.2}/nodescraper/cli/inputargtypes.py +0 -0
  135. {amd_node_scraper-1.1.0 → amd_node_scraper-1.1.2}/nodescraper/configbuilder.py +0 -0
  136. {amd_node_scraper-1.1.0 → amd_node_scraper-1.1.2}/nodescraper/configregistry.py +0 -0
  137. {amd_node_scraper-1.1.0 → amd_node_scraper-1.1.2}/nodescraper/configs/node_status.json +0 -0
  138. {amd_node_scraper-1.1.0 → amd_node_scraper-1.1.2}/nodescraper/connection/__init__.py +0 -0
  139. {amd_node_scraper-1.1.0 → amd_node_scraper-1.1.2}/nodescraper/connection/inband/__init__.py +0 -0
  140. {amd_node_scraper-1.1.0 → amd_node_scraper-1.1.2}/nodescraper/connection/inband/inband.py +0 -0
  141. {amd_node_scraper-1.1.0 → amd_node_scraper-1.1.2}/nodescraper/connection/inband/inbandlocal.py +0 -0
  142. {amd_node_scraper-1.1.0 → amd_node_scraper-1.1.2}/nodescraper/connection/inband/inbandmanager.py +0 -0
  143. {amd_node_scraper-1.1.0 → amd_node_scraper-1.1.2}/nodescraper/connection/inband/sshparams.py +0 -0
  144. {amd_node_scraper-1.1.0 → amd_node_scraper-1.1.2}/nodescraper/constants.py +0 -0
  145. {amd_node_scraper-1.1.0 → amd_node_scraper-1.1.2}/nodescraper/enums/eventpriority.py +0 -0
  146. {amd_node_scraper-1.1.0 → amd_node_scraper-1.1.2}/nodescraper/enums/executionstatus.py +0 -0
  147. {amd_node_scraper-1.1.0 → amd_node_scraper-1.1.2}/nodescraper/enums/osfamily.py +0 -0
  148. {amd_node_scraper-1.1.0 → amd_node_scraper-1.1.2}/nodescraper/enums/systeminteraction.py +0 -0
  149. {amd_node_scraper-1.1.0 → amd_node_scraper-1.1.2}/nodescraper/enums/systemlocation.py +0 -0
  150. {amd_node_scraper-1.1.0 → amd_node_scraper-1.1.2}/nodescraper/generictypes.py +0 -0
  151. {amd_node_scraper-1.1.0 → amd_node_scraper-1.1.2}/nodescraper/helpers/__init__.py +0 -0
  152. {amd_node_scraper-1.1.0 → amd_node_scraper-1.1.2}/nodescraper/interfaces/__init__.py +0 -0
  153. {amd_node_scraper-1.1.0 → amd_node_scraper-1.1.2}/nodescraper/interfaces/connectionmanager.py +0 -0
  154. {amd_node_scraper-1.1.0 → amd_node_scraper-1.1.2}/nodescraper/interfaces/dataanalyzertask.py +0 -0
  155. {amd_node_scraper-1.1.0 → amd_node_scraper-1.1.2}/nodescraper/interfaces/datacollectortask.py +0 -0
  156. {amd_node_scraper-1.1.0 → amd_node_scraper-1.1.2}/nodescraper/interfaces/plugin.py +0 -0
  157. {amd_node_scraper-1.1.0 → amd_node_scraper-1.1.2}/nodescraper/interfaces/resultcollator.py +0 -0
  158. {amd_node_scraper-1.1.0 → amd_node_scraper-1.1.2}/nodescraper/interfaces/task.py +0 -0
  159. {amd_node_scraper-1.1.0 → amd_node_scraper-1.1.2}/nodescraper/interfaces/taskresulthook.py +0 -0
  160. {amd_node_scraper-1.1.0 → amd_node_scraper-1.1.2}/nodescraper/models/__init__.py +0 -0
  161. {amd_node_scraper-1.1.0 → amd_node_scraper-1.1.2}/nodescraper/models/analyzerargs.py +0 -0
  162. {amd_node_scraper-1.1.0 → amd_node_scraper-1.1.2}/nodescraper/models/collectorargs.py +0 -0
  163. {amd_node_scraper-1.1.0 → amd_node_scraper-1.1.2}/nodescraper/models/connectionconfig.py +0 -0
  164. {amd_node_scraper-1.1.0 → amd_node_scraper-1.1.2}/nodescraper/models/datamodel.py +0 -0
  165. {amd_node_scraper-1.1.0 → amd_node_scraper-1.1.2}/nodescraper/models/datapluginresult.py +0 -0
  166. {amd_node_scraper-1.1.0 → amd_node_scraper-1.1.2}/nodescraper/models/event.py +0 -0
  167. {amd_node_scraper-1.1.0 → amd_node_scraper-1.1.2}/nodescraper/models/pluginconfig.py +0 -0
  168. {amd_node_scraper-1.1.0 → amd_node_scraper-1.1.2}/nodescraper/models/pluginresult.py +0 -0
  169. {amd_node_scraper-1.1.0 → amd_node_scraper-1.1.2}/nodescraper/models/systeminfo.py +0 -0
  170. {amd_node_scraper-1.1.0 → amd_node_scraper-1.1.2}/nodescraper/models/timerangeargs.py +0 -0
  171. {amd_node_scraper-1.1.0 → amd_node_scraper-1.1.2}/nodescraper/pluginregistry.py +0 -0
  172. {amd_node_scraper-1.1.0 → amd_node_scraper-1.1.2}/nodescraper/plugins/__init__.py +0 -0
  173. {amd_node_scraper-1.1.0 → amd_node_scraper-1.1.2}/nodescraper/plugins/inband/__init__.py +0 -0
  174. {amd_node_scraper-1.1.0 → amd_node_scraper-1.1.2}/nodescraper/plugins/inband/amdsmi/__init__.py +0 -0
  175. {amd_node_scraper-1.1.0 → amd_node_scraper-1.1.2}/nodescraper/plugins/inband/amdsmi/amdsmi_plugin.py +0 -0
  176. {amd_node_scraper-1.1.0 → amd_node_scraper-1.1.2}/nodescraper/plugins/inband/amdsmi/analyzer_args.py +0 -0
  177. {amd_node_scraper-1.1.0 → amd_node_scraper-1.1.2}/nodescraper/plugins/inband/amdsmi/collector_args.py +0 -0
  178. {amd_node_scraper-1.1.0 → amd_node_scraper-1.1.2}/nodescraper/plugins/inband/amdsmi/cper.py +0 -0
  179. {amd_node_scraper-1.1.0 → amd_node_scraper-1.1.2}/nodescraper/plugins/inband/bios/__init__.py +0 -0
  180. {amd_node_scraper-1.1.0 → amd_node_scraper-1.1.2}/nodescraper/plugins/inband/bios/analyzer_args.py +0 -0
  181. {amd_node_scraper-1.1.0 → amd_node_scraper-1.1.2}/nodescraper/plugins/inband/bios/bios_analyzer.py +0 -0
  182. {amd_node_scraper-1.1.0 → amd_node_scraper-1.1.2}/nodescraper/plugins/inband/bios/bios_collector.py +0 -0
  183. {amd_node_scraper-1.1.0 → amd_node_scraper-1.1.2}/nodescraper/plugins/inband/bios/bios_plugin.py +0 -0
  184. {amd_node_scraper-1.1.0 → amd_node_scraper-1.1.2}/nodescraper/plugins/inband/bios/biosdata.py +0 -0
  185. {amd_node_scraper-1.1.0 → amd_node_scraper-1.1.2}/nodescraper/plugins/inband/cmdline/__init__.py +0 -0
  186. {amd_node_scraper-1.1.0 → amd_node_scraper-1.1.2}/nodescraper/plugins/inband/cmdline/analyzer_args.py +0 -0
  187. {amd_node_scraper-1.1.0 → amd_node_scraper-1.1.2}/nodescraper/plugins/inband/cmdline/cmdline_analyzer.py +0 -0
  188. {amd_node_scraper-1.1.0 → amd_node_scraper-1.1.2}/nodescraper/plugins/inband/cmdline/cmdline_collector.py +0 -0
  189. {amd_node_scraper-1.1.0 → amd_node_scraper-1.1.2}/nodescraper/plugins/inband/cmdline/cmdline_plugin.py +0 -0
  190. {amd_node_scraper-1.1.0 → amd_node_scraper-1.1.2}/nodescraper/plugins/inband/cmdline/cmdlineconfig.py +0 -0
  191. {amd_node_scraper-1.1.0 → amd_node_scraper-1.1.2}/nodescraper/plugins/inband/cmdline/cmdlinedata.py +0 -0
  192. {amd_node_scraper-1.1.0 → amd_node_scraper-1.1.2}/nodescraper/plugins/inband/device_enumeration/__init__.py +0 -0
  193. {amd_node_scraper-1.1.0 → amd_node_scraper-1.1.2}/nodescraper/plugins/inband/device_enumeration/analyzer_args.py +0 -0
  194. {amd_node_scraper-1.1.0 → amd_node_scraper-1.1.2}/nodescraper/plugins/inband/device_enumeration/device_enumeration_analyzer.py +0 -0
  195. {amd_node_scraper-1.1.0 → amd_node_scraper-1.1.2}/nodescraper/plugins/inband/device_enumeration/device_enumeration_collector.py +0 -0
  196. {amd_node_scraper-1.1.0 → amd_node_scraper-1.1.2}/nodescraper/plugins/inband/device_enumeration/device_enumeration_plugin.py +0 -0
  197. {amd_node_scraper-1.1.0 → amd_node_scraper-1.1.2}/nodescraper/plugins/inband/device_enumeration/deviceenumdata.py +0 -0
  198. {amd_node_scraper-1.1.0 → amd_node_scraper-1.1.2}/nodescraper/plugins/inband/dimm/__init__.py +0 -0
  199. {amd_node_scraper-1.1.0 → amd_node_scraper-1.1.2}/nodescraper/plugins/inband/dimm/collector_args.py +0 -0
  200. {amd_node_scraper-1.1.0 → amd_node_scraper-1.1.2}/nodescraper/plugins/inband/dimm/dimm_collector.py +0 -0
  201. {amd_node_scraper-1.1.0 → amd_node_scraper-1.1.2}/nodescraper/plugins/inband/dimm/dimm_plugin.py +0 -0
  202. {amd_node_scraper-1.1.0 → amd_node_scraper-1.1.2}/nodescraper/plugins/inband/dimm/dimmdata.py +0 -0
  203. {amd_node_scraper-1.1.0 → amd_node_scraper-1.1.2}/nodescraper/plugins/inband/dkms/__init__.py +0 -0
  204. {amd_node_scraper-1.1.0 → amd_node_scraper-1.1.2}/nodescraper/plugins/inband/dkms/analyzer_args.py +0 -0
  205. {amd_node_scraper-1.1.0 → amd_node_scraper-1.1.2}/nodescraper/plugins/inband/dkms/dkms_analyzer.py +0 -0
  206. {amd_node_scraper-1.1.0 → amd_node_scraper-1.1.2}/nodescraper/plugins/inband/dkms/dkms_collector.py +0 -0
  207. {amd_node_scraper-1.1.0 → amd_node_scraper-1.1.2}/nodescraper/plugins/inband/dkms/dkms_plugin.py +0 -0
  208. {amd_node_scraper-1.1.0 → amd_node_scraper-1.1.2}/nodescraper/plugins/inband/dkms/dkmsdata.py +0 -0
  209. {amd_node_scraper-1.1.0 → amd_node_scraper-1.1.2}/nodescraper/plugins/inband/dmesg/__init__.py +0 -0
  210. {amd_node_scraper-1.1.0 → amd_node_scraper-1.1.2}/nodescraper/plugins/inband/dmesg/analyzer_args.py +0 -0
  211. {amd_node_scraper-1.1.0 → amd_node_scraper-1.1.2}/nodescraper/plugins/inband/dmesg/collector_args.py +0 -0
  212. {amd_node_scraper-1.1.0 → amd_node_scraper-1.1.2}/nodescraper/plugins/inband/dmesg/dmesg_analyzer.py +0 -0
  213. {amd_node_scraper-1.1.0 → amd_node_scraper-1.1.2}/nodescraper/plugins/inband/dmesg/dmesg_collector.py +0 -0
  214. {amd_node_scraper-1.1.0 → amd_node_scraper-1.1.2}/nodescraper/plugins/inband/dmesg/dmesg_plugin.py +0 -0
  215. {amd_node_scraper-1.1.0 → amd_node_scraper-1.1.2}/nodescraper/plugins/inband/dmesg/dmesgdata.py +0 -0
  216. {amd_node_scraper-1.1.0 → amd_node_scraper-1.1.2}/nodescraper/plugins/inband/dmesg/run_compare.py +0 -0
  217. {amd_node_scraper-1.1.0 → amd_node_scraper-1.1.2}/nodescraper/plugins/inband/fabrics/__init__.py +0 -0
  218. {amd_node_scraper-1.1.0 → amd_node_scraper-1.1.2}/nodescraper/plugins/inband/fabrics/fabrics_plugin.py +0 -0
  219. {amd_node_scraper-1.1.0 → amd_node_scraper-1.1.2}/nodescraper/plugins/inband/journal/__init__.py +0 -0
  220. {amd_node_scraper-1.1.0 → amd_node_scraper-1.1.2}/nodescraper/plugins/inband/journal/analyzer_args.py +0 -0
  221. {amd_node_scraper-1.1.0 → amd_node_scraper-1.1.2}/nodescraper/plugins/inband/journal/collector_args.py +0 -0
  222. {amd_node_scraper-1.1.0 → amd_node_scraper-1.1.2}/nodescraper/plugins/inband/journal/journal_analyzer.py +0 -0
  223. {amd_node_scraper-1.1.0 → amd_node_scraper-1.1.2}/nodescraper/plugins/inband/journal/journal_collector.py +0 -0
  224. {amd_node_scraper-1.1.0 → amd_node_scraper-1.1.2}/nodescraper/plugins/inband/journal/journal_plugin.py +0 -0
  225. {amd_node_scraper-1.1.0 → amd_node_scraper-1.1.2}/nodescraper/plugins/inband/journal/journaldata.py +0 -0
  226. {amd_node_scraper-1.1.0 → amd_node_scraper-1.1.2}/nodescraper/plugins/inband/kernel/__init__.py +0 -0
  227. {amd_node_scraper-1.1.0 → amd_node_scraper-1.1.2}/nodescraper/plugins/inband/kernel/analyzer_args.py +0 -0
  228. {amd_node_scraper-1.1.0 → amd_node_scraper-1.1.2}/nodescraper/plugins/inband/kernel/kernel_analyzer.py +0 -0
  229. {amd_node_scraper-1.1.0 → amd_node_scraper-1.1.2}/nodescraper/plugins/inband/kernel/kernel_collector.py +0 -0
  230. {amd_node_scraper-1.1.0 → amd_node_scraper-1.1.2}/nodescraper/plugins/inband/kernel/kernel_plugin.py +0 -0
  231. {amd_node_scraper-1.1.0 → amd_node_scraper-1.1.2}/nodescraper/plugins/inband/kernel/kerneldata.py +0 -0
  232. {amd_node_scraper-1.1.0 → amd_node_scraper-1.1.2}/nodescraper/plugins/inband/kernel_module/__init__.py +0 -0
  233. {amd_node_scraper-1.1.0 → amd_node_scraper-1.1.2}/nodescraper/plugins/inband/kernel_module/analyzer_args.py +0 -0
  234. {amd_node_scraper-1.1.0 → amd_node_scraper-1.1.2}/nodescraper/plugins/inband/kernel_module/kernel_module_analyzer.py +0 -0
  235. {amd_node_scraper-1.1.0 → amd_node_scraper-1.1.2}/nodescraper/plugins/inband/kernel_module/kernel_module_collector.py +0 -0
  236. {amd_node_scraper-1.1.0 → amd_node_scraper-1.1.2}/nodescraper/plugins/inband/kernel_module/kernel_module_data.py +0 -0
  237. {amd_node_scraper-1.1.0 → amd_node_scraper-1.1.2}/nodescraper/plugins/inband/kernel_module/kernel_module_plugin.py +0 -0
  238. {amd_node_scraper-1.1.0 → amd_node_scraper-1.1.2}/nodescraper/plugins/inband/memory/__init__.py +0 -0
  239. {amd_node_scraper-1.1.0 → amd_node_scraper-1.1.2}/nodescraper/plugins/inband/memory/analyzer_args.py +0 -0
  240. {amd_node_scraper-1.1.0 → amd_node_scraper-1.1.2}/nodescraper/plugins/inband/memory/memory_analyzer.py +0 -0
  241. {amd_node_scraper-1.1.0 → amd_node_scraper-1.1.2}/nodescraper/plugins/inband/memory/memory_collector.py +0 -0
  242. {amd_node_scraper-1.1.0 → amd_node_scraper-1.1.2}/nodescraper/plugins/inband/memory/memory_plugin.py +0 -0
  243. {amd_node_scraper-1.1.0 → amd_node_scraper-1.1.2}/nodescraper/plugins/inband/memory/memorydata.py +0 -0
  244. {amd_node_scraper-1.1.0 → amd_node_scraper-1.1.2}/nodescraper/plugins/inband/network/__init__.py +0 -0
  245. {amd_node_scraper-1.1.0 → amd_node_scraper-1.1.2}/nodescraper/plugins/inband/network/collector_args.py +0 -0
  246. {amd_node_scraper-1.1.0 → amd_node_scraper-1.1.2}/nodescraper/plugins/inband/network/network_plugin.py +0 -0
  247. {amd_node_scraper-1.1.0 → amd_node_scraper-1.1.2}/nodescraper/plugins/inband/nvme/__init__.py +0 -0
  248. {amd_node_scraper-1.1.0 → amd_node_scraper-1.1.2}/nodescraper/plugins/inband/nvme/nvme_collector.py +0 -0
  249. {amd_node_scraper-1.1.0 → amd_node_scraper-1.1.2}/nodescraper/plugins/inband/nvme/nvme_plugin.py +0 -0
  250. {amd_node_scraper-1.1.0 → amd_node_scraper-1.1.2}/nodescraper/plugins/inband/nvme/nvmedata.py +0 -0
  251. {amd_node_scraper-1.1.0 → amd_node_scraper-1.1.2}/nodescraper/plugins/inband/os/__init__.py +0 -0
  252. {amd_node_scraper-1.1.0 → amd_node_scraper-1.1.2}/nodescraper/plugins/inband/os/analyzer_args.py +0 -0
  253. {amd_node_scraper-1.1.0 → amd_node_scraper-1.1.2}/nodescraper/plugins/inband/os/os_analyzer.py +0 -0
  254. {amd_node_scraper-1.1.0 → amd_node_scraper-1.1.2}/nodescraper/plugins/inband/os/os_collector.py +0 -0
  255. {amd_node_scraper-1.1.0 → amd_node_scraper-1.1.2}/nodescraper/plugins/inband/os/os_plugin.py +0 -0
  256. {amd_node_scraper-1.1.0 → amd_node_scraper-1.1.2}/nodescraper/plugins/inband/os/osdata.py +0 -0
  257. {amd_node_scraper-1.1.0 → amd_node_scraper-1.1.2}/nodescraper/plugins/inband/package/__init__.py +0 -0
  258. {amd_node_scraper-1.1.0 → amd_node_scraper-1.1.2}/nodescraper/plugins/inband/package/analyzer_args.py +0 -0
  259. {amd_node_scraper-1.1.0 → amd_node_scraper-1.1.2}/nodescraper/plugins/inband/package/package_analyzer.py +0 -0
  260. {amd_node_scraper-1.1.0 → amd_node_scraper-1.1.2}/nodescraper/plugins/inband/package/package_collector.py +0 -0
  261. {amd_node_scraper-1.1.0 → amd_node_scraper-1.1.2}/nodescraper/plugins/inband/package/package_plugin.py +0 -0
  262. {amd_node_scraper-1.1.0 → amd_node_scraper-1.1.2}/nodescraper/plugins/inband/package/packagedata.py +0 -0
  263. {amd_node_scraper-1.1.0 → amd_node_scraper-1.1.2}/nodescraper/plugins/inband/pcie/__init__.py +0 -0
  264. {amd_node_scraper-1.1.0 → amd_node_scraper-1.1.2}/nodescraper/plugins/inband/pcie/analyzer_args.py +0 -0
  265. {amd_node_scraper-1.1.0 → amd_node_scraper-1.1.2}/nodescraper/plugins/inband/pcie/pcie_analyzer.py +0 -0
  266. {amd_node_scraper-1.1.0 → amd_node_scraper-1.1.2}/nodescraper/plugins/inband/pcie/pcie_collector.py +0 -0
  267. {amd_node_scraper-1.1.0 → amd_node_scraper-1.1.2}/nodescraper/plugins/inband/pcie/pcie_data.py +0 -0
  268. {amd_node_scraper-1.1.0 → amd_node_scraper-1.1.2}/nodescraper/plugins/inband/pcie/pcie_plugin.py +0 -0
  269. {amd_node_scraper-1.1.0 → amd_node_scraper-1.1.2}/nodescraper/plugins/inband/process/__init__.py +0 -0
  270. {amd_node_scraper-1.1.0 → amd_node_scraper-1.1.2}/nodescraper/plugins/inband/process/analyzer_args.py +0 -0
  271. {amd_node_scraper-1.1.0 → amd_node_scraper-1.1.2}/nodescraper/plugins/inband/process/collector_args.py +0 -0
  272. {amd_node_scraper-1.1.0 → amd_node_scraper-1.1.2}/nodescraper/plugins/inband/process/process_analyzer.py +0 -0
  273. {amd_node_scraper-1.1.0 → amd_node_scraper-1.1.2}/nodescraper/plugins/inband/process/process_collector.py +0 -0
  274. {amd_node_scraper-1.1.0 → amd_node_scraper-1.1.2}/nodescraper/plugins/inband/process/process_plugin.py +0 -0
  275. {amd_node_scraper-1.1.0 → amd_node_scraper-1.1.2}/nodescraper/plugins/inband/process/processdata.py +0 -0
  276. {amd_node_scraper-1.1.0 → amd_node_scraper-1.1.2}/nodescraper/plugins/inband/rocm/__init__.py +0 -0
  277. {amd_node_scraper-1.1.0 → amd_node_scraper-1.1.2}/nodescraper/plugins/inband/rocm/analyzer_args.py +0 -0
  278. {amd_node_scraper-1.1.0 → amd_node_scraper-1.1.2}/nodescraper/plugins/inband/rocm/rocm_analyzer.py +0 -0
  279. {amd_node_scraper-1.1.0 → amd_node_scraper-1.1.2}/nodescraper/plugins/inband/rocm/rocmdata.py +0 -0
  280. {amd_node_scraper-1.1.0 → amd_node_scraper-1.1.2}/nodescraper/plugins/inband/storage/__init__.py +0 -0
  281. {amd_node_scraper-1.1.0 → amd_node_scraper-1.1.2}/nodescraper/plugins/inband/storage/analyzer_args.py +0 -0
  282. {amd_node_scraper-1.1.0 → amd_node_scraper-1.1.2}/nodescraper/plugins/inband/storage/collector_args.py +0 -0
  283. {amd_node_scraper-1.1.0 → amd_node_scraper-1.1.2}/nodescraper/plugins/inband/storage/storage_analyzer.py +0 -0
  284. {amd_node_scraper-1.1.0 → amd_node_scraper-1.1.2}/nodescraper/plugins/inband/storage/storage_collector.py +0 -0
  285. {amd_node_scraper-1.1.0 → amd_node_scraper-1.1.2}/nodescraper/plugins/inband/storage/storage_plugin.py +0 -0
  286. {amd_node_scraper-1.1.0 → amd_node_scraper-1.1.2}/nodescraper/plugins/inband/storage/storagedata.py +0 -0
  287. {amd_node_scraper-1.1.0 → amd_node_scraper-1.1.2}/nodescraper/plugins/inband/sys_settings/__init__.py +0 -0
  288. {amd_node_scraper-1.1.0 → amd_node_scraper-1.1.2}/nodescraper/plugins/inband/sys_settings/analyzer_args.py +0 -0
  289. {amd_node_scraper-1.1.0 → amd_node_scraper-1.1.2}/nodescraper/plugins/inband/sys_settings/sys_settings_analyzer.py +0 -0
  290. {amd_node_scraper-1.1.0 → amd_node_scraper-1.1.2}/nodescraper/plugins/inband/sys_settings/sys_settings_data.py +0 -0
  291. {amd_node_scraper-1.1.0 → amd_node_scraper-1.1.2}/nodescraper/plugins/inband/sys_settings/sys_settings_plugin.py +0 -0
  292. {amd_node_scraper-1.1.0 → amd_node_scraper-1.1.2}/nodescraper/plugins/inband/sysctl/__init__.py +0 -0
  293. {amd_node_scraper-1.1.0 → amd_node_scraper-1.1.2}/nodescraper/plugins/inband/sysctl/analyzer_args.py +0 -0
  294. {amd_node_scraper-1.1.0 → amd_node_scraper-1.1.2}/nodescraper/plugins/inband/sysctl/sysctl_analyzer.py +0 -0
  295. {amd_node_scraper-1.1.0 → amd_node_scraper-1.1.2}/nodescraper/plugins/inband/sysctl/sysctl_collector.py +0 -0
  296. {amd_node_scraper-1.1.0 → amd_node_scraper-1.1.2}/nodescraper/plugins/inband/sysctl/sysctl_plugin.py +0 -0
  297. {amd_node_scraper-1.1.0 → amd_node_scraper-1.1.2}/nodescraper/plugins/inband/sysctl/sysctldata.py +0 -0
  298. {amd_node_scraper-1.1.0 → amd_node_scraper-1.1.2}/nodescraper/plugins/inband/syslog/__init__.py +0 -0
  299. {amd_node_scraper-1.1.0 → amd_node_scraper-1.1.2}/nodescraper/plugins/inband/syslog/syslog_collector.py +0 -0
  300. {amd_node_scraper-1.1.0 → amd_node_scraper-1.1.2}/nodescraper/plugins/inband/syslog/syslog_plugin.py +0 -0
  301. {amd_node_scraper-1.1.0 → amd_node_scraper-1.1.2}/nodescraper/plugins/inband/syslog/syslogdata.py +0 -0
  302. {amd_node_scraper-1.1.0 → amd_node_scraper-1.1.2}/nodescraper/plugins/inband/uptime/__init__.py +0 -0
  303. {amd_node_scraper-1.1.0 → amd_node_scraper-1.1.2}/nodescraper/plugins/inband/uptime/uptime_collector.py +0 -0
  304. {amd_node_scraper-1.1.0 → amd_node_scraper-1.1.2}/nodescraper/plugins/inband/uptime/uptime_plugin.py +0 -0
  305. {amd_node_scraper-1.1.0 → amd_node_scraper-1.1.2}/nodescraper/plugins/inband/uptime/uptimedata.py +0 -0
  306. {amd_node_scraper-1.1.0 → amd_node_scraper-1.1.2}/nodescraper/resultcollators/__init__.py +0 -0
  307. {amd_node_scraper-1.1.0 → amd_node_scraper-1.1.2}/nodescraper/resultcollators/tablesummary.py +0 -0
  308. {amd_node_scraper-1.1.0 → amd_node_scraper-1.1.2}/nodescraper/taskresulthooks/__init__.py +0 -0
  309. {amd_node_scraper-1.1.0 → amd_node_scraper-1.1.2}/nodescraper/taskresulthooks/filesystemloghook.py +0 -0
  310. {amd_node_scraper-1.1.0 → amd_node_scraper-1.1.2}/nodescraper/typeutils.py +0 -0
  311. {amd_node_scraper-1.1.0 → amd_node_scraper-1.1.2}/pytest.ini +0 -0
  312. {amd_node_scraper-1.1.0 → amd_node_scraper-1.1.2}/setup.cfg +0 -0
  313. {amd_node_scraper-1.1.0 → amd_node_scraper-1.1.2}/setup.py +0 -0
  314. {amd_node_scraper-1.1.0 → amd_node_scraper-1.1.2}/test/functional/__init__.py +0 -0
  315. {amd_node_scraper-1.1.0 → amd_node_scraper-1.1.2}/test/functional/conftest.py +0 -0
  316. {amd_node_scraper-1.1.0 → amd_node_scraper-1.1.2}/test/functional/fixtures/bios_plugin_config.json +0 -0
  317. {amd_node_scraper-1.1.0 → amd_node_scraper-1.1.2}/test/functional/fixtures/cmdline_plugin_config.json +0 -0
  318. {amd_node_scraper-1.1.0 → amd_node_scraper-1.1.2}/test/functional/fixtures/dimm_plugin_config.json +0 -0
  319. {amd_node_scraper-1.1.0 → amd_node_scraper-1.1.2}/test/functional/fixtures/dkms_plugin_config.json +0 -0
  320. {amd_node_scraper-1.1.0 → amd_node_scraper-1.1.2}/test/functional/fixtures/dmesg_plugin_config.json +0 -0
  321. {amd_node_scraper-1.1.0 → amd_node_scraper-1.1.2}/test/functional/fixtures/dmesg_plugin_config_custom_regex.json +0 -0
  322. {amd_node_scraper-1.1.0 → amd_node_scraper-1.1.2}/test/functional/fixtures/dmesg_sample.log +0 -0
  323. {amd_node_scraper-1.1.0 → amd_node_scraper-1.1.2}/test/functional/fixtures/dmesg_sample_with_collapsing.log +0 -0
  324. {amd_node_scraper-1.1.0 → amd_node_scraper-1.1.2}/test/functional/fixtures/fabrics_plugin_config.json +0 -0
  325. {amd_node_scraper-1.1.0 → amd_node_scraper-1.1.2}/test/functional/fixtures/journal_plugin_config.json +0 -0
  326. {amd_node_scraper-1.1.0 → amd_node_scraper-1.1.2}/test/functional/fixtures/kernel_module_plugin_config.json +0 -0
  327. {amd_node_scraper-1.1.0 → amd_node_scraper-1.1.2}/test/functional/fixtures/kernel_plugin_config.json +0 -0
  328. {amd_node_scraper-1.1.0 → amd_node_scraper-1.1.2}/test/functional/fixtures/memory_plugin_config.json +0 -0
  329. {amd_node_scraper-1.1.0 → amd_node_scraper-1.1.2}/test/functional/fixtures/network_plugin_config.json +0 -0
  330. {amd_node_scraper-1.1.0 → amd_node_scraper-1.1.2}/test/functional/fixtures/nvme_plugin_config.json +0 -0
  331. {amd_node_scraper-1.1.0 → amd_node_scraper-1.1.2}/test/functional/fixtures/os_plugin_config.json +0 -0
  332. {amd_node_scraper-1.1.0 → amd_node_scraper-1.1.2}/test/functional/fixtures/package_plugin_config.json +0 -0
  333. {amd_node_scraper-1.1.0 → amd_node_scraper-1.1.2}/test/functional/fixtures/pcie_plugin_advanced_config.json +0 -0
  334. {amd_node_scraper-1.1.0 → amd_node_scraper-1.1.2}/test/functional/fixtures/pcie_plugin_config.json +0 -0
  335. {amd_node_scraper-1.1.0 → amd_node_scraper-1.1.2}/test/functional/fixtures/plugin_config.json +0 -0
  336. {amd_node_scraper-1.1.0 → amd_node_scraper-1.1.2}/test/functional/fixtures/process_plugin_config.json +0 -0
  337. {amd_node_scraper-1.1.0 → amd_node_scraper-1.1.2}/test/functional/fixtures/rocm_plugin_config.json +0 -0
  338. {amd_node_scraper-1.1.0 → amd_node_scraper-1.1.2}/test/functional/fixtures/storage_plugin_config.json +0 -0
  339. {amd_node_scraper-1.1.0 → amd_node_scraper-1.1.2}/test/functional/fixtures/sys_settings_plugin_config.json +0 -0
  340. {amd_node_scraper-1.1.0 → amd_node_scraper-1.1.2}/test/functional/fixtures/sysctl_plugin_config.json +0 -0
  341. {amd_node_scraper-1.1.0 → amd_node_scraper-1.1.2}/test/functional/fixtures/syslog_plugin_config.json +0 -0
  342. {amd_node_scraper-1.1.0 → amd_node_scraper-1.1.2}/test/functional/fixtures/uptime_plugin_config.json +0 -0
  343. {amd_node_scraper-1.1.0 → amd_node_scraper-1.1.2}/test/functional/test_cli_describe.py +0 -0
  344. {amd_node_scraper-1.1.0 → amd_node_scraper-1.1.2}/test/functional/test_fabrics_plugin.py +0 -0
  345. {amd_node_scraper-1.1.0 → amd_node_scraper-1.1.2}/test/functional/test_network_plugin.py +0 -0
  346. {amd_node_scraper-1.1.0 → amd_node_scraper-1.1.2}/test/functional/test_pcie_plugin.py +0 -0
  347. {amd_node_scraper-1.1.0 → amd_node_scraper-1.1.2}/test/functional/test_plugin_registry.py +0 -0
  348. {amd_node_scraper-1.1.0 → amd_node_scraper-1.1.2}/test/functional/test_sys_settings_plugin.py +0 -0
  349. {amd_node_scraper-1.1.0 → amd_node_scraper-1.1.2}/test/unit/framework/common/shared_utils.py +0 -0
  350. {amd_node_scraper-1.1.0 → amd_node_scraper-1.1.2}/test/unit/framework/fixtures/compare_runs_sysctl/run1/sysctl_plugin/sysctl_collector/result.json +0 -0
  351. {amd_node_scraper-1.1.0 → amd_node_scraper-1.1.2}/test/unit/framework/fixtures/compare_runs_sysctl/run1/sysctl_plugin/sysctl_collector/sysctldatamodel.json +0 -0
  352. {amd_node_scraper-1.1.0 → amd_node_scraper-1.1.2}/test/unit/framework/fixtures/compare_runs_sysctl/run2/sysctl_plugin/sysctl_collector/result.json +0 -0
  353. {amd_node_scraper-1.1.0 → amd_node_scraper-1.1.2}/test/unit/framework/fixtures/compare_runs_sysctl/run2/sysctl_plugin/sysctl_collector/sysctldatamodel.json +0 -0
  354. {amd_node_scraper-1.1.0 → amd_node_scraper-1.1.2}/test/unit/framework/fixtures/example.json +0 -0
  355. {amd_node_scraper-1.1.0 → amd_node_scraper-1.1.2}/test/unit/framework/fixtures/example_config.json +0 -0
  356. {amd_node_scraper-1.1.0 → amd_node_scraper-1.1.2}/test/unit/framework/fixtures/invalid.json +0 -0
  357. {amd_node_scraper-1.1.0 → amd_node_scraper-1.1.2}/test/unit/framework/fixtures/log_dir/collector/biosdatamodel.json +0 -0
  358. {amd_node_scraper-1.1.0 → amd_node_scraper-1.1.2}/test/unit/framework/fixtures/log_dir/collector/result.json +0 -0
  359. {amd_node_scraper-1.1.0 → amd_node_scraper-1.1.2}/test/unit/framework/test_analyzerargs.py +0 -0
  360. {amd_node_scraper-1.1.0 → amd_node_scraper-1.1.2}/test/unit/framework/test_cli.py +0 -0
  361. {amd_node_scraper-1.1.0 → amd_node_scraper-1.1.2}/test/unit/framework/test_cli_helper.py +0 -0
  362. {amd_node_scraper-1.1.0 → amd_node_scraper-1.1.2}/test/unit/framework/test_compare_runs.py +0 -0
  363. {amd_node_scraper-1.1.0 → amd_node_scraper-1.1.2}/test/unit/framework/test_config_builder.py +0 -0
  364. {amd_node_scraper-1.1.0 → amd_node_scraper-1.1.2}/test/unit/framework/test_config_registry.py +0 -0
  365. {amd_node_scraper-1.1.0 → amd_node_scraper-1.1.2}/test/unit/framework/test_dataanalyzer.py +0 -0
  366. {amd_node_scraper-1.1.0 → amd_node_scraper-1.1.2}/test/unit/framework/test_datacollector.py +0 -0
  367. {amd_node_scraper-1.1.0 → amd_node_scraper-1.1.2}/test/unit/framework/test_dataplugin.py +0 -0
  368. {amd_node_scraper-1.1.0 → amd_node_scraper-1.1.2}/test/unit/framework/test_file_artifact.py +0 -0
  369. {amd_node_scraper-1.1.0 → amd_node_scraper-1.1.2}/test/unit/framework/test_regexanalyzer.py +0 -0
  370. {amd_node_scraper-1.1.0 → amd_node_scraper-1.1.2}/test/unit/framework/test_type_utils.py +0 -0
  371. {amd_node_scraper-1.1.0 → amd_node_scraper-1.1.2}/test/unit/plugin/fixtures/package_commands.json +0 -0
  372. {amd_node_scraper-1.1.0 → amd_node_scraper-1.1.2}/test/unit/plugin/test_analyzer_args_build_from_model.py +0 -0
  373. {amd_node_scraper-1.1.0 → amd_node_scraper-1.1.2}/test/unit/plugin/test_bios_analyzer.py +0 -0
  374. {amd_node_scraper-1.1.0 → amd_node_scraper-1.1.2}/test/unit/plugin/test_bios_collector.py +0 -0
  375. {amd_node_scraper-1.1.0 → amd_node_scraper-1.1.2}/test/unit/plugin/test_cmdline_analyzer.py +0 -0
  376. {amd_node_scraper-1.1.0 → amd_node_scraper-1.1.2}/test/unit/plugin/test_cmdline_collector.py +0 -0
  377. {amd_node_scraper-1.1.0 → amd_node_scraper-1.1.2}/test/unit/plugin/test_device_enumeration_analyzer.py +0 -0
  378. {amd_node_scraper-1.1.0 → amd_node_scraper-1.1.2}/test/unit/plugin/test_device_enumeration_collector.py +0 -0
  379. {amd_node_scraper-1.1.0 → amd_node_scraper-1.1.2}/test/unit/plugin/test_dimms_collector.py +0 -0
  380. {amd_node_scraper-1.1.0 → amd_node_scraper-1.1.2}/test/unit/plugin/test_dkms_analyzer.py +0 -0
  381. {amd_node_scraper-1.1.0 → amd_node_scraper-1.1.2}/test/unit/plugin/test_dkms_collector.py +0 -0
  382. {amd_node_scraper-1.1.0 → amd_node_scraper-1.1.2}/test/unit/plugin/test_dmesg_analyzer.py +0 -0
  383. {amd_node_scraper-1.1.0 → amd_node_scraper-1.1.2}/test/unit/plugin/test_dmesg_collector.py +0 -0
  384. {amd_node_scraper-1.1.0 → amd_node_scraper-1.1.2}/test/unit/plugin/test_journal_collector.py +0 -0
  385. {amd_node_scraper-1.1.0 → amd_node_scraper-1.1.2}/test/unit/plugin/test_kernel_analyzer.py +0 -0
  386. {amd_node_scraper-1.1.0 → amd_node_scraper-1.1.2}/test/unit/plugin/test_kernel_collector.py +0 -0
  387. {amd_node_scraper-1.1.0 → amd_node_scraper-1.1.2}/test/unit/plugin/test_kernel_module_analyzer.py +0 -0
  388. {amd_node_scraper-1.1.0 → amd_node_scraper-1.1.2}/test/unit/plugin/test_kernel_module_collector.py +0 -0
  389. {amd_node_scraper-1.1.0 → amd_node_scraper-1.1.2}/test/unit/plugin/test_memory_analyzer.py +0 -0
  390. {amd_node_scraper-1.1.0 → amd_node_scraper-1.1.2}/test/unit/plugin/test_memory_collector.py +0 -0
  391. {amd_node_scraper-1.1.0 → amd_node_scraper-1.1.2}/test/unit/plugin/test_nvme_collector.py +0 -0
  392. {amd_node_scraper-1.1.0 → amd_node_scraper-1.1.2}/test/unit/plugin/test_os_analyzer.py +0 -0
  393. {amd_node_scraper-1.1.0 → amd_node_scraper-1.1.2}/test/unit/plugin/test_os_collector.py +0 -0
  394. {amd_node_scraper-1.1.0 → amd_node_scraper-1.1.2}/test/unit/plugin/test_package_analyzer.py +0 -0
  395. {amd_node_scraper-1.1.0 → amd_node_scraper-1.1.2}/test/unit/plugin/test_package_collector.py +0 -0
  396. {amd_node_scraper-1.1.0 → amd_node_scraper-1.1.2}/test/unit/plugin/test_process_analyzer.py +0 -0
  397. {amd_node_scraper-1.1.0 → amd_node_scraper-1.1.2}/test/unit/plugin/test_process_collector.py +0 -0
  398. {amd_node_scraper-1.1.0 → amd_node_scraper-1.1.2}/test/unit/plugin/test_rocm_analyzer.py +0 -0
  399. {amd_node_scraper-1.1.0 → amd_node_scraper-1.1.2}/test/unit/plugin/test_storage_analyzer.py +0 -0
  400. {amd_node_scraper-1.1.0 → amd_node_scraper-1.1.2}/test/unit/plugin/test_storage_collector.py +0 -0
  401. {amd_node_scraper-1.1.0 → amd_node_scraper-1.1.2}/test/unit/plugin/test_sys_settings_analyzer.py +0 -0
  402. {amd_node_scraper-1.1.0 → amd_node_scraper-1.1.2}/test/unit/plugin/test_sysctl_analyzer.py +0 -0
  403. {amd_node_scraper-1.1.0 → amd_node_scraper-1.1.2}/test/unit/plugin/test_sysctl_collector.py +0 -0
  404. {amd_node_scraper-1.1.0 → amd_node_scraper-1.1.2}/test/unit/plugin/test_syslog_collector.py +0 -0
  405. {amd_node_scraper-1.1.0 → amd_node_scraper-1.1.2}/test/unit/plugin/test_uptime_collector.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: amd-node-scraper
3
- Version: 1.1.0
3
+ Version: 1.1.2
4
4
  Summary: A framework for automated error detection and data collection
5
5
  Project-URL: homepage, https://github.com/amd/node-scraper
6
6
  Project-URL: documentation, https://github.com/amd/node-scraper
@@ -13,7 +13,7 @@ Requires-Dist: pydantic>=2.8.2
13
13
  Requires-Dist: paramiko<4.0.0,>=3.2.0
14
14
  Requires-Dist: requests
15
15
  Requires-Dist: pytz
16
- Requires-Dist: urllib3<2.0.0,>=1.26.15
16
+ Requires-Dist: urllib3>=2.6.0
17
17
  Provides-Extra: dev
18
18
  Requires-Dist: build; extra == "dev"
19
19
  Requires-Dist: black; extra == "dev"
@@ -42,6 +42,7 @@ system debug.
42
42
  - ['run-plugins' sub command](#run-plugins-sub-command)
43
43
  - ['gen-plugin-config' sub command](#gen-plugin-config-sub-command)
44
44
  - ['compare-runs' subcommand](#compare-runs-subcommand)
45
+ - ['show-redfish-oem-allowable' subcommand](#show-redfish-oem-allowable-subcommand)
45
46
  - ['summary' sub command](#summary-sub-command)
46
47
  - [Configs](#configs)
47
48
  - [Global args](#global-args)
@@ -113,7 +114,7 @@ options:
113
114
  --sys-platform STRING
114
115
  Specify system platform (default: None)
115
116
  --plugin-configs [STRING ...]
116
- built-in config names or paths to plugin config JSONs. Available built-in configs: NodeStatus (default: None)
117
+ built-in config names or paths to plugin config JSONs. Available built-in configs: AllPlugins, NodeStatus (default: None)
117
118
  --system-config STRING
118
119
  Path to system config json (default: None)
119
120
  --connection-config STRING
@@ -144,6 +145,8 @@ node-scraper --sys-name <remote_host> --sys-location REMOTE --connection-config
144
145
 
145
146
  ##### Example: connection_config.json
146
147
 
148
+ In-band (SSH) connection:
149
+
147
150
  ```json
148
151
  {
149
152
  "InBandConnectionManager": {
@@ -156,6 +159,24 @@ node-scraper --sys-name <remote_host> --sys-location REMOTE --connection-config
156
159
  }
157
160
  ```
158
161
 
162
+ Redfish (BMC) connection for Redfish-only plugins:
163
+
164
+ ```json
165
+ {
166
+ "RedfishConnectionManager": {
167
+ "host": "bmc.example.com",
168
+ "port": 443,
169
+ "username": "admin",
170
+ "password": "secret",
171
+ "use_https": true,
172
+ "verify_ssl": true,
173
+ "api_root": "redfish/v1"
174
+ }
175
+ }
176
+ ```
177
+
178
+ - `api_root` (optional): Redfish API path (e.g. `redfish/v1`). If omitted, the default `redfish/v1` is used. Override this when your BMC uses a different API version path.
179
+
159
180
  **Notes:**
160
181
  - If using SSH keys, specify `key_filename` instead of `password`.
161
182
  - The remote user must have permissions to run the requested plugins and access required files. If needed, use the `--skip-sudo` argument to skip plugins requiring sudo.
@@ -347,6 +368,112 @@ node-scraper compare-runs path1 path2 --include-plugins DmesgPlugin --dont-trunc
347
368
 
348
369
  You can pass multiple plugin names to `--skip-plugins` or `--include-plugins`.
349
370
 
371
+ #### **'show-redfish-oem-allowable' subcommand**
372
+ The `show-redfish-oem-allowable` subcommand fetches the list of OEM diagnostic types supported by your BMC (from the Redfish LogService `OEMDiagnosticDataType@Redfish.AllowableValues`). Use it to discover which types you can put in `oem_diagnostic_types_allowable` and `oem_diagnostic_types` in the Redfish OEM diag plugin config.
373
+
374
+ **Requirements:** A Redfish connection config (same as for RedfishOemDiagPlugin).
375
+
376
+ **Command:**
377
+ ```sh
378
+ node-scraper --connection-config connection-config.json show-redfish-oem-allowable --log-service-path "redfish/v1/Systems/UBB/LogServices/DiagLogs"
379
+ ```
380
+
381
+ Output is a JSON array of allowable type names (e.g. `["Dmesg", "JournalControl", "AllLogs", ...]`). Copy that list into your plugin config’s `oem_diagnostic_types_allowable` if you want to match your BMC.
382
+
383
+ **Redfish OEM diag plugin config example**
384
+
385
+ Use a plugin config that points at your LogService and lists the types to collect. Logs are written under the run log path (see `--log-path`).
386
+
387
+ ```json
388
+ {
389
+ "name": "Redfish OEM diagnostic logs",
390
+ "desc": "Collect OEM diagnostic logs from Redfish LogService. Requires Redfish connection config.",
391
+ "global_args": {},
392
+ "plugins": {
393
+ "RedfishOemDiagPlugin": {
394
+ "collection_args": {
395
+ "log_service_path": "redfish/v1/Systems/UBB/LogServices/DiagLogs",
396
+ "oem_diagnostic_types_allowable": [
397
+ "JournalControl",
398
+ ...
399
+ "AllLogs",
400
+ ],
401
+ "oem_diagnostic_types": ["JournalControl", "AllLogs"],
402
+ "task_timeout_s": 600
403
+ },
404
+ "analysis_args": {
405
+ "require_all_success": false
406
+ }
407
+ }
408
+ },
409
+ "result_collators": {}
410
+ }
411
+ ```
412
+
413
+ - **`log_service_path`**: Redfish path to the LogService (e.g. DiagLogs). Must match your system (e.g. `UBB` vs. another system id).
414
+ - **`oem_diagnostic_types_allowable`**: Full list of types the BMC supports (from `show-redfish-oem-allowable` or vendor docs).
415
+ - **`oem_diagnostic_types`**: Subset of types to collect on each run (e.g. `["JournalControl", "AllLogs"]`).
416
+ - **`task_timeout_s`**: Max seconds to wait per collection task.
417
+
418
+ **How to use**
419
+
420
+ 1. **Discover allowable types** (optional): run `show-redfish-oem-allowable` and paste the output into `oem_diagnostic_types_allowable` in your plugin config.
421
+ 2. **Set `oem_diagnostic_types`** to the list you want to collect (e.g. `["JournalControl", "AllLogs"]`).
422
+ 3. **Run the plugin** with a Redfish connection config and your plugin config:
423
+ ```sh
424
+ node-scraper --connection-config connection-config.json --plugin-config plugin_config_redfish_oem_diag.json run-plugins RedfishOemDiagPlugin
425
+ ```
426
+ 4. Use **`--log-path`** to choose where run logs (and OEM diag archives) are written; archives go under `<log-path>/scraper_logs_<name>_<timestamp>/redfish_oem_diag_plugin/redfish_oem_diag_collector/`.
427
+
428
+ #### **RedfishEndpointPlugin**
429
+
430
+ The RedfishEndpointPlugin collects Redfish URIs (GET responses) and optionally runs checks on the returned JSON. It requires a Redfish connection config (same as RedfishOemDiagPlugin).
431
+
432
+ **How to run**
433
+
434
+ 1. Create a connection config (e.g. `connection-config.json`) with `RedfishConnectionManager` and your BMC host, credentials, and API root.
435
+ 2. Create a plugin config with `uris` to collect and optional `checks` for analysis (see example below). For example save as `plugin_config_redfish_endpoint.json`.
436
+ 3. Run:
437
+ ```sh
438
+ node-scraper --connection-config connection-config.json --plugin-config plugin_config_redfish_endpoint.json run-plugins RedfishEndpointPlugin
439
+ ```
440
+
441
+ **Sample plugin config** (`plugin_config_redfish_endpoint.json`):
442
+
443
+ ```json
444
+ {
445
+ "name": "RedfishEndpointPlugin",
446
+ "desc": "Redfish endpoint: collect URIs and optional checks",
447
+ "global_args": {},
448
+ "plugins": {
449
+ "RedfishEndpointPlugin": {
450
+ "collection_args": {
451
+ "uris": [
452
+ "/redfish/v1/",
453
+ "/redfish/v1/Systems/1",
454
+ "/redfish/v1/Chassis/1/Power"
455
+ ]
456
+ },
457
+ "analysis_args": {
458
+ "checks": {
459
+ "/redfish/v1/Systems/1": {
460
+ "PowerState": "On",
461
+ "Status/Health": { "anyOf": ["OK", "Warning"] }
462
+ },
463
+ "/redfish/v1/Chassis/1/Power": {
464
+ "PowerControl/0/PowerConsumedWatts": { "max": 1000 }
465
+ }
466
+ }
467
+ }
468
+ }
469
+ },
470
+ "result_collators": {}
471
+ }
472
+ ```
473
+
474
+ - **`uris`**: List of Redfish paths (e.g. `/redfish/v1/`, `/redfish/v1/Systems/1`) to GET and store.
475
+ - **`checks`**: Optional. Map of URI to expected values or constraints for analysis. Supports exact match (e.g. `"PowerState": "On"`), `anyOf`, `min`/`max`, etc.
476
+
350
477
  #### **'summary' sub command**
351
478
  The 'summary' subcommand can be used to combine results from multiple runs of node-scraper to a
352
479
  single summary.csv file. Sample run:
@@ -398,7 +525,11 @@ Below is an example that skips sudo requiring plugins and disables analysis.
398
525
  ```
399
526
 
400
527
  #### Plugin config: **'--plugin-configs' command**
401
- A plugin config can be used to compare the system data against the config specifications:
528
+ A plugin config can be used to compare the system data against the config specifications.
529
+ Built-in configs include **NodeStatus** (a subset of plugins) and **AllPlugins** (runs every
530
+ registered plugin with default arguments—useful for generating a reference config from the full system).
531
+
532
+ Using a JSON file:
402
533
  ```sh
403
534
  node-scraper --plugin-configs plugin_config.json
404
535
  ```
@@ -459,10 +590,16 @@ Here is an example of a comprehensive plugin config that specifies analyzer args
459
590
  This command can be used to generate a reference config that is populated with current system
460
591
  configurations. Plugins that use analyzer args (where applicable) will be populated with system
461
592
  data.
462
- Sample command:
593
+
594
+ **Run all registered plugins (AllPlugins config):**
463
595
  ```sh
464
- node-scraper --gen-reference-config run-plugins BiosPlugin OsPlugin
596
+ node-scraper --plugin-config AllPlugins
465
597
 
598
+ ```
599
+
600
+ **Generate a reference config for specific plugins:**
601
+ ```sh
602
+ node-scraper --gen-reference-config run-plugins BiosPlugin OsPlugin
466
603
  ```
467
604
  This will generate the following config:
468
605
  ```json
@@ -14,6 +14,7 @@ system debug.
14
14
  - ['run-plugins' sub command](#run-plugins-sub-command)
15
15
  - ['gen-plugin-config' sub command](#gen-plugin-config-sub-command)
16
16
  - ['compare-runs' subcommand](#compare-runs-subcommand)
17
+ - ['show-redfish-oem-allowable' subcommand](#show-redfish-oem-allowable-subcommand)
17
18
  - ['summary' sub command](#summary-sub-command)
18
19
  - [Configs](#configs)
19
20
  - [Global args](#global-args)
@@ -85,7 +86,7 @@ options:
85
86
  --sys-platform STRING
86
87
  Specify system platform (default: None)
87
88
  --plugin-configs [STRING ...]
88
- built-in config names or paths to plugin config JSONs. Available built-in configs: NodeStatus (default: None)
89
+ built-in config names or paths to plugin config JSONs. Available built-in configs: AllPlugins, NodeStatus (default: None)
89
90
  --system-config STRING
90
91
  Path to system config json (default: None)
91
92
  --connection-config STRING
@@ -116,6 +117,8 @@ node-scraper --sys-name <remote_host> --sys-location REMOTE --connection-config
116
117
 
117
118
  ##### Example: connection_config.json
118
119
 
120
+ In-band (SSH) connection:
121
+
119
122
  ```json
120
123
  {
121
124
  "InBandConnectionManager": {
@@ -128,6 +131,24 @@ node-scraper --sys-name <remote_host> --sys-location REMOTE --connection-config
128
131
  }
129
132
  ```
130
133
 
134
+ Redfish (BMC) connection for Redfish-only plugins:
135
+
136
+ ```json
137
+ {
138
+ "RedfishConnectionManager": {
139
+ "host": "bmc.example.com",
140
+ "port": 443,
141
+ "username": "admin",
142
+ "password": "secret",
143
+ "use_https": true,
144
+ "verify_ssl": true,
145
+ "api_root": "redfish/v1"
146
+ }
147
+ }
148
+ ```
149
+
150
+ - `api_root` (optional): Redfish API path (e.g. `redfish/v1`). If omitted, the default `redfish/v1` is used. Override this when your BMC uses a different API version path.
151
+
131
152
  **Notes:**
132
153
  - If using SSH keys, specify `key_filename` instead of `password`.
133
154
  - The remote user must have permissions to run the requested plugins and access required files. If needed, use the `--skip-sudo` argument to skip plugins requiring sudo.
@@ -319,6 +340,112 @@ node-scraper compare-runs path1 path2 --include-plugins DmesgPlugin --dont-trunc
319
340
 
320
341
  You can pass multiple plugin names to `--skip-plugins` or `--include-plugins`.
321
342
 
343
+ #### **'show-redfish-oem-allowable' subcommand**
344
+ The `show-redfish-oem-allowable` subcommand fetches the list of OEM diagnostic types supported by your BMC (from the Redfish LogService `OEMDiagnosticDataType@Redfish.AllowableValues`). Use it to discover which types you can put in `oem_diagnostic_types_allowable` and `oem_diagnostic_types` in the Redfish OEM diag plugin config.
345
+
346
+ **Requirements:** A Redfish connection config (same as for RedfishOemDiagPlugin).
347
+
348
+ **Command:**
349
+ ```sh
350
+ node-scraper --connection-config connection-config.json show-redfish-oem-allowable --log-service-path "redfish/v1/Systems/UBB/LogServices/DiagLogs"
351
+ ```
352
+
353
+ Output is a JSON array of allowable type names (e.g. `["Dmesg", "JournalControl", "AllLogs", ...]`). Copy that list into your plugin config’s `oem_diagnostic_types_allowable` if you want to match your BMC.
354
+
355
+ **Redfish OEM diag plugin config example**
356
+
357
+ Use a plugin config that points at your LogService and lists the types to collect. Logs are written under the run log path (see `--log-path`).
358
+
359
+ ```json
360
+ {
361
+ "name": "Redfish OEM diagnostic logs",
362
+ "desc": "Collect OEM diagnostic logs from Redfish LogService. Requires Redfish connection config.",
363
+ "global_args": {},
364
+ "plugins": {
365
+ "RedfishOemDiagPlugin": {
366
+ "collection_args": {
367
+ "log_service_path": "redfish/v1/Systems/UBB/LogServices/DiagLogs",
368
+ "oem_diagnostic_types_allowable": [
369
+ "JournalControl",
370
+ ...
371
+ "AllLogs",
372
+ ],
373
+ "oem_diagnostic_types": ["JournalControl", "AllLogs"],
374
+ "task_timeout_s": 600
375
+ },
376
+ "analysis_args": {
377
+ "require_all_success": false
378
+ }
379
+ }
380
+ },
381
+ "result_collators": {}
382
+ }
383
+ ```
384
+
385
+ - **`log_service_path`**: Redfish path to the LogService (e.g. DiagLogs). Must match your system (e.g. `UBB` vs. another system id).
386
+ - **`oem_diagnostic_types_allowable`**: Full list of types the BMC supports (from `show-redfish-oem-allowable` or vendor docs).
387
+ - **`oem_diagnostic_types`**: Subset of types to collect on each run (e.g. `["JournalControl", "AllLogs"]`).
388
+ - **`task_timeout_s`**: Max seconds to wait per collection task.
389
+
390
+ **How to use**
391
+
392
+ 1. **Discover allowable types** (optional): run `show-redfish-oem-allowable` and paste the output into `oem_diagnostic_types_allowable` in your plugin config.
393
+ 2. **Set `oem_diagnostic_types`** to the list you want to collect (e.g. `["JournalControl", "AllLogs"]`).
394
+ 3. **Run the plugin** with a Redfish connection config and your plugin config:
395
+ ```sh
396
+ node-scraper --connection-config connection-config.json --plugin-config plugin_config_redfish_oem_diag.json run-plugins RedfishOemDiagPlugin
397
+ ```
398
+ 4. Use **`--log-path`** to choose where run logs (and OEM diag archives) are written; archives go under `<log-path>/scraper_logs_<name>_<timestamp>/redfish_oem_diag_plugin/redfish_oem_diag_collector/`.
399
+
400
+ #### **RedfishEndpointPlugin**
401
+
402
+ The RedfishEndpointPlugin collects Redfish URIs (GET responses) and optionally runs checks on the returned JSON. It requires a Redfish connection config (same as RedfishOemDiagPlugin).
403
+
404
+ **How to run**
405
+
406
+ 1. Create a connection config (e.g. `connection-config.json`) with `RedfishConnectionManager` and your BMC host, credentials, and API root.
407
+ 2. Create a plugin config with `uris` to collect and optional `checks` for analysis (see example below). For example save as `plugin_config_redfish_endpoint.json`.
408
+ 3. Run:
409
+ ```sh
410
+ node-scraper --connection-config connection-config.json --plugin-config plugin_config_redfish_endpoint.json run-plugins RedfishEndpointPlugin
411
+ ```
412
+
413
+ **Sample plugin config** (`plugin_config_redfish_endpoint.json`):
414
+
415
+ ```json
416
+ {
417
+ "name": "RedfishEndpointPlugin",
418
+ "desc": "Redfish endpoint: collect URIs and optional checks",
419
+ "global_args": {},
420
+ "plugins": {
421
+ "RedfishEndpointPlugin": {
422
+ "collection_args": {
423
+ "uris": [
424
+ "/redfish/v1/",
425
+ "/redfish/v1/Systems/1",
426
+ "/redfish/v1/Chassis/1/Power"
427
+ ]
428
+ },
429
+ "analysis_args": {
430
+ "checks": {
431
+ "/redfish/v1/Systems/1": {
432
+ "PowerState": "On",
433
+ "Status/Health": { "anyOf": ["OK", "Warning"] }
434
+ },
435
+ "/redfish/v1/Chassis/1/Power": {
436
+ "PowerControl/0/PowerConsumedWatts": { "max": 1000 }
437
+ }
438
+ }
439
+ }
440
+ }
441
+ },
442
+ "result_collators": {}
443
+ }
444
+ ```
445
+
446
+ - **`uris`**: List of Redfish paths (e.g. `/redfish/v1/`, `/redfish/v1/Systems/1`) to GET and store.
447
+ - **`checks`**: Optional. Map of URI to expected values or constraints for analysis. Supports exact match (e.g. `"PowerState": "On"`), `anyOf`, `min`/`max`, etc.
448
+
322
449
  #### **'summary' sub command**
323
450
  The 'summary' subcommand can be used to combine results from multiple runs of node-scraper to a
324
451
  single summary.csv file. Sample run:
@@ -370,7 +497,11 @@ Below is an example that skips sudo requiring plugins and disables analysis.
370
497
  ```
371
498
 
372
499
  #### Plugin config: **'--plugin-configs' command**
373
- A plugin config can be used to compare the system data against the config specifications:
500
+ A plugin config can be used to compare the system data against the config specifications.
501
+ Built-in configs include **NodeStatus** (a subset of plugins) and **AllPlugins** (runs every
502
+ registered plugin with default arguments—useful for generating a reference config from the full system).
503
+
504
+ Using a JSON file:
374
505
  ```sh
375
506
  node-scraper --plugin-configs plugin_config.json
376
507
  ```
@@ -431,10 +562,16 @@ Here is an example of a comprehensive plugin config that specifies analyzer args
431
562
  This command can be used to generate a reference config that is populated with current system
432
563
  configurations. Plugins that use analyzer args (where applicable) will be populated with system
433
564
  data.
434
- Sample command:
565
+
566
+ **Run all registered plugins (AllPlugins config):**
435
567
  ```sh
436
- node-scraper --gen-reference-config run-plugins BiosPlugin OsPlugin
568
+ node-scraper --plugin-config AllPlugins
437
569
 
570
+ ```
571
+
572
+ **Generate a reference config for specific plugins:**
573
+ ```sh
574
+ node-scraper --gen-reference-config run-plugins BiosPlugin OsPlugin
438
575
  ```
439
576
  This will generate the following config:
440
577
  ```json
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: amd-node-scraper
3
- Version: 1.1.0
3
+ Version: 1.1.2
4
4
  Summary: A framework for automated error detection and data collection
5
5
  Project-URL: homepage, https://github.com/amd/node-scraper
6
6
  Project-URL: documentation, https://github.com/amd/node-scraper
@@ -13,7 +13,7 @@ Requires-Dist: pydantic>=2.8.2
13
13
  Requires-Dist: paramiko<4.0.0,>=3.2.0
14
14
  Requires-Dist: requests
15
15
  Requires-Dist: pytz
16
- Requires-Dist: urllib3<2.0.0,>=1.26.15
16
+ Requires-Dist: urllib3>=2.6.0
17
17
  Provides-Extra: dev
18
18
  Requires-Dist: build; extra == "dev"
19
19
  Requires-Dist: black; extra == "dev"
@@ -42,6 +42,7 @@ system debug.
42
42
  - ['run-plugins' sub command](#run-plugins-sub-command)
43
43
  - ['gen-plugin-config' sub command](#gen-plugin-config-sub-command)
44
44
  - ['compare-runs' subcommand](#compare-runs-subcommand)
45
+ - ['show-redfish-oem-allowable' subcommand](#show-redfish-oem-allowable-subcommand)
45
46
  - ['summary' sub command](#summary-sub-command)
46
47
  - [Configs](#configs)
47
48
  - [Global args](#global-args)
@@ -113,7 +114,7 @@ options:
113
114
  --sys-platform STRING
114
115
  Specify system platform (default: None)
115
116
  --plugin-configs [STRING ...]
116
- built-in config names or paths to plugin config JSONs. Available built-in configs: NodeStatus (default: None)
117
+ built-in config names or paths to plugin config JSONs. Available built-in configs: AllPlugins, NodeStatus (default: None)
117
118
  --system-config STRING
118
119
  Path to system config json (default: None)
119
120
  --connection-config STRING
@@ -144,6 +145,8 @@ node-scraper --sys-name <remote_host> --sys-location REMOTE --connection-config
144
145
 
145
146
  ##### Example: connection_config.json
146
147
 
148
+ In-band (SSH) connection:
149
+
147
150
  ```json
148
151
  {
149
152
  "InBandConnectionManager": {
@@ -156,6 +159,24 @@ node-scraper --sys-name <remote_host> --sys-location REMOTE --connection-config
156
159
  }
157
160
  ```
158
161
 
162
+ Redfish (BMC) connection for Redfish-only plugins:
163
+
164
+ ```json
165
+ {
166
+ "RedfishConnectionManager": {
167
+ "host": "bmc.example.com",
168
+ "port": 443,
169
+ "username": "admin",
170
+ "password": "secret",
171
+ "use_https": true,
172
+ "verify_ssl": true,
173
+ "api_root": "redfish/v1"
174
+ }
175
+ }
176
+ ```
177
+
178
+ - `api_root` (optional): Redfish API path (e.g. `redfish/v1`). If omitted, the default `redfish/v1` is used. Override this when your BMC uses a different API version path.
179
+
159
180
  **Notes:**
160
181
  - If using SSH keys, specify `key_filename` instead of `password`.
161
182
  - The remote user must have permissions to run the requested plugins and access required files. If needed, use the `--skip-sudo` argument to skip plugins requiring sudo.
@@ -347,6 +368,112 @@ node-scraper compare-runs path1 path2 --include-plugins DmesgPlugin --dont-trunc
347
368
 
348
369
  You can pass multiple plugin names to `--skip-plugins` or `--include-plugins`.
349
370
 
371
+ #### **'show-redfish-oem-allowable' subcommand**
372
+ The `show-redfish-oem-allowable` subcommand fetches the list of OEM diagnostic types supported by your BMC (from the Redfish LogService `OEMDiagnosticDataType@Redfish.AllowableValues`). Use it to discover which types you can put in `oem_diagnostic_types_allowable` and `oem_diagnostic_types` in the Redfish OEM diag plugin config.
373
+
374
+ **Requirements:** A Redfish connection config (same as for RedfishOemDiagPlugin).
375
+
376
+ **Command:**
377
+ ```sh
378
+ node-scraper --connection-config connection-config.json show-redfish-oem-allowable --log-service-path "redfish/v1/Systems/UBB/LogServices/DiagLogs"
379
+ ```
380
+
381
+ Output is a JSON array of allowable type names (e.g. `["Dmesg", "JournalControl", "AllLogs", ...]`). Copy that list into your plugin config’s `oem_diagnostic_types_allowable` if you want to match your BMC.
382
+
383
+ **Redfish OEM diag plugin config example**
384
+
385
+ Use a plugin config that points at your LogService and lists the types to collect. Logs are written under the run log path (see `--log-path`).
386
+
387
+ ```json
388
+ {
389
+ "name": "Redfish OEM diagnostic logs",
390
+ "desc": "Collect OEM diagnostic logs from Redfish LogService. Requires Redfish connection config.",
391
+ "global_args": {},
392
+ "plugins": {
393
+ "RedfishOemDiagPlugin": {
394
+ "collection_args": {
395
+ "log_service_path": "redfish/v1/Systems/UBB/LogServices/DiagLogs",
396
+ "oem_diagnostic_types_allowable": [
397
+ "JournalControl",
398
+ ...
399
+ "AllLogs",
400
+ ],
401
+ "oem_diagnostic_types": ["JournalControl", "AllLogs"],
402
+ "task_timeout_s": 600
403
+ },
404
+ "analysis_args": {
405
+ "require_all_success": false
406
+ }
407
+ }
408
+ },
409
+ "result_collators": {}
410
+ }
411
+ ```
412
+
413
+ - **`log_service_path`**: Redfish path to the LogService (e.g. DiagLogs). Must match your system (e.g. `UBB` vs. another system id).
414
+ - **`oem_diagnostic_types_allowable`**: Full list of types the BMC supports (from `show-redfish-oem-allowable` or vendor docs).
415
+ - **`oem_diagnostic_types`**: Subset of types to collect on each run (e.g. `["JournalControl", "AllLogs"]`).
416
+ - **`task_timeout_s`**: Max seconds to wait per collection task.
417
+
418
+ **How to use**
419
+
420
+ 1. **Discover allowable types** (optional): run `show-redfish-oem-allowable` and paste the output into `oem_diagnostic_types_allowable` in your plugin config.
421
+ 2. **Set `oem_diagnostic_types`** to the list you want to collect (e.g. `["JournalControl", "AllLogs"]`).
422
+ 3. **Run the plugin** with a Redfish connection config and your plugin config:
423
+ ```sh
424
+ node-scraper --connection-config connection-config.json --plugin-config plugin_config_redfish_oem_diag.json run-plugins RedfishOemDiagPlugin
425
+ ```
426
+ 4. Use **`--log-path`** to choose where run logs (and OEM diag archives) are written; archives go under `<log-path>/scraper_logs_<name>_<timestamp>/redfish_oem_diag_plugin/redfish_oem_diag_collector/`.
427
+
428
+ #### **RedfishEndpointPlugin**
429
+
430
+ The RedfishEndpointPlugin collects Redfish URIs (GET responses) and optionally runs checks on the returned JSON. It requires a Redfish connection config (same as RedfishOemDiagPlugin).
431
+
432
+ **How to run**
433
+
434
+ 1. Create a connection config (e.g. `connection-config.json`) with `RedfishConnectionManager` and your BMC host, credentials, and API root.
435
+ 2. Create a plugin config with `uris` to collect and optional `checks` for analysis (see example below). For example save as `plugin_config_redfish_endpoint.json`.
436
+ 3. Run:
437
+ ```sh
438
+ node-scraper --connection-config connection-config.json --plugin-config plugin_config_redfish_endpoint.json run-plugins RedfishEndpointPlugin
439
+ ```
440
+
441
+ **Sample plugin config** (`plugin_config_redfish_endpoint.json`):
442
+
443
+ ```json
444
+ {
445
+ "name": "RedfishEndpointPlugin",
446
+ "desc": "Redfish endpoint: collect URIs and optional checks",
447
+ "global_args": {},
448
+ "plugins": {
449
+ "RedfishEndpointPlugin": {
450
+ "collection_args": {
451
+ "uris": [
452
+ "/redfish/v1/",
453
+ "/redfish/v1/Systems/1",
454
+ "/redfish/v1/Chassis/1/Power"
455
+ ]
456
+ },
457
+ "analysis_args": {
458
+ "checks": {
459
+ "/redfish/v1/Systems/1": {
460
+ "PowerState": "On",
461
+ "Status/Health": { "anyOf": ["OK", "Warning"] }
462
+ },
463
+ "/redfish/v1/Chassis/1/Power": {
464
+ "PowerControl/0/PowerConsumedWatts": { "max": 1000 }
465
+ }
466
+ }
467
+ }
468
+ }
469
+ },
470
+ "result_collators": {}
471
+ }
472
+ ```
473
+
474
+ - **`uris`**: List of Redfish paths (e.g. `/redfish/v1/`, `/redfish/v1/Systems/1`) to GET and store.
475
+ - **`checks`**: Optional. Map of URI to expected values or constraints for analysis. Supports exact match (e.g. `"PowerState": "On"`), `anyOf`, `min`/`max`, etc.
476
+
350
477
  #### **'summary' sub command**
351
478
  The 'summary' subcommand can be used to combine results from multiple runs of node-scraper to a
352
479
  single summary.csv file. Sample run:
@@ -398,7 +525,11 @@ Below is an example that skips sudo requiring plugins and disables analysis.
398
525
  ```
399
526
 
400
527
  #### Plugin config: **'--plugin-configs' command**
401
- A plugin config can be used to compare the system data against the config specifications:
528
+ A plugin config can be used to compare the system data against the config specifications.
529
+ Built-in configs include **NodeStatus** (a subset of plugins) and **AllPlugins** (runs every
530
+ registered plugin with default arguments—useful for generating a reference config from the full system).
531
+
532
+ Using a JSON file:
402
533
  ```sh
403
534
  node-scraper --plugin-configs plugin_config.json
404
535
  ```
@@ -459,10 +590,16 @@ Here is an example of a comprehensive plugin config that specifies analyzer args
459
590
  This command can be used to generate a reference config that is populated with current system
460
591
  configurations. Plugins that use analyzer args (where applicable) will be populated with system
461
592
  data.
462
- Sample command:
593
+
594
+ **Run all registered plugins (AllPlugins config):**
463
595
  ```sh
464
- node-scraper --gen-reference-config run-plugins BiosPlugin OsPlugin
596
+ node-scraper --plugin-config AllPlugins
465
597
 
598
+ ```
599
+
600
+ **Generate a reference config for specific plugins:**
601
+ ```sh
602
+ node-scraper --gen-reference-config run-plugins BiosPlugin OsPlugin
466
603
  ```
467
604
  This will generate the following config:
468
605
  ```json