redfish-ctl 1.1.0__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 (194) hide show
  1. redfish_ctl-1.1.0/LICENSE +21 -0
  2. redfish_ctl-1.1.0/MANIFEST.in +3 -0
  3. redfish_ctl-1.1.0/PKG-INFO +158 -0
  4. redfish_ctl-1.1.0/README.md +143 -0
  5. redfish_ctl-1.1.0/app.py +11 -0
  6. redfish_ctl-1.1.0/build_dist.sh +36 -0
  7. redfish_ctl-1.1.0/build_push.sh +9 -0
  8. redfish_ctl-1.1.0/clean.sh +2 -0
  9. redfish_ctl-1.1.0/idrac_ctl/__init__.py +18 -0
  10. redfish_ctl-1.1.0/idrac_ctl.py +11 -0
  11. redfish_ctl-1.1.0/local_install.sh +9 -0
  12. redfish_ctl-1.1.0/mount_media.sh +3 -0
  13. redfish_ctl-1.1.0/pyproject.toml +54 -0
  14. redfish_ctl-1.1.0/redfish_ctl/__init__.py +146 -0
  15. redfish_ctl-1.1.0/redfish_ctl/__main__.py +3 -0
  16. redfish_ctl-1.1.0/redfish_ctl/accounts/__init__.py +0 -0
  17. redfish_ctl-1.1.0/redfish_ctl/accounts/cmd_account_manage.py +198 -0
  18. redfish_ctl-1.1.0/redfish_ctl/accounts/cmd_account_sshkey.py +121 -0
  19. redfish_ctl-1.1.0/redfish_ctl/accounts/cmd_account_svc.py +121 -0
  20. redfish_ctl-1.1.0/redfish_ctl/accounts/cmd_accounts.py +84 -0
  21. redfish_ctl-1.1.0/redfish_ctl/accounts/cmd_privilage_registry.py +57 -0
  22. redfish_ctl-1.1.0/redfish_ctl/accounts/cmd_query_account.py +80 -0
  23. redfish_ctl-1.1.0/redfish_ctl/actions/__init__.py +0 -0
  24. redfish_ctl-1.1.0/redfish_ctl/actions/action_policy.py +91 -0
  25. redfish_ctl-1.1.0/redfish_ctl/actions/cmd_action_list.py +130 -0
  26. redfish_ctl-1.1.0/redfish_ctl/attribute/__init__.py +0 -0
  27. redfish_ctl-1.1.0/redfish_ctl/attribute/cmd_attribute.py +116 -0
  28. redfish_ctl-1.1.0/redfish_ctl/attribute/cmd_attribute_clear_pending.py +91 -0
  29. redfish_ctl-1.1.0/redfish_ctl/attribute/cmd_attribute_update.py +99 -0
  30. redfish_ctl-1.1.0/redfish_ctl/bios/__init__.py +0 -0
  31. redfish_ctl-1.1.0/redfish_ctl/bios/bios_registry.py +214 -0
  32. redfish_ctl-1.1.0/redfish_ctl/bios/cmd_bios.py +214 -0
  33. redfish_ctl-1.1.0/redfish_ctl/bios/cmd_bios_clear_pending.py +89 -0
  34. redfish_ctl-1.1.0/redfish_ctl/bios/cmd_bios_pending.py +89 -0
  35. redfish_ctl-1.1.0/redfish_ctl/bios/cmd_bios_reset_default.py +0 -0
  36. redfish_ctl-1.1.0/redfish_ctl/bios/cmd_bios_snapshot.py +91 -0
  37. redfish_ctl-1.1.0/redfish_ctl/bios/cmd_change_bios.py +380 -0
  38. redfish_ctl-1.1.0/redfish_ctl/bios/cmd_change_boot_order.py +202 -0
  39. redfish_ctl-1.1.0/redfish_ctl/boot_options/__init__.py +0 -0
  40. redfish_ctl-1.1.0/redfish_ctl/boot_options/cmd_boot_option_list.py +107 -0
  41. redfish_ctl-1.1.0/redfish_ctl/boot_options/cmd_boot_options_query.py +55 -0
  42. redfish_ctl-1.1.0/redfish_ctl/boot_source/__init__.py +0 -0
  43. redfish_ctl-1.1.0/redfish_ctl/boot_source/cmd_boot_one_shot.py +192 -0
  44. redfish_ctl-1.1.0/redfish_ctl/boot_source/cmd_boot_settings.py +92 -0
  45. redfish_ctl-1.1.0/redfish_ctl/boot_source/cmd_boot_source_get.py +110 -0
  46. redfish_ctl-1.1.0/redfish_ctl/boot_source/cmd_boot_source_registry.py +66 -0
  47. redfish_ctl-1.1.0/redfish_ctl/boot_source/cmd_boot_state.py +118 -0
  48. redfish_ctl-1.1.0/redfish_ctl/boot_source/cmd_clear_pending.py +83 -0
  49. redfish_ctl-1.1.0/redfish_ctl/boot_source/cmd_enable.py +136 -0
  50. redfish_ctl-1.1.0/redfish_ctl/boot_source/cmd_pending.py +95 -0
  51. redfish_ctl-1.1.0/redfish_ctl/boot_source/cmd_update.py +204 -0
  52. redfish_ctl-1.1.0/redfish_ctl/chassis/__init__.py +0 -0
  53. redfish_ctl-1.1.0/redfish_ctl/chassis/cmd_chasis_reset.py +125 -0
  54. redfish_ctl-1.1.0/redfish_ctl/chassis/cmd_chassis_query.py +93 -0
  55. redfish_ctl-1.1.0/redfish_ctl/chassis/cmd_update_chassis.py +137 -0
  56. redfish_ctl-1.1.0/redfish_ctl/cmd_boot.py +105 -0
  57. redfish_ctl-1.1.0/redfish_ctl/cmd_current_boot.py +84 -0
  58. redfish_ctl-1.1.0/redfish_ctl/cmd_exceptions.py +91 -0
  59. redfish_ctl-1.1.0/redfish_ctl/cmd_query.py +64 -0
  60. redfish_ctl-1.1.0/redfish_ctl/cmd_utils.py +136 -0
  61. redfish_ctl-1.1.0/redfish_ctl/cmd_wait.py +148 -0
  62. redfish_ctl-1.1.0/redfish_ctl/component_integrity/__init__.py +0 -0
  63. redfish_ctl-1.1.0/redfish_ctl/component_integrity/cmd_component_integrity.py +98 -0
  64. redfish_ctl-1.1.0/redfish_ctl/compute/__init__.py +0 -0
  65. redfish_ctl-1.1.0/redfish_ctl/compute/cmd_compute_setting.py +70 -0
  66. redfish_ctl-1.1.0/redfish_ctl/compute/cmd_power_state.py +194 -0
  67. redfish_ctl-1.1.0/redfish_ctl/compute/cmd_system_reset.py +75 -0
  68. redfish_ctl-1.1.0/redfish_ctl/compute/cmd_update.py +85 -0
  69. redfish_ctl-1.1.0/redfish_ctl/custom_argparser/__init__.py +0 -0
  70. redfish_ctl-1.1.0/redfish_ctl/custom_argparser/customer_argdefault.py +201 -0
  71. redfish_ctl-1.1.0/redfish_ctl/dell_lc/__init__.py +0 -0
  72. redfish_ctl-1.1.0/redfish_ctl/dell_lc/cmd_dell_lc_api.py +60 -0
  73. redfish_ctl-1.1.0/redfish_ctl/dell_lc/cmd_dell_lc_rs.py +59 -0
  74. redfish_ctl-1.1.0/redfish_ctl/dell_lc/cmd_dell_lc_services.py +67 -0
  75. redfish_ctl-1.1.0/redfish_ctl/delloem/__init__.py +0 -0
  76. redfish_ctl-1.1.0/redfish_ctl/delloem/delloem_actions.py +61 -0
  77. redfish_ctl-1.1.0/redfish_ctl/delloem/delloem_attach.py +102 -0
  78. redfish_ctl-1.1.0/redfish_ctl/delloem/delloem_attach_status.py +80 -0
  79. redfish_ctl-1.1.0/redfish_ctl/delloem/delloem_boot_netios.py +108 -0
  80. redfish_ctl-1.1.0/redfish_ctl/delloem/delloem_detach.py +67 -0
  81. redfish_ctl-1.1.0/redfish_ctl/delloem/delloem_disconnect.py +66 -0
  82. redfish_ctl-1.1.0/redfish_ctl/delloem/delloem_get_networkios.py +90 -0
  83. redfish_ctl-1.1.0/redfish_ctl/delloem/delloem_os_deployment.py +62 -0
  84. redfish_ctl-1.1.0/redfish_ctl/discover/__init__.py +28 -0
  85. redfish_ctl-1.1.0/redfish_ctl/discover/classifier.py +132 -0
  86. redfish_ctl-1.1.0/redfish_ctl/discover/cli.py +240 -0
  87. redfish_ctl-1.1.0/redfish_ctl/discover/scanner.py +134 -0
  88. redfish_ctl-1.1.0/redfish_ctl/discovery/__init__.py +0 -0
  89. redfish_ctl-1.1.0/redfish_ctl/discovery/cmd_bmc_scan.py +78 -0
  90. redfish_ctl-1.1.0/redfish_ctl/discovery/cmd_discovery.py +353 -0
  91. redfish_ctl-1.1.0/redfish_ctl/discovery/net_scan.py +110 -0
  92. redfish_ctl-1.1.0/redfish_ctl/events/__init__.py +0 -0
  93. redfish_ctl-1.1.0/redfish_ctl/events/cmd_event_submit_test.py +86 -0
  94. redfish_ctl-1.1.0/redfish_ctl/firmware/__init__.py +0 -0
  95. redfish_ctl-1.1.0/redfish_ctl/firmware/cmd_firmware.py +96 -0
  96. redfish_ctl-1.1.0/redfish_ctl/firmware/cmd_firmware_inv.py +75 -0
  97. redfish_ctl-1.1.0/redfish_ctl/firmware/cmd_firmware_update.py +92 -0
  98. redfish_ctl-1.1.0/redfish_ctl/idrac_manager.py +2272 -0
  99. redfish_ctl-1.1.0/redfish_ctl/idrac_shared.py +703 -0
  100. redfish_ctl-1.1.0/redfish_ctl/jobs/__init__.py +0 -0
  101. redfish_ctl-1.1.0/redfish_ctl/jobs/cmd_job_apply.py +150 -0
  102. redfish_ctl-1.1.0/redfish_ctl/jobs/cmd_job_del.py +72 -0
  103. redfish_ctl-1.1.0/redfish_ctl/jobs/cmd_job_delete_all.py +87 -0
  104. redfish_ctl-1.1.0/redfish_ctl/jobs/cmd_job_dell_services.py +60 -0
  105. redfish_ctl-1.1.0/redfish_ctl/jobs/cmd_job_get.py +76 -0
  106. redfish_ctl-1.1.0/redfish_ctl/jobs/cmd_job_service_update.py +36 -0
  107. redfish_ctl-1.1.0/redfish_ctl/jobs/cmd_job_services.py +74 -0
  108. redfish_ctl-1.1.0/redfish_ctl/jobs/cmd_job_watch.py +69 -0
  109. redfish_ctl-1.1.0/redfish_ctl/jobs/cmd_jobs.py +243 -0
  110. redfish_ctl-1.1.0/redfish_ctl/logs/__init__.py +0 -0
  111. redfish_ctl-1.1.0/redfish_ctl/logs/cmd_logs.py +117 -0
  112. redfish_ctl-1.1.0/redfish_ctl/manager/__init__.py +0 -0
  113. redfish_ctl-1.1.0/redfish_ctl/manager/cmd_console_info.py +73 -0
  114. redfish_ctl-1.1.0/redfish_ctl/manager/cmd_manager.py +62 -0
  115. redfish_ctl-1.1.0/redfish_ctl/manager/cmd_manager_reset.py +119 -0
  116. redfish_ctl-1.1.0/redfish_ctl/manager/cmd_manager_time.py +118 -0
  117. redfish_ctl-1.1.0/redfish_ctl/network/__init__.py +0 -0
  118. redfish_ctl-1.1.0/redfish_ctl/network/cmd_ethernet_interfaces.py +108 -0
  119. redfish_ctl-1.1.0/redfish_ctl/network/cmd_network_adapters.py +108 -0
  120. redfish_ctl-1.1.0/redfish_ctl/network/cmd_network_ports.py +95 -0
  121. redfish_ctl-1.1.0/redfish_ctl/oem/__init__.py +0 -0
  122. redfish_ctl-1.1.0/redfish_ctl/oem/cmd_oem_info.py +89 -0
  123. redfish_ctl-1.1.0/redfish_ctl/pci/__init__.py +0 -0
  124. redfish_ctl-1.1.0/redfish_ctl/pci/cmd_pci.py +148 -0
  125. redfish_ctl-1.1.0/redfish_ctl/ports/__init__.py +0 -0
  126. redfish_ctl-1.1.0/redfish_ctl/ports/cmd_nvlink_ports.py +120 -0
  127. redfish_ctl-1.1.0/redfish_ctl/raid/__init__.py +0 -0
  128. redfish_ctl-1.1.0/redfish_ctl/raid/cmd_pd_state.py +6 -0
  129. redfish_ctl-1.1.0/redfish_ctl/raid/cmd_raid_service.py +95 -0
  130. redfish_ctl-1.1.0/redfish_ctl/redfish_exceptions.py +52 -0
  131. redfish_ctl-1.1.0/redfish_ctl/redfish_main.py +577 -0
  132. redfish_ctl-1.1.0/redfish_ctl/redfish_manager.py +682 -0
  133. redfish_ctl-1.1.0/redfish_ctl/redfish_query.py +107 -0
  134. redfish_ctl-1.1.0/redfish_ctl/redfish_respond.py +214 -0
  135. redfish_ctl-1.1.0/redfish_ctl/redfish_respond_error.py +190 -0
  136. redfish_ctl-1.1.0/redfish_ctl/redfish_shared.py +111 -0
  137. redfish_ctl-1.1.0/redfish_ctl/redfish_task_state.py +36 -0
  138. redfish_ctl-1.1.0/redfish_ctl/security/__init__.py +0 -0
  139. redfish_ctl-1.1.0/redfish_ctl/security/cmd_secure_boot.py +104 -0
  140. redfish_ctl-1.1.0/redfish_ctl/sensors/__init__.py +0 -0
  141. redfish_ctl-1.1.0/redfish_ctl/sensors/cmd_sensors.py +105 -0
  142. redfish_ctl-1.1.0/redfish_ctl/serial_console/__init__.py +0 -0
  143. redfish_ctl-1.1.0/redfish_ctl/serial_console/cmd_serial_console.py +177 -0
  144. redfish_ctl-1.1.0/redfish_ctl/storage/__init__.py +0 -0
  145. redfish_ctl-1.1.0/redfish_ctl/storage/cmd_convert_none_raid.py +117 -0
  146. redfish_ctl-1.1.0/redfish_ctl/storage/cmd_convert_to_raid.py +120 -0
  147. redfish_ctl-1.1.0/redfish_ctl/storage/cmd_drives.py +98 -0
  148. redfish_ctl-1.1.0/redfish_ctl/storage/cmd_storage_controllers.py +138 -0
  149. redfish_ctl-1.1.0/redfish_ctl/storage/cmd_storage_get.py +115 -0
  150. redfish_ctl-1.1.0/redfish_ctl/storage/cmd_storage_list.py +65 -0
  151. redfish_ctl-1.1.0/redfish_ctl/system/__init__.py +0 -0
  152. redfish_ctl-1.1.0/redfish_ctl/system/cmd_system.py +129 -0
  153. redfish_ctl-1.1.0/redfish_ctl/system/cmd_system_config.py +142 -0
  154. redfish_ctl-1.1.0/redfish_ctl/system/cmd_system_import.py +169 -0
  155. redfish_ctl-1.1.0/redfish_ctl/system/cmd_system_one_time_boot.py +151 -0
  156. redfish_ctl-1.1.0/redfish_ctl/system/util.py +0 -0
  157. redfish_ctl-1.1.0/redfish_ctl/tasks/__init__.py +0 -0
  158. redfish_ctl-1.1.0/redfish_ctl/tasks/cmd_task_svc.py +59 -0
  159. redfish_ctl-1.1.0/redfish_ctl/tasks/cmd_task_watch.py +93 -0
  160. redfish_ctl-1.1.0/redfish_ctl/tasks/cmd_tasks_get.py +72 -0
  161. redfish_ctl-1.1.0/redfish_ctl/tasks/cmd_tasks_list.py +67 -0
  162. redfish_ctl-1.1.0/redfish_ctl/telemetry/__init__.py +0 -0
  163. redfish_ctl-1.1.0/redfish_ctl/telemetry/cmd_exporter.py +216 -0
  164. redfish_ctl-1.1.0/redfish_ctl/telemetry/cmd_metric_definitions.py +86 -0
  165. redfish_ctl-1.1.0/redfish_ctl/telemetry/cmd_metric_reports.py +97 -0
  166. redfish_ctl-1.1.0/redfish_ctl/telemetry/cmd_telemetry_triggers.py +75 -0
  167. redfish_ctl-1.1.0/redfish_ctl/telemetry/exporter.py +570 -0
  168. redfish_ctl-1.1.0/redfish_ctl/vendors/__init__.py +21 -0
  169. redfish_ctl-1.1.0/redfish_ctl/vendors/base.py +63 -0
  170. redfish_ctl-1.1.0/redfish_ctl/vendors/dell/__init__.py +0 -0
  171. redfish_ctl-1.1.0/redfish_ctl/vendors/dell/capabilities.py +40 -0
  172. redfish_ctl-1.1.0/redfish_ctl/vendors/hpe/__init__.py +0 -0
  173. redfish_ctl-1.1.0/redfish_ctl/vendors/hpe/capabilities.py +18 -0
  174. redfish_ctl-1.1.0/redfish_ctl/vendors/supermicro/__init__.py +0 -0
  175. redfish_ctl-1.1.0/redfish_ctl/vendors/supermicro/capabilities.py +30 -0
  176. redfish_ctl-1.1.0/redfish_ctl/version.py +1 -0
  177. redfish_ctl-1.1.0/redfish_ctl/virtual_media/__init__.py +0 -0
  178. redfish_ctl-1.1.0/redfish_ctl/virtual_media/cmd_smc_virtual_media.py +147 -0
  179. redfish_ctl-1.1.0/redfish_ctl/virtual_media/cmd_virtual_media_eject.py +122 -0
  180. redfish_ctl-1.1.0/redfish_ctl/virtual_media/cmd_virtual_media_get.py +133 -0
  181. redfish_ctl-1.1.0/redfish_ctl/virtual_media/cmd_virtual_media_insert.py +236 -0
  182. redfish_ctl-1.1.0/redfish_ctl/volumes/__init__.py +0 -0
  183. redfish_ctl-1.1.0/redfish_ctl/volumes/cmd_initilize.py +79 -0
  184. redfish_ctl-1.1.0/redfish_ctl/volumes/cmd_virtual_disk.py +118 -0
  185. redfish_ctl-1.1.0/redfish_ctl/volumes/cmd_volumes.py +65 -0
  186. redfish_ctl-1.1.0/redfish_ctl.egg-info/PKG-INFO +158 -0
  187. redfish_ctl-1.1.0/redfish_ctl.egg-info/SOURCES.txt +192 -0
  188. redfish_ctl-1.1.0/redfish_ctl.egg-info/dependency_links.txt +1 -0
  189. redfish_ctl-1.1.0/redfish_ctl.egg-info/entry_points.txt +4 -0
  190. redfish_ctl-1.1.0/redfish_ctl.egg-info/requires.txt +19 -0
  191. redfish_ctl-1.1.0/redfish_ctl.egg-info/top_level.txt +2 -0
  192. redfish_ctl-1.1.0/run_unit.sh +4 -0
  193. redfish_ctl-1.1.0/setup.cfg +4 -0
  194. redfish_ctl-1.1.0/setup.py +55 -0
@@ -0,0 +1,21 @@
1
+ MIT License
2
+
3
+ Copyright (c) 2023 Mustafa Bayramov
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,3 @@
1
+ include *.py
2
+ include LICENSE
3
+ include *.sh
@@ -0,0 +1,158 @@
1
+ Metadata-Version: 2.1
2
+ Name: redfish_ctl
3
+ Version: 1.1.0
4
+ Summary: Standalone command line tool to interact with Dell iDRAC and other BMCs via the Redfish REST API.
5
+ Home-page: https://github.com/spyroot/redfish_ctl
6
+ Author: Mustafa Bayramov
7
+ Author-email: spyroot@gmail.com
8
+ License: MIT
9
+ Requires-Python: >=3.10
10
+ Description-Content-Type: text/markdown
11
+ Provides-Extra: dev
12
+ Provides-Extra: schema
13
+ Provides-Extra: tui
14
+ License-File: LICENSE
15
+
16
+ # redfish_ctl
17
+
18
+ `redfish_ctl` is a standalone command-line tool I built to drive server BMCs entirely through the
19
+ Redfish REST API — no web UI, no vendor GUI. It wraps 100+ subcommands behind one consistent CLI
20
+ with JSON or YAML output (`--yaml`, and save-to-file), both synchronous and asynchronous calls,
21
+ optional server-side `$expand` on large collection reads, and a read-first, guarded-write model
22
+ (mutating commands preview with `--dry_run` and require `--confirm`). It is vendor-neutral by design — Dell iDRAC,
23
+ Supermicro (including GB300 / Grace-Blackwell and X10), HPE iLO, and generic DMTF Redfish — built on
24
+ a product-neutral Redfish client with the Dell/iDRAC specifics layered on top.
25
+
26
+ What it does across the whole server lifecycle:
27
+
28
+ - **Inventory & health** — system, chassis, manager, processors, memory, PCI, storage, drives,
29
+ network adapters/ports, NVLink ports, ethernet interfaces, and firmware inventory.
30
+ - **BIOS** — read and stage attributes, pending management, the attribute registry, transactional
31
+ snapshots/restore points for rollback, and curated tuning profiles (low-latency, Dell
32
+ System/Workload, Intel, AMD).
33
+ - **Boot** — boot order, one-time boot (UEFI or Legacy), boot sources, and next-boot inference.
34
+ - **Power & reset** — vendor-neutral host reset / power-cycle (discovers `ComputerSystem.Reset`),
35
+ chassis reset, manager reboot, and a guarded `system-reset`.
36
+ - **Storage & RAID** — controllers, drives, volumes, the RAID service, RAID/non-RAID conversion,
37
+ and volume initialize.
38
+ - **Virtual media & OS provisioning** — mount/eject ISOs, one-shot ISO boot, Supermicro OEM
39
+ virtual media (CfgCD), and Dell OEM network-ISO boot.
40
+ - **Serial console & SOL** — report and enable host BIOS serial redirection together with the BMC
41
+ Serial-over-LAN service, in one step, vendor-neutrally.
42
+ - **Sensors & telemetry** — read every chassis sensor and TelemetryService report/definition, plus
43
+ an out-of-band exporter that streams BMC metrics — including GB300 GPU, NVLink, thermal, and power
44
+ — to Prometheus, SignalFx, and Splunk Observability.
45
+ - **Firmware** — inventory and guarded `UpdateService` SimpleUpdate.
46
+ - **Accounts & security** — create/update/delete accounts, SSH-key import, the account and privilege
47
+ services, Secure Boot, and SPDM component-integrity attestation.
48
+ - **Jobs & tasks** — Dell Lifecycle Controller jobs and the standard Redfish Job/Task services,
49
+ with watch/apply/delete.
50
+ - **Config, logs & events** — system config export/import, system and manager logs (SEL), test
51
+ events, the BMC clock, and a `wait` that blocks until the BMC answers after a reboot.
52
+ - **Discovery** — scan a subnet for BMCs, classify their vendor, and crawl a Redfish tree.
53
+
54
+ > The tool was renamed from `idrac_ctl` to `redfish_ctl`. `idrac_ctl` still works as a
55
+ > backward-compatible alias — the `idrac_ctl` command, `import idrac_ctl`, and the legacy
56
+ > `IDRAC_IP`/`IDRAC_USERNAME`/`IDRAC_PASSWORD`/`IDRAC_PORT` env vars all keep working.
57
+
58
+ Author: Mus <spyroot@gmail.com>
59
+
60
+ ## Install
61
+
62
+ Use Python 3.10 or newer.
63
+
64
+ ```bash
65
+ python -m pip install redfish_ctl
66
+ redfish_ctl --version
67
+ ```
68
+
69
+ For local development, use the checked-in conda environment:
70
+
71
+ ```bash
72
+ git clone https://github.com/spyroot/redfish_ctl.git
73
+ cd redfish_ctl
74
+ conda env create -f environment.yml
75
+ conda activate redfish_ctl
76
+ ```
77
+
78
+ ## Connect
79
+
80
+ The CLI reads these environment variables in `redfish_main.py`, so I set them once per shell:
81
+
82
+ ```bash
83
+ export REDFISH_IP=10.0.0.42
84
+ export REDFISH_USERNAME=root
85
+ export REDFISH_PASSWORD='your-password'
86
+ export REDFISH_PORT=443
87
+ ```
88
+
89
+ BMCs usually ship self-signed certificates. TLS verification is off by default; use `--verify-ssl`
90
+ only when the BMC has a certificate chain you trust.
91
+
92
+ ## First Safe Read
93
+
94
+ Start with the host ComputerSystem:
95
+
96
+ ```bash
97
+ redfish_ctl system
98
+ ```
99
+
100
+ A healthy response includes `data.Id`, `data.Name`, and usually `data.PowerState`. If you have `jq`
101
+ installed, this is a compact smoke check:
102
+
103
+ ```bash
104
+ redfish_ctl --nocolor system | jq '.data | {Id, Name, PowerState}'
105
+ ```
106
+
107
+ ## Common Reads
108
+
109
+ ```bash
110
+ redfish_ctl manager
111
+ redfish_ctl chassis
112
+ redfish_ctl sensors
113
+ redfish_ctl firmware_inventory
114
+ redfish_ctl bios --filter ProcCStates,SysMemSize
115
+ redfish_ctl storage-list
116
+ redfish_ctl get_vm
117
+ redfish_ctl logs
118
+ ```
119
+
120
+ `sensors`, defined in `redfish_ctl/sensors/cmd_sensors.py`, follows Chassis sensor links and returns
121
+ temperature, power, fan, and voltage readings with units. `discovery`, defined in
122
+ `redfish_ctl/discovery/cmd_discovery.py`, is the heavier crawl that records what a BMC exposes.
123
+
124
+ ## Vendor Reach
125
+
126
+ Dell iDRAC is the main control target. Supermicro GB300, HPE iLO, and generic DMTF Redfish trees are
127
+ covered by offline fixture corpora, with HPE also covered by the opt-in emulator canary in
128
+ `examples/hpe_ilo_canary.sh`. The current support matrix is in [Vendors](docs/vendors.md).
129
+
130
+ ## Mutating Commands
131
+
132
+ Some commands change real hardware: power, BIOS, boot order, storage conversion, virtual media,
133
+ firmware update, and manager reset. I always read current state first, preview when the command has
134
+ `--show` or `--dry_run`, then verify after the job or task completes.
135
+
136
+ ```bash
137
+ redfish_ctl system-reset --reset_type GracefulRestart --dry_run
138
+ redfish_ctl bios-change --from_spec specs/realtime.opt.spec.json on-reset --show
139
+ redfish_ctl firmware-update --image_uri https://example.invalid/firmware.exe --dry_run
140
+ ```
141
+
142
+ Use `--confirm` only when you mean to perform a guarded action such as `system-reset` or
143
+ `firmware-update`.
144
+
145
+ ## More Docs
146
+
147
+ - [Command reference](docs/commands.md) - registered subcommands and safe workflow patterns.
148
+ - [Examples](examples/README.md) - one-line index of every script under `examples/`.
149
+ - [BIOS profiles](docs/bios-profiles.md) - low-latency, Dell System Profile, custom, Intel, and AMD
150
+ profile examples.
151
+ - [Vendors](docs/vendors.md) - Dell, Supermicro, HPE, and generic Redfish support.
152
+ - [Testing](docs/testing.md) - offline mock tests, vendor corpora, emulator tests, and live-test safety.
153
+ - [Architecture](docs/architecture.md) - Redfish core, iDRAC layer, command registration, and known debt.
154
+ - [Telemetry exporter](docs/telemetry-exporter.md) - BMC metrics for Prometheus and SignalFx.
155
+ - [Telemetry metrics](docs/telemetry-metrics.md) - GB300 MetricReport/MetricReportDefinition reference catalog.
156
+ - [Releasing](docs/releasing.md) - local verification, package build, PyPI upload, and tagging.
157
+ - [Fleet proxy design](docs/redfish-proxy.md) - planned service/controller shape for fleet management.
158
+ - [Scaling and benchmarks](docs/scaling-and-benchmarks.md) - planned concurrency engine and benchmark goals.
@@ -0,0 +1,143 @@
1
+ # redfish_ctl
2
+
3
+ `redfish_ctl` is a standalone command-line tool I built to drive server BMCs entirely through the
4
+ Redfish REST API — no web UI, no vendor GUI. It wraps 100+ subcommands behind one consistent CLI
5
+ with JSON or YAML output (`--yaml`, and save-to-file), both synchronous and asynchronous calls,
6
+ optional server-side `$expand` on large collection reads, and a read-first, guarded-write model
7
+ (mutating commands preview with `--dry_run` and require `--confirm`). It is vendor-neutral by design — Dell iDRAC,
8
+ Supermicro (including GB300 / Grace-Blackwell and X10), HPE iLO, and generic DMTF Redfish — built on
9
+ a product-neutral Redfish client with the Dell/iDRAC specifics layered on top.
10
+
11
+ What it does across the whole server lifecycle:
12
+
13
+ - **Inventory & health** — system, chassis, manager, processors, memory, PCI, storage, drives,
14
+ network adapters/ports, NVLink ports, ethernet interfaces, and firmware inventory.
15
+ - **BIOS** — read and stage attributes, pending management, the attribute registry, transactional
16
+ snapshots/restore points for rollback, and curated tuning profiles (low-latency, Dell
17
+ System/Workload, Intel, AMD).
18
+ - **Boot** — boot order, one-time boot (UEFI or Legacy), boot sources, and next-boot inference.
19
+ - **Power & reset** — vendor-neutral host reset / power-cycle (discovers `ComputerSystem.Reset`),
20
+ chassis reset, manager reboot, and a guarded `system-reset`.
21
+ - **Storage & RAID** — controllers, drives, volumes, the RAID service, RAID/non-RAID conversion,
22
+ and volume initialize.
23
+ - **Virtual media & OS provisioning** — mount/eject ISOs, one-shot ISO boot, Supermicro OEM
24
+ virtual media (CfgCD), and Dell OEM network-ISO boot.
25
+ - **Serial console & SOL** — report and enable host BIOS serial redirection together with the BMC
26
+ Serial-over-LAN service, in one step, vendor-neutrally.
27
+ - **Sensors & telemetry** — read every chassis sensor and TelemetryService report/definition, plus
28
+ an out-of-band exporter that streams BMC metrics — including GB300 GPU, NVLink, thermal, and power
29
+ — to Prometheus, SignalFx, and Splunk Observability.
30
+ - **Firmware** — inventory and guarded `UpdateService` SimpleUpdate.
31
+ - **Accounts & security** — create/update/delete accounts, SSH-key import, the account and privilege
32
+ services, Secure Boot, and SPDM component-integrity attestation.
33
+ - **Jobs & tasks** — Dell Lifecycle Controller jobs and the standard Redfish Job/Task services,
34
+ with watch/apply/delete.
35
+ - **Config, logs & events** — system config export/import, system and manager logs (SEL), test
36
+ events, the BMC clock, and a `wait` that blocks until the BMC answers after a reboot.
37
+ - **Discovery** — scan a subnet for BMCs, classify their vendor, and crawl a Redfish tree.
38
+
39
+ > The tool was renamed from `idrac_ctl` to `redfish_ctl`. `idrac_ctl` still works as a
40
+ > backward-compatible alias — the `idrac_ctl` command, `import idrac_ctl`, and the legacy
41
+ > `IDRAC_IP`/`IDRAC_USERNAME`/`IDRAC_PASSWORD`/`IDRAC_PORT` env vars all keep working.
42
+
43
+ Author: Mus <spyroot@gmail.com>
44
+
45
+ ## Install
46
+
47
+ Use Python 3.10 or newer.
48
+
49
+ ```bash
50
+ python -m pip install redfish_ctl
51
+ redfish_ctl --version
52
+ ```
53
+
54
+ For local development, use the checked-in conda environment:
55
+
56
+ ```bash
57
+ git clone https://github.com/spyroot/redfish_ctl.git
58
+ cd redfish_ctl
59
+ conda env create -f environment.yml
60
+ conda activate redfish_ctl
61
+ ```
62
+
63
+ ## Connect
64
+
65
+ The CLI reads these environment variables in `redfish_main.py`, so I set them once per shell:
66
+
67
+ ```bash
68
+ export REDFISH_IP=10.0.0.42
69
+ export REDFISH_USERNAME=root
70
+ export REDFISH_PASSWORD='your-password'
71
+ export REDFISH_PORT=443
72
+ ```
73
+
74
+ BMCs usually ship self-signed certificates. TLS verification is off by default; use `--verify-ssl`
75
+ only when the BMC has a certificate chain you trust.
76
+
77
+ ## First Safe Read
78
+
79
+ Start with the host ComputerSystem:
80
+
81
+ ```bash
82
+ redfish_ctl system
83
+ ```
84
+
85
+ A healthy response includes `data.Id`, `data.Name`, and usually `data.PowerState`. If you have `jq`
86
+ installed, this is a compact smoke check:
87
+
88
+ ```bash
89
+ redfish_ctl --nocolor system | jq '.data | {Id, Name, PowerState}'
90
+ ```
91
+
92
+ ## Common Reads
93
+
94
+ ```bash
95
+ redfish_ctl manager
96
+ redfish_ctl chassis
97
+ redfish_ctl sensors
98
+ redfish_ctl firmware_inventory
99
+ redfish_ctl bios --filter ProcCStates,SysMemSize
100
+ redfish_ctl storage-list
101
+ redfish_ctl get_vm
102
+ redfish_ctl logs
103
+ ```
104
+
105
+ `sensors`, defined in `redfish_ctl/sensors/cmd_sensors.py`, follows Chassis sensor links and returns
106
+ temperature, power, fan, and voltage readings with units. `discovery`, defined in
107
+ `redfish_ctl/discovery/cmd_discovery.py`, is the heavier crawl that records what a BMC exposes.
108
+
109
+ ## Vendor Reach
110
+
111
+ Dell iDRAC is the main control target. Supermicro GB300, HPE iLO, and generic DMTF Redfish trees are
112
+ covered by offline fixture corpora, with HPE also covered by the opt-in emulator canary in
113
+ `examples/hpe_ilo_canary.sh`. The current support matrix is in [Vendors](docs/vendors.md).
114
+
115
+ ## Mutating Commands
116
+
117
+ Some commands change real hardware: power, BIOS, boot order, storage conversion, virtual media,
118
+ firmware update, and manager reset. I always read current state first, preview when the command has
119
+ `--show` or `--dry_run`, then verify after the job or task completes.
120
+
121
+ ```bash
122
+ redfish_ctl system-reset --reset_type GracefulRestart --dry_run
123
+ redfish_ctl bios-change --from_spec specs/realtime.opt.spec.json on-reset --show
124
+ redfish_ctl firmware-update --image_uri https://example.invalid/firmware.exe --dry_run
125
+ ```
126
+
127
+ Use `--confirm` only when you mean to perform a guarded action such as `system-reset` or
128
+ `firmware-update`.
129
+
130
+ ## More Docs
131
+
132
+ - [Command reference](docs/commands.md) - registered subcommands and safe workflow patterns.
133
+ - [Examples](examples/README.md) - one-line index of every script under `examples/`.
134
+ - [BIOS profiles](docs/bios-profiles.md) - low-latency, Dell System Profile, custom, Intel, and AMD
135
+ profile examples.
136
+ - [Vendors](docs/vendors.md) - Dell, Supermicro, HPE, and generic Redfish support.
137
+ - [Testing](docs/testing.md) - offline mock tests, vendor corpora, emulator tests, and live-test safety.
138
+ - [Architecture](docs/architecture.md) - Redfish core, iDRAC layer, command registration, and known debt.
139
+ - [Telemetry exporter](docs/telemetry-exporter.md) - BMC metrics for Prometheus and SignalFx.
140
+ - [Telemetry metrics](docs/telemetry-metrics.md) - GB300 MetricReport/MetricReportDefinition reference catalog.
141
+ - [Releasing](docs/releasing.md) - local verification, package build, PyPI upload, and tagging.
142
+ - [Fleet proxy design](docs/redfish-proxy.md) - planned service/controller shape for fleet management.
143
+ - [Scaling and benchmarks](docs/scaling-and-benchmarks.md) - planned concurrency engine and benchmark goals.
@@ -0,0 +1,11 @@
1
+ import importlib
2
+ import sys
3
+ from redfish_ctl import redfish_main_ctl
4
+
5
+
6
+ def main():
7
+ try:
8
+ redfish_main_ctl()
9
+ except ModuleNotFoundError:
10
+ print('Invalid command')
11
+ sys.exit(1)
@@ -0,0 +1,36 @@
1
+ #!/usr/bin/env bash
2
+ #
3
+ # Build (and optionally publish) the redfish_ctl distribution.
4
+ #
5
+ # Safe by default: builds sdist + wheel and runs `twine check`, but does NOT
6
+ # upload. Publishing to PyPI is irreversible (versions are immutable), so the
7
+ # upload only happens when you pass --upload explicitly.
8
+ #
9
+ # ./build_dist.sh # build + verify into dist/ (no upload)
10
+ # ./build_dist.sh --upload # build + verify + twine upload dist/*
11
+ #
12
+ # The version stamped on the artifact comes from redfish_ctl/version.py (the
13
+ # single source of truth the CLI also reports via --version).
14
+ set -euo pipefail
15
+
16
+ UPLOAD=0
17
+ [[ "${1:-}" == "--upload" ]] && UPLOAD=1
18
+
19
+ VERSION="$(python setup.py --version)"
20
+ echo ">> redfish_ctl version: ${VERSION}"
21
+
22
+ # Start from a clean dist/ so we never upload a stale artifact.
23
+ rm -rf dist build ./*.egg-info
24
+ python setup.py sdist bdist_wheel
25
+ python -m twine check dist/*
26
+
27
+ echo ">> Built and verified:"
28
+ ls -1 dist/
29
+
30
+ if [[ "${UPLOAD}" -eq 1 ]]; then
31
+ echo ">> Uploading to PyPI (irreversible)..."
32
+ python -m twine upload dist/*
33
+ echo ">> Uploaded redfish_ctl ${VERSION}. Tag the release: git tag v${VERSION} && git push origin v${VERSION}"
34
+ else
35
+ echo ">> Not uploaded. Re-run with --upload to publish, e.g.: ./build_dist.sh --upload"
36
+ fi
@@ -0,0 +1,9 @@
1
+ #!/bin/bash
2
+ # dev only
3
+
4
+ rm dist/*
5
+ python setup.py sdist
6
+ python setup.py bdist_wheel sdist
7
+ twine upload dist/*
8
+
9
+
@@ -0,0 +1,2 @@
1
+ rm -rf dist
2
+ rm -rf build
@@ -0,0 +1,18 @@
1
+ """idrac_ctl — backward-compatible alias for the redfish_ctl package.
2
+
3
+ The tool was renamed ``idrac_ctl`` -> ``redfish_ctl``. This shim keeps
4
+ ``import idrac_ctl`` and ``from idrac_ctl.<submodule> import ...`` working (resolving
5
+ to the same objects as ``redfish_ctl``) for existing callers. New code should import
6
+ ``redfish_ctl``. See .internal/REDFISH_CTL_RENAME_PLAN.md.
7
+ """
8
+ import importlib
9
+ import sys
10
+
11
+ # Import the real package (registers the whole command tree via __init_subclass__),
12
+ # then alias it and every submodule under the legacy idrac_ctl name using the SAME
13
+ # module objects, so identities hold across both names.
14
+ _real = importlib.import_module("redfish_ctl")
15
+
16
+ for _name, _mod in list(sys.modules.items()):
17
+ if _name == "redfish_ctl" or _name.startswith("redfish_ctl."):
18
+ sys.modules["idrac_ctl" + _name[len("redfish_ctl"):]] = _mod
@@ -0,0 +1,11 @@
1
+ """Main entry for redfish_ctl
2
+
3
+ The main interface consumed is iDRAC Manager class.
4
+ Each command registered dynamically and dispatch to respected execute method
5
+ by invoking request from IDRAC Manager.
6
+
7
+ Author Mus spyroot@gmail.com
8
+ """
9
+ from redfish_ctl.redfish_main import redfish_main_ctl
10
+ if __name__ == "__main__":
11
+ redfish_main_ctl()
@@ -0,0 +1,9 @@
1
+ #!/bin/bash
2
+ # local install , dev only.
3
+ conda create -n test1 python=3.10
4
+ conda activate test1
5
+ python -m pip install --upgrade setuptools
6
+
7
+ python setup.py sdist
8
+ python setup.py bdist_wheel sdist
9
+ python setup.py install
@@ -0,0 +1,3 @@
1
+ python idrac_ctl.py eject_vm
2
+ python idrac_ctl.py insert_vm --uri_path http://10.241.7.99/ph5-rt-refresh_adj_offline_testnf_os5_flex22.iso
3
+ python idrac_ctl.py boot-one-shot --device Cd -r
@@ -0,0 +1,54 @@
1
+ # Tooling configuration for redfish_ctl.
2
+ #
3
+ # Packaging metadata still lives in setup.py (name, version, entry_points).
4
+ # This file only adds the build backend and the lint/type/test tool config so
5
+ # the two do not declare project metadata twice.
6
+
7
+ [build-system]
8
+ requires = ["setuptools>=67.0.0", "wheel"]
9
+ build-backend = "setuptools.build_meta"
10
+
11
+ [tool.ruff]
12
+ # redfish_ctl targets Python 3.10+ (see setup.py python_requires).
13
+ target-version = "py310"
14
+ line-length = 100
15
+ extend-exclude = ["build", "dist", "venv", ".venv"]
16
+
17
+ [tool.ruff.lint]
18
+ # F = pyflakes (catches the duplicate/unused imports cleaned up in this change),
19
+ # E/W = pycodestyle, I = import sorting.
20
+ select = ["F", "E", "W", "I"]
21
+ # E501 (line length) is noisy on this legacy tree; enforce it gradually.
22
+ ignore = ["E501"]
23
+
24
+ [tool.coverage.run]
25
+ source = ["redfish_ctl"]
26
+ omit = ["redfish_ctl/json_responses/*", "*/tests/*"]
27
+
28
+ [tool.coverage.report]
29
+ show_missing = true
30
+
31
+ [tool.mypy]
32
+ python_version = "3.10"
33
+ # The tree is only partially typed today; start lenient and tighten per-module.
34
+ ignore_missing_imports = true
35
+ warn_unused_ignores = true
36
+ warn_redundant_casts = true
37
+ check_untyped_defs = false
38
+
39
+ [tool.pytest.ini_options]
40
+ testpaths = ["tests"]
41
+ # Collect only the test_*.py convention (skips stray *_test.py scratch files).
42
+ python_files = ["test_*.py"]
43
+ # Make the repo root importable so `import redfish_ctl` resolves to the source
44
+ # tree regardless of how pytest is launched.
45
+ pythonpath = ["."]
46
+ # Tests that need a reachable iDRAC must be marked @pytest.mark.live; they are
47
+ # skipped automatically by tests/conftest.py unless IDRAC_IP is set.
48
+ markers = [
49
+ "live: integration test that requires a reachable iDRAC (set IDRAC_IP to run)",
50
+ "schema: validates fixtures against DMTF Redfish schemas (run tools/fetch_schemas.sh first)",
51
+ ]
52
+ filterwarnings = [
53
+ "ignore:Unverified HTTPS request",
54
+ ]
@@ -0,0 +1,146 @@
1
+ # ruff: noqa: F403, I001
2
+ # from bios import BiosQuery
3
+ # from hardware import HardwareInventorQuery
4
+ from .redfish_shared import *
5
+
6
+ from .system.cmd_system import *
7
+ from .system.cmd_system_config import *
8
+ from .system.cmd_system_import import *
9
+ #
10
+ from .cmd_boot import *
11
+ from .dell_lc.cmd_dell_lc_api import *
12
+ from .dell_lc.cmd_dell_lc_rs import *
13
+ from .dell_lc.cmd_dell_lc_services import *
14
+ #
15
+ # compute
16
+ from .compute.cmd_power_state import *
17
+ from .compute.cmd_compute_setting import *
18
+
19
+ from .idrac_shared import *
20
+ from .raid.cmd_raid_service import *
21
+ #
22
+ # bios commands
23
+ from .bios.cmd_bios import *
24
+ from .bios.cmd_bios_clear_pending import *
25
+ from .bios.cmd_bios_pending import *
26
+ from .bios.cmd_change_boot_order import *
27
+ from .bios.bios_registry import *
28
+ from .bios.cmd_change_bios import *
29
+ from .bios.cmd_bios_snapshot import *
30
+ from .bios.cmd_bios_reset_default import *
31
+ #
32
+ from .attribute.cmd_attribute import *
33
+ from .attribute.cmd_attribute_clear_pending import *
34
+ from .attribute.cmd_attribute_update import *
35
+ #
36
+ #
37
+ # # jobs command
38
+ from .jobs.cmd_jobs import *
39
+ from .jobs.cmd_job_get import *
40
+ from .jobs.cmd_job_services import *
41
+ from .jobs.cmd_job_watch import *
42
+ from .jobs.cmd_job_del import *
43
+ from .jobs.cmd_job_dell_services import *
44
+ from .jobs.cmd_job_delete_all import *
45
+ from .jobs.cmd_job_apply import *
46
+ #
47
+ # # firmwares cmds
48
+ from .firmware.cmd_firmware import *
49
+ from .firmware.cmd_firmware_inv import *
50
+
51
+ from .pci.cmd_pci import *
52
+
53
+ # manager cmds
54
+ from .manager.cmd_manager import *
55
+ from .manager.cmd_manager_reset import *
56
+
57
+
58
+ # virtual medial cmds
59
+ from .virtual_media.cmd_virtual_media_get import *
60
+ from .virtual_media.cmd_virtual_media_insert import *
61
+ from .virtual_media.cmd_virtual_media_eject import *
62
+ from .virtual_media.cmd_smc_virtual_media import *
63
+ from .cmd_current_boot import *
64
+
65
+ from .cmd_query import *
66
+ from .cmd_wait import *
67
+
68
+ # storage
69
+ from .storage.cmd_storage_controllers import *
70
+ from .storage.cmd_storage_list import *
71
+ from .storage.cmd_storage_get import *
72
+ from .storage.cmd_drives import *
73
+ from .storage.cmd_convert_none_raid import *
74
+ from .storage.cmd_convert_to_raid import *
75
+
76
+ # chassis cmd
77
+ from .chassis.cmd_chassis_query import *
78
+ from .chassis.cmd_chasis_reset import *
79
+ from .sensors.cmd_sensors import *
80
+ from .telemetry.cmd_metric_reports import *
81
+ from .telemetry.cmd_metric_definitions import *
82
+ from .telemetry.cmd_exporter import *
83
+ from .component_integrity.cmd_component_integrity import *
84
+ from .network.cmd_network_adapters import *
85
+ from .ports.cmd_nvlink_ports import *
86
+ from .actions.cmd_action_list import *
87
+ from .events.cmd_event_submit_test import *
88
+ from .compute.cmd_system_reset import *
89
+ from .logs.cmd_logs import *
90
+ from .network.cmd_ethernet_interfaces import *
91
+ from .security.cmd_secure_boot import *
92
+ from .firmware.cmd_firmware_update import *
93
+ from .telemetry.cmd_telemetry_triggers import *
94
+ from .network.cmd_network_ports import *
95
+ from .oem.cmd_oem_info import *
96
+ from .manager.cmd_console_info import *
97
+ from .serial_console.cmd_serial_console import *
98
+ from .manager.cmd_manager_time import *
99
+ from .chassis.cmd_chassis_query import *
100
+
101
+ # dell oem attach
102
+ from .delloem.delloem_attach_status import *
103
+ from .delloem.delloem_actions import *
104
+ from .delloem.delloem_attach import *
105
+ from .delloem.delloem_detach import *
106
+ from .delloem.delloem_disconnect import *
107
+ from .delloem.delloem_get_networkios import *
108
+ from .delloem.delloem_boot_netios import *
109
+ from .delloem.delloem_os_deployment import *
110
+
111
+
112
+ # tasks
113
+ from .tasks.cmd_tasks_list import *
114
+ from .tasks.cmd_tasks_get import *
115
+ from .tasks.cmd_task_watch import *
116
+
117
+ from .volumes.cmd_initilize import *
118
+ from .volumes.cmd_volumes import *
119
+ from .volumes.cmd_virtual_disk import *
120
+
121
+ # boot options
122
+ from .boot_options.cmd_boot_option_list import *
123
+ from .boot_options.cmd_boot_options_query import *
124
+
125
+
126
+ # boot sources
127
+ from .boot_source.cmd_boot_one_shot import *
128
+ from .boot_source.cmd_boot_settings import *
129
+ from .boot_source.cmd_boot_source_get import *
130
+ from .boot_source.cmd_clear_pending import *
131
+ from .boot_source.cmd_pending import *
132
+ from .boot_source.cmd_enable import *
133
+ from .boot_source.cmd_update import *
134
+ from .boot_source.cmd_boot_source_registry import *
135
+ from .boot_source.cmd_boot_state import *
136
+
137
+ # account
138
+ from .accounts.cmd_accounts import *
139
+ from .accounts.cmd_account_manage import *
140
+ from .accounts.cmd_account_sshkey import *
141
+ from .accounts.cmd_query_account import *
142
+ from .accounts.cmd_account_svc import *
143
+ from .accounts.cmd_privilage_registry import *
144
+
145
+ from .discovery.cmd_discovery import *
146
+ from .discovery.cmd_bmc_scan import *
@@ -0,0 +1,3 @@
1
+ from redfish_ctl.redfish_main import redfish_main_ctl
2
+ if __name__ == "__main__":
3
+ redfish_main_ctl()
File without changes