From 0a1d4b28d065c3f2381ea6c59e2c30e0f7fb14e6 Mon Sep 17 00:00:00 2001 From: justinejose91 Date: Fri, 6 Sep 2019 15:11:34 -0700 Subject: [PATCH 1/7] Fix for not showing description when description is configured as part of #show interface command. --- src/CLI/renderer/templates/show_interface.j2 | 5 +++++ src/CLI/renderer/templates/show_interface_id.j2 | 5 +++++ 2 files changed, 10 insertions(+) diff --git a/src/CLI/renderer/templates/show_interface.j2 b/src/CLI/renderer/templates/show_interface.j2 index c3c8e512f0..8e50d6fc74 100644 --- a/src/CLI/renderer/templates/show_interface.j2 +++ b/src/CLI/renderer/templates/show_interface.j2 @@ -4,6 +4,7 @@ {% set vars = {'admin_state': ""} %} {% set vars = {'oper_state': ""} %} {% set vars = {'index': ""} %} +{% set vars = {'description':""} %} {% set vars = {'mtu': ""} %} {% set vars = {'ipv4_src_pfx': ""} %} {% set vars = {'ipv6_src_pfx': ""} %} @@ -37,6 +38,7 @@ {% if vars.update({'admin_state':interface[key]["admin-status"]}) %}{% endif %} {% if vars.update({'oper_state':interface[key]["oper-status"]}) %}{% endif %} {% if vars.update({'index':interface[key]["ifindex"]}) %}{% endif %} + {% if vars.update({'description':interface[key]["description"]}) %}{% endif %} {% if vars.update({'mtu':interface[key]["mtu"]}) %}{% endif %} {% endif %} {% if "counters" in interface["state"] %} @@ -95,6 +97,9 @@ {{ vars.name }} is {{ vars.admin_state|lower() }}, line protocol is {{vars.oper_state|lower() }} Hardware is Eth Interface index is {{ vars.index }} +{% if vars.description %} +Description: {{ vars.description }} +{% endif %} {% if vars.ipv4_src_pfx %} {{ vars.ipv4 }} address is {{ vars.ipv4_src_pfx }} {% endif %} diff --git a/src/CLI/renderer/templates/show_interface_id.j2 b/src/CLI/renderer/templates/show_interface_id.j2 index 4663c65d21..b4b4b32eed 100644 --- a/src/CLI/renderer/templates/show_interface_id.j2 +++ b/src/CLI/renderer/templates/show_interface_id.j2 @@ -4,6 +4,7 @@ {% set vars = {'admin_state': ""} %} {% set vars = {'oper_state': ""} %} {% set vars = {'index': ""} %} +{% set vars = {'description':""} %} {% set vars = {'mtu': ""} %} {% set vars = {'ipv4_src_pfx': ""} %} {% set vars = {'ipv6_src_pfx': ""} %} @@ -37,6 +38,7 @@ {% if vars.update({'admin_state':interface[key]["admin-status"]}) %}{% endif %} {% if vars.update({'oper_state':interface[key]["oper-status"]}) %}{% endif %} {% if vars.update({'index':interface[key]["ifindex"]}) %}{% endif %} + {% if vars.update({'description':interface[key]["description"]}) %}{% endif %} {% if vars.update({'mtu':interface[key]["mtu"]}) %}{% endif %} {% if vars.update({'in_pkts':interface[key]["counters"]["in-pkts"]}) %}{% endif %} {% if vars.update({'in_octets':interface[key]["counters"]["in-octets"]}) %}{% endif %} @@ -92,6 +94,9 @@ Hardware is Eth Interface index is {{ vars.index }} +{% if vars.description %} +Description: {{ vars.description }} +{% endif %} {% if vars.ipv4_src_pfx %} {{ vars.ipv4 }} address is {{ vars.ipv4_src_pfx }} {% endif %} From d45ca090d849135329a003c8e4ab0cc3e8ce6a6f Mon Sep 17 00:00:00 2001 From: justinejose91 Date: Mon, 9 Sep 2019 15:53:46 -0700 Subject: [PATCH 2/7] Addressing the crash when max mtu is set as 9276. Currently supported max-mtu is 9216. --- src/CLI/clitree/cli-xml/sonic_types.xml | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/src/CLI/clitree/cli-xml/sonic_types.xml b/src/CLI/clitree/cli-xml/sonic_types.xml index b8259d35af..7b4a108eda 100644 --- a/src/CLI/clitree/cli-xml/sonic_types.xml +++ b/src/CLI/clitree/cli-xml/sonic_types.xml @@ -1,5 +1,6 @@ @@ -47,9 +48,9 @@ Date: Wed, 11 Sep 2019 17:59:57 +0000 Subject: [PATCH 3/7] Fix for bugs 96, 97 and 107 --- src/translib/intf_app.go | 284 +++++++++++++++++++-------------------- 1 file changed, 140 insertions(+), 144 deletions(-) diff --git a/src/translib/intf_app.go b/src/translib/intf_app.go index 4dabe9a8e0..90f45e46d8 100644 --- a/src/translib/intf_app.go +++ b/src/translib/intf_app.go @@ -42,11 +42,10 @@ const ( type Table int const ( - IF_TABLE_MAP Table = iota - PORT_STAT_MAP + IF_TABLE_MAP Table = iota + PORT_STAT_MAP ) - type IntfApp struct { path *PathInfo reqData []byte @@ -359,29 +358,27 @@ func (app *IntfApp) processGet(dbs [db.MaxDB]*db.DB) (GetResponse, error) { return GetResponse{Payload: payload, ErrSrc: AppErr}, err } - /*Check if the request is for a specific attribute in Interfaces state COUNTERS container*/ - counter_val := &ocbinds.OpenconfigInterfaces_Interfaces_Interface_State_Counters{} - ok, e = app.getSpecificCounterAttr(targetUriPath, ifKey, counter_val) - if ok { - if e != nil { - return GetResponse{Payload: payload, ErrSrc: AppErr}, e - } - - payload, err = dumpIetfJson(counter_val, false) - if err == nil { - return GetResponse{Payload: payload}, err - } else { - return GetResponse{Payload: payload, ErrSrc: AppErr}, err - } - } - + /*Check if the request is for a specific attribute in Interfaces state COUNTERS container*/ + counter_val := &ocbinds.OpenconfigInterfaces_Interfaces_Interface_State_Counters{} + ok, e = app.getSpecificCounterAttr(targetUriPath, ifKey, counter_val) + if ok { + if e != nil { + return GetResponse{Payload: payload, ErrSrc: AppErr}, e + } + payload, err = dumpIetfJson(counter_val, false) + if err == nil { + return GetResponse{Payload: payload}, err + } else { + return GetResponse{Payload: payload, ErrSrc: AppErr}, err + } + } - /* Filling Interface IP info to internal DS */ - err = app.convertDBIntfIPInfoToInternal(app.appDB, ifKey) - if err != nil { - return GetResponse{Payload: payload, ErrSrc: AppErr}, err - } + /* Filling Interface IP info to internal DS */ + err = app.convertDBIntfIPInfoToInternal(app.appDB, ifKey) + if err != nil { + return GetResponse{Payload: payload, ErrSrc: AppErr}, err + } /* Filling the tree with the info we have in Internal DS */ ygot.BuildEmptyTree(ifInfo) @@ -547,141 +544,139 @@ func (app *IntfApp) getSpecificAttr(targetUriPath string, ifKey string, oc_val * return true, e default: - log.Infof(targetUriPath + " - Not an interface state attribute") + log.Infof(targetUriPath + " - Not an interface state attribute") } return false, nil } func (app *IntfApp) getSpecificCounterAttr(targetUriPath string, ifKey string, counter_val *ocbinds.OpenconfigInterfaces_Interfaces_Interface_State_Counters) (bool, error) { - var e error - - switch targetUriPath { - case "/openconfig-interfaces:interfaces/interface/state/counters/in-octets": - e = app.getCounters(ifKey, "SAI_PORT_STAT_IF_IN_OCTETS", &counter_val.InOctets) - return true, e - - case "/openconfig-interfaces:interfaces/interface/state/counters/in-unicast-pkts": - e = app.getCounters(ifKey, "SAI_PORT_STAT_IF_IN_UCAST_PKTS", &counter_val.InUnicastPkts) - return true, e - - case "/openconfig-interfaces:interfaces/interface/state/counters/in-broadcast-pkts": - e = app.getCounters(ifKey, "SAI_PORT_STAT_IF_IN_BROADCAST_PKTS", &counter_val.InBroadcastPkts) - return true, e - - case "/openconfig-interfaces:interfaces/interface/state/counters/in-multicast-pkts": - e = app.getCounters(ifKey, "SAI_PORT_STAT_IF_IN_MULTICAST_PKTS", &counter_val.InMulticastPkts) - return true, e - - case "/openconfig-interfaces:interfaces/interface/state/counters/in-errors": - e = app.getCounters(ifKey, "SAI_PORT_STAT_IF_IN_ERRORS", &counter_val.InErrors) - return true, e - - case "/openconfig-interfaces:interfaces/interface/state/counters/in-discards": - e = app.getCounters(ifKey, "SAI_PORT_STAT_IF_IN_DISCARDS", &counter_val.InDiscards) - return true, e - - case "/openconfig-interfaces:interfaces/interface/state/counters/in-pkts": - var inNonUCastPkt, inUCastPkt *uint64 - var in_pkts uint64 - - e = app.getCounters(ifKey, "SAI_PORT_STAT_IF_IN_NON_UCAST_PKTS", &inNonUCastPkt) - if e == nil { - e = app.getCounters(ifKey, "SAI_PORT_STAT_IF_IN_UCAST_PKTS", &inUCastPkt) - if e != nil { - return true, e - } - in_pkts = *inUCastPkt + *inNonUCastPkt - counter_val.InPkts = &in_pkts - return true, e - } else { - return true, e - } - - case "/openconfig-interfaces:interfaces/interface/state/counters/out-octets": - e = app.getCounters(ifKey, "SAI_PORT_STAT_IF_OUT_OCTETS", &counter_val.OutOctets) - return true, e - - case "/openconfig-interfaces:interfaces/interface/state/counters/out-unicast-pkts": - e = app.getCounters(ifKey, "SAI_PORT_STAT_IF_OUT_UCAST_PKTS", &counter_val.OutUnicastPkts) - return true, e - - case "/openconfig-interfaces:interfaces/interface/state/counters/out-broadcast-pkts": - e = app.getCounters(ifKey, "SAI_PORT_STAT_IF_OUT_BROADCAST_PKTS", &counter_val.OutBroadcastPkts) - return true, e - - case "/openconfig-interfaces:interfaces/interface/state/counters/out-multicast-pkts": - e = app.getCounters(ifKey, "SAI_PORT_STAT_IF_OUT_MULTICAST_PKTS", &counter_val.OutMulticastPkts) - return true, e - - case "/openconfig-interfaces:interfaces/interface/state/counters/out-errors": - e = app.getCounters(ifKey, "SAI_PORT_STAT_IF_OUT_ERRORS", &counter_val.OutErrors) - return true, e - - case "/openconfig-interfaces:interfaces/interface/state/counters/out-discards": - e = app.getCounters(ifKey, "SAI_PORT_STAT_IF_OUT_DISCARDS", &counter_val.OutDiscards) - return true, e - - case "/openconfig-interfaces:interfaces/interface/state/counters/out-pkts": - var outNonUCastPkt, outUCastPkt *uint64 - var out_pkts uint64 - - e = app.getCounters(ifKey, "SAI_PORT_STAT_IF_OUT_NON_UCAST_PKTS", &outNonUCastPkt) - if e == nil { - e = app.getCounters(ifKey, "SAI_PORT_STAT_IF_OUT_UCAST_PKTS", &outUCastPkt) - if e != nil { - return true, e - } - out_pkts = *outUCastPkt + *outNonUCastPkt - counter_val.OutPkts = &out_pkts - return true, e - } else { - return true, e - } - - - default: - log.Infof(targetUriPath + " - Not an interface state counter attribute") - } - return false, nil + var e error + + switch targetUriPath { + case "/openconfig-interfaces:interfaces/interface/state/counters/in-octets": + e = app.getCounters(ifKey, "SAI_PORT_STAT_IF_IN_OCTETS", &counter_val.InOctets) + return true, e + + case "/openconfig-interfaces:interfaces/interface/state/counters/in-unicast-pkts": + e = app.getCounters(ifKey, "SAI_PORT_STAT_IF_IN_UCAST_PKTS", &counter_val.InUnicastPkts) + return true, e + + case "/openconfig-interfaces:interfaces/interface/state/counters/in-broadcast-pkts": + e = app.getCounters(ifKey, "SAI_PORT_STAT_IF_IN_BROADCAST_PKTS", &counter_val.InBroadcastPkts) + return true, e + + case "/openconfig-interfaces:interfaces/interface/state/counters/in-multicast-pkts": + e = app.getCounters(ifKey, "SAI_PORT_STAT_IF_IN_MULTICAST_PKTS", &counter_val.InMulticastPkts) + return true, e + + case "/openconfig-interfaces:interfaces/interface/state/counters/in-errors": + e = app.getCounters(ifKey, "SAI_PORT_STAT_IF_IN_ERRORS", &counter_val.InErrors) + return true, e + + case "/openconfig-interfaces:interfaces/interface/state/counters/in-discards": + e = app.getCounters(ifKey, "SAI_PORT_STAT_IF_IN_DISCARDS", &counter_val.InDiscards) + return true, e + + case "/openconfig-interfaces:interfaces/interface/state/counters/in-pkts": + var inNonUCastPkt, inUCastPkt *uint64 + var in_pkts uint64 + + e = app.getCounters(ifKey, "SAI_PORT_STAT_IF_IN_NON_UCAST_PKTS", &inNonUCastPkt) + if e == nil { + e = app.getCounters(ifKey, "SAI_PORT_STAT_IF_IN_UCAST_PKTS", &inUCastPkt) + if e != nil { + return true, e + } + in_pkts = *inUCastPkt + *inNonUCastPkt + counter_val.InPkts = &in_pkts + return true, e + } else { + return true, e + } + + case "/openconfig-interfaces:interfaces/interface/state/counters/out-octets": + e = app.getCounters(ifKey, "SAI_PORT_STAT_IF_OUT_OCTETS", &counter_val.OutOctets) + return true, e + + case "/openconfig-interfaces:interfaces/interface/state/counters/out-unicast-pkts": + e = app.getCounters(ifKey, "SAI_PORT_STAT_IF_OUT_UCAST_PKTS", &counter_val.OutUnicastPkts) + return true, e + + case "/openconfig-interfaces:interfaces/interface/state/counters/out-broadcast-pkts": + e = app.getCounters(ifKey, "SAI_PORT_STAT_IF_OUT_BROADCAST_PKTS", &counter_val.OutBroadcastPkts) + return true, e + + case "/openconfig-interfaces:interfaces/interface/state/counters/out-multicast-pkts": + e = app.getCounters(ifKey, "SAI_PORT_STAT_IF_OUT_MULTICAST_PKTS", &counter_val.OutMulticastPkts) + return true, e + + case "/openconfig-interfaces:interfaces/interface/state/counters/out-errors": + e = app.getCounters(ifKey, "SAI_PORT_STAT_IF_OUT_ERRORS", &counter_val.OutErrors) + return true, e + + case "/openconfig-interfaces:interfaces/interface/state/counters/out-discards": + e = app.getCounters(ifKey, "SAI_PORT_STAT_IF_OUT_DISCARDS", &counter_val.OutDiscards) + return true, e + + case "/openconfig-interfaces:interfaces/interface/state/counters/out-pkts": + var outNonUCastPkt, outUCastPkt *uint64 + var out_pkts uint64 + + e = app.getCounters(ifKey, "SAI_PORT_STAT_IF_OUT_NON_UCAST_PKTS", &outNonUCastPkt) + if e == nil { + e = app.getCounters(ifKey, "SAI_PORT_STAT_IF_OUT_UCAST_PKTS", &outUCastPkt) + if e != nil { + return true, e + } + out_pkts = *outUCastPkt + *outNonUCastPkt + counter_val.OutPkts = &out_pkts + return true, e + } else { + return true, e + } + + default: + log.Infof(targetUriPath + " - Not an interface state counter attribute") + } + return false, nil } -func (app *IntfApp) getCounters( ifKey string, attr string, counter_val **uint64 ) error { - val, e := app.getIntfAttr(ifKey, attr, PORT_STAT_MAP) - if len(val) > 0 { - v, e := strconv.ParseUint(val, 10, 64) - if e == nil { - *counter_val = &v - return nil - } - } - return e +func (app *IntfApp) getCounters(ifKey string, attr string, counter_val **uint64) error { + val, e := app.getIntfAttr(ifKey, attr, PORT_STAT_MAP) + if len(val) > 0 { + v, e := strconv.ParseUint(val, 10, 64) + if e == nil { + *counter_val = &v + return nil + } + } + return e } func (app *IntfApp) getIntfAttr(ifName string, attr string, table Table) (string, error) { - var ok bool = false - var entry dbEntry + var ok bool = false + var entry dbEntry - if table == IF_TABLE_MAP { - entry, ok = app.ifTableMap[ifName]; - } else if table == PORT_STAT_MAP { - entry, ok = app.portStatMap[ifName]; - } else { - return "", errors.New("Unsupported table") - } + if table == IF_TABLE_MAP { + entry, ok = app.ifTableMap[ifName] + } else if table == PORT_STAT_MAP { + entry, ok = app.portStatMap[ifName] + } else { + return "", errors.New("Unsupported table") + } if ok { - ifData := entry.entry + ifData := entry.entry - if val, ok := ifData.Field[attr]; ok { - return val, nil - } + if val, ok := ifData.Field[attr]; ok { + return val, nil + } } return "", errors.New("Attr " + attr + "doesn't exist in IF table Map!") } - /*********** Translation Helper fn to convert DB Interface info to Internal DS ***********/ func (app *IntfApp) getPortOidMapForCounters(dbCl *db.DB) error { var err error @@ -851,19 +846,20 @@ func (app *IntfApp) convertInternalToOCIntfAttrInfo(ifName *string, ifInfo *ocbi switch speed { case "40000": speedEnum = ocbinds.OpenconfigIfEthernet_ETHERNET_SPEED_SPEED_40GB - speedEnum = ocbinds.OpenconfigIfEthernet_ETHERNET_SPEED_SPEED_40GB case "25000": speedEnum = ocbinds.OpenconfigIfEthernet_ETHERNET_SPEED_SPEED_25GB - speedEnum = ocbinds.OpenconfigIfEthernet_ETHERNET_SPEED_SPEED_25GB case "10000": speedEnum = ocbinds.OpenconfigIfEthernet_ETHERNET_SPEED_SPEED_10GB - speedEnum = ocbinds.OpenconfigIfEthernet_ETHERNET_SPEED_SPEED_10GB case "5000": speedEnum = ocbinds.OpenconfigIfEthernet_ETHERNET_SPEED_SPEED_5GB - speedEnum = ocbinds.OpenconfigIfEthernet_ETHERNET_SPEED_SPEED_5GB case "1000": speedEnum = ocbinds.OpenconfigIfEthernet_ETHERNET_SPEED_SPEED_1GB - speedEnum = ocbinds.OpenconfigIfEthernet_ETHERNET_SPEED_SPEED_1GB + case "100000": + speedEnum = ocbinds.OpenconfigIfEthernet_ETHERNET_SPEED_SPEED_100GB + case "2500": + speedEnum = ocbinds.OpenconfigIfEthernet_ETHERNET_SPEED_SPEED_2500MB + case "50000": + speedEnum = ocbinds.OpenconfigIfEthernet_ETHERNET_SPEED_SPEED_50GB default: log.Infof("Not supported speed: %s!", speed) } From 12a708d66befd01bec1e13222f519c884311d8af Mon Sep 17 00:00:00 2001 From: jjose Date: Wed, 11 Sep 2019 18:30:31 +0000 Subject: [PATCH 4/7] Addressed the comment to sort the speed --- src/translib/intf_app.go | 24 ++++++++++++------------ 1 file changed, 12 insertions(+), 12 deletions(-) diff --git a/src/translib/intf_app.go b/src/translib/intf_app.go index 90f45e46d8..b74e978aa0 100644 --- a/src/translib/intf_app.go +++ b/src/translib/intf_app.go @@ -844,22 +844,22 @@ func (app *IntfApp) convertInternalToOCIntfAttrInfo(ifName *string, ifInfo *ocbi var speedEnum ocbinds.E_OpenconfigIfEthernet_ETHERNET_SPEED switch speed { - case "40000": - speedEnum = ocbinds.OpenconfigIfEthernet_ETHERNET_SPEED_SPEED_40GB - case "25000": - speedEnum = ocbinds.OpenconfigIfEthernet_ETHERNET_SPEED_SPEED_25GB - case "10000": - speedEnum = ocbinds.OpenconfigIfEthernet_ETHERNET_SPEED_SPEED_10GB - case "5000": - speedEnum = ocbinds.OpenconfigIfEthernet_ETHERNET_SPEED_SPEED_5GB - case "1000": - speedEnum = ocbinds.OpenconfigIfEthernet_ETHERNET_SPEED_SPEED_1GB - case "100000": - speedEnum = ocbinds.OpenconfigIfEthernet_ETHERNET_SPEED_SPEED_100GB case "2500": speedEnum = ocbinds.OpenconfigIfEthernet_ETHERNET_SPEED_SPEED_2500MB + case "1000": + speedEnum = ocbinds.OpenconfigIfEthernet_ETHERNET_SPEED_SPEED_1GB + case "5000": + speedEnum = ocbinds.OpenconfigIfEthernet_ETHERNET_SPEED_SPEED_5GB + case "10000": + speedEnum = ocbinds.OpenconfigIfEthernet_ETHERNET_SPEED_SPEED_10GB + case "25000": + speedEnum = ocbinds.OpenconfigIfEthernet_ETHERNET_SPEED_SPEED_25GB + case "40000": + speedEnum = ocbinds.OpenconfigIfEthernet_ETHERNET_SPEED_SPEED_40GB case "50000": speedEnum = ocbinds.OpenconfigIfEthernet_ETHERNET_SPEED_SPEED_50GB + case "100000": + speedEnum = ocbinds.OpenconfigIfEthernet_ETHERNET_SPEED_SPEED_100GB default: log.Infof("Not supported speed: %s!", speed) } From 2f0d6ecdd46337f6903801c97fcd3151964f497a Mon Sep 17 00:00:00 2001 From: jjose Date: Wed, 11 Sep 2019 20:56:44 +0000 Subject: [PATCH 5/7] Change MAX_MTU to 9216 in platform_dummy file as well, since it overwrites it. --- src/CLI/clitree/scripts/platform_dummy.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/CLI/clitree/scripts/platform_dummy.xml b/src/CLI/clitree/scripts/platform_dummy.xml index 108e881454..191f0c51cc 100644 --- a/src/CLI/clitree/scripts/platform_dummy.xml +++ b/src/CLI/clitree/scripts/platform_dummy.xml @@ -20,6 +20,6 @@ MAX_PORT_ID START_SUB_PORT_ID MAX_SUB_PORT_ID - MAX_MTU + MAX_MTU From ff617fb50acefb3d9855192a785b49ba533bda58 Mon Sep 17 00:00:00 2001 From: jjose Date: Thu, 12 Sep 2019 18:10:53 +0000 Subject: [PATCH 6/7] Adding Interface table entry with just name, before the one with ifname and IP. --- src/translib/intf_app.go | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/src/translib/intf_app.go b/src/translib/intf_app.go index b74e978aa0..ce686e714e 100644 --- a/src/translib/intf_app.go +++ b/src/translib/intf_app.go @@ -1248,6 +1248,17 @@ func (app *IntfApp) processCommon(d *db.DB) (SetResponse, error) { } for key, entry1 := range app.ifIPTableMap { + ifEntry, err := d.GetEntry(app.intfIPTs, db.Key{Comp: []string{key}}) + if err != nil || !ifEntry.IsPopulated() { + log.Infof("Interface Entry not present for Key:%s for IP config!", key) + m := make(map[string]string) + m["NULL"] = "NULL" + err = d.CreateEntry(app.intfIPTs, db.Key{Comp: []string{key}}, db.Value{Field: m}) + if err != nil { + return resp, err + } + log.Infof("Created Interface entry with Interface name : %s alone!", key) + } for ip, entry := range entry1 { if entry.op == opCreate { log.Info("Creating entry for ", key, ":", ip) From 7d836d716a298b866153409bb921613ec7f66d48 Mon Sep 17 00:00:00 2001 From: justinejose91 Date: Wed, 9 Oct 2019 17:39:51 -0700 Subject: [PATCH 7/7] Bug fixed for not showing GB instead of Gx --- src/CLI/renderer/templates/show_interface_status.j2 | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/src/CLI/renderer/templates/show_interface_status.j2 b/src/CLI/renderer/templates/show_interface_status.j2 index c706bd53cd..caf9fde229 100644 --- a/src/CLI/renderer/templates/show_interface_status.j2 +++ b/src/CLI/renderer/templates/show_interface_status.j2 @@ -4,6 +4,7 @@ {% set vars = {'description': ""} %} {% set vars = {'mtu': ""} %} {% set vars = {'speed': ""} %} +{% set vars = {'parsedSpeed': ""} %} {% if json_output -%} ------------------------------------------------------------------------------------------ {{'%-20s'|format("Name")}}{{'%-20s'|format("Description")}}{{'%-15s'|format("Admin")}}{{'%-15s'|format("Oper")}}{{'%-15s'|format("Speed")}}{{'%-15s'|format("MTU")}} @@ -13,7 +14,8 @@ {% for interface in interface_list %} {% for key in interface %} {% if "ethernet" in key %} - {% if vars.update({'speed':interface[key]["state"]["port-speed"]|replace("openconfig-if-ethernet:SPEED_", "")}) %}{% endif %} + {% if vars.update({'speed':interface[key]["state"]["port-speed"]|replace("openconfig-if-ethernet:SPEED_", "")}) %} {% endif %} + {% if vars.update({'parsedSpeed':vars.speed|replace("B", "")}) %} {% endif %} {% endif %} {% if "state" in key %} {% if vars.update({'name':interface[key]["name"]}) %}{% endif %} @@ -28,7 +30,7 @@ {% endif %} {% endfor %} {% if 'Ethernet' in vars.name %} -{{'%-20s'|format(vars.name)}}{{'%-20s'|format(vars.description)}}{{'%-15s'|format(vars.admin_state|lower())}}{{'%-15s'|format(vars.oper_state|lower())}}{{'%-15s'|format(vars.speed)}}{{'%-15s'|format(vars.mtu)}} +{{'%-20s'|format(vars.name)}}{{'%-20s'|format(vars.description)}}{{'%-15s'|format(vars.admin_state|lower())}}{{'%-15s'|format(vars.oper_state|lower())}}{{'%-15s'|format(vars.parsedSpeed)}}{{'%-15s'|format(vars.mtu)}} {% endif %} {% endfor %} {% endfor %}