Skip to content

API Reference

Packages

agent.githedgehog.com/v1alpha2

Package v1alpha2 contains API Schema definitions for the agent v1alpha2 API group. This is the internal API group for the switch and control node agents. Not intended to be modified by the user.

Resource Types

AdminStatus

Underlying type: string

Appears in: - SwitchStateInterface

Agent

Agent is an internal API object used by the controller to pass all relevant information to the agent running on a specific switch in order to fully configure it and manage its lifecycle. It is not intended to be used directly by users. Spec of the object isn't user-editable, it is managed by the controller. Status of the object is updated by the agent and is used by the controller to track the state of the agent and the switch it is running on. Name of the Agent object is the same as the name of the switch it is running on and it's created in the same namespace as the Switch object.

Field Description Default Validation
apiVersion string agent.githedgehog.com/v1alpha2
kind string Agent
metadata ObjectMeta Refer to Kubernetes API documentation for fields of metadata.
status AgentStatus Status is the observed state of the Agent

AgentStatus

AgentStatus defines the observed state of the agent running on a specific switch and includes information about the switch itself as well as the state of the agent and applied configuration.

Appears in: - Agent

Field Description Default Validation
version string Current running agent version
installID string ID of the agent installation, used to track NOS re-installs
runID string ID of the agent run, used to track NOS reboots
lastHeartbeat Time Time of the last heartbeat from the agent
lastAttemptTime Time Time of the last attempt to apply configuration
lastAttemptGen integer Generation of the last attempt to apply configuration
lastAppliedTime Time Time of the last successful configuration application
lastAppliedGen integer Generation of the last successful configuration application
state SwitchState Detailed switch state updated with each heartbeat
conditions Condition array Conditions of the agent, includes readiness marker for use with kubectl wait

BGPMessages

Appears in: - SwitchStateBGPNeighbor

Field Description Default Validation
received BGPMessagesCounters
sent BGPMessagesCounters

BGPMessagesCounters

Appears in: - BGPMessages

Field Description Default Validation
capability integer
keepalive integer
notification integer
open integer
routeRefresh integer
update integer

BGPNeighborSessionState

Underlying type: string

Appears in: - SwitchStateBGPNeighbor

BGPPeerType

Underlying type: string

Appears in: - SwitchStateBGPNeighbor

OperStatus

Underlying type: string

Appears in: - SwitchStateInterface

SwitchState

Appears in: - AgentStatus

Field Description Default Validation
nos SwitchStateNOS Information about the switch and NOS
interfaces object (keys:string, values:SwitchStateInterface) Switch interfaces state (incl. physical, management and port channels)
breakouts object (keys:string, values:SwitchStateBreakout) Breakout ports state (port -> breakout state)
bgpNeighbors object (keys:string, values:map[string]SwitchStateBGPNeighbor) State of all BGP neighbors (VRF -> neighbor address -> state)
platform SwitchStatePlatform State of the switch platform (fans, PSUs, sensors)
criticalResources SwitchStateCRM State of the critical resources (ACLs, routes, etc.)

SwitchStateBGPNeighbor

Appears in: - SwitchState

Field Description Default Validation
connectionsDropped integer
enabled boolean
establishedTransitions integer
lastEstablished Time
lastRead Time
lastResetReason string
lastResetTime Time
lastWrite Time
localAS integer
messages BGPMessages
peerAS integer
peerGroup string
peerPort integer
peerType BGPPeerType
remoteRouterID string
sessionState BGPNeighborSessionState
shutdownMessage string
prefixes object (keys:string, values:SwitchStateBGPNeighborPrefixes)

SwitchStateBGPNeighborPrefixes

Appears in: - SwitchStateBGPNeighbor

Field Description Default Validation
received integer
receivedPrePolicy integer
sent integer

SwitchStateBreakout

Appears in: - SwitchState

Field Description Default Validation
mode string
nosMembers string array
status string

SwitchStateCRM

Appears in: - SwitchState

Field Description Default Validation
aclStats SwitchStateCRMACLStats
stats SwitchStateCRMStats

SwitchStateCRMACLDetails

Appears in: - SwitchStateCRMACLInfo

Field Description Default Validation
groupsAvailable integer
groupsUsed integer
tablesAvailable integer
tablesUsed integer

SwitchStateCRMACLInfo

Appears in: - SwitchStateCRMACLStats

Field Description Default Validation
lag SwitchStateCRMACLDetails
port SwitchStateCRMACLDetails
rif SwitchStateCRMACLDetails
switch SwitchStateCRMACLDetails
vlan SwitchStateCRMACLDetails

SwitchStateCRMACLStats

Appears in: - SwitchStateCRM

Field Description Default Validation
egress SwitchStateCRMACLInfo
ingress SwitchStateCRMACLInfo

SwitchStateCRMStats

Appears in: - SwitchStateCRM

Field Description Default Validation
dnatEntriesAvailable integer
dnatEntriesUsed integer
fdbEntriesAvailable integer
fdbEntriesUsed integer
ipmcEntriesAvailable integer
ipmcEntriesUsed integer
ipv4NeighborsAvailable integer
ipv4NeighborsUsed integer
ipv4NexthopsAvailable integer
ipv4NexthopsUsed integer
ipv4RoutesAvailable integer
ipv4RoutesUsed integer
ipv6NeighborsAvailable integer
ipv6NeighborsUsed integer
ipv6NexthopsAvailable integer
ipv6NexthopsUsed integer
ipv6RoutesAvailable integer
ipv6RoutesUsed integer
nexthopGroupMembersAvailable integer
nexthopGroupMembersUsed integer
nexthopGroupsAvailable integer
nexthopGroupsUsed integer
snatEntriesAvailable integer
snatEntriesUsed integer

SwitchStateInterface

Appears in: - SwitchState

Field Description Default Validation
enabled boolean
adminStatus AdminStatus
operStatus OperStatus
mac string
lastChanged Time
speed string
counters SwitchStateInterfaceCounters
transceiver SwitchStateTransceiver
lldpNeighbors SwitchStateLLDPNeighbor array

SwitchStateInterfaceCounters

Appears in: - SwitchStateInterface

Field Description Default Validation
inBitsPerSecond float
inDiscards integer
inErrors integer
inPktsPerSecond float
inUtilization integer
lastClear Time
outBitsPerSecond float
outDiscards integer
outErrors integer
outPktsPerSecond float
outUtilization integer

SwitchStateLLDPNeighbor

Appears in: - SwitchStateInterface

Field Description Default Validation
chassisID string
systemName string
systemDescription string
portID string
portDescription string
manufacturer string
model string
serialNumber string

SwitchStateNOS

SwitchStateNOS contains information about the switch and NOS received from the switch itself by the agent

Appears in: - SwitchState

Field Description Default Validation
asicVersion string ASIC name, such as "broadcom" or "vs"
buildCommit string NOS build commit
buildDate string NOS build date
builtBy string NOS build user
configDbVersion string NOS config DB version, such as "version_4_2_1"
distributionVersion string Distribution version, such as "Debian 10.13"
hardwareVersion string Hardware version, such as "X01"
hwskuVersion string Hwsku version, such as "DellEMC-S5248f-P-25G-DPB"
kernelVersion string Kernel version, such as "5.10.0-21-amd64"
mfgName string Manufacturer name, such as "Dell EMC"
platformName string Platform name, such as "x86_64-dellemc_s5248f_c3538-r0"
productDescription string NOS product description, such as "Enterprise SONiC Distribution by Broadcom - Enterprise Base package"
productVersion string NOS product version, empty for Broadcom SONiC
serialNumber string Switch serial number
softwareVersion string NOS software version, such as "4.2.0-Enterprise_Base"
uptime string Switch uptime, such as "21:21:27 up 1 day, 23:26, 0 users, load average: 1.92, 1.99, 2.00 "

SwitchStatePlatform

Appears in: - SwitchState

Field Description Default Validation
fans object (keys:string, values:SwitchStatePlatformFan)
psus object (keys:string, values:SwitchStatePlatformPSU)
temperature object (keys:string, values:SwitchStatePlatformTemperature)

SwitchStatePlatformFan

Appears in: - SwitchStatePlatform

Field Description Default Validation
direction string
speed float
presense boolean
status boolean

SwitchStatePlatformPSU

Appears in: - SwitchStatePlatform

Field Description Default Validation
inputCurrent float
inputPower float
inputVoltage float
outputCurrent float
outputPower float
outputVoltage float
presense boolean
status boolean

SwitchStatePlatformTemperature

Appears in: - SwitchStatePlatform

Field Description Default Validation
temperature float
alarms string
highThreshold float
criticalHighThreshold float
lowThreshold float
criticalLowThreshold float

SwitchStateTransceiver

Appears in: - SwitchStateInterface

Field Description Default Validation
description string
cableClass string
formFactor string
connectorType string
present string
cableLength float
operStatus string
temperature float
voltage float
serialNumber string
vendor string
vendorPart string
vendorOUI string
vendorRev string

dhcp.githedgehog.com/v1alpha2

Package v1alpha2 contains API Schema definitions for the dhcp v1alpha2 API group. It is the primary internal API group for the intended Hedgehog DHCP server configuration and storing leases as well as making them available to the end user through API. Not intended to be modified by the user.

Resource Types

DHCPAllocated

DHCPAllocated is a single allocated IP with expiry time and hostname from DHCP requests, it's effectively a DHCP lease

Appears in: - DHCPSubnetStatus

Field Description Default Validation
ip string Allocated IP address
expiry Time Expiry time of the lease
hostname string Hostname from DHCP request

DHCPSubnet

DHCPSubnet is the configuration (spec) for the Hedgehog DHCP server and storage for the leases (status). It's primary internal API group, but it makes allocated IPs / leases information available to the end user through API. Not intended to be modified by the user.

Field Description Default Validation
apiVersion string dhcp.githedgehog.com/v1alpha2
kind string DHCPSubnet
metadata ObjectMeta Refer to Kubernetes API documentation for fields of metadata.
spec DHCPSubnetSpec Spec is the desired state of the DHCPSubnet
status DHCPSubnetStatus Status is the observed state of the DHCPSubnet

DHCPSubnetSpec

DHCPSubnetSpec defines the desired state of DHCPSubnet

Appears in: - DHCPSubnet

Field Description Default Validation
subnet string Full VPC subnet name (including VPC name), such as "vpc-0/default"
cidrBlock string CIDR block to use for VPC subnet, such as "10.10.10.0/24"
gateway string Gateway, such as 10.10.10.1
startIP string Start IP from the CIDRBlock to allocate IPs, such as 10.10.10.10
endIP string End IP from the CIDRBlock to allocate IPs, such as 10.10.10.99
vrf string VRF name to identify specific VPC (will be added to DHCP packets by DHCP relay in suboption 151), such as "VrfVvpc-1" as it's named on switch
circuitID string VLAN ID to identify specific subnet withing the VPC, such as "Vlan1000" as it's named on switch
pxeURL string PXEURL (optional) to identify the pxe server to use to boot hosts connected to this segment such as http://10.10.10.99/bootfilename or tftp://10.10.10.99/bootfilename, http query strings are not supported

DHCPSubnetStatus

DHCPSubnetStatus defines the observed state of DHCPSubnet

Appears in: - DHCPSubnet

Field Description Default Validation
allocated object (keys:string, values:DHCPAllocated) Allocated is a map of allocated IPs with expiry time and hostname from DHCP requests

vpc.githedgehog.com/v1alpha2

Package v1alpha2 contains API Schema definitions for the vpc v1alpha2 API group. It is public API group for the VPCs and Externals APIs. Intended to be used by the user.

Resource Types

External

External object represents an external system connected to the Fabric and available to the specific IPv4Namespace. Users can do external peering with the external system by specifying the name of the External Object without need to worry about the details of how external system is attached to the Fabric.

Field Description Default Validation
apiVersion string vpc.githedgehog.com/v1alpha2
kind string External
metadata ObjectMeta Refer to Kubernetes API documentation for fields of metadata.
spec ExternalSpec Spec is the desired state of the External
status ExternalStatus Status is the observed state of the External

ExternalAttachment

ExternalAttachment is a definition of how specific switch is connected with external system (External object). Effectively it represents BGP peering between the switch and external system including all needed configuration.

Field Description Default Validation
apiVersion string vpc.githedgehog.com/v1alpha2
kind string ExternalAttachment
metadata ObjectMeta Refer to Kubernetes API documentation for fields of metadata.
spec ExternalAttachmentSpec Spec is the desired state of the ExternalAttachment
status ExternalAttachmentStatus Status is the observed state of the ExternalAttachment

ExternalAttachmentNeighbor

ExternalAttachmentNeighbor defines the BGP neighbor configuration for the external attachment

Appears in: - ExternalAttachmentSpec

Field Description Default Validation
asn integer ASN is the ASN of the BGP neighbor
ip string IP is the IP address of the BGP neighbor to peer with

ExternalAttachmentSpec

ExternalAttachmentSpec defines the desired state of ExternalAttachment

Appears in: - ExternalAttachment

Field Description Default Validation
external string External is the name of the External object this attachment belongs to
connection string Connection is the name of the Connection object this attachment belongs to (essentialy the name of the switch/port)
switch ExternalAttachmentSwitch Switch is the switch port configuration for the external attachment
neighbor ExternalAttachmentNeighbor Neighbor is the BGP neighbor configuration for the external attachment

ExternalAttachmentStatus

ExternalAttachmentStatus defines the observed state of ExternalAttachment

Appears in: - ExternalAttachment

ExternalAttachmentSwitch

ExternalAttachmentSwitch defines the switch port configuration for the external attachment

Appears in: - ExternalAttachmentSpec

Field Description Default Validation
vlan integer VLAN (optional) is the VLAN ID used for the subinterface on a switch port specified in the connection, set to 0 if no VLAN is used
ip string IP is the IP address of the subinterface on a switch port specified in the connection

ExternalPeering

ExternalPeering is the Schema for the externalpeerings API

Field Description Default Validation
apiVersion string vpc.githedgehog.com/v1alpha2
kind string ExternalPeering
metadata ObjectMeta Refer to Kubernetes API documentation for fields of metadata.
spec ExternalPeeringSpec Spec is the desired state of the ExternalPeering
status ExternalPeeringStatus Status is the observed state of the ExternalPeering

ExternalPeeringSpec

ExternalPeeringSpec defines the desired state of ExternalPeering

Appears in: - ExternalPeering

Field Description Default Validation
permit ExternalPeeringSpecPermit Permit defines the peering policy - which VPC and External to peer with and which subnets/prefixes to permit

ExternalPeeringSpecExternal

ExternalPeeringSpecExternal defines the External-side of the configuration to peer with

Appears in: - ExternalPeeringSpecPermit

Field Description Default Validation
name string Name is the name of the External to peer with
prefixes ExternalPeeringSpecPrefix array Prefixes is the list of prefixes to permit from the External to the VPC

ExternalPeeringSpecPermit

ExternalPeeringSpecPermit defines the peering policy - which VPC and External to peer with and which subnets/prefixes to permit

Appears in: - ExternalPeeringSpec

Field Description Default Validation
vpc ExternalPeeringSpecVPC VPC is the VPC-side of the configuration to peer with
external ExternalPeeringSpecExternal External is the External-side of the configuration to peer with

ExternalPeeringSpecPrefix

ExternalPeeringSpecPrefix defines the prefix to permit from the External to the VPC

Appears in: - ExternalPeeringSpecExternal

Field Description Default Validation
prefix string Prefix is the subnet to permit from the External to the VPC, e.g. 0.0.0.0/0 for any route including default route.
It matches any prefix length less than or equal to 32 effectively permitting all prefixes within the specified one.

ExternalPeeringSpecVPC

ExternalPeeringSpecVPC defines the VPC-side of the configuration to peer with

Appears in: - ExternalPeeringSpecPermit

Field Description Default Validation
name string Name is the name of the VPC to peer with
subnets string array Subnets is the list of subnets to advertise from VPC to the External

ExternalPeeringStatus

ExternalPeeringStatus defines the observed state of ExternalPeering

Appears in: - ExternalPeering

ExternalSpec

ExternalSpec describes IPv4 namespace External belongs to and inbound/outbound communities which are used to filter routes from/to the external system.

Appears in: - External

Field Description Default Validation
ipv4Namespace string IPv4Namespace is the name of the IPv4Namespace this External belongs to
inboundCommunity string InboundCommunity is the inbound community to filter routes from the external system (e.g. 65102:5000)
outboundCommunity string OutboundCommunity is theoutbound community that all outbound routes will be stamped with (e.g. 50000:50001)

ExternalStatus

ExternalStatus defines the observed state of External

Appears in: - External

IPv4Namespace

IPv4Namespace represents a namespace for VPC subnets allocation. All VPC subnets withing a single IPv4Namespace are non-overlapping. Users can create multiple IPv4Namespaces to allocate same VPC subnets.

Field Description Default Validation
apiVersion string vpc.githedgehog.com/v1alpha2
kind string IPv4Namespace
metadata ObjectMeta Refer to Kubernetes API documentation for fields of metadata.
spec IPv4NamespaceSpec Spec is the desired state of the IPv4Namespace
status IPv4NamespaceStatus Status is the observed state of the IPv4Namespace

IPv4NamespaceSpec

IPv4NamespaceSpec defines the desired state of IPv4Namespace

Appears in: - IPv4Namespace

Field Description Default Validation
subnets string array Subnets is the list of subnets to allocate VPC subnets from, couldn't overlap between each other and with Fabric reserved subnets MaxItems: 20
MinItems: 1

IPv4NamespaceStatus

IPv4NamespaceStatus defines the observed state of IPv4Namespace

Appears in: - IPv4Namespace

VPC

VPC is Virtual Private Cloud, similar to the public cloud VPC it provides an isolated private network for the resources with support for multiple subnets each with user-provided VLANs and on-demand DHCP.

Field Description Default Validation
apiVersion string vpc.githedgehog.com/v1alpha2
kind string VPC
metadata ObjectMeta Refer to Kubernetes API documentation for fields of metadata.
spec VPCSpec Spec is the desired state of the VPC
status VPCStatus Status is the observed state of the VPC

VPCAttachment

VPCAttachment is the Schema for the vpcattachments API

Field Description Default Validation
apiVersion string vpc.githedgehog.com/v1alpha2
kind string VPCAttachment
metadata ObjectMeta Refer to Kubernetes API documentation for fields of metadata.
spec VPCAttachmentSpec Spec is the desired state of the VPCAttachment
status VPCAttachmentStatus Status is the observed state of the VPCAttachment

VPCAttachmentSpec

VPCAttachmentSpec defines the desired state of VPCAttachment

Appears in: - VPCAttachment

Field Description Default Validation
subnet string Subnet is the full name of the VPC subnet to attach to, such as "vpc-1/default"
connection string Connection is the name of the connection to attach to the VPC
nativeVLAN boolean NativeVLAN is the flag to indicate if the native VLAN should be used for attaching the VPC subnet

VPCAttachmentStatus

VPCAttachmentStatus defines the observed state of VPCAttachment

Appears in: - VPCAttachment

VPCDHCP

VPCDHCP defines the on-demand DHCP configuration for the subnet

Appears in: - VPCSubnet

Field Description Default Validation
relay string Relay is the DHCP relay IP address, if specified, DHCP server will be disabled
enable boolean Enable enables DHCP server for the subnet
range VPCDHCPRange Range (optional) is the DHCP range for the subnet if DHCP server is enabled
pxeURL string PXEURL (optional) to identify the pxe server to use to boot hosts connected to this segment such as http://10.10.10.99/bootfilename or tftp://10.10.10.99/bootfilename, http query strings are not supported

VPCDHCPRange

VPCDHCPRange defines the DHCP range for the subnet if DHCP server is enabled

Appears in: - VPCDHCP

Field Description Default Validation
start string Start is the start IP address of the DHCP range
end string End is the end IP address of the DHCP range

VPCPeer

Appears in: - VPCPeeringSpec

Field Description Default Validation
subnets string array Subnets is the list of subnets to advertise from current VPC to the peer VPC MaxItems: 10
MinItems: 1

VPCPeering

VPCPeering represents a peering between two VPCs with corresponding filtering rules. Minimal example of the VPC peering showing vpc-1 to vpc-2 peering with all subnets allowed:

spec:
  permit:
  - vpc-1: {}
    vpc-2: {}
Field Description Default Validation
apiVersion string vpc.githedgehog.com/v1alpha2
kind string VPCPeering
metadata ObjectMeta Refer to Kubernetes API documentation for fields of metadata.
spec VPCPeeringSpec Spec is the desired state of the VPCPeering
status VPCPeeringStatus Status is the observed state of the VPCPeering

VPCPeeringSpec

VPCPeeringSpec defines the desired state of VPCPeering

Appears in: - VPCPeering

Field Description Default Validation
remote string
permit map[string]VPCPeer array Permit defines a list of the peering policies - which VPC subnets will have access to the peer VPC subnets. MaxItems: 10
MinItems: 1

VPCPeeringStatus

VPCPeeringStatus defines the observed state of VPCPeering

Appears in: - VPCPeering

VPCSpec

VPCSpec defines the desired state of VPC. At least one subnet is required.

Appears in: - VPC

Field Description Default Validation
subnets object (keys:string, values:VPCSubnet) Subnets is the list of VPC subnets to configure
ipv4Namespace string IPv4Namespace is the name of the IPv4Namespace this VPC belongs to (if not specified, "default" is used)
vlanNamespace string VLANNamespace is the name of the VLANNamespace this VPC belongs to (if not specified, "default" is used)
defaultIsolated boolean DefaultIsolated sets default bahivour for isolated mode for the subnets (disabled by default)
defaultRestricted boolean DefaultRestricted sets default bahivour for restricted mode for the subnets (disabled by default)
permit string array array Permit defines a list of the access policies between the subnets within the VPC - each policy is a list of subnets that have access to each other.
It's applied on top of the subnet isolation flag and if subnet isn't isolated it's not required to have it in a permit list while if vpc is marked
as isolated it's required to have it in a permit list to have access to other subnets.
staticRoutes VPCStaticRoute array StaticRoutes is the list of additional static routes for the VPC

VPCStaticRoute

VPCStaticRoute defines the static route for the VPC

Appears in: - VPCSpec

Field Description Default Validation
prefix string Prefix for the static route (mandatory), e.g. 10.42.0.0/24
nextHops string array NextHops for the static route (at least one is required), e.g. 10.99.0.0

VPCStatus

VPCStatus defines the observed state of VPC

Appears in: - VPC

VPCSubnet

VPCSubnet defines the VPC subnet configuration

Appears in: - VPCSpec

Field Description Default Validation
subnet string Subnet is the subnet CIDR block, such as "10.0.0.0/24", should belong to the IPv4Namespace and be unique within the namespace
gateway string Gateway (optional) for the subnet, if not specified, the first IP (e.g. 10.0.0.1) in the subnet is used as the gateway
dhcp VPCDHCP DHCP is the on-demand DHCP configuration for the subnet
vlan integer VLAN is the VLAN ID for the subnet, should belong to the VLANNamespace and be unique within the namespace
isolated boolean Isolated is the flag to enable isolated mode for the subnet which means no access to and from the other subnets within the VPC
restricted boolean Restricted is the flag to enable restricted mode for the subnet which means no access between hosts within the subnet itself

wiring.githedgehog.com/v1alpha2

Package v1alpha2 contains API Schema definitions for the wiring v1alpha2 API group. It is public API group mainly for the underlay definition including Switches, Server, wiring between them and etc. Intended to be used by the user.

Resource Types

BasePortName

BasePortName defines the full name of the switch port

Appears in: - ConnExternalLink - ConnFabricLinkSwitch - ConnMgmtLinkServer - ConnMgmtLinkSwitch - ConnStaticExternalLinkSwitch - ServerToSwitchLink - SwitchToSwitchLink

Field Description Default Validation
port string Port defines the full name of the switch port in the format of "device/port", such as "spine-1/Ethernet1".
SONiC port name is used as a port name and switch name should be same as the name of the Switch object.

ConnBundled

ConnBundled defines the bundled connection (port channel, single server to a single switch with multiple links)

Appears in: - ConnectionSpec

Field Description Default Validation
links ServerToSwitchLink array Links is the list of server-to-switch links
mtu integer MTU is the MTU to be configured on the switch port or port channel

ConnESLAG

ConnESLAG defines the ESLAG connection (port channel, single server to 2-4 switches with multiple links)

Appears in: - ConnectionSpec

Field Description Default Validation
links ServerToSwitchLink array Links is the list of server-to-switch links MinItems: 2
mtu integer MTU is the MTU to be configured on the switch port or port channel
fallback boolean Fallback is the optional flag that used to indicate one of the links in LACP port channel to be used as a fallback link

ConnExternal

ConnExternal defines the external connection (single switch to a single external device with a single link)

Appears in: - ConnectionSpec

Field Description Default Validation
link ConnExternalLink Link is the external connection link

ConnExternalLink defines the external connection link

Appears in: - ConnExternal

Field Description Default Validation
switch BasePortName

ConnFabric

ConnFabric defines the fabric connection (single spine to a single leaf with at least one link)

Appears in: - ConnectionSpec

Field Description Default Validation
links FabricLink array Links is the list of spine-to-leaf links MinItems: 1

ConnFabricLinkSwitch

ConnFabricLinkSwitch defines the switch side of the fabric link

Appears in: - FabricLink

Field Description Default Validation
port string Port defines the full name of the switch port in the format of "device/port", such as "spine-1/Ethernet1".
SONiC port name is used as a port name and switch name should be same as the name of the Switch object.
ip string IP is the IP address of the switch side of the fabric link (switch port configuration) Pattern: ^((25[0-5]|(2[0-4]|1\d|[1-9]|)\d)\.?\b){4}/([1-2]?[0-9]|3[0-2])$

ConnMCLAG

ConnMCLAG defines the MCLAG connection (port channel, single server to pair of switches with multiple links)

Appears in: - ConnectionSpec

Field Description Default Validation
links ServerToSwitchLink array Links is the list of server-to-switch links MinItems: 2
mtu integer MTU is the MTU to be configured on the switch port or port channel
fallback boolean Fallback is the optional flag that used to indicate one of the links in LACP port channel to be used as a fallback link

ConnMCLAGDomain

ConnMCLAGDomain defines the MCLAG domain connection which makes two switches into a single logical switch or redundancy group and allows to use MCLAG connections to connect servers in a multi-homed way.

Appears in: - ConnectionSpec

Field Description Default Validation
peerLinks SwitchToSwitchLink array PeerLinks is the list of peer links between the switches, used to pass server traffic between switch MinItems: 1
sessionLinks SwitchToSwitchLink array SessionLinks is the list of session links between the switches, used only to pass MCLAG control plane and BGP
traffic between switches
MinItems: 1

ConnMgmt

ConnMgmt defines the management connection (single control node/server to a single switch with a single link)

Appears in: - ConnectionSpec

Field Description Default Validation
link ConnMgmtLink

ConnMgmtLink defines the management connection link

Appears in: - ConnMgmt

Field Description Default Validation
server ConnMgmtLinkServer Server is the server side of the management link
switch ConnMgmtLinkSwitch Switch is the switch side of the management link

ConnMgmtLinkServer

ConnMgmtLinkServer defines the server side of the management link

Appears in: - ConnMgmtLink

Field Description Default Validation
port string Port defines the full name of the switch port in the format of "device/port", such as "spine-1/Ethernet1".
SONiC port name is used as a port name and switch name should be same as the name of the Switch object.
ip string IP is the IP address of the server side of the management link (control node port configuration) Pattern: ^((25[0-5]|(2[0-4]|1\d|[1-9]|)\d)\.?\b){4}/([1-2]?[0-9]|3[0-2])$
mac string MAC is an optional MAC address of the control node port for the management link, if specified will be used to
create a "virtual" link with the connection names on the control node

ConnMgmtLinkSwitch

ConnMgmtLinkSwitch defines the switch side of the management link

Appears in: - ConnMgmtLink

Field Description Default Validation
port string Port defines the full name of the switch port in the format of "device/port", such as "spine-1/Ethernet1".
SONiC port name is used as a port name and switch name should be same as the name of the Switch object.
ip string IP is the IP address of the switch side of the management link (switch port configuration) Pattern: ^((25[0-5]|(2[0-4]|1\d|[1-9]|)\d)\.?\b){4}/([1-2]?[0-9]|3[0-2])$
oniePortName string ONIEPortName is an optional ONIE port name of the switch side of the management link that's only used by the IPv6 Link Local discovery

ConnStaticExternal

ConnStaticExternal defines the static external connection (single switch to a single external device with a single link)

Appears in: - ConnectionSpec

Field Description Default Validation
link ConnStaticExternalLink Link is the static external connection link
withinVPC string WithinVPC is the optional VPC name to provision the static external connection within the VPC VRF instead of default one to make resource available to the specific VPC

ConnStaticExternalLink defines the static external connection link

Appears in: - ConnStaticExternal

Field Description Default Validation
switch ConnStaticExternalLinkSwitch Switch is the switch side of the static external connection link

ConnStaticExternalLinkSwitch

ConnStaticExternalLinkSwitch defines the switch side of the static external connection link

Appears in: - ConnStaticExternalLink

Field Description Default Validation
port string Port defines the full name of the switch port in the format of "device/port", such as "spine-1/Ethernet1".
SONiC port name is used as a port name and switch name should be same as the name of the Switch object.
ip string IP is the IP address of the switch side of the static external connection link (switch port configuration) Pattern: ^((25[0-5]|(2[0-4]|1\d|[1-9]|)\d)\.?\b){4}/([1-2]?[0-9]|3[0-2])$
nextHop string NextHop is the next hop IP address for static routes that will be created for the subnets Pattern: ^((25[0-5]|(2[0-4]|1\d|[1-9]|)\d)\.?\b){4}$
subnets string array Subnets is the list of subnets that will get static routes using the specified next hop
vlan integer VLAN is the optional VLAN ID to be configured on the switch port

ConnUnbundled

ConnUnbundled defines the unbundled connection (no port channel, single server to a single switch with a single link)

Appears in: - ConnectionSpec

Field Description Default Validation
link ServerToSwitchLink Link is the server-to-switch link
mtu integer MTU is the MTU to be configured on the switch port or port channel

ConnVPCLoopback

ConnVPCLoopback defines the VPC loopback connection (multiple port pairs on a single switch) that enables automated workaround named "VPC Loopback" that allow to avoid switch hardware limitations and traffic going through CPU in some cases

Appears in: - ConnectionSpec

Field Description Default Validation
links SwitchToSwitchLink array Links is the list of VPC loopback links MinItems: 1

Connection

Connection object represents a logical and physical connections between any devices in the Fabric (Switch, Server and External objects). It's needed to define all physical and logical connections between the devices in the Wiring Diagram. Connection type is defined by the top-level field in the ConnectionSpec. Exactly one of them could be used in a single Connection object.

Field Description Default Validation
apiVersion string wiring.githedgehog.com/v1alpha2
kind string Connection
metadata ObjectMeta Refer to Kubernetes API documentation for fields of metadata.
spec ConnectionSpec Spec is the desired state of the Connection
status ConnectionStatus Status is the observed state of the Connection

ConnectionSpec

ConnectionSpec defines the desired state of Connection

Appears in: - Connection

Field Description Default Validation
unbundled ConnUnbundled Unbundled defines the unbundled connection (no port channel, single server to a single switch with a single link)
bundled ConnBundled Bundled defines the bundled connection (port channel, single server to a single switch with multiple links)
management ConnMgmt Management defines the management connection (single control node/server to a single switch with a single link)
mclag ConnMCLAG MCLAG defines the MCLAG connection (port channel, single server to pair of switches with multiple links)
eslag ConnESLAG ESLAG defines the ESLAG connection (port channel, single server to 2-4 switches with multiple links)
mclagDomain ConnMCLAGDomain MCLAGDomain defines the MCLAG domain connection which makes two switches into a single logical switch for server multi-homing
fabric ConnFabric Fabric defines the fabric connection (single spine to a single leaf with at least one link)
vpcLoopback ConnVPCLoopback VPCLoopback defines the VPC loopback connection (multiple port pairs on a single switch) for automated workaround
external ConnExternal External defines the external connection (single switch to a single external device with a single link)
staticExternal ConnStaticExternal StaticExternal defines the static external connection (single switch to a single external device with a single link)

ConnectionStatus

ConnectionStatus defines the observed state of Connection

Appears in: - Connection

FabricLink defines the fabric connection link

Appears in: - ConnFabric

Field Description Default Validation
spine ConnFabricLinkSwitch Spine is the spine side of the fabric link
leaf ConnFabricLinkSwitch Leaf is the leaf side of the fabric link

Location

Location defines the geographical position of the device in a datacenter

Appears in: - SwitchSpec

Field Description Default Validation
location string
aisle string
row string
rack string
slot string

LocationSig

LocationSig contains signatures for the location UUID as well as the device location itself

Appears in: - SwitchSpec

Field Description Default Validation
sig string
uuidSig string

Server

Server is the Schema for the servers API

Field Description Default Validation
apiVersion string wiring.githedgehog.com/v1alpha2
kind string Server
metadata ObjectMeta Refer to Kubernetes API documentation for fields of metadata.
spec ServerSpec Spec is desired state of the server
status ServerStatus Status is the observed state of the server

ServerFacingConnectionConfig

ServerFacingConnectionConfig defines any server-facing connection (unbundled, bundled, mclag, etc.) configuration

Appears in: - ConnBundled - ConnESLAG - ConnMCLAG - ConnUnbundled

Field Description Default Validation
mtu integer MTU is the MTU to be configured on the switch port or port channel

ServerSpec

ServerSpec defines the desired state of Server

Appears in: - Server

Field Description Default Validation
type ServerType Type is the type of server, could be control for control nodes or default (empty string) for everything else Enum: [control]
description string Description is a description of the server
profile string Profile is the profile of the server, name of the ServerProfile object to be used for this server, currently not used by the Fabric

ServerStatus

ServerStatus defines the observed state of Server

Appears in: - Server

ServerToSwitchLink defines the server-to-switch link

Appears in: - ConnBundled - ConnESLAG - ConnMCLAG - ConnUnbundled

Field Description Default Validation
server BasePortName Server is the server side of the connection
switch BasePortName Switch is the switch side of the connection

ServerType

Underlying type: string

ServerType is the type of server, could be control for control nodes or default (empty string) for everything else

Validation: - Enum: [control]

Appears in: - ServerSpec

Switch

Switch is the Schema for the switches API

Field Description Default Validation
apiVersion string wiring.githedgehog.com/v1alpha2
kind string Switch
metadata ObjectMeta Refer to Kubernetes API documentation for fields of metadata.
spec SwitchSpec Spec is desired state of the switch
status SwitchStatus Status is the observed state of the switch

SwitchGroup

SwitchGroup is the marker API object to group switches together, switch can belong to multiple groups

Field Description Default Validation
apiVersion string wiring.githedgehog.com/v1alpha2
kind string SwitchGroup
metadata ObjectMeta Refer to Kubernetes API documentation for fields of metadata.
spec SwitchGroupSpec Spec is the desired state of the SwitchGroup
status SwitchGroupStatus Status is the observed state of the SwitchGroup

SwitchGroupSpec

SwitchGroupSpec defines the desired state of SwitchGroup

Appears in: - SwitchGroup

SwitchGroupStatus

SwitchGroupStatus defines the observed state of SwitchGroup

Appears in: - SwitchGroup

SwitchProfile

SwitchProfile represents switch capabilities and configuration

Field Description Default Validation
apiVersion string wiring.githedgehog.com/v1alpha2
kind string SwitchProfile
metadata ObjectMeta Refer to Kubernetes API documentation for fields of metadata.
spec SwitchProfileSpec
status SwitchProfileStatus

SwitchProfileConfig

Defines switch-specific configuration options

Appears in: - SwitchProfileSpec

Field Description Default Validation
maxPathsEBGP integer MaxPathsIBGP defines the maximum number of IBGP paths to be configured

SwitchProfileFeatures

Defines features supported by a specific switch which is later used for roles and Fabric API features usage validation

Appears in: - SwitchProfileSpec

Field Description Default Validation
subinterfaces boolean Subinterfaces defines if switch supports subinterfaces
vxlan boolean VXLAN defines if switch supports VXLANs
acls boolean ACLs defines if switch supports ACLs

SwitchProfilePort

Defines a switch port configuration Only one of Profile or Group can be set

Appears in: - SwitchProfileSpec

Field Description Default Validation
nos string NOSName defines how port is named in the NOS
baseNOSName string BaseNOSName defines the base NOS name that could be used together with the profile to generate the actual NOS name (e.g. breakouts)
label string Label defines the physical port label you can see on the actual switch
group string If port isn't directly manageable, group defines the group it belongs to, exclusive with profile
profile string If port is directly configurable, profile defines the profile it belongs to, exclusive with group
management boolean Management defines if port is a management port, it's a special case and it can't have a group or profile
oniePortName string OniePortName defines the ONIE port name for management ports only

SwitchProfilePortGroup

Defines a switch port group configuration

Appears in: - SwitchProfileSpec

Field Description Default Validation
nos string NOSName defines how group is named in the NOS
profile string Profile defines the possible configuration profile for the group, could only have speed profile

SwitchProfilePortProfile

Defines a switch port profile configuration

Appears in: - SwitchProfileSpec

Field Description Default Validation
speed SwitchProfilePortProfileSpeed Speed defines the speed configuration for the profile, exclusive with breakout
breakout SwitchProfilePortProfileBreakout Breakout defines the breakout configuration for the profile, exclusive with speed

SwitchProfilePortProfileBreakout

Defines a switch port profile breakout configuration

Appears in: - SwitchProfilePortProfile

Field Description Default Validation
default string Default defines the default breakout mode for the profile
supported object (keys:string, values:SwitchProfilePortProfileBreakoutMode) Supported defines the supported breakout modes for the profile with the NOS name offsets

SwitchProfilePortProfileBreakoutMode

Defines a switch port profile breakout mode configuration

Appears in: - SwitchProfilePortProfileBreakout

Field Description Default Validation
offsets string array Offsets defines the breakout NOS port name offset from the port NOS Name for each breakout mode

SwitchProfilePortProfileSpeed

Defines a switch port profile speed configuration

Appears in: - SwitchProfilePortProfile

Field Description Default Validation
default string Default defines the default speed for the profile
supported string array Supported defines the supported speeds for the profile

SwitchProfileSpec

SwitchProfileSpec defines the desired state of SwitchProfile

Appears in: - SwitchProfile

Field Description Default Validation
displayName string DisplayName defines the human-readable name of the switch
otherNames string array OtherNames defines alternative names for the switch
features SwitchProfileFeatures Features defines the features supported by the switch
config SwitchProfileConfig Config defines the switch-specific configuration options
ports object (keys:string, values:SwitchProfilePort) Ports defines the switch port configuration
portGroups object (keys:string, values:SwitchProfilePortGroup) PortGroups defines the switch port group configuration
portProfiles object (keys:string, values:SwitchProfilePortProfile) PortProfiles defines the switch port profile configuration

SwitchProfileStatus

SwitchProfileStatus defines the observed state of SwitchProfile

Appears in: - SwitchProfile

SwitchRedundancy

SwitchRedundancy is the switch redundancy configuration which includes name of the redundancy group switch belongs to and its type, used both for MCLAG and ESLAG connections. It defines how redundancy will be configured and handled on the switch as well as which connection types will be available. If not specified, switch will not be part of any redundancy group. If name isn't empty, type must be specified as well and name should be the same as one of the SwitchGroup objects.

Appears in: - SwitchSpec

Field Description Default Validation
group string Group is the name of the redundancy group switch belongs to
type RedundancyType Type is the type of the redundancy group, could be mclag or eslag

SwitchRole

Underlying type: string

SwitchRole is the role of the switch, could be spine, server-leaf or border-leaf or mixed-leaf

Validation: - Enum: [spine server-leaf border-leaf mixed-leaf virtual-edge]

Appears in: - SwitchSpec

SwitchSpec

SwitchSpec defines the desired state of Switch

Appears in: - Switch

Field Description Default Validation
role SwitchRole Role is the role of the switch, could be spine, server-leaf or border-leaf or mixed-leaf Enum: [spine server-leaf border-leaf mixed-leaf virtual-edge]
Required: {}
description string Description is a description of the switch
profile string Profile is the profile of the switch, name of the SwitchProfile object to be used for this switch, currently not used by the Fabric
location Location Location is the location of the switch, it is used to generate the location UUID and location signature
locationSig LocationSig LocationSig is the location signature for the switch
groups string array Groups is a list of switch groups the switch belongs to
redundancy SwitchRedundancy Redundancy is the switch redundancy configuration including name of the redundancy group switch belongs to and its type, used both for MCLAG and ESLAG connections
vlanNamespaces string array VLANNamespaces is a list of VLAN namespaces the switch is part of, their VLAN ranges could not overlap
asn integer ASN is the ASN of the switch
ip string IP is the IP of the switch that could be used to access it from other switches and control nodes in the Fabric
vtepIP string VTEPIP is the VTEP IP of the switch
protocolIP string ProtocolIP is used as BGP Router ID for switch configuration
portGroupSpeeds object (keys:string, values:string) PortGroupSpeeds is a map of port group speeds, key is the port group name, value is the speed, such as '"2": 10G'
portSpeeds object (keys:string, values:string) PortSpeeds is a map of port speeds, key is the port name, value is the speed
portBreakouts object (keys:string, values:string) PortBreakouts is a map of port breakouts, key is the port name, value is the breakout configuration, such as "1/55: 4x25G"

SwitchStatus

SwitchStatus defines the observed state of Switch

Appears in: - Switch

SwitchToSwitchLink defines the switch-to-switch link

Appears in: - ConnMCLAGDomain - ConnVPCLoopback

Field Description Default Validation
switch1 BasePortName Switch1 is the first switch side of the connection
switch2 BasePortName Switch2 is the second switch side of the connection

VLANNamespace

VLANNamespace is the Schema for the vlannamespaces API

Field Description Default Validation
apiVersion string wiring.githedgehog.com/v1alpha2
kind string VLANNamespace
metadata ObjectMeta Refer to Kubernetes API documentation for fields of metadata.
spec VLANNamespaceSpec Spec is the desired state of the VLANNamespace
status VLANNamespaceStatus Status is the observed state of the VLANNamespace

VLANNamespaceSpec

VLANNamespaceSpec defines the desired state of VLANNamespace

Appears in: - VLANNamespace

Field Description Default Validation
ranges VLANRange array Ranges is a list of VLAN ranges to be used in this namespace, couldn't overlap between each other and with Fabric reserved VLAN ranges MaxItems: 20
MinItems: 1

VLANNamespaceStatus

VLANNamespaceStatus defines the observed state of VLANNamespace

Appears in: - VLANNamespace


Last update: June 5, 2024
Created: October 26, 2023