amd-node-scraper 0.0.1__py3-none-any.whl

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 (197) hide show
  1. amd_node_scraper-0.0.1.dist-info/LICENSE +21 -0
  2. amd_node_scraper-0.0.1.dist-info/METADATA +424 -0
  3. amd_node_scraper-0.0.1.dist-info/RECORD +197 -0
  4. amd_node_scraper-0.0.1.dist-info/WHEEL +5 -0
  5. amd_node_scraper-0.0.1.dist-info/entry_points.txt +2 -0
  6. amd_node_scraper-0.0.1.dist-info/top_level.txt +1 -0
  7. nodescraper/__init__.py +32 -0
  8. nodescraper/base/__init__.py +34 -0
  9. nodescraper/base/inbandcollectortask.py +118 -0
  10. nodescraper/base/inbanddataplugin.py +39 -0
  11. nodescraper/base/regexanalyzer.py +120 -0
  12. nodescraper/cli/__init__.py +29 -0
  13. nodescraper/cli/cli.py +511 -0
  14. nodescraper/cli/constants.py +27 -0
  15. nodescraper/cli/dynamicparserbuilder.py +171 -0
  16. nodescraper/cli/helper.py +517 -0
  17. nodescraper/cli/inputargtypes.py +129 -0
  18. nodescraper/configbuilder.py +123 -0
  19. nodescraper/configregistry.py +66 -0
  20. nodescraper/configs/node_status.json +19 -0
  21. nodescraper/connection/__init__.py +25 -0
  22. nodescraper/connection/inband/__init__.py +46 -0
  23. nodescraper/connection/inband/inband.py +171 -0
  24. nodescraper/connection/inband/inbandlocal.py +93 -0
  25. nodescraper/connection/inband/inbandmanager.py +151 -0
  26. nodescraper/connection/inband/inbandremote.py +173 -0
  27. nodescraper/connection/inband/sshparams.py +43 -0
  28. nodescraper/constants.py +26 -0
  29. nodescraper/enums/__init__.py +40 -0
  30. nodescraper/enums/eventcategory.py +89 -0
  31. nodescraper/enums/eventpriority.py +42 -0
  32. nodescraper/enums/executionstatus.py +44 -0
  33. nodescraper/enums/osfamily.py +34 -0
  34. nodescraper/enums/systeminteraction.py +41 -0
  35. nodescraper/enums/systemlocation.py +33 -0
  36. nodescraper/generictypes.py +36 -0
  37. nodescraper/interfaces/__init__.py +44 -0
  38. nodescraper/interfaces/connectionmanager.py +143 -0
  39. nodescraper/interfaces/dataanalyzertask.py +138 -0
  40. nodescraper/interfaces/datacollectortask.py +185 -0
  41. nodescraper/interfaces/dataplugin.py +356 -0
  42. nodescraper/interfaces/plugin.py +127 -0
  43. nodescraper/interfaces/resultcollator.py +56 -0
  44. nodescraper/interfaces/task.py +164 -0
  45. nodescraper/interfaces/taskresulthook.py +39 -0
  46. nodescraper/models/__init__.py +48 -0
  47. nodescraper/models/analyzerargs.py +93 -0
  48. nodescraper/models/collectorargs.py +30 -0
  49. nodescraper/models/connectionconfig.py +34 -0
  50. nodescraper/models/datamodel.py +171 -0
  51. nodescraper/models/datapluginresult.py +39 -0
  52. nodescraper/models/event.py +158 -0
  53. nodescraper/models/pluginconfig.py +38 -0
  54. nodescraper/models/pluginresult.py +39 -0
  55. nodescraper/models/systeminfo.py +44 -0
  56. nodescraper/models/taskresult.py +185 -0
  57. nodescraper/models/timerangeargs.py +38 -0
  58. nodescraper/pluginexecutor.py +274 -0
  59. nodescraper/pluginregistry.py +152 -0
  60. nodescraper/plugins/__init__.py +25 -0
  61. nodescraper/plugins/inband/__init__.py +25 -0
  62. nodescraper/plugins/inband/amdsmi/__init__.py +28 -0
  63. nodescraper/plugins/inband/amdsmi/amdsmi_analyzer.py +821 -0
  64. nodescraper/plugins/inband/amdsmi/amdsmi_collector.py +1313 -0
  65. nodescraper/plugins/inband/amdsmi/amdsmi_plugin.py +43 -0
  66. nodescraper/plugins/inband/amdsmi/amdsmidata.py +1002 -0
  67. nodescraper/plugins/inband/amdsmi/analyzer_args.py +50 -0
  68. nodescraper/plugins/inband/amdsmi/cper.py +65 -0
  69. nodescraper/plugins/inband/bios/__init__.py +29 -0
  70. nodescraper/plugins/inband/bios/analyzer_args.py +64 -0
  71. nodescraper/plugins/inband/bios/bios_analyzer.py +93 -0
  72. nodescraper/plugins/inband/bios/bios_collector.py +93 -0
  73. nodescraper/plugins/inband/bios/bios_plugin.py +43 -0
  74. nodescraper/plugins/inband/bios/biosdata.py +30 -0
  75. nodescraper/plugins/inband/cmdline/__init__.py +25 -0
  76. nodescraper/plugins/inband/cmdline/analyzer_args.py +80 -0
  77. nodescraper/plugins/inband/cmdline/cmdline_analyzer.py +113 -0
  78. nodescraper/plugins/inband/cmdline/cmdline_collector.py +77 -0
  79. nodescraper/plugins/inband/cmdline/cmdline_plugin.py +43 -0
  80. nodescraper/plugins/inband/cmdline/cmdlinedata.py +30 -0
  81. nodescraper/plugins/inband/device_enumeration/__init__.py +29 -0
  82. nodescraper/plugins/inband/device_enumeration/analyzer_args.py +73 -0
  83. nodescraper/plugins/inband/device_enumeration/device_enumeration_analyzer.py +81 -0
  84. nodescraper/plugins/inband/device_enumeration/device_enumeration_collector.py +176 -0
  85. nodescraper/plugins/inband/device_enumeration/device_enumeration_plugin.py +45 -0
  86. nodescraper/plugins/inband/device_enumeration/deviceenumdata.py +36 -0
  87. nodescraper/plugins/inband/dimm/__init__.py +25 -0
  88. nodescraper/plugins/inband/dimm/collector_args.py +31 -0
  89. nodescraper/plugins/inband/dimm/dimm_collector.py +151 -0
  90. nodescraper/plugins/inband/dimm/dimm_plugin.py +40 -0
  91. nodescraper/plugins/inband/dimm/dimmdata.py +30 -0
  92. nodescraper/plugins/inband/dkms/__init__.py +25 -0
  93. nodescraper/plugins/inband/dkms/analyzer_args.py +85 -0
  94. nodescraper/plugins/inband/dkms/dkms_analyzer.py +106 -0
  95. nodescraper/plugins/inband/dkms/dkms_collector.py +76 -0
  96. nodescraper/plugins/inband/dkms/dkms_plugin.py +43 -0
  97. nodescraper/plugins/inband/dkms/dkmsdata.py +33 -0
  98. nodescraper/plugins/inband/dmesg/__init__.py +28 -0
  99. nodescraper/plugins/inband/dmesg/analyzer_args.py +33 -0
  100. nodescraper/plugins/inband/dmesg/collector_args.py +39 -0
  101. nodescraper/plugins/inband/dmesg/dmesg_analyzer.py +503 -0
  102. nodescraper/plugins/inband/dmesg/dmesg_collector.py +164 -0
  103. nodescraper/plugins/inband/dmesg/dmesg_plugin.py +44 -0
  104. nodescraper/plugins/inband/dmesg/dmesgdata.py +116 -0
  105. nodescraper/plugins/inband/fabrics/__init__.py +28 -0
  106. nodescraper/plugins/inband/fabrics/fabrics_collector.py +726 -0
  107. nodescraper/plugins/inband/fabrics/fabrics_plugin.py +37 -0
  108. nodescraper/plugins/inband/fabrics/fabricsdata.py +140 -0
  109. nodescraper/plugins/inband/journal/__init__.py +28 -0
  110. nodescraper/plugins/inband/journal/collector_args.py +33 -0
  111. nodescraper/plugins/inband/journal/journal_collector.py +107 -0
  112. nodescraper/plugins/inband/journal/journal_plugin.py +40 -0
  113. nodescraper/plugins/inband/journal/journaldata.py +44 -0
  114. nodescraper/plugins/inband/kernel/__init__.py +25 -0
  115. nodescraper/plugins/inband/kernel/analyzer_args.py +64 -0
  116. nodescraper/plugins/inband/kernel/kernel_analyzer.py +91 -0
  117. nodescraper/plugins/inband/kernel/kernel_collector.py +129 -0
  118. nodescraper/plugins/inband/kernel/kernel_plugin.py +43 -0
  119. nodescraper/plugins/inband/kernel/kerneldata.py +32 -0
  120. nodescraper/plugins/inband/kernel_module/__init__.py +25 -0
  121. nodescraper/plugins/inband/kernel_module/analyzer_args.py +59 -0
  122. nodescraper/plugins/inband/kernel_module/kernel_module_analyzer.py +211 -0
  123. nodescraper/plugins/inband/kernel_module/kernel_module_collector.py +264 -0
  124. nodescraper/plugins/inband/kernel_module/kernel_module_data.py +60 -0
  125. nodescraper/plugins/inband/kernel_module/kernel_module_plugin.py +43 -0
  126. nodescraper/plugins/inband/memory/__init__.py +25 -0
  127. nodescraper/plugins/inband/memory/analyzer_args.py +45 -0
  128. nodescraper/plugins/inband/memory/memory_analyzer.py +98 -0
  129. nodescraper/plugins/inband/memory/memory_collector.py +330 -0
  130. nodescraper/plugins/inband/memory/memory_plugin.py +43 -0
  131. nodescraper/plugins/inband/memory/memorydata.py +90 -0
  132. nodescraper/plugins/inband/network/__init__.py +28 -0
  133. nodescraper/plugins/inband/network/network_collector.py +1828 -0
  134. nodescraper/plugins/inband/network/network_plugin.py +37 -0
  135. nodescraper/plugins/inband/network/networkdata.py +319 -0
  136. nodescraper/plugins/inband/nvme/__init__.py +28 -0
  137. nodescraper/plugins/inband/nvme/nvme_collector.py +167 -0
  138. nodescraper/plugins/inband/nvme/nvme_plugin.py +37 -0
  139. nodescraper/plugins/inband/nvme/nvmedata.py +45 -0
  140. nodescraper/plugins/inband/os/__init__.py +25 -0
  141. nodescraper/plugins/inband/os/analyzer_args.py +64 -0
  142. nodescraper/plugins/inband/os/os_analyzer.py +73 -0
  143. nodescraper/plugins/inband/os/os_collector.py +131 -0
  144. nodescraper/plugins/inband/os/os_plugin.py +43 -0
  145. nodescraper/plugins/inband/os/osdata.py +31 -0
  146. nodescraper/plugins/inband/package/__init__.py +25 -0
  147. nodescraper/plugins/inband/package/analyzer_args.py +48 -0
  148. nodescraper/plugins/inband/package/package_analyzer.py +253 -0
  149. nodescraper/plugins/inband/package/package_collector.py +273 -0
  150. nodescraper/plugins/inband/package/package_plugin.py +43 -0
  151. nodescraper/plugins/inband/package/packagedata.py +41 -0
  152. nodescraper/plugins/inband/pcie/__init__.py +29 -0
  153. nodescraper/plugins/inband/pcie/analyzer_args.py +63 -0
  154. nodescraper/plugins/inband/pcie/pcie_analyzer.py +1081 -0
  155. nodescraper/plugins/inband/pcie/pcie_collector.py +690 -0
  156. nodescraper/plugins/inband/pcie/pcie_data.py +2017 -0
  157. nodescraper/plugins/inband/pcie/pcie_plugin.py +43 -0
  158. nodescraper/plugins/inband/process/__init__.py +25 -0
  159. nodescraper/plugins/inband/process/analyzer_args.py +45 -0
  160. nodescraper/plugins/inband/process/collector_args.py +31 -0
  161. nodescraper/plugins/inband/process/process_analyzer.py +91 -0
  162. nodescraper/plugins/inband/process/process_collector.py +115 -0
  163. nodescraper/plugins/inband/process/process_plugin.py +46 -0
  164. nodescraper/plugins/inband/process/processdata.py +34 -0
  165. nodescraper/plugins/inband/rocm/__init__.py +25 -0
  166. nodescraper/plugins/inband/rocm/analyzer_args.py +66 -0
  167. nodescraper/plugins/inband/rocm/rocm_analyzer.py +100 -0
  168. nodescraper/plugins/inband/rocm/rocm_collector.py +205 -0
  169. nodescraper/plugins/inband/rocm/rocm_plugin.py +43 -0
  170. nodescraper/plugins/inband/rocm/rocmdata.py +62 -0
  171. nodescraper/plugins/inband/storage/__init__.py +25 -0
  172. nodescraper/plugins/inband/storage/analyzer_args.py +38 -0
  173. nodescraper/plugins/inband/storage/collector_args.py +31 -0
  174. nodescraper/plugins/inband/storage/storage_analyzer.py +152 -0
  175. nodescraper/plugins/inband/storage/storage_collector.py +110 -0
  176. nodescraper/plugins/inband/storage/storage_plugin.py +44 -0
  177. nodescraper/plugins/inband/storage/storagedata.py +70 -0
  178. nodescraper/plugins/inband/sysctl/__init__.py +29 -0
  179. nodescraper/plugins/inband/sysctl/analyzer_args.py +67 -0
  180. nodescraper/plugins/inband/sysctl/sysctl_analyzer.py +81 -0
  181. nodescraper/plugins/inband/sysctl/sysctl_collector.py +101 -0
  182. nodescraper/plugins/inband/sysctl/sysctl_plugin.py +43 -0
  183. nodescraper/plugins/inband/sysctl/sysctldata.py +42 -0
  184. nodescraper/plugins/inband/syslog/__init__.py +28 -0
  185. nodescraper/plugins/inband/syslog/syslog_collector.py +121 -0
  186. nodescraper/plugins/inband/syslog/syslog_plugin.py +37 -0
  187. nodescraper/plugins/inband/syslog/syslogdata.py +46 -0
  188. nodescraper/plugins/inband/uptime/__init__.py +25 -0
  189. nodescraper/plugins/inband/uptime/uptime_collector.py +88 -0
  190. nodescraper/plugins/inband/uptime/uptime_plugin.py +37 -0
  191. nodescraper/plugins/inband/uptime/uptimedata.py +31 -0
  192. nodescraper/resultcollators/__init__.py +25 -0
  193. nodescraper/resultcollators/tablesummary.py +159 -0
  194. nodescraper/taskresulthooks/__init__.py +28 -0
  195. nodescraper/taskresulthooks/filesystemloghook.py +88 -0
  196. nodescraper/typeutils.py +171 -0
  197. nodescraper/utils.py +412 -0
@@ -0,0 +1,21 @@
1
+ MIT License
2
+
3
+ Copyright (c) 2025 Advanced Micro Devices, Inc.
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ of this software and associated documentation files (the "Software"), to deal
7
+ in the Software without restriction, including without limitation the rights
8
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ copies of the Software, and to permit persons to whom the Software is
10
+ furnished to do so, subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in all
13
+ copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
+ SOFTWARE.
@@ -0,0 +1,424 @@
1
+ Metadata-Version: 2.1
2
+ Name: amd-node-scraper
3
+ Version: 0.0.1
4
+ Summary: A framework for automated error detection and data collection
5
+ Project-URL: homepage, https://github.com/amd/node-scraper
6
+ Project-URL: documentation, https://github.com/amd/node-scraper
7
+ Project-URL: repository, https://github.com/amd/node-scraper
8
+ Classifier: Topic :: Software Development
9
+ Requires-Python: >=3.9
10
+ Description-Content-Type: text/markdown
11
+ License-File: LICENSE
12
+ Requires-Dist: pydantic >=2.8.2
13
+ Requires-Dist: paramiko <4.0.0,>=3.2.0
14
+ Requires-Dist: requests
15
+ Requires-Dist: pytz
16
+ Requires-Dist: urllib3 <2.0.0,>=1.26.15
17
+ Provides-Extra: dev
18
+ Requires-Dist: build ; extra == 'dev'
19
+ Requires-Dist: black ; extra == 'dev'
20
+ Requires-Dist: pylint ; extra == 'dev'
21
+ Requires-Dist: coverage ; extra == 'dev'
22
+ Requires-Dist: twine ; extra == 'dev'
23
+ Requires-Dist: ruff ; extra == 'dev'
24
+ Requires-Dist: pre-commit ; extra == 'dev'
25
+ Requires-Dist: pytest ; extra == 'dev'
26
+ Requires-Dist: pytest-cov ; extra == 'dev'
27
+ Requires-Dist: mypy ; extra == 'dev'
28
+
29
+ # Node Scraper
30
+ Node Scraper is a tool which performs automated data collection and analysis for the purposes of
31
+ system debug.
32
+
33
+ ## Table of Contents
34
+ - [Installation](#installation)
35
+ - [Install From Source](#install-from-source)
36
+ - [CLI Usage](#cli-usage)
37
+ - [Execution Methods](#execution-methods)
38
+ - [Example: Remote Execution](#example-remote-execution)
39
+ - [Example: connection_config.json](#example-connection_configjson)
40
+ - [Subcommands](#subcommands)
41
+ - ['describe' subcommand](#describe-subcommand)
42
+ - ['run-plugins' sub command](#run-plugins-sub-command)
43
+ - ['gen-plugin-config' sub command](#gen-plugin-config-sub-command)
44
+ - ['summary' sub command](#summary-sub-command)
45
+ - [Configs](#configs)
46
+ - [Global args](#global-args)
47
+ - [Plugin config: `--plugin-configs` command](#plugin-config---plugin-configs-command)
48
+ - [Reference config: `gen-reference-config` command](#reference-config-gen-reference-config-command)
49
+ - **Extending Node Scraper (integration & external plugins)** → See [EXTENDING.md](EXTENDING.md)
50
+ - **Full view of the plugins with the associated collectors & analyzers as well as the commands
51
+ invoked by collectors** -> See [docs/PLUGIN_DOC.md](docs/PLUGIN_DOC.md)
52
+
53
+ ## Installation
54
+ ### Install From Source
55
+ Node Scraper requires Python 3.9+ for installation. After cloning this repository,
56
+ call dev-setup.sh script with 'source'. This script creates an editable install of Node Scraper in
57
+ a python virtual environment and also configures the pre-commit hooks for the project.
58
+
59
+ ```sh
60
+ source dev-setup.sh
61
+ ```
62
+
63
+ Alternatively, follow these manual steps:
64
+
65
+ ### 1. Virtual Environment (Optional)
66
+ ```sh
67
+ python3 -m venv venv
68
+ source venv/bin/activate
69
+ ```
70
+ On Debian/Ubuntu, you may need: `sudo apt install python3-venv`
71
+
72
+ ### 2. Install from Source (Required)
73
+ ```sh
74
+ python3 -m pip install --editable .[dev] --upgrade
75
+ ```
76
+ This installs Node Scraper in editable mode with development dependencies. To verify: `node-scraper --help`
77
+
78
+ ### 3. Git Hooks (Optional)
79
+ ```sh
80
+ pre-commit install
81
+ ```
82
+ Sets up pre-commit hooks for code quality checks. On Debian/Ubuntu, you may need: `sudo apt install pre-commit`
83
+
84
+ ## CLI Usage
85
+ The Node Scraper CLI can be used to run Node Scraper plugins on a target system. The following CLI
86
+ options are available:
87
+
88
+ ```sh
89
+ usage: node-scraper [-h] [--sys-name STRING] [--sys-location {LOCAL,REMOTE}] [--sys-interaction-level {PASSIVE,INTERACTIVE,DISRUPTIVE}] [--sys-sku STRING]
90
+ [--sys-platform STRING] [--plugin-configs [STRING ...]] [--system-config STRING] [--connection-config STRING] [--log-path STRING]
91
+ [--log-level {CRITICAL,FATAL,ERROR,WARN,WARNING,INFO,DEBUG,NOTSET}] [--gen-reference-config] [--skip-sudo]
92
+ {summary,run-plugins,describe,gen-plugin-config} ...
93
+
94
+ node scraper CLI
95
+
96
+ positional arguments:
97
+ {summary,run-plugins,describe,gen-plugin-config}
98
+ Subcommands
99
+ summary Generates summary csv file
100
+ run-plugins Run a series of plugins
101
+ describe Display details on a built-in config or plugin
102
+ gen-plugin-config Generate a config for a plugin or list of plugins
103
+
104
+ options:
105
+ -h, --help show this help message and exit
106
+ --sys-name STRING System name (default: <my_system_name>)
107
+ --sys-location {LOCAL,REMOTE}
108
+ Location of target system (default: LOCAL)
109
+ --sys-interaction-level {PASSIVE,INTERACTIVE,DISRUPTIVE}
110
+ Specify system interaction level, used to determine the type of actions that plugins can perform (default: INTERACTIVE)
111
+ --sys-sku STRING Manually specify SKU of system (default: None)
112
+ --sys-platform STRING
113
+ Specify system platform (default: None)
114
+ --plugin-configs [STRING ...]
115
+ built-in config names or paths to plugin config JSONs. Available built-in configs: NodeStatus (default: None)
116
+ --system-config STRING
117
+ Path to system config json (default: None)
118
+ --connection-config STRING
119
+ Path to connection config json (default: None)
120
+ --log-path STRING Specifies local path for node scraper logs, use 'None' to disable logging (default: .)
121
+ --log-level {CRITICAL,FATAL,ERROR,WARN,WARNING,INFO,DEBUG,NOTSET}
122
+ Change python log level (default: INFO)
123
+ --gen-reference-config
124
+ Generate reference config from system. Writes to ./reference_config.json. (default: False)
125
+ --skip-sudo Skip plugins that require sudo permissions (default: False)
126
+
127
+ ```
128
+
129
+ ### Execution Methods
130
+
131
+ Node Scraper can operate in two modes: LOCAL and REMOTE, determined by the `--sys-location` argument.
132
+
133
+ - **LOCAL** (default): Node Scraper is installed and run directly on the target system. All data collection and plugin execution occur locally.
134
+ - **REMOTE**: Node Scraper runs on your local machine but targets a remote system over SSH. In this mode, Node Scraper does not need to be installed on the remote system; all commands are executed remotely via SSH.
135
+
136
+ To use remote execution, specify `--sys-location REMOTE` and provide a connection configuration file with `--connection-config`.
137
+
138
+ #### Example: Remote Execution
139
+
140
+ ```sh
141
+ node-scraper --sys-name <remote_host> --sys-location REMOTE --connection-config ./connection_config.json run-plugins DmesgPlugin
142
+ ```
143
+
144
+ ##### Example: connection_config.json
145
+
146
+ ```json
147
+ {
148
+ "InBandConnectionManager": {
149
+ "hostname": "remote_host.example.com",
150
+ "port": 22,
151
+ "username": "myuser",
152
+ "password": "mypassword",
153
+ "key_filename": "/path/to/private/key"
154
+ }
155
+ }
156
+ ```
157
+
158
+ **Notes:**
159
+ - If using SSH keys, specify `key_filename` instead of `password`.
160
+ - 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.
161
+
162
+ ### Subcommands
163
+
164
+ Plugins to run can be specified in two ways, using a plugin JSON config file or using the
165
+ 'run-plugins' sub command. These two options are not mutually exclusive and can be used together.
166
+
167
+ #### **'describe' subcommand**
168
+
169
+ You can use the `describe` subcommand to display details about built-in configs or plugins.
170
+ List all built-in configs:
171
+ ```sh
172
+ node-scraper describe config
173
+ ```
174
+
175
+ Show details for a specific built-in config
176
+ ```sh
177
+ node-scraper describe config <config-name>
178
+ ```
179
+
180
+ List all available plugins**
181
+ ```sh
182
+ node-scraper describe plugin
183
+ ```
184
+
185
+ Show details for a specific plugin
186
+ ```sh
187
+ node-scraper describe plugin <plugin-name>
188
+ ```
189
+
190
+ #### **'run-plugins' sub command**
191
+ The plugins to run and their associated arguments can also be specified directly on the CLI using
192
+ the 'run-plugins' sub-command. Using this sub-command you can specify a plugin name followed by
193
+ the arguments for that particular plugin. Multiple plugins can be specified at once.
194
+
195
+ You can view the available arguments for a particular plugin by running
196
+ `node-scraper run-plugins <plugin-name> -h`:
197
+ ```sh
198
+ usage: node-scraper run-plugins BiosPlugin [-h] [--collection {True,False}] [--analysis {True,False}] [--system-interaction-level STRING]
199
+ [--data STRING] [--exp-bios-version [STRING ...]] [--regex-match {True,False}]
200
+
201
+ options:
202
+ -h, --help show this help message and exit
203
+ --collection {True,False}
204
+ --analysis {True,False}
205
+ --system-interaction-level STRING
206
+ --data STRING
207
+ --exp-bios-version [STRING ...]
208
+ --regex-match {True,False}
209
+
210
+ ```
211
+
212
+ Examples
213
+
214
+ Run a single plugin
215
+ ```sh
216
+ node-scraper run-plugins BiosPlugin --exp-bios-version TestBios123
217
+ ```
218
+
219
+ Run multiple plugins
220
+ ```sh
221
+ node-scraper run-plugins BiosPlugin --exp-bios-version TestBios123 RocmPlugin --exp-rocm TestRocm123
222
+ ```
223
+
224
+ Run plugins without specifying args (plugin defaults will be used)
225
+
226
+ ```sh
227
+ node-scraper run-plugins BiosPlugin RocmPlugin
228
+ ```
229
+
230
+ Use plugin configs and 'run-plugins'
231
+
232
+ ```sh
233
+ node-scraper run-plugins BiosPlugin
234
+ ```
235
+
236
+ #### **'gen-plugin-config' sub command**
237
+ The 'gen-plugin-config' sub command can be used to generate a plugin config JSON file for a plugin
238
+ or list of plugins that can then be customized. Plugin arguments which have default values will be
239
+ prepopulated in the JSON file, arguments without default values will have a value of 'null'.
240
+
241
+ Examples
242
+
243
+ Generate a config for the DmesgPlugin:
244
+ ```sh
245
+ node-scraper gen-plugin-config --plugins DmesgPlugin
246
+ ```
247
+
248
+ This would produce the following config:
249
+
250
+ ```json
251
+ {
252
+ "global_args": {},
253
+ "plugins": {
254
+ "DmesgPlugin": {
255
+ "collection": true,
256
+ "analysis": true,
257
+ "system_interaction_level": "INTERACTIVE",
258
+ "data": null,
259
+ "analysis_args": {
260
+ "analysis_range_start": null,
261
+ "analysis_range_end": null,
262
+ "check_unknown_dmesg_errors": true,
263
+ "exclude_category": null
264
+ }
265
+ }
266
+ },
267
+ "result_collators": {}
268
+ }
269
+ ```
270
+
271
+ #### **'summary' sub command**
272
+ The 'summary' subcommand can be used to combine results from multiple runs of node-scraper to a
273
+ single summary.csv file. Sample run:
274
+ ```sh
275
+ node-scraper summary --summary_path /<path_to_node-scraper_logs>
276
+ ```
277
+ This will generate a new file '/<path_to_node-scraper_logs>/summary.csv' file. This file will
278
+ contain the results from all 'nodescraper.csv' files from '/<path_to_node-scarper_logs>'.
279
+
280
+ ### Configs
281
+ A plugin JSON config should follow the structure of the plugin config model defined here.
282
+ The globals field is a dictionary of global key-value pairs; values in globals will be passed to
283
+ any plugin that supports the corresponding key. The plugins field should be a dictionary mapping
284
+ plugin names to sub-dictionaries of plugin arguments. Lastly, the result_collators attribute is
285
+ used to define result collator classes that will be run on the plugin results. By default, the CLI
286
+ adds the TableSummary result collator, which prints a summary of each plugin’s results in a
287
+ tabular format to the console.
288
+
289
+ ```json
290
+ {
291
+ "globals_args": {},
292
+ "plugins": {
293
+ "BiosPlugin": {
294
+ "analysis_args": {
295
+ "exp_bios_version": "TestBios123"
296
+ }
297
+ },
298
+ "RocmPlugin": {
299
+ "analysis_args": {
300
+ "exp_rocm_version": "TestRocm123"
301
+ }
302
+ }
303
+ }
304
+ }
305
+ ```
306
+
307
+ #### Global args
308
+ Global args can be used to skip sudo plugins or enable/disble either collection or analysis.
309
+ Below is an example that skips sudo requiring plugins and disables analysis.
310
+
311
+ ```json
312
+ "global_args": {
313
+ "collection_args": {
314
+ "skip_sudo" : 1
315
+ },
316
+ "collection" : 1,
317
+ "analysis" : 0
318
+ },
319
+ ```
320
+
321
+ #### Plugin config: **'--plugin-configs' command**
322
+ A plugin config can be used to compare the system data against the config specifications:
323
+ ```sh
324
+ node-scraper --plugin-configs plugin_config.json
325
+ ```
326
+ Here is an example of a comprehensive plugin config that specifies analyzer args for each plugin:
327
+ ```json
328
+ {
329
+ "global_args": {},
330
+ "plugins": {
331
+ "BiosPlugin": {
332
+ "analysis_args": {
333
+ "exp_bios_version": "3.5"
334
+ }
335
+ },
336
+ "CmdlinePlugin": {
337
+ "analysis_args": {
338
+ "cmdline": "imgurl=test NODE=nodename selinux=0 serial console=ttyS1,115200 console=tty0",
339
+ "required_cmdline" : "selinux=0"
340
+ }
341
+ },
342
+ "DkmsPlugin": {
343
+ "analysis_args": {
344
+ "dkms_status": "amdgpu/6.11",
345
+ "dkms_version" : "dkms-3.1",
346
+ "regex_match" : true
347
+ }
348
+ },
349
+ "KernelPlugin": {
350
+ "analysis_args": {
351
+ "exp_kernel": "5.11-generic"
352
+ }
353
+ },
354
+ "OsPlugin": {
355
+ "analysis_args": {
356
+ "exp_os": "Ubuntu 22.04.2 LTS"
357
+ }
358
+ },
359
+ "PackagePlugin": {
360
+ "analysis_args": {
361
+ "exp_package_ver": {
362
+ "gcc": "11.4.0"
363
+ },
364
+ "regex_match": false
365
+ }
366
+ },
367
+ "RocmPlugin": {
368
+ "analysis_args": {
369
+ "exp_rocm": "6.5"
370
+ }
371
+ }
372
+ },
373
+ "result_collators": {},
374
+ "name": "plugin_config",
375
+ "desc": "My golden config"
376
+ }
377
+ ```
378
+
379
+ #### Reference config: **'gen-reference-config' command**
380
+ This command can be used to generate a reference config that is populated with current system
381
+ configurations. Plugins that use analyzer args (where applicable) will be populated with system
382
+ data.
383
+ Sample command:
384
+ ```sh
385
+ node-scraper --gen-reference-config run-plugins BiosPlugin OsPlugin
386
+
387
+ ```
388
+ This will generate the following config:
389
+ ```json
390
+ {
391
+ "global_args": {},
392
+ "plugins": {
393
+ "BiosPlugin": {
394
+ "analysis_args": {
395
+ "exp_bios_version": [
396
+ "M17"
397
+ ],
398
+ "regex_match": false
399
+ }
400
+ },
401
+ "OsPlugin": {
402
+ "analysis_args": {
403
+ "exp_os": [
404
+ "8.10"
405
+ ],
406
+ "exact_match": true
407
+ }
408
+ }
409
+ },
410
+ "result_collators": {}
411
+ ```
412
+ This config can later be used on a different platform for comparison, using the steps at #2:
413
+ ```sh
414
+ node-scraper --plugin-configs reference_config.json
415
+
416
+ ```
417
+
418
+ An alternate way to generate a reference config is by using log files from a previous run. The
419
+ example below uses log files from 'scraper_logs_<path>/':
420
+ ```sh
421
+ node-scraper gen-plugin-config --gen-reference-config-from-logs scraper_logs_<path>/ --output-path custom_output_dir
422
+ ```
423
+ This will generate a reference config that includes plugins with logged results in
424
+ 'scraper_log_<path>' and save the new config to 'custom_output_dir/reference_config.json'.
@@ -0,0 +1,197 @@
1
+ nodescraper/__init__.py,sha256=c4sVqqqyVpfvC-uqDdRyH987xaguC_jw-xgUeLDjDgc,1454
2
+ nodescraper/configbuilder.py,sha256=O8HTsA9oWpRbBxtc5Z7jb0J8ZupbUpwZ1Veh-PR0IEQ,4475
3
+ nodescraper/configregistry.py,sha256=LvcJ-cAZ6IRkEKbOwiF4GujOaTm5zxM1OnEtu1vxMEo,2679
4
+ nodescraper/constants.py,sha256=UCONR_zOjCmosscVFhqz9NcA2B2kDiKJNohV0HxK8Do,1318
5
+ nodescraper/generictypes.py,sha256=ty15J0KKJJiYRFQd0uus-TFDJq5vq8Cazsdv3u9Y4S4,1670
6
+ nodescraper/pluginexecutor.py,sha256=bXbCMzNNDkbAjo8ZNb6GmBizy0bc98yEtq3rRcFE2ag,11777
7
+ nodescraper/pluginregistry.py,sha256=ph0qELpR6ZD9JBLpq5O7a7sC8qu_GHvtCzWNNL3Q7PU,6055
8
+ nodescraper/typeutils.py,sha256=N02I3LfysabVUVv41TTsZSmGe23qwzBgaZqOUIvKo30,6016
9
+ nodescraper/utils.py,sha256=Dm4ofYEUfdDAyK-il8PPjqBIvgBNPdqTN_CLbqrkWv8,12321
10
+ nodescraper/base/__init__.py,sha256=tChQbBZBzZ4j-HWS892wZMjQaokpKqrp8kvV2dwJKBA,1515
11
+ nodescraper/base/inbandcollectortask.py,sha256=qyAmjZ_k8HI37wTTPryveWVXmJvJuWZQ6tF4LvVV2Ug,5102
12
+ nodescraper/base/inbanddataplugin.py,sha256=T7TNA8ZNTfR-F0NcInT9zBHSsXdbt4kMhXVtABU4MuM,1790
13
+ nodescraper/base/regexanalyzer.py,sha256=Ad-U4Bv5euLImmkQbcDzU4GZT27udol4NnU_dGw3FRU,4737
14
+ nodescraper/cli/__init__.py,sha256=2XTBuJcpiZon1LAF-Uu4u0TuUrWaMnRvEgfsW_goraE,1348
15
+ nodescraper/cli/cli.py,sha256=3UEorrP2XoXe1vOL5mB-hCh-L0s-o14ieNnt55ZZafA,17171
16
+ nodescraper/cli/constants.py,sha256=_Qax51Rx69029N1HJeNYjv6qB4TYKu_dZlsRbKGjzR4,1411
17
+ nodescraper/cli/dynamicparserbuilder.py,sha256=9c5RoRXgyDw5nUSaFUJa0gGj66rh7Y5OHBq2k7l5S5g,6589
18
+ nodescraper/cli/helper.py,sha256=jniDO7fgn7l_bytJ9Jshwhm6uk6Wr0FxqtOa59zh5Zc,18420
19
+ nodescraper/cli/inputargtypes.py,sha256=tYXWCX6m-yF0s0P4mrFKCsuC4spuKUDY45qiVctEQco,4142
20
+ nodescraper/configs/node_status.json,sha256=3cljzFcVxqs3cLXK_AL2aF7qJiNMvsKHhk51tddZiwM,458
21
+ nodescraper/connection/__init__.py,sha256=HBDZKCzcK27TiqerZunpdH6dVPFkUjeJjmUO68644YI,1287
22
+ nodescraper/connection/inband/__init__.py,sha256=_xDhLjsq4AGz3jZNMlFodXgZKRfBfdmBBICzBzF7qTI,1764
23
+ nodescraper/connection/inband/inband.py,sha256=YVXNfYK1ig50PD3j5FOF0vDaKCbcG5KzHmQVg4_cNIQ,5219
24
+ nodescraper/connection/inband/inbandlocal.py,sha256=6bUTUDIa-lvQvDHqvQih9q5Rb1dW5SZqD1Q71nplW0w,3272
25
+ nodescraper/connection/inband/inbandmanager.py,sha256=vY5F0p9NPbn7fo9kgvQzMtsxElrXk1TJbJWRRj-ekbE,5682
26
+ nodescraper/connection/inband/inbandremote.py,sha256=GJzrVqkt0_XTGmU5RfXvKPtQrhrUGclwSh6bykO3yss,6483
27
+ nodescraper/connection/inband/sshparams.py,sha256=nvB2tndOOugAsPUMee9vZUlVKHZY7r0z_cQiEF53CzI,1858
28
+ nodescraper/enums/__init__.py,sha256=ME1ZUkKO2evDRNXosP4JD3EW7teTM9ajfb67jVTGujs,1690
29
+ nodescraper/enums/eventcategory.py,sha256=Mz_tOCSUK2zjfxnOtScJ2aVqrPBjDPpj02wPriwh19s,3583
30
+ nodescraper/enums/eventpriority.py,sha256=dGAo-2bOWSYBAJtNOg4dMQJTqi3ezor2NGAOEQW1buA,1679
31
+ nodescraper/enums/executionstatus.py,sha256=7FCRJ8Iu50oWInytqh-kMghLNEm1SBzQ_dmK-mDMxug,1705
32
+ nodescraper/enums/osfamily.py,sha256=FF-e4bmCc7AJNwHe8n2o-5fddZti6AEY951ZQB6puYU,1459
33
+ nodescraper/enums/systeminteraction.py,sha256=VytZ0hV_vgCAYUpqNUJYBZe7Gt8nS-mGJRPIDjzii2Q,1912
34
+ nodescraper/enums/systemlocation.py,sha256=BbM0h5I8q6ZHSzsggPwuxbssjqgURJZWGhqrjv4pwEw,1427
35
+ nodescraper/interfaces/__init__.py,sha256=QzqbWRpunVXR-TEJg23jbLHEEsHdPsw4NQm4gC5Jz30,1794
36
+ nodescraper/interfaces/connectionmanager.py,sha256=62OOn84K5U5xsclh40bvur5znIWfa5G8W2rMJH7ILok,5057
37
+ nodescraper/interfaces/dataanalyzertask.py,sha256=zvv56MVeC0TZnpLrL_fjRKsvHndqbiiEb-PPYcnsX0k,5626
38
+ nodescraper/interfaces/datacollectortask.py,sha256=eo7fPVNyiG_uaoK72PooTDXplchAPS9oCwMVUoj-mDY,7685
39
+ nodescraper/interfaces/dataplugin.py,sha256=hBUNXPdKY2XHV8wQEkQQLrxA-CPmgDxekX8jVAquMrM,14715
40
+ nodescraper/interfaces/plugin.py,sha256=eD9y-h_c_uqRQjXNrtlQUCguNghvd0b-rXu8tJGc6mU,5033
41
+ nodescraper/interfaces/resultcollator.py,sha256=UkXOyrZ5WaH0czQac_g-z2dxLQCgoIjAbICk-LvtY4I,2240
42
+ nodescraper/interfaces/task.py,sha256=ARyyFhwRVnhFNAaKvtPLBkY5eOWpKCqHKbkiA29E5-k,5640
43
+ nodescraper/interfaces/taskresulthook.py,sha256=ev7Qrc_hG2T5pTBzmawMsLa_uYlMbbseWjJfO3cmuYo,1583
44
+ nodescraper/models/__init__.py,sha256=Q4qgIYRrPlThLeSbXhy6YZkcL1UUZOA47rXngz4wahE,1884
45
+ nodescraper/models/analyzerargs.py,sha256=ylKQkl2uwo16lcyCUxPGxhOoBD2LHc0_REPyvtPP_kQ,3296
46
+ nodescraper/models/collectorargs.py,sha256=VNnfeBAq_h6rQGdZKJCMNQzevoko2ndEhPBP26cMiTs,1413
47
+ nodescraper/models/connectionconfig.py,sha256=faI43uPP_AkDQlorzN0kY3uNAYzeo9hEoaCd8XUOh2U,1509
48
+ nodescraper/models/datamodel.py,sha256=d4skGSXy5AR_vRZHnQpLxzW03AGubJAyIa7bG7YeTVE,6093
49
+ nodescraper/models/datapluginresult.py,sha256=RQRARgQ4xPqOr3tV-5TDItxVG1AwNi6p_WMCrWlLnqQ,1641
50
+ nodescraper/models/event.py,sha256=5CNJjQysmvP2Zx4JrVJ08ulA2UDNSUvyG6uw9uXDs7Y,5730
51
+ nodescraper/models/pluginconfig.py,sha256=q3_sB4EPNiTY1imEmOHZ2qxMh-k92OFaxmKMr27Mizc,1702
52
+ nodescraper/models/pluginresult.py,sha256=2PB3AfLq70qqLKhZAAWqjMxkjwetW7_InTsbl4qHZzE,1610
53
+ nodescraper/models/systeminfo.py,sha256=4YRVScHfKwoOzWrmvUcQp_QYYnMY2tu3aERUIkN30wI,1806
54
+ nodescraper/models/taskresult.py,sha256=ppsiFRxMONmu_Hnikf_8hASIZUqTTcsYRhDquuGttGM,6845
55
+ nodescraper/models/timerangeargs.py,sha256=XyP_CckQr9r4sTAHXKMEbhOr_V4QOCGTbopogOrlXWk,1603
56
+ nodescraper/plugins/__init__.py,sha256=HBDZKCzcK27TiqerZunpdH6dVPFkUjeJjmUO68644YI,1287
57
+ nodescraper/plugins/inband/__init__.py,sha256=HBDZKCzcK27TiqerZunpdH6dVPFkUjeJjmUO68644YI,1287
58
+ nodescraper/plugins/inband/amdsmi/__init__.py,sha256=4fIRCX0oyBq9fK7u8NpbCWIa0RPRyFY-buYuu2klGjs,1355
59
+ nodescraper/plugins/inband/amdsmi/amdsmi_analyzer.py,sha256=xs7RmpR68iU6aWSekdg-Oj8CAAVAyx4ndYqEQHFSxpg,33742
60
+ nodescraper/plugins/inband/amdsmi/amdsmi_collector.py,sha256=axve3knrbeyxN216xoxN2VrAahNMD7co6Uzv9oKIefo,48676
61
+ nodescraper/plugins/inband/amdsmi/amdsmi_plugin.py,sha256=SPEHtvXVEp7Q9Ap7EGwTt-ienYhbrP9QQ6GAPc3CzYM,1791
62
+ nodescraper/plugins/inband/amdsmi/amdsmidata.py,sha256=2oyCe46cCcO8Xowlzb4tjdYn8cjFpFdAxivncxnqL0M,30862
63
+ nodescraper/plugins/inband/amdsmi/analyzer_args.py,sha256=wpnQkDl0wi3spK7C_R8LGoNI1cXK2EFOWEah5Icn-uc,2241
64
+ nodescraper/plugins/inband/amdsmi/cper.py,sha256=o7LJIiU2WU-UdGjz0BgmAb1mpSn6JkkVpjlNf1CMZIc,2829
65
+ nodescraper/plugins/inband/bios/__init__.py,sha256=RvzNreqM3uIaaXD2LH3dLzv_5jSZyHUyKBwTkC14c4g,1413
66
+ nodescraper/plugins/inband/bios/analyzer_args.py,sha256=LM39DRtJYUojL-8E_aU_4tNP7oAVtqrk55K3qI9lR5o,2497
67
+ nodescraper/plugins/inband/bios/bios_analyzer.py,sha256=4eWzeKUYGLhJYKKCEmKwl4BZZxGaaM_hLitOW-pwW-A,3841
68
+ nodescraper/plugins/inband/bios/bios_collector.py,sha256=9tdJQowLvfmblgpLh3WHbGiPhp6lhQhM2CNv2tRcTUw,3684
69
+ nodescraper/plugins/inband/bios/bios_plugin.py,sha256=V9flVQ60x9QsQDBPd3PuVzzlgJ_lepT91pwBasu3__c,1761
70
+ nodescraper/plugins/inband/bios/biosdata.py,sha256=ZfWxPfv6yJRXcwLdAYRq1zIakLSPLiY1RpdsA9Cfng4,1384
71
+ nodescraper/plugins/inband/cmdline/__init__.py,sha256=HBDZKCzcK27TiqerZunpdH6dVPFkUjeJjmUO68644YI,1287
72
+ nodescraper/plugins/inband/cmdline/analyzer_args.py,sha256=3eJtjsB2fR70K0rymY-KQVepf3OmbSvGLMW7al6opXs,3074
73
+ nodescraper/plugins/inband/cmdline/cmdline_analyzer.py,sha256=5--LuGZzS4scZXrIhgJuiFr91pWSdL8bFLFXd5klkRs,4876
74
+ nodescraper/plugins/inband/cmdline/cmdline_collector.py,sha256=AofSRkTgVoNvLmyx2sxt46U60O7YXw9byydZHg6K9V0,3063
75
+ nodescraper/plugins/inband/cmdline/cmdline_plugin.py,sha256=hFCtPwZdHula6pewLxlQ-xYOM5MK4uqfT_qusK1UMug,1812
76
+ nodescraper/plugins/inband/cmdline/cmdlinedata.py,sha256=ssaMdB2wBuOZzw7cPPsp5My_2UXyWBqgevO77zRWU9k,1382
77
+ nodescraper/plugins/inband/device_enumeration/__init__.py,sha256=EWVBViyvNlzk0VY9dQeFooswEIJyiCEKpFPihTndteY,1479
78
+ nodescraper/plugins/inband/device_enumeration/analyzer_args.py,sha256=nDCtmaCjSeu1nR65o9uunzXo08MLoq0LTEqxVf6iShI,2837
79
+ nodescraper/plugins/inband/device_enumeration/device_enumeration_analyzer.py,sha256=NBgOXx1Vzpbjvg840x_402rseLJU_gLeHsAAp5yi6pc,3495
80
+ nodescraper/plugins/inband/device_enumeration/device_enumeration_collector.py,sha256=XK46OyPD4sr5YYawJJZRa8552PEu1X-dRaiMRBVSXeA,7694
81
+ nodescraper/plugins/inband/device_enumeration/device_enumeration_plugin.py,sha256=HbOfNWc3IBiMcRQxLoD35jUjI8h_LZay0jbjY8LA7dM,1944
82
+ nodescraper/plugins/inband/device_enumeration/deviceenumdata.py,sha256=-to-5ZpO9Lq926JIWFa4B3WkQLot7qHZSu93QDhFfYI,1588
83
+ nodescraper/plugins/inband/dimm/__init__.py,sha256=HBDZKCzcK27TiqerZunpdH6dVPFkUjeJjmUO68644YI,1287
84
+ nodescraper/plugins/inband/dimm/collector_args.py,sha256=wRWxkxybLVPmJDtRzy-N4DGqpFu3YwA8K-b-eATBuQo,1403
85
+ nodescraper/plugins/inband/dimm/dimm_collector.py,sha256=hezpwuqWbJt0R5Ltmme8s3FtvgykuIhrehbWkH8vm6o,6231
86
+ nodescraper/plugins/inband/dimm/dimm_plugin.py,sha256=8JekhA-fEyPfxmRrJmsRBA7LkYaCn5PAyazPFgClBDY,1697
87
+ nodescraper/plugins/inband/dimm/dimmdata.py,sha256=TT3uKpNbhiKIe0l8_n-OFmHhGCIFE7BkR3KsKK6-jHg,1377
88
+ nodescraper/plugins/inband/dkms/__init__.py,sha256=HBDZKCzcK27TiqerZunpdH6dVPFkUjeJjmUO68644YI,1287
89
+ nodescraper/plugins/inband/dkms/analyzer_args.py,sha256=lo9xvTzT-FqDU8gsrejNOfnbnjwsH-pPWSWjFTuteas,3191
90
+ nodescraper/plugins/inband/dkms/dkms_analyzer.py,sha256=huUw0zH7aP1pqJk1nronB1qrrzUVNpglncY0McN2UVE,4290
91
+ nodescraper/plugins/inband/dkms/dkms_collector.py,sha256=wqQ5wCRXuiI2uBxpH-cgD47zpeexrzjX52xi3Z8UWZg,2954
92
+ nodescraper/plugins/inband/dkms/dkms_plugin.py,sha256=ZseOtCdF54lt8U5F_IQoZQ2jNLB81uLutOTNSipPfnc,1761
93
+ nodescraper/plugins/inband/dkms/dkmsdata.py,sha256=6W4D3AiDugateqMwtBz-9FcA8gsnBobbi2iTrqriBMk,1458
94
+ nodescraper/plugins/inband/dmesg/__init__.py,sha256=tZZE9jQOcljMN4RgAL2bURQnWP1otVwPB2XegV_j9cE,1352
95
+ nodescraper/plugins/inband/dmesg/analyzer_args.py,sha256=iZMEd5Eg6yoC4xWOa-p1TTQ00yYFwIHsXgWab_5c51o,1521
96
+ nodescraper/plugins/inband/dmesg/collector_args.py,sha256=o0qtI-oblvPld9gwyEfcSUuJYHePa7BRCitlLQPSysA,1586
97
+ nodescraper/plugins/inband/dmesg/dmesg_analyzer.py,sha256=0dbp069uO_APVAxA9r85ShgmjBIYMzYi7Em99rkhHUA,20395
98
+ nodescraper/plugins/inband/dmesg/dmesg_collector.py,sha256=QyowjzPsbyvvt3W70NpVUeuZAuNhCbgghQQv4tD8rX4,6667
99
+ nodescraper/plugins/inband/dmesg/dmesg_plugin.py,sha256=FBqJUxeSFQOP63gXdVLDDWAm35qY2n-Q5Bg2kYXVyck,1824
100
+ nodescraper/plugins/inband/dmesg/dmesgdata.py,sha256=8XKzFl9tTYVU-FPVUU3cUeE2WrrBW-kEpDrFPKv4JAQ,4191
101
+ nodescraper/plugins/inband/fabrics/__init__.py,sha256=c3ItxgBKGOK_EMs8xkC-yeXhmjGbFmW-uzZLrsSUxQw,1358
102
+ nodescraper/plugins/inband/fabrics/fabrics_collector.py,sha256=72y4E7U1uQpwnMRO6mPs_yXaKOfRphym-3OfGdWaugE,29033
103
+ nodescraper/plugins/inband/fabrics/fabrics_plugin.py,sha256=-RJqgPkzlMKNhjALt9q2utLQsYwCzv9PgPOq__urHsI,1642
104
+ nodescraper/plugins/inband/fabrics/fabricsdata.py,sha256=yVtg8iV8X61hYX9eV5yguzWy3cAhFql-D9vpP7lVZbg,5801
105
+ nodescraper/plugins/inband/journal/__init__.py,sha256=g-fdPGzVbT77fMdoTInM26IvKevl4eXRJOB5zyn9KI8,1358
106
+ nodescraper/plugins/inband/journal/collector_args.py,sha256=U7tQ9W_FCa23fqn1XzmtBX4VZLU5bwveudPXqB7hbps,1471
107
+ nodescraper/plugins/inband/journal/journal_collector.py,sha256=3c5kaDtEc4fzeewaC4-BlkA__s1a0UZKOc2B8jltYiQ,4208
108
+ nodescraper/plugins/inband/journal/journal_plugin.py,sha256=F3p9U-y4ZPNeMP4Tn8kGECEeU2mf8_moRu8gUECxYmY,1705
109
+ nodescraper/plugins/inband/journal/journaldata.py,sha256=I4XjszpKK5cVMz0F5jzTP9D-fe7EobBv3-dCQ5nDXeE,1746
110
+ nodescraper/plugins/inband/kernel/__init__.py,sha256=HBDZKCzcK27TiqerZunpdH6dVPFkUjeJjmUO68644YI,1287
111
+ nodescraper/plugins/inband/kernel/analyzer_args.py,sha256=hFQhk6eWLNiCcCSDRfaDFiNa8UtFjs1qtL4IQFs4BEo,2422
112
+ nodescraper/plugins/inband/kernel/kernel_analyzer.py,sha256=3vvYlUpJNx9RpOJpQByC6ybNP7_dg9MpJV_Az0f6Kdk,3789
113
+ nodescraper/plugins/inband/kernel/kernel_collector.py,sha256=PGG1uW2T2h9B9Xc9C0J28U175utzgGyWibtsf80J_ks,4911
114
+ nodescraper/plugins/inband/kernel/kernel_plugin.py,sha256=Y8ePlGgcmB6ISY2PeErCnCcJGR1-MJMlXft0LB_ri8o,1791
115
+ nodescraper/plugins/inband/kernel/kerneldata.py,sha256=qQkkrrpaKA0320WGAKfQREfIHxnOHoP5Wn4oyIFh56U,1410
116
+ nodescraper/plugins/inband/kernel_module/__init__.py,sha256=HBDZKCzcK27TiqerZunpdH6dVPFkUjeJjmUO68644YI,1287
117
+ nodescraper/plugins/inband/kernel_module/analyzer_args.py,sha256=LO8iyX_o1UXNPb7NBI61KltuX6S2wwqpyylUQxqj17U,2267
118
+ nodescraper/plugins/inband/kernel_module/kernel_module_analyzer.py,sha256=EUnrcH-zaMMK3yaBV85p1wQCpqnHjc0YhY7P1B0cSM4,8359
119
+ nodescraper/plugins/inband/kernel_module/kernel_module_collector.py,sha256=BxtunaXRPuUJ61LfhrDOUqPzW3p9Fv5pjfbCKjbh8bI,10301
120
+ nodescraper/plugins/inband/kernel_module/kernel_module_data.py,sha256=ULsMXePK9RRuewLGunNgrul9j6sR_sLoLblCZgv94JI,2266
121
+ nodescraper/plugins/inband/kernel_module/kernel_module_plugin.py,sha256=7MnzUWRVk9W6vllYhltPWuiRBYM-M0PjNgNl8tTQ1aM,1879
122
+ nodescraper/plugins/inband/memory/__init__.py,sha256=HBDZKCzcK27TiqerZunpdH6dVPFkUjeJjmUO68644YI,1287
123
+ nodescraper/plugins/inband/memory/analyzer_args.py,sha256=haAmhuFESmTWpSLVijvnGIqU7ye7bC0aU69yTSfeZ2w,1863
124
+ nodescraper/plugins/inband/memory/memory_analyzer.py,sha256=QplmCx4gdfqMMFn4-laiwYGHAm7efMAwXuQrt87V9tQ,4007
125
+ nodescraper/plugins/inband/memory/memory_collector.py,sha256=DlBxEB5JYlaROMzJjsZDySeJ1nDL3DB_Oy40RjqJBGk,13229
126
+ nodescraper/plugins/inband/memory/memory_plugin.py,sha256=nVB16mkPEV558q7Flyby25bDjMCZR3NraBG7vxCI9qQ,1791
127
+ nodescraper/plugins/inband/memory/memorydata.py,sha256=sSo0kjt_A12HW7i2gaoPUrM2CQkoCQMt700ikLHTpd0,2678
128
+ nodescraper/plugins/inband/network/__init__.py,sha256=MHcvNAOSmKpvTKRj_THM1xfzW7LtGzbCLdWdDz_CXAM,1358
129
+ nodescraper/plugins/inband/network/network_collector.py,sha256=n4cer6xDCroZYzgnEAOhA3yjuuTP0YZnr-DThbHjd4U,72377
130
+ nodescraper/plugins/inband/network/network_plugin.py,sha256=jC46Rp_ArT46kv-QS4bDw9w8Fl26-S9FZQyms0RISA4,1626
131
+ nodescraper/plugins/inband/network/networkdata.py,sha256=1Gr3BP-M3mkgUDMn_ZTDtP-491w02-vIknsOzjiT1Yg,13728
132
+ nodescraper/plugins/inband/nvme/__init__.py,sha256=3HsOIFz75KSXklmqlvEnue9VXtA_AV0vFkgK6ciQbAA,1349
133
+ nodescraper/plugins/inband/nvme/nvme_collector.py,sha256=6kfui_vRRAOW0SLoWDWdjFniRWlM1IVY8zzZseOoa3o,6594
134
+ nodescraper/plugins/inband/nvme/nvme_plugin.py,sha256=mzdtZnV7Vh-xcyTKT1qVFK4aQPczRCsKDyzTAYEm2iE,1598
135
+ nodescraper/plugins/inband/nvme/nvmedata.py,sha256=gH_QypHVtgXGpWfWkDki5WYoamw2f2Ao_swKI3vHteM,1782
136
+ nodescraper/plugins/inband/os/__init__.py,sha256=HBDZKCzcK27TiqerZunpdH6dVPFkUjeJjmUO68644YI,1287
137
+ nodescraper/plugins/inband/os/analyzer_args.py,sha256=P3LXjbjIsiKCryMTyHy2Uyc3X5x9kW_er3Ke4ux4ouo,2348
138
+ nodescraper/plugins/inband/os/os_analyzer.py,sha256=bICYN3hfeqigyxmXQpGYqzs7rPrTKJmHf4QZ1xW96Pk,3118
139
+ nodescraper/plugins/inband/os/os_collector.py,sha256=LP1APa6H7qKQrzVXth5wudKttnJMgYtfLvpM9PdOTHQ,5324
140
+ nodescraper/plugins/inband/os/os_plugin.py,sha256=_2Ndg7CQmp4cIprmJpT2dYcjvcoSj9U3IJ2Sk_mXMpE,1739
141
+ nodescraper/plugins/inband/os/osdata.py,sha256=OB-TlTQzhY6MGphnnnw07WA5iWEowJZtOWHh6y08vww,1402
142
+ nodescraper/plugins/inband/package/__init__.py,sha256=HBDZKCzcK27TiqerZunpdH6dVPFkUjeJjmUO68644YI,1287
143
+ nodescraper/plugins/inband/package/analyzer_args.py,sha256=kx6dfH3Jqbl__nOiIsQQGqqmfj6C_3Y9cyzov8JBRY4,2182
144
+ nodescraper/plugins/inband/package/package_analyzer.py,sha256=iyHNm2jOe-Xi3AcB14bxnbj3TdPQBvXjx78mTVvU3eg,11049
145
+ nodescraper/plugins/inband/package/package_collector.py,sha256=OPpsIkvOy2UIeLg6qF0vovetjSIC-P2-_KmQjEKCy3s,11385
146
+ nodescraper/plugins/inband/package/package_plugin.py,sha256=ZtoHUs_3KnqAwGkEKgwHkNCkfFbynDfsNPtRu6Q1VI4,1814
147
+ nodescraper/plugins/inband/package/packagedata.py,sha256=mARGzoxw944Uv0kgah1p-6b9Czi-KklMMMQRkwhVVfY,1869
148
+ nodescraper/plugins/inband/pcie/__init__.py,sha256=NNJsZHdK_fpuHBDz4Koydzb0DFgmc8_G3O0E4mpzOOI,1413
149
+ nodescraper/plugins/inband/pcie/analyzer_args.py,sha256=C_KSq-bOqJyovOe5MoJrjnYx35K6-JpAXckihtabgJM,2747
150
+ nodescraper/plugins/inband/pcie/pcie_analyzer.py,sha256=bsaYM9D_xqHO7Q5ytVUpSdBw4KCBTI2DUYGWXdIOUNg,45220
151
+ nodescraper/plugins/inband/pcie/pcie_collector.py,sha256=wfm7jDM27bTJWEE0kAaRT47CtRlsP8GUtimB2bq5oGg,27661
152
+ nodescraper/plugins/inband/pcie/pcie_data.py,sha256=a91Pep6oma2DLNgO_CrPDFkxyy3abJeRLTFq_-WLgpE,80822
153
+ nodescraper/plugins/inband/pcie/pcie_plugin.py,sha256=4ksMO9QCmulllxg59ZCgcvK2c7xdeb24b7BfAAscBqY,1762
154
+ nodescraper/plugins/inband/process/__init__.py,sha256=HBDZKCzcK27TiqerZunpdH6dVPFkUjeJjmUO68644YI,1287
155
+ nodescraper/plugins/inband/process/analyzer_args.py,sha256=-jUV0czLM8yGnFcljoH07YU1Sd26kXp1AkM5FuyYzDo,1933
156
+ nodescraper/plugins/inband/process/collector_args.py,sha256=tyPycc7iD605cTD0bJp-dUEhWkx1McG1ze1UgPFVLGA,1406
157
+ nodescraper/plugins/inband/process/process_analyzer.py,sha256=OcJ5fO3Y9VWgE9kCtJShYJ7JpnhdV8qkOfvaP_u9uaY,3791
158
+ nodescraper/plugins/inband/process/process_collector.py,sha256=xw0sARcrVQaDCqSmyt5G6mWsMFLY57kEm3172hun6Qc,4704
159
+ nodescraper/plugins/inband/process/process_plugin.py,sha256=NSQ5zbGnTPidVWd63eD_MPMVTnMjXcxoKA91dSVhKtE,1914
160
+ nodescraper/plugins/inband/process/processdata.py,sha256=8xhj3xqsjdZFwDOyHD8q8WejYO9TGhTM_k-35ZMOsIo,1524
161
+ nodescraper/plugins/inband/rocm/__init__.py,sha256=HBDZKCzcK27TiqerZunpdH6dVPFkUjeJjmUO68644YI,1287
162
+ nodescraper/plugins/inband/rocm/analyzer_args.py,sha256=VSxh95-h1djiAovfgKwje0UycFATvdSCPA9eQnCaxDE,2482
163
+ nodescraper/plugins/inband/rocm/rocm_analyzer.py,sha256=oHjZl4SjyYjmnDJnY_F8vGdejKdx0o0RbSTS4TgDueU,4347
164
+ nodescraper/plugins/inband/rocm/rocm_collector.py,sha256=T5gRZVp1R0ANiDAqaHNspT34Urws9bT8JuVBX9aZvb0,9316
165
+ nodescraper/plugins/inband/rocm/rocm_plugin.py,sha256=T52MUMx0ONnFhuvcb4UQx3ZPBe0EGoyJB2-W5aG_b_A,1769
166
+ nodescraper/plugins/inband/rocm/rocmdata.py,sha256=k-QfaXYVIGvbrlg4bTE6cRTNKbPwVpWpQKx3tkVWlXc,2323
167
+ nodescraper/plugins/inband/storage/__init__.py,sha256=HBDZKCzcK27TiqerZunpdH6dVPFkUjeJjmUO68644YI,1287
168
+ nodescraper/plugins/inband/storage/analyzer_args.py,sha256=iH7Ql8C4UsIQH97HUOMs60P0GQdu1vJlCLZuzgAwfSM,1722
169
+ nodescraper/plugins/inband/storage/collector_args.py,sha256=Wj5QGnbBkA8kwPVUv2qUeUVTgDqAYL1yy1jkkYDH44k,1406
170
+ nodescraper/plugins/inband/storage/storage_analyzer.py,sha256=SMXU0zP03RDC7BtWMYqVnHYCNZDLeN2_n2YyAg7dhPQ,6477
171
+ nodescraper/plugins/inband/storage/storage_collector.py,sha256=EK3Z_-SNdvvBQo6pMQCZFxR5XUr3YlvgHmhVx77yAmI,4895
172
+ nodescraper/plugins/inband/storage/storage_plugin.py,sha256=5vaq3ZXNgd6hdd3VdEwZR_TX11MiuDkbbtCxHC0ja_o,1876
173
+ nodescraper/plugins/inband/storage/storagedata.py,sha256=pI8Li-p7RWcO8Qvf0m8DimQMFTS3_wmgbSjgUq_Q74c,2586
174
+ nodescraper/plugins/inband/sysctl/__init__.py,sha256=x7x1RajRyaiCrW8p4sM8z39mcgDUcntn0o1MNW7Bwc0,1423
175
+ nodescraper/plugins/inband/sysctl/analyzer_args.py,sha256=u8uBPsao5dK3eYASC-3QXU5zZI1fSuEbQskaCQu_X9w,3211
176
+ nodescraper/plugins/inband/sysctl/sysctl_analyzer.py,sha256=OuwbWPRWzYCJB_WR1iKss8XuM81zgoPiyXYamEpejgY,3342
177
+ nodescraper/plugins/inband/sysctl/sysctl_collector.py,sha256=M2Yixd-_I8f46UgnRCyFSUKgTi1qmylkYkRBcDb8IB8,4086
178
+ nodescraper/plugins/inband/sysctl/sysctl_plugin.py,sha256=nKAFy9PWQLIxPPES53oILIce7cDZl6tdcBrno4dHNFQ,1789
179
+ nodescraper/plugins/inband/sysctl/sysctldata.py,sha256=1mlwGKy2RBUfWjaBWmAYv2nJ-3drex2S34xZN-P5j38,1932
180
+ nodescraper/plugins/inband/syslog/__init__.py,sha256=kT5X_L16yiAfRm8X1tXkUQQ9AF2uso3jJ9--kfpYyCw,1355
181
+ nodescraper/plugins/inband/syslog/syslog_collector.py,sha256=SqLXe0GDdbii-Pqun82BFhLWl2_7YsyfjhxsGcSeRdI,4996
182
+ nodescraper/plugins/inband/syslog/syslog_plugin.py,sha256=lVwouzwVSUvY7RpjxHl5Kq3Pj2R4XdxRYdvS0HLjmYU,1588
183
+ nodescraper/plugins/inband/syslog/syslogdata.py,sha256=4VRmSojeYIEu1ui18mWLODfMaLYNHnDsDxeF3PqQy0A,1876
184
+ nodescraper/plugins/inband/uptime/__init__.py,sha256=HBDZKCzcK27TiqerZunpdH6dVPFkUjeJjmUO68644YI,1287
185
+ nodescraper/plugins/inband/uptime/uptime_collector.py,sha256=ey96a_W7vEkKYyX5-Y2XftQ_viayR8cjojUiSHuVv1c,3431
186
+ nodescraper/plugins/inband/uptime/uptime_plugin.py,sha256=MrVAccaaTDL1K9ymbI9ujkkSOpl0lHGphNbcpAgOjvk,1610
187
+ nodescraper/plugins/inband/uptime/uptimedata.py,sha256=_D8qtUMgBMrT-DOl0bChBQ0T2dRhaxMGhi0Q5RfjyCk,1402
188
+ nodescraper/resultcollators/__init__.py,sha256=HBDZKCzcK27TiqerZunpdH6dVPFkUjeJjmUO68644YI,1287
189
+ nodescraper/resultcollators/tablesummary.py,sha256=gCi3H_A0NrcyLuxT3WjuaEA2Bt7nxBZdv7wBfMygDi4,6374
190
+ nodescraper/taskresulthooks/__init__.py,sha256=Wuc7S0KYmTLY88ExkB_5oYwLe9TOI7v30mugGHBRps4,1369
191
+ nodescraper/taskresulthooks/filesystemloghook.py,sha256=hAiECTqq4YMHfcc4GQKtXLL7WFcJNzs91O2tx3lGmwk,3806
192
+ amd_node_scraper-0.0.1.dist-info/LICENSE,sha256=h1PoQlixaq22-sPSskuwheH7ADBRswMzpBTyNzHErhw,1085
193
+ amd_node_scraper-0.0.1.dist-info/METADATA,sha256=gC8RW0M9I9QkpFBUHD-EFS1GrTkccI3l9xgJWY-bMf4,14258
194
+ amd_node_scraper-0.0.1.dist-info/WHEEL,sha256=Z4pYXqR_rTB7OWNDYFOm1qRk0RX6GFP2o8LgvP453Hk,91
195
+ amd_node_scraper-0.0.1.dist-info/entry_points.txt,sha256=GrrwLaw1XvSxhNJJcvXMc-snvMGj0LiOkI09GZ1GR0g,59
196
+ amd_node_scraper-0.0.1.dist-info/top_level.txt,sha256=-GXB_pfpTF52pn7TRtAWaJ-t5bUJ6OPArjjMWEdXTQs,12
197
+ amd_node_scraper-0.0.1.dist-info/RECORD,,
@@ -0,0 +1,5 @@
1
+ Wheel-Version: 1.0
2
+ Generator: setuptools (70.3.0)
3
+ Root-Is-Purelib: true
4
+ Tag: py3-none-any
5
+
@@ -0,0 +1,2 @@
1
+ [console_scripts]
2
+ node-scraper = nodescraper.cli:cli_entry
@@ -0,0 +1 @@
1
+ nodescraper