validate

package
v1.12.0 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Sep 13, 2023 License: BSD-3-Clause Imports: 10 Imported by: 0

Documentation

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

func ValidateFromByte

func ValidateFromByte(source []byte) (validator.Errors, error)

ValidateFromByte reads yaml bytes and validates the data. It returns all the incorrect values and an error, if any.

func ValidateFromFile

func ValidateFromFile(path string) (validator.Errors, error)

ValidateFromFile reads yaml file path and validates the data. It returns all the incorrect values and an error, if any.

Types

type Bond

type Bond struct {
	Interfaces      []string `validate:"requiredWith:Nodes.NetworkInterfaces.Bond"`
	ArpIPTarget     []string
	Mode            string
	XmitHashPolicy  string
	LacpRate        string
	AdActorSystem   string
	ArpValidate     string
	Primary         string
	PrimaryReselect string
	FailOverMac     string
	AdSelect        string
	MiiMon          string `validate:"isUint"`
	Updelay         string `validate:"isUint"`
	Downdelay       string `validate:"isUint"`
	ArpInterval     string `validate:"isUint"`
	ResendIgmp      string `validate:"isUint"`
	MinLinks        string `validate:"isUint"`
	LpInterval      string `validate:"isUint"`
	PacketsPerSlave string `validate:"isUint"`
	NumPeerNotif    string `validate:"isUint"`
	TlbDynamicLb    string `validate:"isUint"`
	AllSlavesActive string `validate:"isUint"`
	UseCarrier      string `validate:"isBool"`
	AdActorSysPrio  string `validate:"isUint"`
	AdUserPortKey   string `validate:"isUint"`
	PeerNotifyDelay string `validate:"isUint"`
}

type CNIConfig

type CNIConfig struct {
	Name string   `validate:"isCNIName|requiredWith:CniConfig"`
	Urls []string `validate:"isURLList|requiredIf:CniConfig.Name,custom"`
}

type Config

type Config struct {
	ClusterName                    string   `validate:"required"`
	TalosVersion                   string   `validate:"isSupportedTalosVersion"`
	KubernetesVersion              string   `validate:"isSupportedK8sVersion"`
	Endpoint                       string   `validate:"isTalosEndpoint"`
	Domain                         string   `validate:"isDomain"`
	AllowSchedulingOnMasters       string   `validate:"isBool"`
	AllowSchedulingOnControlPlanes string   `validate:"isBool"`
	ClusterPodNets                 []string `validate:"isCIDRList"`
	ClusterSvcNets                 []string `validate:"isCIDRList"`
	CniConfig                      *CNIConfig
	Nodes                          []*Node
	ControlPlane                   struct {
		ConfigPatches []map[string]interface{} `validate:"isRFC6902List"`
	}
	Worker struct {
		ConfigPatches []map[string]interface{} `validate:"isRFC6902List"`
	}
}

func NewFromByte

func NewFromByte(source []byte) (Config, error)

NewFromByte takes bytes and convert it into Talhelper config. It also returns an error, if any.

func NewFromFile

func NewFromFile(path string) (c Config, err error)

NewFromFile takes a file path and convert the contents into Talhelper config. It also returns an error, if any.

func (Config) IsCIDRList

func (c Config) IsCIDRList(nets []string) bool

IsCIDRList returns true if `nets` is list of CIDR addresses.

func (Config) IsCNIName

func (c Config) IsCNIName(cni string) bool

IsCNIName returns true if `cni` is a supported Talos CNI name.

func (Config) IsDomain

func (c Config) IsDomain(domain string) bool

IsDomain returns true if `domain` is a valid domain.

func (Config) IsDomainOrIP added in v1.4.4

func (c Config) IsDomainOrIP(domainIP string) bool

IsDomainOrIP returns true if `domainIP` is either valid domain or IP.

func (Config) IsIPList

func (c Config) IsIPList(ips []string) bool

IsIPList returns true if `ips` is list of IP addresses.

func (Config) IsRFC6902List

func (c Config) IsRFC6902List(input []map[string]interface{}) bool

IsRFC6902List returns true if `input` is list of RFC6902 JSON patch.

func (Config) IsSemVer added in v1.7.0

func (c Config) IsSemVer(version string) bool

IsSemVer returns true if `version` is a valid semantic version.

func (Config) IsSupportedK8sVersion added in v1.7.0

func (c Config) IsSupportedK8sVersion(version string) bool

IsSupportedK8sVersion returns true if Kubernetes `version` is supported by `c.TalosVersion`.

func (Config) IsSupportedTalosVersion added in v1.7.0

func (c Config) IsSupportedTalosVersion(version string) bool

IsSupportedTalosVersion returns true if `version` is supported Talos version.

func (Config) IsTalosEndpoint

func (c Config) IsTalosEndpoint(ep string) bool

IsTalosEndpoint returns true if `ep` is a valid Talos endpoint.

func (Config) IsURLList

func (c Config) IsURLList(urls []string) bool

IsURLList returns true if `urls` is list of URLs.

func (Config) IsValidFileOperation added in v1.10.1

func (c Config) IsValidFileOperation(op string) bool

IsValidFileOperation returns true if `op` is a correct `machineFile` operation

func (Config) IsValidNetworkInterfaces added in v1.6.3

func (c Config) IsValidNetworkInterfaces(ifaces []*NetworkInterface) bool

IsValidNetworkInterfaces returns true if `ifaces` is list of network interfaces.

func (Config) Messages

func (c Config) Messages() map[string]string

Messages returns `map[string]string` of validation error messages.

type DhcpOption

type DhcpOption struct {
	RouteMetric string `validate:"isUint"`
	Ipv4        string `validate:"isBool"`
	Ipv6        string `validate:"isBool"`
}

type Extension added in v1.10.1

type Extension struct {
	Image string `validate:"requiredWith:Nodes.Extensions"`
}

type InstallDiskSelector added in v1.4.3

type InstallDiskSelector struct {
	Size     string
	Name     string
	Model    string
	Modalias string
	UUID     string
	WWID     string
	Type     string
	BusPath  string
}

type KernelModule added in v1.5.5

type KernelModule struct {
	Name       string
	Parameters []string
}

type MachineFile added in v1.10.1

type MachineFile struct {
	Content     string `validate:"requiredWith:Nodes.MachineFiles"`
	Path        string `validate:"requiredWith:Nodes.MachineFiles|isUnixPath"`
	Op          string `validate:"isValidFileOperation"`
	Permissions string
}

type NetworkDeviceSelector added in v1.6.3

type NetworkDeviceSelector struct {
	BusPath      string
	HardwareAddr string
	PciID        string
	Driver       string
}

type NetworkInterface

type NetworkInterface struct {
	Interface      string
	DeviceSelector *NetworkDeviceSelector
	Addresses      []string `validate:"isCIDRList"`
	Routes         []Route
	Bond           *Bond
	Vlans          []*Vlan
	Mtu            string `validate:"isIntString"`
	Dhcp           string `validate:"isBool"`
	Ignore         string `validate:"isBool"`
	Dummy          string `validate:"isBool"`
	DhcpOptions    *DhcpOption
	Wireguard      *Wireguard
	Vip            *Vip
}

type Node

type Node struct {
	Hostname            string                   `validate:"required"`
	IPAddress           string                   `validate:"required|isDomainOrIP"`
	ControlPlane        string                   `validate:"isBool"`
	InstallDisk         string                   `validate:"requiredWithout:Nodes.InstallDiskSelector"`
	DisableSearchDomain string                   `validate:"isBool"`
	Nameservers         []string                 `validate:"isIPList"`
	ConfigPatches       []map[string]interface{} `validate:"isRFC6902List"`
	NetworkInterfaces   []*NetworkInterface      `validate:"isValidNetworkInterfaces"`
	InstallDiskSelector *InstallDiskSelector
	KernelModules       []*KernelModule
	NodeLabels          map[string]string
	MachineFiles        []MachineFile
	Extensions          []Extension
}

type Peer

type Peer struct {
	PublicKey                   string
	Endpoint                    string
	PersistentKeepaliveInterval string
	AllowedIPs                  []string
}

type Route

type Route struct {
	Network string `validate:"isCIDR"`
	Gateway string `validate:"isIP"`
	Source  string `validate:"isIP"`
	Metric  string `validate:"isUint"`
}

type Vip

type Vip struct {
	Ip           string `validate:"isIP"`
	EquinixMetal struct {
		ApiToken string
	}
	Hcloud struct {
		ApiToken string
	}
}

type Vlan

type Vlan struct {
	Addresses []string `validate:"isCIDRList"`
	Routes    []*Route
	Dhcp      string `validate:"isBool"`
	VlanId    string `validate:"isUint"`
	Mtu       string `validate:"isUint"`
	Vip       *Vip
}

type Wireguard

type Wireguard struct {
	PrivateKey   string
	ListenPort   string `validate:"isIntString"`
	FirewallMark string `validate:"isIntString"`
	Peers        []*Peer
}

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL