Documentation
¶
Overview ¶
Package config handles parsing and validation of sind cluster configuration.
Index ¶
Constants ¶
const ( DefaultClusterName = "default" DefaultImage = "ghcr.io/gsi-hpc/sind-node:latest" DefaultCPUs = 1 DefaultMemory = "512m" DefaultTmpSize = "256m" )
Default resource values for cluster nodes.
Variables ¶
This section is empty.
Functions ¶
This section is empty.
Types ¶
type Cluster ¶
type Cluster struct {
Kind string `json:"kind"`
Name string `json:"name,omitempty"`
Realm string `json:"realm,omitempty"`
Defaults Defaults `json:"defaults,omitempty"`
Storage Storage `json:"storage,omitempty"`
Slurm Slurm `json:"slurm,omitempty"`
Nodes []Node `json:"nodes,omitempty"`
// Pull is a runtime flag (not part of the config file) that forces
// fresh image pulls when creating containers.
Pull bool `json:"-" yaml:"-"`
}
Cluster represents a sind cluster configuration.
func (*Cluster) ApplyDefaults ¶
func (c *Cluster) ApplyDefaults()
ApplyDefaults populates missing fields with defaults. If no nodes are defined, creates a minimal cluster (1 controller + 1 worker). Node-level fields inherit from the Defaults section, which in turn falls back to built-in defaults.
type DataStorage ¶
type DataStorage struct {
Type StorageType `json:"type,omitempty"`
HostPath string `json:"hostPath,omitempty"`
MountPath string `json:"mountPath,omitempty"`
}
DataStorage configures the shared data volume.
type Defaults ¶
type Defaults struct {
Image string `json:"image,omitempty"`
CPUs int `json:"cpus,omitempty"`
Memory string `json:"memory,omitempty"`
TmpSize string `json:"tmpSize,omitempty"`
CapAdd []string `json:"capAdd,omitempty"`
CapDrop []string `json:"capDrop,omitempty"`
Devices []string `json:"devices,omitempty"`
SecurityOpt []string `json:"securityOpt,omitempty"`
}
Defaults holds default settings applied to all nodes unless overridden.
type Node ¶
type Node struct {
Role Role `json:"role"`
Count int `json:"count,omitempty"`
Image string `json:"image,omitempty"`
CPUs int `json:"cpus,omitempty"`
Memory string `json:"memory,omitempty"`
TmpSize string `json:"tmpSize,omitempty"`
Managed *bool `json:"managed,omitempty"`
CapAdd []string `json:"capAdd,omitempty"`
CapDrop []string `json:"capDrop,omitempty"`
Devices []string `json:"devices,omitempty"`
SecurityOpt []string `json:"securityOpt,omitempty"`
}
Node represents a single node or node group in the cluster configuration.
func (*Node) UnmarshalJSON ¶
UnmarshalJSON supports three YAML forms:
- bare string: "controller"
- shorthand map: "worker: 3" (role: count)
- full object: "role: worker\n count: 3\n cpus: 4"
type Role ¶ added in v0.7.0
type Role string
Role identifies the function of a node within a cluster.
type Section ¶ added in v0.7.0
Section represents a Slurm config file section that can be either:
- a string (content appended directly to the config file)
- a map of fragment name → content (creates a .conf.d/ directory)
func (Section) FragmentNames ¶ added in v0.7.0
FragmentNames returns the sorted keys from Fragments.
func (Section) IsEmpty ¶ added in v0.7.0
IsEmpty returns true if the section has no content and no fragments.
func (Section) IsMap ¶ added in v0.7.0
IsMap returns true if the section uses the map/fragments form.
func (*Section) UnmarshalJSON ¶ added in v0.7.0
UnmarshalJSON supports two YAML/JSON forms:
- string: "content" → Section{Content: "content"}
- map: {"key": "content"} → Section{Fragments: {"key": "content"}}
type Slurm ¶ added in v0.7.0
type Slurm struct {
Main Section `json:"main,omitempty"`
Cgroup Section `json:"cgroup,omitempty"`
Gres Section `json:"gres,omitempty"`
Topology Section `json:"topology,omitempty"`
Plugstack Section `json:"plugstack,omitempty"`
}
Slurm configures custom Slurm configuration files. Each field maps to a Slurm config file: main → slurm.conf, cgroup → cgroup.conf, gres → gres.conf, etc.
type Storage ¶
type Storage struct {
DataStorage DataStorage `json:"dataStorage,omitempty"`
}
Storage configures cluster storage options.
type StorageType ¶ added in v0.7.0
type StorageType string
StorageType identifies the backing mechanism for data storage.
const ( StorageVolume StorageType = "volume" StorageHostPath StorageType = "hostPath" )
Storage type values.