diff --git a/cli/http.go b/cli/http.go index 77c3d3fb09c87b3dede806c8a137fa0eabc18b6b..57ffb70adfa999d1663ce1611a2404196807f4c8 100644 --- a/cli/http.go +++ b/cli/http.go @@ -42,7 +42,8 @@ func HTTPGet(apiEndpoint, f string, args ...string) error { sbi := string(bytes[36:]) viper.Set("CLI_PND", pnd) viper.Set("CLI_SBI", sbi) - return viper.WriteConfig() + err := viper.WriteConfig() + log.Error(err) default: fmt.Println(string(bytes)) } diff --git a/cmd/integration_test.go b/cmd/integration_test.go index 3eda98ed9d98a5d558d4084e32a02bb2426d9198..5439f2cbadb55fb5f832d99a95ac6cb51ebc2578 100644 --- a/cmd/integration_test.go +++ b/cmd/integration_test.go @@ -53,7 +53,7 @@ func TestCliIntegration(t *testing.T) { for _, tt := range tests { t.Run(tt.name, func(t *testing.T) { 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) { case viper.ConfigFileNotFoundError: default: @@ -64,7 +64,7 @@ func TestCliIntegration(t *testing.T) { cliPnd = viper.GetString("CLI_PND") cliSbi = viper.GetString("CLI_SBI") - if err := cli.HttpGet( + if err := cli.HTTPGet( testApiEndpoint, "addDevice", "address="+testAddress, @@ -78,7 +78,7 @@ func TestCliIntegration(t *testing.T) { } did := viper.GetString("LAST_DEVICE_UUID") - if err := cli.HttpGet( + if err := cli.HTTPGet( testApiEndpoint, "request", "uuid="+did, @@ -90,7 +90,7 @@ func TestCliIntegration(t *testing.T) { return } - if err := cli.HttpGet( + if err := cli.HTTPGet( testApiEndpoint, "getDevice", "address="+testAddress, @@ -103,7 +103,7 @@ func TestCliIntegration(t *testing.T) { } hostname := guuid.New().String() - if err := cli.HttpGet( + if err := cli.HTTPGet( testApiEndpoint, "set", "address="+testAddress, diff --git a/nucleus/gnmi_transport_test.go b/nucleus/gnmi_transport_test.go index d77cbe0caef4de1daf8f373b0bb821724ba3a0e3..38270c8da5fe3f31f030c5010de2b980a8d8d127 100644 --- a/nucleus/gnmi_transport_test.go +++ b/nucleus/gnmi_transport_test.go @@ -3,8 +3,6 @@ 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" "code.fbi.h-da.de/cocsn/yang-models/generated/openconfig" "context" "errors" @@ -12,46 +10,11 @@ import ( "github.com/openconfig/gnmi/proto/gnmi_ext" "github.com/openconfig/goyang/pkg/yang" "github.com/openconfig/ygot/ytypes" - log "github.com/sirupsen/logrus" "github.com/stretchr/testify/mock" - pb "google.golang.org/protobuf/proto" - "os" "reflect" "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 func testSetupGnmi() { // TODO: Set sane defaults @@ -67,43 +30,6 @@ func testSetupGnmi() { 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) { transport := mockTransport() capabilityResponse := &gpb.CapabilityResponse{ diff --git a/nucleus/http_test.go b/nucleus/http_test.go index 4658b16423a1b5261989b8508b98b38a7b842aa9..87e744773b97d34e9bf48be8dc7c9c6272cccf48 100644 --- a/nucleus/http_test.go +++ b/nucleus/http_test.go @@ -10,14 +10,6 @@ import ( "testing" ) -const apiEndpoint = "http://localhost:8080" - -var sbi SouthboundInterface -var pnd PrincipalNetworkDomain -var args string -var argsNotFound string -var d Device - func testSetupHttp() { testSetupPnd() sbi = &OpenConfig{id: defaultSbiID} @@ -166,7 +158,7 @@ func Test_httpApi(t *testing.T) { t.Errorf("httpApi() got: %v, want %v", got.StatusCode, tt.want.StatusCode) } if tt.name == "add-device" { - for k := range pnd.(*pndImplementation).devices.store{ + for k := range pnd.(*pndImplementation).devices.store { if k != mdid { if err := pnd.RemoveDevice(k); err != nil { t.Error(err) diff --git a/nucleus/inizalize_test.go b/nucleus/inizalize_test.go new file mode 100644 index 0000000000000000000000000000000000000000..06a1864a62104b42c8d67f84ef2b5704ab0212ba --- /dev/null +++ b/nucleus/inizalize_test.go @@ -0,0 +1,156 @@ +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, + } +} diff --git a/nucleus/integration_test.go b/nucleus/integration_test.go index 74a06a595e64949d7f6fea44a5d55905f70b111e..7e6b655f83fb866a6802fc7776bf7fe304f28409 100644 --- a/nucleus/integration_test.go +++ b/nucleus/integration_test.go @@ -11,18 +11,15 @@ import ( "time" ) -var address = "141.100.70.171:6030" -var opt *GnmiTransportOptions - func testSetupIntegration() { a := os.Getenv("GOSDN_TEST_ENDPOINT") if a != "" { - address = a + gnmiAddress = a } opt = &GnmiTransportOptions{ Config: gnmi.Config{ - Addr: address, + Addr: gnmiAddress, Username: "admin", Password: "arista", Encoding: gpb.Encoding_JSON_IETF, @@ -108,8 +105,8 @@ func TestGnmi_SetIntegration(t *testing.T) { } if err != nil && tt.wantErr { return - } else if got.Prefix.Target != address || - got.Response[0].Op != gpb.UpdateResult_UPDATE{ + } else if got.Prefix.Target != gnmiAddress || + got.Response[0].Op != gpb.UpdateResult_UPDATE { t.Errorf("Set() got = %v, want %v", got, tt.want) } }) @@ -220,7 +217,7 @@ func TestGnmi_SubscribeIntegration(t *testing.T) { "/interfaces/interface/name", "/system/config/hostname", }), - Target: address, + Target: gnmiAddress, }, }, wantErr: false, @@ -243,7 +240,7 @@ func TestGnmi_SubscribeIntegration(t *testing.T) { "interfaces/interface/name", "ystem/config/hostname", }), - Target: address, + Target: gnmiAddress, }, }, wantErr: true, diff --git a/nucleus/principalNetworkDomain_test.go b/nucleus/principalNetworkDomain_test.go index b168f6b31f9784807b6c268791292df3a1cf7c3a..f02f840bc948d4887983a4beb532808d9e8dc2c7 100644 --- a/nucleus/principalNetworkDomain_test.go +++ b/nucleus/principalNetworkDomain_test.go @@ -5,59 +5,11 @@ import ( "code.fbi.h-da.de/cocsn/yang-models/generated/openconfig" "errors" "github.com/google/uuid" - log "github.com/sirupsen/logrus" "github.com/stretchr/testify/mock" "reflect" "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) { pnd := newPnd() if err := pnd.addSbi(&OpenConfig{id: defaultSbiID}); err != nil { diff --git a/nucleus/southbound_test.go b/nucleus/southbound_test.go index 66249095c59f21c3ac3c245942659f83b0a9703b..ab46901446e0cac93464c4aa111436953a51436a 100644 --- a/nucleus/southbound_test.go +++ b/nucleus/southbound_test.go @@ -6,21 +6,10 @@ import ( "github.com/google/uuid" gpb "github.com/openconfig/gnmi/proto/gnmi" "github.com/openconfig/ygot/ytypes" - log "github.com/sirupsen/logrus" "reflect" "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) { type fields struct { transport Transport diff --git a/nucleus/store_test.go b/nucleus/store_test.go index 1e87d49b621b322f940ba959eb137e878ca870c4..bc9e2ab00f0e1ac4e31ccc5f616b954da6dc2528 100644 --- a/nucleus/store_test.go +++ b/nucleus/store_test.go @@ -3,24 +3,11 @@ package nucleus import ( "code.fbi.h-da.de/cocsn/gosdn/mocks" "github.com/google/uuid" - log "github.com/sirupsen/logrus" "reflect" "sort" "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) { type args struct { item Storable diff --git a/nucleus/util/proto/cap-resp-arista-ceos_test b/nucleus/util/proto/cap-resp-arista-ceos_test new file mode 100644 index 0000000000000000000000000000000000000000..009569457324faf59d7bf00bb1915f2f3ccc2ec2 --- /dev/null +++ b/nucleus/util/proto/cap-resp-arista-ceos_test @@ -0,0 +1,298 @@ + +< +arista-exp-eos-vxlan$Arista Networks <http://arista.com/> +B +ietf-netconf2IETF NETCONF (Network Configuration) Working Group +< +arista-rpol-augments$Arista Networks <http://arista.com/> +C +arista-exp-eos-igmpsnooping$Arista Networks <http://arista.com/> +8 +openconfig-vlan-typesOpenConfig working group3.1.0 +? +openconfig-system-managementOpenConfig working group0.3.0 +8 +arista-eos-types$Arista Networks <http://arista.com/> +< +openconfig-openflow-typesOpenConfig working group0.1.2 +7 +openconfig-aaa-typesOpenConfig working group0.4.1 +9 +openconfig-srte-policyOpenConfig working group0.2.1 +9 +openconfig-relay-agentOpenConfig working group0.1.1 +C +openconfig-hercules-qos!OpenConfig Hercules Working Group0.1.0 +1 +openconfig-extensionsOpenConfig working group +/ +arista-mpls-deviationsArista Networks, Inc. +< +arista-vlan-augments$Arista Networks <http://arista.com/> +: +openconfig-platform-cpuOpenConfig working group0.1.1 +< +openconfig-routing-policyOpenConfig working group3.1.1 += +openconfig-isis-lsdb-typesOpenConfig working group0.4.2 +3 +openconfig-if-ipOpenConfig working group3.0.0 +; +arista-pim-augments$Arista Networks <http://arista.com/> +4 +openconfig-if-poeOpenConfig working group0.1.1 +- +arista-isis-augmentsArista Networks, Inc. +8 +openconfig-ospf-typesOpenConfig working group0.1.3 +/ +arista-intf-deviationsArista Networks, Inc. +5 +openconfig-mpls-srOpenConfig working group3.0.1 +: +openconfig-packet-matchOpenConfig working group1.1.1 +8 +openconfig-inet-typesOpenConfig working group0.3.3 +9 +openconfig-if-ethernetOpenConfig working group2.8.1 +5 +openconfig-pf-srteOpenConfig working group0.2.0 +2 +openconfig-mplsOpenConfig working group3.1.0 +# + +arista-cliArista Networks, Inc. += +openconfig-system-terminalOpenConfig working group0.3.1 +: +openconfig-platform-psuOpenConfig working group0.2.1 +8 +openconfig-yang-typesOpenConfig working group0.2.1 +8 +openconfig-lldp-typesOpenConfig working group0.1.1 +7 +openconfig-if-tunnelOpenConfig working group0.1.1 +6 +openconfig-messagesOpenConfig working group0.0.1 +B +openconfig-platform-transceiverOpenConfig working group0.7.1 +1 +openconfig-pimOpenConfig working group0.2.0 +@ +openconfig-packet-match-typesOpenConfig working group1.0.2 +C + openconfig-segment-routing-typesOpenConfig working group0.2.0 +: +openconfig-policy-typesOpenConfig working group3.1.1 +/ +arista-lldp-deviationsArista Networks, Inc. +B +openconfig-network-instance-l3OpenConfig working group0.11.1 +E +arista-exp-eos-qos-acl-config$Arista Networks <http://arista.com/> +5 +openconfig-licenseOpenConfig working group0.2.0 +: +openconfig-platform-fanOpenConfig working group0.1.1 +/ +arista-system-augmentsArista Networks, Inc. +2 +openconfig-isisOpenConfig working group0.6.0 +H +/arista-network-instance-notsupported-deviationsArista Networks, Inc. +B +)arista-interfaces-notsupported-deviationsArista Networks, Inc. +< +arista-mpls-augments$Arista Networks <http://arista.com/> +3 +arista-openflow-deviationsArista Networks, Inc. +7 +openconfig-platformOpenConfig working group0.12.2 +D +arista-exp-eos-varp-net-inst$Arista Networks <http://arista.com/> +9 +openconfig-ospf-policyOpenConfig working group0.1.3 +6 +openconfig-if-typesOpenConfig working group0.2.1 +: +arista-exp-eos-qos$Arista Networks <http://arista.com/> +2 +openconfig-igmpOpenConfig working group0.2.0 +) +arista-gnoi-certArista Networks, Inc. +/ +arista-isis-deviationsArista Networks, Inc. +4 +openconfig-systemOpenConfig working group0.9.1 +> +arista-vlan-deviations$Arista Networks <http://arista.com/> +# +vlan-translationArista Networks +; +openconfig-local-routingOpenConfig working group1.1.0 +@ +arista-exp-eos-varp-intf$Arista Networks <http://arista.com/> +; +arista-exp-eos-mlag$Arista Networks <http://arista.com/> +8 +openconfig-igmp-typesOpenConfig working group0.1.1 +1 +openconfig-aftOpenConfig working group0.4.1 +- +arista-srte-augmentsArista Networks, Inc. +E +arista-relay-agent-deviations$Arista Networks <http://arista.com/> +7 +openconfig-mpls-rsvpOpenConfig working group3.0.2 +1 +openconfig-aaaOpenConfig working group0.4.3 +6 +arista-exp-eos$Arista Networks <http://arista.com/> +H +openconfig-hercules-platform!OpenConfig Hercules Working Group0.2.0 +. +arista-acl-deviationsArista Networks, Inc. +/ +arista-lacp-deviationsArista Networks, Inc. +? +ietf-interfaces,IETF NETMOD (Network Modeling) Working Group +. +arista-bgp-deviationsArista Networks, Inc. +< +openconfig-platform-typesOpenConfig working group1.0.0 +; +"arista-acl-notsupported-deviationsArista Networks, Inc. +3 +openconfig-typesOpenConfig working group0.6.0 +M +ietf-yang-types:IETF NETMOD (NETCONF Data Modeling Language) Working Group +1 +openconfig-qosOpenConfig working group0.2.3 +. +arista-bfd-deviationsArista Networks, Inc. +@ +'arista-messages-notsupported-deviationsArista Networks, Inc. +9 +openconfig-alarm-typesOpenConfig working group0.2.1 +< +#arista-exp-eos-l2protocolforwardingArista Networks, Inc. +6 +openconfig-openflowOpenConfig working group0.1.2 +> +%arista-system-notsupported-deviationsArista Networks, Inc. +7 +openconfig-pim-typesOpenConfig working group0.1.1 +2 +openconfig-vlanOpenConfig working group3.2.0 +F +-arista-routing-policy-notsupported-deviationsArista Networks, Inc. +7 +openconfig-aft-typesOpenConfig Working Group0.3.4 +, +arista-aft-augmentsArista Networks, Inc. +< +arista-lacp-augments$Arista Networks <http://arista.com/> +1 +openconfig-bfdOpenConfig working group0.2.1 +< +openconfig-system-loggingOpenConfig working group0.3.1 +4 +openconfig-alarmsOpenConfig working group0.3.2 +8 +openconfig-isis-typesOpenConfig working group0.4.2 +? +openconfig-platform-linecardOpenConfig working group0.1.2 +< +#arista-lldp-notsupported-deviationsArista Networks, Inc. +, +arista-exp-eos-evpnArista Networks, Inc. +5 +openconfig-rib-bgpOpenConfig working group0.7.0 +@ +'arista-platform-notsupported-deviationsArista Networks, Inc. +@ +arista-exp-eos-multicast$Arista Networks <http://arista.com/> +; +"arista-bfd-notsupported-deviationsArista Networks, Inc. +? +openconfig-policy-forwardingOpenConfig working group0.2.1 +2 +openconfig-lacpOpenConfig working group1.1.1 +- +arista-lldp-augmentsArista Networks, Inc. +; +arista-bfd-augments$Arista Networks <http://arista.com/> +1 +openconfig-bgpOpenConfig working group6.0.0 + +iana-if-typeIANA +/ +arista-rpol-deviationsArista Networks, Inc. +; +openconfig-rib-bgp-typesOpenConfig working group0.5.0 +M +ietf-inet-types:IETF NETMOD (NETCONF Data Modeling Language) Working Group +8 +openconfig-bgp-policyOpenConfig working group6.0.1 +< +arista-intf-augments$Arista Networks <http://arista.com/> +8 +arista-local-routing-deviationsArista Networks, Inc. +8 +openconfig-interfacesOpenConfig working group2.4.3 +: +openconfig-if-aggregateOpenConfig working group2.4.3 +/ +arista-srte-deviationsArista Networks, Inc. +A +arista-exp-eos-qos-config$Arista Networks <http://arista.com/> +2 +openconfig-lldpOpenConfig working group0.2.1 +J +openconfig-hercules-interfaces!OpenConfig Hercules Working Group0.2.0 +6 +openconfig-mpls-ldpOpenConfig working group3.0.2 +8 +openconfig-mpls-typesOpenConfig working group3.2.0 +M +ietf-netconf-monitoring2IETF NETCONF (Network Configuration) Working Group +7 +openconfig-bgp-typesOpenConfig working group5.2.0 +< +#arista-lacp-notsupported-deviationsArista Networks, Inc. +E +,arista-local-routing-notsupported-deviationsArista Networks, Inc. +, +arista-bgp-augmentsArista Networks, Inc. +2 +arista-netinst-deviationsArista Networks, Inc. +; +"arista-bgp-notsupported-deviationsArista Networks, Inc. +D +!openconfig-network-instance-typesOpenConfig working group0.8.2 +1 +openconfig-aclOpenConfig working group1.1.1 +7 +openconfig-qos-typesOpenConfig working group0.2.1 +5 +openconfig-procmonOpenConfig working group0.4.0 +, +arista-qos-augmentsArista Networks, Inc. +; +openconfig-platform-portOpenConfig working group0.3.3 +4 +openconfig-ospfv2OpenConfig working group0.2.2 +1 +arista-system-deviationsArista Networks, Inc. +> +openconfig-transport-typesOpenConfig working group0.11.0 +? +openconfig-network-instanceOpenConfig working group0.14.0 ++ +arista-rpc-netconfArista Networks, Inc. += +openconfig-segment-routingOpenConfig working group0.3.0 +; +"arista-qos-notsupported-deviationsArista Networks, Inc. +C +arista-exp-eos-vxlan-config$Arista Networks <http://arista.com/>�0.7.0 \ No newline at end of file diff --git a/nucleus/util/proto/req-full-node-arista-ceos_test b/nucleus/util/proto/req-full-node-arista-ceos_test new file mode 100644 index 0000000000000000000000000000000000000000..6223295e2984b8002ea5573e8fbbecb77ba9dc6d Binary files /dev/null and b/nucleus/util/proto/req-full-node-arista-ceos_test differ diff --git a/nucleus/util/proto/req-full-node_test b/nucleus/util/proto/req-full-node_test new file mode 100644 index 0000000000000000000000000000000000000000..087f7d8275a07a95d6809081bab6ccecfa81a9f1 --- /dev/null +++ b/nucleus/util/proto/req-full-node_test @@ -0,0 +1,7 @@ +2 + +interfaces + interface + +interfaces + interface( \ No newline at end of file diff --git a/nucleus/util/proto/req-interfaces-arista-ceos_test b/nucleus/util/proto/req-interfaces-arista-ceos_test new file mode 100644 index 0000000000000000000000000000000000000000..e444e33aa6d44fc9ca4538f5a030df6c8d88a708 --- /dev/null +++ b/nucleus/util/proto/req-interfaces-arista-ceos_test @@ -0,0 +1,5 @@ + + +interfaces + +interfaces( \ No newline at end of file diff --git a/nucleus/util/proto/req-interfaces-interface-arista-ceos_test b/nucleus/util/proto/req-interfaces-interface-arista-ceos_test new file mode 100644 index 0000000000000000000000000000000000000000..087f7d8275a07a95d6809081bab6ccecfa81a9f1 --- /dev/null +++ b/nucleus/util/proto/req-interfaces-interface-arista-ceos_test @@ -0,0 +1,7 @@ +2 + +interfaces + interface + +interfaces + interface( \ No newline at end of file diff --git a/nucleus/util/proto/req-interfaces-wildcard_test b/nucleus/util/proto/req-interfaces-wildcard_test new file mode 100644 index 0000000000000000000000000000000000000000..bd113697d2f21f1dbd7a3a881c6ab70cd4ec4644 --- /dev/null +++ b/nucleus/util/proto/req-interfaces-wildcard_test @@ -0,0 +1,12 @@ +c + +interfaces +interface[name=*] +state +name + +interfaces + interface +name* +state +name( \ No newline at end of file diff --git a/nucleus/util/proto/resp-full-node-arista-ceos_test b/nucleus/util/proto/resp-full-node-arista-ceos_test new file mode 100644 index 0000000000000000000000000000000000000000..9bcd16e666a683a570c5141eb01b4ed16ad52b8b Binary files /dev/null and b/nucleus/util/proto/resp-full-node-arista-ceos_test differ diff --git a/nucleus/util/proto/resp-full-node_test b/nucleus/util/proto/resp-full-node_test new file mode 100644 index 0000000000000000000000000000000000000000..4614be84e811d8a96624192f082c97ec9edf76be --- /dev/null +++ b/nucleus/util/proto/resp-full-node_test @@ -0,0 +1,7 @@ + +�""�" +0 + +interfaces + interface +nameEthernet510�"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 diff --git a/nucleus/util/proto/resp-interfaces-arista-ceos_test b/nucleus/util/proto/resp-interfaces-arista-ceos_test new file mode 100644 index 0000000000000000000000000000000000000000..58e139172f4264b079f1f61ec7f27fe454129734 --- /dev/null +++ b/nucleus/util/proto/resp-interfaces-arista-ceos_test @@ -0,0 +1,5 @@ + +�"� + + +interfaces�Z�{"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 diff --git a/nucleus/util/proto/resp-interfaces-interface-arista-ceos_test b/nucleus/util/proto/resp-interfaces-interface-arista-ceos_test new file mode 100644 index 0000000000000000000000000000000000000000..05f0804b1153e5982ff5d5e4d4a32d9d6d6be7d0 --- /dev/null +++ b/nucleus/util/proto/resp-interfaces-interface-arista-ceos_test @@ -0,0 +1,7 @@ + +�"� +0 + +interfaces + interface +nameEthernet510�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: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 diff --git a/nucleus/util/proto/resp-interfaces-wildcard_test b/nucleus/util/proto/resp-interfaces-wildcard_test new file mode 100644 index 0000000000000000000000000000000000000000..50cb9f4c7021af0340d92cde6f1320ffb066e68d --- /dev/null +++ b/nucleus/util/proto/resp-interfaces-wildcard_test @@ -0,0 +1,10 @@ + +T"R +A + +interfaces + interface +nameEthernet510 +state +name +Ethernet510 \ No newline at end of file diff --git a/nucleus/util/proto/resp-set-system-config-hostname_test b/nucleus/util/proto/resp-set-system-config-hostname_test new file mode 100644 index 0000000000000000000000000000000000000000..c656ee5bb56b47d1e306627823c577d1b51d6988 --- /dev/null +++ b/nucleus/util/proto/resp-set-system-config-hostname_test @@ -0,0 +1,8 @@ +>: +system +config +hostname +system +config + +hostname �����ȶ \ No newline at end of file diff --git a/resp-set-system-config-hostname b/resp-set-system-config-hostname new file mode 100644 index 0000000000000000000000000000000000000000..258a132cac1b6b77f5e59f41fbfdc48483ed0d62 --- /dev/null +++ b/resp-set-system-config-hostname @@ -0,0 +1,9 @@ + +"arista.kieweg.dev:6030>: +system +config +hostname +system +config + +hostname �������� \ No newline at end of file