Files
inecs f8d3cbdd59 Initial commit: VMware vSphere API simulator scaffold.
Add the FastAPI app, PostgreSQL migrations, Docker/Helm packaging, API
contracts, docs, client examples, and the unit/integration/compatibility
test suite for local client and tooling labs without a real vCenter.
2026-07-18 04:42:11 +03:00

69 lines
4.0 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
**Language / Язык:** [English](../../domains/soap.md) | [Русский](soap.md)
# SOAP / VIM
Минимальный VIM SDK для клиентов в стиле pyvmomi / govmomi (провайдер
Terraform `hashicorp/vsphere`, Pulumi, govc):
[`app/vsphere/soap/router.py`](../../../app/vsphere/soap/router.py),
[`property_collector.py`](../../../app/vsphere/soap/property_collector.py),
[`pbm.py`](../../../app/vsphere/soap/pbm.py).
## Эндпоинт
Все операции POST'ят SOAP-конверт на `/sdk` (также `/sdk/`). Вспомогательные
маршруты:
| Метод | Путь | Заметки |
|---|---|---|
| GET | `/sdk/vimService.wsdl` (alias `/sdk/vim.wsdl`) | WSDL stub со списком реализованных операций |
| GET | `/sdk/about.do` (alias `/about.do`) | Человекочитаемая страница «VMware vCenter Server» |
| POST | `/sdk/vim25/{version}/SessionManager/SessionManager/Login` | Login-вариант с JSON-телом, используемый некоторыми SDK |
## Реализованные операции
- `RetrieveServiceContent`, `Login`, `Logout`
- `RetrieveProperties`, `RetrievePropertiesEx`, **ContinueRetrievePropertiesEx**
(токены пагинации; plural `<objects>`), `CreateFilter`,
`WaitForUpdatesEx` (version tokens; пустые polls), `CreateContainerView`,
`DestroyPropertyFilter`
- `FindByInventoryPath` (пути без корневой папки `Datacenters`, как в
конвенциях govmomi), `FindByUuid`, `FindByDnsName`, `FindByIp`, `FindChild`
- `CreateVM_Task`, `CreateChildVM_Task`, `CreateFolder`, `PowerOnVM_Task`,
`PowerOffVM_Task`, `CloneVM_Task`, `CreateSnapshot_Task`, `Rename_Task`,
`ReconfigVM_Task`, `RelocateVM_Task`, `Destroy_Task`, `CustomizeVM_Task`,
`CancelTask`, `CurrentTime`
- Guest file ops: `InitiateFileTransferToGuest`,
`InitiateFileTransferFromGuest`, `ListFilesInGuest`, `DeleteFileInGuest`,
`MakeDirectoryInGuest`
- Import/upload: `ImportVApp_Task`, `CreateImportSpec`,
`HttpNfcLeaseComplete`, `HttpNfcLeaseProgress`, `HttpNfcLeaseAbort`,
`HttpNfcLeaseGetManifest` (в паре с REST `/nfc/{lease}`
см. [Content library](content-library.md))
- `QueryConfigOption`, `QueryConfigOptionEx`, `QueryConfigOptionDescriptor`,
`QueryConfigTarget`
- Stub PBM (`/pbm`) для клиентов, учитывающих storage policy
## Основные моменты
- `Login` выдаёт ту же underlying-сессию, что и REST (`vmware-api-session-id`
cookie/header плюс cookie `vmware_soap_session`) — см.
[Session](session.md).
- `VIM_VERSION` зафиксирован как `8.0.2` с ≤3 компонентами через точку, так
как `hashicorp/vsphere` строго парсит `AboutInfo.version`.
- Type-strict MOR lookup отклоняет ссылку `VirtualApp:resgroup-*`,
резолвящуюся как plain `ResourcePool` — важно для Terraform resource path
`CreateVM_Task`.
- Операции, возвращающие задачу, создают реальную строку в `vsphere_tasks`
(общую с REST — см. [Tasks](tasks.md)), включая MoRefs `info.result` при
create/clone.
- Filters PropertyCollector, ContainerViews и version tokens WaitForUpdatesEx
живут в `vsphere_pc_state` (миграция `013`) между перезапусками процесса
в рамках лаборатории.
- `Folder.childType` отдаётся как `ArrayOfString`; строковые свойства несут
`xsi:type="xsd:string"`, чтобы их принимал decoder govmomi; `Datastore.host`
`ArrayOfDatastoreHostMount`; у `Cluster`/`Host` есть `environmentBrowser`.
Примеры подключений pyvmomi/govmomi/Terraform/Pulumi — [Клиенты](../clients.md);
минимальный raw-XML smoke —
[examples/python/vsphere_soap_smoke.py](../../../examples/python/vsphere_soap_smoke.py).