Skip to content
Snippets Groups Projects
Commit d171801e authored by Manuel Kieweg's avatar Manuel Kieweg
Browse files

Moved TestMain to own file

parent c53dc06f
Branches
Tags
2 merge requests!120Resolve "Code Quality",!90Develop
Showing
with 528 additions and 170 deletions
...@@ -42,7 +42,8 @@ func HTTPGet(apiEndpoint, f string, args ...string) error { ...@@ -42,7 +42,8 @@ func HTTPGet(apiEndpoint, f string, args ...string) error {
sbi := string(bytes[36:]) sbi := string(bytes[36:])
viper.Set("CLI_PND", pnd) viper.Set("CLI_PND", pnd)
viper.Set("CLI_SBI", sbi) viper.Set("CLI_SBI", sbi)
return viper.WriteConfig() err := viper.WriteConfig()
log.Error(err)
default: default:
fmt.Println(string(bytes)) fmt.Println(string(bytes))
} }
......
...@@ -53,7 +53,7 @@ func TestCliIntegration(t *testing.T) { ...@@ -53,7 +53,7 @@ func TestCliIntegration(t *testing.T) {
for _, tt := range tests { for _, tt := range tests {
t.Run(tt.name, func(t *testing.T) { t.Run(tt.name, func(t *testing.T) {
defer viper.Reset() defer viper.Reset()
if err := cli.HttpGet(testApiEndpoint, "init"); (err != nil) != tt.wantErr { if err := cli.HTTPGet(testApiEndpoint, "init"); (err != nil) != tt.wantErr {
switch err.(type) { switch err.(type) {
case viper.ConfigFileNotFoundError: case viper.ConfigFileNotFoundError:
default: default:
...@@ -64,7 +64,7 @@ func TestCliIntegration(t *testing.T) { ...@@ -64,7 +64,7 @@ func TestCliIntegration(t *testing.T) {
cliPnd = viper.GetString("CLI_PND") cliPnd = viper.GetString("CLI_PND")
cliSbi = viper.GetString("CLI_SBI") cliSbi = viper.GetString("CLI_SBI")
if err := cli.HttpGet( if err := cli.HTTPGet(
testApiEndpoint, testApiEndpoint,
"addDevice", "addDevice",
"address="+testAddress, "address="+testAddress,
...@@ -78,7 +78,7 @@ func TestCliIntegration(t *testing.T) { ...@@ -78,7 +78,7 @@ func TestCliIntegration(t *testing.T) {
} }
did := viper.GetString("LAST_DEVICE_UUID") did := viper.GetString("LAST_DEVICE_UUID")
if err := cli.HttpGet( if err := cli.HTTPGet(
testApiEndpoint, testApiEndpoint,
"request", "request",
"uuid="+did, "uuid="+did,
...@@ -90,7 +90,7 @@ func TestCliIntegration(t *testing.T) { ...@@ -90,7 +90,7 @@ func TestCliIntegration(t *testing.T) {
return return
} }
if err := cli.HttpGet( if err := cli.HTTPGet(
testApiEndpoint, testApiEndpoint,
"getDevice", "getDevice",
"address="+testAddress, "address="+testAddress,
...@@ -103,7 +103,7 @@ func TestCliIntegration(t *testing.T) { ...@@ -103,7 +103,7 @@ func TestCliIntegration(t *testing.T) {
} }
hostname := guuid.New().String() hostname := guuid.New().String()
if err := cli.HttpGet( if err := cli.HTTPGet(
testApiEndpoint, testApiEndpoint,
"set", "set",
"address="+testAddress, "address="+testAddress,
......
...@@ -3,8 +3,6 @@ package nucleus ...@@ -3,8 +3,6 @@ package nucleus
import ( import (
"code.fbi.h-da.de/cocsn/gosdn/forks/goarista/gnmi" "code.fbi.h-da.de/cocsn/gosdn/forks/goarista/gnmi"
"code.fbi.h-da.de/cocsn/gosdn/mocks" "code.fbi.h-da.de/cocsn/gosdn/mocks"
"code.fbi.h-da.de/cocsn/gosdn/nucleus/util/proto"
"code.fbi.h-da.de/cocsn/gosdn/test"
"code.fbi.h-da.de/cocsn/yang-models/generated/openconfig" "code.fbi.h-da.de/cocsn/yang-models/generated/openconfig"
"context" "context"
"errors" "errors"
...@@ -12,46 +10,11 @@ import ( ...@@ -12,46 +10,11 @@ import (
"github.com/openconfig/gnmi/proto/gnmi_ext" "github.com/openconfig/gnmi/proto/gnmi_ext"
"github.com/openconfig/goyang/pkg/yang" "github.com/openconfig/goyang/pkg/yang"
"github.com/openconfig/ygot/ytypes" "github.com/openconfig/ygot/ytypes"
log "github.com/sirupsen/logrus"
"github.com/stretchr/testify/mock" "github.com/stretchr/testify/mock"
pb "google.golang.org/protobuf/proto"
"os"
"reflect" "reflect"
"testing" "testing"
) )
// TestMain bootstraps all tests. Humongous beast
// TODO: Move somewhere more sensible
func TestMain(m *testing.M) {
log.SetReportCaller(true)
gnmiMessages = map[string]pb.Message{
"../test/proto/cap-resp-arista-ceos": &gpb.CapabilityResponse{},
"../test/proto/req-full-node": &gpb.GetRequest{},
"../test/proto/req-full-node-arista-ceos": &gpb.GetRequest{},
"../test/proto/req-interfaces-arista-ceos": &gpb.GetRequest{},
"../test/proto/req-interfaces-interface-arista-ceos": &gpb.GetRequest{},
"../test/proto/req-interfaces-wildcard": &gpb.GetRequest{},
"../test/proto/resp-full-node": &gpb.GetResponse{},
"../test/proto/resp-full-node-arista-ceos": &gpb.GetResponse{},
"../test/proto/resp-interfaces-arista-ceos": &gpb.GetResponse{},
"../test/proto/resp-interfaces-interface-arista-ceos": &gpb.GetResponse{},
"../test/proto/resp-interfaces-wildcard": &gpb.GetResponse{},
"../test/proto/resp-set-system-config-hostname": &gpb.SetResponse{},
}
for k, v := range gnmiMessages {
if err := proto.Read(k, v); err != nil {
log.Fatalf("error parsing %v: %v", k, err)
}
}
testSetupGnmi()
testSetupPnd()
testSetupStore()
testSetupSbi()
testSetupHttp()
testSetupIntegration()
os.Exit(m.Run())
}
// testSetupGnmi bootstraps tests for gnmi transport // testSetupGnmi bootstraps tests for gnmi transport
func testSetupGnmi() { func testSetupGnmi() {
// TODO: Set sane defaults // TODO: Set sane defaults
...@@ -67,43 +30,6 @@ func testSetupGnmi() { ...@@ -67,43 +30,6 @@ func testSetupGnmi() {
go targetRunner() go targetRunner()
} }
func targetRunner() {
for {
addr := <-startGnmiTarget
if err := test.GnmiTarget(stopGnmiTarget, addr); err != nil {
log.Fatal(err)
}
}
}
func mockTransport() Gnmi {
return Gnmi{
SetNode: nil,
RespChan: make(chan *gpb.SubscribeResponse),
Options: newGnmiTransportOptions(),
client: &mocks.GNMIClient{},
}
}
func newGnmiTransportOptions() *GnmiTransportOptions {
return &GnmiTransportOptions{
Config: gnmi.Config{
Username: "test",
Password: "test",
Addr: "localhost:13371",
Encoding: gpb.Encoding_PROTO,
},
SetNode: nil,
RespChan: make(chan *gpb.SubscribeResponse),
}
}
var gnmiMessages map[string]pb.Message
var gnmiConfig *gnmi.Config
var startGnmiTarget chan string
var stopGnmiTarget chan bool
var mockContext = mock.MatchedBy(func(ctx context.Context) bool { return true })
func TestGnmi_Capabilities(t *testing.T) { func TestGnmi_Capabilities(t *testing.T) {
transport := mockTransport() transport := mockTransport()
capabilityResponse := &gpb.CapabilityResponse{ capabilityResponse := &gpb.CapabilityResponse{
......
...@@ -10,14 +10,6 @@ import ( ...@@ -10,14 +10,6 @@ import (
"testing" "testing"
) )
const apiEndpoint = "http://localhost:8080"
var sbi SouthboundInterface
var pnd PrincipalNetworkDomain
var args string
var argsNotFound string
var d Device
func testSetupHttp() { func testSetupHttp() {
testSetupPnd() testSetupPnd()
sbi = &OpenConfig{id: defaultSbiID} sbi = &OpenConfig{id: defaultSbiID}
...@@ -166,7 +158,7 @@ func Test_httpApi(t *testing.T) { ...@@ -166,7 +158,7 @@ func Test_httpApi(t *testing.T) {
t.Errorf("httpApi() got: %v, want %v", got.StatusCode, tt.want.StatusCode) t.Errorf("httpApi() got: %v, want %v", got.StatusCode, tt.want.StatusCode)
} }
if tt.name == "add-device" { if tt.name == "add-device" {
for k := range pnd.(*pndImplementation).devices.store{ for k := range pnd.(*pndImplementation).devices.store {
if k != mdid { if k != mdid {
if err := pnd.RemoveDevice(k); err != nil { if err := pnd.RemoveDevice(k); err != nil {
t.Error(err) t.Error(err)
......
package nucleus
import (
"code.fbi.h-da.de/cocsn/gosdn/forks/goarista/gnmi"
"code.fbi.h-da.de/cocsn/gosdn/mocks"
"code.fbi.h-da.de/cocsn/gosdn/nucleus/util/proto"
"code.fbi.h-da.de/cocsn/gosdn/test"
"context"
"github.com/google/uuid"
gpb "github.com/openconfig/gnmi/proto/gnmi"
log "github.com/sirupsen/logrus"
"github.com/stretchr/testify/mock"
pb "google.golang.org/protobuf/proto"
"os"
"testing"
)
const apiEndpoint = "http://localhost:8080"
// UUIDs for test cases
var did uuid.UUID
var mdid uuid.UUID
var defaultSbiID uuid.UUID
var defaultPndID uuid.UUID
var ocUUID uuid.UUID
var iid uuid.UUID
var altIid uuid.UUID
var sbi SouthboundInterface
var pnd PrincipalNetworkDomain
var gnmiMessages map[string]pb.Message
var gnmiConfig *gnmi.Config
var d Device
var opt *GnmiTransportOptions
var startGnmiTarget chan string
var stopGnmiTarget chan bool
var args string
var argsNotFound string
var mockContext = mock.MatchedBy(func(ctx context.Context) bool { return true })
var gnmiAddress = "141.100.70.171:6030"
// TestMain bootstraps all tests. Humongous beast
// TODO: Move somewhere more sensible
func TestMain(m *testing.M) {
log.SetReportCaller(true)
gnmiMessages = map[string]pb.Message{
"../test/proto/cap-resp-arista-ceos": &gpb.CapabilityResponse{},
"../test/proto/req-full-node": &gpb.GetRequest{},
"../test/proto/req-full-node-arista-ceos": &gpb.GetRequest{},
"../test/proto/req-interfaces-arista-ceos": &gpb.GetRequest{},
"../test/proto/req-interfaces-interface-arista-ceos": &gpb.GetRequest{},
"../test/proto/req-interfaces-wildcard": &gpb.GetRequest{},
"../test/proto/resp-full-node": &gpb.GetResponse{},
"../test/proto/resp-full-node-arista-ceos": &gpb.GetResponse{},
"../test/proto/resp-interfaces-arista-ceos": &gpb.GetResponse{},
"../test/proto/resp-interfaces-interface-arista-ceos": &gpb.GetResponse{},
"../test/proto/resp-interfaces-wildcard": &gpb.GetResponse{},
"../test/proto/resp-set-system-config-hostname": &gpb.SetResponse{},
}
for k, v := range gnmiMessages {
if err := proto.Read(k, v); err != nil {
log.Fatalf("error parsing %v: %v", k, err)
}
}
readTestUUIDs()
testSetupGnmi()
testSetupHttp()
testSetupIntegration()
os.Exit(m.Run())
}
func targetRunner() {
for {
addr := <-startGnmiTarget
if err := test.GnmiTarget(stopGnmiTarget, addr); err != nil {
log.Fatal(err)
}
}
}
func mockTransport() Gnmi {
return Gnmi{
SetNode: nil,
RespChan: make(chan *gpb.SubscribeResponse),
Options: newGnmiTransportOptions(),
client: &mocks.GNMIClient{},
}
}
func newGnmiTransportOptions() *GnmiTransportOptions {
return &GnmiTransportOptions{
Config: gnmi.Config{
Username: "test",
Password: "test",
Addr: "localhost:13371",
Encoding: gpb.Encoding_PROTO,
},
SetNode: nil,
RespChan: make(chan *gpb.SubscribeResponse),
}
}
func readTestUUIDs() {
var err error
did, err = uuid.Parse("4d8246f8-e884-41d6-87f5-c2c784df9e44")
if err != nil {
log.Fatal(err)
}
mdid, err = uuid.Parse("688a264e-5f85-40f8-bd13-afc42fcd5c7a")
if err != nil {
log.Fatal(err)
}
defaultSbiID, err = uuid.Parse("b70c8425-68c7-4d4b-bb5e-5586572bd64b")
if err != nil {
log.Fatal(err)
}
defaultPndID, err = uuid.Parse("b4016412-eec5-45a1-aa29-f59915357bad")
if err != nil {
log.Fatal(err)
}
ocUUID, err = uuid.Parse("5e252b70-38f2-4c99-a0bf-1b16af4d7e67")
if err != nil {
log.Fatal(err)
}
iid, err = uuid.Parse("8495a8ac-a1e8-418e-b787-10f5878b2690")
altIid, err = uuid.Parse("edc5de93-2d15-4586-b2a7-fb1bc770986b")
if err != nil {
log.Fatal(err)
}
}
func mockDevice() Device {
return Device{
UUID: mdid,
GoStruct: nil,
SBI: &OpenConfig{},
Transport: &mocks.Transport{},
}
}
func newPnd() pndImplementation {
return pndImplementation{
name: "default",
description: "default test pnd",
sbic: sbiStore{store{}},
devices: deviceStore{store{}},
id: defaultPndID,
}
}
...@@ -11,18 +11,15 @@ import ( ...@@ -11,18 +11,15 @@ import (
"time" "time"
) )
var address = "141.100.70.171:6030"
var opt *GnmiTransportOptions
func testSetupIntegration() { func testSetupIntegration() {
a := os.Getenv("GOSDN_TEST_ENDPOINT") a := os.Getenv("GOSDN_TEST_ENDPOINT")
if a != "" { if a != "" {
address = a gnmiAddress = a
} }
opt = &GnmiTransportOptions{ opt = &GnmiTransportOptions{
Config: gnmi.Config{ Config: gnmi.Config{
Addr: address, Addr: gnmiAddress,
Username: "admin", Username: "admin",
Password: "arista", Password: "arista",
Encoding: gpb.Encoding_JSON_IETF, Encoding: gpb.Encoding_JSON_IETF,
...@@ -108,8 +105,8 @@ func TestGnmi_SetIntegration(t *testing.T) { ...@@ -108,8 +105,8 @@ func TestGnmi_SetIntegration(t *testing.T) {
} }
if err != nil && tt.wantErr { if err != nil && tt.wantErr {
return return
} else if got.Prefix.Target != address || } else if got.Prefix.Target != gnmiAddress ||
got.Response[0].Op != gpb.UpdateResult_UPDATE{ got.Response[0].Op != gpb.UpdateResult_UPDATE {
t.Errorf("Set() got = %v, want %v", got, tt.want) t.Errorf("Set() got = %v, want %v", got, tt.want)
} }
}) })
...@@ -220,7 +217,7 @@ func TestGnmi_SubscribeIntegration(t *testing.T) { ...@@ -220,7 +217,7 @@ func TestGnmi_SubscribeIntegration(t *testing.T) {
"/interfaces/interface/name", "/interfaces/interface/name",
"/system/config/hostname", "/system/config/hostname",
}), }),
Target: address, Target: gnmiAddress,
}, },
}, },
wantErr: false, wantErr: false,
...@@ -243,7 +240,7 @@ func TestGnmi_SubscribeIntegration(t *testing.T) { ...@@ -243,7 +240,7 @@ func TestGnmi_SubscribeIntegration(t *testing.T) {
"interfaces/interface/name", "interfaces/interface/name",
"ystem/config/hostname", "ystem/config/hostname",
}), }),
Target: address, Target: gnmiAddress,
}, },
}, },
wantErr: true, wantErr: true,
......
...@@ -5,59 +5,11 @@ import ( ...@@ -5,59 +5,11 @@ import (
"code.fbi.h-da.de/cocsn/yang-models/generated/openconfig" "code.fbi.h-da.de/cocsn/yang-models/generated/openconfig"
"errors" "errors"
"github.com/google/uuid" "github.com/google/uuid"
log "github.com/sirupsen/logrus"
"github.com/stretchr/testify/mock" "github.com/stretchr/testify/mock"
"reflect" "reflect"
"testing" "testing"
) )
func testSetupPnd() {
var err error
did, err = uuid.Parse("4d8246f8-e884-41d6-87f5-c2c784df9e44")
if err != nil {
log.Fatal(err)
}
mdid, err = uuid.Parse("688a264e-5f85-40f8-bd13-afc42fcd5c7a")
if err != nil {
log.Fatal(err)
}
defaultSbiID, err = uuid.Parse("b70c8425-68c7-4d4b-bb5e-5586572bd64b")
if err != nil {
log.Fatal(err)
}
defaultPndID, err = uuid.Parse("b4016412-eec5-45a1-aa29-f59915357bad")
if err != nil {
log.Fatal(err)
}
}
func mockDevice() Device {
return Device{
UUID: mdid,
GoStruct: nil,
SBI: &OpenConfig{},
Transport: &mocks.Transport{},
}
}
func newPnd() pndImplementation {
return pndImplementation{
name: "default",
description: "default test pnd",
sbic: sbiStore{store{}},
devices: deviceStore{store{}},
id: defaultPndID,
}
}
var did uuid.UUID
var mdid uuid.UUID
var defaultSbiID uuid.UUID
var defaultPndID uuid.UUID
func TestNewPND(t *testing.T) { func TestNewPND(t *testing.T) {
pnd := newPnd() pnd := newPnd()
if err := pnd.addSbi(&OpenConfig{id: defaultSbiID}); err != nil { if err := pnd.addSbi(&OpenConfig{id: defaultSbiID}); err != nil {
......
...@@ -6,21 +6,10 @@ import ( ...@@ -6,21 +6,10 @@ import (
"github.com/google/uuid" "github.com/google/uuid"
gpb "github.com/openconfig/gnmi/proto/gnmi" gpb "github.com/openconfig/gnmi/proto/gnmi"
"github.com/openconfig/ygot/ytypes" "github.com/openconfig/ygot/ytypes"
log "github.com/sirupsen/logrus"
"reflect" "reflect"
"testing" "testing"
) )
func testSetupSbi() {
var err error
ocUUID, err = uuid.Parse("5e252b70-38f2-4c99-a0bf-1b16af4d7e67")
if err != nil {
log.Fatal(err)
}
}
var ocUUID uuid.UUID
func TestOpenConfig_Id(t *testing.T) { func TestOpenConfig_Id(t *testing.T) {
type fields struct { type fields struct {
transport Transport transport Transport
......
...@@ -3,24 +3,11 @@ package nucleus ...@@ -3,24 +3,11 @@ package nucleus
import ( import (
"code.fbi.h-da.de/cocsn/gosdn/mocks" "code.fbi.h-da.de/cocsn/gosdn/mocks"
"github.com/google/uuid" "github.com/google/uuid"
log "github.com/sirupsen/logrus"
"reflect" "reflect"
"sort" "sort"
"testing" "testing"
) )
func testSetupStore() {
var err error
iid, err = uuid.Parse("8495a8ac-a1e8-418e-b787-10f5878b2690")
altIid, err = uuid.Parse("edc5de93-2d15-4586-b2a7-fb1bc770986b")
if err != nil {
log.Fatal(err)
}
}
var iid uuid.UUID
var altIid uuid.UUID
func Test_store_add(t *testing.T) { func Test_store_add(t *testing.T) {
type args struct { type args struct {
item Storable item Storable
......
File added
File added
2
interfaces
interface
interfaces
interface(
\ No newline at end of file

interfaces
interfaces(
\ No newline at end of file
2
interfaces
interface
interfaces
interface(
\ No newline at end of file
c
interfaces
interface[name=*]
state
name
interfaces
interface
name*
state
name(
\ No newline at end of file
File added
"""
0
interfaces
interface
name Ethernet510"Z"{"openconfig-interfaces:config":{"description":"","enabled":true,"arista-intf-augments:load-interval":300,"loopback-mode":false,"mtu":0,"name":"Ethernet510","openconfig-vlan:tpid":"openconfig-vlan-types:TPID_0X8100","type":"iana-if-type:ethernetCsmacd"},"openconfig-if-ethernet:ethernet":{"config":{"arista-intf-augments:fec-encoding":{"disabled":false,"fire-code":false,"reed-solomon":false,"reed-solomon544":false},"openconfig-hercules-interfaces:forwarding-viable":true,"mac-address":"00:00:00:00:00:00","port-speed":"SPEED_UNKNOWN","arista-intf-augments:sfp-1000base-t":false},"arista-intf-augments:pfc":{"priorities":{"priority":[{"index":0,"state":{"in-frames":"0","index":0,"out-frames":"0"}},{"index":1,"state":{"in-frames":"0","index":1,"out-frames":"0"}},{"index":2,"state":{"in-frames":"0","index":2,"out-frames":"0"}},{"index":3,"state":{"in-frames":"0","index":3,"out-frames":"0"}},{"index":4,"state":{"in-frames":"0","index":4,"out-frames":"0"}},{"index":5,"state":{"in-frames":"0","index":5,"out-frames":"0"}},{"index":6,"state":{"in-frames":"0","index":6,"out-frames":"0"}},{"index":7,"state":{"in-frames":"0","index":7,"out-frames":"0"}}]}},"state":{"auto-negotiate":false,"counters":{"in-crc-errors":"0","in-fragment-frames":"0","in-jabber-frames":"0","in-mac-control-frames":"0","in-mac-pause-frames":"0","in-oversize-frames":"0","out-mac-control-frames":"0","out-mac-pause-frames":"0"},"duplex-mode":"FULL","enable-flow-control":false,"openconfig-hercules-interfaces:forwarding-viable":true,"hw-mac-address":"02:42:c0:a8:02:41","mac-address":"02:42:c0:a8:02:41","negotiated-port-speed":"SPEED_UNKNOWN","port-speed":"SPEED_UNKNOWN","arista-intf-augments:supported-speeds":["SPEED_5GB","SPEED_25GB","SPEED_50GB","SPEED_100GB","SPEED_10MB","SPEED_100GB_2LANE","SPEED_100MB","SPEED_1GB","SPEED_2500MB","SPEED_400GB","SPEED_10GB","SPEED_40GB","SPEED_200GB_4LANE","SPEED_200GB_8LANE","SPEED_50GB_1LANE"]}},"openconfig-interfaces:hold-time":{"config":{"down":0,"up":0},"state":{"down":0,"up":0}},"openconfig-interfaces:name":"Ethernet510","openconfig-interfaces:state":{"admin-status":"UP","counters":{"in-broadcast-pkts":"294224","in-discards":"0","in-errors":"0","in-fcs-errors":"0","in-multicast-pkts":"1412","in-octets":"72226989","in-unicast-pkts":"642","out-broadcast-pkts":"0","out-discards":"0","out-errors":"0","out-multicast-pkts":"0","out-octets":"0","out-unicast-pkts":"0"},"description":"","enabled":true,"openconfig-platform-port:hardware-port":"Port510","ifindex":510,"arista-intf-augments:inactive":false,"last-change":"1612959137249521152","loopback-mode":false,"mtu":0,"name":"Ethernet510","oper-status":"UP","openconfig-vlan:tpid":"openconfig-vlan-types:TPID_0X8100","type":"iana-if-type:ethernetCsmacd"},"openconfig-interfaces:subinterfaces":{"subinterface":[{"config":{"description":"","enabled":true,"index":0},"index":0,"openconfig-if-ip:ipv4":{"config":{"dhcp-client":false,"enabled":true,"mtu":1500},"state":{"dhcp-client":false,"enabled":true,"mtu":1500},"unnumbered":{"config":{"enabled":false},"state":{"enabled":false}}},"openconfig-if-ip:ipv6":{"addresses":{"address":[{"config":{"ip":"fdfd::ce05","prefix-length":64},"ip":"fdfd::ce05","state":{"ip":"fdfd::ce05","origin":"STATIC","prefix-length":64,"status":"PREFERRED"}}]},"config":{"dhcp-client":false,"enabled":false,"mtu":1500},"neighbors":{"neighbor":[{"config":{"ip":"fdfd::1"},"ip":"fdfd::1","state":{"ip":"fdfd::1","link-layer-address":"74:83:c2:fe:86:ad","neighbor-state":"REACHABLE","origin":"DYNAMIC"}},{"config":{"ip":"fe80::7683:c2ff:fefe:86ad"},"ip":"fe80::7683:c2ff:fefe:86ad","state":{"ip":"fe80::7683:c2ff:fefe:86ad","link-layer-address":"74:83:c2:fe:86:ad","neighbor-state":"REACHABLE","origin":"DYNAMIC"}},{"config":{"ip":"fe80::c3:43ff:fec5:da0b"},"ip":"fe80::c3:43ff:fec5:da0b","state":{"ip":"fe80::c3:43ff:fec5:da0b","link-layer-address":"02:c3:43:c5:da:0b","neighbor-state":"REACHABLE","origin":"DYNAMIC"}},{"config":{"ip":"fdfd::28"},"ip":"fdfd::28","state":{"ip":"fdfd::28","link-layer-address":"02:c3:43:c5:da:0b","neighbor-state":"REACHABLE","origin":"DYNAMIC"}},{"config":{"ip":"fe80::1"},"ip":"fe80::1","state":{"ip":"fe80::1","link-layer-address":"74:83:c2:fe:86:ad","neighbor-state":"REACHABLE","origin":"DYNAMIC"}}]},"state":{"dhcp-client":false,"enabled":false,"mtu":1500}},"state":{"counters":{"in-fcs-errors":"0"},"description":"","enabled":true,"index":0}}]}}
\ No newline at end of file
"

interfacesZ{"openconfig-interfaces:interface":[{"config":{"description":"","enabled":true,"arista-intf-augments:load-interval":300,"loopback-mode":false,"mtu":0,"name":"Ethernet510","openconfig-vlan:tpid":"openconfig-vlan-types:TPID_0X8100","type":"iana-if-type:ethernetCsmacd"},"openconfig-if-ethernet:ethernet":{"config":{"arista-intf-augments:fec-encoding":{"disabled":false,"fire-code":false,"reed-solomon":false,"reed-solomon544":false},"openconfig-hercules-interfaces:forwarding-viable":true,"mac-address":"00:00:00:00:00:00","port-speed":"SPEED_UNKNOWN","arista-intf-augments:sfp-1000base-t":false},"arista-intf-augments:pfc":{"priorities":{"priority":[{"index":0,"state":{"in-frames":"0","index":0,"out-frames":"0"}},{"index":1,"state":{"in-frames":"0","index":1,"out-frames":"0"}},{"index":2,"state":{"in-frames":"0","index":2,"out-frames":"0"}},{"index":3,"state":{"in-frames":"0","index":3,"out-frames":"0"}},{"index":4,"state":{"in-frames":"0","index":4,"out-frames":"0"}},{"index":5,"state":{"in-frames":"0","index":5,"out-frames":"0"}},{"index":6,"state":{"in-frames":"0","index":6,"out-frames":"0"}},{"index":7,"state":{"in-frames":"0","index":7,"out-frames":"0"}}]}},"state":{"auto-negotiate":false,"counters":{"in-crc-errors":"0","in-fragment-frames":"0","in-jabber-frames":"0","in-mac-control-frames":"0","in-mac-pause-frames":"0","in-oversize-frames":"0","out-mac-control-frames":"0","out-mac-pause-frames":"0"},"duplex-mode":"FULL","enable-flow-control":false,"openconfig-hercules-interfaces:forwarding-viable":true,"hw-mac-address":"02:42:c0:a8:02:42","mac-address":"02:42:c0:a8:02:42","negotiated-port-speed":"SPEED_UNKNOWN","port-speed":"SPEED_UNKNOWN","arista-intf-augments:supported-speeds":["SPEED_200GB_8LANE","SPEED_100MB","SPEED_1GB","SPEED_10GB","SPEED_400GB","SPEED_40GB","SPEED_2500MB","SPEED_50GB","SPEED_50GB_1LANE","SPEED_25GB","SPEED_100GB","SPEED_100GB_2LANE","SPEED_10MB","SPEED_200GB_4LANE","SPEED_5GB"]}},"hold-time":{"config":{"down":0,"up":0},"state":{"down":0,"up":0}},"name":"Ethernet510","state":{"admin-status":"UP","counters":{"in-broadcast-pkts":"344691","in-discards":"0","in-errors":"0","in-fcs-errors":"0","in-multicast-pkts":"1","in-octets":"93260151","in-unicast-pkts":"0","out-broadcast-pkts":"0","out-discards":"0","out-errors":"0","out-multicast-pkts":"0","out-octets":"0","out-unicast-pkts":"0"},"description":"","enabled":true,"openconfig-platform-port:hardware-port":"Port510","ifindex":510,"arista-intf-augments:inactive":false,"last-change":"1614091948142304000","loopback-mode":false,"mtu":0,"name":"Ethernet510","oper-status":"UP","openconfig-vlan:tpid":"openconfig-vlan-types:TPID_0X8100","type":"iana-if-type:ethernetCsmacd"},"subinterfaces":{"subinterface":[{"config":{"description":"","enabled":true,"index":0},"index":0,"openconfig-if-ip:ipv4":{"config":{"dhcp-client":false,"enabled":false,"mtu":1500},"state":{"dhcp-client":false,"enabled":false,"mtu":1500},"unnumbered":{"config":{"enabled":false},"state":{"enabled":false}}},"openconfig-if-ip:ipv6":{"config":{"dhcp-client":false,"enabled":false,"mtu":1500},"state":{"dhcp-client":false,"enabled":false,"mtu":1500}},"state":{"counters":{"in-fcs-errors":"0"},"description":"","enabled":true,"index":0}}]}}]}
\ No newline at end of file
"
0
interfaces
interface
name Ethernet510Z{"openconfig-interfaces:config":{"description":"","enabled":true,"arista-intf-augments:load-interval":300,"loopback-mode":false,"mtu":0,"name":"Ethernet510","openconfig-vlan:tpid":"openconfig-vlan-types:TPID_0X8100","type":"iana-if-type:ethernetCsmacd"},"openconfig-if-ethernet:ethernet":{"config":{"arista-intf-augments:fec-encoding":{"disabled":false,"fire-code":false,"reed-solomon":false,"reed-solomon544":false},"openconfig-hercules-interfaces:forwarding-viable":true,"mac-address":"00:00:00:00:00:00","port-speed":"SPEED_UNKNOWN","arista-intf-augments:sfp-1000base-t":false},"arista-intf-augments:pfc":{"priorities":{"priority":[{"index":0,"state":{"in-frames":"0","index":0,"out-frames":"0"}},{"index":1,"state":{"in-frames":"0","index":1,"out-frames":"0"}},{"index":2,"state":{"in-frames":"0","index":2,"out-frames":"0"}},{"index":3,"state":{"in-frames":"0","index":3,"out-frames":"0"}},{"index":4,"state":{"in-frames":"0","index":4,"out-frames":"0"}},{"index":5,"state":{"in-frames":"0","index":5,"out-frames":"0"}},{"index":6,"state":{"in-frames":"0","index":6,"out-frames":"0"}},{"index":7,"state":{"in-frames":"0","index":7,"out-frames":"0"}}]}},"state":{"auto-negotiate":false,"counters":{"in-crc-errors":"0","in-fragment-frames":"0","in-jabber-frames":"0","in-mac-control-frames":"0","in-mac-pause-frames":"0","in-oversize-frames":"0","out-mac-control-frames":"0","out-mac-pause-frames":"0"},"duplex-mode":"FULL","enable-flow-control":false,"openconfig-hercules-interfaces:forwarding-viable":true,"hw-mac-address":"02:42:c0:a8:02:42","mac-address":"02:42:c0:a8:02:42","negotiated-port-speed":"SPEED_UNKNOWN","port-speed":"SPEED_UNKNOWN","arista-intf-augments:supported-speeds":["SPEED_200GB_8LANE","SPEED_100MB","SPEED_1GB","SPEED_10GB","SPEED_400GB","SPEED_40GB","SPEED_2500MB","SPEED_50GB","SPEED_50GB_1LANE","SPEED_25GB","SPEED_100GB","SPEED_100GB_2LANE","SPEED_10MB","SPEED_200GB_4LANE","SPEED_5GB"]}},"openconfig-interfaces:hold-time":{"config":{"down":0,"up":0},"state":{"down":0,"up":0}},"openconfig-interfaces:name":"Ethernet510","openconfig-interfaces:state":{"admin-status":"UP","counters":{"in-broadcast-pkts":"344691","in-discards":"0","in-errors":"0","in-fcs-errors":"0","in-multicast-pkts":"1","in-octets":"93260151","in-unicast-pkts":"0","out-broadcast-pkts":"0","out-discards":"0","out-errors":"0","out-multicast-pkts":"0","out-octets":"0","out-unicast-pkts":"0"},"description":"","enabled":true,"openconfig-platform-port:hardware-port":"Port510","ifindex":510,"arista-intf-augments:inactive":false,"last-change":"1614091948142304000","loopback-mode":false,"mtu":0,"name":"Ethernet510","oper-status":"UP","openconfig-vlan:tpid":"openconfig-vlan-types:TPID_0X8100","type":"iana-if-type:ethernetCsmacd"},"openconfig-interfaces:subinterfaces":{"subinterface":[{"config":{"description":"","enabled":true,"index":0},"index":0,"openconfig-if-ip:ipv4":{"config":{"dhcp-client":false,"enabled":false,"mtu":1500},"state":{"dhcp-client":false,"enabled":false,"mtu":1500},"unnumbered":{"config":{"enabled":false},"state":{"enabled":false}}},"openconfig-if-ip:ipv6":{"config":{"dhcp-client":false,"enabled":false,"mtu":1500},"state":{"dhcp-client":false,"enabled":false,"mtu":1500}},"state":{"counters":{"in-fcs-errors":"0"},"description":"","enabled":true,"index":0}}]}}
\ No newline at end of file
T"R
A
interfaces
interface
name Ethernet510
state
name
Ethernet510
\ No newline at end of file
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment