Documentation for ucscsdk 0.9.0.10 — the Cisco UCS Central Python SDK
(Apache-2.0).
Not UCS Manager. That is the separate
ucsmsdkpackage. Different API, different class set; examples do not transfer.
New to the SDK → guides/01-getting-started.md
Have a specific task:
| I want to… | Read |
|---|---|
| understand DNs and RNs | 02 — information model |
| connect, authenticate, use a proxy | 03 — connecting and auth |
| find objects | 04 — querying |
| filter query results | 05 — filters |
| create, change or delete something | 06 — create, modify, delete |
| batch work or use threads | 07 — transactions and threading |
| wait for an async operation | 08 — events |
| understand a failure | 09 — error handling |
| back up or restore config | 10 — backup, export, import |
| register a UCS domain | 11 — domain management |
| manage firmware | 12 — firmware |
| collect tech support | 13 — tech support |
| turn captured XML into code | 14 — xml to python |
| call a raw XML method | 15 — advanced |
Look up a class or method → reference/mo/index.md · reference/methods.md
Understand how it works inside → architecture · request lifecycle · metadata system
Agent? Read llms.txt
Then agents/AGENTS.md — recipes, DN patterns, top-50 classes, and an explicit do-not-do list.
Machine-readable data:
| File | Use |
|---|---|
agents/mo-index.json |
537K routing index — load whole |
agents/mo-details.jsonl |
one record per line — grep '"class_id": "LsServer"' |
agents/api-index.json |
handle surface, 122 methods, exceptions, filters |
| Managed object classes | 1,831 across 94 packages |
| Object properties | 24,998 |
| XML methods | 122 |
| Hand-written guides | 15 |
Every class, property, constant, signature, link and file.py:NN reference in these docs is
checked against the installed package by _tools/verify_docs.py:
$ /usr/bin/python3 docs/_tools/verify_docs.py
all 12877 checks passed
The checker is itself tested against planted defects — see
_work/VERIFICATION.md.
No live UCS Central was available. Examples requiring a server are marked; the rest were executed offline against the package. Nothing here claims to have been run against hardware.
The reference and both agent indexes are generated by
_tools/gen_reference.py — stdlib only, offline, and
deterministic. Edit the script, never its output.
docs/
├── README.md this file
├── CLAUDE.md pointers for AI assistants working in this repo
├── llms.txt routing index, one line per document
├── guides/ 15 hand-written guides
├── reference/ generated: 94 package pages + methods.md
├── agents/ AGENTS.md + 3 machine-readable indexes
├── internals/ architecture, request lifecycle, metadata system
├── _tools/ gen_reference.py, verify_docs.py, nose_shim.py
└── _work/ INVENTORY, NOTES, PROGRESS, VERIFICATION, UG-RST-AUDIT
/usr/bin/python3 docs/_tools/gen_reference.py # rebuild reference + indexes
/usr/bin/python3 docs/_tools/verify_docs.py # gate — must exit 0Both need an interpreter that can import the SDK. /usr/bin/python3 (3.12) has six and
pyparsing; the python3 on $PATH may not.
Found and verified while writing these docs. They are documented, not fixed — the SDK source is untouched.
| Symbol | Status |
|---|---|
ucsccoreutils.load_mo |
broken on Python 3.11+ (inspect.getargspec) |
GenericMo.to_mo |
broken on Python 3.11+ (same) |
ManagedObject.show_tree |
always broken (self.children does not exist) |
ucsccoreutils.write_mo_tree |
always broken (mo.class_id does not exist) |
extract_mo_tree_from_config_method_response |
always broken (calls the above) |
UcscHandle.is_local_download_supported |
broken on 3.13+ (distutils); logic also inverted |
MethodPropertyMeta.name |
RecursionError — getter returns itself |
TLS1Connection.connect |
broken on 3.12+ (ssl.wrap_socket) |
MoPropertyMeta.validate_property_value |
short-circuits; a satisfied min_length skips the pattern check |
| test suite | 24 of 26 modules import nose; uninstallable on 3.12 |
The shipped ucscsdk_ug.rst also documents three methods that do not exist. See
_work/UG-RST-AUDIT.md.
Two facts to design around, both measured rather than assumed:
- TLS certificates are not verified — no CA bundle,
check_hostname=False,verify_mode=CERT_NONE, and no SDK option to change it. An active man-in-the-middle is not detected. Use a trusted management network. - Response XML is parsed with the stdlib parser. External entities are blocked, so classic XXE file disclosure does not apply, but internal entity expansion is performed — a hostile server can send a small document that costs a lot of memory.
Details in internals/architecture.md.