switchprofile

package
v0.58.0 Latest Latest
Warning

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

Go to latest
Published: Dec 12, 2024 License: Apache-2.0 Imports: 15 Imported by: 0

README

Default SwitchProfiles

This package provides a catalog of the default SwitchProfile objects supported by the Fabric. It'll be enforced by the Fabric to ensure the consistency of the switch usages and configurations.

SwitchProfile structure is explained in the API package as part of the SwitchProfile object definition.

How to add a new SwitchProfile

To add a new SwitchProfile, you need to change the Fabric config in the ConfigMap object named fabric-config in the default namespace by adding allowExtraSwitchProfiles: true to it so it looks like this:

apiVersion: v1
data:
  config.yaml: |
    allowExtraSwitchProfiles: true
    ...
PortGroups and ports belonging to them

It's the most simple setup - just list all the ports with refs to the correct groups.

admin@s5248-01:~$ sonic-cli -c "show port-group | no-more"
-------------------------------------------------------------------------------------
Port-group  Interface range            Valid speeds      Default Speed Current Speed
-------------------------------------------------------------------------------------
1           Ethernet0 - Ethernet3      10G, 25G          25G           10G
2           Ethernet4 - Ethernet7      10G, 25G          25G           10G
3           Ethernet8 - Ethernet11     10G, 25G          25G           25G
4           Ethernet12 - Ethernet15    10G, 25G          25G           25G
5           Ethernet16 - Ethernet19    10G, 25G          25G           25G
6           Ethernet20 - Ethernet23    10G, 25G          25G           25G
7           Ethernet24 - Ethernet27    10G, 25G          25G           25G
8           Ethernet28 - Ethernet31    10G, 25G          25G           25G
9           Ethernet32 - Ethernet35    10G, 25G          25G           25G
10          Ethernet36 - Ethernet39    10G, 25G          25G           25G
11          Ethernet40 - Ethernet43    10G, 25G          25G           25G
12          Ethernet44 - Ethernet47    10G, 25G          25G           25G
Breakout modes supported by the switch

For the breakouts. offsets need to be specified, it could be done by checking every breakout mode supported by the port and checking the list of the resulting interface names (using show interface breakout).

In case of breakouts, NOSName is the actual name to enable breakout mode on the switch (e.g. 1/1 in SONiC), and the BaseNOSName is the NOS name of the base port to be used together with the offset to calculate the actual port name.

admin@s5248-01:~$ sonic-cli -c "show interface breakout modes | no-more"
------------------------------------------------------------------------------
Port  Pipe  Interface   Supported Modes                           Default Mode
------------------------------------------------------------------------------
1/49  N/A   Ethernet48  1x100G, 1x40G, 2x50G, 1x50G, 4x25G,       1x100G
                        4x10G, 1x25G, 1x10G
1/50  N/A   Ethernet52  1x100G, 1x40G, 2x50G, 1x50G, 4x25G,       1x100G
                        4x10G, 1x25G, 1x10G
1/51  N/A   Ethernet56  1x100G, 1x40G, 2x50G, 1x50G, 4x25G,       1x100G
                        4x10G, 1x25G, 1x10G
1/52  N/A   Ethernet60  1x100G, 1x40G, 2x50G, 1x50G, 4x25G,       1x100G
                        4x10G, 1x25G, 1x10G
1/53  N/A   Ethernet64  1x100G, 1x40G, 2x50G, 1x50G, 4x25G,       1x100G
                        4x10G, 1x25G, 1x10G
1/54  N/A   Ethernet68  1x100G, 1x40G, 2x50G, 1x50G, 4x25G,       1x100G
                        4x10G, 1x25G, 1x10G
1/55  N/A   Ethernet72  1x100G, 1x40G, 2x50G, 1x50G, 4x25G,       1x100G
                        4x10G, 1x25G, 1x10G
1/56  N/A   Ethernet76  1x100G, 1x40G, 2x50G, 1x50G, 4x25G,       1x100G
                        4x10G, 1x25G, 1x10G
s5248-01# show interface breakout
-----------------------------------------------
Port  Breakout Mode  Status        Interfaces
-----------------------------------------------
1/55  4x25G          Completed     Ethernet72
                                   Ethernet73
                                   Ethernet74
                                   Ethernet75
Standalone ports without breakout support

For some ports, there are no breakouts and port groups, e.g. Ethernet48-52 on Accton-AS4630-54NPE. In this case, it seems like there is no easy way to determine the supported port speed and the default one. It could be done by trying to set port speed on such port going through the full list of accepted values and checking which ones will fail.

as4630-01(config-if-Ethernet48)# speed
  <10/100/1000/2500/5000/10000/20000/25000/40000/50000/100000/200000/400000>  Speed config of the interface
  auto                                                                        Enable auto-negotiation

as4630-01(config-if-Ethernet48)# speed 400000
%Error: Unsupported speed

Documentation

Index

Constants

This section is empty.

Variables

View Source
var CelesticaDS3000 = wiringapi.SwitchProfile{
	ObjectMeta: metav1.ObjectMeta{
		Name: "celestica-ds3000",
	},
	Spec: wiringapi.SwitchProfileSpec{
		DisplayName: "Celestica DS3000",
		Features: wiringapi.SwitchProfileFeatures{
			Subinterfaces: true,
			VXLAN:         true,
			ACLs:          true,
		},
		NOSType:  meta.NOSTypeSONiCBCMBase,
		Platform: "x86_64-cel_seastone_2-r0",
		Config:   wiringapi.SwitchProfileConfig{},
		Ports: map[string]wiringapi.SwitchProfilePort{
			"M1":    {NOSName: "Management0", Management: true, OniePortName: "eth0"},
			"E1/1":  {NOSName: "1/1", BaseNOSName: "Ethernet0", Label: "1", Profile: "QSFP28-100G"},
			"E1/2":  {NOSName: "1/2", BaseNOSName: "Ethernet4", Label: "2", Profile: "QSFP28-100G"},
			"E1/3":  {NOSName: "1/3", BaseNOSName: "Ethernet8", Label: "3", Profile: "QSFP28-100G"},
			"E1/4":  {NOSName: "1/4", BaseNOSName: "Ethernet12", Label: "4", Profile: "QSFP28-100G"},
			"E1/5":  {NOSName: "1/5", BaseNOSName: "Ethernet16", Label: "5", Profile: "QSFP28-100G"},
			"E1/6":  {NOSName: "1/6", BaseNOSName: "Ethernet20", Label: "6", Profile: "QSFP28-100G"},
			"E1/7":  {NOSName: "1/7", BaseNOSName: "Ethernet24", Label: "7", Profile: "QSFP28-100G"},
			"E1/8":  {NOSName: "1/8", BaseNOSName: "Ethernet28", Label: "8", Profile: "QSFP28-100G"},
			"E1/9":  {NOSName: "1/9", BaseNOSName: "Ethernet32", Label: "9", Profile: "QSFP28-100G"},
			"E1/10": {NOSName: "1/10", BaseNOSName: "Ethernet36", Label: "10", Profile: "QSFP28-100G"},
			"E1/11": {NOSName: "1/11", BaseNOSName: "Ethernet40", Label: "11", Profile: "QSFP28-100G"},
			"E1/12": {NOSName: "1/12", BaseNOSName: "Ethernet44", Label: "12", Profile: "QSFP28-100G"},
			"E1/13": {NOSName: "1/13", BaseNOSName: "Ethernet48", Label: "13", Profile: "QSFP28-100G"},
			"E1/14": {NOSName: "1/14", BaseNOSName: "Ethernet52", Label: "14", Profile: "QSFP28-100G"},
			"E1/15": {NOSName: "1/15", BaseNOSName: "Ethernet56", Label: "15", Profile: "QSFP28-100G"},
			"E1/16": {NOSName: "1/16", BaseNOSName: "Ethernet60", Label: "16", Profile: "QSFP28-100G"},
			"E1/17": {NOSName: "1/17", BaseNOSName: "Ethernet64", Label: "17", Profile: "QSFP28-100G"},
			"E1/18": {NOSName: "1/18", BaseNOSName: "Ethernet68", Label: "18", Profile: "QSFP28-100G"},
			"E1/19": {NOSName: "1/19", BaseNOSName: "Ethernet72", Label: "19", Profile: "QSFP28-100G"},
			"E1/20": {NOSName: "1/20", BaseNOSName: "Ethernet76", Label: "20", Profile: "QSFP28-100G"},
			"E1/21": {NOSName: "1/21", BaseNOSName: "Ethernet80", Label: "21", Profile: "QSFP28-100G"},
			"E1/22": {NOSName: "1/22", BaseNOSName: "Ethernet84", Label: "22", Profile: "QSFP28-100G"},
			"E1/23": {NOSName: "1/23", BaseNOSName: "Ethernet88", Label: "23", Profile: "QSFP28-100G"},
			"E1/24": {NOSName: "1/24", BaseNOSName: "Ethernet92", Label: "24", Profile: "QSFP28-100G"},
			"E1/25": {NOSName: "1/25", BaseNOSName: "Ethernet96", Label: "25", Profile: "QSFP28-100G"},
			"E1/26": {NOSName: "1/26", BaseNOSName: "Ethernet100", Label: "26", Profile: "QSFP28-100G"},
			"E1/27": {NOSName: "1/27", BaseNOSName: "Ethernet104", Label: "27", Profile: "QSFP28-100G"},
			"E1/28": {NOSName: "1/28", BaseNOSName: "Ethernet108", Label: "28", Profile: "QSFP28-100G"},
			"E1/29": {NOSName: "1/29", BaseNOSName: "Ethernet112", Label: "29", Profile: "QSFP28-100G"},
			"E1/30": {NOSName: "1/30", BaseNOSName: "Ethernet116", Label: "30", Profile: "QSFP28-100G"},
			"E1/31": {NOSName: "1/31", BaseNOSName: "Ethernet120", Label: "31", Profile: "QSFP28-100G"},
			"E1/32": {NOSName: "1/32", BaseNOSName: "Ethernet124", Label: "32", Profile: "QSFP28-100G"},
			"E1/33": {NOSName: "Ethernet128", Label: "33", Profile: "SFP28-10G"},
		},
		PortProfiles: map[string]wiringapi.SwitchProfilePortProfile{
			"SFP28-10G": {
				Speed: &wiringapi.SwitchProfilePortProfileSpeed{
					Default:   "10G",
					Supported: []string{"1G", "10G"},
				},
			},
			"QSFP28-100G": {
				Breakout: &wiringapi.SwitchProfilePortProfileBreakout{
					Default: "1x100G",
					Supported: map[string]wiringapi.SwitchProfilePortProfileBreakoutMode{
						"1x100G": {Offsets: []string{"0"}},
						"1x40G":  {Offsets: []string{"0"}},
						"4x25G":  {Offsets: []string{"0", "1", "2", "3"}},
						"4x10G":  {Offsets: []string{"0", "1", "2", "3"}},
					},
				},
			},
		},
	},
}
View Source
var CelesticaDS4000 = wiringapi.SwitchProfile{
	ObjectMeta: metav1.ObjectMeta{
		Name: "celestica-ds4000",
	},
	Spec: wiringapi.SwitchProfileSpec{
		DisplayName: "Celestica DS4000",
		Features: wiringapi.SwitchProfileFeatures{
			Subinterfaces: false,
			VXLAN:         false,
			ACLs:          true,
		},
		NOSType:  meta.NOSTypeSONiCBCMBase,
		Platform: "x86_64-cel_silverstone-r0",
		Config:   wiringapi.SwitchProfileConfig{},
		Ports: map[string]wiringapi.SwitchProfilePort{
			"M1":    {NOSName: "Management0", Management: true, OniePortName: "eth0"},
			"E1/1":  {NOSName: "1/1", BaseNOSName: "Ethernet0", Label: "1", Profile: "QSFPDD-400G"},
			"E1/2":  {NOSName: "1/2", BaseNOSName: "Ethernet8", Label: "2", Profile: "QSFPDD-400G"},
			"E1/3":  {NOSName: "1/3", BaseNOSName: "Ethernet16", Label: "3", Profile: "QSFPDD-400G"},
			"E1/4":  {NOSName: "1/4", BaseNOSName: "Ethernet24", Label: "4", Profile: "QSFPDD-400G"},
			"E1/5":  {NOSName: "1/5", BaseNOSName: "Ethernet32", Label: "5", Profile: "QSFPDD-400G"},
			"E1/6":  {NOSName: "1/6", BaseNOSName: "Ethernet40", Label: "6", Profile: "QSFPDD-400G"},
			"E1/7":  {NOSName: "1/7", BaseNOSName: "Ethernet48", Label: "7", Profile: "QSFPDD-400G"},
			"E1/8":  {NOSName: "1/8", BaseNOSName: "Ethernet56", Label: "8", Profile: "QSFPDD-400G"},
			"E1/9":  {NOSName: "1/9", BaseNOSName: "Ethernet64", Label: "9", Profile: "QSFPDD-400G"},
			"E1/10": {NOSName: "1/10", BaseNOSName: "Ethernet72", Label: "10", Profile: "QSFPDD-400G"},
			"E1/11": {NOSName: "1/11", BaseNOSName: "Ethernet80", Label: "11", Profile: "QSFPDD-400G"},
			"E1/12": {NOSName: "1/12", BaseNOSName: "Ethernet88", Label: "12", Profile: "QSFPDD-400G"},
			"E1/13": {NOSName: "1/13", BaseNOSName: "Ethernet96", Label: "13", Profile: "QSFPDD-400G"},
			"E1/14": {NOSName: "1/14", BaseNOSName: "Ethernet104", Label: "14", Profile: "QSFPDD-400G"},
			"E1/15": {NOSName: "1/15", BaseNOSName: "Ethernet112", Label: "15", Profile: "QSFPDD-400G"},
			"E1/16": {NOSName: "1/16", BaseNOSName: "Ethernet120", Label: "16", Profile: "QSFPDD-400G"},
			"E1/17": {NOSName: "1/17", BaseNOSName: "Ethernet128", Label: "17", Profile: "QSFPDD-400G"},
			"E1/18": {NOSName: "1/18", BaseNOSName: "Ethernet136", Label: "18", Profile: "QSFPDD-400G"},
			"E1/19": {NOSName: "1/19", BaseNOSName: "Ethernet144", Label: "19", Profile: "QSFPDD-400G"},
			"E1/20": {NOSName: "1/20", BaseNOSName: "Ethernet152", Label: "20", Profile: "QSFPDD-400G"},
			"E1/21": {NOSName: "1/21", BaseNOSName: "Ethernet160", Label: "21", Profile: "QSFPDD-400G"},
			"E1/22": {NOSName: "1/22", BaseNOSName: "Ethernet168", Label: "22", Profile: "QSFPDD-400G"},
			"E1/23": {NOSName: "1/23", BaseNOSName: "Ethernet176", Label: "23", Profile: "QSFPDD-400G"},
			"E1/24": {NOSName: "1/24", BaseNOSName: "Ethernet184", Label: "24", Profile: "QSFPDD-400G"},
			"E1/25": {NOSName: "1/25", BaseNOSName: "Ethernet192", Label: "25", Profile: "QSFPDD-400G"},
			"E1/26": {NOSName: "1/26", BaseNOSName: "Ethernet200", Label: "26", Profile: "QSFPDD-400G"},
			"E1/27": {NOSName: "1/27", BaseNOSName: "Ethernet208", Label: "27", Profile: "QSFPDD-400G"},
			"E1/28": {NOSName: "1/28", BaseNOSName: "Ethernet216", Label: "28", Profile: "QSFPDD-400G"},
			"E1/29": {NOSName: "1/29", BaseNOSName: "Ethernet224", Label: "29", Profile: "QSFPDD-400G"},
			"E1/30": {NOSName: "1/30", BaseNOSName: "Ethernet232", Label: "30", Profile: "QSFPDD-400G"},
			"E1/31": {NOSName: "1/31", BaseNOSName: "Ethernet240", Label: "31", Profile: "QSFPDD-400G"},
			"E1/32": {NOSName: "1/32", BaseNOSName: "Ethernet248", Label: "32", Profile: "QSFPDD-400G"},
			"E1/33": {NOSName: "Ethernet256", Label: "33", Profile: "SFP28-10G"},
		},
		PortProfiles: map[string]wiringapi.SwitchProfilePortProfile{
			"SFP28-10G": {
				Speed: &wiringapi.SwitchProfilePortProfileSpeed{
					Default:   "10G",
					Supported: []string{"1G", "10G"},
				},
			},
			"QSFPDD-400G": {
				Breakout: &wiringapi.SwitchProfilePortProfileBreakout{
					Default: "1x400G",
					Supported: map[string]wiringapi.SwitchProfilePortProfileBreakoutMode{
						"1x400G": {Offsets: []string{"0"}},
						"1x100G": {Offsets: []string{"0"}},
						"1x40G":  {Offsets: []string{"0"}},
						"1x25G":  {Offsets: []string{"0"}},
						"1x10G":  {Offsets: []string{"0"}},
						"2x200G": {Offsets: []string{"0", "4"}},
						"2x100G": {Offsets: []string{"0", "4"}},
						"2x40G":  {Offsets: []string{"0", "4"}},
						"4x100G": {Offsets: []string{"0", "2", "4", "6"}},
						"4x25G":  {Offsets: []string{"0", "1", "2", "3"}},
						"4x10G":  {Offsets: []string{"0", "1", "2", "3"}},
						"8x50G":  {Offsets: []string{"0", "1", "2", "3", "4", "5", "6", "7"}},
						"8x25G":  {Offsets: []string{"0", "1", "2", "3", "4", "5", "6", "7"}},
						"8x10G":  {Offsets: []string{"0", "1", "2", "3", "4", "5", "6", "7"}},
					},
				},
			},
		},
	},
}
View Source
var DellS5232FON = wiringapi.SwitchProfile{
	ObjectMeta: metav1.ObjectMeta{
		Name: "dell-s5232f-on",
	},
	Spec: wiringapi.SwitchProfileSpec{
		DisplayName: "Dell S5232F-ON",
		Features: wiringapi.SwitchProfileFeatures{
			Subinterfaces: true,
			VXLAN:         true,
			ACLs:          true,
		},
		NOSType:  meta.NOSTypeSONiCBCMBase,
		Platform: "x86_64-dellemc_s5232f_c3538-r0",
		Config:   wiringapi.SwitchProfileConfig{},
		Ports: map[string]wiringapi.SwitchProfilePort{
			"M1":    {NOSName: "Management0", Management: true, OniePortName: "eth0"},
			"E1/1":  {NOSName: "1/1", BaseNOSName: "Ethernet0", Label: "1", Profile: "QSFP28-100G"},
			"E1/2":  {NOSName: "1/2", BaseNOSName: "Ethernet4", Label: "2", Profile: "QSFP28-100G"},
			"E1/3":  {NOSName: "1/3", BaseNOSName: "Ethernet8", Label: "3", Profile: "QSFP28-100G"},
			"E1/4":  {NOSName: "1/4", BaseNOSName: "Ethernet12", Label: "4", Profile: "QSFP28-100G"},
			"E1/5":  {NOSName: "1/5", BaseNOSName: "Ethernet16", Label: "5", Profile: "QSFP28-100G"},
			"E1/6":  {NOSName: "1/6", BaseNOSName: "Ethernet20", Label: "6", Profile: "QSFP28-100G"},
			"E1/7":  {NOSName: "1/7", BaseNOSName: "Ethernet24", Label: "7", Profile: "QSFP28-100G"},
			"E1/8":  {NOSName: "1/8", BaseNOSName: "Ethernet28", Label: "8", Profile: "QSFP28-100G"},
			"E1/9":  {NOSName: "1/9", BaseNOSName: "Ethernet32", Label: "9", Profile: "QSFP28-100G"},
			"E1/10": {NOSName: "1/10", BaseNOSName: "Ethernet36", Label: "10", Profile: "QSFP28-100G"},
			"E1/11": {NOSName: "1/11", BaseNOSName: "Ethernet40", Label: "11", Profile: "QSFP28-100G"},
			"E1/12": {NOSName: "1/12", BaseNOSName: "Ethernet44", Label: "12", Profile: "QSFP28-100G"},
			"E1/13": {NOSName: "1/13", BaseNOSName: "Ethernet48", Label: "13", Profile: "QSFP28-100G"},
			"E1/14": {NOSName: "1/14", BaseNOSName: "Ethernet52", Label: "14", Profile: "QSFP28-100G"},
			"E1/15": {NOSName: "1/15", BaseNOSName: "Ethernet56", Label: "15", Profile: "QSFP28-100G"},
			"E1/16": {NOSName: "1/16", BaseNOSName: "Ethernet60", Label: "16", Profile: "QSFP28-100G"},
			"E1/17": {NOSName: "1/17", BaseNOSName: "Ethernet64", Label: "17", Profile: "QSFP28-100G"},
			"E1/18": {NOSName: "1/18", BaseNOSName: "Ethernet68", Label: "18", Profile: "QSFP28-100G"},
			"E1/19": {NOSName: "1/19", BaseNOSName: "Ethernet72", Label: "19", Profile: "QSFP28-100G"},
			"E1/20": {NOSName: "1/20", BaseNOSName: "Ethernet76", Label: "20", Profile: "QSFP28-100G"},
			"E1/21": {NOSName: "1/21", BaseNOSName: "Ethernet80", Label: "21", Profile: "QSFP28-100G"},
			"E1/22": {NOSName: "1/22", BaseNOSName: "Ethernet84", Label: "22", Profile: "QSFP28-100G"},
			"E1/23": {NOSName: "1/23", BaseNOSName: "Ethernet88", Label: "23", Profile: "QSFP28-100G"},
			"E1/24": {NOSName: "1/24", BaseNOSName: "Ethernet92", Label: "24", Profile: "QSFP28-100G"},
			"E1/25": {NOSName: "1/25", BaseNOSName: "Ethernet96", Label: "25", Profile: "QSFP28-100G"},
			"E1/26": {NOSName: "1/26", BaseNOSName: "Ethernet100", Label: "26", Profile: "QSFP28-100G"},
			"E1/27": {NOSName: "1/27", BaseNOSName: "Ethernet104", Label: "27", Profile: "QSFP28-100G"},
			"E1/28": {NOSName: "1/28", BaseNOSName: "Ethernet108", Label: "28", Profile: "QSFP28-100G"},
			"E1/29": {NOSName: "1/29", BaseNOSName: "Ethernet112", Label: "29", Profile: "QSFP28-100G"},
			"E1/30": {NOSName: "1/30", BaseNOSName: "Ethernet116", Label: "30", Profile: "QSFP28-100G"},
			"E1/31": {NOSName: "1/31", BaseNOSName: "Ethernet120", Label: "31", Profile: "QSFP28-100G"},
			"E1/32": {NOSName: "Ethernet124", Label: "32", Profile: "QSFP28-100G-nb"},
			"E1/33": {NOSName: "Ethernet128", Label: "33", Profile: "SFP28-10G"},
			"E1/34": {NOSName: "Ethernet129", Label: "34", Profile: "SFP28-10G"},
		},
		PortProfiles: map[string]wiringapi.SwitchProfilePortProfile{
			"SFP28-10G": {
				Speed: &wiringapi.SwitchProfilePortProfileSpeed{
					Default:   "10G",
					Supported: []string{"1G", "10G"},
				},
			},
			"QSFP28-100G-nb": {
				Speed: &wiringapi.SwitchProfilePortProfileSpeed{
					Default:   "100G",
					Supported: []string{"40G", "100G"},
				},
			},
			"QSFP28-100G": {
				Breakout: &wiringapi.SwitchProfilePortProfileBreakout{
					Default: "1x100G",
					Supported: map[string]wiringapi.SwitchProfilePortProfileBreakoutMode{
						"1x100G": {Offsets: []string{"0"}},
						"1x40G":  {Offsets: []string{"0"}},
						"2x50G":  {Offsets: []string{"0", "2"}},
						"1x50G":  {Offsets: []string{"0"}},
						"4x25G":  {Offsets: []string{"0", "1", "2", "3"}},
						"4x10G":  {Offsets: []string{"0", "1", "2", "3"}},
						"1x25G":  {Offsets: []string{"0"}},
						"1x10G":  {Offsets: []string{"0"}},
					},
				},
			},
		},
	},
}
View Source
var DellS5248FON = wiringapi.SwitchProfile{
	ObjectMeta: metav1.ObjectMeta{
		Name: "dell-s5248f-on",
	},
	Spec: wiringapi.SwitchProfileSpec{
		DisplayName: "Dell S5248F-ON",
		Features: wiringapi.SwitchProfileFeatures{
			Subinterfaces: true,
			VXLAN:         true,
			ACLs:          true,
		},
		NOSType:  meta.NOSTypeSONiCBCMBase,
		Platform: "x86_64-dellemc_s5248f_c3538-r0",
		Config:   wiringapi.SwitchProfileConfig{},
		Ports: map[string]wiringapi.SwitchProfilePort{
			"M1":    {NOSName: "Management0", Management: true, OniePortName: "eth0"},
			"E1/1":  {NOSName: "Ethernet0", Label: "1", Group: "1"},
			"E1/2":  {NOSName: "Ethernet1", Label: "2", Group: "1"},
			"E1/3":  {NOSName: "Ethernet2", Label: "3", Group: "1"},
			"E1/4":  {NOSName: "Ethernet3", Label: "4", Group: "1"},
			"E1/5":  {NOSName: "Ethernet4", Label: "5", Group: "2"},
			"E1/6":  {NOSName: "Ethernet5", Label: "6", Group: "2"},
			"E1/7":  {NOSName: "Ethernet6", Label: "7", Group: "2"},
			"E1/8":  {NOSName: "Ethernet7", Label: "8", Group: "2"},
			"E1/9":  {NOSName: "Ethernet8", Label: "9", Group: "3"},
			"E1/10": {NOSName: "Ethernet9", Label: "10", Group: "3"},
			"E1/11": {NOSName: "Ethernet10", Label: "11", Group: "3"},
			"E1/12": {NOSName: "Ethernet11", Label: "12", Group: "3"},
			"E1/13": {NOSName: "Ethernet12", Label: "13", Group: "4"},
			"E1/14": {NOSName: "Ethernet13", Label: "14", Group: "4"},
			"E1/15": {NOSName: "Ethernet14", Label: "15", Group: "4"},
			"E1/16": {NOSName: "Ethernet15", Label: "16", Group: "4"},
			"E1/17": {NOSName: "Ethernet16", Label: "17", Group: "5"},
			"E1/18": {NOSName: "Ethernet17", Label: "18", Group: "5"},
			"E1/19": {NOSName: "Ethernet18", Label: "19", Group: "5"},
			"E1/20": {NOSName: "Ethernet19", Label: "20", Group: "5"},
			"E1/21": {NOSName: "Ethernet20", Label: "21", Group: "6"},
			"E1/22": {NOSName: "Ethernet21", Label: "22", Group: "6"},
			"E1/23": {NOSName: "Ethernet22", Label: "23", Group: "6"},
			"E1/24": {NOSName: "Ethernet23", Label: "24", Group: "6"},
			"E1/25": {NOSName: "Ethernet24", Label: "25", Group: "7"},
			"E1/26": {NOSName: "Ethernet25", Label: "26", Group: "7"},
			"E1/27": {NOSName: "Ethernet26", Label: "27", Group: "7"},
			"E1/28": {NOSName: "Ethernet27", Label: "28", Group: "7"},
			"E1/29": {NOSName: "Ethernet28", Label: "29", Group: "8"},
			"E1/30": {NOSName: "Ethernet29", Label: "30", Group: "8"},
			"E1/31": {NOSName: "Ethernet30", Label: "31", Group: "8"},
			"E1/32": {NOSName: "Ethernet31", Label: "32", Group: "8"},
			"E1/33": {NOSName: "Ethernet32", Label: "33", Group: "9"},
			"E1/34": {NOSName: "Ethernet33", Label: "34", Group: "9"},
			"E1/35": {NOSName: "Ethernet34", Label: "35", Group: "9"},
			"E1/36": {NOSName: "Ethernet35", Label: "36", Group: "9"},
			"E1/37": {NOSName: "Ethernet36", Label: "37", Group: "10"},
			"E1/38": {NOSName: "Ethernet37", Label: "38", Group: "10"},
			"E1/39": {NOSName: "Ethernet38", Label: "39", Group: "10"},
			"E1/40": {NOSName: "Ethernet39", Label: "40", Group: "10"},
			"E1/41": {NOSName: "Ethernet40", Label: "41", Group: "11"},
			"E1/42": {NOSName: "Ethernet41", Label: "42", Group: "11"},
			"E1/43": {NOSName: "Ethernet42", Label: "43", Group: "11"},
			"E1/44": {NOSName: "Ethernet43", Label: "44", Group: "11"},
			"E1/45": {NOSName: "Ethernet44", Label: "45", Group: "12"},
			"E1/46": {NOSName: "Ethernet45", Label: "46", Group: "12"},
			"E1/47": {NOSName: "Ethernet46", Label: "47", Group: "12"},
			"E1/48": {NOSName: "Ethernet47", Label: "48", Group: "12"},
			"E1/49": {NOSName: "1/49", BaseNOSName: "Ethernet48", Label: "49", Profile: "QSFP28-100G"},
			"E1/50": {NOSName: "1/50", BaseNOSName: "Ethernet52", Label: "50", Profile: "QSFP28-100G"},
			"E1/51": {NOSName: "1/51", BaseNOSName: "Ethernet56", Label: "51", Profile: "QSFP28-100G"},
			"E1/52": {NOSName: "1/52", BaseNOSName: "Ethernet60", Label: "52", Profile: "QSFP28-100G"},
			"E1/53": {NOSName: "1/53", BaseNOSName: "Ethernet64", Label: "53", Profile: "QSFP28-100G"},
			"E1/54": {NOSName: "1/54", BaseNOSName: "Ethernet68", Label: "54", Profile: "QSFP28-100G"},
			"E1/55": {NOSName: "1/55", BaseNOSName: "Ethernet72", Label: "55", Profile: "QSFP28-100G"},
			"E1/56": {NOSName: "1/56", BaseNOSName: "Ethernet76", Label: "56", Profile: "QSFP28-100G"},
		},
		PortGroups: map[string]wiringapi.SwitchProfilePortGroup{
			"1": {
				NOSName: "1",
				Profile: "SFP28-25G",
			},
			"2": {
				NOSName: "2",
				Profile: "SFP28-25G",
			},
			"3": {
				NOSName: "3",
				Profile: "SFP28-25G",
			},
			"4": {
				NOSName: "4",
				Profile: "SFP28-25G",
			},
			"5": {
				NOSName: "5",
				Profile: "SFP28-25G",
			},
			"6": {
				NOSName: "6",
				Profile: "SFP28-25G",
			},
			"7": {
				NOSName: "7",
				Profile: "SFP28-25G",
			},
			"8": {
				NOSName: "8",
				Profile: "SFP28-25G",
			},
			"9": {
				NOSName: "9",
				Profile: "SFP28-25G",
			},
			"10": {
				NOSName: "10",
				Profile: "SFP28-25G",
			},
			"11": {
				NOSName: "11",
				Profile: "SFP28-25G",
			},
			"12": {
				NOSName: "12",
				Profile: "SFP28-25G",
			},
		},
		PortProfiles: map[string]wiringapi.SwitchProfilePortProfile{
			"SFP28-25G": {
				Speed: &wiringapi.SwitchProfilePortProfileSpeed{
					Default:   "25G",
					Supported: []string{"10G", "25G"},
				},
			},
			"QSFP28-100G": {
				Breakout: &wiringapi.SwitchProfilePortProfileBreakout{
					Default: "1x100G",
					Supported: map[string]wiringapi.SwitchProfilePortProfileBreakoutMode{
						"1x100G": {Offsets: []string{"0"}},
						"1x40G":  {Offsets: []string{"0"}},
						"2x50G":  {Offsets: []string{"0", "2"}},
						"1x50G":  {Offsets: []string{"0"}},
						"4x25G":  {Offsets: []string{"0", "1", "2", "3"}},
						"4x10G":  {Offsets: []string{"0", "1", "2", "3"}},
						"1x25G":  {Offsets: []string{"0"}},
						"1x10G":  {Offsets: []string{"0"}},
					},
				},
			},
		},
	},
}
View Source
var DellZ9332FON = wiringapi.SwitchProfile{
	ObjectMeta: metav1.ObjectMeta{
		Name: "dell-z9332f-on",
	},
	Spec: wiringapi.SwitchProfileSpec{
		DisplayName: "Dell Z9332F-ON",
		Features: wiringapi.SwitchProfileFeatures{
			Subinterfaces: false,
			VXLAN:         false,
			ACLs:          true,
		},
		NOSType:  meta.NOSTypeSONiCBCMBase,
		Platform: "x86_64-dellemc_z9332f_d1508-r0",
		Config:   wiringapi.SwitchProfileConfig{},
		Ports: map[string]wiringapi.SwitchProfilePort{
			"M1":    {NOSName: "Management0", Management: true, OniePortName: "eth0"},
			"E1/1":  {NOSName: "1/1", BaseNOSName: "Ethernet0", Label: "1", Profile: "QSFPDD-400G"},
			"E1/2":  {NOSName: "1/2", BaseNOSName: "Ethernet8", Label: "2", Profile: "QSFPDD-400G"},
			"E1/3":  {NOSName: "1/3", BaseNOSName: "Ethernet16", Label: "3", Profile: "QSFPDD-400G"},
			"E1/4":  {NOSName: "1/4", BaseNOSName: "Ethernet24", Label: "4", Profile: "QSFPDD-400G"},
			"E1/5":  {NOSName: "1/5", BaseNOSName: "Ethernet32", Label: "5", Profile: "QSFPDD-400G"},
			"E1/6":  {NOSName: "1/6", BaseNOSName: "Ethernet40", Label: "6", Profile: "QSFPDD-400G"},
			"E1/7":  {NOSName: "1/7", BaseNOSName: "Ethernet48", Label: "7", Profile: "QSFPDD-400G"},
			"E1/8":  {NOSName: "1/8", BaseNOSName: "Ethernet56", Label: "8", Profile: "QSFPDD-400G"},
			"E1/9":  {NOSName: "1/9", BaseNOSName: "Ethernet64", Label: "9", Profile: "QSFPDD-400G"},
			"E1/10": {NOSName: "1/10", BaseNOSName: "Ethernet72", Label: "10", Profile: "QSFPDD-400G"},
			"E1/11": {NOSName: "1/11", BaseNOSName: "Ethernet80", Label: "11", Profile: "QSFPDD-400G"},
			"E1/12": {NOSName: "1/12", BaseNOSName: "Ethernet88", Label: "12", Profile: "QSFPDD-400G"},
			"E1/13": {NOSName: "1/13", BaseNOSName: "Ethernet96", Label: "13", Profile: "QSFPDD-400G"},
			"E1/14": {NOSName: "1/14", BaseNOSName: "Ethernet104", Label: "14", Profile: "QSFPDD-400G"},
			"E1/15": {NOSName: "1/15", BaseNOSName: "Ethernet112", Label: "15", Profile: "QSFPDD-400G"},
			"E1/16": {NOSName: "1/16", BaseNOSName: "Ethernet120", Label: "16", Profile: "QSFPDD-400G"},
			"E1/17": {NOSName: "1/17", BaseNOSName: "Ethernet128", Label: "17", Profile: "QSFPDD-400G"},
			"E1/18": {NOSName: "1/18", BaseNOSName: "Ethernet136", Label: "18", Profile: "QSFPDD-400G"},
			"E1/19": {NOSName: "1/19", BaseNOSName: "Ethernet144", Label: "19", Profile: "QSFPDD-400G"},
			"E1/20": {NOSName: "1/20", BaseNOSName: "Ethernet152", Label: "20", Profile: "QSFPDD-400G"},
			"E1/21": {NOSName: "1/21", BaseNOSName: "Ethernet160", Label: "21", Profile: "QSFPDD-400G"},
			"E1/22": {NOSName: "1/22", BaseNOSName: "Ethernet168", Label: "22", Profile: "QSFPDD-400G"},
			"E1/23": {NOSName: "1/23", BaseNOSName: "Ethernet176", Label: "23", Profile: "QSFPDD-400G"},
			"E1/24": {NOSName: "1/24", BaseNOSName: "Ethernet184", Label: "24", Profile: "QSFPDD-400G"},
			"E1/25": {NOSName: "1/25", BaseNOSName: "Ethernet192", Label: "25", Profile: "QSFPDD-400G"},
			"E1/26": {NOSName: "1/26", BaseNOSName: "Ethernet200", Label: "26", Profile: "QSFPDD-400G"},
			"E1/27": {NOSName: "1/27", BaseNOSName: "Ethernet208", Label: "27", Profile: "QSFPDD-400G"},
			"E1/28": {NOSName: "1/28", BaseNOSName: "Ethernet216", Label: "28", Profile: "QSFPDD-400G"},
			"E1/29": {NOSName: "1/29", BaseNOSName: "Ethernet224", Label: "29", Profile: "QSFPDD-400G"},
			"E1/30": {NOSName: "1/30", BaseNOSName: "Ethernet232", Label: "30", Profile: "QSFPDD-400G"},
			"E1/31": {NOSName: "1/31", BaseNOSName: "Ethernet240", Label: "31", Profile: "QSFPDD-400G"},
			"E1/32": {NOSName: "1/32", BaseNOSName: "Ethernet248", Label: "32", Profile: "QSFPDD-400G"},
			"E1/33": {NOSName: "Ethernet256", Label: "M1", Profile: "SFP28-10G"},
			"E1/34": {NOSName: "Ethernet257", Label: "M2", Profile: "SFP28-10G"},
		},
		PortProfiles: map[string]wiringapi.SwitchProfilePortProfile{
			"SFP28-10G": {
				Speed: &wiringapi.SwitchProfilePortProfileSpeed{
					Default:   "10G",
					Supported: []string{"1G", "10G"},
				},
			},
			"QSFPDD-400G": {
				Breakout: &wiringapi.SwitchProfilePortProfileBreakout{
					Default: "1x400G",
					Supported: map[string]wiringapi.SwitchProfilePortProfileBreakoutMode{
						"1x400G": {Offsets: []string{"0"}},
						"1x200G": {Offsets: []string{"0"}},
						"1x100G": {Offsets: []string{"0"}},
						"1x40G":  {Offsets: []string{"0"}},
						"1x50G":  {Offsets: []string{"0"}},
						"1x25G":  {Offsets: []string{"0"}},
						"1x10G":  {Offsets: []string{"0"}},
						"2x200G": {Offsets: []string{"0", "4"}},
						"2x100G": {Offsets: []string{"0", "4"}},
						"2x40G":  {Offsets: []string{"0", "4"}},
						"4x100G": {Offsets: []string{"0", "2", "4", "6"}},
						"4x25G":  {Offsets: []string{"0", "1", "2", "3"}},
						"4x10G":  {Offsets: []string{"0", "1", "2", "3"}},
						"8x50G":  {Offsets: []string{"0", "1", "2", "3", "4", "5", "6", "7"}},
						"8x25G":  {Offsets: []string{"0", "1", "2", "3", "4", "5", "6", "7"}},
						"8x10G":  {Offsets: []string{"0", "1", "2", "3", "4", "5", "6", "7"}},
					},
				},
			},
		},
	},
}
View Source
var EdgecoreDCS203 = wiringapi.SwitchProfile{
	ObjectMeta: metav1.ObjectMeta{
		Name: "edgecore-dcs203",
	},
	Spec: wiringapi.SwitchProfileSpec{
		DisplayName: "Edgecore DCS203",
		OtherNames:  []string{"Edgecore AS7326-56X"},
		Features: wiringapi.SwitchProfileFeatures{
			Subinterfaces: true,
			VXLAN:         true,
			ACLs:          true,
		},
		NOSType:  meta.NOSTypeSONiCBCMBase,
		Platform: "x86_64-accton_as7326_56x-r0",
		Config:   wiringapi.SwitchProfileConfig{},
		Ports: map[string]wiringapi.SwitchProfilePort{
			"M1":    {NOSName: "Management0", Management: true, OniePortName: "eth0"},
			"E1/1":  {NOSName: "Ethernet0", Label: "1", Group: "1"},
			"E1/2":  {NOSName: "Ethernet1", Label: "2", Group: "1"},
			"E1/3":  {NOSName: "Ethernet2", Label: "3", Group: "1"},
			"E1/4":  {NOSName: "Ethernet3", Label: "4", Group: "1"},
			"E1/5":  {NOSName: "Ethernet4", Label: "5", Group: "1"},
			"E1/6":  {NOSName: "Ethernet5", Label: "6", Group: "1"},
			"E1/7":  {NOSName: "Ethernet6", Label: "7", Group: "1"},
			"E1/8":  {NOSName: "Ethernet7", Label: "8", Group: "1"},
			"E1/9":  {NOSName: "Ethernet8", Label: "9", Group: "1"},
			"E1/10": {NOSName: "Ethernet9", Label: "10", Group: "1"},
			"E1/11": {NOSName: "Ethernet10", Label: "11", Group: "1"},
			"E1/12": {NOSName: "Ethernet11", Label: "12", Group: "1"},
			"E1/13": {NOSName: "Ethernet12", Label: "13", Group: "2"},
			"E1/14": {NOSName: "Ethernet13", Label: "14", Group: "2"},
			"E1/15": {NOSName: "Ethernet14", Label: "15", Group: "2"},
			"E1/16": {NOSName: "Ethernet15", Label: "16", Group: "2"},
			"E1/17": {NOSName: "Ethernet16", Label: "17", Group: "2"},
			"E1/18": {NOSName: "Ethernet17", Label: "18", Group: "2"},
			"E1/19": {NOSName: "Ethernet18", Label: "19", Group: "2"},
			"E1/20": {NOSName: "Ethernet19", Label: "20", Group: "2"},
			"E1/21": {NOSName: "Ethernet20", Label: "21", Group: "2"},
			"E1/22": {NOSName: "Ethernet21", Label: "22", Group: "2"},
			"E1/23": {NOSName: "Ethernet22", Label: "23", Group: "2"},
			"E1/24": {NOSName: "Ethernet23", Label: "24", Group: "2"},
			"E1/25": {NOSName: "Ethernet24", Label: "25", Group: "3"},
			"E1/26": {NOSName: "Ethernet25", Label: "26", Group: "3"},
			"E1/27": {NOSName: "Ethernet26", Label: "27", Group: "3"},
			"E1/28": {NOSName: "Ethernet27", Label: "28", Group: "3"},
			"E1/29": {NOSName: "Ethernet28", Label: "29", Group: "3"},
			"E1/30": {NOSName: "Ethernet29", Label: "30", Group: "3"},
			"E1/31": {NOSName: "Ethernet30", Label: "31", Group: "3"},
			"E1/32": {NOSName: "Ethernet31", Label: "32", Group: "3"},
			"E1/33": {NOSName: "Ethernet32", Label: "33", Group: "3"},
			"E1/34": {NOSName: "Ethernet33", Label: "34", Group: "3"},
			"E1/35": {NOSName: "Ethernet34", Label: "35", Group: "3"},
			"E1/36": {NOSName: "Ethernet35", Label: "36", Group: "3"},
			"E1/37": {NOSName: "Ethernet36", Label: "37", Group: "4"},
			"E1/38": {NOSName: "Ethernet37", Label: "38", Group: "4"},
			"E1/39": {NOSName: "Ethernet38", Label: "39", Group: "4"},
			"E1/40": {NOSName: "Ethernet39", Label: "40", Group: "4"},
			"E1/41": {NOSName: "Ethernet40", Label: "41", Group: "4"},
			"E1/42": {NOSName: "Ethernet41", Label: "42", Group: "4"},
			"E1/43": {NOSName: "Ethernet42", Label: "43", Group: "4"},
			"E1/44": {NOSName: "Ethernet43", Label: "44", Group: "4"},
			"E1/45": {NOSName: "Ethernet44", Label: "45", Group: "4"},
			"E1/46": {NOSName: "Ethernet45", Label: "46", Group: "4"},
			"E1/47": {NOSName: "Ethernet46", Label: "47", Group: "4"},
			"E1/48": {NOSName: "Ethernet47", Label: "48", Group: "4"},
			"E1/49": {NOSName: "1/49", BaseNOSName: "Ethernet48", Label: "49", Profile: "QSFP28-100G"},
			"E1/50": {NOSName: "1/53", BaseNOSName: "Ethernet52", Label: "50", Profile: "QSFP28-100G"},
			"E1/51": {NOSName: "1/57", BaseNOSName: "Ethernet56", Label: "51", Profile: "QSFP28-100G"},
			"E1/52": {NOSName: "1/61", BaseNOSName: "Ethernet60", Label: "52", Profile: "QSFP28-100G"},
			"E1/53": {NOSName: "1/65", BaseNOSName: "Ethernet64", Label: "53", Profile: "QSFP28-100G"},
			"E1/54": {NOSName: "1/69", BaseNOSName: "Ethernet68", Label: "54", Profile: "QSFP28-100G"},
			"E1/55": {NOSName: "1/73", BaseNOSName: "Ethernet72", Label: "55", Profile: "QSFP28-100G"},
			"E1/56": {NOSName: "Ethernet76", Label: "56", Profile: "QSFP28-100G-nb"},
			"E1/57": {NOSName: "Ethernet80", Label: "57", Profile: "SFP28-10G"},
			"E1/58": {NOSName: "Ethernet81", Label: "58", Profile: "SFP28-10G"},
		},
		PortGroups: map[string]wiringapi.SwitchProfilePortGroup{
			"1": {
				NOSName: "1",
				Profile: "SFP28-25G",
			},
			"2": {
				NOSName: "2",
				Profile: "SFP28-25G",
			},
			"3": {
				NOSName: "3",
				Profile: "SFP28-25G",
			},
			"4": {
				NOSName: "4",
				Profile: "SFP28-25G",
			},
		},
		PortProfiles: map[string]wiringapi.SwitchProfilePortProfile{
			"SFP28-25G": {
				Speed: &wiringapi.SwitchProfilePortProfileSpeed{
					Default:   "25G",
					Supported: []string{"10G", "25G"},
				},
			},
			"SFP28-10G": {
				Speed: &wiringapi.SwitchProfilePortProfileSpeed{
					Default:   "10G",
					Supported: []string{"1G", "10G"},
				},
			},
			"QSFP28-100G-nb": {
				Speed: &wiringapi.SwitchProfilePortProfileSpeed{
					Default:   "100G",
					Supported: []string{"40G", "100G"},
				},
			},
			"QSFP28-100G": {
				Breakout: &wiringapi.SwitchProfilePortProfileBreakout{
					Default: "1x100G",
					Supported: map[string]wiringapi.SwitchProfilePortProfileBreakoutMode{
						"1x100G": {Offsets: []string{"0"}},
						"1x40G":  {Offsets: []string{"0"}},
						"4x25G":  {Offsets: []string{"0", "1", "2", "3"}},
						"4x10G":  {Offsets: []string{"0", "1", "2", "3"}},
					},
				},
			},
		},
	},
}
View Source
var EdgecoreDCS204 = wiringapi.SwitchProfile{
	ObjectMeta: metav1.ObjectMeta{
		Name: "edgecore-dcs204",
	},
	Spec: wiringapi.SwitchProfileSpec{
		DisplayName: "Edgecore DCS204",
		OtherNames:  []string{"Edgecore AS7726-32X"},
		Features: wiringapi.SwitchProfileFeatures{
			Subinterfaces: true,
			VXLAN:         true,
			ACLs:          true,
		},
		NOSType:  meta.NOSTypeSONiCBCMBase,
		Platform: "x86_64-accton_as7726_32x-r0",
		Config:   wiringapi.SwitchProfileConfig{},
		Ports: map[string]wiringapi.SwitchProfilePort{
			"M1":    {NOSName: "Management0", Management: true, OniePortName: "eth0"},
			"E1/1":  {NOSName: "1/1", BaseNOSName: "Ethernet0", Label: "1", Profile: "QSFP28-100G"},
			"E1/2":  {NOSName: "1/2", BaseNOSName: "Ethernet4", Label: "2", Profile: "QSFP28-100G"},
			"E1/3":  {NOSName: "1/3", BaseNOSName: "Ethernet8", Label: "3", Profile: "QSFP28-100G"},
			"E1/4":  {NOSName: "1/4", BaseNOSName: "Ethernet12", Label: "4", Profile: "QSFP28-100G"},
			"E1/5":  {NOSName: "1/5", BaseNOSName: "Ethernet16", Label: "5", Profile: "QSFP28-100G"},
			"E1/6":  {NOSName: "1/6", BaseNOSName: "Ethernet20", Label: "6", Profile: "QSFP28-100G"},
			"E1/7":  {NOSName: "1/7", BaseNOSName: "Ethernet24", Label: "7", Profile: "QSFP28-100G"},
			"E1/8":  {NOSName: "1/8", BaseNOSName: "Ethernet28", Label: "8", Profile: "QSFP28-100G"},
			"E1/9":  {NOSName: "1/9", BaseNOSName: "Ethernet32", Label: "9", Profile: "QSFP28-100G"},
			"E1/10": {NOSName: "1/10", BaseNOSName: "Ethernet36", Label: "10", Profile: "QSFP28-100G"},
			"E1/11": {NOSName: "1/11", BaseNOSName: "Ethernet40", Label: "11", Profile: "QSFP28-100G"},
			"E1/12": {NOSName: "1/12", BaseNOSName: "Ethernet44", Label: "12", Profile: "QSFP28-100G"},
			"E1/13": {NOSName: "1/13", BaseNOSName: "Ethernet48", Label: "13", Profile: "QSFP28-100G"},
			"E1/14": {NOSName: "1/14", BaseNOSName: "Ethernet52", Label: "14", Profile: "QSFP28-100G"},
			"E1/15": {NOSName: "1/15", BaseNOSName: "Ethernet56", Label: "15", Profile: "QSFP28-100G"},
			"E1/16": {NOSName: "1/16", BaseNOSName: "Ethernet60", Label: "16", Profile: "QSFP28-100G"},
			"E1/17": {NOSName: "1/17", BaseNOSName: "Ethernet64", Label: "17", Profile: "QSFP28-100G"},
			"E1/18": {NOSName: "1/18", BaseNOSName: "Ethernet68", Label: "18", Profile: "QSFP28-100G"},
			"E1/19": {NOSName: "1/19", BaseNOSName: "Ethernet72", Label: "19", Profile: "QSFP28-100G"},
			"E1/20": {NOSName: "1/20", BaseNOSName: "Ethernet76", Label: "20", Profile: "QSFP28-100G"},
			"E1/21": {NOSName: "1/21", BaseNOSName: "Ethernet80", Label: "21", Profile: "QSFP28-100G"},
			"E1/22": {NOSName: "1/22", BaseNOSName: "Ethernet84", Label: "22", Profile: "QSFP28-100G"},
			"E1/23": {NOSName: "1/23", BaseNOSName: "Ethernet88", Label: "23", Profile: "QSFP28-100G"},
			"E1/24": {NOSName: "1/24", BaseNOSName: "Ethernet92", Label: "24", Profile: "QSFP28-100G"},
			"E1/25": {NOSName: "1/25", BaseNOSName: "Ethernet96", Label: "25", Profile: "QSFP28-100G"},
			"E1/26": {NOSName: "1/26", BaseNOSName: "Ethernet100", Label: "26", Profile: "QSFP28-100G"},
			"E1/27": {NOSName: "1/27", BaseNOSName: "Ethernet104", Label: "27", Profile: "QSFP28-100G"},
			"E1/28": {NOSName: "1/28", BaseNOSName: "Ethernet108", Label: "28", Profile: "QSFP28-100G"},
			"E1/29": {NOSName: "1/29", BaseNOSName: "Ethernet112", Label: "29", Profile: "QSFP28-100G"},
			"E1/30": {NOSName: "1/30", BaseNOSName: "Ethernet116", Label: "30", Profile: "QSFP28-100G"},
			"E1/31": {NOSName: "1/31", BaseNOSName: "Ethernet120", Label: "31", Profile: "QSFP28-100G"},
			"E1/32": {NOSName: "Ethernet124", Label: "32", Profile: "QSFP28-100G-nb"},
			"E1/33": {NOSName: "Ethernet128", Label: "33", Profile: "SFP28-10G"},
			"E1/34": {NOSName: "Ethernet129", Label: "34", Profile: "SFP28-10G"},
		},
		PortProfiles: map[string]wiringapi.SwitchProfilePortProfile{
			"SFP28-10G": {
				Speed: &wiringapi.SwitchProfilePortProfileSpeed{
					Default:   "10G",
					Supported: []string{"1G", "10G"},
				},
			},
			"QSFP28-100G-nb": {
				Speed: &wiringapi.SwitchProfilePortProfileSpeed{
					Default:   "100G",
					Supported: []string{"40G", "100G"},
				},
			},
			"QSFP28-100G": {
				Breakout: &wiringapi.SwitchProfilePortProfileBreakout{
					Default: "1x100G",
					Supported: map[string]wiringapi.SwitchProfilePortProfileBreakoutMode{
						"1x100G": {Offsets: []string{"0"}},
						"1x40G":  {Offsets: []string{"0"}},
						"2x50G":  {Offsets: []string{"0", "2"}},
						"1x50G":  {Offsets: []string{"0"}},
						"4x25G":  {Offsets: []string{"0", "1", "2", "3"}},
						"4x10G":  {Offsets: []string{"0", "1", "2", "3"}},
						"1x25G":  {Offsets: []string{"0"}},
						"1x10G":  {Offsets: []string{"0"}},
					},
				},
			},
		},
	},
}
View Source
var EdgecoreDCS501 = wiringapi.SwitchProfile{
	ObjectMeta: metav1.ObjectMeta{
		Name: "edgecore-dcs501",
	},
	Spec: wiringapi.SwitchProfileSpec{
		DisplayName: "Edgecore DCS501",
		OtherNames:  []string{"Edgecore AS7712-32X"},
		Features: wiringapi.SwitchProfileFeatures{
			Subinterfaces: false,
			VXLAN:         false,
			ACLs:          true,
		},
		NOSType:  meta.NOSTypeSONiCBCMBase,
		Platform: "x86_64-accton_as7712_32x-r0",
		Config:   wiringapi.SwitchProfileConfig{},
		Ports: map[string]wiringapi.SwitchProfilePort{
			"M1":    {NOSName: "Management0", Management: true, OniePortName: "eth0"},
			"E1/1":  {NOSName: "1/1", BaseNOSName: "Ethernet0", Label: "1", Profile: "QSFP28-100G"},
			"E1/2":  {NOSName: "1/2", BaseNOSName: "Ethernet4", Label: "2", Profile: "QSFP28-100G"},
			"E1/3":  {NOSName: "1/3", BaseNOSName: "Ethernet8", Label: "3", Profile: "QSFP28-100G"},
			"E1/4":  {NOSName: "1/4", BaseNOSName: "Ethernet12", Label: "4", Profile: "QSFP28-100G"},
			"E1/5":  {NOSName: "1/5", BaseNOSName: "Ethernet16", Label: "5", Profile: "QSFP28-100G"},
			"E1/6":  {NOSName: "1/6", BaseNOSName: "Ethernet20", Label: "6", Profile: "QSFP28-100G"},
			"E1/7":  {NOSName: "1/7", BaseNOSName: "Ethernet24", Label: "7", Profile: "QSFP28-100G"},
			"E1/8":  {NOSName: "1/8", BaseNOSName: "Ethernet28", Label: "8", Profile: "QSFP28-100G"},
			"E1/9":  {NOSName: "1/9", BaseNOSName: "Ethernet32", Label: "9", Profile: "QSFP28-100G"},
			"E1/10": {NOSName: "1/10", BaseNOSName: "Ethernet36", Label: "10", Profile: "QSFP28-100G"},
			"E1/11": {NOSName: "1/11", BaseNOSName: "Ethernet40", Label: "11", Profile: "QSFP28-100G"},
			"E1/12": {NOSName: "1/12", BaseNOSName: "Ethernet44", Label: "12", Profile: "QSFP28-100G"},
			"E1/13": {NOSName: "1/13", BaseNOSName: "Ethernet48", Label: "13", Profile: "QSFP28-100G"},
			"E1/14": {NOSName: "1/14", BaseNOSName: "Ethernet52", Label: "14", Profile: "QSFP28-100G"},
			"E1/15": {NOSName: "1/15", BaseNOSName: "Ethernet56", Label: "15", Profile: "QSFP28-100G"},
			"E1/16": {NOSName: "1/16", BaseNOSName: "Ethernet60", Label: "16", Profile: "QSFP28-100G"},
			"E1/17": {NOSName: "1/17", BaseNOSName: "Ethernet64", Label: "17", Profile: "QSFP28-100G"},
			"E1/18": {NOSName: "1/18", BaseNOSName: "Ethernet68", Label: "18", Profile: "QSFP28-100G"},
			"E1/19": {NOSName: "1/19", BaseNOSName: "Ethernet72", Label: "19", Profile: "QSFP28-100G"},
			"E1/20": {NOSName: "1/20", BaseNOSName: "Ethernet76", Label: "20", Profile: "QSFP28-100G"},
			"E1/21": {NOSName: "1/21", BaseNOSName: "Ethernet80", Label: "21", Profile: "QSFP28-100G"},
			"E1/22": {NOSName: "1/22", BaseNOSName: "Ethernet84", Label: "22", Profile: "QSFP28-100G"},
			"E1/23": {NOSName: "1/23", BaseNOSName: "Ethernet88", Label: "23", Profile: "QSFP28-100G"},
			"E1/24": {NOSName: "1/24", BaseNOSName: "Ethernet92", Label: "24", Profile: "QSFP28-100G"},
			"E1/25": {NOSName: "1/25", BaseNOSName: "Ethernet96", Label: "25", Profile: "QSFP28-100G"},
			"E1/26": {NOSName: "1/26", BaseNOSName: "Ethernet100", Label: "26", Profile: "QSFP28-100G"},
			"E1/27": {NOSName: "1/27", BaseNOSName: "Ethernet104", Label: "27", Profile: "QSFP28-100G"},
			"E1/28": {NOSName: "1/28", BaseNOSName: "Ethernet108", Label: "28", Profile: "QSFP28-100G"},
			"E1/29": {NOSName: "1/29", BaseNOSName: "Ethernet112", Label: "29", Profile: "QSFP28-100G"},
			"E1/30": {NOSName: "1/30", BaseNOSName: "Ethernet116", Label: "30", Profile: "QSFP28-100G"},
			"E1/31": {NOSName: "1/31", BaseNOSName: "Ethernet120", Label: "31", Profile: "QSFP28-100G"},
			"E1/32": {NOSName: "1/32", BaseNOSName: "Ethernet124", Label: "32", Profile: "QSFP28-100G"},
		},

		PortProfiles: map[string]wiringapi.SwitchProfilePortProfile{
			"QSFP28-100G": {
				Breakout: &wiringapi.SwitchProfilePortProfileBreakout{
					Default: "1x100G",
					Supported: map[string]wiringapi.SwitchProfilePortProfileBreakoutMode{
						"1x100G": {Offsets: []string{"0"}},
						"1x40G":  {Offsets: []string{"0"}},
						"4x25G":  {Offsets: []string{"0", "1", "2", "3"}},
						"4x10G":  {Offsets: []string{"0", "1", "2", "3"}},
					},
				},
			},
		},
	},
}
View Source
var EdgecoreEPS203 = wiringapi.SwitchProfile{
	ObjectMeta: metav1.ObjectMeta{
		Name: "edgecore-eps203",
	},
	Spec: wiringapi.SwitchProfileSpec{
		DisplayName: "Edgecore EPS203",
		OtherNames:  []string{"Edgecore AS4630-54NPE"},
		Features: wiringapi.SwitchProfileFeatures{
			Subinterfaces: false,
			VXLAN:         true,
			ACLs:          true,
		},
		NOSType:  meta.NOSTypeSONiCBCMCampus,
		Platform: "x86_64-accton_as4630_54npe-r0",
		Config: wiringapi.SwitchProfileConfig{
			MaxPathsEBGP: 16,
		},
		Ports: map[string]wiringapi.SwitchProfilePort{
			"M1":    {NOSName: "Management0", Management: true, OniePortName: "eth0"},
			"E1/1":  {NOSName: "Ethernet0", Label: "1", Profile: "RJ45-2.5G"},
			"E1/2":  {NOSName: "Ethernet1", Label: "2", Profile: "RJ45-2.5G"},
			"E1/3":  {NOSName: "Ethernet2", Label: "3", Profile: "RJ45-2.5G"},
			"E1/4":  {NOSName: "Ethernet3", Label: "4", Profile: "RJ45-2.5G"},
			"E1/5":  {NOSName: "Ethernet4", Label: "5", Profile: "RJ45-2.5G"},
			"E1/6":  {NOSName: "Ethernet5", Label: "6", Profile: "RJ45-2.5G"},
			"E1/7":  {NOSName: "Ethernet6", Label: "7", Profile: "RJ45-2.5G"},
			"E1/8":  {NOSName: "Ethernet7", Label: "8", Profile: "RJ45-2.5G"},
			"E1/9":  {NOSName: "Ethernet8", Label: "9", Profile: "RJ45-2.5G"},
			"E1/10": {NOSName: "Ethernet9", Label: "10", Profile: "RJ45-2.5G"},
			"E1/11": {NOSName: "Ethernet10", Label: "11", Profile: "RJ45-2.5G"},
			"E1/12": {NOSName: "Ethernet11", Label: "12", Profile: "RJ45-2.5G"},
			"E1/13": {NOSName: "Ethernet12", Label: "13", Profile: "RJ45-2.5G"},
			"E1/14": {NOSName: "Ethernet13", Label: "14", Profile: "RJ45-2.5G"},
			"E1/15": {NOSName: "Ethernet14", Label: "15", Profile: "RJ45-2.5G"},
			"E1/16": {NOSName: "Ethernet15", Label: "16", Profile: "RJ45-2.5G"},
			"E1/17": {NOSName: "Ethernet16", Label: "17", Profile: "RJ45-2.5G"},
			"E1/18": {NOSName: "Ethernet17", Label: "18", Profile: "RJ45-2.5G"},
			"E1/19": {NOSName: "Ethernet18", Label: "19", Profile: "RJ45-2.5G"},
			"E1/20": {NOSName: "Ethernet19", Label: "20", Profile: "RJ45-2.5G"},
			"E1/21": {NOSName: "Ethernet20", Label: "21", Profile: "RJ45-2.5G"},
			"E1/22": {NOSName: "Ethernet21", Label: "22", Profile: "RJ45-2.5G"},
			"E1/23": {NOSName: "Ethernet22", Label: "23", Profile: "RJ45-2.5G"},
			"E1/24": {NOSName: "Ethernet23", Label: "24", Profile: "RJ45-2.5G"},
			"E1/25": {NOSName: "Ethernet24", Label: "25", Profile: "RJ45-2.5G"},
			"E1/26": {NOSName: "Ethernet25", Label: "26", Profile: "RJ45-2.5G"},
			"E1/27": {NOSName: "Ethernet26", Label: "27", Profile: "RJ45-2.5G"},
			"E1/28": {NOSName: "Ethernet27", Label: "28", Profile: "RJ45-2.5G"},
			"E1/29": {NOSName: "Ethernet28", Label: "29", Profile: "RJ45-2.5G"},
			"E1/30": {NOSName: "Ethernet29", Label: "30", Profile: "RJ45-2.5G"},
			"E1/31": {NOSName: "Ethernet30", Label: "31", Profile: "RJ45-2.5G"},
			"E1/32": {NOSName: "Ethernet31", Label: "32", Profile: "RJ45-2.5G"},
			"E1/33": {NOSName: "Ethernet32", Label: "33", Profile: "RJ45-2.5G"},
			"E1/34": {NOSName: "Ethernet33", Label: "34", Profile: "RJ45-2.5G"},
			"E1/35": {NOSName: "Ethernet34", Label: "35", Profile: "RJ45-2.5G"},
			"E1/36": {NOSName: "Ethernet35", Label: "36", Profile: "RJ45-2.5G"},
			"E1/37": {NOSName: "Ethernet36", Label: "37", Profile: "RJ45-10G"},
			"E1/38": {NOSName: "Ethernet37", Label: "38", Profile: "RJ45-10G"},
			"E1/39": {NOSName: "Ethernet38", Label: "39", Profile: "RJ45-10G"},
			"E1/40": {NOSName: "Ethernet39", Label: "40", Profile: "RJ45-10G"},
			"E1/41": {NOSName: "Ethernet40", Label: "41", Profile: "RJ45-10G"},
			"E1/42": {NOSName: "Ethernet41", Label: "42", Profile: "RJ45-10G"},
			"E1/43": {NOSName: "Ethernet42", Label: "43", Profile: "RJ45-10G"},
			"E1/44": {NOSName: "Ethernet43", Label: "44", Profile: "RJ45-10G"},
			"E1/45": {NOSName: "Ethernet44", Label: "45", Profile: "RJ45-10G"},
			"E1/46": {NOSName: "Ethernet45", Label: "46", Profile: "RJ45-10G"},
			"E1/47": {NOSName: "Ethernet46", Label: "47", Profile: "RJ45-10G"},
			"E1/48": {NOSName: "Ethernet47", Label: "48", Profile: "RJ45-10G"},
			"E1/49": {NOSName: "Ethernet48", Label: "49", Profile: "SFP28-25G"},
			"E1/50": {NOSName: "Ethernet49", Label: "50", Profile: "SFP28-25G"},
			"E1/51": {NOSName: "Ethernet50", Label: "51", Profile: "SFP28-25G"},
			"E1/52": {NOSName: "Ethernet51", Label: "52", Profile: "SFP28-25G"},
			"E1/53": {NOSName: "Ethernet52", Label: "53", Profile: "QSFP28-100G-nb"},
			"E1/54": {NOSName: "Ethernet56", Label: "54", Profile: "QSFP28-100G-nb"},
		},
		PortProfiles: map[string]wiringapi.SwitchProfilePortProfile{
			"RJ45-2.5G": {
				Speed: &wiringapi.SwitchProfilePortProfileSpeed{
					Default:   "2.5G",
					Supported: []string{"1G", "2.5G"},
				},
				AutoNegAllowed: true,
				AutoNegDefault: true,
			},
			"RJ45-10G": {
				Speed: &wiringapi.SwitchProfilePortProfileSpeed{
					Default:   "10G",
					Supported: []string{"1G", "10G"},
				},
				AutoNegAllowed: true,
				AutoNegDefault: true,
			},
			"SFP28-25G": {
				Speed: &wiringapi.SwitchProfilePortProfileSpeed{
					Default:   "25G",
					Supported: []string{"1G", "10G", "25G"},
				},
			},
			"QSFP28-100G-nb": {
				Speed: &wiringapi.SwitchProfilePortProfileSpeed{
					Default:   "100G",
					Supported: []string{"40G", "100G"},
				},
			},
		},
	},
}
View Source
var SupermicroSSEC4632SB = wiringapi.SwitchProfile{
	ObjectMeta: metav1.ObjectMeta{
		Name: "supermicro-sse-c4632sb",
	},
	Spec: wiringapi.SwitchProfileSpec{
		DisplayName: "Supermicro SSE-C4632SB",
		Features: wiringapi.SwitchProfileFeatures{
			Subinterfaces: true,
			VXLAN:         true,
			ACLs:          true,
		},
		NOSType:      CelesticaDS3000.Spec.NOSType,
		Platform:     CelesticaDS3000.Spec.Platform,
		Config:       CelesticaDS3000.Spec.Config,
		Ports:        CelesticaDS3000.Spec.Ports,
		PortGroups:   CelesticaDS3000.Spec.PortGroups,
		PortProfiles: CelesticaDS3000.Spec.PortProfiles,
	},
}
View Source
var VS = wiringapi.SwitchProfile{
	ObjectMeta: metav1.ObjectMeta{
		Name: meta.SwitchProfileVS,
	},
	Spec: wiringapi.SwitchProfileSpec{
		DisplayName: "Virtual Switch",
		Features: wiringapi.SwitchProfileFeatures{
			Subinterfaces: true,
			VXLAN:         true,
			ACLs:          false,
		},
		NOSType:  meta.NOSTypeSONiCBCMVS,
		Platform: "x86_64-kvm_x86_64-r0",
		Config: wiringapi.SwitchProfileConfig{
			MaxPathsEBGP: 16,
		},
		Ports:        DellS5248FON.Spec.Ports,
		PortGroups:   DellS5248FON.Spec.PortGroups,
		PortProfiles: DellS5248FON.Spec.PortProfiles,
	},
}

Functions

func SetupWithManager

func SetupWithManager(mgr ctrl.Manager, cfg *meta.FabricConfig, _ *librarian.Manager, profiles *Default) error

Types

type Default

type Default struct {
	// contains filtered or unexported fields
}

func NewDefaultSwitchProfiles

func NewDefaultSwitchProfiles() *Default

func (*Default) Enforce

func (d *Default) Enforce(ctx context.Context, kube client.Client, cfg *meta.FabricConfig, logs bool) error

func (*Default) Get

func (d *Default) Get(name string) *wiringapi.SwitchProfile

func (*Default) IsInitialized

func (d *Default) IsInitialized() bool

func (*Default) List

func (d *Default) List() []*wiringapi.SwitchProfile

func (*Default) Register

func (d *Default) Register(ctx context.Context, kube client.Reader, cfg *meta.FabricConfig, sp wiringapi.SwitchProfile) error

func (*Default) RegisterAll

func (d *Default) RegisterAll(ctx context.Context, kube client.Reader, cfg *meta.FabricConfig) error

type Initializer

type Initializer struct {
	Client   client.Client
	Cfg      *meta.FabricConfig
	Profiles *Default
}

func (*Initializer) NeedLeaderElection

func (i *Initializer) NeedLeaderElection() bool

func (*Initializer) Start

func (i *Initializer) Start(ctx context.Context) error

type Reconciler

type Reconciler struct {
	client.Client
	Scheme   *runtime.Scheme
	Cfg      *meta.FabricConfig
	Profiles *Default
}

func (*Reconciler) Reconcile

func (r *Reconciler) Reconcile(ctx context.Context, _ ctrl.Request) (ctrl.Result, error)

Jump to

Keyboard shortcuts

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