**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 ``), `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).