API Reference
Packages
- agent.githedgehog.com/v1alpha2
- dhcp.githedgehog.com/v1alpha2
- vpc.githedgehog.com/v1alpha2
- wiring.githedgehog.com/v1alpha2
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 |
|||
members 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 | ||
dhcp VPCDHCP |
DHCP is the on-demand DHCP configuration for the subnet | ||
vlan string |
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
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
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
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
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 |
Rack
Rack is the Schema for the racks API
Field | Description | Default | Validation |
---|---|---|---|
apiVersion string |
wiring.githedgehog.com/v1alpha2 |
||
kind string |
Rack |
||
metadata ObjectMeta |
Refer to Kubernetes API documentation for fields of metadata . |
||
spec RackSpec |
|||
status RackStatus |
RackPosition
RackPosition defines the geographical position of the rack in a datacenter
Appears in: - RackSpec
Field | Description | Default | Validation |
---|---|---|---|
location string |
|||
aisle string |
|||
row string |
RackSpec
RackSpec defines the properties of a rack which we are modelling
Appears in: - Rack
Field | Description | Default | Validation |
---|---|---|---|
position RackPosition |
RackStatus
RackStatus defines the observed state of Rack
Appears in: - Rack
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
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
All switches should always have 1 labels defined: wiring.githedgehog.com/rack. It represents name of the rack it belongs to.
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
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
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
Created: October 26, 2023