redfish-python-sdk 1.0.0__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 (56) hide show
  1. redfish_python_sdk-1.0.0.dist-info/METADATA +164 -0
  2. redfish_python_sdk-1.0.0.dist-info/RECORD +56 -0
  3. redfish_python_sdk-1.0.0.dist-info/WHEEL +5 -0
  4. redfish_python_sdk-1.0.0.dist-info/licenses/LICENSE +29 -0
  5. redfish_python_sdk-1.0.0.dist-info/top_level.txt +1 -0
  6. redfish_sdk/__init__.py +63 -0
  7. redfish_sdk/client.py +1894 -0
  8. redfish_sdk/exceptions.py +56 -0
  9. redfish_sdk/http_client.py +452 -0
  10. redfish_sdk/managers/__init__.py +21 -0
  11. redfish_sdk/managers/_log_helpers.py +144 -0
  12. redfish_sdk/managers/account.py +96 -0
  13. redfish_sdk/managers/chassis.py +327 -0
  14. redfish_sdk/managers/event.py +264 -0
  15. redfish_sdk/managers/managers.py +120 -0
  16. redfish_sdk/managers/registries.py +48 -0
  17. redfish_sdk/managers/session.py +130 -0
  18. redfish_sdk/managers/systems.py +630 -0
  19. redfish_sdk/managers/task.py +89 -0
  20. redfish_sdk/managers/update.py +99 -0
  21. redfish_sdk/managers/update_strategies/__init__.py +51 -0
  22. redfish_sdk/managers/update_strategies/base.py +101 -0
  23. redfish_sdk/managers/update_strategies/h3c.py +140 -0
  24. redfish_sdk/managers/update_strategies/inspur.py +89 -0
  25. redfish_sdk/managers/update_strategies/lenovo.py +59 -0
  26. redfish_sdk/managers/update_strategies/nettrix.py +56 -0
  27. redfish_sdk/managers/update_strategies/registry.py +72 -0
  28. redfish_sdk/managers/update_strategies/vendor_detect.py +111 -0
  29. redfish_sdk/managers/update_strategies/xfusion.py +60 -0
  30. redfish_sdk/managers/update_strategies/zte.py +68 -0
  31. redfish_sdk/models/__init__.py +55 -0
  32. redfish_sdk/models/account.py +60 -0
  33. redfish_sdk/models/chassis.py +86 -0
  34. redfish_sdk/models/check.py +231 -0
  35. redfish_sdk/models/common.py +102 -0
  36. redfish_sdk/models/drive.py +53 -0
  37. redfish_sdk/models/event.py +64 -0
  38. redfish_sdk/models/fru.py +59 -0
  39. redfish_sdk/models/gpu.py +33 -0
  40. redfish_sdk/models/logs.py +56 -0
  41. redfish_sdk/models/managers.py +153 -0
  42. redfish_sdk/models/memory.py +50 -0
  43. redfish_sdk/models/network_adapter.py +76 -0
  44. redfish_sdk/models/oem.py +173 -0
  45. redfish_sdk/models/pcie_device.py +89 -0
  46. redfish_sdk/models/power.py +92 -0
  47. redfish_sdk/models/processor.py +50 -0
  48. redfish_sdk/models/registry.py +34 -0
  49. redfish_sdk/models/resource_key.py +70 -0
  50. redfish_sdk/models/root.py +50 -0
  51. redfish_sdk/models/session.py +42 -0
  52. redfish_sdk/models/storage.py +77 -0
  53. redfish_sdk/models/systems.py +194 -0
  54. redfish_sdk/models/task.py +54 -0
  55. redfish_sdk/models/thermal.py +111 -0
  56. redfish_sdk/models/update.py +55 -0
@@ -0,0 +1,164 @@
1
+ Metadata-Version: 2.4
2
+ Name: redfish-python-sdk
3
+ Version: 1.0.0
4
+ Summary: A Python SDK for interacting with Redfish-compliant BMC endpoints
5
+ Author: RedNote Infrastructure
6
+ License: BSD 3-Clause License
7
+
8
+ Copyright (c) 2025-present, Xingyin Information Technology Co., Ltd.
9
+ All rights reserved.
10
+
11
+ Redistribution and use in source and binary forms, with or without
12
+ modification, are permitted provided that the following conditions are met:
13
+
14
+ 1. Redistributions of source code must retain the above copyright notice, this
15
+ list of conditions and the following disclaimer.
16
+
17
+ 2. Redistributions in binary form must reproduce the above copyright notice,
18
+ this list of conditions and the following disclaimer in the documentation
19
+ and/or other materials provided with the distribution.
20
+
21
+ 3. Neither the name of the copyright holder nor the names of its
22
+ contributors may be used to endorse or promote products derived from
23
+ this software without specific prior written permission.
24
+
25
+ THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
26
+ AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
27
+ IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
28
+ DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
29
+ FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
30
+ DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
31
+ SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
32
+ CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
33
+ OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
34
+ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
35
+
36
+ Project-URL: Homepage, https://github.com/rednote-infra/redfish-python-sdk
37
+ Project-URL: Repository, https://github.com/rednote-infra/redfish-python-sdk
38
+ Project-URL: Issues, https://github.com/rednote-infra/redfish-python-sdk/issues
39
+ Project-URL: Changelog, https://github.com/rednote-infra/redfish-python-sdk/blob/main/CHANGELOG.md
40
+ Keywords: redfish,bmc,ipmi,server,oob
41
+ Classifier: Development Status :: 4 - Beta
42
+ Classifier: Intended Audience :: System Administrators
43
+ Classifier: Intended Audience :: Developers
44
+ Classifier: License :: OSI Approved :: BSD License
45
+ Classifier: Programming Language :: Python :: 3
46
+ Classifier: Programming Language :: Python :: 3.9
47
+ Classifier: Programming Language :: Python :: 3.10
48
+ Classifier: Programming Language :: Python :: 3.11
49
+ Classifier: Programming Language :: Python :: 3.12
50
+ Classifier: Programming Language :: Python :: 3.13
51
+ Classifier: Topic :: System :: Hardware
52
+ Classifier: Topic :: System :: Networking
53
+ Classifier: Topic :: System :: Systems Administration
54
+ Classifier: Typing :: Typed
55
+ Requires-Python: >=3.9
56
+ Description-Content-Type: text/markdown
57
+ License-File: LICENSE
58
+ Requires-Dist: requests>=2.31.0
59
+ Requires-Dist: pydantic>=2.5.0
60
+ Requires-Dist: urllib3>=2.0.0
61
+ Provides-Extra: dev
62
+ Requires-Dist: pytest>=7.0.0; extra == "dev"
63
+ Requires-Dist: ruff>=0.4.0; extra == "dev"
64
+ Dynamic: license-file
65
+
66
+ # Redfish Python SDK
67
+
68
+ [English](README.md) | [中文](README_zh.md)
69
+
70
+ > A lightweight Python SDK for managing server BMCs (Baseboard Management Controllers) via the [DMTF Redfish](https://www.dmtf.org/standards/redfish) protocol. Covers system inventory, hardware inspection, power control, boot management, event subscriptions, and more.
71
+
72
+ ## Features
73
+
74
+ - **Comprehensive hardware queries** — CPU, memory, drives, GPU, NIC, PCIe, PSU, fans — one line of code each
75
+ - **Power & boot management** — power on/off, restart, PXE/HDD/BIOS boot source switching
76
+ - **Multi-vendor compatible** — auto-adapts to OEM extensions from Huawei, xFusion, Lenovo, HPE, Dell, and others
77
+ - **Pydantic v2 models** — all return values are strongly-typed objects with full IDE autocompletion
78
+ - **Context manager** — `with` statement support for automatic connection cleanup
79
+ - **Minimal dependencies** — only `requests`, `pydantic`, and `urllib3`
80
+
81
+ ## Requirements
82
+
83
+ - Python >= 3.9
84
+ - A network-reachable Redfish-compliant BMC endpoint
85
+
86
+ ## Installation
87
+
88
+ ```bash
89
+ # Install from PyPI
90
+ pip install redfish-python-sdk
91
+
92
+ # Or install from GitHub
93
+ pip install git+https://github.com/rednote-infra/redfish-python-sdk.git
94
+
95
+ # Install a specific version
96
+ pip install redfish-python-sdk==1.0.0
97
+ pip install git+https://github.com/rednote-infra/redfish-python-sdk.git@v1.0.0
98
+
99
+ # In requirements.txt
100
+ # redfish-python-sdk>=1.0.0
101
+ ```
102
+
103
+ ## Quick Start
104
+
105
+ > **Credential management**: All BMC credentials should be injected via environment variables. **Never** hardcode them in your source code.
106
+ > Before running examples or tests, set `export BMC_IP=...`, `export BMC_USER=...`, `export BMC_PASSWORD=...`.
107
+
108
+ ```python
109
+ import os
110
+ from redfish_sdk import RedfishClient
111
+
112
+ # Connect to BMC (credentials from environment variables)
113
+ client = RedfishClient(
114
+ host=os.environ["BMC_IP"],
115
+ username=os.environ["BMC_USER"],
116
+ password=os.environ["BMC_PASSWORD"],
117
+ )
118
+
119
+ # Get system info
120
+ system = client.systems.get()
121
+ print(f"Server: {system.manufacturer} {system.model}")
122
+ print(f"SN: {system.serial_number}")
123
+ print(f"Power: {system.power_state}")
124
+
125
+ # Get CPU info
126
+ for cpu in client.get_processors():
127
+ print(f"CPU: {cpu.model}, {cpu.total_cores} cores / {cpu.total_threads} threads")
128
+
129
+ # Get memory info
130
+ for mem in client.get_memory():
131
+ print(f"DIMM: {mem.manufacturer} {(mem.capacity_mib or 0) // 1024} GB")
132
+
133
+ # Get drive info
134
+ for drive in client.get_drives():
135
+ print(f"Drive: {drive.model} {(drive.capacity_bytes or 0) / 1e12:.1f} TB")
136
+
137
+ # Don't forget to close
138
+ client.close()
139
+ ```
140
+
141
+ ## Testing
142
+
143
+ ```bash
144
+ # Run unit tests (no BMC or env vars required)
145
+ pytest tests/test_models_mock.py tests/test_client_mock.py -v
146
+
147
+ # Run offline tests (using pre-collected JSON data)
148
+ export REDFISH_JSON_DIR="./testdata"
149
+ pytest tests/test_offline_json.py -v
150
+
151
+ # Run integration tests (requires a real BMC)
152
+ export BMC_IP="<your-bmc-ip>"
153
+ export BMC_USER="<your-bmc-user>"
154
+ export BMC_PASSWORD="<your-bmc-password>"
155
+ pytest tests/test_real_bmc.py -v
156
+ ```
157
+
158
+ ## Contributing
159
+
160
+ Contributions are welcome! Please feel free to submit a Pull Request.
161
+
162
+ ## License
163
+
164
+ This project is licensed under the [BSD 3-Clause License](LICENSE).
@@ -0,0 +1,56 @@
1
+ redfish_python_sdk-1.0.0.dist-info/licenses/LICENSE,sha256=c-oS85b6_bshaoIKznGzDhL7xHsBmGmrGIQW9uzdNow,1556
2
+ redfish_sdk/__init__.py,sha256=QArSavbes18UneMc6kPr6sRTB-1nd47UeAlH5ZYeMlc,1600
3
+ redfish_sdk/client.py,sha256=ngT7omv9xN_XMB-fUKcXG471psg7pduFSXwL7tLhFII,65890
4
+ redfish_sdk/exceptions.py,sha256=DstyiXCMiDJIDXZbZX-RRGVcMurC2ALzyuwP8MW79xM,1712
5
+ redfish_sdk/http_client.py,sha256=DDfS1x8pFyhpvEc7dcigrxqfzma7pWkyG_fpeDAcppw,15754
6
+ redfish_sdk/managers/__init__.py,sha256=T4p9mhvN7boaeTY2OF_i3aVkLAk5z5kMP8J2ldk6VYY,601
7
+ redfish_sdk/managers/_log_helpers.py,sha256=iZezsU5lRoH2NSG7onBOWfjTbhjid9eHrSIKMMi4b-k,5592
8
+ redfish_sdk/managers/account.py,sha256=0P1OiRfgMJ67njBpdBCCA8OC-Bj_RiUVihCFc2cMa0k,2423
9
+ redfish_sdk/managers/chassis.py,sha256=g6ILMsApw-XdqkQQnRJvcymu8AQEooFV-PhvvZMVv_s,11145
10
+ redfish_sdk/managers/event.py,sha256=v_dHN3AcwlxKVaxQLR8pSAydnJIzuaU6x0NuY6nfteg,10765
11
+ redfish_sdk/managers/managers.py,sha256=asQYQzKoAtCdr0PBZhYt4danXxlLGrTbQX5IWYxpl2Y,3330
12
+ redfish_sdk/managers/registries.py,sha256=DP_0s3deTJMELklOM_SVbOuzZfGtpuC_igOOdFwdD48,1074
13
+ redfish_sdk/managers/session.py,sha256=6D6UAn2fl_u3ETqe-6Y6NxWxHPyqmlcM5RBHMo6cLW8,3691
14
+ redfish_sdk/managers/systems.py,sha256=6Q1lbptyT5Y-TQ-m2ktzNjyMzvltZu3cRxFtrdVg80E,22475
15
+ redfish_sdk/managers/task.py,sha256=jLPIOZ8BzAov1JIROrFob88ZYgI6CJr_u0-UFWsG7gc,2212
16
+ redfish_sdk/managers/update.py,sha256=eIcLc0ySjT_Z2NLAo95nlouoJVWodtpt3OGx0H1SwXw,3420
17
+ redfish_sdk/managers/update_strategies/__init__.py,sha256=9IiK0OunND6kDJkE2hQ03xczPft8iX12zGd-wgLVwkM,1994
18
+ redfish_sdk/managers/update_strategies/base.py,sha256=JDubTxr4ZdeDGX9wCZvd2V-1MrCJOcudhui_WzRuUA4,3144
19
+ redfish_sdk/managers/update_strategies/h3c.py,sha256=_h9v8hJ-iuMoyZmsLflPiLe1P_oCEQUXBxLnpeC6jps,4698
20
+ redfish_sdk/managers/update_strategies/inspur.py,sha256=Q6dSyb50ff4yHFfJtxtFoolKV5PX0nmD1tjbTSyYvOc,3220
21
+ redfish_sdk/managers/update_strategies/lenovo.py,sha256=7fbkn_s-UckFWpTtnU_CVnb01TvYplt6-_LDQ3xnRAs,1694
22
+ redfish_sdk/managers/update_strategies/nettrix.py,sha256=LG0KIj8PEfDMPhkFZ0mw7VkHSMAloD9lWHY3OBtHmwg,1562
23
+ redfish_sdk/managers/update_strategies/registry.py,sha256=q7GShrZpIwCqAfro559uErQGGALDW7Cp6ep7EAZwGWc,2162
24
+ redfish_sdk/managers/update_strategies/vendor_detect.py,sha256=7j6c9AaBCcH0boqGJcOglLANbRMmpXThkczoSaxTRVk,3661
25
+ redfish_sdk/managers/update_strategies/xfusion.py,sha256=ySVA7Zmf69N0Rse1wjO9jc3HsNMtlLxDC6NQSsZ9Iw8,1873
26
+ redfish_sdk/managers/update_strategies/zte.py,sha256=E_GHv0_5Y9JOMU8VyqXjdkCZi5Ga8WrM1gDrzjIbDEU,2092
27
+ redfish_sdk/models/__init__.py,sha256=-8wGiEGvxSPHsowUxqZCF5ehuboqAmIPtERzQKkuxgM,2575
28
+ redfish_sdk/models/account.py,sha256=GW7O1_fM4h-O6i54sySklZodQK6d5GvcKEAtq5AgO9Q,2410
29
+ redfish_sdk/models/chassis.py,sha256=BmSH0Ce8-BQKp78ZOE8RJhidtMeeTMollYfo4rDRuek,3320
30
+ redfish_sdk/models/check.py,sha256=MiIDLQbwDrTNNSdmWCgq3qHbOKUy2IwB7BqEKS4q-RY,8610
31
+ redfish_sdk/models/common.py,sha256=4klrDi8AqFleLpCoORIhMqxYp5oGjFa6JvyuGXCTRrs,3442
32
+ redfish_sdk/models/drive.py,sha256=tCfGE5AoSo9m7RpBaJ67FFksvnYe-oZBrMFaHgCKNnE,2482
33
+ redfish_sdk/models/event.py,sha256=r1XK0st4qTdgQR2Tspg9hVvUelTOBsUlX8VGKNSclfQ,2893
34
+ redfish_sdk/models/fru.py,sha256=14FUO370IUeGQWK1-_sl07t9wr5jTUdgoPjo5TlnqH4,2087
35
+ redfish_sdk/models/gpu.py,sha256=lms5IhjMVp53FR6XPNFb5DMUvyBkNNDS7vrpyJBNawA,1029
36
+ redfish_sdk/models/logs.py,sha256=rjqZ_TvSl-wTqqgdSLOdmP3qL8_YLQj-AXvVV6Si9ow,2327
37
+ redfish_sdk/models/managers.py,sha256=q52_f4I6tgvl31hV11T-ZJ_ox2NxzOrIHetF_jWlVJc,7112
38
+ redfish_sdk/models/memory.py,sha256=etR_8E7GR8qKMdy5uToZyoXWkM227belCNX5As57ETo,2264
39
+ redfish_sdk/models/network_adapter.py,sha256=QQncK23c7R176jAjnrrnDnZEUllvAwXRrmPwFUZ1B9c,3047
40
+ redfish_sdk/models/oem.py,sha256=4HSSj29XmCbo_oue4RAFIZS0031pWNNF_I-sllnBKoI,7314
41
+ redfish_sdk/models/pcie_device.py,sha256=d28UK1QFKpR-5rdPZF5Oxx_gjm_4P4mYTrjs8sO6MqI,4221
42
+ redfish_sdk/models/power.py,sha256=-IYTb9zkpx9MFZoG_ILzq2mMniHpSD5o8Y1m17MAG10,4380
43
+ redfish_sdk/models/processor.py,sha256=2K-Xpb0W5T9MDklI0LjztvKeRaqMx47mCcQ6kTE0sB4,2333
44
+ redfish_sdk/models/registry.py,sha256=P8N680qfhPYqUNU07AE651y25TAq4tgTX0VA1qGYz5I,1137
45
+ redfish_sdk/models/resource_key.py,sha256=_BW1ddJkPzk4xAIW_0ffESw88ocJ_Afa5-hYfIIhbrg,2196
46
+ redfish_sdk/models/root.py,sha256=KYKHA3iAP1MD56wJOk_dT1-z0tiaa5yDI1qGESn7VHs,1919
47
+ redfish_sdk/models/session.py,sha256=jDOzrlbPFowEibcSHLpzTzmSvh-gww3OT5E2jACNluU,1402
48
+ redfish_sdk/models/storage.py,sha256=20PXb_9cGkOXZtMxujJ70iq0hvovbhxrjh5Afcvm2LM,2982
49
+ redfish_sdk/models/systems.py,sha256=qsvY2j9SreEpBKxULieCHIJ8on4-L-BWtwH6rkK8uwY,8372
50
+ redfish_sdk/models/task.py,sha256=OcFEg2QCa76BVx2-8pJ56qi86snp3X5GcLbXMUCReRU,1911
51
+ redfish_sdk/models/thermal.py,sha256=bYE2QPYnV8PJ5TZYkenL_vHUPSigO_-5gqSdSCXqgPk,5246
52
+ redfish_sdk/models/update.py,sha256=pvhqD1YaKdSr6skKk6TZL8Ooyw-Xc8K5NfM5K_phHTQ,2249
53
+ redfish_python_sdk-1.0.0.dist-info/METADATA,sha256=VkbwlbUPFwDj1kHQMDQUIM0yc0rrqZ4zkfRZBhAGv1w,6463
54
+ redfish_python_sdk-1.0.0.dist-info/WHEEL,sha256=K260EYznzXsJYBQGqmI8VTxEdiZYNvDZwW9cBh9-_MA,91
55
+ redfish_python_sdk-1.0.0.dist-info/top_level.txt,sha256=FrQ9nZEfApAL5bgzTmKBMWKBxFjr3-R7Zcvga0D_RdY,12
56
+ redfish_python_sdk-1.0.0.dist-info/RECORD,,
@@ -0,0 +1,5 @@
1
+ Wheel-Version: 1.0
2
+ Generator: setuptools (83.0.0)
3
+ Root-Is-Purelib: true
4
+ Tag: py3-none-any
5
+
@@ -0,0 +1,29 @@
1
+ BSD 3-Clause License
2
+
3
+ Copyright (c) 2025-present, Xingyin Information Technology Co., Ltd.
4
+ All rights reserved.
5
+
6
+ Redistribution and use in source and binary forms, with or without
7
+ modification, are permitted provided that the following conditions are met:
8
+
9
+ 1. Redistributions of source code must retain the above copyright notice, this
10
+ list of conditions and the following disclaimer.
11
+
12
+ 2. Redistributions in binary form must reproduce the above copyright notice,
13
+ this list of conditions and the following disclaimer in the documentation
14
+ and/or other materials provided with the distribution.
15
+
16
+ 3. Neither the name of the copyright holder nor the names of its
17
+ contributors may be used to endorse or promote products derived from
18
+ this software without specific prior written permission.
19
+
20
+ THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
21
+ AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
22
+ IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
23
+ DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
24
+ FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
25
+ DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
26
+ SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
27
+ CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
28
+ OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
29
+ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
@@ -0,0 +1 @@
1
+ redfish_sdk
@@ -0,0 +1,63 @@
1
+ """
2
+ Redfish Python SDK
3
+
4
+ A Python SDK for interacting with Redfish-compliant BMC (Baseboard Management Controller)
5
+ endpoints.
6
+
7
+ Quick start:
8
+ import os
9
+ from redfish_sdk import RedfishClient
10
+
11
+ # Credentials are read from environment variables:
12
+ # export BMC_IP="<bmc-ip>"
13
+ # export BMC_USER="<bmc-user>"
14
+ # export BMC_PASSWORD="<bmc-password>"
15
+ client = RedfishClient(
16
+ host=os.environ["BMC_IP"],
17
+ username=os.environ["BMC_USER"],
18
+ password=os.environ["BMC_PASSWORD"],
19
+ )
20
+
21
+ # Get system information
22
+ system = client.get_system()
23
+ print(f"System: {system.manufacturer} {system.model}")
24
+ print(f"Power: {system.power_state}")
25
+ print(f"SN: {system.serial_number}")
26
+
27
+ client.close()
28
+ """
29
+ from .client import RedfishClient
30
+ from .exceptions import (
31
+ RedfishAuthError,
32
+ RedfishConnectionError,
33
+ RedfishException,
34
+ RedfishNotFoundError,
35
+ RedfishTimeoutError,
36
+ RedfishValidationError,
37
+ )
38
+ from .models.drive import Drive
39
+ from .models.event import EventService, Subscription
40
+ from .models.logs import Log, LogEntry
41
+ from .models.resource_key import RedfishResource
42
+ from .models.systems import BootOption
43
+
44
+ __version__ = "1.0.0"
45
+ __author__ = "RedNote Infrastructure"
46
+
47
+ __all__ = [
48
+ "RedfishClient",
49
+ "RedfishResource",
50
+ "RedfishException",
51
+ "RedfishNotFoundError",
52
+ "RedfishAuthError",
53
+ "RedfishConnectionError",
54
+ "RedfishTimeoutError",
55
+ "RedfishValidationError",
56
+ # Models commonly used at API boundary.
57
+ "BootOption",
58
+ "Drive",
59
+ "EventService",
60
+ "Log",
61
+ "LogEntry",
62
+ "Subscription",
63
+ ]