← Back to search

VMware VKS

zw008 Scanned 1d ago

vSphere with Tanzu (VKS): Namespace and TanzuKubernetesCluster lifecycle. Requires vSphere 8.x+.

? Not scanned yet

Versions

0.1.0latest
first seen Jun 5, 2026

Tools 23

check_vks_compatibility
annotations: none low

[READ] Check whether this vCenter supports VKS (requires vSphere 8.x+). Returns compatible (bool), vcenter_version, wcp_enabled_clusters and wcp_clusters ({cluster, status}). Start here: those cluster MoRefs are the cluster_id for get_supervisor_status and create_namespace. Only reports vCenter-level support — a listed cluster may still be CONFIGURING. Args: target: vCenter in config.yaml; omit for the default.

target string
get_supervisor_status
annotations: none low

[READ] Get the health of one Supervisor Cluster (vSphere with Tanzu control plane). Returns cluster_id, config_status (RUNNING = healthy, else CONFIGURING / ERROR / REMOVING), kubernetes_status (READY / WARNING / ERROR), api_server_cluster_endpoint, kubernetes_version (null plus kubernetes_version_hint if unavailable), and network_provider. Run check_vks_compatibility first for cluster IDs; use this to confirm a Supervisor is healthy before create_namespace or create_tkc_cluster. Args: cluster_id: Compute cluster MoRef, e.g. 'domain-c1' (wcp_clusters field of check_vks_compatibility). target: vCenter in config.yaml; omit for the default.

target string cluster_id str
list_supervisor_storage_policies
annotations: none low

[READ] List vCenter storage policies assignable to Supervisor Namespaces. Returns the list envelope: items of {policy (ID), name, description} plus returned/total/truncated — one call returns them all, so truncated is always false. Call this before create_namespace or update_namespace and pass the 'policy' ID as their storage_policy. For PVC-level usage use list_namespace_storage_usage instead. Args: target: vCenter in config.yaml; omit for the default.

target string
list_namespaces
annotations: none low

[READ] List all vSphere Namespaces on the target vCenter with their status. Returns the list envelope: items of {namespace, config_status (RUNNING = healthy, CONFIGURING, REMOVING, ERROR), description} plus returned/total/truncated — one call returns them all, so truncated is always false. Start here, then call get_namespace for detail, list_tkc_clusters for what runs inside, or update_namespace / delete_namespace to change one. Args: target: vCenter in config.yaml; omit for the default.

target string
get_namespace
annotations: none low

[READ] Get detailed configuration for a single vSphere Namespace. Returns one raw vCenter namespace object, not the list envelope: config_status, description, storage_specs, quotas. Use list_namespaces first for the name; follow with list_namespace_storage_usage for PVC usage or list_tkc_clusters for the clusters inside. Point-in-time only — a CONFIGURING namespace may not have quotas applied. Args: name: Namespace name, e.g. 'dev' (discover via list_namespaces). target: vCenter in config.yaml; omit for the default.

name str target string
create_namespace
annotations: none low

[WRITE] Create a vSphere Namespace on a Supervisor Cluster. Returns {namespace, status: "created", cluster}, or {dry_run, spec} — a dry run unless dry_run=False. Use update_namespace instead when it already exists; confirm with get_namespace afterwards. Args: name: Namespace name (lowercase, no spaces). cluster_id: Supervisor MoRef (from check_vks_compatibility). storage_policy: Policy ID (from list_supervisor_storage_policies). cpu_limit: MHz. Omit for no limit. memory_limit_mib: MiB. Omit for no limit. description: Free-text label. Omit for none. dry_run: Preview only (default: True). target: vCenter in config.yaml; omit for the default.

name str target string dry_run bool cpu_limit string cluster_id str description str storage_policy str memory_limit_mib string
update_namespace
annotations: none low

[WRITE] Update resource quotas or storage policy of an existing vSphere Namespace. Only the fields you pass are patched; omitting all of them returns status "no_changes" without an API call, otherwise {namespace, status: "updated"}. Applies immediately — no dry run, no undo. Use this rather than create_namespace when the namespace exists; valid storage_policy values come from list_supervisor_storage_policies. Args: name: Existing namespace name (discover via list_namespaces). cpu_limit: New CPU limit in MHz. Omit to keep current. memory_limit_mib: New memory limit in MiB. Omit to keep current. storage_policy: New storage policy ID. Omit to keep current. target: vCenter in config.yaml; omit for the default.

name str target string cpu_limit string storage_policy string memory_limit_mib string
delete_namespace
annotations: none low

[WRITE] Delete a vSphere Namespace and everything inside it. Returns {namespace, status: "deleted"}, or a preview by default. SAFETY: refused while TKC clusters exist inside — run list_tkc_clusters to see them, then delete_tkc_cluster on each. A dry run unless you pass dry_run=False AND confirmed=True. Irreversible; prefer update_namespace to only change quotas. Args: name: Namespace name to delete (discover via list_namespaces). confirmed: Must be True to proceed. dry_run: Preview only (default: True). target: vCenter in config.yaml; omit for the default.

name str target string dry_run bool confirmed bool
list_vm_classes
annotations: none low

[READ] List VM classes available for sizing TKC cluster nodes. Returns the list envelope: items of {id (e.g. 'best-effort-large'), cpu_count, memory_mb, gpu_count (vGPU + DirectPath I/O; 0 if none)} plus returned/total/truncated — one call returns them all, so truncated is always false. Call this before create_tkc_cluster and pass the chosen 'id' as its vm_class; 'guaranteed-*' classes reserve resources, 'best-effort-*' do not. Args: target: vCenter in config.yaml; omit for the default.

target string
list_tkc_clusters
annotations: none low

[READ] List TanzuKubernetesCluster (TKC) clusters, optionally in one namespace. Returns the family list envelope: {items: [{name, namespace, phase, k8s_version}], returned, limit, total, truncated, hint}. The Supervisor list is walked to completion, so truncated is always False. Start here, then call get_tkc_cluster for full detail or get_tkc_kubeconfig for access. 'clusters' is a deprecated pre-1.8.0 alias of 'items', removed in 2.0 — read 'items'. Args: namespace: vSphere Namespace to filter by. Omit to list every one. target: vCenter in config.yaml; omit for the default.

target string namespace string
get_tkc_cluster
annotations: none low

[READ] Get detailed status for a single TKC cluster. Returns one object, not the list envelope: name, namespace, phase, k8s_version, control_plane_replicas, worker_replicas, conditions, infrastructure_ready, control_plane_ready. Run list_tkc_clusters first — a TKC name is only unique within one namespace. Poll this after create_tkc_cluster, scale_tkc_cluster or upgrade_tkc_cluster to watch an async change land. Args: name: Cluster name (via list_tkc_clusters). namespace: Namespace holding it. target: vCenter in config.yaml; omit for the default.

name str target string namespace str
get_tkc_available_versions
annotations: none low

[READ] List Kubernetes versions (TanzuKubernetesReleases) available on the Supervisor. Returns {versions: [{name, version, e.g. 'v1.28.4+vmware.1'}]}, newest first. If the TanzuKubernetesRelease API is unavailable it returns an empty versions list with error and hint rather than raising. Call this before create_tkc_cluster or upgrade_tkc_cluster to pick a valid k8s_version. Args: namespace: vSphere Namespace used to reach the Supervisor K8s API. target: vCenter in config.yaml; omit for the default.

target string namespace str
create_tkc_cluster
annotations: none low

[WRITE] Create a TanzuKubernetesCluster in a vSphere Namespace. A dry run unless you pass dry_run=False; it then returns {name, namespace, status: "creating", yaml} and provisions in the background — poll get_tkc_cluster until phase is running. Call get_tkc_available_versions for k8s_version and list_vm_classes for vm_class first. Args: name: Cluster name. namespace: Must already exist (see list_namespaces). k8s_version: e.g. 'v1.28.4+vmware.1'. vm_class: Node sizing, e.g. 'best-effort-large'. control_plane_count: 1 or 3. worker_count: Worker nodes (>= 1). storage_class: Storage class. dry_run: YAML plan only (default: True). target: vCenter in config.yaml; omit for the default.

name str target string dry_run bool vm_class str namespace str k8s_version str worker_count int storage_class str control_plane_count int
scale_tkc_cluster
annotations: none low

[WRITE] Scale the worker node count of an existing TanzuKubernetesCluster (TKC). Asynchronous: returns {name, namespace, pool, worker_count, status: "scaling"} immediately — poll get_tkc_cluster to watch nodes appear or drain. Scales workers only; use upgrade_tkc_cluster instead for the K8s version. Not destructive, but lowering worker_count drains removed nodes. Args: name: Cluster name (via list_tkc_clusters). namespace: Namespace holding it. worker_count: Desired total, integer >= 1 (below 1 is rejected). pool_name: Node pool (machineDeployment). Omit for the first; other pools are always preserved. target: vCenter in config.yaml; omit for the default.

name str target string namespace str pool_name string worker_count int
upgrade_tkc_cluster
annotations: none low

[WRITE] Upgrade a TKC cluster to a new Kubernetes version. Returns {name, namespace, new_version, status: "upgrading"}. Asynchronous and irreversible — Kubernetes cannot be downgraded, so poll get_tkc_cluster until phase is running. There is no dry run. Use this only for the K8s version; prefer scale_tkc_cluster for node counts. Args: name: Cluster name (via list_tkc_clusters). namespace: Namespace holding it. k8s_version: Target version from get_tkc_available_versions. target: vCenter in config.yaml; omit for the default.

name str target string namespace str k8s_version str
delete_tkc_cluster
annotations: none low

[WRITE] Delete a TKC cluster and all of its nodes. Returns {name, namespace, status: "deleting"}, or a preview by default. SAFETY: refused while Deployments/StatefulSets run, unless force=True. A dry run unless you pass dry_run=False AND confirmed=True. Irreversible — use scale_tkc_cluster instead for fewer nodes. Empty a namespace of TKC clusters before delete_namespace accepts it. Args: name: Cluster name (via list_tkc_clusters). namespace: Namespace holding it. confirmed: Must be True to proceed. dry_run: Preview only (default: True). force: Skip the workload check (dangerous). target: vCenter in config.yaml; omit for the default.

name str force bool target string dry_run bool confirmed bool namespace str
get_supervisor_kubeconfig
annotations: none low

[READ] Get a kubeconfig for the Supervisor K8s API endpoint. Returns {namespace, kubeconfig} as a YAML string. Use this for Supervisor-level access; use get_tkc_kubeconfig instead to reach workloads inside a TKC cluster. Security: it carries a short-lived session token — treat it as a credential, do not log or share. Args: namespace: vSphere Namespace to set as the kubeconfig context. target: vCenter in config.yaml; omit for the default.

target string namespace str
get_tkc_kubeconfig
annotations: none low

[READ] Get a kubeconfig for one TKC cluster. Returns {cluster, kubeconfig}, or {cluster, written_to} when output_path is given. Run list_tkc_clusters first for name and namespace; use get_supervisor_kubeconfig instead for Supervisor-level access. Security: it carries a short-lived session token — always prefer output_path so the credential never enters agent context. Args: name: TKC cluster name. namespace: Namespace holding it. output_path: File to write, e.g. '~/.kube/my.yaml'. Omit to return the kubeconfig inline. target: vCenter in config.yaml; omit for the default.

name str target string namespace str output_path string
get_harbor_info
annotations: none low

[READ] Get status of the embedded Harbor container registry on the Supervisor. Returns {registries: [{id, cluster (Supervisor MoRef), version, url, status, storage_used_mb}]}; status and storage come from a detail call and are null if it fails. If Harbor is not enabled it returns {error, hint} rather than raising. Use it to check registry health or find the push URL — it does not list repositories or images. Run check_vks_compatibility first if the Supervisor may be down. Args: target: vCenter in config.yaml; omit for the default.

target string
list_namespace_storage_usage
annotations: none low

[READ] List PersistentVolumeClaims and storage usage inside one vSphere Namespace. Via the Supervisor K8s API. Returns the family list envelope: {namespace, items: [{name, namespace, status (Bound / Pending / Lost), capacity ('10Gi'), storage_class}], returned, limit, total, truncated, hint}. Every PVC comes back in one call, so truncated is always False. Run list_namespaces first for the namespace; use list_supervisor_storage_policies instead for policy-level rather than PVC-level information. 'pvcs' and 'pvc_count' are deprecated pre-1.8.0 aliases of 'items' and 'returned', removed in 2.0 — read 'items'. Args: namespace: Namespace to inspect. target: vCenter in config.yaml; omit for the default.

target string namespace str
list_vm_snapshots
annotations: none low

[READ] List VirtualMachineSnapshot objects in a vSphere Namespace. VM Service snapshots (vmoperator.vmware.com CRD, new at v1alpha5) via the Supervisor K8s API — the served CRD version is discovered at runtime, not hardcoded. Returns the family list envelope: items of {name, namespace, vm_name, created, ready} plus returned/total/truncated (walked to completion, so truncated is always false) and served_version. If the Supervisor is older than v1alpha5 the error names the required version. Run list_namespaces first for the namespace; use list_vm_network_interfaces for a VM's NICs. Args: namespace: vSphere Namespace to list snapshots in (via list_namespaces). target: vCenter in config.yaml; omit for the default.

target string namespace str
list_vm_groups
annotations: none low

[READ] List VirtualMachineGroup objects and their bootOrder in a Namespace. VM Service groups (vmoperator.vmware.com CRD, v1alpha4+) via the Supervisor K8s API — the served CRD version is discovered at runtime. Returns the family list envelope: items of {name, namespace, boot_order, member_count} plus returned/total/truncated (walked to completion) and served_version. ``boot_order`` mirrors spec.bootOrder: an ordered list of {members: [{kind, name}], power_on_delay?}. Older Supervisors without v1alpha4 return a teaching error naming the required version. Args: namespace: vSphere Namespace to list VM groups in (via list_namespaces). target: vCenter in config.yaml; omit for the default.

target string namespace str
list_vm_network_interfaces
annotations: none low

[READ] List the network interfaces (multi-NIC) of one VirtualMachine. Reads spec.network.interfaces[] off a single VM Service VirtualMachine (vmoperator.vmware.com) via the Supervisor K8s API; the served CRD version is discovered at runtime. Returns the family list envelope: items of {name, network_name, network_kind, network_api_version} plus returned/total/truncated and vm_name/served_version. A VM with no network block returns an empty list, not an error. Run list_namespaces for the namespace; the VM name comes from your own VM inventory in that namespace. Args: namespace: vSphere Namespace the VM lives in (via list_namespaces). vm_name: Name of the VirtualMachine to read interfaces from. target: vCenter in config.yaml; omit for the default.

target string vm_name str namespace str

Permissions 3

network medium
Server uses network capabilities via: socket, urllib
filesystem low
Server uses filesystem capabilities via: open(), os, pathlib
env_vars low
Server uses env_vars capabilities via: os.environ

Scan Findings 60

low
Tool 'get_supervisor_status' has no annotations annotation_checker · 100%
low
Tool 'list_supervisor_storage_policies' has no annotations annotation_checker · 100%
low
Tool 'check_vks_compatibility' has no annotations annotation_checker · 100%
info
Sandbox failed to start for behavioral verification behavioral_verifier · 100%
low
Tool 'list_namespaces' has no annotations annotation_checker · 100%
low
Tool 'get_namespace' has no annotations annotation_checker · 100%
low
Tool 'create_namespace' has no annotations annotation_checker · 100%
low
Tool 'update_namespace' has no annotations annotation_checker · 100%
low
Tool 'delete_namespace' has no annotations annotation_checker · 100%
low
Tool 'list_vm_classes' has no annotations annotation_checker · 100%
low
Tool 'list_tkc_clusters' has no annotations annotation_checker · 100%
low
Tool 'get_tkc_cluster' has no annotations annotation_checker · 100%
low
Tool 'get_tkc_available_versions' has no annotations annotation_checker · 100%
low
Tool 'create_tkc_cluster' has no annotations annotation_checker · 100%
low
Tool 'scale_tkc_cluster' has no annotations annotation_checker · 100%
low
Tool 'upgrade_tkc_cluster' has no annotations annotation_checker · 100%
low
Tool 'delete_tkc_cluster' has no annotations annotation_checker · 100%
low
Tool 'get_supervisor_kubeconfig' has no annotations annotation_checker · 100%
low
Tool 'get_tkc_kubeconfig' has no annotations annotation_checker · 100%
low
Tool 'get_harbor_info' has no annotations annotation_checker · 100%
low
Tool 'list_namespace_storage_usage' has no annotations annotation_checker · 100%
low
Tool 'list_vm_snapshots' has no annotations annotation_checker · 100%
low
Tool 'list_vm_groups' has no annotations annotation_checker · 100%
low
Tool 'list_vm_network_interfaces' has no annotations annotation_checker · 100%
medium
Vulnerable dependency: python-dotenv@1.0,<2.0 (GHSA-mf9w-mj56-hr94) dependency_analyzer · 95%
medium
Vulnerable dependency: python-dotenv@1.0,<2.0 (PYSEC-2026-2270) dependency_analyzer · 95%
info
pyproject.toml metadata manifest_parser · 100%
info
Tool: check_vks_compatibility manifest_parser · 90%
info
Tool: get_supervisor_status manifest_parser · 90%
info
Tool: list_supervisor_storage_policies manifest_parser · 90%
info
Tool: list_namespaces manifest_parser · 90%
info
Tool: get_namespace manifest_parser · 90%
info
Tool: create_namespace manifest_parser · 90%
info
Tool: update_namespace manifest_parser · 90%
info
Tool: delete_namespace manifest_parser · 90%
info
Tool: list_vm_classes manifest_parser · 90%
info
Tool: list_tkc_clusters manifest_parser · 90%
info
Tool: get_tkc_cluster manifest_parser · 90%
info
Tool: get_tkc_available_versions manifest_parser · 90%
info
Tool: create_tkc_cluster manifest_parser · 90%
info
Tool: scale_tkc_cluster manifest_parser · 90%
info
Tool: upgrade_tkc_cluster manifest_parser · 90%
info
Tool: delete_tkc_cluster manifest_parser · 90%
info
Tool: get_supervisor_kubeconfig manifest_parser · 90%
info
Tool: get_tkc_kubeconfig manifest_parser · 90%
info
Tool: get_harbor_info manifest_parser · 90%
info
Tool: list_namespace_storage_usage manifest_parser · 90%
info
Tool: list_vm_snapshots manifest_parser · 90%
info
Tool: list_vm_groups manifest_parser · 90%
info
Tool: list_vm_network_interfaces manifest_parser · 90%
info
Required env vars (1) manifest_parser · 80%
info
Sandbox failed to start for output poisoning scan output_poisoning · 100%
medium
Permission: network access detected permission_analyzer · 90%
low
Permission: filesystem access detected permission_analyzer · 80%
low
Permission: env_vars access detected permission_analyzer · 90%
critical
Tool poisoning in 'list_supervisor_storage_policies': Cross-tool sequencing directive poisoning · 85%
critical
Tool poisoning in 'list_vm_classes': Cross-tool sequencing directive poisoning · 85%
critical
Tool poisoning in 'get_tkc_available_versions': Cross-tool sequencing directive poisoning · 85%
info
No dependency files found for SBOM generation sbom_generator · 100%
medium
No build provenance detected (SLSA L0) slsa_assessor · 90%