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.
This commit is contained in:
2026-07-18 04:42:11 +03:00
commit f8d3cbdd59
422 changed files with 361335 additions and 0 deletions
View File
File diff suppressed because one or more lines are too long
+42
View File
@@ -0,0 +1,42 @@
{
"generated_at": "2026-07-17T07:05:07.182576+00:00",
"vsphere_server": "api-gateway",
"smoke": false,
"provider": "pulumi-vsphere",
"cases": [
{
"id": "PU-INV",
"title": "Inventory data sources (datacenter/cluster/datastore/network/vm)",
"status": "passed",
"error": "",
"outputs": {
"cluster_id": "domain-c21",
"cluster_name": "Cluster",
"datacenter_id": "datacenter-21",
"datacenter_name": "Datacenter",
"datastore_id": "datastore-31",
"datastore_name": "datastore1",
"network_id": "network-41",
"network_name": "VM Network",
"resource_pool_id": "resgroup-22",
"vm_id": "4200aaaa-bbbb-cccc-dddd-000000000101",
"vm_name": "web-01"
}
},
{
"id": "PU-VM",
"title": "VirtualMachine create/destroy",
"status": "failed",
"error": " (most recent call last):\n + pulumi:pulumi:Stack vsphere-vm-lifecycle-pu-vm-lab creating (0s) File \"/root/.pulumi/bin/pulumi-language-python-exec\", line 244, in <module>\n + pulumi:pulumi:Stack vsphere-vm-lifecycle-pu-vm-lab creating (0s) executor.shutdown(wait=True)\n + pulumi:pulumi:Stack vsphere-vm-lifecycle-pu-vm-lab creating (0s) ~~~~~~~~~~~~~~~~~^^^^^^^^^^^\n + pulumi:pulumi:Stack vsphere-vm-lifecycle-pu-vm-lab creating (0s) File \"/usr/local/lib/python3.13/concurrent/futures/thread.py\", line 239, in shutdown\n + pulumi:pulumi:Stack vsphere-vm-lifecycle-pu-vm-lab creating (0s) t.join()\n + pulumi:pulumi:Stack vsphere-vm-lifecycle-pu-vm-lab creating (0s) ~~~~~~^^\n + pulumi:pulumi:Stack vsphere-vm-lifecycle-pu-vm-lab creating (0s) File \"/usr/local/lib/python3.13/threading.py\", line 1095, in join\n + pulumi:pulumi:Stack vsphere-vm-lifecycle-pu-vm-lab creating (0s) self._handle.join(timeout)\n + pulumi:pulumi:Stack vsphere-vm-lifecycle-pu-vm-lab creating (0s) ~~~~~~~~~~~~~~~~~^^^^^^^^^\n + pulumi:pulumi:Stack vsphere-vm-lifecycle-pu-vm-lab creating (0s) KeyboardInterrupt\n@ updating........\n + pulumi:pulumi:Stack vsphere-vm-lifecycle-pu-vm-lab **creating failed** 1 error; 27 messages\nDiagnostics:\n pulumi:pulumi:Stack (vsphere-vm-lifecycle-pu-vm-lab):\n error: update failed\n\n Traceback (most recent call last):\n File \"/root/.pulumi/bin/pulumi-language-python-exec\", line 232, in <module>\n loop.run_until_complete(coro)\n ~~~~~~~~~~~~~~~~~~~~~~~^^^^^^\n File \"/usr/local/lib/python3.13/asyncio/base_events.py\", line 712, in run_until_complete\n self.run_forever()\n ~~~~~~~~~~~~~~~~^^\n File \"/usr/local/lib/python3.13/asyncio/base_events.py\", line 683, in run_forever\n self._run_once()\n ~~~~~~~~~~~~~~^^\n File \"/usr/local/lib/python3.13/asyncio/base_events.py\", line 2022, in _run_once\n event_list = self._selector.select(timeout)\n File \"/usr/local/lib/python3.13/selectors.py\", line 452, in select\n fd_event_list = self._selector.poll(timeout, max_ev)\n KeyboardInterrupt\n During handling of the above exception, another exception occurred:\n Traceback (most recent call last):\n File \"/root/.pulumi/bin/pulumi-language-python-exec\", line 244, in <module>\n executor.shutdown(wait=True)\n ~~~~~~~~~~~~~~~~~^^^^^^^^^^^\n File \"/usr/local/lib/python3.13/concurrent/futures/thread.py\", line 239, in shutdown\n t.join()\n ~~~~~~^^\n File \"/usr/local/lib/python3.13/threading.py\", line 1095, in join\n self._handle.join(timeout)\n ~~~~~~~~~~~~~~~~~^^^^^^^^^\n KeyboardInterrupt\n\n vsphere:index:VirtualMachine (lab-vm):\n error: sdk-v2/provider2.go:572: sdk.helper_schema: error creating virtual machine: ManagedObjectNotFound: provider=vsphere@4.17.0\n error: 1 error occurred:\n \t* error creating virtual machine: ManagedObjectNotFound\n\nResources:\n + 2 created\n 2 errored\n\nDuration: 1s\n\n stderr: ",
"outputs": {}
},
{
"id": "PU-TAG",
"title": "TagCategory + Tag create/destroy",
"status": "failed",
"error": "reating (0s) During handling of the above exception, another exception occurred:\n + pulumi:pulumi:Stack vsphere-tags-pu-tag-lab creating (0s) Traceback (most recent call last):\n + pulumi:pulumi:Stack vsphere-tags-pu-tag-lab creating (0s) File \"/root/.pulumi/bin/pulumi-language-python-exec\", line 244, in <module>\n + pulumi:pulumi:Stack vsphere-tags-pu-tag-lab creating (0s) executor.shutdown(wait=True)\n + pulumi:pulumi:Stack vsphere-tags-pu-tag-lab creating (0s) ~~~~~~~~~~~~~~~~~^^^^^^^^^^^\n + pulumi:pulumi:Stack vsphere-tags-pu-tag-lab creating (0s) File \"/usr/local/lib/python3.13/concurrent/futures/thread.py\", line 239, in shutdown\n + pulumi:pulumi:Stack vsphere-tags-pu-tag-lab creating (0s) t.join()\n + pulumi:pulumi:Stack vsphere-tags-pu-tag-lab creating (0s) ~~~~~~^^\n + pulumi:pulumi:Stack vsphere-tags-pu-tag-lab creating (0s) File \"/usr/local/lib/python3.13/threading.py\", line 1095, in join\n + pulumi:pulumi:Stack vsphere-tags-pu-tag-lab creating (0s) self._handle.join(timeout)\n + pulumi:pulumi:Stack vsphere-tags-pu-tag-lab creating (0s) ~~~~~~~~~~~~~~~~~^^^^^^^^^\n + pulumi:pulumi:Stack vsphere-tags-pu-tag-lab creating (0s) KeyboardInterrupt\n@ updating........\n + pulumi:pulumi:Stack vsphere-tags-pu-tag-lab **creating failed** 1 error; 27 messages\nDiagnostics:\n pulumi:pulumi:Stack (vsphere-tags-pu-tag-lab):\n error: update failed\n\n Traceback (most recent call last):\n File \"/root/.pulumi/bin/pulumi-language-python-exec\", line 232, in <module>\n loop.run_until_complete(coro)\n ~~~~~~~~~~~~~~~~~~~~~~~^^^^^^\n File \"/usr/local/lib/python3.13/asyncio/base_events.py\", line 712, in run_until_complete\n self.run_forever()\n ~~~~~~~~~~~~~~~~^^\n File \"/usr/local/lib/python3.13/asyncio/base_events.py\", line 683, in run_forever\n self._run_once()\n ~~~~~~~~~~~~~~^^\n File \"/usr/local/lib/python3.13/asyncio/base_events.py\", line 2022, in _run_once\n event_list = self._selector.select(timeout)\n File \"/usr/local/lib/python3.13/selectors.py\", line 452, in select\n fd_event_list = self._selector.poll(timeout, max_ev)\n KeyboardInterrupt\n During handling of the above exception, another exception occurred:\n Traceback (most recent call last):\n File \"/root/.pulumi/bin/pulumi-language-python-exec\", line 244, in <module>\n executor.shutdown(wait=True)\n ~~~~~~~~~~~~~~~~~^^^^^^^^^^^\n File \"/usr/local/lib/python3.13/concurrent/futures/thread.py\", line 239, in shutdown\n t.join()\n ~~~~~~^^\n File \"/usr/local/lib/python3.13/threading.py\", line 1095, in join\n self._handle.join(timeout)\n ~~~~~~~~~~~~~~~~~^^^^^^^^^\n KeyboardInterrupt\n\n vsphere:index:TagCategory (lab-category):\n error: expected non-nil error with nil state during Create of urn:pulumi:pu-tag-lab::vsphere-tags::vsphere:index/tagCategory:TagCategory::lab-category\n\nResources:\n + 2 created\n 2 errored\n\nDuration: 1s\n\n stderr: ",
"outputs": {}
}
],
"total_failed": 2
}