sandbox-operator

API Reference

Packages

sandbox.cocoonstack.io/v1beta1

Package v1beta1 contains the API Schema definitions this operator owns on top of upstream agent-sandbox: the NodeInventory CRD and the sandboxes action subresource payloads.

Resource Types

InventoryEntry

InventoryEntry is one live sandbox as summarized by its owning node.

Appears in:

Field Description Default Validation
name string name is the sandbox “/"; an unqualified name means the
default namespace.
   
id string id is the owning node’s sandboxd claim id (“sb_…”), the handle its
sandbox-release verb needs. The aggregated apiserver surfaces it on the
synthesized Sandbox so Delete can release exactly this node-local microVM
(releasing by k8s name would target the wrong claim). Empty until the
node publishes it.
  Optional: {}
phase string phase is the node-reported sandbox phase (e.g. Running).    
template string template is the pool template (base image) the sandbox was claimed from.
It is the only place the aggregated read path can recover it: no
per-sandbox object holds the pod spec.
  Optional: {}
claimRef string claimRef is the “/" of the SandboxClaim the sandbox is
bound to, if any.
  Optional: {}
addr string addr is the sandbox “host:port” address, if published.   Optional: {}
deadline Time deadline is the node-granted lease expiry, if published.   Optional: {}
claimedAt Time claimedAt is when the node first granted the claim, if published; a renew
or a wake moves deadline, never this.
  Optional: {}
claimMetadata string claimMetadata is the claim’s caller metadata as one JSON object, at most 4 KiB.   Optional: {}
cpuCount integer cpuCount is the vCPU count of the size tier the VM was booted with.   Optional: {}
memoryBytes integer memoryBytes is the memory of the size tier the VM was booted with.   Optional: {}

NodeInventory

NodeInventory is the single O(nodes) etcd object per node: the durable summary of that node’s live sandboxes, server-side-applied on a slow cadence and scatter-gathered by the aggregated sandbox-apiserver. It is deliberately spec-less (pure reported summary, no desired state) and cluster-scoped with metadata.name equal to the node name. It lives in this repository’s own group, not in agents.x-k8s.io, whose entire v1beta1 the APIService hands to the aggregated server (which serves only sandboxes).

Appears in:

Field Description Default Validation
apiVersion string sandbox.cocoonstack.io/v1beta1    
kind string NodeInventory    
kind string Kind is a string value representing the REST resource this object represents.
Servers may infer this from the endpoint the client submits requests to.
Cannot be updated.
In CamelCase.
More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds
  Optional: {}
apiVersion string APIVersion defines the versioned schema of this representation of an object.
Servers should convert recognized schemas to the latest internal value, and
may reject unrecognized values.
More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources
  Optional: {}
metadata ObjectMeta Refer to Kubernetes API documentation for fields of metadata.    
node string node is the owning node name; it matches metadata.name.    
entries InventoryEntry array entries summarizes the node’s live sandboxes.   Optional: {}
address string address is the node’s sandboxd advertise address (“host:port”); the
aggregated apiserver routes a claim to this node’s sandboxd through it.
  Optional: {}
pools PoolCapacity array pools is the node’s per-pool warm capacity, used to pick a node that
already holds a warm microVM for a requested (template, net, size).
  Optional: {}
templates PromotedTemplate array templates is the node’s promoted templates, which later claims of their key clone from.   Optional: {}
publishedAt Time publishedAt is the publisher’s last apply; the aggregated apiserver skips an inventory older than its staleness window.   Optional: {}

NodeInventoryList

NodeInventoryList contains a list of NodeInventory.

Field Description Default Validation
apiVersion string sandbox.cocoonstack.io/v1beta1    
kind string NodeInventoryList    
kind string Kind is a string value representing the REST resource this object represents.
Servers may infer this from the endpoint the client submits requests to.
Cannot be updated.
In CamelCase.
More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds
  Optional: {}
apiVersion string APIVersion defines the versioned schema of this representation of an object.
Servers should convert recognized schemas to the latest internal value, and
may reject unrecognized values.
More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources
  Optional: {}
metadata ListMeta Refer to Kubernetes API documentation for fields of metadata.    
items NodeInventory array      

PoolCapacity

PoolCapacity is one sandboxd warm pool’s capacity as reported by its owning node’s GET /v1/info: the pool key plus its warm/target counts. The aggregated apiserver reads it to pick a node that already holds a warm microVM for a requested (template, net, size).

Appears in:

Field Description Default Validation
template string template is the pool’s base image (the sandbox template).    
net string net is the pool’s network shape (e.g. “none”, “egress”).   Optional: {}
size string size is the pool’s VM size class (e.g. “small”).   Optional: {}
warm integer warm is the number of ready-to-claim warm microVMs currently in the pool.    
target integer target is the pool’s desired warm depth.    

PromotedTemplate

PromotedTemplate is one promoted sandboxd template a node holds, as its GET /v1/info reports it: the template key, the content identity of its export, and the size tier later claims of it boot with.

Appears in:

Field Description Default Validation
template string template is the promoted template’s name.    
net string net is the template’s network shape.   Optional: {}
size string size is the template’s VM size class.   Optional: {}
contentDigest string contentDigest is the digest of the template’s published export bytes.    
tenant string tenant is the sandboxd tenant that promoted the template; empty for the operator.   Optional: {}
createdAt Time createdAt is the template’s last promote.   Optional: {}
cpuCount integer cpuCount is the vCPU count of the template’s size tier.   Optional: {}
memoryBytes integer memoryBytes is the memory of the template’s size tier.   Optional: {}
labels object (keys:string, values:string) labels is the template’s label map, set through the node’s PUT /v1/templates/labels.   Optional: {}