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.
Files changed (316) hide show
  1. amd_node_scraper-0.0.1/.github/CODEOWNERS +1 -0
  2. amd_node_scraper-0.0.1/.github/workflows/code_quality_checks.yml +26 -0
  3. amd_node_scraper-0.0.1/.github/workflows/functional-test.yml +30 -0
  4. amd_node_scraper-0.0.1/.github/workflows/release-trusted-publisher.yml +122 -0
  5. amd_node_scraper-0.0.1/.github/workflows/unit-test.yml +41 -0
  6. amd_node_scraper-0.0.1/.github/workflows/update-plugin-docs.yml +69 -0
  7. amd_node_scraper-0.0.1/.gitignore +133 -0
  8. amd_node_scraper-0.0.1/.mypy.ini +122 -0
  9. amd_node_scraper-0.0.1/.pre-commit-config.yaml +23 -0
  10. amd_node_scraper-0.0.1/CONTRIBUTING.md +92 -0
  11. amd_node_scraper-0.0.1/EXTENDING.md +134 -0
  12. amd_node_scraper-0.0.1/LICENSE +21 -0
  13. amd_node_scraper-0.0.1/PKG-INFO +424 -0
  14. amd_node_scraper-0.0.1/README.md +396 -0
  15. amd_node_scraper-0.0.1/amd_node_scraper.egg-info/PKG-INFO +424 -0
  16. amd_node_scraper-0.0.1/amd_node_scraper.egg-info/SOURCES.txt +314 -0
  17. amd_node_scraper-0.0.1/amd_node_scraper.egg-info/dependency_links.txt +1 -0
  18. amd_node_scraper-0.0.1/amd_node_scraper.egg-info/entry_points.txt +2 -0
  19. amd_node_scraper-0.0.1/amd_node_scraper.egg-info/requires.txt +17 -0
  20. amd_node_scraper-0.0.1/amd_node_scraper.egg-info/top_level.txt +1 -0
  21. amd_node_scraper-0.0.1/dev-setup.sh +13 -0
  22. amd_node_scraper-0.0.1/docs/PLUGIN_DOC.md +1560 -0
  23. amd_node_scraper-0.0.1/docs/generate_plugin_doc_bundle.py +571 -0
  24. amd_node_scraper-0.0.1/docs/node-scraper-external/README.md +142 -0
  25. amd_node_scraper-0.0.1/docs/node-scraper-external/ext_nodescraper_plugins/sample/__init__.py +25 -0
  26. amd_node_scraper-0.0.1/docs/node-scraper-external/ext_nodescraper_plugins/sample/sample_analyzer.py +51 -0
  27. amd_node_scraper-0.0.1/docs/node-scraper-external/ext_nodescraper_plugins/sample/sample_collector.py +45 -0
  28. amd_node_scraper-0.0.1/docs/node-scraper-external/ext_nodescraper_plugins/sample/sample_data.py +31 -0
  29. amd_node_scraper-0.0.1/docs/node-scraper-external/ext_nodescraper_plugins/sample/sample_plugin.py +41 -0
  30. amd_node_scraper-0.0.1/docs/node-scraper-external/pyproject.toml +12 -0
  31. amd_node_scraper-0.0.1/nodescraper/__init__.py +32 -0
  32. amd_node_scraper-0.0.1/nodescraper/base/__init__.py +34 -0
  33. amd_node_scraper-0.0.1/nodescraper/base/inbandcollectortask.py +118 -0
  34. amd_node_scraper-0.0.1/nodescraper/base/inbanddataplugin.py +39 -0
  35. amd_node_scraper-0.0.1/nodescraper/base/regexanalyzer.py +120 -0
  36. amd_node_scraper-0.0.1/nodescraper/cli/__init__.py +29 -0
  37. amd_node_scraper-0.0.1/nodescraper/cli/cli.py +511 -0
  38. amd_node_scraper-0.0.1/nodescraper/cli/constants.py +27 -0
  39. amd_node_scraper-0.0.1/nodescraper/cli/dynamicparserbuilder.py +171 -0
  40. amd_node_scraper-0.0.1/nodescraper/cli/helper.py +517 -0
  41. amd_node_scraper-0.0.1/nodescraper/cli/inputargtypes.py +129 -0
  42. amd_node_scraper-0.0.1/nodescraper/configbuilder.py +123 -0
  43. amd_node_scraper-0.0.1/nodescraper/configregistry.py +66 -0
  44. amd_node_scraper-0.0.1/nodescraper/configs/node_status.json +19 -0
  45. amd_node_scraper-0.0.1/nodescraper/connection/__init__.py +25 -0
  46. amd_node_scraper-0.0.1/nodescraper/connection/inband/__init__.py +46 -0
  47. amd_node_scraper-0.0.1/nodescraper/connection/inband/inband.py +171 -0
  48. amd_node_scraper-0.0.1/nodescraper/connection/inband/inbandlocal.py +93 -0
  49. amd_node_scraper-0.0.1/nodescraper/connection/inband/inbandmanager.py +151 -0
  50. amd_node_scraper-0.0.1/nodescraper/connection/inband/inbandremote.py +173 -0
  51. amd_node_scraper-0.0.1/nodescraper/connection/inband/sshparams.py +43 -0
  52. amd_node_scraper-0.0.1/nodescraper/constants.py +26 -0
  53. amd_node_scraper-0.0.1/nodescraper/enums/__init__.py +40 -0
  54. amd_node_scraper-0.0.1/nodescraper/enums/eventcategory.py +89 -0
  55. amd_node_scraper-0.0.1/nodescraper/enums/eventpriority.py +42 -0
  56. amd_node_scraper-0.0.1/nodescraper/enums/executionstatus.py +44 -0
  57. amd_node_scraper-0.0.1/nodescraper/enums/osfamily.py +34 -0
  58. amd_node_scraper-0.0.1/nodescraper/enums/systeminteraction.py +41 -0
  59. amd_node_scraper-0.0.1/nodescraper/enums/systemlocation.py +33 -0
  60. amd_node_scraper-0.0.1/nodescraper/generictypes.py +36 -0
  61. amd_node_scraper-0.0.1/nodescraper/interfaces/__init__.py +44 -0
  62. amd_node_scraper-0.0.1/nodescraper/interfaces/connectionmanager.py +143 -0
  63. amd_node_scraper-0.0.1/nodescraper/interfaces/dataanalyzertask.py +138 -0
  64. amd_node_scraper-0.0.1/nodescraper/interfaces/datacollectortask.py +185 -0
  65. amd_node_scraper-0.0.1/nodescraper/interfaces/dataplugin.py +356 -0
  66. amd_node_scraper-0.0.1/nodescraper/interfaces/plugin.py +127 -0
  67. amd_node_scraper-0.0.1/nodescraper/interfaces/resultcollator.py +56 -0
  68. amd_node_scraper-0.0.1/nodescraper/interfaces/task.py +164 -0
  69. amd_node_scraper-0.0.1/nodescraper/interfaces/taskresulthook.py +39 -0
  70. amd_node_scraper-0.0.1/nodescraper/models/__init__.py +48 -0
  71. amd_node_scraper-0.0.1/nodescraper/models/analyzerargs.py +93 -0
  72. amd_node_scraper-0.0.1/nodescraper/models/collectorargs.py +30 -0
  73. amd_node_scraper-0.0.1/nodescraper/models/connectionconfig.py +34 -0
  74. amd_node_scraper-0.0.1/nodescraper/models/datamodel.py +171 -0
  75. amd_node_scraper-0.0.1/nodescraper/models/datapluginresult.py +39 -0
  76. amd_node_scraper-0.0.1/nodescraper/models/event.py +158 -0
  77. amd_node_scraper-0.0.1/nodescraper/models/pluginconfig.py +38 -0
  78. amd_node_scraper-0.0.1/nodescraper/models/pluginresult.py +39 -0
  79. amd_node_scraper-0.0.1/nodescraper/models/systeminfo.py +44 -0
  80. amd_node_scraper-0.0.1/nodescraper/models/taskresult.py +185 -0
  81. amd_node_scraper-0.0.1/nodescraper/models/timerangeargs.py +38 -0
  82. amd_node_scraper-0.0.1/nodescraper/pluginexecutor.py +274 -0
  83. amd_node_scraper-0.0.1/nodescraper/pluginregistry.py +152 -0
  84. amd_node_scraper-0.0.1/nodescraper/plugins/__init__.py +25 -0
  85. amd_node_scraper-0.0.1/nodescraper/plugins/inband/__init__.py +25 -0
  86. amd_node_scraper-0.0.1/nodescraper/plugins/inband/amdsmi/__init__.py +28 -0
  87. amd_node_scraper-0.0.1/nodescraper/plugins/inband/amdsmi/amdsmi_analyzer.py +821 -0
  88. amd_node_scraper-0.0.1/nodescraper/plugins/inband/amdsmi/amdsmi_collector.py +1313 -0
  89. amd_node_scraper-0.0.1/nodescraper/plugins/inband/amdsmi/amdsmi_plugin.py +43 -0
  90. amd_node_scraper-0.0.1/nodescraper/plugins/inband/amdsmi/amdsmidata.py +1002 -0
  91. amd_node_scraper-0.0.1/nodescraper/plugins/inband/amdsmi/analyzer_args.py +50 -0
  92. amd_node_scraper-0.0.1/nodescraper/plugins/inband/amdsmi/cper.py +65 -0
  93. amd_node_scraper-0.0.1/nodescraper/plugins/inband/bios/__init__.py +29 -0
  94. amd_node_scraper-0.0.1/nodescraper/plugins/inband/bios/analyzer_args.py +64 -0
  95. amd_node_scraper-0.0.1/nodescraper/plugins/inband/bios/bios_analyzer.py +93 -0
  96. amd_node_scraper-0.0.1/nodescraper/plugins/inband/bios/bios_collector.py +93 -0
  97. amd_node_scraper-0.0.1/nodescraper/plugins/inband/bios/bios_plugin.py +43 -0
  98. amd_node_scraper-0.0.1/nodescraper/plugins/inband/bios/biosdata.py +30 -0
  99. amd_node_scraper-0.0.1/nodescraper/plugins/inband/cmdline/__init__.py +25 -0
  100. amd_node_scraper-0.0.1/nodescraper/plugins/inband/cmdline/analyzer_args.py +80 -0
  101. amd_node_scraper-0.0.1/nodescraper/plugins/inband/cmdline/cmdline_analyzer.py +113 -0
  102. amd_node_scraper-0.0.1/nodescraper/plugins/inband/cmdline/cmdline_collector.py +77 -0
  103. amd_node_scraper-0.0.1/nodescraper/plugins/inband/cmdline/cmdline_plugin.py +43 -0
  104. amd_node_scraper-0.0.1/nodescraper/plugins/inband/cmdline/cmdlinedata.py +30 -0
  105. amd_node_scraper-0.0.1/nodescraper/plugins/inband/device_enumeration/__init__.py +29 -0
  106. amd_node_scraper-0.0.1/nodescraper/plugins/inband/device_enumeration/analyzer_args.py +73 -0
  107. amd_node_scraper-0.0.1/nodescraper/plugins/inband/device_enumeration/device_enumeration_analyzer.py +81 -0
  108. amd_node_scraper-0.0.1/nodescraper/plugins/inband/device_enumeration/device_enumeration_collector.py +176 -0
  109. amd_node_scraper-0.0.1/nodescraper/plugins/inband/device_enumeration/device_enumeration_plugin.py +45 -0
  110. amd_node_scraper-0.0.1/nodescraper/plugins/inband/device_enumeration/deviceenumdata.py +36 -0
  111. amd_node_scraper-0.0.1/nodescraper/plugins/inband/dimm/__init__.py +25 -0
  112. amd_node_scraper-0.0.1/nodescraper/plugins/inband/dimm/collector_args.py +31 -0
  113. amd_node_scraper-0.0.1/nodescraper/plugins/inband/dimm/dimm_collector.py +151 -0
  114. amd_node_scraper-0.0.1/nodescraper/plugins/inband/dimm/dimm_plugin.py +40 -0
  115. amd_node_scraper-0.0.1/nodescraper/plugins/inband/dimm/dimmdata.py +30 -0
  116. amd_node_scraper-0.0.1/nodescraper/plugins/inband/dkms/__init__.py +25 -0
  117. amd_node_scraper-0.0.1/nodescraper/plugins/inband/dkms/analyzer_args.py +85 -0
  118. amd_node_scraper-0.0.1/nodescraper/plugins/inband/dkms/dkms_analyzer.py +106 -0
  119. amd_node_scraper-0.0.1/nodescraper/plugins/inband/dkms/dkms_collector.py +76 -0
  120. amd_node_scraper-0.0.1/nodescraper/plugins/inband/dkms/dkms_plugin.py +43 -0
  121. amd_node_scraper-0.0.1/nodescraper/plugins/inband/dkms/dkmsdata.py +33 -0
  122. amd_node_scraper-0.0.1/nodescraper/plugins/inband/dmesg/__init__.py +28 -0
  123. amd_node_scraper-0.0.1/nodescraper/plugins/inband/dmesg/analyzer_args.py +33 -0
  124. amd_node_scraper-0.0.1/nodescraper/plugins/inband/dmesg/collector_args.py +39 -0
  125. amd_node_scraper-0.0.1/nodescraper/plugins/inband/dmesg/dmesg_analyzer.py +503 -0
  126. amd_node_scraper-0.0.1/nodescraper/plugins/inband/dmesg/dmesg_collector.py +164 -0
  127. amd_node_scraper-0.0.1/nodescraper/plugins/inband/dmesg/dmesg_plugin.py +44 -0
  128. amd_node_scraper-0.0.1/nodescraper/plugins/inband/dmesg/dmesgdata.py +116 -0
  129. amd_node_scraper-0.0.1/nodescraper/plugins/inband/fabrics/__init__.py +28 -0
  130. amd_node_scraper-0.0.1/nodescraper/plugins/inband/fabrics/fabrics_collector.py +726 -0
  131. amd_node_scraper-0.0.1/nodescraper/plugins/inband/fabrics/fabrics_plugin.py +37 -0
  132. amd_node_scraper-0.0.1/nodescraper/plugins/inband/fabrics/fabricsdata.py +140 -0
  133. amd_node_scraper-0.0.1/nodescraper/plugins/inband/journal/__init__.py +28 -0
  134. amd_node_scraper-0.0.1/nodescraper/plugins/inband/journal/collector_args.py +33 -0
  135. amd_node_scraper-0.0.1/nodescraper/plugins/inband/journal/journal_collector.py +107 -0
  136. amd_node_scraper-0.0.1/nodescraper/plugins/inband/journal/journal_plugin.py +40 -0
  137. amd_node_scraper-0.0.1/nodescraper/plugins/inband/journal/journaldata.py +44 -0
  138. amd_node_scraper-0.0.1/nodescraper/plugins/inband/kernel/__init__.py +25 -0
  139. amd_node_scraper-0.0.1/nodescraper/plugins/inband/kernel/analyzer_args.py +64 -0
  140. amd_node_scraper-0.0.1/nodescraper/plugins/inband/kernel/kernel_analyzer.py +91 -0
  141. amd_node_scraper-0.0.1/nodescraper/plugins/inband/kernel/kernel_collector.py +129 -0
  142. amd_node_scraper-0.0.1/nodescraper/plugins/inband/kernel/kernel_plugin.py +43 -0
  143. amd_node_scraper-0.0.1/nodescraper/plugins/inband/kernel/kerneldata.py +32 -0
  144. amd_node_scraper-0.0.1/nodescraper/plugins/inband/kernel_module/__init__.py +25 -0
  145. amd_node_scraper-0.0.1/nodescraper/plugins/inband/kernel_module/analyzer_args.py +59 -0
  146. amd_node_scraper-0.0.1/nodescraper/plugins/inband/kernel_module/kernel_module_analyzer.py +211 -0
  147. amd_node_scraper-0.0.1/nodescraper/plugins/inband/kernel_module/kernel_module_collector.py +264 -0
  148. amd_node_scraper-0.0.1/nodescraper/plugins/inband/kernel_module/kernel_module_data.py +60 -0
  149. amd_node_scraper-0.0.1/nodescraper/plugins/inband/kernel_module/kernel_module_plugin.py +43 -0
  150. amd_node_scraper-0.0.1/nodescraper/plugins/inband/memory/__init__.py +25 -0
  151. amd_node_scraper-0.0.1/nodescraper/plugins/inband/memory/analyzer_args.py +45 -0
  152. amd_node_scraper-0.0.1/nodescraper/plugins/inband/memory/memory_analyzer.py +98 -0
  153. amd_node_scraper-0.0.1/nodescraper/plugins/inband/memory/memory_collector.py +330 -0
  154. amd_node_scraper-0.0.1/nodescraper/plugins/inband/memory/memory_plugin.py +43 -0
  155. amd_node_scraper-0.0.1/nodescraper/plugins/inband/memory/memorydata.py +90 -0
  156. amd_node_scraper-0.0.1/nodescraper/plugins/inband/network/__init__.py +28 -0
  157. amd_node_scraper-0.0.1/nodescraper/plugins/inband/network/network_collector.py +1828 -0
  158. amd_node_scraper-0.0.1/nodescraper/plugins/inband/network/network_plugin.py +37 -0
  159. amd_node_scraper-0.0.1/nodescraper/plugins/inband/network/networkdata.py +319 -0
  160. amd_node_scraper-0.0.1/nodescraper/plugins/inband/nvme/__init__.py +28 -0
  161. amd_node_scraper-0.0.1/nodescraper/plugins/inband/nvme/nvme_collector.py +167 -0
  162. amd_node_scraper-0.0.1/nodescraper/plugins/inband/nvme/nvme_plugin.py +37 -0
  163. amd_node_scraper-0.0.1/nodescraper/plugins/inband/nvme/nvmedata.py +45 -0
  164. amd_node_scraper-0.0.1/nodescraper/plugins/inband/os/__init__.py +25 -0
  165. amd_node_scraper-0.0.1/nodescraper/plugins/inband/os/analyzer_args.py +64 -0
  166. amd_node_scraper-0.0.1/nodescraper/plugins/inband/os/os_analyzer.py +73 -0
  167. amd_node_scraper-0.0.1/nodescraper/plugins/inband/os/os_collector.py +131 -0
  168. amd_node_scraper-0.0.1/nodescraper/plugins/inband/os/os_plugin.py +43 -0
  169. amd_node_scraper-0.0.1/nodescraper/plugins/inband/os/osdata.py +31 -0
  170. amd_node_scraper-0.0.1/nodescraper/plugins/inband/package/__init__.py +25 -0
  171. amd_node_scraper-0.0.1/nodescraper/plugins/inband/package/analyzer_args.py +48 -0
  172. amd_node_scraper-0.0.1/nodescraper/plugins/inband/package/package_analyzer.py +253 -0
  173. amd_node_scraper-0.0.1/nodescraper/plugins/inband/package/package_collector.py +273 -0
  174. amd_node_scraper-0.0.1/nodescraper/plugins/inband/package/package_plugin.py +43 -0
  175. amd_node_scraper-0.0.1/nodescraper/plugins/inband/package/packagedata.py +41 -0
  176. amd_node_scraper-0.0.1/nodescraper/plugins/inband/pcie/__init__.py +29 -0
  177. amd_node_scraper-0.0.1/nodescraper/plugins/inband/pcie/analyzer_args.py +63 -0
  178. amd_node_scraper-0.0.1/nodescraper/plugins/inband/pcie/pcie_analyzer.py +1081 -0
  179. amd_node_scraper-0.0.1/nodescraper/plugins/inband/pcie/pcie_collector.py +690 -0
  180. amd_node_scraper-0.0.1/nodescraper/plugins/inband/pcie/pcie_data.py +2017 -0
  181. amd_node_scraper-0.0.1/nodescraper/plugins/inband/pcie/pcie_plugin.py +43 -0
  182. amd_node_scraper-0.0.1/nodescraper/plugins/inband/process/__init__.py +25 -0
  183. amd_node_scraper-0.0.1/nodescraper/plugins/inband/process/analyzer_args.py +45 -0
  184. amd_node_scraper-0.0.1/nodescraper/plugins/inband/process/collector_args.py +31 -0
  185. amd_node_scraper-0.0.1/nodescraper/plugins/inband/process/process_analyzer.py +91 -0
  186. amd_node_scraper-0.0.1/nodescraper/plugins/inband/process/process_collector.py +115 -0
  187. amd_node_scraper-0.0.1/nodescraper/plugins/inband/process/process_plugin.py +46 -0
  188. amd_node_scraper-0.0.1/nodescraper/plugins/inband/process/processdata.py +34 -0
  189. amd_node_scraper-0.0.1/nodescraper/plugins/inband/rocm/__init__.py +25 -0
  190. amd_node_scraper-0.0.1/nodescraper/plugins/inband/rocm/analyzer_args.py +66 -0
  191. amd_node_scraper-0.0.1/nodescraper/plugins/inband/rocm/rocm_analyzer.py +100 -0
  192. amd_node_scraper-0.0.1/nodescraper/plugins/inband/rocm/rocm_collector.py +205 -0
  193. amd_node_scraper-0.0.1/nodescraper/plugins/inband/rocm/rocm_plugin.py +43 -0
  194. amd_node_scraper-0.0.1/nodescraper/plugins/inband/rocm/rocmdata.py +62 -0
  195. amd_node_scraper-0.0.1/nodescraper/plugins/inband/storage/__init__.py +25 -0
  196. amd_node_scraper-0.0.1/nodescraper/plugins/inband/storage/analyzer_args.py +38 -0
  197. amd_node_scraper-0.0.1/nodescraper/plugins/inband/storage/collector_args.py +31 -0
  198. amd_node_scraper-0.0.1/nodescraper/plugins/inband/storage/storage_analyzer.py +152 -0
  199. amd_node_scraper-0.0.1/nodescraper/plugins/inband/storage/storage_collector.py +110 -0
  200. amd_node_scraper-0.0.1/nodescraper/plugins/inband/storage/storage_plugin.py +44 -0
  201. amd_node_scraper-0.0.1/nodescraper/plugins/inband/storage/storagedata.py +70 -0
  202. amd_node_scraper-0.0.1/nodescraper/plugins/inband/sysctl/__init__.py +29 -0
  203. amd_node_scraper-0.0.1/nodescraper/plugins/inband/sysctl/analyzer_args.py +67 -0
  204. amd_node_scraper-0.0.1/nodescraper/plugins/inband/sysctl/sysctl_analyzer.py +81 -0
  205. amd_node_scraper-0.0.1/nodescraper/plugins/inband/sysctl/sysctl_collector.py +101 -0
  206. amd_node_scraper-0.0.1/nodescraper/plugins/inband/sysctl/sysctl_plugin.py +43 -0
  207. amd_node_scraper-0.0.1/nodescraper/plugins/inband/sysctl/sysctldata.py +42 -0
  208. amd_node_scraper-0.0.1/nodescraper/plugins/inband/syslog/__init__.py +28 -0
  209. amd_node_scraper-0.0.1/nodescraper/plugins/inband/syslog/syslog_collector.py +121 -0
  210. amd_node_scraper-0.0.1/nodescraper/plugins/inband/syslog/syslog_plugin.py +37 -0
  211. amd_node_scraper-0.0.1/nodescraper/plugins/inband/syslog/syslogdata.py +46 -0
  212. amd_node_scraper-0.0.1/nodescraper/plugins/inband/uptime/__init__.py +25 -0
  213. amd_node_scraper-0.0.1/nodescraper/plugins/inband/uptime/uptime_collector.py +88 -0
  214. amd_node_scraper-0.0.1/nodescraper/plugins/inband/uptime/uptime_plugin.py +37 -0
  215. amd_node_scraper-0.0.1/nodescraper/plugins/inband/uptime/uptimedata.py +31 -0
  216. amd_node_scraper-0.0.1/nodescraper/resultcollators/__init__.py +25 -0
  217. amd_node_scraper-0.0.1/nodescraper/resultcollators/tablesummary.py +159 -0
  218. amd_node_scraper-0.0.1/nodescraper/taskresulthooks/__init__.py +28 -0
  219. amd_node_scraper-0.0.1/nodescraper/taskresulthooks/filesystemloghook.py +88 -0
  220. amd_node_scraper-0.0.1/nodescraper/typeutils.py +171 -0
  221. amd_node_scraper-0.0.1/nodescraper/utils.py +412 -0
  222. amd_node_scraper-0.0.1/pyproject.toml +65 -0
  223. amd_node_scraper-0.0.1/pytest.ini +2 -0
  224. amd_node_scraper-0.0.1/setup.cfg +4 -0
  225. amd_node_scraper-0.0.1/setup.py +30 -0
  226. amd_node_scraper-0.0.1/test/functional/__init__.py +26 -0
  227. amd_node_scraper-0.0.1/test/functional/conftest.py +57 -0
  228. amd_node_scraper-0.0.1/test/functional/fixtures/bios_plugin_config.json +14 -0
  229. amd_node_scraper-0.0.1/test/functional/fixtures/cmdline_plugin_config.json +14 -0
  230. amd_node_scraper-0.0.1/test/functional/fixtures/dimm_plugin_config.json +9 -0
  231. amd_node_scraper-0.0.1/test/functional/fixtures/dkms_plugin_config.json +15 -0
  232. amd_node_scraper-0.0.1/test/functional/fixtures/dmesg_plugin_config.json +14 -0
  233. amd_node_scraper-0.0.1/test/functional/fixtures/dmesg_sample.log +43 -0
  234. amd_node_scraper-0.0.1/test/functional/fixtures/fabrics_plugin_config.json +11 -0
  235. amd_node_scraper-0.0.1/test/functional/fixtures/journal_plugin_config.json +13 -0
  236. amd_node_scraper-0.0.1/test/functional/fixtures/kernel_module_plugin_config.json +14 -0
  237. amd_node_scraper-0.0.1/test/functional/fixtures/kernel_plugin_config.json +14 -0
  238. amd_node_scraper-0.0.1/test/functional/fixtures/memory_plugin_config.json +14 -0
  239. amd_node_scraper-0.0.1/test/functional/fixtures/network_plugin_config.json +11 -0
  240. amd_node_scraper-0.0.1/test/functional/fixtures/nvme_plugin_config.json +9 -0
  241. amd_node_scraper-0.0.1/test/functional/fixtures/os_plugin_config.json +14 -0
  242. amd_node_scraper-0.0.1/test/functional/fixtures/package_plugin_config.json +20 -0
  243. amd_node_scraper-0.0.1/test/functional/fixtures/pcie_plugin_advanced_config.json +28 -0
  244. amd_node_scraper-0.0.1/test/functional/fixtures/pcie_plugin_config.json +19 -0
  245. amd_node_scraper-0.0.1/test/functional/fixtures/process_plugin_config.json +14 -0
  246. amd_node_scraper-0.0.1/test/functional/fixtures/rocm_plugin_config.json +13 -0
  247. amd_node_scraper-0.0.1/test/functional/fixtures/storage_plugin_config.json +17 -0
  248. amd_node_scraper-0.0.1/test/functional/fixtures/sysctl_plugin_config.json +23 -0
  249. amd_node_scraper-0.0.1/test/functional/fixtures/syslog_plugin_config.json +9 -0
  250. amd_node_scraper-0.0.1/test/functional/fixtures/uptime_plugin_config.json +9 -0
  251. amd_node_scraper-0.0.1/test/functional/test_cli_describe.py +55 -0
  252. amd_node_scraper-0.0.1/test/functional/test_cli_help.py +83 -0
  253. amd_node_scraper-0.0.1/test/functional/test_fabrics_plugin.py +106 -0
  254. amd_node_scraper-0.0.1/test/functional/test_network_plugin.py +106 -0
  255. amd_node_scraper-0.0.1/test/functional/test_pcie_plugin.py +148 -0
  256. amd_node_scraper-0.0.1/test/functional/test_plugin_configs.py +336 -0
  257. amd_node_scraper-0.0.1/test/functional/test_plugin_registry.py +75 -0
  258. amd_node_scraper-0.0.1/test/functional/test_reference_config_workflow.py +345 -0
  259. amd_node_scraper-0.0.1/test/functional/test_run_plugins.py +174 -0
  260. amd_node_scraper-0.0.1/test/unit/conftest.py +123 -0
  261. amd_node_scraper-0.0.1/test/unit/framework/common/shared_utils.py +96 -0
  262. amd_node_scraper-0.0.1/test/unit/framework/fixtures/example.json +3 -0
  263. amd_node_scraper-0.0.1/test/unit/framework/fixtures/example_config.json +9 -0
  264. amd_node_scraper-0.0.1/test/unit/framework/fixtures/invalid.json +1 -0
  265. amd_node_scraper-0.0.1/test/unit/framework/fixtures/log_dir/collector/biosdatamodel.json +3 -0
  266. amd_node_scraper-0.0.1/test/unit/framework/fixtures/log_dir/collector/result.json +8 -0
  267. amd_node_scraper-0.0.1/test/unit/framework/test_analyzerargs.py +51 -0
  268. amd_node_scraper-0.0.1/test/unit/framework/test_cli.py +152 -0
  269. amd_node_scraper-0.0.1/test/unit/framework/test_cli_helper.py +261 -0
  270. amd_node_scraper-0.0.1/test/unit/framework/test_config_builder.py +41 -0
  271. amd_node_scraper-0.0.1/test/unit/framework/test_config_registry.py +49 -0
  272. amd_node_scraper-0.0.1/test/unit/framework/test_dataanalyzer.py +91 -0
  273. amd_node_scraper-0.0.1/test/unit/framework/test_datacollector.py +158 -0
  274. amd_node_scraper-0.0.1/test/unit/framework/test_dataplugin.py +405 -0
  275. amd_node_scraper-0.0.1/test/unit/framework/test_file_artifact.py +74 -0
  276. amd_node_scraper-0.0.1/test/unit/framework/test_plugin_executor.py +165 -0
  277. amd_node_scraper-0.0.1/test/unit/framework/test_type_utils.py +95 -0
  278. amd_node_scraper-0.0.1/test/unit/plugin/fixtures/package_commands.json +21 -0
  279. amd_node_scraper-0.0.1/test/unit/plugin/test_amdsmi_analyzer.py +803 -0
  280. amd_node_scraper-0.0.1/test/unit/plugin/test_amdsmi_collector.py +485 -0
  281. amd_node_scraper-0.0.1/test/unit/plugin/test_analyzer_args_build_from_model.py +220 -0
  282. amd_node_scraper-0.0.1/test/unit/plugin/test_bios_analyzer.py +115 -0
  283. amd_node_scraper-0.0.1/test/unit/plugin/test_bios_collector.py +96 -0
  284. amd_node_scraper-0.0.1/test/unit/plugin/test_cmdline_analyzer.py +107 -0
  285. amd_node_scraper-0.0.1/test/unit/plugin/test_cmdline_collector.py +86 -0
  286. amd_node_scraper-0.0.1/test/unit/plugin/test_device_enumeration_analyzer.py +127 -0
  287. amd_node_scraper-0.0.1/test/unit/plugin/test_device_enumeration_collector.py +164 -0
  288. amd_node_scraper-0.0.1/test/unit/plugin/test_dimms_collector.py +112 -0
  289. amd_node_scraper-0.0.1/test/unit/plugin/test_dkms_analyzer.py +171 -0
  290. amd_node_scraper-0.0.1/test/unit/plugin/test_dkms_collector.py +83 -0
  291. amd_node_scraper-0.0.1/test/unit/plugin/test_dmesg_analyzer.py +281 -0
  292. amd_node_scraper-0.0.1/test/unit/plugin/test_dmesg_collector.py +303 -0
  293. amd_node_scraper-0.0.1/test/unit/plugin/test_fabrics_collector.py +406 -0
  294. amd_node_scraper-0.0.1/test/unit/plugin/test_journal_collector.py +71 -0
  295. amd_node_scraper-0.0.1/test/unit/plugin/test_kernel_analyzer.py +154 -0
  296. amd_node_scraper-0.0.1/test/unit/plugin/test_kernel_collector.py +93 -0
  297. amd_node_scraper-0.0.1/test/unit/plugin/test_kernel_module_analyzer.py +145 -0
  298. amd_node_scraper-0.0.1/test/unit/plugin/test_kernel_module_collector.py +453 -0
  299. amd_node_scraper-0.0.1/test/unit/plugin/test_memory_analyzer.py +67 -0
  300. amd_node_scraper-0.0.1/test/unit/plugin/test_memory_collector.py +375 -0
  301. amd_node_scraper-0.0.1/test/unit/plugin/test_network_collector.py +1861 -0
  302. amd_node_scraper-0.0.1/test/unit/plugin/test_nvme_collector.py +118 -0
  303. amd_node_scraper-0.0.1/test/unit/plugin/test_os_analyzer.py +163 -0
  304. amd_node_scraper-0.0.1/test/unit/plugin/test_os_collector.py +130 -0
  305. amd_node_scraper-0.0.1/test/unit/plugin/test_package_analyzer.py +110 -0
  306. amd_node_scraper-0.0.1/test/unit/plugin/test_package_collector.py +333 -0
  307. amd_node_scraper-0.0.1/test/unit/plugin/test_process_analyzer.py +100 -0
  308. amd_node_scraper-0.0.1/test/unit/plugin/test_process_collector.py +100 -0
  309. amd_node_scraper-0.0.1/test/unit/plugin/test_rocm_analyzer.py +111 -0
  310. amd_node_scraper-0.0.1/test/unit/plugin/test_rocm_collector.py +288 -0
  311. amd_node_scraper-0.0.1/test/unit/plugin/test_storage_analyzer.py +168 -0
  312. amd_node_scraper-0.0.1/test/unit/plugin/test_storage_collector.py +123 -0
  313. amd_node_scraper-0.0.1/test/unit/plugin/test_sysctl_analyzer.py +68 -0
  314. amd_node_scraper-0.0.1/test/unit/plugin/test_sysctl_collector.py +78 -0
  315. amd_node_scraper-0.0.1/test/unit/plugin/test_syslog_collector.py +161 -0
  316. 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
+ ```