Skip to content

feat(vsphere): add VMware vSphere Automation (/api) spec and project - #73

Merged
michaelelrom merged 3 commits into
itential:mainfrom
michaelelrom:feat/vsphere-automation-api-spec
Aug 14, 2026
Merged

feat(vsphere): add VMware vSphere Automation (/api) spec and project#73
michaelelrom merged 3 commits into
itential:mainfrom
michaelelrom:feat/vsphere-automation-api-spec

Conversation

@michaelelrom

Copy link
Copy Markdown
Collaborator

Summary

  • Adds the modern vCenter Server /api surface (Broadcom's "vSphere Automation API") alongside the existing legacy /rest assets: full vendor spec, an 89-operation curated -latest.json matching the /rest curated spec's scope, and a VMware vSphere Automation Studio Project mirroring the existing /rest project's 22 workflows.
  • Renames the existing /rest project's integration instance to vSphere vCenter and names the new project's instance vSphere Automation, so both can run side by side under distinct integration instances.
  • Updates the vSphere README with a /rest vs /api comparison, connection properties for the new integration, and OpenAPI/Studio Project documentation for the new assets.

Test plan

  • Import vmware_vsphere_automation-latest.json as an Integration Model
  • Import VMware vSphere Automation.project.json as a Studio Project
  • Create a vSphere Automation integration instance per the README's connection properties and confirm a workflow (e.g. List Virtual Machines) runs successfully against a 7.0 U2+ vCenter

Add a second, independent Integration Model + Studio Project pair for
vCenter's modern /api-based vSphere Automation API, alongside the
existing /rest-based VMware vSphere vCenter project:

- vmware_vsphere_automation-9.1.0.0.json: full spec (1363 ops), sourced
  from Broadcom's official vmware/vcf-api-specs GitHub repo rather than
  generated -- unlike the /rest spec, a genuine vendor-published source
  exists for this API generation. Security scheme narrowed from the
  vendor's three alternatives to one dynamic-retrieval scheme.
- vmware_vsphere_automation-latest.json: curated to 22 operations,
  deliberately matching the /rest project's scope 1:1 (inventory
  listing + VM lifecycle) rather than exploring the much larger surface.
- VMware vSphere Automation.project.json: same 22 workflows as the
  existing /rest project, rebuilt on the /api operations, wired to a
  separate "vSphere Automation" integration instance so both projects
  can run in parallel without colliding.

Auth bootstraps through the legacy /rest session endpoint rather than
/api/session -- confirmed live that a token minted via /rest works
identically against /api/* endpoints (they share one underlying
session), and this routes around a confirmed Itential Platform bug:
Gateway.js unconditionally re-JSON.parses an already-decoded string
response when routed through a Gateway, which throws whenever a bare
string session token (like /api/session returns) isn't itself valid
JSON syntax. This is a permanent fix, not a workaround.

Also renamed the existing /rest project's adapter_id from "vSphere" to
"vSphere vCenter" so both projects can coexist with distinct, clearly
named integration instances.

Only Vcenter.VM_list has been individually confirmed live (against a
real vCenter 7.0.3); the other 21 workflows follow the same
platform-generated task pattern (path params as flat fields, JSON
bodies as requestBodyPayload/bodyContentType) but haven't each been
individually exercised -- flagged in the README.
Gateway routing is a deliberate admin choice (e.g. to reach vCenter over
an mTLS tunnel), not an incidental "if gateway-configured" condition
specific to this project. Drop the redundant/inaccurate note and correct
the same framing in the "Why /rest for Auth Bootstrap" explanation.
Broadens vmware_vsphere_automation-latest.json from 22 to 89 operations
so it covers the same breadth as the /rest curated spec: full VM
hardware CRUD, guest identity/power, templates/OVF, ISO mount/unmount,
storage policies, and guest customization specs, in addition to the
original inventory/lifecycle set.
@michaelelrom
michaelelrom merged commit 5f7e5f7 into itential:main Aug 14, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants