Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion cmd/generate.go
Original file line number Diff line number Diff line change
Expand Up @@ -55,7 +55,7 @@ var generateCmd = &cobra.Command{
return fmt.Errorf("failed to read version file:%w", err)
}

version, err := v.UnmarshalVersion(versionBytes)
version, err := v.GetVersion(versionBytes)
if err != nil {
return fmt.Errorf("failed to parse version file:%w", err)
}
Expand Down
22 changes: 11 additions & 11 deletions configdb/configdb.go
Original file line number Diff line number Diff line change
Expand Up @@ -45,7 +45,7 @@ type ConfigDB struct {
VXLANTunnelMap VXLANTunnelMap `json:"VXLAN_TUNNEL_MAP,omitempty"`
}

func GenerateConfigDB(input *values.Values, platform *p.Platform, environment *p.Environment, version *v.Version) (*ConfigDB, error) {
func GenerateConfigDB(input *values.Values, platform *p.Platform, environment *p.Environment, version v.Branch) (*ConfigDB, error) {
if input == nil {
return nil, fmt.Errorf("no input values provided")
}
Expand Down Expand Up @@ -284,7 +284,7 @@ func getInterfaces(ports values.Ports, bgpPorts []string, interconnects map[stri
return interfaces
}

func getLLDP(interval int, version *v.Version) *LLDP {
func getLLDP(interval int, version v.Branch) *LLDP {
if interval < 1 {
return nil
}
Expand All @@ -294,11 +294,11 @@ func getLLDP(interval int, version *v.Version) *LLDP {
HelloTime: fmt.Sprintf("%d", interval),
}

switch version.Branch {
case string(v.Branch202111):
switch version {
case v.Branch202111:
global202111 := LLDPGlobal202111(global)
lldp.Global202111 = &global202111
case string(v.Branch202211):
case v.Branch202211:
global202211 := LLDPGlobal202211(global)
lldp.Global202211 = &global202211
default:
Expand Down Expand Up @@ -504,8 +504,8 @@ func getPortsAndBreakouts(ports values.Ports, breakouts map[string]string, platf
return configPorts, configBreakouts, nil
}

func getSAG(sag *values.SAG, version *v.Version) (*SAG, error) {
if version.Branch != string(v.Branch202211) && sag != nil {
func getSAG(sag *values.SAG, version v.Branch) (*SAG, error) {
if version != v.Branch202211 && sag != nil {
return nil, fmt.Errorf("sag configuration only works with sonic versions from the ec202211_ecsonic branch")
}

Expand Down Expand Up @@ -533,13 +533,13 @@ func getVLANs(vlans []values.VLAN) map[string]VLAN {
return configVLANs
}

func getVLANInterfaces(vlans []values.VLAN, version *v.Version) (map[string]VLANInterface, error) {
func getVLANInterfaces(vlans []values.VLAN, version v.Branch) (map[string]VLANInterface, error) {
vlanInterfaces := make(map[string]VLANInterface)

for _, vlan := range vlans {
var vlanInterface VLANInterface

if version.Branch != string(v.Branch202211) && vlan.SAG != nil {
if version != v.Branch202211 && vlan.SAG != nil {
Comment thread
iljarotar marked this conversation as resolved.
return nil, fmt.Errorf("sag only works for sonic builds from branch ec202211_ecsonic")
}
var sag string
Expand Down Expand Up @@ -583,14 +583,14 @@ func getVLANMembers(vlans []values.VLAN) map[string]VLANMember {
return vlanMembers
}

func getVRRPInterfaces(vlans []values.VLAN, version *v.Version) (map[string]VRRPInterface, error) {
func getVRRPInterfaces(vlans []values.VLAN, version v.Branch) (map[string]VRRPInterface, error) {
vrrpInterfaces := make(map[string]VRRPInterface)
for _, vlan := range vlans {
if vlan.VRRP.Group == "" {
continue
}

if version.Branch != string(v.Branch202111) {
if version != v.Branch202111 {
return nil, fmt.Errorf("vrrp configuration only works with sonic versions from the ec202111 branch")
}

Expand Down
22 changes: 8 additions & 14 deletions configdb/configdb_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -557,25 +557,21 @@ func Test_getSAG(t *testing.T) {
tests := []struct {
name string
sag *values.SAG
version *v.Version
version v.Branch
want *SAG
wantErr bool
}{
{
name: "wrong version",
sag: &values.SAG{},
version: &v.Version{
Branch: string(v.Branch202111),
},
name: "wrong version",
sag: &values.SAG{},
version: v.Branch202111,
want: nil,
wantErr: true,
},
{
name: "empty mac",
sag: &values.SAG{},
version: &v.Version{
Branch: string(v.Branch202211),
},
name: "empty mac",
sag: &values.SAG{},
version: v.Branch202211,
want: nil,
wantErr: false,
},
Expand All @@ -584,9 +580,7 @@ func Test_getSAG(t *testing.T) {
sag: &values.SAG{
MAC: "11:11:11:11:11:11",
},
version: &v.Version{
Branch: string(v.Branch202211),
},
version: v.Branch202211,
want: &SAG{
SAGGlobal: SAGGlobal{
GatewayMAC: "11:11:11:11:11:11",
Expand Down
21 changes: 16 additions & 5 deletions version/version.go
Original file line number Diff line number Diff line change
@@ -1,24 +1,35 @@
package version

import "gopkg.in/yaml.v3"
import (
"strings"

"gopkg.in/yaml.v3"
)

type Branch string

const (
Branch202111 Branch = "ec202111"
Branch202211 Branch = "ec202211_ecsonic"
Branch202211 Branch = "ec202211"
)

type Version struct {
Branch string `yaml:"branch"`
}

func UnmarshalVersion(in []byte) (*Version, error) {
func GetVersion(in []byte) (Branch, error) {
var version Version
err := yaml.Unmarshal(in, &version)
if err != nil {
return nil, err
return "", err
}

if strings.Contains(version.Branch, string(Branch202111)) {
return Branch202111, nil
}
if strings.Contains(version.Branch, string(Branch202211)) {
return Branch202211, nil
}

return &version, nil
return "", nil
}