Hypershield reference🔗
This is the central depot for Hypershield reference documentation.
Smart Switches🔗
This page lists the supported Smart Switches for each version of Hypershield.
Hypershield 10.0.0🔗
Supported models |
Minimum NX-OS version |
DPUs per switch |
DPU type |
Loopback interfaces |
|---|---|---|---|---|
Cisco N9324C-SE1U |
10.6(3)r |
4 |
AMD Elba (32 GiB DDR4) |
2 |
Cisco N9348Y2C6D |
10.6(3)r |
2 |
AMD Giglio (64 GiB DDR5) |
2 |
The two loopback interfaces per switch are used for management (controller source) and HA heartbeat.
agwctl command line interface🔗
A CLI tool for controlling the Hypershield SmartSwitch AGW agent over its local IPC socket. It sends control messages, inspects agent state, and applies policy directly to the AGW.
Usage:
agwctl [command]
Global flags:
Flag |
Type |
Description |
|---|---|---|
|
string |
Path to the AGW CLI Unix socket |
|
bool |
Print output in JSON format |
config add dpu🔗
Add a DPU configuration entry from a JSON file. This appends to the existing DPU set; it does not replace it.
Usage:
agwctl config add dpu [flags]
Flags:
Flag |
Type |
Description |
|---|---|---|
|
string |
Path to the DPU config JSON file |
config add ha🔗
Add the HA configuration to the AGW from a JSON file. Replaces any existing HA configuration.
Usage:
agwctl config add ha [flags]
Flags:
Flag |
Type |
Description |
|---|---|---|
|
string |
Path to the HA config JSON file |
config load_dpu_config🔗
Replace the AGW’s DPU configuration with the contents of a JSON file. The file must be a single JSON object with the following fields:
service_ip: stringservice_mac: stringport_low: intport_high: int
Usage:
agwctl config load_dpu_config --file <file> [flags]
Flags:
Flag |
Type |
Description |
|---|---|---|
|
string |
Path to the DPU config JSON file |
config remove dpu🔗
Remove every DPU configuration entry currently held by the AGW.
Usage:
agwctl config remove dpu
config remove ha🔗
Remove the HA configuration currently held by the AGW.
Usage:
agwctl config remove ha
config show🔗
Show every AGW configuration object currently active, including DPU, HA, and syslog export configuration.
Usage:
agwctl config show
device show🔗
Show the full contents of the AGW device gNMI data store.
Usage:
agwctl device show
dpu debug🔗
Show repair state for every DPU peer, including:
Repair-requested flag and last repair reason
Reconnect count and last ack timestamp
Per-policy repair fences currently blocking sync
Use --dpu to restrict output to a single DPU number.
Usage:
agwctl dpu debug [flags]
Flags:
Flag |
Type |
Description |
|---|---|---|
|
int |
Restrict output to a single DPU number (0 = all DPUs) |
dpu show🔗
Show the contents of the DPU gNMI data store. Use --filter to narrow the
output to DPU names matching a regular expression.
Usage:
agwctl dpu show [flags]
Flags:
Flag |
Type |
Description |
|---|---|---|
|
string |
Regex filter on DPU name |
dpu status🔗
Show an aggregate summary of DPU fleet status. Reports counts only, without per-DPU details.
Usage:
agwctl dpu status
dpu sync🔗
Show SyncPolicy convergence state for every DPU peer, including:
Desired, installed, and pending rule counts
Last ack timestamp and in-sync-since timestamp
Reconnect count
Use --dpu to restrict output to a single DPU, and --policy to include a
per-policy drift breakdown for DPUs that have not yet converged.
Usage:
agwctl dpu sync [flags]
Flags:
Flag |
Type |
Description |
|---|---|---|
|
int |
Restrict output to a single DPU number (0 = all DPUs) |
|
bool |
Include a per-policy drift breakdown for DPUs that are mid-reconcile |
ha compatibility🔗
Show a side-by-side comparison of HA membership and adjacency compatibility
fields between the local switch and each HA peer. Use --peer to restrict the
comparison to a single peer.
Usage:
agwctl ha compatibility [flags]
Flags:
Flag |
Type |
Description |
|---|---|---|
|
string |
Restrict the comparison to a single peer by exact IP |
ha debug fail🔗
Set the debug_override HA criterion to false on the local node, forcing it
into ha-switchover state. Run agwctl ha debug ok to restore normal
operation.
Usage:
agwctl ha debug fail
ha debug ok🔗
Set the debug_override HA criterion to true on the local node, allowing
normal HA criteria evaluation to resume. Clears a failure previously injected by
agwctl ha debug fail.
Usage:
agwctl ha debug ok
ha debug peer-fail🔗
Inject a debug failure for a specific HA peer’s membership or adjacency
criterion. Exactly one of --membership or --adjacency must be set, along
with --peer. Run agwctl ha debug peer-ok to clear the injected failure.
Usage:
agwctl ha debug peer-fail [flags]
Flags:
Flag |
Type |
Description |
|---|---|---|
|
bool |
Inject an adjacency failure (results in ha-degraded state) |
|
bool |
Inject a membership failure (triggers ha-takeover/ha-switchover) |
|
string |
Target peer IP address |
ha debug peer-ok🔗
Clear a debug failure previously injected via agwctl ha debug peer-fail for
a peer’s membership or adjacency HA criterion. Exactly one of the
--membership or --adjacency flags must be set, along with --peer.
Usage:
agwctl ha debug peer-ok [flags]
Flags:
Flag |
Type |
Description |
|---|---|---|
|
bool |
Clear a previously injected adjacency debug failure |
|
bool |
Clear a previously injected membership debug failure |
|
string |
Target peer IP address |
ha debug reset🔗
Clear every local and peer-directed HA debug criterion in a single call and (optionally) block until the pair is stable. This replaces the ad-hoc sequence of calls that HA integration tests otherwise issue back-to-back:
agwctl ha debug okagwctl ha debug peer-ok--membershipagwctl ha debug peer-ok--adjacency
Usage:
agwctl ha debug reset [flags]
Flags:
Flag |
Type |
Description |
|---|---|---|
|
int |
Number of full keepalive rounds to observe once the pair is stable |
|
string |
Wait for pair stability (Go duration, e.g. 30s); empty = no wait |
ha debug timers reset🔗
Restore production HA loop timer defaults
Usage:
agwctl ha debug timers reset
ha debug timers set🔗
Override any subset of the HA loop timers. Unset flags leave the current value unchanged. At least one flag is required.
Usage:
agwctl ha debug timers set [flags]
Flags:
Flag |
Type |
Description |
|---|---|---|
|
string |
Adjacency + member expiry timeout (Go duration, e.g. 1s) |
|
string |
Anti-flap recovery hold-down (Go duration, e.g. 2s) |
|
string |
Adjacency ticker interval (Go duration, e.g. 200ms) |
|
string |
Peer policy mismatch settling window (Go duration, e.g. 5s) |
ha debug timers show🔗
Show the currently-active HA loop timers
Usage:
agwctl ha debug timers show
ha gids🔗
Show VRFs with GID or preset allocations on the local switch and every HA peer. Use this to verify GID reconciliation across the HA cluster.
Usage:
agwctl ha gids
ha info🔗
Show the static HA configuration, including HA IP and port, admin and operational state, leader status, and policy settings.
Usage:
agwctl ha info
ha peers🔗
Show detailed HA state for every peer. Use --filter to narrow the output to
peer IPs matching a regular expression.
Usage:
agwctl ha peers [flags]
Flags:
Flag |
Type |
Description |
|---|---|---|
|
string |
Regex filter on peer IP address |
ha show🔗
Show the HA cluster state, the local node state, and a per-peer summary with
[OK]/[FAIL] indicators for membership, adjacency, and service.
Usage:
agwctl ha show
ha vlans🔗
Show VLANs with ID allocations on the local switch and every HA peer. Use this to verify VLAN reconciliation across the HA cluster.
Usage:
agwctl ha vlans
health🔗
Report the AGW agent’s health as observed by the local IPC health probe.
Usage:
agwctl health
load_syslog_cfg🔗
Load the syslog export configuration from a JSON file and push it to all DPU agents, replacing any existing configuration. The file must contain a JSON object keyed by export ID, where each entry has:
id,name,description,type: stringconfig:host,port,mode(string) andtls(bool)secrets:token,ca,cert,key,keyPassword(string)
Usage:
agwctl load_syslog_cfg <file>
logging🔗
Set the AGW process log level. Supported values for --level:
debuginfo(default)warnerror
Usage:
agwctl logging [flags]
Flags:
Flag |
Type |
Description |
|---|---|---|
|
string |
Log level: debug, info, warn, or error |
metrics show🔗
Show a snapshot of current AGW runtime metrics, including memory usage, CPU usage, policy counts, and DPU insert/update/delete error counters.
Usage:
agwctl metrics show
policies add🔗
Add a policy to the AGW from a YAML file.
WARNING: Adding policies locally bypasses the on-prem controller and may leave the AGW OUT OF SYNC with it.
Usage:
agwctl policies add [flags]
Flags:
Flag |
Type |
Description |
|---|---|---|
|
string |
Path to the policy YAML file |
policies clear🔗
Remove every policy currently loaded in the AGW.
WARNING: Clearing policies locally bypasses the on-prem controller and may leave
the AGW OUT OF SYNC with it. To re-sync after clearing, restart
HypershieldAgent from the NX-OS CLI (no in-service then in-service).
Usage:
agwctl policies clear
policies info🔗
Display a summary of loaded policies including:
Rule limits (global and per-policy; 0 = unlimited)
Total number of policies and rules
Number of allow vs deny rules
Policies and rules per namespace
VRFs and VLANs in use
Protocol distribution
Flags:
--persisted: Summarize the on-disk checkpoint via AGW’s already-open DB.--diff: Report only ResourceIDs whose expanded rule count differs between the live handler and the persisted set. Identical entries collapse into a single count.
Usage:
agwctl policies info [flags]
Flags:
Flag |
Type |
Description |
|---|---|---|
|
bool |
Report only mismatches between the live handler and the persisted set |
|
bool |
Summarize the on-disk checkpoint instead of the live handler |
policies limit🔗
Get or set the rule limits the AGW enforces on incoming policies. When either limit is exceeded, the incoming policy upsert is rejected with a rate-limit error. Set a limit to 0 to disable that specific check.
Running with no flags prints the current limits.
Defaults:
--set: 1000000 (global, across all policies)--set-per-policy: 75000 (single policy)
Usage:
agwctl policies limit [flags]
Flags:
Flag |
Type |
Description |
|---|---|---|
|
string |
Set the global maximum number of rules across all policies (0 disables the check) |
|
string |
Set the maximum number of rules a single policy may contain (0 disables the check) |
policies remove🔗
Remove a policy from the AGW, identified either by its ResourceID passed as a
positional argument or by a YAML file supplied via --file.
WARNING: Removing policies locally bypasses the on-prem controller and may leave
the AGW OUT OF SYNC with it. To re-sync after removal, restart
HypershieldAgent from the NX-OS CLI (no in-service then in-service).
Usage:
agwctl policies remove [resourceId] [flags]
Flags:
Flag |
Type |
Description |
|---|---|---|
|
string |
Path to the policy YAML file identifying the policy to remove |
policies show🔗
Show the policies currently loaded in the AGW. Each policy’s ResourceID is
kind/namespace/name as it appears in Kubernetes. Use --filter with a
regular expression to narrow the list.
Pass --persisted to stream the on-disk checkpoint (bbolt) instead of the
live handler. AGW walks its already-open DB in-process, so this is safe to run
while AGW is up. Rule counts reflect the post-expansion form so the output
matches the live view.
Usage:
agwctl policies show [flags]
Flags:
Flag |
Type |
Description |
|---|---|---|
|
string |
Regex filter on policy ResourceID |
|
bool |
Read from the on-disk checkpoint instead of the live handler |
policies status🔗
Stream one frame per policy with desired and installed rule counts, matching RuleNames, and active SyncPolicy conditions per DPU.
Use --policy to restrict output to a single Kubernetes policy, and use
--unhealthy-only to emit only policies with active SyncPolicy conditions.
Usage:
agwctl policies status [flags]
Flags:
Flag |
Type |
Description |
|---|---|---|
|
string |
Restrict output to a single Kubernetes policy (kind/namespace/name) |
|
bool |
Emit only policies with active SyncPolicy conditions |
policies translate🔗
Translate policies into the JSON rule format consumed by the DPU dataplane.
By default the current AGW policy set is translated using the AGW’s active VRFs.
Use --file to translate policies from a YAML file instead, or --no-vrfs
to translate every policy while ignoring active VRFs.
Usage:
agwctl policies translate [flags]
Flags:
Flag |
Type |
Description |
|---|---|---|
|
string |
Path to a policy YAML file to translate instead of the current AGW policy set |
|
bool |
Translate every policy, ignoring the AGW’s active VRF configuration |
policies validate🔗
Walk the on-disk policy checkpoint database and report any entries that
RestorePolicyCheckpoint would skip at startup — malformed payload,
unsupported schemaVersion, or missing kind/namespace/name. On
success, also prints an info-style summary of the accepted entries.
Runs entirely on this host — no AGW round-trip. AGW holds an exclusive lock on
the checkpoint file while running, so this command only succeeds when the agent
is stopped (or against a copy of the file inspected via --dir).
Usage:
agwctl policies validate [flags]
Flags:
Flag |
Type |
Description |
|---|---|---|
|
string |
override checkpoint directory (default: /iox_data/isovalent/policy/.checkpoint) |
policies wait🔗
Block until all policies report no active SyncPolicy conditions across all DPUs, or until the timeout elapses.
Use --timeout to cap the wait duration. Exits non-zero on timeout and exits
130 on SIGINT.
Usage:
agwctl policies wait [flags]
Flags:
Flag |
Type |
Description |
|---|---|---|
|
duration |
Maximum time to wait for convergence before exiting non-zero |
show_dpu🔗
Show DPU peer status in the legacy table format. Prefer agwctl dpu show for
the current, richer output.
Usage:
agwctl show_dpu
show_log🔗
Show a head and tail excerpt of the AGW process log buffer maintained by the agent on disk.
Usage:
agwctl show_log
show_status🔗
Show the AGW agent’s operational status, including uptime, IPC state, and DPU connectivity.
Usage:
agwctl show_status
show_syslog_cfg🔗
Show the syslog export configuration the AGW has currently pushed to DPU agents.
Usage:
agwctl show_syslog_cfg
show_tech🔗
Show a full AGW tech-support snapshot, aggregating status, metrics, policies, configuration, VRF/VLAN/DPU/HA state, and syslog output for support diagnostics.
This is a compatibility alias for agwctl tech-support show. Prefer the
subcommand form in new scripts.
Usage:
agwctl show_tech
show_timescape_cfg🔗
Show the Timescape client configuration used by the AGW, including:
Client status (enabled or disabled)
Server information: endpoint URL and username (passwords are redacted)
gRPC configuration: enabled status and port
Usage:
agwctl show_timescape_cfg
show_tokens🔗
Show metadata for the AGW’s cached access and refresh tokens. The token value
itself is only printed when JSON output is requested via --json.
Usage:
agwctl show_tokens
tac_pac🔗
Collect a Cisco TAC support bundle on the local switch.
This is a compatibility alias for agwctl tech-support bundle that writes the
bundle to the historical path /iox_data/agw_logs.tgz. The bundle contains
AGW logs and configuration, the on-disk policy checkpoint, system state, and —
when the AGW agent is reachable over IPC — its show_tech output plus a DPU
log archive.
Core dumps are excluded (they can be multi-GB per file). Collect them separately
with agwctl tech-support cores or via the NX-OS show cores command.
Prefer agwctl tech-support bundle for new integrations; it writes a
timestamped file under /data/volatile and accepts flags for finer control.
Usage:
agwctl tac_pac
tech-support bundle🔗
Collect a compressed tech-support bundle on the local switch.
The bundle always includes local artifacts (AGW logs and config, on-disk policy
checkpoint, and system state such as dmesg / ps / df). It also
attempts to contact the running AGW agent over its IPC socket to include
show_tech output and a DPU log archive.
Core dumps are NOT included by default — cores may be multi-GB per file and
are handled by agwctl tech-support cores on their own. Pass
--include-cores to fold them into this bundle anyway.
If AGW is not running (crashed, restarting, or not deployed) the local artifacts
are still collected — the IPC-derived sections are simply marked skip in
the bundle’s MANIFEST.txt. This is the intended behaviour: a tech-support
bundle is most valuable exactly when the agent is unhealthy.
Bundle path defaults to
/data/volatile/agw_tech_support_<UTC-timestamp>.tar.gz.
Usage:
agwctl tech-support bundle [flags]
Flags:
Flag |
Type |
Description |
|---|---|---|
|
bool |
Include core dumps in the bundle. Off by default — cores can be multi-GB. |
|
string |
Output path for the tech-support archive (default: /data/volatile/agw_tech_support_<timestamp>.tar.gz) |
|
bool |
Skip the DPU log collection over IPC. show_tech is still attempted. |
|
bool |
Skip the AGW IPC-mediated collection (show_tech and DPU logs). Use when AGW is known crashed. |
tech-support cores🔗
Collect a tarball containing only core dumps found on the local switch.
Cores are copied newest-first with a per-bundle budget (see MANIFEST.txt for
details); anything past the budget is recorded in core_dumps/_SKIPPED.txt so
support can request it out-of-band. No IPC calls are made — this command works
whether or not AGW is running.
Output defaults to /data/volatile/agw_cores_<UTC-timestamp>.tar.gz.
Usage:
agwctl tech-support cores [flags]
Flags:
Flag |
Type |
Description |
|---|---|---|
|
string |
Output path for the cores tarball (default: /data/volatile/agw_cores_<timestamp>.tar.gz) |
tech-support dpu🔗
Collect a tech-support archive from every DPU peer. This subcommand requires the AGW agent to be running — it uses the agent’s SSH credentials to reach each DPU.
If AGW is not running, use agwctl tech-support bundle instead: that collects
local artifacts even when the agent has crashed.
Usage:
agwctl tech-support dpu
tech-support show🔗
Print a full AGW tech-support snapshot to stdout, aggregating status, metrics, policies, configuration, VRF/VLAN/DPU/HA state, and syslog output. Requires the AGW agent to be running — this command talks to the agent’s IPC socket.
Use agwctl tech-support bundle when AGW is crashed: it collects local
artifacts and marks the IPC-derived sections as skipped in the bundle’s
MANIFEST.txt.
Usage:
agwctl tech-support show
vlan info🔗
Show aggregate VLAN statistics, including total count, active count, ID assignment, and pinning distribution.
Usage:
agwctl vlan info
vlan list🔗
Print a compact table of active VLANs, followed by a count summary.
Usage:
agwctl vlan list
vlan show🔗
Show the contents of the VLAN gNMI data store. Use --filter to narrow the
output to VLAN names matching a regular expression.
Usage:
agwctl vlan show [flags]
Flags:
Flag |
Type |
Description |
|---|---|---|
|
string |
Regex filter on VLAN name |
vrf gids🔗
Show the GID allocation table for every VRF currently holding a GID on the local switch.
Usage:
agwctl vrf gids
vrf info🔗
Show aggregate VRF statistics, including total count, active count, GID usage, and pinning distribution.
Usage:
agwctl vrf info
vrf list🔗
Print a compact table of active VRFs, followed by a count summary.
Usage:
agwctl vrf list
vrf show🔗
Show the contents of the VRF gNMI data store. Use --filter to narrow the
output to VRF names matching a regular expression.
Usage:
agwctl vrf show [flags]
Flags:
Flag |
Type |
Description |
|---|---|---|
|
string |
Regex filter on VRF name |
dpctl command line interface🔗
A CLI tool for controlling the AMD/Pensando dataplane services on a Hypershield DPU. It inspects and clears dataplane state, and drives debug operations against the local dataplane app over its gRPC or Unix domain socket transport.
Usage:
dpctl [flags] [command]
Global flags:
Flag |
Type |
Description |
|---|---|---|
|
string |
Remote DSC’s service URL |
|
string |
Remote DSC’s service port |
Flags:
Flag |
Type |
Description |
|---|---|---|
|
bool |
Help message for toggle |
clear collector-session statistics🔗
clear collector session statistics
Usage:
dpctl clear collector-session statistics [flags]
Flags:
Flag |
Type |
Description |
|---|---|---|
|
uint32 |
Specify collector session ID (valid range 1-8192) |
clear flow🔗
clear flow object information
Usage:
dpctl clear flow
clear pipeline statistics🔗
clear pipeline statistics
Usage:
dpctl clear pipeline statistics [command]
clear pipeline statistics datapath-assist🔗
clear pipeline datapath assist statistics
Usage:
dpctl clear pipeline statistics datapath-assist
clear pipeline statistics drop🔗
clear pipeline statistics
Usage:
dpctl clear pipeline statistics drop
clear session🔗
clear a specific session by ID and its associated flows
Usage:
dpctl clear session [flags]
Flags:
Flag |
Type |
Description |
|---|---|---|
|
uint32 |
Specify high session id for range |
|
uint32 |
Specify session id to clear (single session) |
|
uint32 |
Specify low session id for range |
debug create collector-session🔗
create collector session
Usage:
dpctl debug create collector-session [flags]
Flags:
Flag |
Type |
Description |
|---|---|---|
|
string |
Specify collector session destination IP address |
|
string |
Specify collector session destination MAC address |
|
uint32 |
Specify forwarding port (1 for UPLINK_1 and 2 UPLINK_2), default is UPLINK_1 |
|
uint32 |
Specify collector session ID (valid range 1-8192) |
|
string |
Specify collector session source IP address |
|
string |
Specify collector session source MAC address |
|
uint32 |
Specify TAP length (valid range 64-9000), default is full packet length |
debug create telemetry-policy🔗
create telemetry policy
Usage:
dpctl debug create telemetry-policy [flags]
Flags:
Flag |
Type |
Description |
|---|---|---|
|
bool |
Specify whether received packets are for capture only |
|
string |
Specify destination IP prefix. Default is any destination IP |
|
uint32 |
Specify destination port. Default is any destination port |
|
string |
Specify ERSPAN collector session IDs in comma separated list in the range 1-8192 |
|
string |
Specify FlowMon collector session IDs in comma separated list in the range 1-8 |
|
string |
Specify IP protocol number. Default is any protocol |
|
uint32 |
IPFIX Observation Domain ID (RFC 7011) stamped on emitted IPFIX message headers. 0 = unspecified |
|
string |
Specify the direction of traffic with respect to dsc - ingress|egress|all |
|
uint32 |
Specify telemetry policy ID (valid range 1-1024) |
|
string |
Specify source IP prefix. Default is any source IP |
|
uint32 |
Specify source port. Default is any source port |
debug datapath-assist🔗
datapath assist debug command
Usage:
dpctl debug datapath-assist [flags]
Flags:
Flag |
Type |
Description |
|---|---|---|
|
uint32 |
Specify number of cores assigned for datapath assist(1-12) |
debug delete collector-session🔗
delete collector session
Usage:
dpctl debug delete collector-session [flags]
Flags:
Flag |
Type |
Description |
|---|---|---|
|
uint32 |
Specify collector session ID (valid range 1-8192) |
debug delete telemetry-policy🔗
delete telemetry policy
Usage:
dpctl debug delete telemetry-policy [flags]
Flags:
Flag |
Type |
Description |
|---|---|---|
|
uint32 |
Specify telemetry policy ID (valid range 1-1024) |
debug pipeline internal packet-trace-rule create🔗
add packet trace rule
Usage:
dpctl debug pipeline internal packet-trace-rule create [flags]
Flags:
Flag |
Type |
Description |
|---|---|---|
|
string |
Specify destination IP prefix |
|
uint32 |
Specify destination port |
|
uint32 |
Specify ICMP code |
|
uint32 |
Specify ICMP type |
|
string |
Specify IP protocol number or any |
|
uint32 |
Specify unique rule key in the range of [0, 7] |
|
string |
Specify source IP prefix |
|
uint32 |
Specify source port |
|
string |
Specify TCP flags as comma separated list |
|
uint32 |
Specify vni |
debug pipeline internal packet-trace-rule delete🔗
delete packet trace rule
Usage:
dpctl debug pipeline internal packet-trace-rule delete [flags]
Flags:
Flag |
Type |
Description |
|---|---|---|
|
uint32 |
Specify unique rule key in the range of [0, 7] |
debug port-counters clear🔗
Reset all port operation counters to zero
Usage:
dpctl debug port-counters clear
debug port-counters show🔗
Display statistics about port operations in the policy engine
Usage:
dpctl debug port-counters show
debug update🔗
debug update commands
Usage:
dpctl debug update
hs fwa_message🔗
fwa_message
Usage:
dpctl hs fwa_message [flags]
Flags:
Flag |
Type |
Description |
|---|---|---|
|
string |
Message file path |
hs ha disable🔗
disable
Usage:
dpctl hs ha disable
hs ha enable🔗
enable
Usage:
dpctl hs ha enable
hs ha peers add🔗
add
Usage:
dpctl hs ha peers add [flags]
Flags:
Flag |
Type |
Description |
|---|---|---|
|
uint32 |
Destination port (our service port) |
|
string |
Destination IP (our service ip) |
|
string |
Source peer IP |
hs ha peers clear🔗
Clear HA flow sync statistics shown by hs ha peers show
Usage:
dpctl hs ha peers clear
hs ha peers show🔗
Show HA peer status including local/peer IPs, ports, state (UP/DOWN/UNKNOWN), and keepalive sequence numbers
Usage:
dpctl hs ha peers show
hs ha steering show🔗
Show HA flow sync steering table entries programmed for P4 qid steering
Usage:
dpctl hs ha steering show
hs ha timer🔗
timer commands
Usage:
dpctl hs ha timer [command]
hs ha timer delete_query🔗
Set HA delete query timeout in milliseconds
Usage:
dpctl hs ha timer delete_query <ms>
hs ha timer delete_query_idle🔗
Set HA delete query idle timer in milliseconds
Usage:
dpctl hs ha timer delete_query_idle <ms>
hs ha timer interval🔗
Set HA keepalive interval in milliseconds
Usage:
dpctl hs ha timer interval <ms>
hs ha timer keepalive🔗
Set HA max missed keepalive threshold
Usage:
dpctl hs ha timer keepalive <count>
hs ha timer keepalive_up_update🔗
Set periodic HA status replay interval in seconds. A value of 0 disables periodic replay.
Usage:
dpctl hs ha timer keepalive_up_update <sec>
hs ha timer show🔗
Show HA timer settings
Usage:
dpctl hs ha timer show
hs ha timer timeout🔗
Set HA keepalive timeout in milliseconds
Usage:
dpctl hs ha timer timeout <ms>
hs log_export show🔗
Show log export status including configuration and collectors
Usage:
dpctl hs log_export show
hs logging🔗
logging {error | info | verbose | debug | drops | timestamp {enable | disable}} If the level is omitted, the current log level will be printed. Use ‘timestamp enable’ or ‘timestamp disable’ to control timestamps. Use ‘drops’ to log only dropped packets with details.
Usage:
dpctl hs logging [command]
hs logging categorize🔗
Enable or disable categorized logging. When enabled, logs are routed to separate files based on category (HA, Policy, Main).
Usage:
dpctl hs logging categorize [flags]
Flags:
Flag |
Type |
Description |
|---|---|---|
|
bool |
Enable categorized logging to separate files |
hs logging category🔗
Set log level for a specific category. When a category’s log level is set independently, logs for that category are automatically routed to a separate file.
Categories: main - General/main logs (dp-app.log) ha - HA-related logs (dp-app-ha.log) policy - Policy-related logs (dp-app-policy.log)
Log levels: error, info, debug, verbose, drop
Examples: dpctl hs logging category --name ha --level debug # Set HA
logs to debug, route to dp-app-ha.log dpctl hs logging category --name
policy --level info # Set Policy logs to info, route to dp-app-policy.log
dpctl hs logging category --name ha --reset # Reset HA to global level,
stop separate file dpctl hs logging category --name ha # Show current HA log
level
Usage:
dpctl hs logging category [flags]
Flags:
Flag |
Type |
Description |
|---|---|---|
|
string |
Log level: error, info, debug, verbose, drop |
|
string |
Category name: main, ha, or policy (required) |
|
bool |
Reset category to use global log level |
hs logging drop clear🔗
Clear all captured packets from the buffer
Usage:
dpctl hs logging drop clear
hs logging drop show🔗
Display all captured packets in the buffer
Usage:
dpctl hs logging drop show
hs logging drop start🔗
Start capturing dropped packets with optional category filter.
Categories: all - Capture all drops (default) policy - Policy-related drops (explicit deny, default deny, no match) parse - Packet parsing/header drops (invalid header, unsupported ethertype) flow - Flow/session programming drops ha - HA-related drops (control messages, errors)
Usage:
dpctl hs logging drop start [flags]
Flags:
Flag |
Type |
Description |
|---|---|---|
|
string |
Drop category filter (all, policy, parse, flow, ha) |
hs logging drop status🔗
Show packet drop logging status and statistics
Usage:
dpctl hs logging drop status
hs logging drop stop🔗
Stop capturing dropped packets
Usage:
dpctl hs logging drop stop
hs logging drop summary🔗
Show number of packets dropped per policy
Usage:
dpctl hs logging drop summary
hs logging drop write🔗
Export captured packets from buffer to file
Usage:
dpctl hs logging drop write [flags]
Flags:
Flag |
Type |
Description |
|---|---|---|
|
string |
Output file path |
|
string |
Output format (text or json) |
hs pol disable🔗
disable
Usage:
dpctl hs pol disable
hs pol enable🔗
enable
Usage:
dpctl hs pol enable
hs policies clear🔗
clear
Usage:
dpctl hs policies clear
hs policies limit🔗
Set the hypershield policy limit
Usage:
dpctl hs policies limit <count>
hs policies show🔗
show
Usage:
dpctl hs policies show [flags]
Flags:
Flag |
Type |
Description |
|---|---|---|
|
bool |
Show policy list summary |
hs policies update🔗
update
Usage:
dpctl hs policies update [flags]
Flags:
Flag |
Type |
Description |
|---|---|---|
|
string |
Profile file path |
hs policy-update-timer🔗
policy update timer (500ms to 600000ms)
Usage:
dpctl hs policy-update-timer
hs vrf add🔗
Add VRF information
Usage:
dpctl hs vrf add
hs vrf del🔗
Delete VRF information
Usage:
dpctl hs vrf del
hs vrf disable🔗
disable
Usage:
dpctl hs vrf disable
hs vrf enable🔗
enable
Usage:
dpctl hs vrf enable
hs vrf show🔗
show
Usage:
dpctl hs vrf show
hs vrf show-map🔗
Display VRF Map table information
Usage:
dpctl hs vrf show-map
show collector-session🔗
show collector session
Usage:
dpctl show collector-session [flags] [command]
Flags:
Flag |
Type |
Description |
|---|---|---|
|
uint32 |
Specify collector session ID (valid range 1-8192) |
show collector-session statistics🔗
show collector session statistics
Usage:
dpctl show collector-session statistics [flags]
Flags:
Flag |
Type |
Description |
|---|---|---|
|
uint32 |
Specify collector session ID (valid range 1-8192) |
show dpu-capacity🔗
show DPU table capacity and resource usage in hardware
Usage:
dpctl show dpu-capacity [command]
show dpu-capacity summary🔗
show DPU capacity summary with table and worker thread usage
Usage:
dpctl show dpu-capacity summary
show flow🔗
show flow object information
Usage:
dpctl show flow [flags]
Flags:
Flag |
Type |
Description |
|---|---|---|
|
string |
Specify dsetination IP |
|
uint32 |
Specify flow destination port |
|
uint32 |
Specify flow IP proto |
|
string |
Specify source IP |
|
uint32 |
Specify flow source port |
|
bool |
Display number of flows |
|
uint32 |
Specify VRF ID |
show flow-analysis🔗
show detailed flow/session/policy analysis for a specific flow filtered by 5-tuple (supports both IPv4 and IPv6)
Usage:
dpctl show flow-analysis [flags]
Flags:
Flag |
Type |
Description |
|---|---|---|
|
bool |
Show all matching flows (overrides |
|
string |
Specify destination IP (IPv4 or IPv6) |
|
uint32 |
Specify flow destination port |
|
uint32 |
Specify flow IP proto |
|
uint32 |
Limit number of matches (default 1) |
|
string |
Specify source IP (IPv4 or IPv6) |
|
uint32 |
Specify flow source port |
show npu_address🔗
npu_address
Usage:
dpctl show npu_address
show pipeline internal table constant🔗
show P4 pipeline table constant
Usage:
dpctl show pipeline internal table constant
show pipeline internal table info🔗
show P4 pipeline table information
Usage:
dpctl show pipeline internal table info
show pipeline internal table nacl🔗
show nacl information
Usage:
dpctl show pipeline internal table nacl
show pipeline internal table nexthop🔗
show nexthop table entry information
Usage:
dpctl show pipeline internal table nexthop [flags]
Flags:
Flag |
Type |
Description |
|---|---|---|
|
uint32 |
Specify the NextHop ID to display |
|
bool |
display in json format |
|
bool |
display in yaml format |
show pipeline internal table rewrite🔗
show rewrite table entry information
Usage:
dpctl show pipeline internal table rewrite [flags]
Flags:
Flag |
Type |
Description |
|---|---|---|
|
uint32 |
Specify the Rewrite ID to display |
|
bool |
display in json format |
|
bool |
display in yaml format |
show pipeline statistics🔗
show pipeline statistics
Usage:
dpctl show pipeline statistics [command]
show pipeline statistics datapath-assist🔗
Show pipeline datapath assist statistics
Usage:
dpctl show pipeline statistics datapath-assist [flags]
Flags:
Flag |
Type |
Description |
|---|---|---|
|
bool |
display connections/second history |
|
bool |
display per thread connections/second history |
|
bool |
display statistics details |
|
uint32 |
display connections/second history for the duration |
|
bool |
display statistics summary |
show pipeline statistics drop🔗
show pipeline drop statistics
Usage:
dpctl show pipeline statistics drop
show session🔗
show session object information
Usage:
dpctl show session [flags]
Flags:
Flag |
Type |
Description |
|---|---|---|
|
uint32 |
Specify session id |
show telemetry-policy🔗
show telemetry policy
Usage:
dpctl show telemetry-policy [flags]
Flags:
Flag |
Type |
Description |
|---|---|---|
|
uint32 |
Specify telemetry policy ID (valid range 1-1024) |
show uplink-pinning🔗
show uplink pinning
Usage:
dpctl show uplink-pinning
show version🔗
show version information
Usage:
dpctl show version
tcp-state-check disable🔗
Disable TCP state machine compliance checking. When disabled, packets that violate the TCP state machine will not be dropped.
Usage:
dpctl tcp-state-check disable
tcp-state-check enable🔗
Enable TCP state machine compliance checking. When enabled, packets that violate the TCP state machine will be dropped.
Usage:
dpctl tcp-state-check enable
tcp-state-check show🔗
Show whether TCP state machine compliance checking is enabled in the P4 datapath.
Usage:
dpctl tcp-state-check show
isoctl command line interface🔗
A CLI tool for managing the Isovalent Enterprise and Hypershield platforms.
Usage:
isoctl [command]
Global flags:
Flag |
Type |
Description |
|---|---|---|
|
string |
Log format (“text” or “pretty”). |
|
string |
Log level (“debug”, “error” or “info”). |
bootstrap capi🔗
Install and initialize CAPI (with no infra providers) on the cluster.
Usage:
isoctl bootstrap capi
bootstrap install🔗
Bootstrap and install a new management cluster.
Usage:
isoctl bootstrap install [flags]
Flags:
Flag |
Type |
Description |
|---|---|---|
|
string |
IP address to be used as the management cluster control plane VIP. |
|
string |
Version of cilium to install on the management cluster. |
|
string |
Path to BootstrapConfig config file |
|
bool |
Output derived BootstrapConfig config and exit |
|
int |
The number of control plane replicas to provision for the management cluster. |
|
bool |
Create a key-pair for management cluster node authorization if no keys are provided. |
|
list |
Specify additional container image archives to be loaded onto the management cluster nodes. |
|
list |
IPAM pool addresses |
|
string |
Deprecated: IPAM pool gateway |
|
list |
Deprecated: IPAM pool nameservers |
|
uint8 |
Deprecated: IPAM pool prefix |
|
string |
Deprecated: IPAM pool name |
|
string |
Specify a MgmtCluster manifest to deploy. |
|
string |
Name of the management cluster to be created. |
|
string |
Namespace to create the MgmtCluster in. By default, it’s the name of the management cluster. |
|
list |
Specify additional public keys to be authorized for SSH on the management cluster nodes. |
|
bool |
Add management cluster node authorized keys from ssh-agent. $SSH_AUTH_SOCK will be used as the socket address. |
|
string |
Name of the default user on all provisioned nodes. By default, it will be “ilb”. |
|
string |
Override the isovalent-operator image URI to be used. |
|
string |
IP address range to be allocated for Pods. |
|
int |
Number of images to push to the registry in parallel during seeding. |
|
list |
Specify additional container image archives to seed the management cluster registry with. |
|
string |
IP address range to be allocated for Services. |
|
bool |
Skip cleanup of temporary resources after bootstrap is completed. |
|
bool |
Enable strict bootstrap config parsing (reject unknown fields) |
|
duration |
Maximum time to complete install process |
|
string |
Validation mode: offline, online, or all |
|
bool |
Enable detailed validation trace logs (for deep troubleshooting) |
|
string |
Specify the datacenter node VMs should provision to. |
|
string |
Specify the datastore node VMs should allocate disks from. |
|
string |
Endpoint for the target vSphere server. |
|
string |
Configure the inventory folder to organize node VMs under. |
|
string |
Specify the default network for node VMs. |
|
string |
Password to use for authentication. |
|
string |
Specify the name of the resource pool node VMs should be scheduled to. |
|
string |
Provide a path to save the node OVA to. On bootstrap the CLI will upload the embedded node OVA to this path. All node VMs will be provisioned from this image. |
|
string |
Thumbprint of the vSphere server. |
|
string |
Username of the vSphere user that the control plane should assume the identity of. |
|
string |
Name of the management cluster worker node pool. |
|
int |
The number of worker replicas to provision for the management cluster. |
Examples:
# Install bootstrap cluster interactively
isoctl bootstrap install
# Install bootstrap cluster from config
isoctl bootstrap install -f bootstrap.yaml
bootstrap validate🔗
Validate a bootstrap config file with offline and/or online checks.
Offline checks:
required bootstrap fields (vSphere settings, networks)
proxy settings and noProxy value format
network/IPAM values (names, ranges, prefix, nameservers, optional gateway)
no overlap between networks[*].ipam.addresses and effective pod/service CIDRs (mgmtCluster.podCIDR/serviceCIDR or defaults)
network IPAM address capacity per configured segment against required node replicas (controlPlaneReplicas + workerReplicas)
management cluster API and SSH auth strategy settings
mgmtCluster.vmProfile value (must be one of: standard, hypershield)
mgmtCluster.vmSizing bounds (numCPUs: 4..256, memoryMiB: 8192..1048576 when set)
warning when both vmProfile and vmSizing are set (vmSizing overrides vmProfile/defaults per field; unset fields keep profile/default values)
when using nodeAuthorizedKeysFromAgent as the only auth option: SSH_AUTH_SOCK must be set and ssh-agent must have at least one loaded private key
archive paths and runtime prerequisites
preflight check: bootstrap kind cluster name is not already in use
Online checks:
vSphere connectivity/authentication
vSphere inventory lookups (datacenter, datastore, resource pool, networks)
management requested-IP preflight for mgmtCluster.apiServer.address (fail if the address responds to ICMP or already listens on TCP/6443)
proxy endpoint TCP reachability (host/IP + configured port)
container registry reachability (docker.io/registry.k8s.io/quay.io/ghcr.io), warning-only for potential airgap installs
warning-only IPAM collision scan against visible VM guest IPs
Skipped during online checks:
vSphere folder existence
VM template existence
Usage:
isoctl bootstrap validate [flags]
Flags:
Flag |
Type |
Description |
|---|---|---|
|
string |
IP address to be used as the management cluster control plane VIP. |
|
string |
Version of cilium to install on the management cluster. |
|
string |
Path to BootstrapConfig config file |
|
bool |
Output derived BootstrapConfig config and exit |
|
int |
The number of control plane replicas to provision for the management cluster. |
|
bool |
Create a key-pair for management cluster node authorization if no keys are provided. |
|
list |
Specify additional container image archives to be loaded onto the management cluster nodes. |
|
list |
IPAM pool addresses |
|
string |
Deprecated: IPAM pool gateway |
|
list |
Deprecated: IPAM pool nameservers |
|
uint8 |
Deprecated: IPAM pool prefix |
|
string |
Deprecated: IPAM pool name |
|
string |
Specify a MgmtCluster manifest to deploy. |
|
string |
Name of the management cluster to be created. |
|
string |
Namespace to create the MgmtCluster in. By default, it’s the name of the management cluster. |
|
list |
Specify additional public keys to be authorized for SSH on the management cluster nodes. |
|
bool |
Add management cluster node authorized keys from ssh-agent. $SSH_AUTH_SOCK will be used as the socket address. |
|
string |
Name of the default user on all provisioned nodes. By default, it will be “ilb”. |
|
string |
Override the isovalent-operator image URI to be used. |
|
string |
IP address range to be allocated for Pods. |
|
int |
Number of images to push to the registry in parallel during seeding. |
|
list |
Specify additional container image archives to seed the management cluster registry with. |
|
string |
IP address range to be allocated for Services. |
|
bool |
Skip cleanup of temporary resources after bootstrap is completed. |
|
bool |
Enable strict bootstrap config parsing (reject unknown fields) |
|
string |
Validation mode: offline, online, or all |
|
bool |
Enable detailed validation trace logs (for deep troubleshooting) |
|
string |
Specify the datacenter node VMs should provision to. |
|
string |
Specify the datastore node VMs should allocate disks from. |
|
string |
Endpoint for the target vSphere server. |
|
string |
Configure the inventory folder to organize node VMs under. |
|
string |
Specify the default network for node VMs. |
|
string |
Password to use for authentication. |
|
string |
Specify the name of the resource pool node VMs should be scheduled to. |
|
string |
Provide a path to save the node OVA to. On bootstrap the CLI will upload the embedded node OVA to this path. All node VMs will be provisioned from this image. |
|
string |
Thumbprint of the vSphere server. |
|
string |
Username of the vSphere user that the control plane should assume the identity of. |
|
string |
Name of the management cluster worker node pool. |
|
int |
The number of worker replicas to provision for the management cluster. |
Examples:
# Validate all checks (default)
isoctl bootstrap validate -f bootstrap.yaml
# Validate only local/offline checks
isoctl bootstrap validate -f bootstrap.yaml --validation-mode offline
# Validate only provider connectivity/resource checks
isoctl bootstrap validate -f bootstrap.yaml --validation-mode online
charts extract🔗
Extract a Helm chart from the cluster
Usage:
isoctl charts extract [CHART_NAME...] [flags]
Flags:
Flag |
Type |
Description |
|---|---|---|
|
bool |
Extract all available charts |
|
string |
Path to custom manifest file (defaults to embedded manifest) |
|
string |
Output directory for extracted charts |
Examples:
# Extract a single chart
isoctl charts extract harbor-1.17.2 -o /tmp/
# Extract multiple charts
isoctl charts extract harbor-1.17.2 cilium-1.18.10 infra-0.1.1 -o /tmp/
# Extract all charts
isoctl charts extract --all -o /tmp/
# Extract from custom manifest
isoctl charts extract harbor-1.17.2 --manifest /path/to/install.yaml -o /tmp/
charts list🔗
List available Helm charts in the cluster
Usage:
isoctl charts list [flags]
Flags:
Flag |
Type |
Description |
|---|---|---|
|
string |
Path to custom manifest file (defaults to embedded manifest) |
hypershield dev create🔗
Create a kind cluster wired for Hypershield and deploy Hypershield into it.
This mirrors a BYOVM install with no vSphere or Cluster API: it creates the kind cluster (default CNI and kube-proxy disabled) with the caller’s Docker registry credentials mounted so the kubelet can pull enterprise images, applies the operator bundle, installs the Gateway API CRDs and enterprise Cilium, then runs the operator in-cluster and creates a self-targeting Hypershield CR.
With --mode leader the Hypershield CR is deployed in Timescape Leader mode
with the web UI, Public API, a bespoke in-cluster Dex OIDC provider, and a
host-exposed gateway. The UI and authenticated Public API are both reachable
from the host.
With --mode follower the cluster joins an existing leader. First register
the follower on the leader UI and copy back the join credential, then pass it
here with --credential along with --leader (the leader kind cluster
name). The cluster ID is read from the credential, and the leader address, CA,
and the follower’s k8s host are all auto-discovered. Multiple followers can join
one leader; each is its own kind cluster. The follower name
(--follower-name, or --name) must match the name registered on the
leader.
Usage:
isoctl hypershield dev create [flags]
Flags:
Flag |
Type |
Description |
|---|---|---|
|
string |
Cilium chart version (selects the cilium-<version> ConfigMap shipped in the operator bundle) |
|
string |
Follower join credential copied from the leader UI (required with |
|
string |
Follower name; MUST match the name registered on the leader (Follower mode; defaults to |
|
string |
Name of the leader kind cluster; auto-discovers the leader address and CA (required with |
|
bool |
Load |
|
string |
Timescape deployment mode: leader or follower |
|
string |
Name of the kind cluster to create |
|
string |
kindest/node image to use |
|
string |
Override the operator manager image (e.g. a locally-built image for the host architecture) |
|
string |
DNS hostname for the Timescape Public API Gateway listener (Leader mode; must differ from the server and UI hostnames; defaults to api.127-0-0-1.sslip.io) |
|
list |
Registries to resolve credentials for (default: all logged-in registries) |
|
string |
DNS hostname for the Timescape server gRPC listener (Leader mode; defaults to a dev placeholder) |
|
string |
Directory for generated files (default: $XDG_DATA_HOME/isoctl/hypershield-dev or ~/.local/share/isoctl/hypershield-dev) |
|
string |
DNS hostname for the Timescape UI Gateway listener (Leader mode; must differ from |
|
int |
Number of worker nodes (minimum 1 for L2 announcements) |
Examples:
# Leader dev cluster (UI, Public API, Dex, and gateway are always on)
isoctl hypershield dev create --name hs-leader --mode leader
# Follower joined to the hs-leader cluster (credential copied from the leader UI)
isoctl hypershield dev create --name hs-follower-1 --mode follower \
--leader hs-leader --credential "$CREDENTIAL"
hypershield dev delete🔗
Delete the kind cluster created by ‘isoctl hypershield dev create’ and remove its per-cluster state directory (the resolved registry credentials, kubeconfig, and any leader/follower credential material such as the join credential and the Dex/leader CAs).
This is idempotent: deleting a cluster that does not exist is not an error.
Usage:
isoctl hypershield dev delete [flags]
Flags:
Flag |
Type |
Description |
|---|---|---|
|
string |
Name of the kind cluster to delete |
|
string |
Directory holding generated files (default: $XDG_DATA_HOME/isoctl/hypershield-dev or ~/.local/share/isoctl/hypershield-dev) |
Examples:
# Delete the default dev cluster
isoctl hypershield dev delete
# Delete a named cluster
isoctl hypershield dev delete --name hs-leader
hypershield install🔗
Create or update the Hypershield CR and wait for all components to be ready.
Deployment modes:
CAPI (default):
Resolves the MgmtCluster from the current kubeconfig context.
Creates a cluster-scoped Hypershield CR using the MgmtCluster namespace as its management namespace.
Uses the MgmtCluster’s admin kubeconfig to deploy components.
Uses vsphere-csi as the Timescape PVC storage class.
BYOVM:
Select this mode with
--byovmfor an existing cluster not provisioned through CAPI.Requires
--admin-kubeconfig-secretto identify an admin kubeconfig Secret.Creates a cluster-scoped Hypershield CR using isovalent-operator-system as its management namespace.
Uses longhorn as the Timescape PVC storage class.
Components installed:
ClickHouse operator
CloudNativePG operator
Control plane (CRDs and SmartSwitch configuration)
Hubble Timescape (configure UI and Public API exposure via
-for--timescape-*flags)
The complete configuration is validated before any cluster resources are changed.
Usage:
isoctl hypershield install [flags]
Flags:
Flag |
Type |
Description |
|---|---|---|
|
string |
Name of the Secret in isovalent-operator-system containing an admin kubeconfig (required with |
|
bool |
Deploy on a pre-existing cluster not provisioned via CAPI (brownfield / BYOVM mode) |
|
bool |
Enable the Connection Logs Connector (receives SmartSwitch IPFIX and pushes ConnectionLogs to Timescape) |
|
string |
External IP for the CLC IPFIX UDP LoadBalancer Service (required when CLC is enabled) |
|
string |
Path to HypershieldInstallConfig config file |
|
bool |
Output derived HypershieldInstallConfig config and exit |
|
string |
Kubeconfig context name to use |
|
string |
Path to the mgmt kubeconfig to use |
|
bool |
Enable strict Hypershield config parsing (reject unknown fields) |
|
duration |
Maximum time to wait for Hypershield readiness |
|
string |
Path to the Leader CA certificate PEM file (follower profile) |
|
string |
Human-readable name of this follower cluster (follower profile) |
|
string |
Path to a file containing the opaque join credential from the Leader’s GenerateJoinCredentials (follower profile) |
|
string |
Follower Kubernetes API server URL, e.g. https://192.168.1.10:6443 (follower profile) |
|
string |
Leader Timescape gRPC address in host:port format (follower profile) |
|
string |
External LoadBalancer IP for SmartSwitch reporting to Timescape on HTTPS port 4260 and gRPC port 4261 (required in the follower profile) |
|
string |
External IP for the Gateway LoadBalancer (shared by gRPC server, Public API, and UI in the leader profile) |
|
stringArray |
Helm |
|
string |
Timescape role: leader or follower (required) |
|
bool |
Enable the Timescape Public API (leader profile) |
|
string |
DNS hostname for the Timescape Public API Gateway listener (leader profile) |
|
string |
Path to the Leader Secure Connector server CA certificate PEM file (follower profile, required) |
|
string |
Optional DNS name for the Secure Connector server, added to its certificate SANs (leader profile) |
|
string |
External LoadBalancer IP for the Secure Connector server gRPC endpoint (leader profile, required) |
|
string |
Leader Secure Connector server gRPC address in host:port format (follower profile, required) |
|
bool |
Enable production SCC integration (leader profile); requires |
|
bool |
Enable staging SCC integration (Cisco staging IdPs, QA/dev); requires |
|
string |
Staging SCC tenant/product ID (required with |
|
string |
Production SCC tenant/product ID pinned in the SCC token validation rules (required with |
|
string |
DNS hostname for the Timescape gRPC server Gateway listener (leader profile) |
|
string |
Path to the OIDC provider CA certificate PEM file; isoctl creates a ConfigMap from it (leader profile, optional for public IdPs) |
|
string |
OIDC client ID for Timescape server RBAC (leader profile) |
|
string |
OIDC issuer base URL for Timescape server RBAC (leader profile) |
|
string |
Name of an existing ConfigMap in hubble-timescape containing the OIDC provider CA under key ca.crt (optional) |
|
string |
Override the OIDC client ID for the UI (optional; defaults to server.rbac.oidcClientID via chart fallback) |
|
string |
Path to a file containing the OIDC application client secret for the UI; isoctl creates a Secret in the operator namespace from it (required in the leader profile when UI is enabled) |
|
string |
Name of the K8s Secret created in the operator namespace for the UI OIDC client secret |
|
string |
Override the base OIDC issuer URL for the UI (optional; defaults to server.rbac.oidcIssuerURL via chart fallback) |
|
bool |
Enable the Timescape web UI |
|
string |
DNS hostname for the Timescape UI Gateway listener |
|
string |
Path to the server certificate PEM file for the UI TLS secret |
|
string |
Path to the private key PEM file for the UI TLS secret |
|
string |
Name of the K8s TLS secret created in hubble-timescape namespace |
Examples:
# Install on a CAPI-provisioned cluster
isoctl hypershield install
# Install on a pre-existing cluster (BYOVM / brownfield)
isoctl hypershield install --byovm --admin-kubeconfig-secret my-admin-kubeconfig
# Install with Timescape UI (operator manages TLS automatically)
isoctl hypershield install \
--timescape-ui-enabled \
--timescape-ip 10.0.0.100 \
--timescape-ui-hostname timescape.example.com
# Install with Timescape UI using user-provided TLS certificates
isoctl hypershield install \
--timescape-ui-enabled \
--timescape-ip 10.0.0.100 \
--timescape-ui-hostname timescape.example.com \
--timescape-ui-tls-cert-file /path/to/tls.crt \
--timescape-ui-tls-key-file /path/to/tls.key
# Install in the leader profile without initial identity bindings
isoctl hypershield install \
--timescape-profile leader \
--timescape-ip 10.0.0.200 \
--timescape-sc-ip 10.0.0.201 \
--timescape-server-hostname timescape-grpc.example.com \
--timescape-public-api-enabled \
--timescape-public-api-hostname api.example.com \
--timescape-server-rbac-oidc-issuer-url https://my-account.okta.com/oauth2/default \
--timescape-server-rbac-oidc-client-id 0oabc123def456 \
--timescape-server-rbac-oidc-ca-file /path/to/oidc-ca.crt
# Install in the leader profile using a config file (see example.hypershield-install.yaml)
isoctl hypershield install -f hypershield-install.yaml
hypershield upgrade🔗
Validate and apply a supported Hypershield release artifact.
The install path may be an upgrade .tar.zst bundle or the expanded directory installed by an isovalent-upgrade-hypershield Debian/RPM package. Installing the package only stages files; it does not change the cluster.
One immutable release contains the complete infrastructure and application payload. It may change either or both. The command executes their ordered internal stages and records the release only after the complete target converges.
Phase 1 supports CAPI-managed Hypershield installations.
Usage:
isoctl hypershield upgrade [flags]
Flags:
Flag |
Type |
Description |
|---|---|---|
|
string |
Kubeconfig context name to use |
|
string |
Upgrade bundle or package-installed directory |
|
string |
Path to the mgmt kubeconfig to use |
|
string |
Existing customer-imported vSphere VM template for a release node OVA |
|
bool |
Validate and display the upgrade plan without changing the cluster |
|
int |
Number of images to push in parallel |
|
duration |
Maximum time to wait for target release convergence |
hypershield validate🔗
Validate a Hypershield installation config without changing cluster resources.
Validation checks:
unknown or obsolete configuration fields
a required Timescape leader or follower profile
required leader and follower settings
Timescape UI and Public API exposure and OIDC consistency
referenced credential, certificate, and client-secret files
optional component requirements
Usage:
isoctl hypershield validate [flags]
Flags:
Flag |
Type |
Description |
|---|---|---|
|
bool |
Enable the Connection Logs Connector (receives SmartSwitch IPFIX and pushes ConnectionLogs to Timescape) |
|
string |
External IP for the CLC IPFIX UDP LoadBalancer Service (required when CLC is enabled) |
|
string |
Path to HypershieldInstallConfig config file |
|
bool |
Output derived HypershieldInstallConfig config and exit |
|
bool |
Enable strict Hypershield config parsing (reject unknown fields) |
|
string |
Path to the Leader CA certificate PEM file (follower profile) |
|
string |
Human-readable name of this follower cluster (follower profile) |
|
string |
Path to a file containing the opaque join credential from the Leader’s GenerateJoinCredentials (follower profile) |
|
string |
Follower Kubernetes API server URL, e.g. https://192.168.1.10:6443 (follower profile) |
|
string |
Leader Timescape gRPC address in host:port format (follower profile) |
|
string |
External LoadBalancer IP for SmartSwitch reporting to Timescape on HTTPS port 4260 and gRPC port 4261 (required in the follower profile) |
|
string |
External IP for the Gateway LoadBalancer (shared by gRPC server, Public API, and UI in the leader profile) |
|
stringArray |
Helm |
|
string |
Timescape role: leader or follower (required) |
|
bool |
Enable the Timescape Public API (leader profile) |
|
string |
DNS hostname for the Timescape Public API Gateway listener (leader profile) |
|
string |
Path to the Leader Secure Connector server CA certificate PEM file (follower profile, required) |
|
string |
Optional DNS name for the Secure Connector server, added to its certificate SANs (leader profile) |
|
string |
External LoadBalancer IP for the Secure Connector server gRPC endpoint (leader profile, required) |
|
string |
Leader Secure Connector server gRPC address in host:port format (follower profile, required) |
|
bool |
Enable production SCC integration (leader profile); requires |
|
bool |
Enable staging SCC integration (Cisco staging IdPs, QA/dev); requires |
|
string |
Staging SCC tenant/product ID (required with |
|
string |
Production SCC tenant/product ID pinned in the SCC token validation rules (required with |
|
string |
DNS hostname for the Timescape gRPC server Gateway listener (leader profile) |
|
string |
Path to the OIDC provider CA certificate PEM file; isoctl creates a ConfigMap from it (leader profile, optional for public IdPs) |
|
string |
OIDC client ID for Timescape server RBAC (leader profile) |
|
string |
OIDC issuer base URL for Timescape server RBAC (leader profile) |
|
string |
Name of an existing ConfigMap in hubble-timescape containing the OIDC provider CA under key ca.crt (optional) |
|
string |
Override the OIDC client ID for the UI (optional; defaults to server.rbac.oidcClientID via chart fallback) |
|
string |
Path to a file containing the OIDC application client secret for the UI; isoctl creates a Secret in the operator namespace from it (required in the leader profile when UI is enabled) |
|
string |
Name of the K8s Secret created in the operator namespace for the UI OIDC client secret |
|
string |
Override the base OIDC issuer URL for the UI (optional; defaults to server.rbac.oidcIssuerURL via chart fallback) |
|
bool |
Enable the Timescape web UI |
|
string |
DNS hostname for the Timescape UI Gateway listener |
|
string |
Path to the server certificate PEM file for the UI TLS secret |
|
string |
Path to the private key PEM file for the UI TLS secret |
|
string |
Name of the K8s TLS secret created in hubble-timescape namespace |
Examples:
# Validate a configuration file
isoctl hypershield validate -f hypershield-install.yaml
# Validate the equivalent CLI arguments before installing
isoctl hypershield validate \
--timescape-profile leader \
--timescape-ip 10.0.0.200 \
--timescape-server-hostname timescape-grpc.example.com \
--timescape-server-rbac-oidc-issuer-url https://idp.example.com \
--timescape-server-rbac-oidc-client-id my-client-id
hypervisor-agnostic validate🔗
Validate a hypervisor-agnostic Hypershield cluster config with offline and/or online checks.
Offline checks:
required fields (podCIDR, serviceCIDR, controlPlaneReplicas, workerReplicas, apiServer.address)
network names, IPAM addresses, gateway, and nameservers
no overlap between networks[*].ipam.addresses and pod/service CIDRs
network IPAM address capacity against required node replicas
proxy settings and noProxy value format
nodeAuthorizedKeys format when provided
controller and worker IP resolution from networks[0].ipam.addresses
Online checks:
proxy endpoint TCP reachability (host/IP + configured port)
Usage:
isoctl hypervisor-agnostic validate [flags]
Flags:
Flag |
Type |
Description |
|---|---|---|
|
string |
Path to hypervisor-agnostic cluster config file |
|
bool |
Enable strict config parsing (reject unknown fields) |
|
string |
Validation mode: offline, online, or all |
|
bool |
Enable detailed validation trace logs (for deep troubleshooting) |
Examples:
# Validate all checks (default)
isoctl hypervisor-agnostic validate -f cluster-config.yaml
# Validate only local/offline checks
isoctl hypervisor-agnostic validate -f cluster-config.yaml --validation-mode offline
# Validate only network reachability checks
isoctl hypervisor-agnostic validate -f cluster-config.yaml --validation-mode online
ilb accesslog🔗
Display load balancer T2 access log.
Usage:
isoctl ilb accesslog
ilb applicationlog🔗
Display load balancer T2 application log.
Usage:
isoctl ilb applicationlog
ilb delete🔗
Delete a load balancer by name.
Usage:
isoctl ilb delete NAME [flags]
Flags:
Flag |
Type |
Description |
|---|---|---|
|
string |
Kubeconfig context name to use |
|
string |
Path to the mgmt kubeconfig to use |
|
string |
Name of the LoadBalancer |
|
string |
Kubernetes namespace |
|
bool |
Wait for load balancer to be deleted |
Examples:
# Delete LB and wait for completion
isoctl ilb delete my-loadbalancer --wait
# Delete LB cluster and don't wait
isoctl ilb delete my-loadbalancer
ilb install🔗
Install a load balancer.
Usage:
isoctl ilb install [flags]
Flags:
Flag |
Type |
Description |
|---|---|---|
|
string |
IP address to be used as the load balancer cluster control plane VIP. |
|
int |
The number of AUX replicas to provision for the load balancer. |
|
string |
Version of cilium to install on the load balancer cluster. |
|
string |
Kubeconfig context name to use |
|
int |
The number of control plane replicas to provision for the load balancer cluster. |
|
bool |
Create a key-pair for load balancer node authorization if no keys are provided. |
|
string |
Path to CreateOptions config file |
|
bool |
Output derived CreateOptions config and exit |
|
bool |
Enabled interactive mode |
|
string |
Path to the mgmt kubeconfig to use |
|
string |
Specify a LoadBalancer manifest to deploy. |
|
string |
Name of the load balancer to be created. |
|
string |
Namespace to create the LoadBalancer in. By default, it’s the name of the load balancer. |
|
list |
Specify additional public keys to be authorized for SSH on the load balancer cluster nodes. |
|
bool |
Add load balancer cluster node authorized keys from ssh-agent. $SSH_AUTH_SOCK will be used as the socket address. |
|
string |
Name of the default user on all provisioned nodes. By default, it will be “ilb”. |
|
int |
The number of T1 replicas to provision for the load balancer. |
|
int |
The number of T2 replicas to provision for the load balancer. |
Examples:
# Install a basic load balancer from args using SSH_AGENT for node auth
isoctl ilb install --name lb --address 10.53.53.249 --t1 2 --t2 3 --node-authorized-keys-from-agent
# Install a load balancer from a MgmtCluster manifest
isoctl ilb install -m loadbalancer.yaml
# Install a load balancer from a config file
isoctl ilb install -f config.yaml
ilb kubeconfig🔗
Get the kubeconfig for a load balancer by name.
Usage:
isoctl ilb kubeconfig NAME [flags]
Flags:
Flag |
Type |
Description |
|---|---|---|
|
string |
Kubeconfig context name to use |
|
string |
Path to the mgmt kubeconfig to use |
|
string |
Name of the LoadBalancer |
|
string |
Kubernetes namespace |
Examples:
# Get the kubeconfig for a load balancer
isoctl ilb kubeconfig my-loadbalancer
ilb service🔗
Display load balancer service status.
Usage:
isoctl ilb service
ilb status🔗
Display load balancer status.
Usage:
isoctl ilb status
ilb switch🔗
Switch between cluster contexts.
Usage:
isoctl ilb switch [NAME] [flags]
Flags:
Flag |
Type |
Description |
|---|---|---|
|
string |
Kubeconfig context name to use |
|
string |
Path to the mgmt kubeconfig to use |
|
bool |
switch to the management cluster |
|
string |
Name of the CiliumCluster |
|
string |
Kubernetes namespace |
Examples:
# Switch between contexts interactively
isoctl switch
# Switch to context by cluster name
isoctl switch my-loadbalancer
# Swicth to management cluster context
isoctl switch --mgmt
ilb sysdump🔗
Collect information required to troubleshoot issues with Cilium and Hubble.
Usage:
isoctl ilb sysdump
ilb test🔗
Run load balancer tests.
Usage:
isoctl ilb test
ilb upgrade🔗
Upgrade the ILB cluster using the given install artifact tarball.
Usage:
isoctl ilb upgrade [flags]
Flags:
Flag |
Type |
Description |
|---|---|---|
|
string |
Kubeconfig context name to use |
|
string |
Path to the install artifact tarball |
|
string |
Path to the mgmt kubeconfig to use |
|
int |
Number of images to push in parallel |
|
duration |
How long to wait for the cluster to become healthy after upgrade before rolling back |
images load🔗
Load container images from the given local image archive to the management cluster’s registry, or to an explicitly provided registry.
Usage:
isoctl images load ARCHIVE [flags]
Flags:
Flag |
Type |
Description |
|---|---|---|
|
string |
Kubeconfig context name to use |
|
bool |
Skip TLS verification for the explicitly provided registry |
|
string |
Path to the mgmt kubeconfig to use |
|
string |
Password for the explicitly provided registry |
|
string |
Registry address to load images into. When set, MgmtCluster registry discovery is skipped |
|
int |
Number of images to push in parallel |
|
string |
Username for the explicitly provided registry |
Examples:
# Load a local zst compressed image archive
isoctl images load my-images.tar.zst
# Load a local zst compressed image archive to an explicit registry
isoctl images load my-images.tar.zst --registry registry.example.com
# Load to an explicit registry with a self-signed certificate
isoctl images load my-images.tar.zst --registry registry.example.com --insecure-skip-tls-verify
# Load to an explicit registry with basic auth
isoctl images load my-images.tar.zst --registry registry.example.com --username myuser --password mypass
kubeconfig🔗
Get the kubeconfig for all clusters
Usage:
isoctl kubeconfig [flags]
Flags:
Flag |
Type |
Description |
|---|---|---|
|
string |
Kubeconfig context name to use |
|
string |
Path to the mgmt kubeconfig to use |
|
bool |
Update the sourced kubeconfig file |
mgmtcluster delete🔗
Delete a management cluster.
The nuke strategy is intended for repeated CI/test environments where speed and full teardown are prioritized over graceful uninstall semantics.
Usage:
isoctl mgmtcluster delete [flags]
Flags:
Flag |
Type |
Description |
|---|---|---|
|
string |
Kubeconfig context name to use |
|
bool |
Skip interactive confirmation |
|
string |
Path to the mgmt kubeconfig to use |
|
string |
Delete strategy (currently supported: nuke) |
|
duration |
Maximum time to complete deletion |
|
string |
Optional vSphere inventory folder path used to enumerate VMs when VSphereMachine discovery is empty |
operator install🔗
Install the Isovalent Operator into an existing Kubernetes cluster (BYOVM).
The command applies the embedded operator bundle (CRDs, RBAC, Deployment, and related resources from install.yaml), then waits until the controller-manager Deployment is available.
The operator Deployment’s manager container image comes from the embedded manifest (for example quay.io/isovalent-dev/isovalent-operator-ci:latest). Cluster nodes must be configured to pull from your registry when you are not using a public registry (registry mirrors, TLS trust, and credentials as required by your environment). You do not need to pass a registry host or Harbor project path in this command when node configuration already resolves the embedded image reference.
Use --operator-image only when you want to replace the manager container
image with a different reference (for example
<registry>/<project>/<image>:<tag>).
Flags:
-k,--kubeconfig: Path to kubeconfig (default: standard kubeconfig path)--context: Kubeconfig context (default: mgmtcluster.isovalent.com)--timeout: Max wait for operator readiness (default: 10m)--operator-image: Override only the manager container image on the operator Deployment
Usage:
isoctl operator install [flags]
Flags:
Flag |
Type |
Description |
|---|---|---|
|
string |
Kubeconfig context name to use |
|
string |
Path to the mgmt kubeconfig to use |
|
string |
Image reference for the manager container (replaces the image in the embedded manifest) |
|
duration |
Maximum time to wait for operator readiness |
Examples:
# Install using current kubeconfig defaults
isoctl operator install
# Install with explicit kubeconfig and context (typical BYOVM admin cluster)
isoctl operator install --kubeconfig ~/.kube/config --context admin
# Install with a longer readiness wait
isoctl operator install --timeout 15m
# Optionally replace the manager container image
isoctl operator install --operator-image isovalent-dev/isovalent-operator-ci:latest
switch🔗
Switch between cluster contexts.
Usage:
isoctl switch [NAME] [flags]
Flags:
Flag |
Type |
Description |
|---|---|---|
|
string |
Kubeconfig context name to use |
|
string |
Path to the mgmt kubeconfig to use |
|
bool |
switch to the management cluster |
|
string |
Name of the CiliumCluster |
|
string |
Kubernetes namespace |
Examples:
# Switch between contexts interactively
isoctl switch
# Switch to context by cluster name
isoctl switch my-loadbalancer
# Swicth to management cluster context
isoctl switch --mgmt
sysdump🔗
Collect a sysdump from the cluster containing logs and diagnostics information for troubleshooting
Usage:
isoctl sysdump [flags]
Flags:
Flag |
Type |
Description |
|---|---|---|
|
stringArray |
Optional set of flags to pass to cilium-bugtool command. |
|
string |
The labels used to target Cilium daemon set |
|
string |
The labels used to target Cilium Envoy pods |
|
string |
The Cilium Helm release name for which to get values. If not provided then the |
|
string |
The labels used to target Cilium pods |
|
string |
The namespace Cilium is running in. If not provided then the |
|
string |
The labels used to target Cilium node init pods |
|
string |
The labels used to target Cilium operator pods |
|
string |
The namespace Cilium operator is running in. If not provided then the |
|
string |
The labels used to target Cilium spire-agent pods |
|
string |
The namespace Cilium SPIRE installation is running in |
|
string |
The labels used to target Cilium spire-server pods |
|
string |
The labels used to target ‘clustermesh-apiserver’ pods |
|
string |
Directory where CNI configs are located |
|
string |
The name of the CNI config map |
|
bool |
Whether to collect logs from not ready Cilium agent pods |
|
string |
Kubeconfig context name to use |
|
int |
Retry limit for file copying operations. If set to -1, copying will be retried indefinitely. Useful for collecting sysdump while on unreliable connection. |
|
bool |
Whether to enable debug logging |
|
bool |
Whether to automatically detect the gops agent PID. |
|
stringArray |
Optional set of labels selectors used to target additional pods for log collection. |
|
int64 |
Number of Hubble flows to collect. Setting to zero disables collecting Hubble flows. |
|
duration |
Timeout for collecting Hubble flows |
|
string |
The labels used to target Hubble UI pods |
|
string |
The labels used to target Hubble pods |
|
string |
The labels used to target Hubble Relay pods |
|
string |
The labels used to target Hubble UI pods |
|
bool |
Collect logs and resources from Hypershield and ClickHouse Operator namespaces |
|
string |
Path to the mgmt kubeconfig to use |
|
int64 |
The limit on the number of bytes to retrieve when collecting logs |
|
duration |
How far back in time to go when collecting logs |
|
string |
Comma-separated list of node IPs or names to filter pods for which to collect gops and logs |
|
string |
The name of the resulting file (without extension) ‘<ts>’ can be used as the placeholder for the timestamp |
|
bool |
Whether to enable scraping profiling data |
|
bool |
Whether to enable quick mode (i.e. skip collection of ‘cilium-bugtool’ output and logs) |
|
string |
The Tetragon Helm release name for which to get values. |
|
string |
The labels used to target Tetragon pods |
|
string |
The namespace Tetragon is running in |
|
string |
The labels used to target Tetragon operator pods |
|
bool |
Whether to enable scraping tracing data |
|
int |
The number of workers to use NOTE: There is a lower bound requirement on the number of workers for the sysdump operation to be effective. Therefore, for low values, the actual number of workers may be adjusted upwards. Defaults to the number of available CPUs. |
version🔗
Print version.
Usage:
isoctl version
Timescape API v1🔗
The Timescape public REST API provides supported automation for Hypershield
network object groups and policies. It also exposes Timescape build
information. All version 1 paths are relative to /api/hs/v1 on the
deployment-specific Timescape API origin.
This reference describes the behavior shared by the endpoints and the endpoint-specific contract for Timescape 1.20. Use the task-oriented Hypershield documentation for end-to-end operational workflows.
You can view the OpenAPI document, download its YAML source, or retrieve the JSON document bundled with a running Timescape deployment.
Requests and responses🔗
Build each request URL from the Timescape API origin supplied by your
administrator, the /api/hs/v1 base path, and an endpoint path. For example, the build information path is
/api/hs/v1/meta/build-info.
Media types🔗
POST and PUT request bodies use application/json. Successful
GET, POST, and PUT operations return application/json.
Successful DELETE operations return 204 No Content without a response
body.
Most errors use application/problem+json. The 500 Internal Server Error
response has a distinct application/json envelope. See
Errors and status codes for both formats.
Resource identity and revisions🔗
A network object group or policy is identified by its Kubernetes namespace
and resource name. Resource responses contain a version used for
optimistic concurrency. They can also contain the revisionTimestamp for
the returned revision.
List and get operations accept an optional version query parameter. Omit
the parameter for the latest desired state. If you request version=N, the
API returns desired state from the latest resource revision less than or equal
to N. The returned resource version identifies the revision that was
selected and can therefore be less than the requested value.
Filtering and pagination🔗
List operations support these filters:
namespacelimits results to one namespace. If omitted, the operation is a cross-namespace list and requires access across namespaces. Timescape does not silently reduce an unfiltered list to individually authorized namespaces.searchperforms a case-insensitive substring search over the resource name and string fields.labelSelectorfilters resources by Kubernetes metadata labels.versionselects a point-in-time resource version instead of the latest state.
Policy list operations also accept includeStatus=true. This parameter
requires permission to read policy deployment status in addition to permission
to list policies.
The default pageSize is 50 and the maximum is 1000. The service can return
fewer results than requested. If a response contains nextPageToken, pass
its value unchanged as pageToken in the next request. Pagination is
complete when nextPageToken is absent. totalCount reports the total
number of resources that match the request, not only the current page size.
Create resources🔗
A successful POST returns 201 Created. The Location response header
identifies the created resource, and the strong ETag response header
contains its current resource version. Store the ETag if the client might
replace the resource later.
Replace resources🔗
PUT performs a full, idempotent replacement. Supply the complete desired
configuration in the update request; omitted optional configuration is not
preserved by a full replacement.
Every PUT requires one strong If-Match entity tag returned by an earlier
GET, POST, or PUT. The API accepts one quoted value such as
"42". It rejects weak tags, wildcards, multiple tags, malformed values, and
unquoted resource versions.
The API returns:
428 Precondition RequiredwhenIf-Matchis missing400 Bad Requestwhen the header is malformed or unsupported412 Precondition Failedwhen the supplied version is no longer current
After a 412 response, retrieve the latest resource, reconcile the intended
replacement with that state, and submit the new ETag. Do not overwrite a
concurrent update without reconciling it.
Delete resources🔗
A successful DELETE returns 204 No Content. A delete can return 409
Conflict when the current resource state prevents deletion. Resolve the
reported conflict before retrying the operation.
Retry requests safely🔗
Use bounded retries for 408, 429, and transient server or network
failures. Follow Retry-After after a 429 response. Add randomized delay
when multiple clients can retry at the same time.
The request method and concurrency controls affect retry behavior:
You can retry a
GETwithout changing server state.If a
POSTresult is uncertain, retrieve the named resource. If it exists, compare it with the intended resource and reconcile any differences. If it does not exist, retry only within the client’s retry limit. Do not assume that409 Conflictproves that the first request succeeded.If a
PUTresult is uncertain, retrieve the resource. If it matches the intended replacement, treat the operation as successful. Otherwise, reconcile the intended replacement with the returned state and use its currentETagfor any new update.If a
DELETEresult is uncertain, retrieve the named resource. Treat an absent resource as success. Do not retry the delete automatically if the resource exists; another client might have created a new resource with the same name. Delete it again only if the client can prove ownership, such as with an ownership label. Otherwise, report the uncertain outcome for reconciliation.
Desired state and deployment status🔗
Policy mutation responses confirm that Timescape recorded the desired policy state. They do not confirm that every enforcement agent has applied that state.
Set includeStatus=true on a policy list or get request to include
deploymentStatus. overallStatus can be inSync, outOfSync,
pending, or unknown. The status also reports agent counts when those
counts are available. Treat the resource configuration and revision as desired
state, and treat deploymentStatus as observed deployment state.
inSync means that reporting enforcement agents are consistent with the
highest policy version that any agent has reported. It does not compare that
reported version with the desired resource version in this REST response.
A successful mutation followed by inSync therefore does not, by itself,
prove that the new desired revision is enforced.
If a request combines version=N and includeStatus=true, the resource
configuration is historical desired state from the latest revision less than
or equal to N, while deploymentStatus remains current observed state.
Do not interpret the status as a historical observation from revision N.
Errors and status codes🔗
Use the HTTP status code as the primary result of an API request. Do not parse human-readable error text to decide how a client behaves.
Success status codes🔗
Status |
Meaning |
|---|---|
200 OK |
A get, list, or replacement operation succeeded. |
201 Created |
A resource was created. Use the Location and ETag response headers for subsequent operations. |
204 No Content |
A resource was deleted. The response has no body. |
Error status codes🔗
Status |
Meaning and response |
|---|---|
400 Bad Request |
The request is malformed or contains an invalid parameter, body, or precondition value. Correct the request before retrying. |
401 Unauthorized |
Authentication is required or the credentials are invalid. Supply or replace the bearer token. |
403 Forbidden |
The authenticated principal lacks access to the operation, namespace, or requested policy status. |
404 Not Found |
The named resource was not found. |
408 Request Timeout |
The server timed out while waiting for the request. Confirm the result before you retry the request safely. |
409 Conflict |
The requested mutation conflicts with the current resource state. Resolve the conflict before retrying. |
412 Precondition Failed |
The If-Match version does not match the current resource. Retrieve and reconcile the latest resource. |
413 Payload Too Large |
The request body exceeds the deployment’s configured maximum size. Reduce the body before retrying. |
428 Precondition Required |
A replacement request omitted the required If-Match header. |
429 Too Many Requests |
The client exceeded a deployment-defined rate limit. Follow the returned retry and quota headers. |
500 Internal Server Error |
Timescape encountered an unexpected error. Confirm the result before you retry the request safely, and contact the administrator if the failure persists. |
The endpoint reference lists the status codes declared for each operation.
Problem Details responses🔗
All declared 4xx responses use application/problem+json and the
Problem Details format defined by RFC 9457. Every response
includes type, title, and status. A response can also include
detail, instance, and extension members.
Validation failures can include an invalidParams array. Each entry contains
the invalid field name and a human-readable reason. It can also contain
a stable application code. Clients can use that code for program logic and
show the reason to a user.
For example:
{
"type": "/errors/invalid-request",
"title": "Invalid request",
"status": 400,
"detail": "One or more request parameters are invalid.",
"instance": "/api/hs/v1/network-object-groups/prod/web",
"invalidParams": [
{
"name": "spec.cidrs[0]",
"reason": "must be a valid CIDR prefix",
"code": "invalid_cidr"
}
]
}
Internal server error responses🔗
The 500 response does not use Problem Details. It uses
application/json with this deliberately minimal envelope:
{
"errorMessage": "Internal server error"
}
The message does not expose internal diagnostics. If the error persists, report the request method, path, approximate time, and Timescape build version to the administrator. Do not include bearer tokens in logs or support data.
Rate limits🔗
Timescape rate limits are deployment-defined. The public API does not define a single numeric quota that applies to every deployment, principal, or endpoint. Ask the Timescape administrator for the limits configured for your deployment.
Rate limit response🔗
When a client exceeds an applicable quota, Timescape returns 429 Too Many
Requests with an application/problem+json body. The response declares
these headers:
Header |
Meaning |
|---|---|
Retry-After |
Time to wait before another request. |
RateLimit |
Current service limit information for the applicable quota policy. |
RateLimit-Policy |
The quota policy consumed by the request. |
RateLimit and RateLimit-Policy follow
draft-ietf-httpapi-ratelimit-headers-11. Treat their policy names and
numeric values as deployment data, not as a product-wide service-level
guarantee.
Retry behavior🔗
After a 429 response:
Stop sending requests covered by the exhausted quota.
Wait for the period specified by
Retry-After.Resume with bounded exponential backoff and randomized delay.
Reduce request concurrency if the client continues to receive
429.
Do not retry in a tight loop. Coordinate retry behavior across workers that share a principal or deployment quota. For list-heavy clients, use pagination deliberately and avoid polling more frequently than the operational workflow requires.
Versioning and deprecation🔗
Timescape exposes several independent version values. Use the value that matches the decision the client needs to make.
Version |
Purpose |
|---|---|
API family v1 |
Appears in the /api/hs/v1 base path and identifies the public API major family. |
OpenAPI contract version 1.0.0 |
Appears in the OpenAPI document’s info.version field and identifies this machine-readable contract revision. |
Timescape build version |
Comes from GET /meta/build-info and identifies the running Timescape public API build. |
Resource version |
Identifies a network object group or policy revision and supplies the value encoded in its ETag. |
Clients should send requests to the explicit v1 base path and use the
contract published for that family. Do not infer the API family from the
Timescape build version or a resource version.
When a read request supplies version=N, Timescape returns desired state
from the latest resource revision less than or equal to N. The returned
resource version identifies the revision that Timescape selected. If the
request also supplies includeStatus=true, the policy configuration is that
historical desired state, but deploymentStatus reports current observed
state.
Deprecation signals🔗
Successful operation responses can contain these lifecycle headers:
Deprecationfollows RFC 9745. Its structured field date indicates when an operation became or is expected to become deprecated.Sunsetfollows RFC 8594. Its HTTP date indicates when an operation is expected to become unavailable.
Check both headers on successful responses and surface them in client logs or
monitoring. A Deprecation header does not by itself state when an operation
is removed; use Sunset when it is present and consult the applicable
release documentation.
The public API contract does not promise a fixed deprecation notice period. Do not derive one from example dates in the OpenAPI document.
Endpoint reference🔗
Use this reference to find the parameters, request bodies, success responses,
and declared errors for the 11 resource and metadata operations in the OpenAPI
document. All paths are relative to /api/hs/v1.
See Errors and status codes for the response formats shared by API errors.
OpenAPI document🔗
This page renders the OpenAPI document published with this documentation. You
can also download this copy as YAML for use
with compatible API tools.
To retrieve the contract bundled with a running Timescape deployment, send
GET /api/hs/v1/openapi.json to the deployment-specific Timescape API
origin. The endpoint returns the document as JSON with the
application/json media type. For example:
curl --fail --silent --show-error \
--output timescape-openapi.json \
"https://timescape.example.com/api/hs/v1/openapi.json"
Timescape does not require a bearer token for this endpoint, even when public API RBAC is enabled. A gateway or ingress can still require deployment-specific credentials. The endpoint is served separately and does not appear in the rendered operation list below.
API operations🔗
Meta🔗
Meta API.
- GET /meta/build-info🔗
Get Timescape build information
- Response JSON Object:
version (string, required) – Public API build version.
- Status Codes:
200 OK –
Timescape build information
HTTP/1.1 200 OK Content-Type: application/json { "version": "1.25.0" }
401 Unauthorized – Authentication is required or the supplied credentials are invalid.
403 Forbidden – The authenticated principal is not authorized to perform this operation.
408 Request Timeout – The server timed out waiting for the request.
429 Too Many Requests – The request rate limit was exceeded.
500 Internal Server Error – An unexpected internal server error occurred.
- Response Headers:
Deprecation (string) – Deprecation header as defined by RFC 9745. Date when the API became or will become deprecated, encoded as an HTTP structured field date.
Sunset (string:http-date) – Sunset header as defined by RFC 8594. Date when the API is expected to become unavailable.
Retry-After (string) – Time to wait before retrying the request.
RateLimit (string) – RateLimit header as defined by draft-ietf-httpapi-ratelimit-headers-11. Current service limit available under a specific quota policy.
RateLimit-Policy (string) – RateLimit-Policy header as defined by draft-ietf-httpapi-ratelimit-headers-11. Quota policy that client requests consume.
NetworkObjectGroups🔗
Hypershield NetworkObjectGroup API.
- GET /network-object-groups🔗
List Hypershield network object groups
Lists active NetworkObjectGroup resources across namespaces.
- Query Parameters:
namespace (string) – Optional namespace filter. Omit to list across all authorized namespaces.
search (string) – Case-insensitive substring search over the resource name and string fields.
labelSelector (string) – Kubernetes label selector string used to filter resources by metadata labels.
version (string) – Optional point-in-time resource version. Omit for the latest resource.
pageSize (integer:int32) – Maximum number of results to return. The service may return fewer.
pageToken (string) – Token from a previous list response.
- Response JSON Object:
results[] (object) – NetworkObjectGroup resource returned by Hypershield APIs.
results[].namespace (string, required) – Namespace that owns this NetworkObjectGroup.
results[].name (string, required) – NetworkObjectGroup resource name.
results[].labels (object) – Kubernetes metadata labels.
results[].spec (object, required) – Network locations that belong to a NetworkObjectGroup.
results[].spec.description (string)
results[].spec.cidrs[] (string)
results[].spec.virtualNetwork (object) – Logical network identifiers.
results[].spec.virtualNetwork.vrfs[] (string)
results[].spec.virtualNetwork.vlans[] (integer:int32)
results[].clusterSelector (object) – Kubernetes label selector. Requirements are ANDed together.
results[].clusterSelector.matchLabels (object) – Kubernetes metadata labels.
results[].clusterSelector.matchExpressions[] (object) – Single match expression in a Kubernetes label selector.
results[].clusterSelector.matchExpressions[].key (string, required)
results[].clusterSelector.matchExpressions[].operator (string:enum, required)
results[].clusterSelector.matchExpressions[].values[] (string)
results[].version (string, required) – NetworkObjectGroup resource version used for optimistic concurrency.
results[].revisionTimestamp (string:date-time) – Timestamp of the NetworkObjectGroup revision returned by this response.
nextPageToken (string) – Token used to retrieve the next page of results.
totalCount (integer:int32, required) – Total number of NetworkObjectGroups matching the request.
- Status Codes:
200 OK –
Network object groups
HTTP/1.1 200 OK Content-Type: application/json { "results": [ { "namespace": "prod", "name": "web-servers", "labels": { "app": "web", "env": "prod" }, "spec": { "description": "Production web servers", "cidrs": [ "10.12.0.0/24" ], "virtualNetwork": { "vlans": [ 120 ] } }, "version": "42" } ], "totalCount": 1 }
400 Bad Request – The request is malformed or contains invalid parameters.
401 Unauthorized – Authentication is required or the supplied credentials are invalid.
403 Forbidden – The authenticated principal is not authorized to perform this operation.
408 Request Timeout – The server timed out waiting for the request.
429 Too Many Requests – The request rate limit was exceeded.
500 Internal Server Error – An unexpected internal server error occurred.
- Response Headers:
Deprecation (string) – Deprecation header as defined by RFC 9745. Date when the API became or will become deprecated, encoded as an HTTP structured field date.
Sunset (string:http-date) – Sunset header as defined by RFC 8594. Date when the API is expected to become unavailable.
Retry-After (string) – Time to wait before retrying the request.
RateLimit (string) – RateLimit header as defined by draft-ietf-httpapi-ratelimit-headers-11. Current service limit available under a specific quota policy.
RateLimit-Policy (string) – RateLimit-Policy header as defined by draft-ietf-httpapi-ratelimit-headers-11. Quota policy that client requests consume.
- POST /network-object-groups🔗
Create a Hypershield network object group
Creates a NetworkObjectGroup.
- Request JSON Object:
namespace (string, required) – Namespace where the NetworkObjectGroup will be created.
name (string, required) – Name for the new NetworkObjectGroup.
labels (object) – Kubernetes metadata labels.
spec (object, required) – Network locations that belong to a NetworkObjectGroup.
spec.description (string)
spec.cidrs[] (string)
spec.virtualNetwork (object) – Logical network identifiers.
spec.virtualNetwork.vrfs[] (string)
spec.virtualNetwork.vlans[] (integer:int32)
clusterSelector (object) – Kubernetes label selector. Requirements are ANDed together.
clusterSelector.matchLabels (object) – Kubernetes metadata labels.
clusterSelector.matchExpressions[] (object) – Single match expression in a Kubernetes label selector.
clusterSelector.matchExpressions[].key (string, required)
clusterSelector.matchExpressions[].operator (string:enum, required)
clusterSelector.matchExpressions[].values[] (string)
POST /network-object-groups HTTP/1.1 Content-Type: application/json { "namespace": "prod", "name": "web-servers", "labels": { "app": "web", "env": "prod" }, "spec": { "description": "Production web servers", "cidrs": [ "10.12.0.0/24" ], "virtualNetwork": { "vlans": [ 120 ] } }, "clusterSelector": { "matchLabels": { "region": "us-east" } } }
- Response JSON Object:
namespace (string, required) – Namespace that owns this NetworkObjectGroup.
name (string, required) – NetworkObjectGroup resource name.
labels (object) – Kubernetes metadata labels.
spec (object, required) – Network locations that belong to a NetworkObjectGroup.
spec.description (string)
spec.cidrs[] (string)
spec.virtualNetwork (object) – Logical network identifiers.
spec.virtualNetwork.vrfs[] (string)
spec.virtualNetwork.vlans[] (integer:int32)
clusterSelector (object) – Kubernetes label selector. Requirements are ANDed together.
clusterSelector.matchLabels (object) – Kubernetes metadata labels.
clusterSelector.matchExpressions[] (object) – Single match expression in a Kubernetes label selector.
clusterSelector.matchExpressions[].key (string, required)
clusterSelector.matchExpressions[].operator (string:enum, required)
clusterSelector.matchExpressions[].values[] (string)
version (string, required) – NetworkObjectGroup resource version used for optimistic concurrency.
revisionTimestamp (string:date-time) – Timestamp of the NetworkObjectGroup revision returned by this response.
- Status Codes:
Network object group created
HTTP/1.1 201 Created Content-Type: application/json { "namespace": "prod", "name": "web-servers", "spec": { "cidrs": [ "10.12.0.0/24" ], "virtualNetwork": { "vlans": [ 120 ] } }, "version": "42" }
400 Bad Request – The request is malformed or contains invalid parameters.
401 Unauthorized – Authentication is required or the supplied credentials are invalid.
403 Forbidden – The authenticated principal is not authorized to perform this operation.
408 Request Timeout – The server timed out waiting for the request.
409 Conflict – The requested change conflicts with the current resource.
413 Request Entity Too Large – The request body exceeds the configured maximum size.
429 Too Many Requests – The request rate limit was exceeded.
500 Internal Server Error – An unexpected internal server error occurred.
- Response Headers:
Location (string:uri-reference) – URI of the created resource.
ETag (string) – Current resource version for optimistic concurrency, encoded as a strong quoted HTTP entity tag such as “42”.
Deprecation (string) – Deprecation header as defined by RFC 9745. Date when the API became or will become deprecated, encoded as an HTTP structured field date.
Sunset (string:http-date) – Sunset header as defined by RFC 8594. Date when the API is expected to become unavailable.
Retry-After (string) – Time to wait before retrying the request.
RateLimit (string) – RateLimit header as defined by draft-ietf-httpapi-ratelimit-headers-11. Current service limit available under a specific quota policy.
RateLimit-Policy (string) – RateLimit-Policy header as defined by draft-ietf-httpapi-ratelimit-headers-11. Quota policy that client requests consume.
- GET /network-object-groups/{namespace}/{name}🔗
Get a Hypershield network object group
- Parameters:
namespace (string, required) – Kubernetes namespace that owns the Hypershield resource.
name (string, required) – Kubernetes resource name.
- Query Parameters:
version (string) – Optional point-in-time resource version. Omit for the latest resource.
- Response JSON Object:
namespace (string, required) – Namespace that owns this NetworkObjectGroup.
name (string, required) – NetworkObjectGroup resource name.
labels (object) – Kubernetes metadata labels.
spec (object, required) – Network locations that belong to a NetworkObjectGroup.
spec.description (string)
spec.cidrs[] (string)
spec.virtualNetwork (object) – Logical network identifiers.
spec.virtualNetwork.vrfs[] (string)
spec.virtualNetwork.vlans[] (integer:int32)
clusterSelector (object) – Kubernetes label selector. Requirements are ANDed together.
clusterSelector.matchLabels (object) – Kubernetes metadata labels.
clusterSelector.matchExpressions[] (object) – Single match expression in a Kubernetes label selector.
clusterSelector.matchExpressions[].key (string, required)
clusterSelector.matchExpressions[].operator (string:enum, required)
clusterSelector.matchExpressions[].values[] (string)
version (string, required) – NetworkObjectGroup resource version used for optimistic concurrency.
revisionTimestamp (string:date-time) – Timestamp of the NetworkObjectGroup revision returned by this response.
- Status Codes:
200 OK –
Network object group
HTTP/1.1 200 OK Content-Type: application/json { "namespace": "prod", "name": "web-servers", "labels": { "app": "web", "env": "prod" }, "spec": { "description": "Production web servers", "cidrs": [ "10.12.0.0/24" ], "virtualNetwork": { "vlans": [ 120 ] } }, "clusterSelector": { "matchLabels": { "region": "us-east" } }, "version": "42", "revisionTimestamp": "2026-06-11T14:30:00Z" }
400 Bad Request – The request is malformed or contains invalid parameters.
401 Unauthorized – Authentication is required or the supplied credentials are invalid.
403 Forbidden – The authenticated principal is not authorized to perform this operation.
404 Not Found – The requested resource was not found.
408 Request Timeout – The server timed out waiting for the request.
429 Too Many Requests – The request rate limit was exceeded.
500 Internal Server Error – An unexpected internal server error occurred.
- Response Headers:
ETag (string) – Current resource version for optimistic concurrency, encoded as a strong quoted HTTP entity tag such as “42”.
Deprecation (string) – Deprecation header as defined by RFC 9745. Date when the API became or will become deprecated, encoded as an HTTP structured field date.
Sunset (string:http-date) – Sunset header as defined by RFC 8594. Date when the API is expected to become unavailable.
Retry-After (string) – Time to wait before retrying the request.
RateLimit (string) – RateLimit header as defined by draft-ietf-httpapi-ratelimit-headers-11. Current service limit available under a specific quota policy.
RateLimit-Policy (string) – RateLimit-Policy header as defined by draft-ietf-httpapi-ratelimit-headers-11. Quota policy that client requests consume.
- PUT /network-object-groups/{namespace}/{name}🔗
Update a Hypershield network object group
Idempotently replaces the NetworkObjectGroup configuration.
- Request Headers:
If-Match (string, required) – Required strong ETag returned by a prior GET, POST, or PUT. The Public API accepts exactly one quoted entity tag produced by this API, for example “42”. Weak ETags such as W/”42”, wildcard preconditions such as *, multiple entity tags, malformed values, and unquoted resource versions are rejected. A missing header returns 428 Precondition Required, while an invalid value returns 400 Bad Request.
- Parameters:
namespace (string, required) – Kubernetes namespace that owns the Hypershield resource.
name (string, required) – Kubernetes resource name.
- Request JSON Object:
labels (object) – Kubernetes metadata labels.
spec (object, required) – Network locations that belong to a NetworkObjectGroup.
spec.description (string)
spec.cidrs[] (string)
spec.virtualNetwork (object) – Logical network identifiers.
spec.virtualNetwork.vrfs[] (string)
spec.virtualNetwork.vlans[] (integer:int32)
clusterSelector (object) – Kubernetes label selector. Requirements are ANDed together.
clusterSelector.matchLabels (object) – Kubernetes metadata labels.
clusterSelector.matchExpressions[] (object) – Single match expression in a Kubernetes label selector.
clusterSelector.matchExpressions[].key (string, required)
clusterSelector.matchExpressions[].operator (string:enum, required)
clusterSelector.matchExpressions[].values[] (string)
PUT /network-object-groups/{namespace}/{name} HTTP/1.1 Content-Type: application/json { "labels": { "app": "web", "env": "prod" }, "spec": { "description": "Production web servers", "cidrs": [ "10.12.0.0/24", "10.12.1.0/24" ], "virtualNetwork": { "vlans": [ 120 ] } } }
- Response JSON Object:
namespace (string, required) – Namespace that owns this NetworkObjectGroup.
name (string, required) – NetworkObjectGroup resource name.
labels (object) – Kubernetes metadata labels.
spec (object, required) – Network locations that belong to a NetworkObjectGroup.
spec.description (string)
spec.cidrs[] (string)
spec.virtualNetwork (object) – Logical network identifiers.
spec.virtualNetwork.vrfs[] (string)
spec.virtualNetwork.vlans[] (integer:int32)
clusterSelector (object) – Kubernetes label selector. Requirements are ANDed together.
clusterSelector.matchLabels (object) – Kubernetes metadata labels.
clusterSelector.matchExpressions[] (object) – Single match expression in a Kubernetes label selector.
clusterSelector.matchExpressions[].key (string, required)
clusterSelector.matchExpressions[].operator (string:enum, required)
clusterSelector.matchExpressions[].values[] (string)
version (string, required) – NetworkObjectGroup resource version used for optimistic concurrency.
revisionTimestamp (string:date-time) – Timestamp of the NetworkObjectGroup revision returned by this response.
- Status Codes:
200 OK –
Network object group updated
HTTP/1.1 200 OK Content-Type: application/json { "namespace": "prod", "name": "web-servers", "spec": { "cidrs": [ "10.12.0.0/24", "10.12.1.0/24" ], "virtualNetwork": { "vlans": [ 120 ] } }, "version": "43" }
400 Bad Request – The request is malformed or contains invalid parameters.
401 Unauthorized – Authentication is required or the supplied credentials are invalid.
403 Forbidden – The authenticated principal is not authorized to perform this operation.
404 Not Found – The requested resource was not found.
408 Request Timeout – The server timed out waiting for the request.
409 Conflict – The requested change conflicts with the current resource.
412 Precondition Failed – The supplied resource version precondition does not match the current resource version.
428 Precondition Required – The If-Match header is required for this operation.
413 Request Entity Too Large – The request body exceeds the configured maximum size.
429 Too Many Requests – The request rate limit was exceeded.
500 Internal Server Error – An unexpected internal server error occurred.
- Response Headers:
ETag (string) – Current resource version for optimistic concurrency, encoded as a strong quoted HTTP entity tag such as “42”.
Deprecation (string) – Deprecation header as defined by RFC 9745. Date when the API became or will become deprecated, encoded as an HTTP structured field date.
Sunset (string:http-date) – Sunset header as defined by RFC 8594. Date when the API is expected to become unavailable.
Retry-After (string) – Time to wait before retrying the request.
RateLimit (string) – RateLimit header as defined by draft-ietf-httpapi-ratelimit-headers-11. Current service limit available under a specific quota policy.
RateLimit-Policy (string) – RateLimit-Policy header as defined by draft-ietf-httpapi-ratelimit-headers-11. Quota policy that client requests consume.
- DELETE /network-object-groups/{namespace}/{name}🔗
Delete a Hypershield network object group
Deletes the NetworkObjectGroup.
- Parameters:
namespace (string, required) – Kubernetes namespace that owns the Hypershield resource.
name (string, required) – Kubernetes resource name.
- Status Codes:
204 No Content – Network object group deleted
400 Bad Request – The request is malformed or contains invalid parameters.
401 Unauthorized – Authentication is required or the supplied credentials are invalid.
403 Forbidden – The authenticated principal is not authorized to perform this operation.
404 Not Found – The requested resource was not found.
408 Request Timeout – The server timed out waiting for the request.
409 Conflict – The requested change conflicts with the current resource.
429 Too Many Requests – The request rate limit was exceeded.
500 Internal Server Error – An unexpected internal server error occurred.
- Response Headers:
Deprecation (string) – Deprecation header as defined by RFC 9745. Date when the API became or will become deprecated, encoded as an HTTP structured field date.
Sunset (string:http-date) – Sunset header as defined by RFC 8594. Date when the API is expected to become unavailable.
Retry-After (string) – Time to wait before retrying the request.
RateLimit (string) – RateLimit header as defined by draft-ietf-httpapi-ratelimit-headers-11. Current service limit available under a specific quota policy.
RateLimit-Policy (string) – RateLimit-Policy header as defined by draft-ietf-httpapi-ratelimit-headers-11. Quota policy that client requests consume.
Policies🔗
Hypershield Policy API.
- GET /policies🔗
List Hypershield policies
Lists active SmartSwitchNetworkPolicy resources across namespaces.
- Query Parameters:
namespace (string) – Optional namespace filter. Omit to list across all authorized namespaces.
search (string) – Case-insensitive substring search over the resource name and string fields.
labelSelector (string) – Kubernetes label selector string used to filter resources by metadata labels.
version (string) – Optional point-in-time resource version. Omit for the latest resource.
includeStatus (boolean) – Include policy deployment status when true.
pageSize (integer:int32) – Maximum number of results to return. The service may return fewer.
pageToken (string) – Token from a previous list response.
- Response JSON Object:
results[] (object) – SmartSwitchNetworkPolicy resource returned by Hypershield APIs.
results[].namespace (string, required) – Namespace that owns this SmartSwitchNetworkPolicy.
results[].name (string, required) – SmartSwitchNetworkPolicy resource name.
results[].labels (object) – Kubernetes metadata labels.
results[].spec (object, required) – Ordered traffic rules for a SmartSwitchNetworkPolicy.
results[].spec.rules[] (object) – Source, destination and action for one policy rule.
results[].spec.rules[].description (string)
results[].spec.rules[].action (string:enum, required)
results[].spec.rules[].source (object, required) – Source selector. Specify ipBlocks or networkRefs, not both.
results[].spec.rules[].source.ipBlocks[] (object) – Network locations that belong to a NetworkObjectGroup.
results[].spec.rules[].source.ipBlocks[].description (string)
results[].spec.rules[].source.ipBlocks[].cidrs[] (string)
results[].spec.rules[].source.ipBlocks[].virtualNetwork (object) – Logical network identifiers.
results[].spec.rules[].source.ipBlocks[].virtualNetwork.vrfs[] (string)
results[].spec.rules[].source.ipBlocks[].virtualNetwork.vlans[] (integer:int32)
results[].spec.rules[].source.networkRefs[] (object) – Reference to NetworkObjectGroups in the policy namespace. Specify name or labelSelector, not both.
results[].spec.rules[].source.networkRefs[].name (string)
results[].spec.rules[].source.networkRefs[].labelSelector (object) – Kubernetes label selector. Requirements are ANDed together.
results[].spec.rules[].source.networkRefs[].labelSelector.matchLabels (object) – Kubernetes metadata labels.
results[].spec.rules[].source.networkRefs[].labelSelector.matchExpressions[] (object) – Single match expression in a Kubernetes label selector.
results[].spec.rules[].source.networkRefs[].labelSelector.matchExpressions[].key (string, required)
results[].spec.rules[].source.networkRefs[].labelSelector.matchExpressions[].operator (string:enum, required)
results[].spec.rules[].source.networkRefs[].labelSelector.matchExpressions[].values[] (string)
results[].spec.rules[].destination (object, required) – Destination selector. Specify ipBlocks or networkRefs, not both.
results[].spec.rules[].destination.ipBlocks[] (object) – Network locations that belong to a NetworkObjectGroup.
results[].spec.rules[].destination.ipBlocks[].description (string)
results[].spec.rules[].destination.ipBlocks[].cidrs[] (string)
results[].spec.rules[].destination.ipBlocks[].virtualNetwork (object) – Logical network identifiers.
results[].spec.rules[].destination.ipBlocks[].virtualNetwork.vrfs[] (string)
results[].spec.rules[].destination.ipBlocks[].virtualNetwork.vlans[] (integer:int32)
results[].spec.rules[].destination.networkRefs[] (object) – Reference to NetworkObjectGroups in the policy namespace. Specify name or labelSelector, not both.
results[].spec.rules[].destination.networkRefs[].name (string)
results[].spec.rules[].destination.networkRefs[].labelSelector (object) – Kubernetes label selector. Requirements are ANDed together.
results[].spec.rules[].destination.networkRefs[].labelSelector.matchLabels (object) – Kubernetes metadata labels.
results[].spec.rules[].destination.networkRefs[].labelSelector.matchExpressions[] (object) – Single match expression in a Kubernetes label selector.
results[].spec.rules[].destination.networkRefs[].labelSelector.matchExpressions[].key (string, required)
results[].spec.rules[].destination.networkRefs[].labelSelector.matchExpressions[].operator (string:enum, required)
results[].spec.rules[].destination.networkRefs[].labelSelector.matchExpressions[].values[] (string)
results[].spec.rules[].destination.protoPorts[] (object) – Transport protocol and optional port or port range.
results[].spec.rules[].destination.protoPorts[].protocol (string:enum, required)
results[].spec.rules[].destination.protoPorts[].port (integer:int32)
results[].spec.rules[].destination.protoPorts[].endPort (integer:int32) – Inclusive end of a port range. Requires port and must be greater than port.
results[].clusterSelector (object) – Kubernetes label selector. Requirements are ANDed together.
results[].clusterSelector.matchLabels (object) – Kubernetes metadata labels.
results[].clusterSelector.matchExpressions[] (object) – Single match expression in a Kubernetes label selector.
results[].clusterSelector.matchExpressions[].key (string, required)
results[].clusterSelector.matchExpressions[].operator (string:enum, required)
results[].clusterSelector.matchExpressions[].values[] (string)
results[].version (string, required) – SmartSwitchNetworkPolicy version used for optimistic concurrency.
results[].revisionTimestamp (string:date-time) – Timestamp of the SmartSwitchNetworkPolicy revision in this response.
results[].deploymentStatus (object) – Aggregated deployment state for a SmartSwitchNetworkPolicy.
results[].deploymentStatus.overallStatus (string:enum, required)
results[].deploymentStatus.totalAgents (integer:int64)
results[].deploymentStatus.inSyncAgents (integer:int64)
results[].deploymentStatus.outOfSyncAgents (integer:int64)
results[].deploymentStatus.pendingAgents (integer:int64)
nextPageToken (string) – Cursor for the following page of policies.
totalCount (integer:int32, required) – Total number of SmartSwitchNetworkPolicies matching the request.
- Status Codes:
200 OK –
Policies
HTTP/1.1 200 OK Content-Type: application/json { "results": [ { "namespace": "prod", "name": "allow-web-to-checkout", "spec": { "rules": [ { "action": "allow", "source": { "networkRefs": [ { "labelSelector": { "matchLabels": { "role": "web" } } } ] }, "destination": { "networkRefs": [ { "name": "checkout-api" } ], "protoPorts": [ { "protocol": "TCP", "port": 443 } ] } } ] }, "version": "17" } ], "totalCount": 1 }
400 Bad Request – The request is malformed or contains invalid parameters.
401 Unauthorized – Authentication is required or the supplied credentials are invalid.
403 Forbidden – The authenticated principal is not authorized to perform this operation.
408 Request Timeout – The server timed out waiting for the request.
429 Too Many Requests – The request rate limit was exceeded.
500 Internal Server Error – An unexpected internal server error occurred.
- Response Headers:
Deprecation (string) – Deprecation header as defined by RFC 9745. Date when the API became or will become deprecated, encoded as an HTTP structured field date.
Sunset (string:http-date) – Sunset header as defined by RFC 8594. Date when the API is expected to become unavailable.
Retry-After (string) – Time to wait before retrying the request.
RateLimit (string) – RateLimit header as defined by draft-ietf-httpapi-ratelimit-headers-11. Current service limit available under a specific quota policy.
RateLimit-Policy (string) – RateLimit-Policy header as defined by draft-ietf-httpapi-ratelimit-headers-11. Quota policy that client requests consume.
- POST /policies🔗
Create a Hypershield policy
Creates a SmartSwitchNetworkPolicy.
- Request JSON Object:
namespace (string, required) – Namespace where the SmartSwitchNetworkPolicy will be created.
name (string, required) – Name for the new SmartSwitchNetworkPolicy.
labels (object) – Kubernetes metadata labels.
spec (object, required) – Ordered traffic rules for a SmartSwitchNetworkPolicy.
spec.rules[] (object) – Source, destination and action for one policy rule.
spec.rules[].description (string)
spec.rules[].action (string:enum, required)
spec.rules[].source (object, required) – Source selector. Specify ipBlocks or networkRefs, not both.
spec.rules[].source.ipBlocks[] (object) – Network locations that belong to a NetworkObjectGroup.
spec.rules[].source.ipBlocks[].description (string)
spec.rules[].source.ipBlocks[].cidrs[] (string)
spec.rules[].source.ipBlocks[].virtualNetwork (object) – Logical network identifiers.
spec.rules[].source.ipBlocks[].virtualNetwork.vrfs[] (string)
spec.rules[].source.ipBlocks[].virtualNetwork.vlans[] (integer:int32)
spec.rules[].source.networkRefs[] (object) – Reference to NetworkObjectGroups in the policy namespace. Specify name or labelSelector, not both.
spec.rules[].source.networkRefs[].name (string)
spec.rules[].source.networkRefs[].labelSelector (object) – Kubernetes label selector. Requirements are ANDed together.
spec.rules[].source.networkRefs[].labelSelector.matchLabels (object) – Kubernetes metadata labels.
spec.rules[].source.networkRefs[].labelSelector.matchExpressions[] (object) – Single match expression in a Kubernetes label selector.
spec.rules[].source.networkRefs[].labelSelector.matchExpressions[].key (string, required)
spec.rules[].source.networkRefs[].labelSelector.matchExpressions[].operator (string:enum, required)
spec.rules[].source.networkRefs[].labelSelector.matchExpressions[].values[] (string)
spec.rules[].destination (object, required) – Destination selector. Specify ipBlocks or networkRefs, not both.
spec.rules[].destination.ipBlocks[] (object) – Network locations that belong to a NetworkObjectGroup.
spec.rules[].destination.ipBlocks[].description (string)
spec.rules[].destination.ipBlocks[].cidrs[] (string)
spec.rules[].destination.ipBlocks[].virtualNetwork (object) – Logical network identifiers.
spec.rules[].destination.ipBlocks[].virtualNetwork.vrfs[] (string)
spec.rules[].destination.ipBlocks[].virtualNetwork.vlans[] (integer:int32)
spec.rules[].destination.networkRefs[] (object) – Reference to NetworkObjectGroups in the policy namespace. Specify name or labelSelector, not both.
spec.rules[].destination.networkRefs[].name (string)
spec.rules[].destination.networkRefs[].labelSelector (object) – Kubernetes label selector. Requirements are ANDed together.
spec.rules[].destination.networkRefs[].labelSelector.matchLabels (object) – Kubernetes metadata labels.
spec.rules[].destination.networkRefs[].labelSelector.matchExpressions[] (object) – Single match expression in a Kubernetes label selector.
spec.rules[].destination.networkRefs[].labelSelector.matchExpressions[].key (string, required)
spec.rules[].destination.networkRefs[].labelSelector.matchExpressions[].operator (string:enum, required)
spec.rules[].destination.networkRefs[].labelSelector.matchExpressions[].values[] (string)
spec.rules[].destination.protoPorts[] (object) – Transport protocol and optional port or port range.
spec.rules[].destination.protoPorts[].protocol (string:enum, required)
spec.rules[].destination.protoPorts[].port (integer:int32)
spec.rules[].destination.protoPorts[].endPort (integer:int32) – Inclusive end of a port range. Requires port and must be greater than port.
clusterSelector (object) – Kubernetes label selector. Requirements are ANDed together.
clusterSelector.matchLabels (object) – Kubernetes metadata labels.
clusterSelector.matchExpressions[] (object) – Single match expression in a Kubernetes label selector.
clusterSelector.matchExpressions[].key (string, required)
clusterSelector.matchExpressions[].operator (string:enum, required)
clusterSelector.matchExpressions[].values[] (string)
POST /policies HTTP/1.1 Content-Type: application/json { "namespace": "prod", "name": "allow-web-to-checkout", "labels": { "app": "web", "env": "prod" }, "spec": { "rules": [ { "description": "Allow web to checkout API", "action": "allow", "source": { "networkRefs": [ { "labelSelector": { "matchLabels": { "role": "web" } } } ] }, "destination": { "networkRefs": [ { "name": "checkout-api" } ], "protoPorts": [ { "protocol": "TCP", "port": 443 } ] } } ] } }
- Response JSON Object:
namespace (string, required) – Namespace that owns this SmartSwitchNetworkPolicy.
name (string, required) – SmartSwitchNetworkPolicy resource name.
labels (object) – Kubernetes metadata labels.
spec (object, required) – Ordered traffic rules for a SmartSwitchNetworkPolicy.
spec.rules[] (object) – Source, destination and action for one policy rule.
spec.rules[].description (string)
spec.rules[].action (string:enum, required)
spec.rules[].source (object, required) – Source selector. Specify ipBlocks or networkRefs, not both.
spec.rules[].source.ipBlocks[] (object) – Network locations that belong to a NetworkObjectGroup.
spec.rules[].source.ipBlocks[].description (string)
spec.rules[].source.ipBlocks[].cidrs[] (string)
spec.rules[].source.ipBlocks[].virtualNetwork (object) – Logical network identifiers.
spec.rules[].source.ipBlocks[].virtualNetwork.vrfs[] (string)
spec.rules[].source.ipBlocks[].virtualNetwork.vlans[] (integer:int32)
spec.rules[].source.networkRefs[] (object) – Reference to NetworkObjectGroups in the policy namespace. Specify name or labelSelector, not both.
spec.rules[].source.networkRefs[].name (string)
spec.rules[].source.networkRefs[].labelSelector (object) – Kubernetes label selector. Requirements are ANDed together.
spec.rules[].source.networkRefs[].labelSelector.matchLabels (object) – Kubernetes metadata labels.
spec.rules[].source.networkRefs[].labelSelector.matchExpressions[] (object) – Single match expression in a Kubernetes label selector.
spec.rules[].source.networkRefs[].labelSelector.matchExpressions[].key (string, required)
spec.rules[].source.networkRefs[].labelSelector.matchExpressions[].operator (string:enum, required)
spec.rules[].source.networkRefs[].labelSelector.matchExpressions[].values[] (string)
spec.rules[].destination (object, required) – Destination selector. Specify ipBlocks or networkRefs, not both.
spec.rules[].destination.ipBlocks[] (object) – Network locations that belong to a NetworkObjectGroup.
spec.rules[].destination.ipBlocks[].description (string)
spec.rules[].destination.ipBlocks[].cidrs[] (string)
spec.rules[].destination.ipBlocks[].virtualNetwork (object) – Logical network identifiers.
spec.rules[].destination.ipBlocks[].virtualNetwork.vrfs[] (string)
spec.rules[].destination.ipBlocks[].virtualNetwork.vlans[] (integer:int32)
spec.rules[].destination.networkRefs[] (object) – Reference to NetworkObjectGroups in the policy namespace. Specify name or labelSelector, not both.
spec.rules[].destination.networkRefs[].name (string)
spec.rules[].destination.networkRefs[].labelSelector (object) – Kubernetes label selector. Requirements are ANDed together.
spec.rules[].destination.networkRefs[].labelSelector.matchLabels (object) – Kubernetes metadata labels.
spec.rules[].destination.networkRefs[].labelSelector.matchExpressions[] (object) – Single match expression in a Kubernetes label selector.
spec.rules[].destination.networkRefs[].labelSelector.matchExpressions[].key (string, required)
spec.rules[].destination.networkRefs[].labelSelector.matchExpressions[].operator (string:enum, required)
spec.rules[].destination.networkRefs[].labelSelector.matchExpressions[].values[] (string)
spec.rules[].destination.protoPorts[] (object) – Transport protocol and optional port or port range.
spec.rules[].destination.protoPorts[].protocol (string:enum, required)
spec.rules[].destination.protoPorts[].port (integer:int32)
spec.rules[].destination.protoPorts[].endPort (integer:int32) – Inclusive end of a port range. Requires port and must be greater than port.
clusterSelector (object) – Kubernetes label selector. Requirements are ANDed together.
clusterSelector.matchLabels (object) – Kubernetes metadata labels.
clusterSelector.matchExpressions[] (object) – Single match expression in a Kubernetes label selector.
clusterSelector.matchExpressions[].key (string, required)
clusterSelector.matchExpressions[].operator (string:enum, required)
clusterSelector.matchExpressions[].values[] (string)
version (string, required) – SmartSwitchNetworkPolicy version used for optimistic concurrency.
revisionTimestamp (string:date-time) – Timestamp of the SmartSwitchNetworkPolicy revision in this response.
deploymentStatus (object) – Aggregated deployment state for a SmartSwitchNetworkPolicy.
deploymentStatus.overallStatus (string:enum, required)
deploymentStatus.totalAgents (integer:int64)
deploymentStatus.inSyncAgents (integer:int64)
deploymentStatus.outOfSyncAgents (integer:int64)
deploymentStatus.pendingAgents (integer:int64)
- Status Codes:
Policy created
HTTP/1.1 201 Created Content-Type: application/json { "namespace": "prod", "name": "allow-web-to-checkout", "spec": { "rules": [ { "action": "allow", "source": { "networkRefs": [ { "labelSelector": { "matchLabels": { "role": "web" } } } ] }, "destination": { "networkRefs": [ { "name": "checkout-api" } ], "protoPorts": [ { "protocol": "TCP", "port": 443 } ] } } ] }, "version": "17" }
400 Bad Request – The request is malformed or contains invalid parameters.
401 Unauthorized – Authentication is required or the supplied credentials are invalid.
403 Forbidden – The authenticated principal is not authorized to perform this operation.
408 Request Timeout – The server timed out waiting for the request.
409 Conflict – The requested change conflicts with the current resource.
413 Request Entity Too Large – The request body exceeds the configured maximum size.
429 Too Many Requests – The request rate limit was exceeded.
500 Internal Server Error – An unexpected internal server error occurred.
- Response Headers:
Location (string:uri-reference) – URI of the created resource.
ETag (string) – Current resource version for optimistic concurrency, encoded as a strong quoted HTTP entity tag such as “42”.
Deprecation (string) – Deprecation header as defined by RFC 9745. Date when the API became or will become deprecated, encoded as an HTTP structured field date.
Sunset (string:http-date) – Sunset header as defined by RFC 8594. Date when the API is expected to become unavailable.
Retry-After (string) – Time to wait before retrying the request.
RateLimit (string) – RateLimit header as defined by draft-ietf-httpapi-ratelimit-headers-11. Current service limit available under a specific quota policy.
RateLimit-Policy (string) – RateLimit-Policy header as defined by draft-ietf-httpapi-ratelimit-headers-11. Quota policy that client requests consume.
- GET /policies/{namespace}/{name}🔗
Get a Hypershield policy
- Parameters:
namespace (string, required) – Kubernetes namespace that owns the Hypershield resource.
name (string, required) – Kubernetes resource name.
- Query Parameters:
version (string) – Optional point-in-time resource version. Omit for the latest resource.
includeStatus (boolean) – Include policy deployment status when true.
- Response JSON Object:
namespace (string, required) – Namespace that owns this SmartSwitchNetworkPolicy.
name (string, required) – SmartSwitchNetworkPolicy resource name.
labels (object) – Kubernetes metadata labels.
spec (object, required) – Ordered traffic rules for a SmartSwitchNetworkPolicy.
spec.rules[] (object) – Source, destination and action for one policy rule.
spec.rules[].description (string)
spec.rules[].action (string:enum, required)
spec.rules[].source (object, required) – Source selector. Specify ipBlocks or networkRefs, not both.
spec.rules[].source.ipBlocks[] (object) – Network locations that belong to a NetworkObjectGroup.
spec.rules[].source.ipBlocks[].description (string)
spec.rules[].source.ipBlocks[].cidrs[] (string)
spec.rules[].source.ipBlocks[].virtualNetwork (object) – Logical network identifiers.
spec.rules[].source.ipBlocks[].virtualNetwork.vrfs[] (string)
spec.rules[].source.ipBlocks[].virtualNetwork.vlans[] (integer:int32)
spec.rules[].source.networkRefs[] (object) – Reference to NetworkObjectGroups in the policy namespace. Specify name or labelSelector, not both.
spec.rules[].source.networkRefs[].name (string)
spec.rules[].source.networkRefs[].labelSelector (object) – Kubernetes label selector. Requirements are ANDed together.
spec.rules[].source.networkRefs[].labelSelector.matchLabels (object) – Kubernetes metadata labels.
spec.rules[].source.networkRefs[].labelSelector.matchExpressions[] (object) – Single match expression in a Kubernetes label selector.
spec.rules[].source.networkRefs[].labelSelector.matchExpressions[].key (string, required)
spec.rules[].source.networkRefs[].labelSelector.matchExpressions[].operator (string:enum, required)
spec.rules[].source.networkRefs[].labelSelector.matchExpressions[].values[] (string)
spec.rules[].destination (object, required) – Destination selector. Specify ipBlocks or networkRefs, not both.
spec.rules[].destination.ipBlocks[] (object) – Network locations that belong to a NetworkObjectGroup.
spec.rules[].destination.ipBlocks[].description (string)
spec.rules[].destination.ipBlocks[].cidrs[] (string)
spec.rules[].destination.ipBlocks[].virtualNetwork (object) – Logical network identifiers.
spec.rules[].destination.ipBlocks[].virtualNetwork.vrfs[] (string)
spec.rules[].destination.ipBlocks[].virtualNetwork.vlans[] (integer:int32)
spec.rules[].destination.networkRefs[] (object) – Reference to NetworkObjectGroups in the policy namespace. Specify name or labelSelector, not both.
spec.rules[].destination.networkRefs[].name (string)
spec.rules[].destination.networkRefs[].labelSelector (object) – Kubernetes label selector. Requirements are ANDed together.
spec.rules[].destination.networkRefs[].labelSelector.matchLabels (object) – Kubernetes metadata labels.
spec.rules[].destination.networkRefs[].labelSelector.matchExpressions[] (object) – Single match expression in a Kubernetes label selector.
spec.rules[].destination.networkRefs[].labelSelector.matchExpressions[].key (string, required)
spec.rules[].destination.networkRefs[].labelSelector.matchExpressions[].operator (string:enum, required)
spec.rules[].destination.networkRefs[].labelSelector.matchExpressions[].values[] (string)
spec.rules[].destination.protoPorts[] (object) – Transport protocol and optional port or port range.
spec.rules[].destination.protoPorts[].protocol (string:enum, required)
spec.rules[].destination.protoPorts[].port (integer:int32)
spec.rules[].destination.protoPorts[].endPort (integer:int32) – Inclusive end of a port range. Requires port and must be greater than port.
clusterSelector (object) – Kubernetes label selector. Requirements are ANDed together.
clusterSelector.matchLabels (object) – Kubernetes metadata labels.
clusterSelector.matchExpressions[] (object) – Single match expression in a Kubernetes label selector.
clusterSelector.matchExpressions[].key (string, required)
clusterSelector.matchExpressions[].operator (string:enum, required)
clusterSelector.matchExpressions[].values[] (string)
version (string, required) – SmartSwitchNetworkPolicy version used for optimistic concurrency.
revisionTimestamp (string:date-time) – Timestamp of the SmartSwitchNetworkPolicy revision in this response.
deploymentStatus (object) – Aggregated deployment state for a SmartSwitchNetworkPolicy.
deploymentStatus.overallStatus (string:enum, required)
deploymentStatus.totalAgents (integer:int64)
deploymentStatus.inSyncAgents (integer:int64)
deploymentStatus.outOfSyncAgents (integer:int64)
deploymentStatus.pendingAgents (integer:int64)
- Status Codes:
200 OK –
Policy
HTTP/1.1 200 OK Content-Type: application/json { "namespace": "prod", "name": "allow-web-to-checkout", "labels": { "app": "web", "env": "prod" }, "spec": { "rules": [ { "description": "Allow web to checkout API", "action": "allow", "source": { "networkRefs": [ { "labelSelector": { "matchLabels": { "role": "web" } } } ] }, "destination": { "networkRefs": [ { "name": "checkout-api" } ], "protoPorts": [ { "protocol": "TCP", "port": 443 } ] } } ] }, "version": "17", "deploymentStatus": { "overallStatus": "inSync", "totalAgents": 12, "inSyncAgents": 12, "outOfSyncAgents": 0, "pendingAgents": 0 } }
400 Bad Request – The request is malformed or contains invalid parameters.
401 Unauthorized – Authentication is required or the supplied credentials are invalid.
403 Forbidden – The authenticated principal is not authorized to perform this operation.
404 Not Found – The requested resource was not found.
408 Request Timeout – The server timed out waiting for the request.
429 Too Many Requests – The request rate limit was exceeded.
500 Internal Server Error – An unexpected internal server error occurred.
- Response Headers:
ETag (string) – Current resource version for optimistic concurrency, encoded as a strong quoted HTTP entity tag such as “42”.
Deprecation (string) – Deprecation header as defined by RFC 9745. Date when the API became or will become deprecated, encoded as an HTTP structured field date.
Sunset (string:http-date) – Sunset header as defined by RFC 8594. Date when the API is expected to become unavailable.
Retry-After (string) – Time to wait before retrying the request.
RateLimit (string) – RateLimit header as defined by draft-ietf-httpapi-ratelimit-headers-11. Current service limit available under a specific quota policy.
RateLimit-Policy (string) – RateLimit-Policy header as defined by draft-ietf-httpapi-ratelimit-headers-11. Quota policy that client requests consume.
- PUT /policies/{namespace}/{name}🔗
Update a Hypershield policy
Idempotently replaces the SmartSwitchNetworkPolicy configuration.
- Request Headers:
If-Match (string, required) – Required strong ETag returned by a prior GET, POST, or PUT. The Public API accepts exactly one quoted entity tag produced by this API, for example “42”. Weak ETags such as W/”42”, wildcard preconditions such as *, multiple entity tags, malformed values, and unquoted resource versions are rejected. A missing header returns 428 Precondition Required, while an invalid value returns 400 Bad Request.
- Parameters:
namespace (string, required) – Kubernetes namespace that owns the Hypershield resource.
name (string, required) – Kubernetes resource name.
- Request JSON Object:
labels (object) – Kubernetes metadata labels.
spec (object, required) – Ordered traffic rules for a SmartSwitchNetworkPolicy.
spec.rules[] (object) – Source, destination and action for one policy rule.
spec.rules[].description (string)
spec.rules[].action (string:enum, required)
spec.rules[].source (object, required) – Source selector. Specify ipBlocks or networkRefs, not both.
spec.rules[].source.ipBlocks[] (object) – Network locations that belong to a NetworkObjectGroup.
spec.rules[].source.ipBlocks[].description (string)
spec.rules[].source.ipBlocks[].cidrs[] (string)
spec.rules[].source.ipBlocks[].virtualNetwork (object) – Logical network identifiers.
spec.rules[].source.ipBlocks[].virtualNetwork.vrfs[] (string)
spec.rules[].source.ipBlocks[].virtualNetwork.vlans[] (integer:int32)
spec.rules[].source.networkRefs[] (object) – Reference to NetworkObjectGroups in the policy namespace. Specify name or labelSelector, not both.
spec.rules[].source.networkRefs[].name (string)
spec.rules[].source.networkRefs[].labelSelector (object) – Kubernetes label selector. Requirements are ANDed together.
spec.rules[].source.networkRefs[].labelSelector.matchLabels (object) – Kubernetes metadata labels.
spec.rules[].source.networkRefs[].labelSelector.matchExpressions[] (object) – Single match expression in a Kubernetes label selector.
spec.rules[].source.networkRefs[].labelSelector.matchExpressions[].key (string, required)
spec.rules[].source.networkRefs[].labelSelector.matchExpressions[].operator (string:enum, required)
spec.rules[].source.networkRefs[].labelSelector.matchExpressions[].values[] (string)
spec.rules[].destination (object, required) – Destination selector. Specify ipBlocks or networkRefs, not both.
spec.rules[].destination.ipBlocks[] (object) – Network locations that belong to a NetworkObjectGroup.
spec.rules[].destination.ipBlocks[].description (string)
spec.rules[].destination.ipBlocks[].cidrs[] (string)
spec.rules[].destination.ipBlocks[].virtualNetwork (object) – Logical network identifiers.
spec.rules[].destination.ipBlocks[].virtualNetwork.vrfs[] (string)
spec.rules[].destination.ipBlocks[].virtualNetwork.vlans[] (integer:int32)
spec.rules[].destination.networkRefs[] (object) – Reference to NetworkObjectGroups in the policy namespace. Specify name or labelSelector, not both.
spec.rules[].destination.networkRefs[].name (string)
spec.rules[].destination.networkRefs[].labelSelector (object) – Kubernetes label selector. Requirements are ANDed together.
spec.rules[].destination.networkRefs[].labelSelector.matchLabels (object) – Kubernetes metadata labels.
spec.rules[].destination.networkRefs[].labelSelector.matchExpressions[] (object) – Single match expression in a Kubernetes label selector.
spec.rules[].destination.networkRefs[].labelSelector.matchExpressions[].key (string, required)
spec.rules[].destination.networkRefs[].labelSelector.matchExpressions[].operator (string:enum, required)
spec.rules[].destination.networkRefs[].labelSelector.matchExpressions[].values[] (string)
spec.rules[].destination.protoPorts[] (object) – Transport protocol and optional port or port range.
spec.rules[].destination.protoPorts[].protocol (string:enum, required)
spec.rules[].destination.protoPorts[].port (integer:int32)
spec.rules[].destination.protoPorts[].endPort (integer:int32) – Inclusive end of a port range. Requires port and must be greater than port.
clusterSelector (object) – Kubernetes label selector. Requirements are ANDed together.
clusterSelector.matchLabels (object) – Kubernetes metadata labels.
clusterSelector.matchExpressions[] (object) – Single match expression in a Kubernetes label selector.
clusterSelector.matchExpressions[].key (string, required)
clusterSelector.matchExpressions[].operator (string:enum, required)
clusterSelector.matchExpressions[].values[] (string)
PUT /policies/{namespace}/{name} HTTP/1.1 Content-Type: application/json { "labels": { "app": "web", "env": "prod" }, "spec": { "rules": [ { "description": "Allow web to checkout API", "action": "allow", "source": { "networkRefs": [ { "labelSelector": { "matchLabels": { "role": "web" } } } ] }, "destination": { "networkRefs": [ { "name": "checkout-api" } ], "protoPorts": [ { "protocol": "TCP", "port": 443 } ] } } ] } }
- Response JSON Object:
namespace (string, required) – Namespace that owns this SmartSwitchNetworkPolicy.
name (string, required) – SmartSwitchNetworkPolicy resource name.
labels (object) – Kubernetes metadata labels.
spec (object, required) – Ordered traffic rules for a SmartSwitchNetworkPolicy.
spec.rules[] (object) – Source, destination and action for one policy rule.
spec.rules[].description (string)
spec.rules[].action (string:enum, required)
spec.rules[].source (object, required) – Source selector. Specify ipBlocks or networkRefs, not both.
spec.rules[].source.ipBlocks[] (object) – Network locations that belong to a NetworkObjectGroup.
spec.rules[].source.ipBlocks[].description (string)
spec.rules[].source.ipBlocks[].cidrs[] (string)
spec.rules[].source.ipBlocks[].virtualNetwork (object) – Logical network identifiers.
spec.rules[].source.ipBlocks[].virtualNetwork.vrfs[] (string)
spec.rules[].source.ipBlocks[].virtualNetwork.vlans[] (integer:int32)
spec.rules[].source.networkRefs[] (object) – Reference to NetworkObjectGroups in the policy namespace. Specify name or labelSelector, not both.
spec.rules[].source.networkRefs[].name (string)
spec.rules[].source.networkRefs[].labelSelector (object) – Kubernetes label selector. Requirements are ANDed together.
spec.rules[].source.networkRefs[].labelSelector.matchLabels (object) – Kubernetes metadata labels.
spec.rules[].source.networkRefs[].labelSelector.matchExpressions[] (object) – Single match expression in a Kubernetes label selector.
spec.rules[].source.networkRefs[].labelSelector.matchExpressions[].key (string, required)
spec.rules[].source.networkRefs[].labelSelector.matchExpressions[].operator (string:enum, required)
spec.rules[].source.networkRefs[].labelSelector.matchExpressions[].values[] (string)
spec.rules[].destination (object, required) – Destination selector. Specify ipBlocks or networkRefs, not both.
spec.rules[].destination.ipBlocks[] (object) – Network locations that belong to a NetworkObjectGroup.
spec.rules[].destination.ipBlocks[].description (string)
spec.rules[].destination.ipBlocks[].cidrs[] (string)
spec.rules[].destination.ipBlocks[].virtualNetwork (object) – Logical network identifiers.
spec.rules[].destination.ipBlocks[].virtualNetwork.vrfs[] (string)
spec.rules[].destination.ipBlocks[].virtualNetwork.vlans[] (integer:int32)
spec.rules[].destination.networkRefs[] (object) – Reference to NetworkObjectGroups in the policy namespace. Specify name or labelSelector, not both.
spec.rules[].destination.networkRefs[].name (string)
spec.rules[].destination.networkRefs[].labelSelector (object) – Kubernetes label selector. Requirements are ANDed together.
spec.rules[].destination.networkRefs[].labelSelector.matchLabels (object) – Kubernetes metadata labels.
spec.rules[].destination.networkRefs[].labelSelector.matchExpressions[] (object) – Single match expression in a Kubernetes label selector.
spec.rules[].destination.networkRefs[].labelSelector.matchExpressions[].key (string, required)
spec.rules[].destination.networkRefs[].labelSelector.matchExpressions[].operator (string:enum, required)
spec.rules[].destination.networkRefs[].labelSelector.matchExpressions[].values[] (string)
spec.rules[].destination.protoPorts[] (object) – Transport protocol and optional port or port range.
spec.rules[].destination.protoPorts[].protocol (string:enum, required)
spec.rules[].destination.protoPorts[].port (integer:int32)
spec.rules[].destination.protoPorts[].endPort (integer:int32) – Inclusive end of a port range. Requires port and must be greater than port.
clusterSelector (object) – Kubernetes label selector. Requirements are ANDed together.
clusterSelector.matchLabels (object) – Kubernetes metadata labels.
clusterSelector.matchExpressions[] (object) – Single match expression in a Kubernetes label selector.
clusterSelector.matchExpressions[].key (string, required)
clusterSelector.matchExpressions[].operator (string:enum, required)
clusterSelector.matchExpressions[].values[] (string)
version (string, required) – SmartSwitchNetworkPolicy version used for optimistic concurrency.
revisionTimestamp (string:date-time) – Timestamp of the SmartSwitchNetworkPolicy revision in this response.
deploymentStatus (object) – Aggregated deployment state for a SmartSwitchNetworkPolicy.
deploymentStatus.overallStatus (string:enum, required)
deploymentStatus.totalAgents (integer:int64)
deploymentStatus.inSyncAgents (integer:int64)
deploymentStatus.outOfSyncAgents (integer:int64)
deploymentStatus.pendingAgents (integer:int64)
- Status Codes:
200 OK –
Policy updated
HTTP/1.1 200 OK Content-Type: application/json { "namespace": "prod", "name": "allow-web-to-checkout", "spec": { "rules": [ { "action": "allow", "source": { "networkRefs": [ { "labelSelector": { "matchLabels": { "role": "web" } } } ] }, "destination": { "networkRefs": [ { "name": "checkout-api" } ], "protoPorts": [ { "protocol": "TCP", "port": 443 } ] } } ] }, "version": "18" }
400 Bad Request – The request is malformed or contains invalid parameters.
401 Unauthorized – Authentication is required or the supplied credentials are invalid.
403 Forbidden – The authenticated principal is not authorized to perform this operation.
404 Not Found – The requested resource was not found.
408 Request Timeout – The server timed out waiting for the request.
409 Conflict – The requested change conflicts with the current resource.
412 Precondition Failed – The supplied resource version precondition does not match the current resource version.
428 Precondition Required – The If-Match header is required for this operation.
413 Request Entity Too Large – The request body exceeds the configured maximum size.
429 Too Many Requests – The request rate limit was exceeded.
500 Internal Server Error – An unexpected internal server error occurred.
- Response Headers:
ETag (string) – Current resource version for optimistic concurrency, encoded as a strong quoted HTTP entity tag such as “42”.
Deprecation (string) – Deprecation header as defined by RFC 9745. Date when the API became or will become deprecated, encoded as an HTTP structured field date.
Sunset (string:http-date) – Sunset header as defined by RFC 8594. Date when the API is expected to become unavailable.
Retry-After (string) – Time to wait before retrying the request.
RateLimit (string) – RateLimit header as defined by draft-ietf-httpapi-ratelimit-headers-11. Current service limit available under a specific quota policy.
RateLimit-Policy (string) – RateLimit-Policy header as defined by draft-ietf-httpapi-ratelimit-headers-11. Quota policy that client requests consume.
- DELETE /policies/{namespace}/{name}🔗
Delete a Hypershield policy
Deletes the SmartSwitchNetworkPolicy.
- Parameters:
namespace (string, required) – Kubernetes namespace that owns the Hypershield resource.
name (string, required) – Kubernetes resource name.
- Status Codes:
204 No Content – Policy deleted
400 Bad Request – The request is malformed or contains invalid parameters.
401 Unauthorized – Authentication is required or the supplied credentials are invalid.
403 Forbidden – The authenticated principal is not authorized to perform this operation.
404 Not Found – The requested resource was not found.
408 Request Timeout – The server timed out waiting for the request.
429 Too Many Requests – The request rate limit was exceeded.
500 Internal Server Error – An unexpected internal server error occurred.
- Response Headers:
Deprecation (string) – Deprecation header as defined by RFC 9745. Date when the API became or will become deprecated, encoded as an HTTP structured field date.
Sunset (string:http-date) – Sunset header as defined by RFC 8594. Date when the API is expected to become unavailable.
Retry-After (string) – Time to wait before retrying the request.
RateLimit (string) – RateLimit header as defined by draft-ietf-httpapi-ratelimit-headers-11. Current service limit available under a specific quota policy.
RateLimit-Policy (string) – RateLimit-Policy header as defined by draft-ietf-httpapi-ratelimit-headers-11. Quota policy that client requests consume.