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

3.3 KiB

Language / Язык: English | Русский

SOAP / VIM

Minimal VIM SDK for pyvmomi / govmomi-style clients (Terraform's hashicorp/vsphere provider, Pulumi, govc): app/vsphere/soap/router.py, property_collector.py, pbm.py.

Endpoint

All operations POST a SOAP envelope to /sdk (also /sdk/). Auxiliary routes:

Method Path Notes
GET /sdk/vimService.wsdl (alias /sdk/vim.wsdl) WSDL stub advertising the implemented operation list
GET /sdk/about.do (alias /about.do) Human-readable "VMware vCenter Server" page
POST /sdk/vim25/{version}/SessionManager/SessionManager/Login JSON-body login variant used by some SDKs

Implemented operations

  • RetrieveServiceContent, Login, Logout
  • RetrieveProperties, RetrievePropertiesEx, ContinueRetrievePropertiesEx (pagination tokens; <objects> plural), CreateFilter, WaitForUpdatesEx (version tokens; empty polls), CreateContainerView, DestroyPropertyFilter
  • FindByInventoryPath (paths omit the root Datacenters folder, matching govmomi conventions), 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 (paired with the REST /nfc/{lease} endpoints — see Content library)
  • QueryConfigOption, QueryConfigOptionEx, QueryConfigOptionDescriptor, QueryConfigTarget
  • PBM (/pbm) stub for storage-policy-aware clients

Highlights

  • Login issues the same underlying session as REST (vmware-api-session-id cookie/header, plus a vmware_soap_session cookie) — see Session.
  • VIM_VERSION is pinned to 8.0.2 with ≤3 dotted components, since hashicorp/vsphere parses AboutInfo.version strictly.
  • Type-strict MOR lookup rejects a VirtualApp:resgroup-* reference from resolving as a plain ResourcePool — matters for the Terraform CreateVM_Task resource path.
  • Task-returning operations create a real row in vsphere_tasks (shared with REST — see Tasks), including info.result MoRefs on create/clone.
  • PropertyCollector filters, ContainerViews, and WaitForUpdatesEx version tokens persist in vsphere_pc_state (migration 013) across process restarts within a lab.
  • Folder.childType is emitted as ArrayOfString; string properties carry xsi:type="xsd:string" so govmomi's decoder accepts them; Datastore.host is ArrayOfDatastoreHostMount; Cluster/Host expose environmentBrowser.

See Clients for pyvmomi/govmomi/Terraform/Pulumi connection examples and examples/python/vsphere_soap_smoke.py for a minimal raw-XML smoke.