diff --git a/.gitignore b/.gitignore index f6d6b861ea9bea47efbaec7442ef2f133e6225e4..efd36da89cad30d35c25ad1ff48db91f4e67b332 100644 --- a/.gitignore +++ b/.gitignore @@ -12,5 +12,4 @@ documentation/design/*.pdf .idea/modules.xml .idea/vcs.xml .idea/workspace.xml -restconf/bin/bin -test/.terraform.local/ +restconf/bin/bin \ No newline at end of file diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index 1c0b2ccd34501fa6f7ba6a21c40ad6cedfe6796f..cb6839da39999ed987596c885dbb2aa6c5198acf 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -2,22 +2,16 @@ variables: SECURE_ANALYZERS_PREFIX: registry.gitlab.com/gitlab-org/security-products/analyzers stages: - - .pre - test - build - deploy - - apply - - integration-test - - .post -default: - before_script: - - git config --global url."https://$GO_MODULES_USER:$GO_MODULES_ACCESS_TOKEN@code.fbi.h-da.de".insteadOf "https://code.fbi.h-da.de" +before_script: + - git config --global url."https://$GO_MODULES_USER:$GO_MODULES_ACCESS_TOKEN@code.fbi.h-da.de".insteadOf "https://code.fbi.h-da.de" include: - local: '/build/ci/.code-quality-ci.yml' - local: '/build/ci/.documentation-ci.yml' - local: '/build/ci/.security-and-compliance-ci.yml' - local: '/build/ci/.build-container.yml' - - local: '/build/ci/.test.yml' - - local: '/build/ci/.terraform-ci.yml' \ No newline at end of file + - local: '/build/ci/.test.yml' \ No newline at end of file diff --git a/ARCHITECTURE.md b/ARCHITECTURE.md deleted file mode 100644 index dcd0d814bd56c70088e075aab00a801b32c1eab5..0000000000000000000000000000000000000000 --- a/ARCHITECTURE.md +++ /dev/null @@ -1,54 +0,0 @@ -# goSDN Architecture - -This document describes the the high-level architecture of the goSDN project. All contributors should familiarize themselves with it. To avoid too much divergence from the changing code this document does focus on high-level concepts instead of implementation details. - -## Bird's Eye View - -[<img src="documentation/architecture.png" style="height:50%; width:50%" > ](documentation/architecture.png) - -On the highest level goSDn provides a gRPC northbound-interface and two types of southbound-interfaces: RESTCONF and gRPC-based. The northbound interface allows the interaction with a running goSDN daemon and may allow the stacking of multiple controllers in the future. The southbound interface (SBI) capabilities are split in `nucleus` models and plugins. The supported `nucleus` models are OpenConfig yang [openconfig-yang](https://github.com/openconfig/yang) and TAPI. Third party models and more SBI-transports can be attached using the go plugin architecture. - -The internal data representation uses [ygot](https://github.com/openconfig/ygot) generated go-structs. -It is important to note that these go-structs are generated from yang models and thus are not generic data structures. This means that the `nucleus` code is organized in silos, i.e., one particular southbound-interface is visible in the `nucleus`, as the internal data representation depend on the used yang modes in the southbound-interface. - -## Code Map - -This section briefly describes important directories and data structures. It also introduces important API calls to relevant libraries. - - -It also mentions **architecture invariants** and **API boundaries** -### `api` - -API specification for gRPC and protobuf definitions. - -**Architecture invariant:** To import gRPC related protobuf definitions use `pb` as an import prefix. For gNMI related protobuf definitions use `gpb` - -### `forks` - -Forks of `google/gnxi/gnmi` and `arista/goarista/gnmi` for gNMI server and client respectively. Subject of change once we converge to own clients and servers. - -### `nucleus/principalNetworkDomain` - -`nucleus` is the core package of goSDN. The main data structure is the `principalNetworkDomain` (PND). It reflects one administrative entity, i.e., as set of connected network devices, and is the source of truth for network state and configuration. A PND is SBI agnostic and supports multiple SBI implementations simultaneously. - -**API boundary:** The PND' is the only way to interact with an `orchestratedNetworkingDevice` - -### `nucleus/device` - -This is the representation of an `orchestratedNetworkingDevice` (OND). An `orchestratedNetworkingDevice` is the network device that is directly managed by goSDN. It holds a reference to the device's `transport` and `southboundInterface` implementation. It contains a fakeroot device based on its attached SBI. - -**Architecture invariant:** The device is does not provide any functionality to upper API layers. - -### `nucleus/southbound` - -Implementation of SBI specifics. Provides SBI models to other callers and SBI specific function deviations. - -**Architecture invariant:** Only SBIs defined by a YANG model will be supported by goSDN. - -### `nucleus/transport` `nucleus/gnmi_transport` `nucleus/restconf_transport` - -Transport between goSDN and ONDs. Current core implementations are gNMI and RESTCONF. Additionally to implementing the transports the packages also provide a mapping from general purpose goSDN API calls to diverging SBI API calls. - -For example `gNMI::Subscribe` and `RESTCONF::Push` are mapped to `gosdn::Subscribe`. - -The `gnmi_transport` implementation uses `ytypes.SetNode` to write to a device struct. diff --git a/build/ci/.build-container.yml b/build/ci/.build-container.yml index bd724da8f5d44e1941e122e361ff531f37e658ce..8bf61180f5b8ceccf4055264aa890ed8c7e262f6 100644 --- a/build/ci/.build-container.yml +++ b/build/ci/.build-container.yml @@ -1,10 +1,5 @@ -image: docker:19.03.12 - -services: - - docker:19.03.12-dind - variables: - DOCKER_TLS_CERTDIR: "/certs" + ACTIVE_DEVELOP: "v.0.1.0-codename-threadbare" DOCKER_IMAGE_SHA: $CI_REGISTRY_IMAGE:$CI_COMMIT_SHA build:docker: @@ -12,9 +7,8 @@ build:docker: tags: - baremetal rules: - - if: $CI_COMMIT_BRANCH == "develop" + - if: $CI_COMMIT_BRANCH == $ACTIVE_DEVELOP - if: $CI_COMMIT_BRANCH == $CI_DEFAULT_BRANCH - - if: $CI_PIPELINE_SOURCE == "merge_request_event" script: - > docker build \ @@ -38,37 +32,20 @@ deploy:develop: TAG: $CI_REGISTRY_IMAGE:develop HOOK: $PORTAINER_HOOK_DEVELOP rules: - - if: $CI_COMMIT_BRANCH == "develop" + - if: $CI_COMMIT_BRANCH == $ACTIVE_DEVELOP <<: *deploy -deploy:latest: - variables: - TAG: $CI_REGISTRY_IMAGE:latest - HOOK: $PORTAINER_HOOK_LATEST +deploy:tagged: rules: - - if: $CI_COMMIT_BRANCH == $CI_DEFAULT_BRANCH - <<: *deploy - -.deploy:mr: &deploy-mr - stage: deploy - needs: ["build:docker"] - tags: - - baremetal + - if: $CI_COMMIT_TAG script: - docker login -u gitlab-ci-token -p $CI_JOB_TOKEN $CI_REGISTRY - - docker tag $DOCKER_IMAGE_SHA $TAG - - docker push $TAG - -deploy:merge-request:master: - variables: - TAG: $CI_REGISTRY_IMAGE:mr-master - rules: - - if: $CI_PIPELINE_SOURCE == "merge_request_event" && $CI_MERGE_REQUEST_TARGET_BRANCH_NAME == $CI_DEFAULT_BRANCH - <<: *deploy-mr + - docker tag $CI_REGISTRY_IMAGE:latest $CI_COMMIT_TAG + - docker push $CI_COMMIT_TAG -deploy:merge-mr:develop: +deploy:latest: variables: - TAG: $CI_REGISTRY_IMAGE:mr-develop + TAG: $CI_REGISTRY_IMAGE:latest rules: - - if: $CI_PIPELINE_SOURCE == "merge_request_event" && $CI_MERGE_REQUEST_TARGET_BRANCH_NAME == 'develop' - <<: *deploy-mr + - if: $CI_COMMIT_BRANCH == $CI_DEFAULT_BRANCH + <<: *deploy diff --git a/build/ci/.terraform-ci.yml b/build/ci/.terraform-ci.yml deleted file mode 100644 index 64a9afccff47147749f84a648463464644d2d9e2..0000000000000000000000000000000000000000 --- a/build/ci/.terraform-ci.yml +++ /dev/null @@ -1,75 +0,0 @@ -image: registry.gitlab.com/gitlab-org/terraform-images/stable:latest - -variables: - TF_ROOT: ${CI_PROJECT_DIR}/test/terraform - TF_ADDRESS: ${CI_API_V4_URL}/projects/${CI_PROJECT_ID}/terraform/state/integration - -cache: - key: integration - paths: - - ${TF_ROOT}/.terraform - -.terraform_prefab: &tf - variables: - CI_DEBUG_TRACE: "false" - before_script: - - cd ${TF_ROOT} - - export TF_VAR_integration_username=terraform - - export TF_VAR_integration_access_token=${TERRAFORM_API_TOKEN} - - export TF_VAR_integration_registry=${CI_REGISTRY} - - export TF_VAR_tls_key=${DOCKER_TLS_KEY} - - export TF_VAR_tls_cert=${DOCKER_TLS_CERT} - - export TF_VAR_tls_ca_cert=${DOCKER_TLS_CA} - rules: - - if: $CI_PIPELINE_SOURCE == "merge_request_event" && $CI_MERGE_REQUEST_TARGET_BRANCH_NAME == $CI_DEFAULT_BRANCH - variables: - TF_VAR_container_tag: $CI_REGISTRY_IMAGE:mr-master - - if: $CI_PIPELINE_SOURCE == "merge_request_event" && $CI_MERGE_REQUEST_TARGET_BRANCH_NAME == 'develop' - variables: - TF_VAR_container_tag: $CI_REGISTRY_IMAGE:mr-develop - - if: $CI_COMMIT_BRANCH == "integration-test" - - if: $CI_COMMIT_BRANCH == "develop" - - if: $CI_COMMIT_BRANCH == $CI_DEFAULT_BRANCH - -init: - stage: .pre - script: - - gitlab-terraform init - <<: *tf - -validate: - stage: test - script: - - gitlab-terraform validate - needs: ["init"] - <<: *tf - -plan: - before_script: - - cd ${TF_ROOT} - stage: build - script: - - gitlab-terraform plan - - gitlab-terraform plan-json - artifacts: - name: plan - paths: - - ${TF_ROOT}/plan.cache - reports: - terraform: ${TF_ROOT}/plan.json - needs: ["validate"] - <<: *tf - -apply: - stage: apply - script: - - gitlab-terraform apply - dependencies: - - plan - <<: *tf - -destroy: - stage: .post - script: - - gitlab-terraform destroy - <<: *tf \ No newline at end of file diff --git a/build/ci/.test.yml b/build/ci/.test.yml index 1a0d55ac79da8ec7d1f653118ee217e81771a06e..f6114fcf3ecfa37a8c54e199fdc35a9629369de5 100644 --- a/build/ci/.test.yml +++ b/build/ci/.test.yml @@ -1,34 +1,23 @@ -integration-test: +unit-test-master: image: golang:1.14 - stage: integration-test + stage: test rules: - if: $CI_PIPELINE_SOURCE == "merge_request_event" && $CI_MERGE_REQUEST_TARGET_BRANCH_NAME == $CI_DEFAULT_BRANCH - if: $CI_COMMIT_BRANCH == $CI_DEFAULT_BRANCH - - if: $CI_COMMIT_BRANCH == "integration-test" - allow_failure: true script: - go test -race $(go list ./... | grep -v /forks/ | grep -v /api/ | grep -v /mocks ) -v -coverprofile=coverage.out after_script: - go tool cover -func=coverage.out -unit-test-merge-request: - image: golang:1.14 - stage: integration-test - allow_failure: true - rules: - - if: $CI_PIPELINE_SOURCE == "merge_request_event" && $CI_MERGE_REQUEST_TARGET_BRANCH_NAME != $CI_DEFAULT_BRANCH - script: - - go test -race $(go list ./... | grep -v /forks/ | grep -v /api/ | grep -v /mocks ) -v -coverprofile=coverage.out - after_script: - - go tool cover -func=coverage.out unit-test: image: golang:1.14 stage: test allow_failure: true rules: + - if: $CI_PIPELINE_SOURCE == "merge_request_event" && $CI_MERGE_REQUEST_TARGET_BRANCH_NAME != $CI_DEFAULT_BRANCH - if: $CI_COMMIT_BRANCH != $CI_DEFAULT_BRANCH script: - - go test -short -race $(go list ./... | grep -v /forks/ | grep -v /api/ | grep -v /mocks ) -v -coverprofile=coverage.out + - go test -race $(go list ./... | grep -v /forks/ | grep -v /api/ | grep -v /mocks ) -v -coverprofile=coverage.out after_script: - go tool cover -func=coverage.out \ No newline at end of file diff --git a/cmd/gnmi-capabilities/capabilities.go b/cmd/gnmi-capabilities/capabilities.go deleted file mode 100644 index 54601b8a7ede5805a0d1a3ad633424020a8fc736..0000000000000000000000000000000000000000 --- a/cmd/gnmi-capabilities/capabilities.go +++ /dev/null @@ -1,41 +0,0 @@ -package main - -import ( - "code.fbi.h-da.de/cocsn/gosdn/forks/goarista/gnmi" - "code.fbi.h-da.de/cocsn/gosdn/nucleus" - "context" - "fmt" - gpb "github.com/openconfig/gnmi/proto/gnmi" - log "github.com/sirupsen/logrus" - "strings" -) - -func main() { - cfg := &gnmi.Config{ - Addr: "[2003:e6:1722:fed0:0:242:ac11:5]:6030", - Username: "admin", - Password: "arista", - Encoding: gpb.Encoding_JSON_IETF, - } - transport, err := nucleus.NewGnmiTransport(cfg) - if err != nil { - log.Error(err) - } - resp, err := transport.Capabilities(context.Background()) - if err != nil { - log.Error(err) - } - modelData := resp.(*gpb.CapabilityResponse).SupportedModels - b := strings.Builder{} - for _, elem := range modelData { - _, err := b.WriteString(elem.Name) - if err != nil { - log.Error(err) - } - _, err = b.WriteString("\n") - if err != nil { - log.Error(err) - } - } - fmt.Println(b.String()) -} diff --git a/cmd/gnmi-telemetry/telemetry.go b/cmd/gnmi-telemetry/telemetry.go index 42dc9e4506da080e6b50d0103eefcb8e6e215401..fbeb07fdc9c7a5d740c50d72862b887a8d00fe96 100644 --- a/cmd/gnmi-telemetry/telemetry.go +++ b/cmd/gnmi-telemetry/telemetry.go @@ -15,7 +15,7 @@ import ( func main() { log.SetLevel(log.DebugLevel) - sbi := &nucleus.OpenConfig{} + sbi := &nucleus.AristaOC{} device, err := nucleus.NewDevice("gnmi", sbi, &nucleus.GnmiTransportOptions{ @@ -29,24 +29,14 @@ func main() { if err != nil { log.Debug(err) } - pnd, err := nucleus.NewPND("openconfig", "a simple openconfig PND", uuid.New(), sbi) + pnd, err := nucleus.NewPND("openconfig", "a simple openconfig PND", sbi) if err != nil { log.Fatal(err) } - if err := pnd.AddDevice(&device); err != nil { + if err := pnd.AddDevice(device); err != nil { log.Fatal(err) } - cfg := &gnmi.Config{ - Addr: "[2003:e6:1722:fed0:0:242:ac11:5]:6030", - Username: "admin", - Password: "arista", - Encoding: gpb.Encoding_JSON_IETF, - } - transport, _ := nucleus.NewGnmiTransport(cfg) - - device.Transport = transport - paths := []string{"/interfaces/interface/name"} opts := &gnmi.SubscribeOptions{ diff --git a/cmd/gnmi/gnmi.go b/cmd/gnmi/gnmi.go index 670a4a7e9a93651aa2557de418fa9c264ae423b1..ba24d802ddb593aae76b97cd5e54f46802914c03 100644 --- a/cmd/gnmi/gnmi.go +++ b/cmd/gnmi/gnmi.go @@ -13,15 +13,19 @@ import ( func main() { log.SetLevel(log.DebugLevel) - sbi := &nucleus.OpenConfig{} - device := &nucleus.Device{ - GoStruct: sbi.Schema().Root, - SBI: sbi, - Config: nucleus.DeviceConfig{ - Uuid: uuid.New(), - }, + sbi := &nucleus.AristaOC{} + device, err := nucleus.NewDevice("gnmi", sbi, + &nucleus.GnmiTransportOptions{ + Addr: "portainer.danet.fbi.h-da.de:6030", + Username: "admin", + Password: "arista", + SetNode: sbi.SetNode(), + Encoding: gpb.Encoding_JSON_IETF, + }) + if err != nil { + log.Debug(err) } - pnd, err := nucleus.NewPND("openconfig", "test description", uuid.New(), sbi) + pnd, err := nucleus.NewPND("openconfig", "test description", sbi) if err != nil { log.Fatal(err) } @@ -29,22 +33,7 @@ func main() { log.Fatal(err) } - cfg := &gnmi.Config{ - Addr: "[2003:e6:1722:fed0:0:242:ac11:5]:6030", - Username: "admin", - Password: "arista", - Encoding: gpb.Encoding_JSON_IETF, - } - transport, err := nucleus.NewGnmiTransport(cfg) - if err != nil { - log.Fatal(err) - } - transport.SetNode = sbi.SetNode() - transport.Unmarshal = sbi.Unmarshal() - - device.Transport = transport - - p := []string{"/interfaces"} + p := []string{"/interfaces/interface"} errors := 0 for _, path := range p { err := pnd.RequestAll(path) diff --git a/cmd/gosdn/main.go b/cmd/gosdn/main.go index 367250512af6318f1ad84ec85c139bfec28e1206..2ba0f61f0edc703b9306dbcc3e733b9900e8912a 100644 --- a/cmd/gosdn/main.go +++ b/cmd/gosdn/main.go @@ -3,14 +3,10 @@ package main import ( "code.fbi.h-da.de/cocsn/gosdn/nucleus" log "github.com/sirupsen/logrus" - "os" ) func main() { - _, debug := os.LookupEnv("GOSDN_DEBUG") - if debug { - log.SetLevel(log.DebugLevel) - } + log.SetLevel(log.DebugLevel) // Setup a channel to communicate if goSDN should shutdown. IsRunningChannel := make(chan bool) diff --git a/cmd/path-traversal/path_traversal.go b/cmd/path-traversal/path_traversal.go index 4f951a53c5288738c5333e9cdab962a5f4ff005f..353c2b8e1c9fcb2538818651e40e6759af2e22a3 100644 --- a/cmd/path-traversal/path_traversal.go +++ b/cmd/path-traversal/path_traversal.go @@ -2,13 +2,13 @@ package main import ( "code.fbi.h-da.de/cocsn/gosdn/nucleus/util" - "code.fbi.h-da.de/cocsn/yang-models/generated/openconfig" + "code.fbi.h-da.de/cocsn/yang-models/generated/arista" log "github.com/sirupsen/logrus" ) func main() { log.SetLevel(log.DebugLevel) - schema, _ := openconfig.Schema() + schema, _ := arista.Schema() paths := util.NewPaths() paths.ParseSchema(schema, "device") diff --git a/configs/gosdn.toml b/configs/gosdn.toml index fe17c7f6c72bd74dce8681c495555e6d6b9ddd37..229a018b6f844719e7fbb98a3ff18f4f672b6d0d 100644 --- a/configs/gosdn.toml +++ b/configs/gosdn.toml @@ -1,4 +1,4 @@ -CliSocket = ":55055" +CliSocket = "localhost:55055" db.socket = "bolt://172.17.0.4:7687" db.user = "" db.password = "" diff --git a/documentation/architecture.png b/documentation/architecture.png deleted file mode 100644 index d56101394e87c5584b4a770d3fdd201da378b1b1..0000000000000000000000000000000000000000 Binary files a/documentation/architecture.png and /dev/null differ diff --git a/forks/goarista/gnmi/operation.go b/forks/goarista/gnmi/operation.go index 01005d6f0877102e4e73124238b4e7cde93fcda9..15ab81fcafee0d693a58bcc265244df7d75de164 100644 --- a/forks/goarista/gnmi/operation.go +++ b/forks/goarista/gnmi/operation.go @@ -23,6 +23,7 @@ import ( pb "github.com/openconfig/gnmi/proto/gnmi" "github.com/openconfig/gnmi/proto/gnmi_ext" + "google.golang.org/grpc/codes" ) // GetWithRequest takes a fully formed GetRequest, performs the Get, @@ -53,6 +54,22 @@ func Get(ctx context.Context, client pb.GNMIClient, paths [][]string, return GetWithRequest(ctx, client, req) } +// Capabilities retuns the capabilities of the ciena. +func Capabilities(ctx context.Context, client pb.GNMIClient) error { + resp, err := client.Capabilities(ctx, &pb.CapabilityRequest{}) + if err != nil { + return err + } + fmt.Printf("Version: %s\n", resp.GNMIVersion) + for _, mod := range resp.SupportedModels { + fmt.Printf("SupportedModel: %s\n", mod) + } + for _, enc := range resp.SupportedEncodings { + fmt.Printf("SupportedEncoding: %s\n", enc) + } + return nil +} + // val may be a path to a file or it may be json. First see if it is a // file, if so return its contents, otherwise return val func extractJSON(val string) []byte { @@ -414,17 +431,24 @@ func newSetRequest(setOps []*Operation, exts ...*gnmi_ext.Extension) (*pb.SetReq return req, nil } -// Set sends a SetRequest to the given client. +// Set sends a SetRequest to the given ciena. func Set(ctx context.Context, client pb.GNMIClient, setOps []*Operation, - exts ...*gnmi_ext.Extension) (*pb.SetResponse, error) { + exts ...*gnmi_ext.Extension) error { req, err := newSetRequest(setOps, exts...) if err != nil { - return nil, err + return err } - return client.Set(ctx, req) + resp, err := client.Set(ctx, req) + if err != nil { + return err + } + if resp.Message != nil && codes.Code(resp.Message.Code) != codes.OK { + return errors.New(resp.Message.Message) + } + return nil } -// Subscribe sends a SubscribeRequest to the given client. +// Subscribe sends a SubscribeRequest to the given ciena. // Deprecated: Use SubscribeErr instead. func Subscribe(ctx context.Context, client pb.GNMIClient, subscribeOptions *SubscribeOptions, respChan chan<- *pb.SubscribeResponse, errChan chan<- error) { diff --git a/mocks/Transport.go b/mocks/Transport.go index 6dc256acae1ee730623be6ab1fd5508f9f4ed9f5..a2df2b287b0974640857cef15e895121be5e513c 100644 --- a/mocks/Transport.go +++ b/mocks/Transport.go @@ -76,14 +76,18 @@ func (_m *Transport) ProcessResponse(resp interface{}, root interface{}, models } // Set provides a mock function with given fields: ctx, params -func (_m *Transport) Set(ctx context.Context, params ...interface{}) (interface{}, error) { +func (_m *Transport) Set(ctx context.Context, params ...string) (interface{}, error) { + _va := make([]interface{}, len(params)) + for _i := range params { + _va[_i] = params[_i] + } var _ca []interface{} _ca = append(_ca, ctx) - _ca = append(_ca, params...) + _ca = append(_ca, _va...) ret := _m.Called(_ca...) var r0 interface{} - if rf, ok := ret.Get(0).(func(context.Context, ...interface{}) interface{}); ok { + if rf, ok := ret.Get(0).(func(context.Context, ...string) interface{}); ok { r0 = rf(ctx, params...) } else { if ret.Get(0) != nil { @@ -92,7 +96,7 @@ func (_m *Transport) Set(ctx context.Context, params ...interface{}) (interface{ } var r1 error - if rf, ok := ret.Get(1).(func(context.Context, ...interface{}) error); ok { + if rf, ok := ret.Get(1).(func(context.Context, ...string) error); ok { r1 = rf(ctx, params...) } else { r1 = ret.Error(1) diff --git a/nucleus/cli-handling.go b/nucleus/cli-handling.go index 4eb3c2a874e4dfb5bce042cf60ee991d52af1c04..a8d3a77c5a360f5aa1c0dd393f76f2528d5d1ea3 100644 --- a/nucleus/cli-handling.go +++ b/nucleus/cli-handling.go @@ -145,7 +145,7 @@ func (s *server) CreatePND(ctx context.Context, in *pb.CreatePNDRequest) (*pb.Cr return nil, err } id := uuid.New() - pnd, err := NewPND(in.GetName(), in.GetDescription(), id, sbi.(SouthboundInterface)) + pnd, err := NewPNDwithId(in.GetName(), in.GetDescription(), id, sbi.(SouthboundInterface)) if err != nil { log.Error(err) return &pb.CreatePNDReply{Message: err.Error()}, err diff --git a/nucleus/cli-handling_test.go b/nucleus/cli-handling_test.go index 522de1a0cfa12cea3ac919e23f5696865e7159f1..6a5a49d394fb238c662d9458411c1d448328ddf4 100644 --- a/nucleus/cli-handling_test.go +++ b/nucleus/cli-handling_test.go @@ -374,4 +374,4 @@ func Test_server_Shutdown(t *testing.T) { } }) } -} +} \ No newline at end of file diff --git a/nucleus/controller.go b/nucleus/controller.go index e503fb60e5f8fa45f60b5d557b7c84a7af530f71..6c237be25c98da4e161413ed2507338338b0c894 100644 --- a/nucleus/controller.go +++ b/nucleus/controller.go @@ -1,7 +1,6 @@ package nucleus import ( - "github.com/google/uuid" "os" "code.fbi.h-da.de/cocsn/gosdn/database" @@ -29,7 +28,7 @@ func (c *Core) Initialize(IsRunningChannel chan bool) error { } // Set config defaults - viper.SetDefault("socket", ":55055") + viper.SetDefault("socket", "localhost:55055") // Set config path and read config viper.SetConfigName("gosdn") @@ -57,10 +56,10 @@ func (c *Core) AttachDatabase() { // CreateSouthboundInterfaces initializes the controller with its supported SBIs func (c *Core) CreateSouthboundInterfaces() error { - if err := c.sbic.add(&OpenConfig{id: uuid.New()}); err != nil { + if err := c.sbic.add(&AristaOC{}); err != nil { return err } - if err := c.sbic.add(&OpenConfig{id: uuid.New()}); err != nil { + if err := c.sbic.add(&OpenConfig{}); err != nil { return err } return nil diff --git a/nucleus/device_test.go b/nucleus/device_test.go index 443744d8c8c91ac46a8fade40c91967effd125f7..0fa4ffa903a1f894325aaf5211341e19a2df754a 100644 --- a/nucleus/device_test.go +++ b/nucleus/device_test.go @@ -1,93 +1 @@ package nucleus - -import ( - "code.fbi.h-da.de/cocsn/yang-models/generated/openconfig" - "github.com/google/uuid" - "github.com/openconfig/ygot/ygot" - "reflect" - "testing" -) - -func TestDevice_Id(t *testing.T) { - type fields struct { - GoStruct ygot.GoStruct - SBI SouthboundInterface - Config DeviceConfig - Transport Transport - } - tests := []struct { - name string - fields fields - want uuid.UUID - }{ - { - name: "default", - fields: fields{ - Config: DeviceConfig{ - Uuid: did, - }, - }, - want: did, - }, - } - for _, tt := range tests { - t.Run(tt.name, func(t *testing.T) { - d := &Device{ - GoStruct: tt.fields.GoStruct, - SBI: tt.fields.SBI, - Config: tt.fields.Config, - Transport: tt.fields.Transport, - } - if got := d.Id(); !reflect.DeepEqual(got, tt.want) { - t.Errorf("Id() = %v, want %v", got, tt.want) - } - }) - } -} - -func TestNewDevice(t *testing.T) { - sbi := &OpenConfig{} - type args struct { - sbi SouthboundInterface - addr string - username string - password string - transport Transport - } - tests := []struct { - name string - args args - want *Device - }{ - { - name: "default", - args: args{ - sbi: sbi, - addr: "testdevice", - username: "testuser", - password: "testpassword", - transport: &Gnmi{}, - }, - want: &Device{ - GoStruct: &openconfig.Device{}, - SBI: sbi, - Config: DeviceConfig{ - Uuid: uuid.UUID{}, - Address: "testdevice", - Username: "testuser", - Password: "testpassword", - }, - Transport: &Gnmi{}, - }, - }, - } - for _, tt := range tests { - t.Run(tt.name, func(t *testing.T) { - got := NewDevice(tt.args.sbi, tt.args.addr, tt.args.username, tt.args.password, tt.args.transport) - tt.want.Config.Uuid = got.Id() - if !reflect.DeepEqual(got, tt.want) { - t.Errorf("NewDevice() = %v, want %v", got, tt.want) - } - }) - } -} diff --git a/nucleus/errors.go b/nucleus/errors.go index 9656b7327acc584f7240fa09af334904e2f92d06..ce23a6d6f9d18bc6a650b941c48fa561a2dfc98e 100644 --- a/nucleus/errors.go +++ b/nucleus/errors.go @@ -33,26 +33,3 @@ type ErrInvalidTypeAssertion struct { func (e ErrInvalidTypeAssertion) Error() string { return fmt.Sprintf("%v does not implement %v", e.v, e.t) } - -type ErrUnsupportedPath struct { - p interface{} -} - -func (e ErrUnsupportedPath) Error() string { - return fmt.Sprintf("path %v is not supported", e.p) -} - -type ErrNotYetImplemented struct{} - -func (e ErrNotYetImplemented) Error() string { - return fmt.Sprintf("function not yet implemented") -} - -type ErrInvalidParameters struct { - f interface{} - r interface{} -} - -func (e ErrInvalidParameters) Error() string { - return fmt.Sprintf("invalid parameters for %v: %v", e.f, e.r) -} \ No newline at end of file diff --git a/nucleus/gnmi_transport.go b/nucleus/gnmi_transport.go index c8e43a80012728a0d094b7fe0c9eda62e09d583f..baee06334c303c24b20bcaa804be3c03ecb4fd03 100644 --- a/nucleus/gnmi_transport.go +++ b/nucleus/gnmi_transport.go @@ -2,34 +2,51 @@ package nucleus import ( "code.fbi.h-da.de/cocsn/gosdn/forks/goarista/gnmi" + "code.fbi.h-da.de/cocsn/gosdn/nucleus/util" "context" + "errors" gpb "github.com/openconfig/gnmi/proto/gnmi" "github.com/openconfig/gnmi/proto/gnmi_ext" "github.com/openconfig/goyang/pkg/yang" "github.com/openconfig/ygot/ytypes" log "github.com/sirupsen/logrus" "strings" + "time" ) -func NewGnmiTransport(config *gnmi.Config) (*Gnmi, error) { +var tapProto bool + +func init() { + // tapProto taps gpb.getResponse and gpb.Getrequests + // to binary file + // CAUTION only set true if you know what you do + tapProto = false +} + +type Gnmi struct { + SetNode func(schema *yang.Entry, root interface{}, path *gpb.Path, val interface{}, opts ...ytypes.SetNodeOpt) error + RespChan chan *gpb.SubscribeResponse + Options *GnmiTransportOptions + config *gnmi.Config + client gpb.GNMIClient +} + +func NewGnmiTransport(opts *GnmiTransportOptions) (*Gnmi, error) { + config := createConfig(opts) c, err := gnmi.Dial(config) if err != nil { return nil, err } return &Gnmi{ - config: config, - client: c, + SetNode: opts.SetNode, + RespChan: opts.RespChan, + Options: opts, + config: config, + client: c, }, nil } -type Gnmi struct { - SetNode func(schema *yang.Entry, root interface{}, path *gpb.Path, val interface{}, opts ...ytypes.SetNodeOpt) error - Unmarshal func([]byte, []string, interface{}, ...ytypes.UnmarshalOpt) error - RespChan chan *gpb.SubscribeResponse - config *gnmi.Config - client gpb.GNMIClient -} - +//SetConfig sets the config of gnmi func (g *Gnmi) SetConfig(config *gnmi.Config) { g.config = config } @@ -68,44 +85,11 @@ func (g *Gnmi) Get(ctx context.Context, params ...string) (interface{}, error) { paths := gnmi.SplitPaths(params) return g.get(ctx, paths, "") } - -// Set takes a slice of params. This slice must contain at least one operation. -// It can contain an additional arbitrary amount of operations and extensions. -func (g *Gnmi) Set(ctx context.Context, params ...interface{}) (interface{}, error) { +func (g *Gnmi) Set(ctx context.Context, params ...string) (interface{}, error) { if g.client == nil { return nil, &ErrNilClient{} } - if len(params) == 0 { - return nil, &ErrInvalidParameters{ - f: "gnmi.Set()", - r: "no parameters provided", - } - } - - // Loop over params and create ops and exts - // Invalid params cause unhealable error - ops := make([]*gnmi.Operation, 0) - exts := make([]*gnmi_ext.Extension, 0) - for _,p := range params{ - switch p.(type) { - case *gnmi.Operation: - ops = append(ops, p.(*gnmi.Operation)) - case *gnmi_ext.Extension: - exts = append(exts, p.(*gnmi_ext.Extension)) - default: - return nil, &ErrInvalidParameters{ - f: "gnmi.Set()", - r: "params contain invalid type", - } - } - } - if len(ops) == 0 { - return nil, &ErrInvalidParameters{ - f: "gnmi.Set()", - r: "no operations provided", - } - } - return g.set(ctx, ops, exts...) + return nil, nil } func (g *Gnmi) Subscribe(ctx context.Context, params ...string) error { @@ -122,23 +106,26 @@ func (g *Gnmi) Type() string { // ProcessResponse takes a gNMI response and serializes the contents to the root struct. func (g *Gnmi) ProcessResponse(resp interface{}, root interface{}, s *ytypes.Schema) error { models := s.SchemaTree + opts := []ytypes.SetNodeOpt{&ytypes.InitMissingElements{}, &ytypes.TolerateJSONInconsistencies{}} r := resp.(*gpb.GetResponse) rn := r.Notification for _, msg := range rn { for _, update := range msg.Update { + prefix := msg.Prefix path := update.Path fullPath := path - val, ok := update.Val.Value.(*gpb.TypedValue_JsonIetfVal) - if ok { - opts := []ytypes.UnmarshalOpt{&ytypes.IgnoreExtraFields{}} - if err := g.Unmarshal(val.JsonIetfVal, extraxtPathElements(fullPath), root, opts...); err != nil { + if prefix != nil { + var err error + fullPath, err = gnmiFullPath(prefix, path) + if err != nil { return err } - return nil } - // TODO(mk): Evaluate hardcoded model key + modelKey := extractModelKey(fullPath) + + log.Debug(modelKey) + schema := models["Device"] - opts := []ytypes.SetNodeOpt{&ytypes.InitMissingElements{}, &ytypes.TolerateJSONInconsistencies{}} if err := g.SetNode(schema, root, update.Path, update.Val, opts...); err != nil { return err } @@ -147,18 +134,36 @@ func (g *Gnmi) ProcessResponse(resp interface{}, root interface{}, s *ytypes.Sch return nil } -func extraxtPathElements(path *gpb.Path) []string { - elems := make([]string, len(path.Elem)) - for i, e := range path.Elem { - elems[i] = strings.Title(e.Name) +// extractModelKey extracts the model's key from the full path. Highly model specific for now +// TODO: Remove hard coded model prefix +// TODO: Figure out why path.Elem() is empty but path.Elememt() is deprecated +func extractModelKey(path *gpb.Path) string { + var b strings.Builder + delim := "_" + b.WriteString("OpenconfigInterfaces") + for i := 0; i < len(path.Elem)-1; i++ { + pathElement := path.Elem[i] + b.WriteString(delim) + b.WriteString(strings.Title(pathElement.Name)) + } + return b.String() +} + +// gnmiFullPath builds the full path from the prefix and path. +// Copycat from forks/google/gnmi/server.go +func gnmiFullPath(prefix, path *gpb.Path) (*gpb.Path, error) { + fullPath := &gpb.Path{Origin: path.Origin} + if path.GetElement() != nil { + return nil, errors.New("deprecated path element type is unsupported") + } + if path.GetElem() != nil { + fullPath.Elem = append(prefix.GetElem(), path.GetElem()...) } - return elems + return fullPath, nil } // Capabilities calls GNMI capabilities func (g *Gnmi) Capabilities(ctx context.Context) (interface{}, error) { - ctx = gnmi.NewContext(ctx, g.config) - ctx = context.WithValue(ctx, "config", g.config) resp, err := g.client.Capabilities(ctx, &gpb.CapabilityRequest{}) if err != nil { return nil, err @@ -166,7 +171,7 @@ func (g *Gnmi) Capabilities(ctx context.Context) (interface{}, error) { return resp, nil } -// get calls GNMI get +// Get calls GNMI get func (g *Gnmi) get(ctx context.Context, paths [][]string, origin string) (interface{}, error) { ctx = gnmi.NewContext(ctx, g.config) ctx = context.WithValue(ctx, "config", g.config) @@ -181,6 +186,14 @@ func (g *Gnmi) get(ctx context.Context, paths [][]string, origin string) (interf // and returns any response. func (g *Gnmi) getWithRequest(ctx context.Context, req *gpb.GetRequest) (interface{}, error) { resp, err := g.client.Get(ctx, req) + if tapProto { + if err := util.Write(req, "req-"+time.Now().String()); err != nil { + log.Errorf("error while writing request: %v", err) + } + if err := util.Write(resp, "resp-"+time.Now().String()); err != nil { + log.Errorf("error while writing request: %v", err) + } + } if err != nil { return nil, err } @@ -189,7 +202,7 @@ func (g *Gnmi) getWithRequest(ctx context.Context, req *gpb.GetRequest) (interfa // Set calls GNMI set func (g *Gnmi) set(ctx context.Context, setOps []*gnmi.Operation, - exts ...*gnmi_ext.Extension) (*gpb.SetResponse, error) { + exts ...*gnmi_ext.Extension) error { ctx = gnmi.NewContext(ctx, g.config) return gnmi.Set(ctx, g.client, setOps, exts...) } @@ -201,10 +214,8 @@ func (g *Gnmi) subscribe(ctx context.Context) error { go func() { for { resp := <-g.RespChan - if resp != nil { - if err := gnmi.LogSubscribeResponse(resp); err != nil { - log.Fatal(err) - } + if err := gnmi.LogSubscribeResponse(resp); err != nil { + log.Fatal(err) } } }() diff --git a/nucleus/gnmi_transport_test.go b/nucleus/gnmi_transport_test.go index ebc08a383d2bad8c170347665edb6f40326ca77e..3cd5cc2d706978b141299b51a97250466751e51e 100644 --- a/nucleus/gnmi_transport_test.go +++ b/nucleus/gnmi_transport_test.go @@ -4,14 +4,12 @@ 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" - "code.fbi.h-da.de/cocsn/gosdn/test" + "code.fbi.h-da.de/cocsn/gosdn/test_resources" + "code.fbi.h-da.de/cocsn/yang-models/generated/arista" "code.fbi.h-da.de/cocsn/yang-models/generated/openconfig" "context" - "errors" log "github.com/golang/glog" - "github.com/golang/protobuf/proto" gpb "github.com/openconfig/gnmi/proto/gnmi" - "github.com/openconfig/gnmi/proto/gnmi_ext" "github.com/openconfig/goyang/pkg/yang" "github.com/openconfig/ygot/ytypes" "github.com/stretchr/testify/mock" @@ -23,29 +21,9 @@ import ( // TestMain bootstraps all tests. Humongous beast // TODO: Move somewhere more sensible func TestMain(m *testing.M) { - gnmiMessages = map[string]proto.Message{ - "../test/cap-resp-arista-ceos": &gpb.CapabilityResponse{}, - "../test/req-full-node": &gpb.GetRequest{}, - "../test/req-full-node-arista-ceos": &gpb.GetRequest{}, - "../test/req-interfaces-arista-ceos": &gpb.GetRequest{}, - "../test/req-interfaces-interface-arista-ceos": &gpb.GetRequest{}, - "../test/req-interfaces-wildcard": &gpb.GetRequest{}, - "../test/resp-full-node": &gpb.GetResponse{}, - "../test/resp-full-node-arista-ceos": &gpb.GetResponse{}, - "../test/resp-interfaces-arista-ceos": &gpb.GetResponse{}, - "../test/resp-interfaces-interface-arista-ceos": &gpb.GetResponse{}, - "../test/resp-interfaces-wildcard": &gpb.GetResponse{}, - } - for k, v := range gnmiMessages { - if err := util.Read(k, v); err != nil { - log.Fatalf("error parsing %v: %v", k, err) - } - } testSetupGnmi() testSetupPnd() testSetupStore() - testSetupSbi() - testSetupIntegration() os.Exit(m.Run()) } @@ -67,7 +45,7 @@ func testSetupGnmi() { func targetRunner() { for { addr := <-startGnmiTarget - if err := test.GnmiTarget(stopGnmiTarget, addr); err != nil { + if err := test_resources.GnmiTarget(stopGnmiTarget, addr); err != nil { log.Fatal(err) } } @@ -83,7 +61,17 @@ func mockTransport() Gnmi { } } -var gnmiMessages map[string]proto.Message +func newGnmiTransportOptions() *GnmiTransportOptions { + return &GnmiTransportOptions{ + Username: "test", + Password: "test", + Addr: "localhost:13371", + SetNode: nil, + RespChan: make(chan *gpb.SubscribeResponse), + Encoding: gpb.Encoding_PROTO, + } +} + var gnmiConfig *gnmi.Config var startGnmiTarget chan string var stopGnmiTarget chan bool @@ -134,11 +122,9 @@ func TestGnmi_Capabilities(t *testing.T) { capabilityRequest := &gpb.CapabilityRequest{} + ctx := context.Background() transport.client.(*mocks.GNMIClient). - On("NewContext", mockContext, mock.Anything). - Return(mockContext) - transport.client.(*mocks.GNMIClient). - On("Capabilities", mockContext, capabilityRequest). + On("Capabilities", ctx, capabilityRequest). Return(capabilityResponse, nil) type fields struct { @@ -341,28 +327,37 @@ func TestGnmi_ProcessResponse(t *testing.T) { wantErr bool }{ { - name: "Interfaces Interface", - fields: fields{Sbi: &OpenConfig{}}, + name: "Arista Full Node", + fields: fields{Sbi: &AristaOC{}}, args: args{ - path: "../test/resp-interfaces-interface-arista-ceos", - root: &openconfig.Device{}, + path: "../test_resources/resp-full-node", + root: &arista.Device{}, }, - wantErr: true, + wantErr: false, }, { - name: "Interfaces Wildcard", + name: "Arista Interfaces Wildcard", + fields: fields{Sbi: &AristaOC{}}, + args: args{ + path: "../test_resources/resp-interfaces-wildcard", + root: &arista.Device{}, + }, + wantErr: false, + }, + { + name: "OC Full Node", fields: fields{Sbi: &OpenConfig{}}, args: args{ - path: "../test/resp-interfaces-wildcard", + path: "../test_resources/resp-full-node", root: &openconfig.Device{}, }, wantErr: false, }, { - name: "Root", + name: "OC Interfaces Wildcard", fields: fields{Sbi: &OpenConfig{}}, args: args{ - path: "../test/resp-full-node-arista-ceos", + path: "../test_resources/resp-interfaces-wildcard", root: &openconfig.Device{}, }, wantErr: false, @@ -371,11 +366,13 @@ func TestGnmi_ProcessResponse(t *testing.T) { for _, tt := range tests { t.Run(tt.name, func(t *testing.T) { g := &Gnmi{ - SetNode: tt.fields.Sbi.SetNode(), - Unmarshal: tt.fields.Sbi.(*OpenConfig).Unmarshal(), + SetNode: tt.fields.Sbi.SetNode(), } s := tt.fields.Sbi.Schema() - resp := gnmiMessages[tt.args.path] + resp := &gpb.GetResponse{} + if err := util.Read(tt.args.path, resp); err != nil { + t.Errorf("error reading file %v,", err) + } if err := g.ProcessResponse(resp, tt.args.root, s); (err != nil) != tt.wantErr { t.Errorf("ProcessResponse() error = %v, wantErr %v", err, tt.wantErr) } @@ -388,7 +385,7 @@ func TestGnmi_Set(t *testing.T) { transport *Gnmi } type args struct { - params []interface{} + params []string runEndpoint bool } tests := []struct { @@ -437,29 +434,11 @@ func TestGnmi_SetConfig(t *testing.T) { fields fields args args }{ - { - name: "default", - fields: fields{ - SetNode: nil, - RespChan: nil, - config: nil, - }, - args: args{ - config: &gnmi.Config{ - Addr: "test:///", - Password: "test", - Username: "test", - }, - }, - }, + // TODO: Add test cases. } for _, tt := range tests { t.Run(tt.name, func(t *testing.T) { - g := &Gnmi{} - g.SetConfig(tt.args.config) - if !reflect.DeepEqual(g.config, tt.args.config) { - t.Errorf("Type() = %v, want %v", g.config, tt.args.config) - } + }) } } @@ -480,11 +459,15 @@ func TestGnmi_Subscribe(t *testing.T) { args args wantErr bool }{ - {name: "nil client", fields: fields{}, args: args{}, wantErr: true}, + // TODO: Add test cases. } for _, tt := range tests { t.Run(tt.name, func(t *testing.T) { - g := &Gnmi{} + g := &Gnmi{ + SetNode: tt.fields.SetNode, + RespChan: tt.fields.RespChan, + config: tt.fields.config, + } if err := g.Subscribe(tt.args.ctx, tt.args.params...); (err != nil) != tt.wantErr { t.Errorf("Subscribe() error = %v, wantErr %v", err, tt.wantErr) } @@ -519,12 +502,36 @@ func TestGnmi_Type(t *testing.T) { } } +func TestGnmi_get(t *testing.T) { + // TODO: Design integration test for this one +} + func TestGnmi_getWithRequest(t *testing.T) { transport := mockTransport() - reqFullNode := gnmiMessages["../test/req-full-node"].(*gpb.GetRequest) - reqInterfacesWildcard := gnmiMessages["../test/req-interfaces-wildcard"].(*gpb.GetRequest) - respFullNode := gnmiMessages["../test/resp-full-node"].(*gpb.GetResponse) - respInterfacesWildcard := gnmiMessages["../test/resp-interfaces-wildcard"].(*gpb.GetResponse) + reqFullNode := &gpb.GetRequest{} + reqInterfacesWildcard := &gpb.GetRequest{} + respFullNode := &gpb.GetResponse{} + respInterfacesWildcard := &gpb.GetResponse{} + respInterfacesWildcardExp := &gpb.GetResponse{} + respFullNodeExp := &gpb.GetResponse{} + if err := util.Read("../test_resources/req-full-node", reqFullNode); err != nil { + t.Errorf("error parsing req-full-node: %v", err) + } + if err := util.Read("../test_resources/req-interfaces-wildcard", reqInterfacesWildcard); err != nil { + t.Errorf("error parsing req-interfaces-wildcard: %v", err) + } + if err := util.Read("../test_resources/resp-full-node", respFullNode); err != nil { + t.Errorf("error parsing getFullNode: %v", err) + } + if err := util.Read("../test_resources/resp-full-node", respFullNodeExp); err != nil { + t.Errorf("error parsing getFullNode: %v", err) + } + if err := util.Read("../test_resources/resp-interfaces-wildcard", respInterfacesWildcard); err != nil { + t.Errorf("error parsing getFullNode: %v", err) + } + if err := util.Read("../test_resources/resp-interfaces-wildcard", respInterfacesWildcardExp); err != nil { + t.Errorf("error parsing getFullNode: %v", err) + } transport.client.(*mocks.GNMIClient). On("Get", mockContext, reqFullNode). @@ -534,10 +541,6 @@ func TestGnmi_getWithRequest(t *testing.T) { On("Get", mockContext, reqInterfacesWildcard). Return(respInterfacesWildcard, nil) - transport.client.(*mocks.GNMIClient). - On("Get", mockContext, mock.Anything). - Return(nil, errors.New("expected mock gnmi error")) - type fields struct { transport *Gnmi } @@ -558,7 +561,7 @@ func TestGnmi_getWithRequest(t *testing.T) { args: args{ request: reqFullNode, }, - want: respFullNode, + want: respFullNodeExp, wantErr: false, }, { @@ -567,19 +570,9 @@ func TestGnmi_getWithRequest(t *testing.T) { args: args{ request: reqInterfacesWildcard, }, - want: respInterfacesWildcard, + want: respInterfacesWildcardExp, wantErr: false, }, - { - name: "invalid request", - fields: fields{transport: &transport}, - args: args{ - request: nil, - runEndpoint: false, - }, - want: nil, - wantErr: true, - }, } for _, tt := range tests { t.Run(tt.name, func(t *testing.T) { @@ -595,167 +588,56 @@ func TestGnmi_getWithRequest(t *testing.T) { } } -func TestNewGnmiTransport(t *testing.T) { - type args struct { - config *gnmi.Config - } - tests := []struct { - name string - args args - want *Gnmi - wantErr bool - }{ - { - name: "default", - args: args{config: &gnmi.Config{ - Username: "test", - Password: "test", - Addr: "localhost:13371", - Encoding: gpb.Encoding_PROTO, - }}, - want: &Gnmi{ - config: &gnmi.Config{ - Username: "test", - Password: "test", - Addr: "localhost:13371", - Encoding: gpb.Encoding_PROTO, - }, - client: nil, - }, - wantErr: false, - }, - { - name: "unsupported compression", - args: args{config: &gnmi.Config{Compression: "brotli"}}, - want: nil, - wantErr: true, - }, - { - name: "certificate error no key file", - args: args{config: &gnmi.Config{TLS: true, CertFile: "invalid", KeyFile: ""}}, - want: nil, - wantErr: true, - }, - { - name: "certificate error no ca file", - args: args{config: &gnmi.Config{TLS: true, CAFile: "invalid"}}, - want: nil, - wantErr: true, - }, - } - for _, tt := range tests { - t.Run(tt.name, func(t *testing.T) { - if tt.name == "default" { - startGnmiTarget <- gnmiConfig.Addr - } - got, err := NewGnmiTransport(tt.args.config) - if (err != nil) != tt.wantErr { - t.Errorf("NewGnmiTransport() error = %v, wantErr %v", err, tt.wantErr) - return - } - if tt.name == "default" && got != nil { - tt.want.client = got.client - } - if !reflect.DeepEqual(got, tt.want) { - t.Errorf("NewGnmiTransport() got = %v, want %v", got, tt.want) - } - if tt.name == "default" { - stopGnmiTarget <- true - } - }) - } -} - func TestGnmi_set(t *testing.T) { - transport := mockTransport() - mockResponse := &gpb.SetResponse{} - - transport.client.(*mocks.GNMIClient). - On("NewContext", mockContext, mock.Anything). - Return(mockContext) + // Does not test well +} - transport.client.(*mocks.GNMIClient). - On("Set", mockContext, mock.Anything,mock.Anything). - Return(mockResponse, nil) +func TestGnmi_subscribe(t *testing.T) { + // TODO: Design integration test for this one +} - type fields struct { - transport *Gnmi - } +func Test_extractModelKey(t *testing.T) { type args struct { - ctx context.Context - setOps []*gnmi.Operation - exts []*gnmi_ext.Extension + path *gpb.Path } tests := []struct { - name string - fields fields - args args - want *gpb.SetResponse - - wantErr bool + name string + args args + want string }{ - { - name: "default", - fields: fields{transport: &transport}, - args: args{ - ctx: context.Background(), - setOps: []*gnmi.Operation{ - { - Type: "update", - Path: []string{"interfaces", "interface", "name"}, - Val: "test0", - }, - }, - exts: nil, - }, - want: &gpb.SetResponse{}, - wantErr: false, - }, + // TODO: Add test cases. } for _, tt := range tests { t.Run(tt.name, func(t *testing.T) { - got, err := tt.fields.transport.set(tt.args.ctx, tt.args.setOps, tt.args.exts...) - if (err != nil) != tt.wantErr { - t.Errorf("set() error = %v, wantErr %v", err, tt.wantErr) - return - } - if !reflect.DeepEqual(got, tt.want) { - t.Errorf("set() got = %v, want %v", got, tt.want) + if got := extractModelKey(tt.args.path); got != tt.want { + t.Errorf("extractModelKey() = %v, want %v", got, tt.want) } }) } } -func TestGnmi_subscribe(t *testing.T) { - type fields struct { - SetNode func(schema *yang.Entry, root interface{}, path *gpb.Path, val interface{}, opts ...ytypes.SetNodeOpt) error - Unmarshal func([]byte, []string, interface{}, ...ytypes.UnmarshalOpt) error - RespChan chan *gpb.SubscribeResponse - config *gnmi.Config - client gpb.GNMIClient - } +func Test_gnmiFullPath(t *testing.T) { type args struct { - ctx context.Context + prefix *gpb.Path + path *gpb.Path } tests := []struct { name string - fields fields args args + want *gpb.Path wantErr bool }{ // TODO: Add test cases. } for _, tt := range tests { t.Run(tt.name, func(t *testing.T) { - g := &Gnmi{ - SetNode: tt.fields.SetNode, - Unmarshal: tt.fields.Unmarshal, - RespChan: tt.fields.RespChan, - config: tt.fields.config, - client: tt.fields.client, + got, err := gnmiFullPath(tt.args.prefix, tt.args.path) + if (err != nil) != tt.wantErr { + t.Errorf("gnmiFullPath() error = %v, wantErr %v", err, tt.wantErr) + return } - if err := g.subscribe(tt.args.ctx); (err != nil) != tt.wantErr { - t.Errorf("subscribe() error = %v, wantErr %v", err, tt.wantErr) + if !reflect.DeepEqual(got, tt.want) { + t.Errorf("gnmiFullPath() got = %v, want %v", got, tt.want) } }) } diff --git a/nucleus/integration_test.go b/nucleus/integration_test.go deleted file mode 100644 index b8633c1c064025241fb48a388f431f2736173ac5..0000000000000000000000000000000000000000 --- a/nucleus/integration_test.go +++ /dev/null @@ -1,252 +0,0 @@ -package nucleus - -import ( - "code.fbi.h-da.de/cocsn/gosdn/forks/goarista/gnmi" - "context" - gpb "github.com/openconfig/gnmi/proto/gnmi" - "os" - "reflect" - "testing" - "time" -) - -var address = "141.100.70.171:6030" -var cfg *gnmi.Config - -func testSetupIntegration() { - a := os.Getenv("GOSDN_TEST_ENDPOINT") - if a != "" { - address = a - } - - cfg = &gnmi.Config{ - Addr: address, - Username: "admin", - Password: "arista", - Encoding: gpb.Encoding_JSON_IETF, - } -} - -func TestGnmi_SetIntegration(t *testing.T) { - if testing.Short() { - t.Skip("skipping integration test") - } - type fields struct { - config *gnmi.Config - } - type args struct { - ctx context.Context - params []interface{} - } - tests := []struct { - name string - fields fields - args args - want interface{} - wantErr bool - }{ - { - name: "destination unreachable", - fields: fields{config: &gnmi.Config{ - Addr: "203.0.113.10:6030", - }, - }, - args: args{ - ctx: context.Background(), - params: []interface{}{&gnmi.Operation{}}, - }, - want: nil, - wantErr: true, - }, - { - name: "valid update", - fields: fields{config: cfg}, - args: args{ - ctx: context.Background(), - params: []interface{}{ - &gnmi.Operation{ - Type: "update", - Origin: "", - Target: "", - Path: []string{ - "system", - "config", - "hostname", - }, - Val: "ceos3000", - }, - }, - }, - want: &gpb.SetResponse{}, - wantErr: false, - }, - } - for _, tt := range tests { - t.Run(tt.name, func(t *testing.T) { - g, err := NewGnmiTransport(cfg) - if err != nil { - t.Error(err) - } - got, err := g.Set(tt.args.ctx, tt.args.params...) - if (err != nil) != tt.wantErr { - t.Errorf("Set() error = %v, wantErr %v", err, tt.wantErr) - return - } - if !reflect.DeepEqual(got, tt.want) { - t.Errorf("Set() got = %v, want %v", got, tt.want) - } - }) - } -} -func TestGnmi_GetIntegration(t *testing.T) { - if testing.Short() { - t.Skip("skipping integration test") - } - t.Run("Test GNMI Get", func(t *testing.T) { - transport, err := NewGnmiTransport(cfg) - if err != nil { - t.Error(err) - } - p := []string{"/interfaces/interface"} - resp, err := transport.Get(context.Background(), p...) - if err != nil { - t.Error(err) - } - if resp == nil { - t.Error("resp is nil") - } - }) -} - -func TestGnmi_SubscribeIntegration(t *testing.T) { - if testing.Short() { - t.Skip("skipping integration test") - } - if os.Getenv("GOSDN_TEST_ENDPOINT") != "" { - t.Skip("skipping locally running integration test") - } - - t.Run("Test GNMI Subscribe", func(t *testing.T) { - transport, err := NewGnmiTransport(cfg) - if err != nil { - t.Error(err) - } - transport.RespChan = make(chan *gpb.SubscribeResponse) - - paths := []string{"/interfaces/interface/name"} - - opts := &gnmi.SubscribeOptions{ - UpdatesOnly: false, - Prefix: "", - Mode: "stream", - StreamMode: "sample", - SampleInterval: uint64(10 * time.Second.Nanoseconds()), - SuppressRedundant: false, - HeartbeatInterval: uint64(time.Second.Nanoseconds()), - Paths: gnmi.SplitPaths(paths), - Origin: "", - Target: address, - } - ctx := context.WithValue(context.Background(), "opts", opts) - go func() { - if err := transport.Subscribe(ctx); err != nil { - t.Error(err) - } - }() - time.Sleep(time.Second * 30) - ctx.Done() - time.Sleep(time.Second * 5) - }) -} - -func TestGnmi_CapabilitiesIntegration(t *testing.T) { - if testing.Short() { - t.Skip("skipping integration test") - } - type fields struct { - config *gnmi.Config - } - type args struct { - ctx context.Context - } - tests := []struct { - name string - fields fields - args args - want interface{} - wantErr bool - }{ - { - name: "supported models", - fields: fields{config: cfg}, - args: args{ctx: context.Background()}, - want: gnmiMessages["../test/cap-resp-arista-ceos"].(*gpb.CapabilityResponse).SupportedModels, - wantErr: false, - }, - { - name: "supported encodings", - fields: fields{config: cfg}, - args: args{ctx: context.Background()}, - want: gnmiMessages["../test/cap-resp-arista-ceos"].(*gpb.CapabilityResponse).SupportedEncodings, - wantErr: false, - }, - { - name: "gnmi version", - fields: fields{config: cfg}, - args: args{ctx: context.Background()}, - want: gnmiMessages["../test/cap-resp-arista-ceos"].(*gpb.CapabilityResponse).GNMIVersion, - wantErr: false, - }, - { - name: "destination unreachable", - fields: fields{config: &gnmi.Config{ - Addr: "203.0.113.10:6030", - }, - }, - args: args{ctx: context.Background()}, - want: nil, - wantErr: true, - }, - } - for _, tt := range tests { - t.Run(tt.name, func(t *testing.T) { - g, err := NewGnmiTransport(tt.fields.config) - if err != nil { - t.Error(err) - return - } - resp, err := g.Capabilities(tt.args.ctx) - if (err != nil) != tt.wantErr { - t.Errorf("Capabilities() error = %v, wantErr %v", err, tt.wantErr) - return - } - var got interface{} - switch tt.name { - case "supported encodings": - got = resp.(*gpb.CapabilityResponse).SupportedEncodings - case "supported models": - got = resp.(*gpb.CapabilityResponse).SupportedModels - case "gnmi version": - got = resp.(*gpb.CapabilityResponse).GNMIVersion - default: - } - if !reflect.DeepEqual(got, tt.want) { - t.Errorf("Type() = %v, want %v", got, tt.want) - } - }) - } -} - -func TestPndImplementation_RequestAllIntegration(t *testing.T) { - if testing.Short() { - t.Skip("skipping integration test") - } - t.Fail() -} - -func TestPndImplementation_RequestIntegration(t *testing.T) { - if testing.Short() { - t.Skip("skipping integration test") - } - t.Fail() -} diff --git a/nucleus/principalNetworkDomain.go b/nucleus/principalNetworkDomain.go index ec7a80f2b15e343341164529ebcc2dc3ff9dff32..7b26ada3e9e07f3426efbf8159c15a269e543359 100644 --- a/nucleus/principalNetworkDomain.go +++ b/nucleus/principalNetworkDomain.go @@ -34,7 +34,20 @@ type pndImplementation struct { } // NewPND creates a Principle Network Domain -func NewPND(name, description string, id uuid.UUID, sbi SouthboundInterface) (PrincipalNetworkDomain, error) { +func NewPND(name, description string, sbi SouthboundInterface) (PrincipalNetworkDomain, error) { + pnd := &pndImplementation{ + name: name, + description: description, + sbic: sbiStore{store{}}, + devices: deviceStore{store{}}, + } + if err := pnd.sbic.add(sbi); err != nil { + return nil, &ErrAlreadyExists{item: sbi} + } + return pnd, nil +} + +func NewPNDwithId(name, description string, id uuid.UUID, sbi SouthboundInterface) (PrincipalNetworkDomain, error) { pnd := &pndImplementation{ name: name, description: description, diff --git a/nucleus/principalNetworkDomain_test.go b/nucleus/principalNetworkDomain_test.go index cb5f3f5f78ec6e29ecbbfe9b186ebbf413ed91f0..622be43e8187e8dad710f2c2d3f675f0f99cfb89 100644 --- a/nucleus/principalNetworkDomain_test.go +++ b/nucleus/principalNetworkDomain_test.go @@ -44,6 +44,15 @@ func mockDevice() Device { } func newPnd() pndImplementation { + return pndImplementation{ + name: "default", + description: "default test pnd", + sbic: sbiStore{store{}}, + devices: deviceStore{store{}}, + } +} + +func newPndWithId() pndImplementation { return pndImplementation{ name: "default", description: "default test pnd", @@ -67,7 +76,6 @@ func TestNewPND(t *testing.T) { name string description string sbi SouthboundInterface - pid uuid.UUID } tests := []struct { name string @@ -81,7 +89,6 @@ func TestNewPND(t *testing.T) { name: "default", description: "default test pnd", sbi: &OpenConfig{id: defaultSbiId}, - pid: defaultPndId, }, want: &pnd, wantErr: false, @@ -89,7 +96,7 @@ func TestNewPND(t *testing.T) { } for _, tt := range tests { t.Run(tt.name, func(t *testing.T) { - got, err := NewPND(tt.args.name, tt.args.description, tt.args.pid, tt.args.sbi) + got, err := NewPND(tt.args.name, tt.args.description, tt.args.sbi) if (err != nil) != tt.wantErr { t.Errorf("NewPND() error = %v, wantErr %v", err, tt.wantErr) return @@ -101,6 +108,49 @@ func TestNewPND(t *testing.T) { } } +func TestNewPNDwithId(t *testing.T) { + pnd := newPndWithId() + if err := pnd.addSbi(&OpenConfig{id: defaultSbiId}); err != nil { + t.Error(err) + } + type args struct { + name string + description string + id uuid.UUID + sbi SouthboundInterface + } + tests := []struct { + name string + args args + want PrincipalNetworkDomain + wantErr bool + }{ + { + name: "default", + args: args{ + name: "default", + description: "default test pnd", + id: defaultPndId, + sbi: &OpenConfig{id: defaultSbiId}, + }, + want: &pnd, + wantErr: false, + }, + } + for _, tt := range tests { + t.Run(tt.name, func(t *testing.T) { + got, err := NewPNDwithId(tt.args.name, tt.args.description, tt.args.id, tt.args.sbi) + if (err != nil) != tt.wantErr { + t.Errorf("NewPNDwithId() error = %v, wantErr %v", err, tt.wantErr) + return + } + if !reflect.DeepEqual(got, tt.want) { + t.Errorf("NewPNDwithId() got = %v, want %v", got, tt.want) + } + }) + } +} + func Test_destroy(t *testing.T) { tests := []struct { name string diff --git a/nucleus/restconf_transport.go b/nucleus/restconf_transport.go index 606f818ff0301bdc5d2e37d6a4273f7851c5b6e1..84d904a562b6c87d84378814b8247ad0df484747 100644 --- a/nucleus/restconf_transport.go +++ b/nucleus/restconf_transport.go @@ -9,21 +9,21 @@ type Restconf struct { } func (r Restconf) Get(ctx context.Context, params ...string) (interface{}, error) { - return nil, &ErrNotYetImplemented{} + panic("implement me") } func (r Restconf) Set(ctx context.Context, params ...string) (interface{}, error) { - return nil, &ErrNotYetImplemented{} + panic("implement me") } func (r Restconf) Subscribe(ctx context.Context, params ...string) error { - return &ErrNotYetImplemented{} + panic("implement me") } func (r Restconf) Type() string { - return "restconf" + panic("implement me") } func (r Restconf) ProcessResponse(resp interface{}, root interface{}, models *ytypes.Schema) error { - return &ErrNotYetImplemented{} + panic("implement me") } diff --git a/nucleus/restconf_transport_test.go b/nucleus/restconf_transport_test.go deleted file mode 100644 index 5f1eb1e352f2cb8214686c5215eea419c465dcd4..0000000000000000000000000000000000000000 --- a/nucleus/restconf_transport_test.go +++ /dev/null @@ -1,126 +0,0 @@ -package nucleus - -import ( - "context" - "github.com/openconfig/ygot/ytypes" - "reflect" - "testing" -) - -func TestRestconf_Get(t *testing.T) { - type args struct { - ctx context.Context - params []string - } - tests := []struct { - name string - args args - want interface{} - wantErr bool - }{ - {name: "not implemented", args: args{}, want: nil, wantErr: true}, - } - for _, tt := range tests { - t.Run(tt.name, func(t *testing.T) { - r := Restconf{} - got, err := r.Get(tt.args.ctx, tt.args.params...) - if (err != nil) != tt.wantErr { - t.Errorf("Get() error = %v, wantErr %v", err, tt.wantErr) - return - } - if !reflect.DeepEqual(got, tt.want) { - t.Errorf("Get() got = %v, want %v", got, tt.want) - } - }) - } -} - -func TestRestconf_ProcessResponse(t *testing.T) { - type args struct { - resp interface{} - root interface{} - models *ytypes.Schema - } - tests := []struct { - name string - args args - wantErr bool - }{ - {name: "not implemented", args: args{}, wantErr: true}, - } - for _, tt := range tests { - t.Run(tt.name, func(t *testing.T) { - r := Restconf{} - if err := r.ProcessResponse(tt.args.resp, tt.args.root, tt.args.models); (err != nil) != tt.wantErr { - t.Errorf("ProcessResponse() error = %v, wantErr %v", err, tt.wantErr) - } - }) - } -} - -func TestRestconf_Set(t *testing.T) { - type args struct { - ctx context.Context - params []string - } - tests := []struct { - name string - args args - want interface{} - wantErr bool - }{ - {name: "not implemented", args: args{}, want: nil, wantErr: true}, - } - for _, tt := range tests { - t.Run(tt.name, func(t *testing.T) { - r := Restconf{} - got, err := r.Set(tt.args.ctx, tt.args.params...) - if (err != nil) != tt.wantErr { - t.Errorf("Set() error = %v, wantErr %v", err, tt.wantErr) - return - } - if !reflect.DeepEqual(got, tt.want) { - t.Errorf("Set() got = %v, want %v", got, tt.want) - } - }) - } -} - -func TestRestconf_Subscribe(t *testing.T) { - type args struct { - ctx context.Context - params []string - } - tests := []struct { - name string - args args - wantErr bool - }{ - {name: "not implemented", args: args{}, wantErr: true}, - } - for _, tt := range tests { - t.Run(tt.name, func(t *testing.T) { - r := Restconf{} - if err := r.Subscribe(tt.args.ctx, tt.args.params...); (err != nil) != tt.wantErr { - t.Errorf("Subscribe() error = %v, wantErr %v", err, tt.wantErr) - } - }) - } -} - -func TestRestconf_Type(t *testing.T) { - tests := []struct { - name string - want string - }{ - {name: "not implemented", want: "restconf"}, - } - for _, tt := range tests { - t.Run(tt.name, func(t *testing.T) { - r := Restconf{} - if got := r.Type(); got != tt.want { - t.Errorf("Type() = %v, want %v", got, tt.want) - } - }) - } -} diff --git a/nucleus/southbound.go b/nucleus/southbound.go index 88a6ed5f7353a719f51600862183830d1a5ef54e..6d5db29f1deaffa4943bcda114dd6c78f194ab9b 100644 --- a/nucleus/southbound.go +++ b/nucleus/southbound.go @@ -1,15 +1,13 @@ package nucleus import ( + "code.fbi.h-da.de/cocsn/yang-models/generated/arista" "code.fbi.h-da.de/cocsn/yang-models/generated/openconfig" + log "github.com/golang/glog" "github.com/google/uuid" gpb "github.com/openconfig/gnmi/proto/gnmi" "github.com/openconfig/goyang/pkg/yang" - "github.com/openconfig/ygot/util" - "github.com/openconfig/ygot/ygot" "github.com/openconfig/ygot/ytypes" - log "github.com/sirupsen/logrus" - "reflect" ) // SouthboundInterface provides an @@ -49,7 +47,6 @@ func (oc *OpenConfig) SbiIdentifier() string { func (oc *OpenConfig) Schema() *ytypes.Schema { schema, err := openconfig.Schema() - oc.schema = schema if err != nil { log.Fatal(err) } @@ -68,86 +65,45 @@ func (oc *OpenConfig) SetNode() func(schema *yang.Entry, root interface{}, path } } -// Unmarshal injects OpenConfig specific model -// representation to the transport. -// Needed for type assertion. -func (oc *OpenConfig) Unmarshal() func([]byte, []string, interface{}, ...ytypes.UnmarshalOpt) error { - return unmarshal +func (oc *OpenConfig) Id() uuid.UUID { + return oc.id } -// unmarshal parses a root or 1st level gNMI response to a go struct -// Named return due to how recover works here -func unmarshal(bytes []byte, fields []string, goStruct interface{}, opt ...ytypes.UnmarshalOpt) (err error) { - defer func() { - if r := recover(); r != nil { - err = r.(error) - } - }() - switch l := len(fields); l { - case 0: - return openconfig.Unmarshal(bytes, goStruct.(*openconfig.Device), opt...) - case 1: - default: - return &ErrUnsupportedPath{fields} - } - var c ygot.GoStruct - var field string +// deprecated +// Use for prototyping only. +// Use OpenConfig instead +type AristaOC struct { + // deprecated + transport Transport + + schema *ytypes.Schema + id uuid.UUID +} + +func (oc *AristaOC) Id() uuid.UUID { + return oc.id +} - // Load SBI definition - d := openconfig.Device{} - c, field, err = iter(&d, fields) +func (oc *AristaOC) SbiIdentifier() string { + return "arista" +} + +func (oc *AristaOC) Schema() *ytypes.Schema { + schema, err := arista.Schema() if err != nil { - return - } - if err = openconfig.Unmarshal(bytes, c, opt...); err != nil { - return + log.Fatal(err) } - reflect.ValueOf(goStruct.(*openconfig.Device)).Elem().FieldByName(field).Set(reflect.ValueOf(c)) - return nil + return schema } -// iter walks down the provided paths and initializes the ygot.GoStruct. It only works for -// the root level. Watch out for named returns here -// TODO(mk): Fix deeper layers -func iter(a ygot.GoStruct, fields []string) (b ygot.GoStruct, f string, err error) { - defer func() { - if r := recover(); r != nil { - err = r.(error) - } - }() - var c ygot.GoStruct - var configStruct reflect.Value - f = fields[0] - s := reflect.ValueOf(a).Elem() - h := s.FieldByName(f) - configStruct = reflect.New(h.Type()) - - // Pointer of field needs to be initialized. - // Very convoluted russian doll trick - // https://stackoverflow.com/a/57469950/4378176 - // https://golang.org/src/encoding/json/decode.go?s#L474 - // TODO(mk): Prettify - p2 := configStruct.Elem() - // If we have KeyHelperGoStruct we need make and modify map instead of plain struct - if p2.Kind() == reflect.Map { - p2.Set(reflect.MakeMap(p2.Type())) - configStruct.Elem().Set(p2) - if err := util.InsertIntoMapStructField(a, f, "", p2); err != nil { - panic(err) +// SetNode injects AristaOC specific model +// representation to the transport. +// Needed for type assertion. +func (oc *AristaOC) SetNode() func(schema *yang.Entry, root interface{}, path *gpb.Path, val interface{}, opts ...ytypes.SetNodeOpt) error { + return func(schema *yang.Entry, root interface{}, path *gpb.Path, val interface{}, opts ...ytypes.SetNodeOpt) error { + if err := ytypes.SetNode(schema, root.(*arista.Device), path, val, opts...); err != nil { + return err } - } else { - configStruct.Elem().Set(reflect.New(p2.Type().Elem())) - b = configStruct.Elem().Interface().(ygot.GoStruct) - } - if len(fields) > 1 { - c, _, _ = iter(b, fields[1:]) - } else { - return + return nil } - reflect.ValueOf(b).Elem().FieldByName(f).Set(reflect.ValueOf(c)) - return -} - -func (oc *OpenConfig) Id() uuid.UUID { - return oc.id } diff --git a/nucleus/southbound_test.go b/nucleus/southbound_test.go index 951f7979c30723e9b2ff281f30c69588529eea93..0fa4ffa903a1f894325aaf5211341e19a2df754a 100644 --- a/nucleus/southbound_test.go +++ b/nucleus/southbound_test.go @@ -1,229 +1 @@ package nucleus - -import ( - "code.fbi.h-da.de/cocsn/gosdn/nucleus/util" - "code.fbi.h-da.de/cocsn/yang-models/generated/openconfig" - "github.com/google/uuid" - gpb "github.com/openconfig/gnmi/proto/gnmi" - "github.com/openconfig/ygot/ygot" - "github.com/openconfig/ygot/ytypes" - log "github.com/sirupsen/logrus" - "reflect" - "testing" -) - -func testSetupSbi() { - var err error - aristaUUID, err = uuid.Parse("d3795249-579c-4be7-8818-29f113cb86ee") - if err != nil { - log.Fatal(err) - } - - ocUUID, err = uuid.Parse("5e252b70-38f2-4c99-a0bf-1b16af4d7e67") - if err != nil { - log.Fatal(err) - } -} - -var aristaUUID uuid.UUID -var ocUUID uuid.UUID - -func TestOpenConfig_Id(t *testing.T) { - type fields struct { - transport Transport - schema *ytypes.Schema - id uuid.UUID - } - tests := []struct { - name string - fields fields - want uuid.UUID - }{ - { - name: "default", - fields: fields{ - transport: nil, - schema: nil, - id: ocUUID, - }, - want: ocUUID, - }, - } - for _, tt := range tests { - t.Run(tt.name, func(t *testing.T) { - oc := &OpenConfig{ - transport: tt.fields.transport, - schema: tt.fields.schema, - id: tt.fields.id, - } - if got := oc.Id(); !reflect.DeepEqual(got, tt.want) { - t.Errorf("Id() = %v, want %v", got, tt.want) - } - }) - } -} - -func TestOpenConfig_SbiIdentifier(t *testing.T) { - type fields struct { - transport Transport - schema *ytypes.Schema - id uuid.UUID - } - tests := []struct { - name string - fields fields - want string - }{ - {name: "default", fields: fields{}, want: "openconfig"}, - } - for _, tt := range tests { - t.Run(tt.name, func(t *testing.T) { - oc := &OpenConfig{ - transport: tt.fields.transport, - schema: tt.fields.schema, - id: tt.fields.id, - } - if got := oc.SbiIdentifier(); got != tt.want { - t.Errorf("SbiIdentifier() = %v, want %v", got, tt.want) - } - }) - } -} - -func TestOpenConfig_Schema(t *testing.T) { - schema, err := openconfig.Schema() - if err != nil { - t.Error(err) - } - type fields struct { - transport Transport - schema *ytypes.Schema - id uuid.UUID - } - tests := []struct { - name string - fields fields - want *ytypes.Schema - }{ - {name: "default", fields: fields{}, want: schema}, - } - for _, tt := range tests { - t.Run(tt.name, func(t *testing.T) { - oc := &OpenConfig{ - transport: tt.fields.transport, - schema: tt.fields.schema, - id: tt.fields.id, - } - got := oc.Schema().SchemaTree - if !reflect.DeepEqual(got, tt.want.SchemaTree) { - t.Errorf("Schema() = %v, want %v", got, tt.want) - } - }) - } -} - -func Test_unmarshal(t *testing.T) { - type args struct { - path string - goStruct interface{} - opt []ytypes.UnmarshalOpt - } - tests := []struct { - name string - args args - wantErr bool - }{ - { - name: "fail", - args: args{ - goStruct: &openconfig.Device{}, - path: "../test/resp-interfaces-interface-arista-ceos", - }, - wantErr: true, - }, - { - name: "root w/opts", - args: args{ - path: "../test/resp-full-node-arista-ceos", - goStruct: &openconfig.Device{}, - opt: []ytypes.UnmarshalOpt{&ytypes.IgnoreExtraFields{}}, - }, - wantErr: false, - }, - { - name: "root w/o opts", - args: args{ - path: "../test/resp-full-node-arista-ceos", - goStruct: &openconfig.Device{}, - opt: nil, - }, - wantErr: true, - }, - { - name: "interfaces w/opts", - args: args{ - path: "../test/resp-interfaces-arista-ceos", - goStruct: &openconfig.Device{}, - opt: []ytypes.UnmarshalOpt{&ytypes.IgnoreExtraFields{}}, - }, - wantErr: false, - }, - { - name: "interfaces w/o opts", - args: args{ - path: "../test/resp-interfaces-arista-ceos", - goStruct: &openconfig.Device{}, - opt: nil, - }, - wantErr: true, - }, - } - for _, tt := range tests { - t.Run(tt.name, func(t *testing.T) { - resp := &gpb.GetResponse{} - err := util.Read(tt.args.path, resp) - if err != nil { - t.Error(err) - } - fields := extraxtPathElements(resp.Notification[0].Update[0].Path) - bytes := resp.Notification[0].Update[0].Val.GetJsonIetfVal() - if err := unmarshal(bytes, fields, tt.args.goStruct, tt.args.opt...); (err != nil) != tt.wantErr { - t.Errorf("unmarshal() error = %v, wantErr %v", err, tt.wantErr) - } - if tt.args.goStruct.(*openconfig.Device).Interfaces == nil && tt.args.opt != nil { - t.Errorf("unmarshal() error: field Interfaces must not be nil") - } - }) - } -} - -func Test_iter(t *testing.T) { - type args struct { - a ygot.GoStruct - fields []string - } - tests := []struct { - name string - args args - wantB ygot.GoStruct - wantField string - wantErr bool - }{ - // TODO: Add test cases. - } - for _, tt := range tests { - t.Run(tt.name, func(t *testing.T) { - gotB, gotField, err := iter(tt.args.a, tt.args.fields) - if (err != nil) != tt.wantErr { - t.Errorf("iter() error = %v, wantErr %v", err, tt.wantErr) - return - } - if !reflect.DeepEqual(gotB, tt.wantB) { - t.Errorf("iter() gotB = %v, want %v", gotB, tt.wantB) - } - if gotField != tt.wantField { - t.Errorf("iter() gotField = %v, want %v", gotField, tt.wantField) - } - }) - } -} diff --git a/nucleus/store_test.go b/nucleus/store_test.go index defdaa58fa83bf01955cc18d361ce5c896162521..d8fc58121f653375e41e580941c158b01b0f6aea 100644 --- a/nucleus/store_test.go +++ b/nucleus/store_test.go @@ -5,7 +5,6 @@ import ( "github.com/google/uuid" log "github.com/sirupsen/logrus" "reflect" - "sort" "testing" ) @@ -222,14 +221,7 @@ func Test_store_UUIDs(t *testing.T) { } for _, tt := range tests { t.Run(tt.name, func(t *testing.T) { - sort.Slice(tt.want, func(i, j int) bool { - return tt.want[i].String() < tt.want[j].String() - }) - got := tt.s.UUIDs() - sort.Slice(got, func(i, j int) bool { - return got[i].String() < got[j].String() - }) - if !reflect.DeepEqual(got, tt.want) { + if got := tt.s.UUIDs(); !reflect.DeepEqual(got, tt.want) { t.Errorf("UUIDs() = %v, want %v", got, tt.want) } }) @@ -361,7 +353,7 @@ func Test_pndStore_get(t *testing.T) { }, }, }, - args: args{id: did}, + args: args{id: defaultPndId}, wantErr: true, }, } diff --git a/nucleus/transport.go b/nucleus/transport.go index cfab425227534cea87a8d1a139fec97c5e499e42..757ba085f51dbe50f00644ca7a7672bd917f6c5e 100644 --- a/nucleus/transport.go +++ b/nucleus/transport.go @@ -12,7 +12,7 @@ import ( // or gnmi type Transport interface { Get(ctx context.Context, params ...string) (interface{}, error) - Set(ctx context.Context, params ...interface{}) (interface{}, error) + Set(ctx context.Context, params ...string) (interface{}, error) Subscribe(ctx context.Context, params ...string) error Type() string GetOptions() interface{} diff --git a/test/arista-interface-response.json b/test/arista-interface-response.json deleted file mode 100644 index 392b21cd2158057613047b35794a42dddf1d35c4..0000000000000000000000000000000000000000 --- a/test/arista-interface-response.json +++ /dev/null @@ -1,238 +0,0 @@ -[ - { - "time": "1970-01-01T01:00:00+01:00", - "updates": [ - { - "Path": "interfaces/interface[name=Ethernet510]", - "values": { - "interfaces/interface": { - "openconfig-if-ethernet:ethernet": { - "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" - } - } - ] - } - }, - "config": { - "arista-intf-augments:fec-encoding": { - "disabled": false, - "fire-code": false, - "reed-solomon": false, - "reed-solomon544": false - }, - "arista-intf-augments:sfp-1000base-t": false, - "mac-address": "00:00:00:00:00:00", - "openconfig-hercules-interfaces:forwarding-viable": true, - "port-speed": "SPEED_UNKNOWN" - }, - "state": { - "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" - ], - "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, - "hw-mac-address": "02:42:c0:a8:02:42", - "mac-address": "02:42:c0:a8:02:42", - "negotiated-port-speed": "SPEED_UNKNOWN", - "openconfig-hercules-interfaces:forwarding-viable": true, - "port-speed": "SPEED_UNKNOWN" - } - }, - "openconfig-interfaces:config": { - "arista-intf-augments:load-interval": 300, - "description": "", - "enabled": true, - "loopback-mode": false, - "mtu": 0, - "name": "Ethernet510", - "openconfig-vlan:tpid": "openconfig-vlan-types:TPID_0X8100", - "type": "iana-if-type:ethernetCsmacd" - }, - "openconfig-interfaces:hold-time": { - "config": { - "down": 0, - "up": 0 - }, - "state": { - "down": 0, - "up": 0 - } - }, - "openconfig-interfaces:name": "Ethernet510", - "openconfig-interfaces:state": { - "admin-status": "UP", - "arista-intf-augments:inactive": false, - "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, - "ifindex": 510, - "last-change": "1614091948142304000", - "loopback-mode": false, - "mtu": 0, - "name": "Ethernet510", - "openconfig-platform-port:hardware-port": "Port510", - "openconfig-vlan:tpid": "openconfig-vlan-types:TPID_0X8100", - "oper-status": "UP", - "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 - } - } - ] - } - } - } - } - ] - } -] diff --git a/test/arista-interface-response2.json b/test/arista-interface-response2.json deleted file mode 100644 index 490099db940c125dfb69b3570764886a2f20a6e2..0000000000000000000000000000000000000000 --- a/test/arista-interface-response2.json +++ /dev/null @@ -1,242 +0,0 @@ -[ - { - "time": "1970-01-01T01:00:00+01:00", - "updates": [ - { - "Path": "interfaces", - "values": { - "interfaces": { - "openconfig-interfaces:interface": [ - { - "config": { - "arista-intf-augments:load-interval": 300, - "description": "", - "enabled": true, - "loopback-mode": false, - "mtu": 0, - "name": "Ethernet510", - "openconfig-vlan:tpid": "openconfig-vlan-types:TPID_0X8100", - "type": "iana-if-type:ethernetCsmacd" - }, - "hold-time": { - "config": { - "down": 0, - "up": 0 - }, - "state": { - "down": 0, - "up": 0 - } - }, - "name": "Ethernet510", - "openconfig-if-ethernet:ethernet": { - "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" - } - } - ] - } - }, - "config": { - "arista-intf-augments:fec-encoding": { - "disabled": false, - "fire-code": false, - "reed-solomon": false, - "reed-solomon544": false - }, - "arista-intf-augments:sfp-1000base-t": false, - "mac-address": "00:00:00:00:00:00", - "openconfig-hercules-interfaces:forwarding-viable": true, - "port-speed": "SPEED_UNKNOWN" - }, - "state": { - "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" - ], - "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, - "hw-mac-address": "02:42:c0:a8:02:42", - "mac-address": "02:42:c0:a8:02:42", - "negotiated-port-speed": "SPEED_UNKNOWN", - "openconfig-hercules-interfaces:forwarding-viable": true, - "port-speed": "SPEED_UNKNOWN" - } - }, - "state": { - "admin-status": "UP", - "arista-intf-augments:inactive": false, - "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, - "ifindex": 510, - "last-change": "1614091948142304000", - "loopback-mode": false, - "mtu": 0, - "name": "Ethernet510", - "openconfig-platform-port:hardware-port": "Port510", - "openconfig-vlan:tpid": "openconfig-vlan-types:TPID_0X8100", - "oper-status": "UP", - "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 - } - } - ] - } - } - ] - } - } - } - ] - } -] diff --git a/test/arista-root-response.json b/test/arista-root-response.json deleted file mode 100644 index ddbe90101c9aae11f0447100bbc32b593c5bf781..0000000000000000000000000000000000000000 --- a/test/arista-root-response.json +++ /dev/null @@ -1,6744 +0,0 @@ -[ - { - "time": "1970-01-01T01:00:00+01:00", - "updates": [ - { - "Path": "", - "values": { - "": { - "arista-exp-eos:arista": { - "eos": { - "arista-exp-eos-igmpsnooping:bridging": { - "igmpsnooping": { - "config": {} - } - }, - "arista-exp-eos-mlag:mlag": { - "config": { - "dual-primary-action": "action-none", - "enabled": true, - "heartbeat-interval": 4000, - "heartbeat-peer-address": { - "address": "0.0.0.0", - "vrf": "" - }, - "lacp-standby": false, - "reload-delay-mlag-configured": false - } - }, - "arista-exp-eos-multicast:routing": { - "multicast": { - "routeconfig": { - "static": { - "vrfConfig": [ - { - "vrfName": "default" - } - ] - } - } - } - }, - "arista-exp-eos-qos:qos": { - "arista-exp-eos-qos-acl-config:acl": { - "input": { - "cli": { - "cmapType": [ - { - "cmap": [ - { - "matchCondition": "matchConditionAny", - "name": "copp-system-rsvp" - }, - { - "matchCondition": "matchConditionAny", - "name": "copp-system-unicastarp" - }, - { - "matchCondition": "matchConditionAny", - "name": "copp-system-l2broadcast" - }, - { - "matchCondition": "matchConditionAny", - "name": "copp-system-multicastsnoop" - }, - { - "matchCondition": "matchConditionAny", - "name": "copp-system-mlag" - }, - { - "matchCondition": "matchConditionAny", - "name": "copp-system-igmp" - }, - { - "matchCondition": "matchConditionAny", - "name": "copp-system-l3destmiss" - }, - { - "matchCondition": "matchConditionAny", - "name": "copp-system-acllog-sflow" - }, - { - "matchCondition": "matchConditionAny", - "name": "copp-system-ipunicast" - }, - { - "matchCondition": "matchConditionAny", - "name": "copp-system-default-snoop" - }, - { - "matchCondition": "matchConditionAny", - "name": "copp-system-tc6to7" - }, - { - "matchCondition": "matchConditionAny", - "name": "copp-system-mac-learn" - }, - { - "matchCondition": "matchConditionAny", - "name": "copp-system-vxlan-vtep-learn" - }, - { - "matchCondition": "matchConditionAny", - "name": "copp-system-mvrp" - }, - { - "matchCondition": "matchConditionAny", - "name": "copp-system-l3lpmoverflow" - }, - { - "matchCondition": "matchConditionAny", - "name": "copp-system-l3slowpath" - }, - { - "matchCondition": "matchConditionAny", - "name": "copp-system-cfm-snoop" - }, - { - "matchCondition": "matchConditionAny", - "name": "copp-system-bgp" - }, - { - "matchCondition": "matchConditionAny", - "name": "copp-system-mod" - }, - { - "matchCondition": "matchConditionAny", - "name": "copp-system-vrrp" - }, - { - "matchCondition": "matchConditionAny", - "name": "copp-system-ldp" - }, - { - "matchCondition": "matchConditionAny", - "name": "copp-system-linklocal" - }, - { - "matchCondition": "matchConditionAny", - "name": "copp-system-protocol-snoop" - }, - { - "matchCondition": "matchConditionAny", - "name": "copp-system-cvx" - }, - { - "matchCondition": "matchConditionAny", - "name": "copp-system-PimPtp" - }, - { - "matchCondition": "matchConditionAny", - "name": "copp-system-ipmc" - }, - { - "matchCondition": "matchConditionAny", - "name": "copp-system-ipbroadcast" - }, - { - "matchCondition": "matchConditionAny", - "name": "copp-system-acllog" - }, - { - "matchCondition": "matchConditionAny", - "name": "copp-system-iplocking" - }, - { - "matchCondition": "matchConditionAny", - "name": "copp-system-bfd-ptp" - }, - { - "matchCondition": "matchConditionAny", - "name": "copp-system-ipv6nd" - }, - { - "matchCondition": "matchConditionAny", - "name": "copp-system-dot1x-mba" - }, - { - "matchCondition": "matchConditionAny", - "name": "copp-system-ipmcrsvd" - }, - { - "matchCondition": "matchConditionAny", - "name": "copp-system-arpresolver" - }, - { - "matchCondition": "matchConditionAny", - "name": "copp-system-cvx-heartbeat" - }, - { - "matchCondition": "matchConditionAny", - "name": "copp-system-bpdu" - }, - { - "matchCondition": "matchConditionAny", - "name": "copp-system-nat" - }, - { - "matchCondition": "matchConditionAny", - "name": "copp-system-drop" - }, - { - "matchCondition": "matchConditionAny", - "name": "copp-system-vxlan-encapsulation" - }, - { - "matchCondition": "matchConditionAny", - "name": "copp-system-ptp-snoop" - }, - { - "matchCondition": "matchConditionAny", - "name": "copp-system-sflow" - }, - { - "matchCondition": "matchConditionAny", - "name": "copp-system-mpls-arp-suppress" - }, - { - "matchCondition": "matchConditionAny", - "name": "copp-system-lldp" - }, - { - "matchCondition": "matchConditionAny", - "name": "copp-system-l3ttl0" - }, - { - "matchCondition": "matchConditionAny", - "name": "copp-system-mpls-ttl01" - }, - { - "matchCondition": "matchConditionAny", - "name": "copp-system-lacp" - }, - { - "matchCondition": "matchConditionAny", - "name": "copp-system-cfm" - }, - { - "matchCondition": "matchConditionAny", - "name": "copp-system-l3ttl1" - }, - { - "matchCondition": "matchConditionAny", - "name": "copp-system-tc3to5" - }, - { - "matchCondition": "matchConditionAny", - "name": "copp-system-l2ucast" - }, - { - "matchCondition": "matchConditionAny", - "name": "copp-system-mirroring" - }, - { - "matchCondition": "matchConditionAny", - "name": "copp-system-mtu" - }, - { - "matchCondition": "matchConditionAny", - "name": "copp-system-l3rsvd" - }, - { - "matchCondition": "matchConditionAny", - "name": "copp-system-dot1x-vxlan" - }, - { - "matchCondition": "matchConditionAny", - "name": "copp-system-bfd" - }, - { - "matchCondition": "matchConditionAny", - "name": "copp-system-glean" - }, - { - "matchCondition": "matchConditionAny", - "name": "copp-system-arp-inspect" - }, - { - "matchCondition": "matchConditionAny", - "name": "copp-system-l2rsvd" - }, - { - "matchCondition": "matchConditionAny", - "name": "copp-system-pim" - }, - { - "matchCondition": "matchConditionAny", - "name": "copp-system-ipmcmiss" - }, - { - "matchCondition": "matchConditionAny", - "name": "copp-system-egress-acllog" - }, - { - "matchCondition": "matchConditionAny", - "name": "copp-system-selfip-tc6to7" - }, - { - "matchCondition": "matchConditionAny", - "name": "copp-system-selfip" - }, - { - "matchCondition": "matchConditionAny", - "name": "copp-system-ptp" - }, - { - "matchCondition": "matchConditionAny", - "name": "copp-system-arp" - }, - { - "matchCondition": "matchConditionAny", - "name": "copp-system-OspfIsis" - }, - { - "matchCondition": "matchConditionAny", - "name": "copp-system-mpls-label-miss" - } - ], - "type": "mapControlPlane" - }, - { - "cmap": [ - { - "match": [ - { - "option": "matchBuiltIn", - "strValue": "vrrp" - } - ], - "matchCondition": "matchConditionAny", - "name": "vrrp" - }, - { - "match": [ - { - "option": "matchBuiltIn", - "strValue": "layer2-broadcast" - } - ], - "matchCondition": "matchConditionAny", - "name": "layer2-broadcast" - }, - { - "match": [ - { - "option": "matchBuiltIn", - "strValue": "lldp" - } - ], - "matchCondition": "matchConditionAny", - "name": "lldp" - }, - { - "match": [ - { - "option": "matchBuiltIn", - "strValue": "link-local-multicast" - } - ], - "matchCondition": "matchConditionAny", - "name": "link-local-multicast" - }, - { - "match": [ - { - "option": "matchBuiltIn", - "strValue": "ospf" - } - ], - "matchCondition": "matchConditionAny", - "name": "ospf" - }, - { - "match": [ - { - "option": "matchBuiltIn", - "strValue": "igmp" - } - ], - "matchCondition": "matchConditionAny", - "name": "igmp" - }, - { - "match": [ - { - "option": "matchBuiltIn", - "strValue": "bpdu" - } - ], - "matchCondition": "matchConditionAny", - "name": "bpdu" - }, - { - "match": [ - { - "option": "matchBuiltIn", - "strValue": "unicast-rpf-failure" - } - ], - "matchCondition": "matchConditionAny", - "name": "unicast-rpf-failure" - }, - { - "match": [ - { - "option": "matchBuiltIn", - "strValue": "layer3-control" - } - ], - "matchCondition": "matchConditionAny", - "name": "layer3-control" - }, - { - "match": [ - { - "option": "matchBuiltIn", - "strValue": "lacp" - } - ], - "matchCondition": "matchConditionAny", - "name": "lacp" - }, - { - "match": [ - { - "option": "matchBuiltIn", - "strValue": "natTcpFlags" - } - ], - "matchCondition": "matchConditionAny", - "name": "natTcpFlags" - }, - { - "match": [ - { - "option": "matchBuiltIn", - "strValue": "self-ip-all" - } - ], - "matchCondition": "matchConditionAny", - "name": "self-ip-all" - }, - { - "match": [ - { - "option": "matchBuiltIn", - "strValue": "arp-needed" - } - ], - "matchCondition": "matchConditionAny", - "name": "arp-needed" - }, - { - "match": [ - { - "option": "matchBuiltIn", - "strValue": "self-ip-high-priority" - } - ], - "matchCondition": "matchConditionAny", - "name": "self-ip-high-priority" - }, - { - "match": [ - { - "option": "matchBuiltIn", - "strValue": "unicast-route-miss" - } - ], - "matchCondition": "matchConditionAny", - "name": "unicast-route-miss" - }, - { - "match": [ - { - "option": "matchBuiltIn", - "strValue": "nat-miss" - } - ], - "matchCondition": "matchConditionAny", - "name": "nat-miss" - }, - { - "match": [ - { - "option": "matchBuiltIn", - "strValue": "bfd" - } - ], - "matchCondition": "matchConditionAny", - "name": "bfd" - }, - { - "match": [ - { - "option": "matchBuiltIn", - "strValue": "cfm" - } - ], - "matchCondition": "matchConditionAny", - "name": "cfm" - }, - { - "match": [ - { - "option": "matchBuiltIn", - "strValue": "self-icmp" - } - ], - "matchCondition": "matchConditionAny", - "name": "self-icmp" - }, - { - "match": [ - { - "option": "matchBuiltIn", - "strValue": "self-ip-low-priority" - } - ], - "matchCondition": "matchConditionAny", - "name": "self-ip-low-priority" - }, - { - "match": [ - { - "option": "matchBuiltIn", - "strValue": "dhcp" - } - ], - "matchCondition": "matchConditionAny", - "name": "dhcp" - }, - { - "match": [ - { - "option": "matchBuiltIn", - "strValue": "pim" - } - ], - "matchCondition": "matchConditionAny", - "name": "pim" - }, - { - "match": [ - { - "option": "matchBuiltIn", - "strValue": "pvst" - } - ], - "matchCondition": "matchConditionAny", - "name": "pvst" - }, - { - "match": [ - { - "option": "matchBuiltIn", - "strValue": "vxlan-vtep-learn" - } - ], - "matchCondition": "matchConditionAny", - "name": "vxlan-vtep-learn" - }, - { - "match": [ - { - "option": "matchBuiltIn", - "strValue": "ttl-exception" - } - ], - "matchCondition": "matchConditionAny", - "name": "ttl-exception" - }, - { - "match": [ - { - "option": "matchBuiltIn", - "strValue": "arp" - } - ], - "matchCondition": "matchConditionAny", - "name": "arp" - }, - { - "match": [ - { - "option": "matchBuiltIn", - "strValue": "layer3-slow-path" - } - ], - "matchCondition": "matchConditionAny", - "name": "layer3-slow-path" - }, - { - "match": [ - { - "option": "matchBuiltIn", - "strValue": "ip-broadcast" - } - ], - "matchCondition": "matchConditionAny", - "name": "ip-broadcast" - }, - { - "match": [ - { - "option": "matchBuiltIn", - "strValue": "multicast-route-miss" - } - ], - "matchCondition": "matchConditionAny", - "name": "multicast-route-miss" - }, - { - "match": [ - { - "option": "matchBuiltIn", - "strValue": "layer2-control" - } - ], - "matchCondition": "matchConditionAny", - "name": "layer2-control" - }, - { - "match": [ - { - "option": "matchBuiltIn", - "strValue": "mac-source-miss" - } - ], - "matchCondition": "matchConditionAny", - "name": "mac-source-miss" - }, - { - "match": [ - { - "option": "matchBuiltIn", - "strValue": "mvrp" - } - ], - "matchCondition": "matchConditionAny", - "name": "mvrp" - }, - { - "match": [ - { - "option": "matchBuiltIn", - "strValue": "mlag-control" - } - ], - "matchCondition": "matchConditionAny", - "name": "mlag-control" - }, - { - "match": [ - { - "option": "matchBuiltIn", - "strValue": "mpls-route-miss" - } - ], - "matchCondition": "matchConditionAny", - "name": "mpls-route-miss" - }, - { - "match": [ - { - "option": "matchBuiltIn", - "strValue": "mstp" - } - ], - "matchCondition": "matchConditionAny", - "name": "mstp" - }, - { - "match": [ - { - "option": "matchBuiltIn", - "strValue": "dot1xMBA" - } - ], - "matchCondition": "matchConditionAny", - "name": "dot1xMBA" - }, - { - "match": [ - { - "option": "matchBuiltIn", - "strValue": "unicast-route-overflow" - } - ], - "matchCondition": "matchConditionAny", - "name": "unicast-route-overflow" - }, - { - "match": [ - { - "option": "matchBuiltIn", - "strValue": "mlag-control-heartbeat" - } - ], - "matchCondition": "matchConditionAny", - "name": "mlag-control-heartbeat" - }, - { - "match": [ - { - "option": "matchBuiltIn", - "strValue": "self-bgp" - } - ], - "matchCondition": "matchConditionAny", - "name": "self-bgp" - }, - { - "match": [ - { - "option": "matchBuiltIn", - "strValue": "ipv6-nd" - } - ], - "matchCondition": "matchConditionAny", - "name": "ipv6-nd" - }, - { - "match": [ - { - "option": "matchBuiltIn", - "strValue": "vxlan-encapsulation" - } - ], - "matchCondition": "matchConditionAny", - "name": "vxlan-encapsulation" - }, - { - "match": [ - { - "option": "matchBuiltIn", - "strValue": "cvx" - } - ], - "matchCondition": "matchConditionAny", - "name": "cvx" - }, - { - "match": [ - { - "option": "matchBuiltIn", - "strValue": "routed-ip-options" - } - ], - "matchCondition": "matchConditionAny", - "name": "routed-ip-options" - }, - { - "match": [ - { - "option": "matchBuiltIn", - "strValue": "isis" - } - ], - "matchCondition": "matchConditionAny", - "name": "isis" - }, - { - "match": [ - { - "option": "matchBuiltIn", - "strValue": "ptp" - } - ], - "matchCondition": "matchConditionAny", - "name": "ptp" - } - ], - "type": "mapPdp" - }, - { - "type": "mapQos" - } - ], - "pmapType": [ - { - "pmap": [ - { - "classAction": [ - { - "name": "copp-system-OspfIsis", - "policer": { - "cmdVersion": 1 - }, - "policyAction": [ - { - "actionType": "actionSetBandwidth", - "rate": {} - }, - { - "actionType": "actionSetShape", - "rate": {} - } - ] - }, - { - "name": "copp-system-l3lpmoverflow", - "policer": { - "cmdVersion": 1 - }, - "policyAction": [ - { - "actionType": "actionSetShape", - "rate": {} - }, - { - "actionType": "actionSetBandwidth", - "rate": {} - } - ] - }, - { - "name": "copp-system-linklocal", - "policer": { - "cmdVersion": 1 - }, - "policyAction": [ - { - "actionType": "actionSetShape", - "rate": {} - }, - { - "actionType": "actionSetBandwidth", - "rate": {} - } - ] - }, - { - "name": "copp-system-nat", - "policer": { - "cmdVersion": 1 - }, - "policyAction": [ - { - "actionType": "actionSetShape", - "rate": {} - }, - { - "actionType": "actionSetBandwidth", - "rate": {} - } - ] - }, - { - "name": "copp-system-ipmcmiss", - "policer": { - "cmdVersion": 1 - }, - "policyAction": [ - { - "actionType": "actionSetShape", - "rate": {} - }, - { - "actionType": "actionSetBandwidth", - "rate": {} - } - ] - }, - { - "name": "copp-system-drop", - "policer": { - "cmdVersion": 1 - }, - "policyAction": [ - { - "actionType": "actionSetShape", - "rate": {} - }, - { - "actionType": "actionSetBandwidth", - "rate": {} - } - ] - }, - { - "name": "copp-system-cfm", - "policer": { - "cmdVersion": 1 - }, - "policyAction": [ - { - "actionType": "actionSetShape", - "rate": {} - }, - { - "actionType": "actionSetBandwidth", - "rate": {} - } - ] - }, - { - "name": "copp-system-ipmc", - "policer": { - "cmdVersion": 1 - }, - "policyAction": [ - { - "actionType": "actionSetShape", - "rate": {} - }, - { - "actionType": "actionSetBandwidth", - "rate": {} - } - ] - }, - { - "name": "copp-system-mod", - "policer": { - "cmdVersion": 1 - }, - "policyAction": [ - { - "actionType": "actionSetBandwidth", - "rate": {} - }, - { - "actionType": "actionSetShape", - "rate": {} - } - ] - }, - { - "name": "copp-system-acllog", - "policer": { - "cmdVersion": 1 - }, - "policyAction": [ - { - "actionType": "actionSetShape", - "rate": {} - }, - { - "actionType": "actionSetBandwidth", - "rate": {} - } - ] - }, - { - "name": "copp-system-tc3to5", - "policer": { - "cmdVersion": 1 - }, - "policyAction": [ - { - "actionType": "actionSetShape", - "rate": {} - }, - { - "actionType": "actionSetBandwidth", - "rate": {} - } - ] - }, - { - "name": "copp-system-bpdu", - "policer": { - "cmdVersion": 1 - }, - "policyAction": [ - { - "actionType": "actionSetShape", - "rate": {} - }, - { - "actionType": "actionSetBandwidth", - "rate": {} - } - ] - }, - { - "name": "copp-system-mirroring", - "policer": { - "cmdVersion": 1 - }, - "policyAction": [ - { - "actionType": "actionSetBandwidth", - "rate": {} - }, - { - "actionType": "actionSetShape", - "rate": {} - } - ] - }, - { - "name": "copp-system-bfd-ptp", - "policer": { - "cmdVersion": 1 - }, - "policyAction": [ - { - "actionType": "actionSetShape", - "rate": {} - }, - { - "actionType": "actionSetBandwidth", - "rate": {} - } - ] - }, - { - "name": "copp-system-mlag", - "policer": { - "cmdVersion": 1 - }, - "policyAction": [ - { - "actionType": "actionSetShape", - "rate": {} - }, - { - "actionType": "actionSetBandwidth", - "rate": {} - } - ] - }, - { - "name": "copp-system-cvx", - "policer": { - "cmdVersion": 1 - }, - "policyAction": [ - { - "actionType": "actionSetShape", - "rate": {} - }, - { - "actionType": "actionSetBandwidth", - "rate": {} - } - ] - }, - { - "name": "copp-system-vrrp", - "policer": { - "cmdVersion": 1 - }, - "policyAction": [ - { - "actionType": "actionSetShape", - "rate": {} - }, - { - "actionType": "actionSetBandwidth", - "rate": {} - } - ] - }, - { - "name": "copp-system-igmp", - "policer": { - "cmdVersion": 1 - }, - "policyAction": [ - { - "actionType": "actionSetBandwidth", - "rate": {} - }, - { - "actionType": "actionSetShape", - "rate": {} - } - ] - }, - { - "name": "copp-system-default-snoop", - "policer": { - "cmdVersion": 1 - }, - "policyAction": [ - { - "actionType": "actionSetBandwidth", - "rate": {} - }, - { - "actionType": "actionSetShape", - "rate": {} - } - ] - }, - { - "name": "copp-system-ipbroadcast", - "policer": { - "cmdVersion": 1 - }, - "policyAction": [ - { - "actionType": "actionSetShape", - "rate": {} - }, - { - "actionType": "actionSetBandwidth", - "rate": {} - } - ] - }, - { - "name": "copp-system-bfd", - "policer": { - "cmdVersion": 1 - }, - "policyAction": [ - { - "actionType": "actionSetShape", - "rate": {} - }, - { - "actionType": "actionSetBandwidth", - "rate": {} - } - ] - }, - { - "name": "copp-system-mpls-ttl01", - "policer": { - "cmdVersion": 1 - }, - "policyAction": [ - { - "actionType": "actionSetShape", - "rate": {} - }, - { - "actionType": "actionSetBandwidth", - "rate": {} - } - ] - }, - { - "name": "copp-system-l3destmiss", - "policer": { - "cmdVersion": 1 - }, - "policyAction": [ - { - "actionType": "actionSetBandwidth", - "rate": {} - }, - { - "actionType": "actionSetShape", - "rate": {} - } - ] - }, - { - "name": "copp-system-iplocking", - "policer": { - "cmdVersion": 1 - }, - "policyAction": [ - { - "actionType": "actionSetShape", - "rate": {} - }, - { - "actionType": "actionSetBandwidth", - "rate": {} - } - ] - }, - { - "name": "copp-system-mac-learn", - "policer": { - "cmdVersion": 1 - }, - "policyAction": [ - { - "actionType": "actionSetShape", - "rate": {} - }, - { - "actionType": "actionSetBandwidth", - "rate": {} - } - ] - }, - { - "name": "copp-system-l3ttl1", - "policer": { - "cmdVersion": 1 - }, - "policyAction": [ - { - "actionType": "actionSetShape", - "rate": {} - }, - { - "actionType": "actionSetBandwidth", - "rate": {} - } - ] - }, - { - "name": "copp-system-arp", - "policer": { - "cmdVersion": 1 - }, - "policyAction": [ - { - "actionType": "actionSetShape", - "rate": {} - }, - { - "actionType": "actionSetBandwidth", - "rate": {} - } - ] - }, - { - "name": "copp-system-cvx-heartbeat", - "policer": { - "cmdVersion": 1 - }, - "policyAction": [ - { - "actionType": "actionSetShape", - "rate": {} - }, - { - "actionType": "actionSetBandwidth", - "rate": {} - } - ] - }, - { - "name": "copp-system-egress-acllog", - "policer": { - "cmdVersion": 1 - }, - "policyAction": [ - { - "actionType": "actionSetBandwidth", - "rate": {} - }, - { - "actionType": "actionSetShape", - "rate": {} - } - ] - }, - { - "name": "copp-system-lacp", - "policer": { - "cmdVersion": 1 - }, - "policyAction": [ - { - "actionType": "actionSetBandwidth", - "rate": {} - }, - { - "actionType": "actionSetShape", - "rate": {} - } - ] - }, - { - "name": "copp-system-l2rsvd", - "policer": { - "cmdVersion": 1 - }, - "policyAction": [ - { - "actionType": "actionSetShape", - "rate": {} - }, - { - "actionType": "actionSetBandwidth", - "rate": {} - } - ] - }, - { - "name": "copp-system-ipmcrsvd", - "policer": { - "cmdVersion": 1 - }, - "policyAction": [ - { - "actionType": "actionSetShape", - "rate": {} - }, - { - "actionType": "actionSetBandwidth", - "rate": {} - } - ] - }, - { - "name": "copp-system-vxlan-encapsulation", - "policer": { - "cmdVersion": 1 - }, - "policyAction": [ - { - "actionType": "actionSetShape", - "rate": {} - }, - { - "actionType": "actionSetBandwidth", - "rate": {} - } - ] - }, - { - "name": "copp-system-dot1x-mba", - "policer": { - "cmdVersion": 1 - }, - "policyAction": [ - { - "actionType": "actionSetShape", - "rate": {} - }, - { - "actionType": "actionSetBandwidth", - "rate": {} - } - ] - }, - { - "name": "copp-system-ptp-snoop", - "policer": { - "cmdVersion": 1 - }, - "policyAction": [ - { - "actionType": "actionSetShape", - "rate": {} - }, - { - "actionType": "actionSetBandwidth", - "rate": {} - } - ] - }, - { - "name": "copp-system-cfm-snoop", - "policer": { - "cmdVersion": 1 - }, - "policyAction": [ - { - "actionType": "actionSetBandwidth", - "rate": {} - }, - { - "actionType": "actionSetShape", - "rate": {} - } - ] - }, - { - "name": "copp-system-vxlan-vtep-learn", - "policer": { - "cmdVersion": 1 - }, - "policyAction": [ - { - "actionType": "actionSetShape", - "rate": {} - }, - { - "actionType": "actionSetBandwidth", - "rate": {} - } - ] - }, - { - "name": "copp-system-l2broadcast", - "policer": { - "cmdVersion": 1 - }, - "policyAction": [ - { - "actionType": "actionSetShape", - "rate": {} - }, - { - "actionType": "actionSetBandwidth", - "rate": {} - } - ] - }, - { - "name": "copp-system-mpls-arp-suppress", - "policer": { - "cmdVersion": 1 - }, - "policyAction": [ - { - "actionType": "actionSetShape", - "rate": {} - }, - { - "actionType": "actionSetBandwidth", - "rate": {} - } - ] - }, - { - "name": "copp-system-lldp", - "policer": { - "cmdVersion": 1 - }, - "policyAction": [ - { - "actionType": "actionSetShape", - "rate": {} - }, - { - "actionType": "actionSetBandwidth", - "rate": {} - } - ] - }, - { - "name": "copp-system-glean", - "policer": { - "cmdVersion": 1 - }, - "policyAction": [ - { - "actionType": "actionSetShape", - "rate": {} - }, - { - "actionType": "actionSetBandwidth", - "rate": {} - } - ] - }, - { - "name": "copp-system-ipunicast", - "policer": { - "cmdVersion": 1 - }, - "policyAction": [ - { - "actionType": "actionSetBandwidth", - "rate": {} - }, - { - "actionType": "actionSetShape", - "rate": {} - } - ] - }, - { - "name": "copp-system-multicastsnoop", - "policer": { - "cmdVersion": 1 - }, - "policyAction": [ - { - "actionType": "actionSetShape", - "rate": {} - }, - { - "actionType": "actionSetBandwidth", - "rate": {} - } - ] - }, - { - "name": "copp-system-pim", - "policer": { - "cmdVersion": 1 - }, - "policyAction": [ - { - "actionType": "actionSetShape", - "rate": {} - }, - { - "actionType": "actionSetBandwidth", - "rate": {} - } - ] - }, - { - "name": "copp-system-selfip-tc6to7", - "policer": { - "cmdVersion": 1 - }, - "policyAction": [ - { - "actionType": "actionSetShape", - "rate": {} - }, - { - "actionType": "actionSetBandwidth", - "rate": {} - } - ] - }, - { - "name": "copp-system-selfip", - "policer": { - "cmdVersion": 1 - }, - "policyAction": [ - { - "actionType": "actionSetBandwidth", - "rate": {} - }, - { - "actionType": "actionSetShape", - "rate": {} - } - ] - }, - { - "name": "copp-system-PimPtp", - "policer": { - "cmdVersion": 1 - }, - "policyAction": [ - { - "actionType": "actionSetShape", - "rate": {} - }, - { - "actionType": "actionSetBandwidth", - "rate": {} - } - ] - }, - { - "name": "copp-system-arpresolver", - "policer": { - "cmdVersion": 1 - }, - "policyAction": [ - { - "actionType": "actionSetBandwidth", - "rate": {} - }, - { - "actionType": "actionSetShape", - "rate": {} - } - ] - }, - { - "name": "copp-system-ptp", - "policer": { - "cmdVersion": 1 - }, - "policyAction": [ - { - "actionType": "actionSetShape", - "rate": {} - }, - { - "actionType": "actionSetBandwidth", - "rate": {} - } - ] - }, - { - "name": "copp-system-ldp", - "policer": { - "cmdVersion": 1 - }, - "policyAction": [ - { - "actionType": "actionSetBandwidth", - "rate": {} - }, - { - "actionType": "actionSetShape", - "rate": {} - } - ] - }, - { - "name": "copp-system-acllog-sflow", - "policer": { - "cmdVersion": 1 - }, - "policyAction": [ - { - "actionType": "actionSetShape", - "rate": {} - }, - { - "actionType": "actionSetBandwidth", - "rate": {} - } - ] - }, - { - "name": "copp-system-mtu", - "policer": { - "cmdVersion": 1 - }, - "policyAction": [ - { - "actionType": "actionSetShape", - "rate": {} - }, - { - "actionType": "actionSetBandwidth", - "rate": {} - } - ] - }, - { - "name": "copp-system-arp-inspect", - "policer": { - "cmdVersion": 1 - }, - "policyAction": [ - { - "actionType": "actionSetBandwidth", - "rate": {} - }, - { - "actionType": "actionSetShape", - "rate": {} - } - ] - }, - { - "name": "copp-system-rsvp", - "policer": { - "cmdVersion": 1 - }, - "policyAction": [ - { - "actionType": "actionSetShape", - "rate": {} - }, - { - "actionType": "actionSetBandwidth", - "rate": {} - } - ] - }, - { - "name": "copp-system-mvrp", - "policer": { - "cmdVersion": 1 - }, - "policyAction": [ - { - "actionType": "actionSetBandwidth", - "rate": {} - }, - { - "actionType": "actionSetShape", - "rate": {} - } - ] - }, - { - "name": "copp-system-unicastarp", - "policer": { - "cmdVersion": 1 - }, - "policyAction": [ - { - "actionType": "actionSetBandwidth", - "rate": {} - }, - { - "actionType": "actionSetShape", - "rate": {} - } - ] - }, - { - "name": "copp-system-l3slowpath", - "policer": { - "cmdVersion": 1 - }, - "policyAction": [ - { - "actionType": "actionSetShape", - "rate": {} - }, - { - "actionType": "actionSetBandwidth", - "rate": {} - } - ] - }, - { - "name": "copp-system-mpls-label-miss", - "policer": { - "cmdVersion": 1 - }, - "policyAction": [ - { - "actionType": "actionSetShape", - "rate": {} - }, - { - "actionType": "actionSetBandwidth", - "rate": {} - } - ] - }, - { - "name": "copp-system-bgp", - "policer": { - "cmdVersion": 1 - }, - "policyAction": [ - { - "actionType": "actionSetShape", - "rate": {} - }, - { - "actionType": "actionSetBandwidth", - "rate": {} - } - ] - }, - { - "name": "copp-system-l3ttl0", - "policer": { - "cmdVersion": 1 - }, - "policyAction": [ - { - "actionType": "actionSetBandwidth", - "rate": {} - }, - { - "actionType": "actionSetShape", - "rate": {} - } - ] - }, - { - "name": "copp-system-ipv6nd", - "policer": { - "cmdVersion": 1 - }, - "policyAction": [ - { - "actionType": "actionSetShape", - "rate": {} - }, - { - "actionType": "actionSetBandwidth", - "rate": {} - } - ] - }, - { - "name": "copp-system-sflow", - "policer": { - "cmdVersion": 1 - }, - "policyAction": [ - { - "actionType": "actionSetShape", - "rate": {} - }, - { - "actionType": "actionSetBandwidth", - "rate": {} - } - ] - }, - { - "name": "copp-system-l3rsvd", - "policer": { - "cmdVersion": 1 - }, - "policyAction": [ - { - "actionType": "actionSetShape", - "rate": {} - }, - { - "actionType": "actionSetBandwidth", - "rate": {} - } - ] - }, - { - "name": "copp-system-dot1x-vxlan", - "policer": { - "cmdVersion": 1 - }, - "policyAction": [ - { - "actionType": "actionSetShape", - "rate": {} - }, - { - "actionType": "actionSetBandwidth", - "rate": {} - } - ] - }, - { - "name": "copp-system-l2ucast", - "policer": { - "cmdVersion": 1 - }, - "policyAction": [ - { - "actionType": "actionSetBandwidth", - "rate": {} - }, - { - "actionType": "actionSetShape", - "rate": {} - } - ] - }, - { - "name": "copp-system-tc6to7", - "policer": { - "cmdVersion": 1 - }, - "policyAction": [ - { - "actionType": "actionSetBandwidth", - "rate": {} - }, - { - "actionType": "actionSetShape", - "rate": {} - } - ] - }, - { - "name": "copp-system-protocol-snoop", - "policer": { - "cmdVersion": 1 - }, - "policyAction": [ - { - "actionType": "actionSetShape", - "rate": {} - }, - { - "actionType": "actionSetBandwidth", - "rate": {} - } - ] - } - ], - "classActionDefault": { - "name": "copp-system-default", - "policer": { - "cmdVersion": 1 - }, - "policyAction": [ - { - "actionType": "actionSetShape", - "rate": {} - }, - { - "actionType": "actionSetBandwidth", - "rate": {} - } - ] - }, - "classDefault": { - "match": [ - { - "option": "matchIpAccessGroup" - } - ] - }, - "coppStaticClassPrio": [ - { - "index": 25 - }, - { - "index": 21 - }, - { - "index": 19 - }, - { - "index": 55 - }, - { - "index": 62 - }, - { - "index": 10 - }, - { - "index": 15 - }, - { - "index": 49 - }, - { - "index": 31 - }, - { - "index": 58 - }, - { - "index": 30 - }, - { - "index": 14 - }, - { - "index": 41 - }, - { - "index": 56 - }, - { - "index": 36 - }, - { - "index": 16 - }, - { - "index": 48 - }, - { - "index": 64 - }, - { - "index": 39 - }, - { - "index": 27 - }, - { - "index": 8 - }, - { - "index": 9 - }, - { - "index": 2 - }, - { - "index": 54 - }, - { - "index": 35 - }, - { - "index": 3 - }, - { - "index": 29 - }, - { - "index": 59 - }, - { - "index": 33 - }, - { - "index": 18 - }, - { - "index": 42 - }, - { - "index": 7 - }, - { - "index": 24 - }, - { - "index": 61 - }, - { - "index": 38 - }, - { - "index": 53 - }, - { - "index": 66 - }, - { - "index": 32 - }, - { - "index": 37 - }, - { - "index": 52 - }, - { - "index": 51 - }, - { - "index": 40 - }, - { - "index": 13 - }, - { - "index": 12 - }, - { - "index": 5 - }, - { - "index": 4 - }, - { - "index": 34 - }, - { - "index": 45 - }, - { - "index": 11 - }, - { - "index": 26 - }, - { - "index": 28 - }, - { - "index": 67 - }, - { - "index": 46 - }, - { - "index": 17 - }, - { - "index": 65 - }, - { - "index": 63 - }, - { - "index": 50 - }, - { - "index": 57 - }, - { - "index": 23 - }, - { - "index": 1 - }, - { - "index": 60 - }, - { - "index": 47 - }, - { - "index": 22 - }, - { - "index": 44 - }, - { - "index": 20 - }, - { - "index": 6 - }, - { - "index": 43 - } - ], - "name": "copp-system-policy" - } - ], - "type": "mapControlPlane" - }, - { - "type": "mapPdp" - }, - { - "type": "mapQos" - } - ] - } - } - }, - "arista-exp-eos-qos-config:input": { - "config": { - "cli": { - "servicePolicyConfig": [ - { - "key-direction": "input", - "key-pmapName": "copp-system-policy", - "key-type": "mapControlPlane" - } - ] - } - } - } - } - } - }, - "arista-gnoi-cert:certificates": { - "certificate": [ - { - "certificate-id": "ARISTA_DEFAULT_PROFILE", - "config": { - "certificate-id": "ARISTA_DEFAULT_PROFILE" - }, - "status": { - "not-after": 0, - "not-before": 0, - "pem-certificate": "" - } - } - ] - }, - "ietf-netconf-monitoring:netconf-state": { - "capabilities": { - "capability": [ - "http://arista.com/yang/cert/gnoi-cert?module=arista-gnoi-cert\u0026revision=2018-01-15", - "http://arista.com/yang/cli?module=arista-cli\u0026revision=2020-02-11", - "http://arista.com/yang/experimental/eos/eos-types?module=arista-eos-types\u0026revision=2016-10-14", - "http://arista.com/yang/experimental/eos/evpn?module=arista-exp-eos-evpn\u0026revision=2020-07-31", - "http://arista.com/yang/experimental/eos/l2protocolforwarding?module=arista-exp-eos-l2protocolforwarding\u0026revision=2020-04-16", - "http://arista.com/yang/experimental/eos/qos/acl?module=arista-exp-eos-qos-acl-config\u0026revision=2019-11-12", - "http://arista.com/yang/experimental/eos/qos/config?module=arista-exp-eos-qos-config\u0026revision=2017-09-26", - "http://arista.com/yang/experimental/eos/qos?module=arista-exp-eos-qos\u0026revision=2017-09-26", - "http://arista.com/yang/experimental/eos/varp/intf?module=arista-exp-eos-varp-intf\u0026revision=2020-01-06", - "http://arista.com/yang/experimental/eos/varp/net-inst?module=arista-exp-eos-varp-net-inst\u0026revision=2019-05-22", - "http://arista.com/yang/experimental/eos/vxlan/config?module=arista-exp-eos-vxlan-config\u0026revision=2018-08-01", - "http://arista.com/yang/experimental/eos/vxlan?module=arista-exp-eos-vxlan\u0026revision=2018-08-01", - "http://arista.com/yang/experimental/eos?module=arista-exp-eos\u0026revision=2016-11-09", - "http://arista.com/yang/experimental/igmpsnooping?module=arista-exp-eos-igmpsnooping\u0026revision=2017-10-23", - "http://arista.com/yang/experimental/multicast?module=arista-exp-eos-multicast\u0026revision=2017-10-20", - "http://arista.com/yang/openconfig/acl/deviations?module=arista-acl-deviations\u0026revision=2020-01-07", - "http://arista.com/yang/openconfig/acl/notsupported-deviations?module=arista-acl-notsupported-deviations\u0026revision=2020-02-04", - "http://arista.com/yang/openconfig/aft/augments?module=arista-aft-augments\u0026revision=2019-10-01", - "http://arista.com/yang/openconfig/bfd/augments?module=arista-bfd-augments\u0026revision=2020-01-06", - "http://arista.com/yang/openconfig/bfd/deviations?module=arista-bfd-deviations\u0026revision=2018-08-08", - "http://arista.com/yang/openconfig/bfd/notsupported-deviations?module=arista-bfd-notsupported-deviations\u0026revision=2020-02-04", - "http://arista.com/yang/openconfig/bgp/augments?module=arista-bgp-augments\u0026revision=2020-05-27", - "http://arista.com/yang/openconfig/bgp/deviations?module=arista-bgp-deviations\u0026revision=2020-05-27", - "http://arista.com/yang/openconfig/bgp/notsupported-deviations?module=arista-bgp-notsupported-deviations\u0026revision=2020-02-04", - "http://arista.com/yang/openconfig/interfaces/augments?module=arista-intf-augments\u0026revision=2020-05-13", - "http://arista.com/yang/openconfig/interfaces/deviations?module=arista-intf-deviations\u0026revision=2020-04-02", - "http://arista.com/yang/openconfig/interfaces/notsupported-deviations?module=arista-interfaces-notsupported-deviations\u0026revision=2020-03-27", - "http://arista.com/yang/openconfig/isis/augments?module=arista-isis-augments\u0026revision=2020-03-18", - "http://arista.com/yang/openconfig/isis/deviations?module=arista-isis-deviations\u0026revision=2019-05-14", - "http://arista.com/yang/openconfig/lacp/augments?module=arista-lacp-augments\u0026revision=2017-09-14", - "http://arista.com/yang/openconfig/lacp/deviations?module=arista-lacp-deviations\u0026revision=2017-09-07", - "http://arista.com/yang/openconfig/lacp/notsupported-deviations?module=arista-lacp-notsupported-deviations\u0026revision=2020-02-04", - "http://arista.com/yang/openconfig/lldp/augments?module=arista-lldp-augments\u0026revision=2018-03-06", - "http://arista.com/yang/openconfig/lldp/deviations?module=arista-lldp-deviations\u0026revision=2018-04-02", - "http://arista.com/yang/openconfig/lldp/notsupported-deviations?module=arista-lldp-notsupported-deviations\u0026revision=2020-02-04", - "http://arista.com/yang/openconfig/local-routing/deviations?module=arista-local-routing-deviations\u0026revision=2017-11-22", - "http://arista.com/yang/openconfig/local-routing/notsupported-deviations?module=arista-local-routing-notsupported-deviations\u0026revision=2020-02-04", - "http://arista.com/yang/openconfig/messages/notsupported-deviations?module=arista-messages-notsupported-deviations\u0026revision=2020-02-04", - "http://arista.com/yang/openconfig/mpls/augments?module=arista-mpls-augments\u0026revision=2017-12-21", - "http://arista.com/yang/openconfig/mpls/deviations?module=arista-mpls-deviations\u0026revision=2018-03-19", - "http://arista.com/yang/openconfig/network-instance/deviations?module=arista-vlan-deviations\u0026revision=2019-11-13", - "http://arista.com/yang/openconfig/network-instance/notsupported-deviations?module=arista-network-instance-notsupported-deviations\u0026revision=2020-07-31", - "http://arista.com/yang/openconfig/network-instance/vlan/augments?module=arista-vlan-augments\u0026revision=2020-01-06", - "http://arista.com/yang/openconfig/network-instances/deviations?module=arista-netinst-deviations\u0026revision=2019-05-24", - "http://arista.com/yang/openconfig/openflow/deviations?module=arista-openflow-deviations\u0026revision=2020-02-26", - "http://arista.com/yang/openconfig/pim/augments?module=arista-pim-augments\u0026revision=2019-04-24", - "http://arista.com/yang/openconfig/platform/notsupported-deviations?module=arista-platform-notsupported-deviations\u0026revision=2020-07-13", - "http://arista.com/yang/openconfig/policy-forwarding/augments?module=arista-srte-augments\u0026revision=2020-01-28", - "http://arista.com/yang/openconfig/policy-forwarding/augments?module=arista-srte-deviations\u0026revision=2020-03-03", - "http://arista.com/yang/openconfig/policy/augments?module=arista-rpol-augments\u0026revision=2018-04-12", - "http://arista.com/yang/openconfig/policy/deviations?module=arista-rpol-deviations\u0026revision=2016-02-01", - "http://arista.com/yang/openconfig/qos/augments?module=arista-qos-augments\u0026revision=2020-06-05", - "http://arista.com/yang/openconfig/qos/notsupported-deviations?module=arista-qos-notsupported-deviations\u0026revision=2020-06-10", - "http://arista.com/yang/openconfig/relay-agent/deviations?module=arista-relay-agent-deviations\u0026revision=2016-11-21", - "http://arista.com/yang/openconfig/routing-policy/notsupported-deviations?module=arista-routing-policy-notsupported-deviations\u0026revision=2020-02-07", - "http://arista.com/yang/openconfig/system/augments?module=arista-system-augments\u0026revision=2020-03-09", - "http://arista.com/yang/openconfig/system/deviations?module=arista-system-deviations\u0026revision=2020-01-21", - "http://arista.com/yang/openconfig/system/notsupported-deviations?module=arista-system-notsupported-deviations\u0026revision=2020-03-26", - "http://arista.com/yang/rpc/netconf?module=arista-rpc-netconf\u0026revision=2018-01-04", - "http://arista.com/yang/vlan-translation?module=vlan-translation\u0026revision=2019-07-31", - "http://openconfig.net/yang/aaa/types?module=openconfig-aaa-types\u0026revision=2018-11-21", - "http://openconfig.net/yang/aaa?module=openconfig-aaa\u0026revision=2019-10-28", - "http://openconfig.net/yang/aaa?module=openconfig-aaa-radius\u0026revision=2018-11-21", - "http://openconfig.net/yang/aaa?module=openconfig-aaa-tacacs\u0026revision=2018-11-21", - "http://openconfig.net/yang/acl?module=openconfig-acl\u0026revision=2019-11-27", - "http://openconfig.net/yang/aft?module=openconfig-aft\u0026revision=2019-11-07", - "http://openconfig.net/yang/aft?module=openconfig-aft-common\u0026revision=2019-11-07", - "http://openconfig.net/yang/aft?module=openconfig-aft-ethernet\u0026revision=2019-11-07", - "http://openconfig.net/yang/aft?module=openconfig-aft-ipv4\u0026revision=2019-11-07", - "http://openconfig.net/yang/aft?module=openconfig-aft-ipv6\u0026revision=2019-11-07", - "http://openconfig.net/yang/aft?module=openconfig-aft-mpls\u0026revision=2019-11-07", - "http://openconfig.net/yang/aft?module=openconfig-aft-pf\u0026revision=2019-11-07", - "http://openconfig.net/yang/alarms/types?module=openconfig-alarm-types\u0026revision=2018-11-21", - "http://openconfig.net/yang/alarms?module=openconfig-alarms\u0026revision=2019-07-09", - "http://openconfig.net/yang/bfd?module=openconfig-bfd\u0026revision=2020-05-08", - "http://openconfig.net/yang/bgp-policy?module=openconfig-bgp-policy\u0026revision=2019-11-28", - "http://openconfig.net/yang/bgp-types?module=openconfig-bgp-errors\u0026revision=2018-11-21", - "http://openconfig.net/yang/bgp-types?module=openconfig-bgp-types\u0026revision=2020-06-17", - "http://openconfig.net/yang/bgp?module=openconfig-bgp\u0026revision=2019-07-10", - "http://openconfig.net/yang/bgp?module=openconfig-bgp-common\u0026revision=2019-07-10", - "http://openconfig.net/yang/bgp?module=openconfig-bgp-common-multiprotocol\u0026revision=2019-07-10", - "http://openconfig.net/yang/bgp?module=openconfig-bgp-common-structure\u0026revision=2019-07-10", - "http://openconfig.net/yang/bgp?module=openconfig-bgp-global\u0026revision=2019-07-10", - "http://openconfig.net/yang/bgp?module=openconfig-bgp-neighbor\u0026revision=2019-07-10", - "http://openconfig.net/yang/bgp?module=openconfig-bgp-peer-group\u0026revision=2019-07-10", - "http://openconfig.net/yang/fib-types?module=openconfig-aft-types\u0026revision=2019-11-07", - "http://openconfig.net/yang/header-fields?module=openconfig-packet-match\u0026revision=2018-11-21", - "http://openconfig.net/yang/hercules/interfaces?module=openconfig-hercules-interfaces\u0026revision=2018-06-01", - "http://openconfig.net/yang/hercules/platform?module=openconfig-hercules-platform\u0026revision=2018-06-01", - "http://openconfig.net/yang/hercules/platform?module=openconfig-hercules-platform-chassis\u0026revision=2018-06-01", - "http://openconfig.net/yang/hercules/platform?module=openconfig-hercules-platform-linecard\u0026revision=2018-06-01", - "http://openconfig.net/yang/hercules/platform?module=openconfig-hercules-platform-node\u0026revision=2018-06-01", - "http://openconfig.net/yang/hercules/platform?module=openconfig-hercules-platform-port\u0026revision=2018-06-01", - "http://openconfig.net/yang/hercules/qos?module=openconfig-hercules-qos\u0026revision=2018-06-01", - "http://openconfig.net/yang/igmp/types?module=openconfig-igmp-types\u0026revision=2018-11-21", - "http://openconfig.net/yang/igmp?module=openconfig-igmp\u0026revision=2019-07-09", - "http://openconfig.net/yang/interfaces/aggregate?module=openconfig-if-aggregate\u0026revision=2020-05-01", - "http://openconfig.net/yang/interfaces/ethernet?module=openconfig-if-ethernet\u0026revision=2020-05-06", - "http://openconfig.net/yang/interfaces/ip?module=openconfig-if-ip\u0026revision=2019-01-08", - "http://openconfig.net/yang/interfaces/tunnel?module=openconfig-if-tunnel\u0026revision=2018-11-21", - "http://openconfig.net/yang/interfaces?module=openconfig-interfaces\u0026revision=2019-11-19", - "http://openconfig.net/yang/isis-lsdb-types?module=openconfig-isis-lsdb-types\u0026revision=2018-11-21", - "http://openconfig.net/yang/isis-types?module=openconfig-isis-types\u0026revision=2018-11-21", - "http://openconfig.net/yang/lacp?module=openconfig-lacp\u0026revision=2018-11-21", - "http://openconfig.net/yang/ldp?module=openconfig-mpls-ldp\u0026revision=2019-07-09", - "http://openconfig.net/yang/license?module=openconfig-license\u0026revision=2020-04-22", - "http://openconfig.net/yang/lldp/types?module=openconfig-lldp-types\u0026revision=2018-11-21", - "http://openconfig.net/yang/lldp?module=openconfig-lldp\u0026revision=2018-11-21", - "http://openconfig.net/yang/local-routing?module=openconfig-local-routing\u0026revision=2020-03-24", - "http://openconfig.net/yang/messages?module=openconfig-messages\u0026revision=2018-08-13", - "http://openconfig.net/yang/mpls-sr?module=openconfig-mpls-sr\u0026revision=2018-11-21", - "http://openconfig.net/yang/mpls-types?module=openconfig-mpls-types\u0026revision=2020-02-04", - "http://openconfig.net/yang/mpls?module=openconfig-mpls\u0026revision=2019-03-26", - "http://openconfig.net/yang/mpls?module=openconfig-mpls-igp\u0026revision=2018-11-21", - "http://openconfig.net/yang/mpls?module=openconfig-mpls-static\u0026revision=2018-11-21", - "http://openconfig.net/yang/mpls?module=openconfig-mpls-te\u0026revision=2018-11-21", - "http://openconfig.net/yang/network-instance-l3?module=openconfig-network-instance-l3\u0026revision=2018-11-21", - "http://openconfig.net/yang/network-instance-types?module=openconfig-network-instance-types\u0026revision=2018-11-21", - "http://openconfig.net/yang/network-instance?module=openconfig-network-instance\u0026revision=2020-06-20", - "http://openconfig.net/yang/network-instance?module=openconfig-network-instance-l2\u0026revision=2020-06-20", - "http://openconfig.net/yang/openconfig-ext?module=openconfig-extensions\u0026revision=2018-10-17", - "http://openconfig.net/yang/openconfig-if-types?module=openconfig-if-types\u0026revision=2018-11-21", - "http://openconfig.net/yang/openconfig-isis?module=openconfig-isis\u0026revision=2020-03-24", - "http://openconfig.net/yang/openconfig-isis?module=openconfig-isis-lsp\u0026revision=2020-03-24", - "http://openconfig.net/yang/openconfig-isis?module=openconfig-isis-routing\u0026revision=2020-03-24", - "http://openconfig.net/yang/openconfig-types?module=openconfig-types\u0026revision=2019-04-16", - "http://openconfig.net/yang/openflow/types?module=openconfig-openflow-types\u0026revision=2018-11-21", - "http://openconfig.net/yang/openflow?module=openconfig-openflow\u0026revision=2018-11-21", - "http://openconfig.net/yang/ospf-policy?module=openconfig-ospf-policy\u0026revision=2018-11-21", - "http://openconfig.net/yang/ospf-types?module=openconfig-ospf-types\u0026revision=2018-11-21", - "http://openconfig.net/yang/ospfv2?module=openconfig-ospfv2\u0026revision=2019-11-28", - "http://openconfig.net/yang/ospfv2?module=openconfig-ospfv2-area\u0026revision=2019-11-28", - "http://openconfig.net/yang/ospfv2?module=openconfig-ospfv2-area-interface\u0026revision=2019-11-28", - "http://openconfig.net/yang/ospfv2?module=openconfig-ospfv2-common\u0026revision=2019-11-28", - "http://openconfig.net/yang/ospfv2?module=openconfig-ospfv2-global\u0026revision=2019-11-28", - "http://openconfig.net/yang/ospfv2?module=openconfig-ospfv2-lsdb\u0026revision=2019-11-28", - "http://openconfig.net/yang/packet-match-types?module=openconfig-packet-match-types\u0026revision=2018-11-21", - "http://openconfig.net/yang/pim/types?module=openconfig-pim-types\u0026revision=2018-11-21", - "http://openconfig.net/yang/pim?module=openconfig-pim\u0026revision=2019-07-09", - "http://openconfig.net/yang/platform-types?module=openconfig-platform-types\u0026revision=2019-06-03", - "http://openconfig.net/yang/platform/cpu?module=openconfig-platform-cpu\u0026revision=2018-11-21", - "http://openconfig.net/yang/platform/fan?module=openconfig-platform-fan\u0026revision=2018-11-21", - "http://openconfig.net/yang/platform/linecard?module=openconfig-platform-linecard\u0026revision=2020-05-10", - "http://openconfig.net/yang/platform/port?module=openconfig-platform-port\u0026revision=2020-05-06", - "http://openconfig.net/yang/platform/psu?module=openconfig-platform-psu\u0026revision=2018-11-21", - "http://openconfig.net/yang/platform/transceiver?module=openconfig-platform-transceiver\u0026revision=2020-05-06", - "http://openconfig.net/yang/platform?module=openconfig-platform\u0026revision=2019-04-16", - "http://openconfig.net/yang/poe?module=openconfig-if-poe\u0026revision=2018-11-21", - "http://openconfig.net/yang/policy-forwarding/sr-te?module=openconfig-pf-srte\u0026revision=2019-10-15", - "http://openconfig.net/yang/policy-forwarding?module=openconfig-pf-forwarding-policies\u0026revision=2018-11-21", - "http://openconfig.net/yang/policy-forwarding?module=openconfig-pf-interfaces\u0026revision=2018-11-21", - "http://openconfig.net/yang/policy-forwarding?module=openconfig-pf-path-groups\u0026revision=2018-11-21", - "http://openconfig.net/yang/policy-forwarding?module=openconfig-policy-forwarding\u0026revision=2018-11-21", - "http://openconfig.net/yang/policy-types?module=openconfig-policy-types\u0026revision=2018-11-21", - "http://openconfig.net/yang/qos-types?module=openconfig-qos-types\u0026revision=2018-11-21", - "http://openconfig.net/yang/qos?module=openconfig-qos\u0026revision=2019-11-28", - "http://openconfig.net/yang/qos?module=openconfig-qos-elements\u0026revision=2019-11-28", - "http://openconfig.net/yang/qos?module=openconfig-qos-interfaces\u0026revision=2019-11-28", - "http://openconfig.net/yang/relay-agent?module=openconfig-relay-agent\u0026revision=2018-11-21", - "http://openconfig.net/yang/rib/bgp-types?module=openconfig-rib-bgp-types\u0026revision=2019-03-14", - "http://openconfig.net/yang/rib/bgp?module=openconfig-rib-bgp\u0026revision=2019-10-15", - "http://openconfig.net/yang/rib/bgp?module=openconfig-rib-bgp-attributes\u0026revision=2019-10-15", - "http://openconfig.net/yang/rib/bgp?module=openconfig-rib-bgp-shared-attributes\u0026revision=2019-10-15", - "http://openconfig.net/yang/rib/bgp?module=openconfig-rib-bgp-table-attributes\u0026revision=2019-04-25", - "http://openconfig.net/yang/rib/bgp?module=openconfig-rib-bgp-tables\u0026revision=2019-10-15", - "http://openconfig.net/yang/routing-policy?module=openconfig-routing-policy\u0026revision=2018-11-21", - "http://openconfig.net/yang/rsvp?module=openconfig-mpls-rsvp\u0026revision=2020-02-04", - "http://openconfig.net/yang/segment-routing-types?module=openconfig-segment-routing-types\u0026revision=2020-02-04", - "http://openconfig.net/yang/segment-routing/srte-policy?module=openconfig-srte-policy\u0026revision=2020-05-01", - "http://openconfig.net/yang/sr?module=openconfig-segment-routing\u0026revision=2020-03-31", - "http://openconfig.net/yang/system/logging?module=openconfig-system-logging\u0026revision=2018-11-21", - "http://openconfig.net/yang/system/management?module=openconfig-system-management\u0026revision=2020-01-14", - "http://openconfig.net/yang/system/procmon?module=openconfig-procmon\u0026revision=2019-03-15", - "http://openconfig.net/yang/system/terminal?module=openconfig-system-terminal\u0026revision=2018-11-21", - "http://openconfig.net/yang/system?module=openconfig-system\u0026revision=2020-03-25", - "http://openconfig.net/yang/transport-types?module=openconfig-transport-types\u0026revision=2020-04-24", - "http://openconfig.net/yang/types/inet?module=openconfig-inet-types\u0026revision=2019-04-25", - "http://openconfig.net/yang/types/yang?module=openconfig-yang-types\u0026revision=2018-11-21", - "http://openconfig.net/yang/vlan-types?module=openconfig-vlan-types\u0026revision=2019-01-31", - "http://openconfig.net/yang/vlan?module=openconfig-vlan\u0026revision=2019-04-16", - "urn:aristanetworks:yang:experimental:eos?module=arista-exp-eos-mlag\u0026revision=2017-11-29", - "urn:ietf:params:netconf:base:1.0", - "urn:ietf:params:netconf:base:1.1", - "urn:ietf:params:netconf:capability:candidate:1.0", - "urn:ietf:params:netconf:capability:writable-running:1.0", - "urn:ietf:params:xml:ns:netconf:base:1.0", - "urn:ietf:params:xml:ns:netconf:base:1.0?module=ietf-netconf\u0026revision=2011-06-01", - "urn:ietf:params:xml:ns:yang:iana-if-type?module=iana-if-type\u0026revision=2017-01-19", - "urn:ietf:params:xml:ns:yang:ietf-inet-types?module=ietf-inet-types\u0026revision=2013-07-15", - "urn:ietf:params:xml:ns:yang:ietf-interfaces?module=ietf-interfaces\u0026revision=2018-02-20", - "urn:ietf:params:xml:ns:yang:ietf-netconf-monitoring", - "urn:ietf:params:xml:ns:yang:ietf-netconf-monitoring?module=ietf-netconf-monitoring\u0026revision=2010-10-04", - "urn:ietf:params:xml:ns:yang:ietf-yang-types?module=ietf-yang-types\u0026revision=2013-07-15" - ] - }, - "datastores": { - "datastore": [ - { - "name": "running" - } - ] - }, - "schemas": { - "schema": [ - { - "format": "yang", - "identifier": "openconfig-pf-forwarding-policies", - "location": [ - "NETCONF" - ], - "namespace": "http://openconfig.net/yang/policy-forwarding", - "version": "2018-11-21" - }, - { - "format": "yang", - "identifier": "arista-cli", - "location": [ - "NETCONF" - ], - "namespace": "http://arista.com/yang/cli", - "version": "2020-02-11" - }, - { - "format": "yang", - "identifier": "openconfig-if-tunnel", - "location": [ - "NETCONF" - ], - "namespace": "http://openconfig.net/yang/interfaces/tunnel", - "version": "2018-11-21" - }, - { - "format": "yang", - "identifier": "openconfig-ospfv2", - "location": [ - "NETCONF" - ], - "namespace": "http://openconfig.net/yang/ospfv2", - "version": "2019-11-28" - }, - { - "format": "yang", - "identifier": "openconfig-network-instance-l3", - "location": [ - "NETCONF" - ], - "namespace": "http://openconfig.net/yang/network-instance-l3", - "version": "2018-11-21" - }, - { - "format": "yang", - "identifier": "arista-bgp-notsupported-deviations", - "location": [ - "NETCONF" - ], - "namespace": "http://arista.com/yang/openconfig/bgp/notsupported-deviations", - "version": "2020-02-04" - }, - { - "format": "yang", - "identifier": "openconfig-hercules-platform", - "location": [ - "NETCONF" - ], - "namespace": "http://openconfig.net/yang/hercules/platform", - "version": "2018-06-01" - }, - { - "format": "yang", - "identifier": "arista-bfd-notsupported-deviations", - "location": [ - "NETCONF" - ], - "namespace": "http://arista.com/yang/openconfig/bfd/notsupported-deviations", - "version": "2020-02-04" - }, - { - "format": "yang", - "identifier": "openconfig-extensions", - "location": [ - "NETCONF" - ], - "namespace": "http://openconfig.net/yang/openconfig-ext", - "version": "2018-10-17" - }, - { - "format": "yang", - "identifier": "openconfig-relay-agent", - "location": [ - "NETCONF" - ], - "namespace": "http://openconfig.net/yang/relay-agent", - "version": "2018-11-21" - }, - { - "format": "yang", - "identifier": "openconfig-mpls-te", - "location": [ - "NETCONF" - ], - "namespace": "http://openconfig.net/yang/mpls", - "version": "2018-11-21" - }, - { - "format": "yang", - "identifier": "openconfig-ospfv2-common", - "location": [ - "NETCONF" - ], - "namespace": "http://openconfig.net/yang/ospfv2", - "version": "2019-11-28" - }, - { - "format": "yang", - "identifier": "openconfig-mpls-rsvp", - "location": [ - "NETCONF" - ], - "namespace": "http://openconfig.net/yang/rsvp", - "version": "2020-02-04" - }, - { - "format": "yang", - "identifier": "openconfig-rib-bgp-shared-attributes", - "location": [ - "NETCONF" - ], - "namespace": "http://openconfig.net/yang/rib/bgp", - "version": "2019-10-15" - }, - { - "format": "yang", - "identifier": "openconfig-transport-types", - "location": [ - "NETCONF" - ], - "namespace": "http://openconfig.net/yang/transport-types", - "version": "2020-04-24" - }, - { - "format": "yang", - "identifier": "openconfig-isis-lsdb-types", - "location": [ - "NETCONF" - ], - "namespace": "http://openconfig.net/yang/isis-lsdb-types", - "version": "2018-11-21" - }, - { - "format": "yang", - "identifier": "openconfig-openflow-types", - "location": [ - "NETCONF" - ], - "namespace": "http://openconfig.net/yang/openflow/types", - "version": "2018-11-21" - }, - { - "format": "yang", - "identifier": "arista-exp-eos-qos-acl-config", - "location": [ - "NETCONF" - ], - "namespace": "http://arista.com/yang/experimental/eos/qos/acl", - "version": "2019-11-12" - }, - { - "format": "yang", - "identifier": "openconfig-if-poe", - "location": [ - "NETCONF" - ], - "namespace": "http://openconfig.net/yang/poe", - "version": "2018-11-21" - }, - { - "format": "yang", - "identifier": "openconfig-messages", - "location": [ - "NETCONF" - ], - "namespace": "http://openconfig.net/yang/messages", - "version": "2018-08-13" - }, - { - "format": "yang", - "identifier": "openconfig-bgp-global", - "location": [ - "NETCONF" - ], - "namespace": "http://openconfig.net/yang/bgp", - "version": "2019-07-10" - }, - { - "format": "yang", - "identifier": "openconfig-hercules-platform-chassis", - "location": [ - "NETCONF" - ], - "namespace": "http://openconfig.net/yang/hercules/platform", - "version": "2018-06-01" - }, - { - "format": "yang", - "identifier": "arista-bfd-augments", - "location": [ - "NETCONF" - ], - "namespace": "http://arista.com/yang/openconfig/bfd/augments", - "version": "2020-01-06" - }, - { - "format": "yang", - "identifier": "ietf-netconf", - "location": [ - "NETCONF" - ], - "namespace": "urn:ietf:params:xml:ns:netconf:base:1.0", - "version": "2011-06-01" - }, - { - "format": "yang", - "identifier": "openconfig-mpls-types", - "location": [ - "NETCONF" - ], - "namespace": "http://openconfig.net/yang/mpls-types", - "version": "2020-02-04" - }, - { - "format": "yang", - "identifier": "arista-local-routing-notsupported-deviations", - "location": [ - "NETCONF" - ], - "namespace": "http://arista.com/yang/openconfig/local-routing/notsupported-deviations", - "version": "2020-02-04" - }, - { - "format": "yang", - "identifier": "arista-bgp-deviations", - "location": [ - "NETCONF" - ], - "namespace": "http://arista.com/yang/openconfig/bgp/deviations", - "version": "2020-05-27" - }, - { - "format": "yang", - "identifier": "arista-lacp-deviations", - "location": [ - "NETCONF" - ], - "namespace": "http://arista.com/yang/openconfig/lacp/deviations", - "version": "2017-09-07" - }, - { - "format": "yang", - "identifier": "openconfig-ospfv2-area-interface", - "location": [ - "NETCONF" - ], - "namespace": "http://openconfig.net/yang/ospfv2", - "version": "2019-11-28" - }, - { - "format": "yang", - "identifier": "arista-system-notsupported-deviations", - "location": [ - "NETCONF" - ], - "namespace": "http://arista.com/yang/openconfig/system/notsupported-deviations", - "version": "2020-03-26" - }, - { - "format": "yang", - "identifier": "openconfig-routing-policy", - "location": [ - "NETCONF" - ], - "namespace": "http://openconfig.net/yang/routing-policy", - "version": "2018-11-21" - }, - { - "format": "yang", - "identifier": "openconfig-srte-policy", - "location": [ - "NETCONF" - ], - "namespace": "http://openconfig.net/yang/segment-routing/srte-policy", - "version": "2020-05-01" - }, - { - "format": "yang", - "identifier": "arista-acl-deviations", - "location": [ - "NETCONF" - ], - "namespace": "http://arista.com/yang/openconfig/acl/deviations", - "version": "2020-01-07" - }, - { - "format": "yang", - "identifier": "openconfig-network-instance", - "location": [ - "NETCONF" - ], - "namespace": "http://openconfig.net/yang/network-instance", - "version": "2020-06-20" - }, - { - "format": "yang", - "identifier": "arista-isis-augments", - "location": [ - "NETCONF" - ], - "namespace": "http://arista.com/yang/openconfig/isis/augments", - "version": "2020-03-18" - }, - { - "format": "yang", - "identifier": "openconfig-mpls-static", - "location": [ - "NETCONF" - ], - "namespace": "http://openconfig.net/yang/mpls", - "version": "2018-11-21" - }, - { - "format": "yang", - "identifier": "openconfig-system-terminal", - "location": [ - "NETCONF" - ], - "namespace": "http://openconfig.net/yang/system/terminal", - "version": "2018-11-21" - }, - { - "format": "yang", - "identifier": "openconfig-bgp", - "location": [ - "NETCONF" - ], - "namespace": "http://openconfig.net/yang/bgp", - "version": "2019-07-10" - }, - { - "format": "yang", - "identifier": "arista-exp-eos-multicast", - "location": [ - "NETCONF" - ], - "namespace": "http://arista.com/yang/experimental/multicast", - "version": "2017-10-20" - }, - { - "format": "yang", - "identifier": "openconfig-lacp", - "location": [ - "NETCONF" - ], - "namespace": "http://openconfig.net/yang/lacp", - "version": "2018-11-21" - }, - { - "format": "yang", - "identifier": "openconfig-interfaces", - "location": [ - "NETCONF" - ], - "namespace": "http://openconfig.net/yang/interfaces", - "version": "2019-11-19" - }, - { - "format": "yang", - "identifier": "ietf-interfaces", - "location": [ - "NETCONF" - ], - "namespace": "urn:ietf:params:xml:ns:yang:ietf-interfaces", - "version": "2018-02-20" - }, - { - "format": "yang", - "identifier": "openconfig-policy-types", - "location": [ - "NETCONF" - ], - "namespace": "http://openconfig.net/yang/policy-types", - "version": "2018-11-21" - }, - { - "format": "yang", - "identifier": "openconfig-alarms", - "location": [ - "NETCONF" - ], - "namespace": "http://openconfig.net/yang/alarms", - "version": "2019-07-09" - }, - { - "format": "yang", - "identifier": "openconfig-rib-bgp-types", - "location": [ - "NETCONF" - ], - "namespace": "http://openconfig.net/yang/rib/bgp-types", - "version": "2019-03-14" - }, - { - "format": "yang", - "identifier": "arista-exp-eos-varp-net-inst", - "location": [ - "NETCONF" - ], - "namespace": "http://arista.com/yang/experimental/eos/varp/net-inst", - "version": "2019-05-22" - }, - { - "format": "yang", - "identifier": "openconfig-aaa-types", - "location": [ - "NETCONF" - ], - "namespace": "http://openconfig.net/yang/aaa/types", - "version": "2018-11-21" - }, - { - "format": "yang", - "identifier": "openconfig-alarm-types", - "location": [ - "NETCONF" - ], - "namespace": "http://openconfig.net/yang/alarms/types", - "version": "2018-11-21" - }, - { - "format": "yang", - "identifier": "arista-routing-policy-notsupported-deviations", - "location": [ - "NETCONF" - ], - "namespace": "http://arista.com/yang/openconfig/routing-policy/notsupported-deviations", - "version": "2020-02-07" - }, - { - "format": "yang", - "identifier": "openconfig-platform-linecard", - "location": [ - "NETCONF" - ], - "namespace": "http://openconfig.net/yang/platform/linecard", - "version": "2020-05-10" - }, - { - "format": "yang", - "identifier": "arista-gnoi-cert", - "location": [ - "NETCONF" - ], - "namespace": "http://arista.com/yang/cert/gnoi-cert", - "version": "2018-01-15" - }, - { - "format": "yang", - "identifier": "openconfig-lldp-types", - "location": [ - "NETCONF" - ], - "namespace": "http://openconfig.net/yang/lldp/types", - "version": "2018-11-21" - }, - { - "format": "yang", - "identifier": "arista-bfd-deviations", - "location": [ - "NETCONF" - ], - "namespace": "http://arista.com/yang/openconfig/bfd/deviations", - "version": "2018-08-08" - }, - { - "format": "yang", - "identifier": "openconfig-aaa-tacacs", - "location": [ - "NETCONF" - ], - "namespace": "http://openconfig.net/yang/aaa", - "version": "2018-11-21" - }, - { - "format": "yang", - "identifier": "openconfig-bgp-neighbor", - "location": [ - "NETCONF" - ], - "namespace": "http://openconfig.net/yang/bgp", - "version": "2019-07-10" - }, - { - "format": "yang", - "identifier": "openconfig-aft-ethernet", - "location": [ - "NETCONF" - ], - "namespace": "http://openconfig.net/yang/aft", - "version": "2019-11-07" - }, - { - "format": "yang", - "identifier": "arista-network-instance-notsupported-deviations", - "location": [ - "NETCONF" - ], - "namespace": "http://arista.com/yang/openconfig/network-instance/notsupported-deviations", - "version": "2020-07-31" - }, - { - "format": "yang", - "identifier": "arista-system-augments", - "location": [ - "NETCONF" - ], - "namespace": "http://arista.com/yang/openconfig/system/augments", - "version": "2020-03-09" - }, - { - "format": "yang", - "identifier": "arista-exp-eos-qos", - "location": [ - "NETCONF" - ], - "namespace": "http://arista.com/yang/experimental/eos/qos", - "version": "2017-09-26" - }, - { - "format": "yang", - "identifier": "openconfig-segment-routing", - "location": [ - "NETCONF" - ], - "namespace": "http://openconfig.net/yang/sr", - "version": "2020-03-31" - }, - { - "format": "yang", - "identifier": "arista-exp-eos-mlag", - "location": [ - "NETCONF" - ], - "namespace": "urn:aristanetworks:yang:experimental:eos", - "version": "2017-11-29" - }, - { - "format": "yang", - "identifier": "ietf-inet-types", - "location": [ - "NETCONF" - ], - "namespace": "urn:ietf:params:xml:ns:yang:ietf-inet-types", - "version": "2013-07-15" - }, - { - "format": "yang", - "identifier": "openconfig-system-logging", - "location": [ - "NETCONF" - ], - "namespace": "http://openconfig.net/yang/system/logging", - "version": "2018-11-21" - }, - { - "format": "yang", - "identifier": "arista-rpol-augments", - "location": [ - "NETCONF" - ], - "namespace": "http://arista.com/yang/openconfig/policy/augments", - "version": "2018-04-12" - }, - { - "format": "yang", - "identifier": "openconfig-ospfv2-lsdb", - "location": [ - "NETCONF" - ], - "namespace": "http://openconfig.net/yang/ospfv2", - "version": "2019-11-28" - }, - { - "format": "yang", - "identifier": "openconfig-pf-path-groups", - "location": [ - "NETCONF" - ], - "namespace": "http://openconfig.net/yang/policy-forwarding", - "version": "2018-11-21" - }, - { - "format": "yang", - "identifier": "openconfig-bgp-peer-group", - "location": [ - "NETCONF" - ], - "namespace": "http://openconfig.net/yang/bgp", - "version": "2019-07-10" - }, - { - "format": "yang", - "identifier": "ietf-yang-types", - "location": [ - "NETCONF" - ], - "namespace": "urn:ietf:params:xml:ns:yang:ietf-yang-types", - "version": "2013-07-15" - }, - { - "format": "yang", - "identifier": "openconfig-license", - "location": [ - "NETCONF" - ], - "namespace": "http://openconfig.net/yang/license", - "version": "2020-04-22" - }, - { - "format": "yang", - "identifier": "arista-aft-augments", - "location": [ - "NETCONF" - ], - "namespace": "http://arista.com/yang/openconfig/aft/augments", - "version": "2019-10-01" - }, - { - "format": "yang", - "identifier": "openconfig-yang-types", - "location": [ - "NETCONF" - ], - "namespace": "http://openconfig.net/yang/types/yang", - "version": "2018-11-21" - }, - { - "format": "yang", - "identifier": "arista-acl-notsupported-deviations", - "location": [ - "NETCONF" - ], - "namespace": "http://arista.com/yang/openconfig/acl/notsupported-deviations", - "version": "2020-02-04" - }, - { - "format": "yang", - "identifier": "openconfig-bgp-common-multiprotocol", - "location": [ - "NETCONF" - ], - "namespace": "http://openconfig.net/yang/bgp", - "version": "2019-07-10" - }, - { - "format": "yang", - "identifier": "arista-vlan-deviations", - "location": [ - "NETCONF" - ], - "namespace": "http://arista.com/yang/openconfig/network-instance/deviations", - "version": "2019-11-13" - }, - { - "format": "yang", - "identifier": "openconfig-aft", - "location": [ - "NETCONF" - ], - "namespace": "http://openconfig.net/yang/aft", - "version": "2019-11-07" - }, - { - "format": "yang", - "identifier": "arista-lldp-notsupported-deviations", - "location": [ - "NETCONF" - ], - "namespace": "http://arista.com/yang/openconfig/lldp/notsupported-deviations", - "version": "2020-02-04" - }, - { - "format": "yang", - "identifier": "openconfig-aft-common", - "location": [ - "NETCONF" - ], - "namespace": "http://openconfig.net/yang/aft", - "version": "2019-11-07" - }, - { - "format": "yang", - "identifier": "arista-eos-types", - "location": [ - "NETCONF" - ], - "namespace": "http://arista.com/yang/experimental/eos/eos-types", - "version": "2016-10-14" - }, - { - "format": "yang", - "identifier": "arista-exp-eos-varp-intf", - "location": [ - "NETCONF" - ], - "namespace": "http://arista.com/yang/experimental/eos/varp/intf", - "version": "2020-01-06" - }, - { - "format": "yang", - "identifier": "arista-intf-deviations", - "location": [ - "NETCONF" - ], - "namespace": "http://arista.com/yang/openconfig/interfaces/deviations", - "version": "2020-04-02" - }, - { - "format": "yang", - "identifier": "openconfig-aft-mpls", - "location": [ - "NETCONF" - ], - "namespace": "http://openconfig.net/yang/aft", - "version": "2019-11-07" - }, - { - "format": "yang", - "identifier": "openconfig-mpls-igp", - "location": [ - "NETCONF" - ], - "namespace": "http://openconfig.net/yang/mpls", - "version": "2018-11-21" - }, - { - "format": "yang", - "identifier": "openconfig-bgp-errors", - "location": [ - "NETCONF" - ], - "namespace": "http://openconfig.net/yang/bgp-types", - "version": "2018-11-21" - }, - { - "format": "yang", - "identifier": "arista-lacp-notsupported-deviations", - "location": [ - "NETCONF" - ], - "namespace": "http://arista.com/yang/openconfig/lacp/notsupported-deviations", - "version": "2020-02-04" - }, - { - "format": "yang", - "identifier": "openconfig-hercules-interfaces", - "location": [ - "NETCONF" - ], - "namespace": "http://openconfig.net/yang/hercules/interfaces", - "version": "2018-06-01" - }, - { - "format": "yang", - "identifier": "openconfig-mpls-ldp", - "location": [ - "NETCONF" - ], - "namespace": "http://openconfig.net/yang/ldp", - "version": "2019-07-09" - }, - { - "format": "yang", - "identifier": "arista-pim-augments", - "location": [ - "NETCONF" - ], - "namespace": "http://arista.com/yang/openconfig/pim/augments", - "version": "2019-04-24" - }, - { - "format": "yang", - "identifier": "arista-mpls-augments", - "location": [ - "NETCONF" - ], - "namespace": "http://arista.com/yang/openconfig/mpls/augments", - "version": "2017-12-21" - }, - { - "format": "yang", - "identifier": "openconfig-types", - "location": [ - "NETCONF" - ], - "namespace": "http://openconfig.net/yang/openconfig-types", - "version": "2019-04-16" - }, - { - "format": "yang", - "identifier": "openconfig-network-instance-types", - "location": [ - "NETCONF" - ], - "namespace": "http://openconfig.net/yang/network-instance-types", - "version": "2018-11-21" - }, - { - "format": "yang", - "identifier": "arista-platform-notsupported-deviations", - "location": [ - "NETCONF" - ], - "namespace": "http://arista.com/yang/openconfig/platform/notsupported-deviations", - "version": "2020-07-13" - }, - { - "format": "yang", - "identifier": "openconfig-procmon", - "location": [ - "NETCONF" - ], - "namespace": "http://openconfig.net/yang/system/procmon", - "version": "2019-03-15" - }, - { - "format": "yang", - "identifier": "openconfig-pf-srte", - "location": [ - "NETCONF" - ], - "namespace": "http://openconfig.net/yang/policy-forwarding/sr-te", - "version": "2019-10-15" - }, - { - "format": "yang", - "identifier": "openconfig-packet-match", - "location": [ - "NETCONF" - ], - "namespace": "http://openconfig.net/yang/header-fields", - "version": "2018-11-21" - }, - { - "format": "yang", - "identifier": "arista-relay-agent-deviations", - "location": [ - "NETCONF" - ], - "namespace": "http://arista.com/yang/openconfig/relay-agent/deviations", - "version": "2016-11-21" - }, - { - "format": "yang", - "identifier": "openconfig-acl", - "location": [ - "NETCONF" - ], - "namespace": "http://openconfig.net/yang/acl", - "version": "2019-11-27" - }, - { - "format": "yang", - "identifier": "openconfig-policy-forwarding", - "location": [ - "NETCONF" - ], - "namespace": "http://openconfig.net/yang/policy-forwarding", - "version": "2018-11-21" - }, - { - "format": "yang", - "identifier": "openconfig-ospfv2-global", - "location": [ - "NETCONF" - ], - "namespace": "http://openconfig.net/yang/ospfv2", - "version": "2019-11-28" - }, - { - "format": "yang", - "identifier": "openconfig-rib-bgp-table-attributes", - "location": [ - "NETCONF" - ], - "namespace": "http://openconfig.net/yang/rib/bgp", - "version": "2019-04-25" - }, - { - "format": "yang", - "identifier": "openconfig-aft-pf", - "location": [ - "NETCONF" - ], - "namespace": "http://openconfig.net/yang/aft", - "version": "2019-11-07" - }, - { - "format": "yang", - "identifier": "iana-if-type", - "location": [ - "NETCONF" - ], - "namespace": "urn:ietf:params:xml:ns:yang:iana-if-type", - "version": "2017-01-19" - }, - { - "format": "yang", - "identifier": "arista-exp-eos-l2protocolforwarding", - "location": [ - "NETCONF" - ], - "namespace": "http://arista.com/yang/experimental/eos/l2protocolforwarding", - "version": "2020-04-16" - }, - { - "format": "yang", - "identifier": "openconfig-lldp", - "location": [ - "NETCONF" - ], - "namespace": "http://openconfig.net/yang/lldp", - "version": "2018-11-21" - }, - { - "format": "yang", - "identifier": "arista-system-deviations", - "location": [ - "NETCONF" - ], - "namespace": "http://arista.com/yang/openconfig/system/deviations", - "version": "2020-01-21" - }, - { - "format": "yang", - "identifier": "openconfig-aft-types", - "location": [ - "NETCONF" - ], - "namespace": "http://openconfig.net/yang/fib-types", - "version": "2019-11-07" - }, - { - "format": "yang", - "identifier": "openconfig-hercules-platform-linecard", - "location": [ - "NETCONF" - ], - "namespace": "http://openconfig.net/yang/hercules/platform", - "version": "2018-06-01" - }, - { - "format": "yang", - "identifier": "openconfig-vlan-types", - "location": [ - "NETCONF" - ], - "namespace": "http://openconfig.net/yang/vlan-types", - "version": "2019-01-31" - }, - { - "format": "yang", - "identifier": "openconfig-local-routing", - "location": [ - "NETCONF" - ], - "namespace": "http://openconfig.net/yang/local-routing", - "version": "2020-03-24" - }, - { - "format": "yang", - "identifier": "arista-openflow-deviations", - "location": [ - "NETCONF" - ], - "namespace": "http://arista.com/yang/openconfig/openflow/deviations", - "version": "2020-02-26" - }, - { - "format": "yang", - "identifier": "arista-vlan-augments", - "location": [ - "NETCONF" - ], - "namespace": "http://arista.com/yang/openconfig/network-instance/vlan/augments", - "version": "2020-01-06" - }, - { - "format": "yang", - "identifier": "openconfig-aaa-radius", - "location": [ - "NETCONF" - ], - "namespace": "http://openconfig.net/yang/aaa", - "version": "2018-11-21" - }, - { - "format": "yang", - "identifier": "openconfig-rib-bgp-attributes", - "location": [ - "NETCONF" - ], - "namespace": "http://openconfig.net/yang/rib/bgp", - "version": "2019-10-15" - }, - { - "format": "yang", - "identifier": "openconfig-packet-match-types", - "location": [ - "NETCONF" - ], - "namespace": "http://openconfig.net/yang/packet-match-types", - "version": "2018-11-21" - }, - { - "format": "yang", - "identifier": "arista-lldp-augments", - "location": [ - "NETCONF" - ], - "namespace": "http://arista.com/yang/openconfig/lldp/augments", - "version": "2018-03-06" - }, - { - "format": "yang", - "identifier": "arista-exp-eos-evpn", - "location": [ - "NETCONF" - ], - "namespace": "http://arista.com/yang/experimental/eos/evpn", - "version": "2020-07-31" - }, - { - "format": "yang", - "identifier": "openconfig-hercules-qos", - "location": [ - "NETCONF" - ], - "namespace": "http://openconfig.net/yang/hercules/qos", - "version": "2018-06-01" - }, - { - "format": "yang", - "identifier": "arista-local-routing-deviations", - "location": [ - "NETCONF" - ], - "namespace": "http://arista.com/yang/openconfig/local-routing/deviations", - "version": "2017-11-22" - }, - { - "format": "yang", - "identifier": "openconfig-platform-port", - "location": [ - "NETCONF" - ], - "namespace": "http://openconfig.net/yang/platform/port", - "version": "2020-05-06" - }, - { - "format": "yang", - "identifier": "openconfig-if-types", - "location": [ - "NETCONF" - ], - "namespace": "http://openconfig.net/yang/openconfig-if-types", - "version": "2018-11-21" - }, - { - "format": "yang", - "identifier": "arista-interfaces-notsupported-deviations", - "location": [ - "NETCONF" - ], - "namespace": "http://arista.com/yang/openconfig/interfaces/notsupported-deviations", - "version": "2020-03-27" - }, - { - "format": "yang", - "identifier": "openconfig-ospfv2-area", - "location": [ - "NETCONF" - ], - "namespace": "http://openconfig.net/yang/ospfv2", - "version": "2019-11-28" - }, - { - "format": "yang", - "identifier": "openconfig-aft-ipv4", - "location": [ - "NETCONF" - ], - "namespace": "http://openconfig.net/yang/aft", - "version": "2019-11-07" - }, - { - "format": "yang", - "identifier": "openconfig-if-ip", - "location": [ - "NETCONF" - ], - "namespace": "http://openconfig.net/yang/interfaces/ip", - "version": "2019-01-08" - }, - { - "format": "yang", - "identifier": "openconfig-igmp-types", - "location": [ - "NETCONF" - ], - "namespace": "http://openconfig.net/yang/igmp/types", - "version": "2018-11-21" - }, - { - "format": "yang", - "identifier": "openconfig-isis", - "location": [ - "NETCONF" - ], - "namespace": "http://openconfig.net/yang/openconfig-isis", - "version": "2020-03-24" - }, - { - "format": "yang", - "identifier": "vlan-translation", - "location": [ - "NETCONF" - ], - "namespace": "http://arista.com/yang/vlan-translation", - "version": "2019-07-31" - }, - { - "format": "yang", - "identifier": "openconfig-qos-interfaces", - "location": [ - "NETCONF" - ], - "namespace": "http://openconfig.net/yang/qos", - "version": "2019-11-28" - }, - { - "format": "yang", - "identifier": "openconfig-rib-bgp-tables", - "location": [ - "NETCONF" - ], - "namespace": "http://openconfig.net/yang/rib/bgp", - "version": "2019-10-15" - }, - { - "format": "yang", - "identifier": "openconfig-platform-psu", - "location": [ - "NETCONF" - ], - "namespace": "http://openconfig.net/yang/platform/psu", - "version": "2018-11-21" - }, - { - "format": "yang", - "identifier": "arista-qos-augments", - "location": [ - "NETCONF" - ], - "namespace": "http://arista.com/yang/openconfig/qos/augments", - "version": "2020-06-05" - }, - { - "format": "yang", - "identifier": "openconfig-isis-types", - "location": [ - "NETCONF" - ], - "namespace": "http://openconfig.net/yang/isis-types", - "version": "2018-11-21" - }, - { - "format": "yang", - "identifier": "arista-bgp-augments", - "location": [ - "NETCONF" - ], - "namespace": "http://arista.com/yang/openconfig/bgp/augments", - "version": "2020-05-27" - }, - { - "format": "yang", - "identifier": "openconfig-qos-types", - "location": [ - "NETCONF" - ], - "namespace": "http://openconfig.net/yang/qos-types", - "version": "2018-11-21" - }, - { - "format": "yang", - "identifier": "openconfig-segment-routing-types", - "location": [ - "NETCONF" - ], - "namespace": "http://openconfig.net/yang/segment-routing-types", - "version": "2020-02-04" - }, - { - "format": "yang", - "identifier": "openconfig-aft-ipv6", - "location": [ - "NETCONF" - ], - "namespace": "http://openconfig.net/yang/aft", - "version": "2019-11-07" - }, - { - "format": "yang", - "identifier": "openconfig-platform", - "location": [ - "NETCONF" - ], - "namespace": "http://openconfig.net/yang/platform", - "version": "2019-04-16" - }, - { - "format": "yang", - "identifier": "openconfig-pim", - "location": [ - "NETCONF" - ], - "namespace": "http://openconfig.net/yang/pim", - "version": "2019-07-09" - }, - { - "format": "yang", - "identifier": "arista-lldp-deviations", - "location": [ - "NETCONF" - ], - "namespace": "http://arista.com/yang/openconfig/lldp/deviations", - "version": "2018-04-02" - }, - { - "format": "yang", - "identifier": "openconfig-mpls-sr", - "location": [ - "NETCONF" - ], - "namespace": "http://openconfig.net/yang/mpls-sr", - "version": "2018-11-21" - }, - { - "format": "yang", - "identifier": "openconfig-ospf-policy", - "location": [ - "NETCONF" - ], - "namespace": "http://openconfig.net/yang/ospf-policy", - "version": "2018-11-21" - }, - { - "format": "yang", - "identifier": "openconfig-mpls", - "location": [ - "NETCONF" - ], - "namespace": "http://openconfig.net/yang/mpls", - "version": "2019-03-26" - }, - { - "format": "yang", - "identifier": "openconfig-hercules-platform-node", - "location": [ - "NETCONF" - ], - "namespace": "http://openconfig.net/yang/hercules/platform", - "version": "2018-06-01" - }, - { - "format": "yang", - "identifier": "arista-messages-notsupported-deviations", - "location": [ - "NETCONF" - ], - "namespace": "http://arista.com/yang/openconfig/messages/notsupported-deviations", - "version": "2020-02-04" - }, - { - "format": "yang", - "identifier": "openconfig-bgp-policy", - "location": [ - "NETCONF" - ], - "namespace": "http://openconfig.net/yang/bgp-policy", - "version": "2019-11-28" - }, - { - "format": "yang", - "identifier": "arista-srte-deviations", - "location": [ - "NETCONF" - ], - "namespace": "http://arista.com/yang/openconfig/policy-forwarding/augments", - "version": "2020-03-03" - }, - { - "format": "yang", - "identifier": "openconfig-bfd", - "location": [ - "NETCONF" - ], - "namespace": "http://openconfig.net/yang/bfd", - "version": "2020-05-08" - }, - { - "format": "yang", - "identifier": "openconfig-qos-elements", - "location": [ - "NETCONF" - ], - "namespace": "http://openconfig.net/yang/qos", - "version": "2019-11-28" - }, - { - "format": "yang", - "identifier": "openconfig-bgp-common-structure", - "location": [ - "NETCONF" - ], - "namespace": "http://openconfig.net/yang/bgp", - "version": "2019-07-10" - }, - { - "format": "yang", - "identifier": "openconfig-ospf-types", - "location": [ - "NETCONF" - ], - "namespace": "http://openconfig.net/yang/ospf-types", - "version": "2018-11-21" - }, - { - "format": "yang", - "identifier": "arista-rpol-deviations", - "location": [ - "NETCONF" - ], - "namespace": "http://arista.com/yang/openconfig/policy/deviations", - "version": "2016-02-01" - }, - { - "format": "yang", - "identifier": "openconfig-platform-transceiver", - "location": [ - "NETCONF" - ], - "namespace": "http://openconfig.net/yang/platform/transceiver", - "version": "2020-05-06" - }, - { - "format": "yang", - "identifier": "arista-exp-eos-vxlan-config", - "location": [ - "NETCONF" - ], - "namespace": "http://arista.com/yang/experimental/eos/vxlan/config", - "version": "2018-08-01" - }, - { - "format": "yang", - "identifier": "arista-qos-notsupported-deviations", - "location": [ - "NETCONF" - ], - "namespace": "http://arista.com/yang/openconfig/qos/notsupported-deviations", - "version": "2020-06-10" - }, - { - "format": "yang", - "identifier": "openconfig-aaa", - "location": [ - "NETCONF" - ], - "namespace": "http://openconfig.net/yang/aaa", - "version": "2019-10-28" - }, - { - "format": "yang", - "identifier": "openconfig-isis-routing", - "location": [ - "NETCONF" - ], - "namespace": "http://openconfig.net/yang/openconfig-isis", - "version": "2020-03-24" - }, - { - "format": "yang", - "identifier": "openconfig-pf-interfaces", - "location": [ - "NETCONF" - ], - "namespace": "http://openconfig.net/yang/policy-forwarding", - "version": "2018-11-21" - }, - { - "format": "yang", - "identifier": "openconfig-bgp-common", - "location": [ - "NETCONF" - ], - "namespace": "http://openconfig.net/yang/bgp", - "version": "2019-07-10" - }, - { - "format": "yang", - "identifier": "openconfig-bgp-types", - "location": [ - "NETCONF" - ], - "namespace": "http://openconfig.net/yang/bgp-types", - "version": "2020-06-17" - }, - { - "format": "yang", - "identifier": "arista-lacp-augments", - "location": [ - "NETCONF" - ], - "namespace": "http://arista.com/yang/openconfig/lacp/augments", - "version": "2017-09-14" - }, - { - "format": "yang", - "identifier": "openconfig-system-management", - "location": [ - "NETCONF" - ], - "namespace": "http://openconfig.net/yang/system/management", - "version": "2020-01-14" - }, - { - "format": "yang", - "identifier": "arista-mpls-deviations", - "location": [ - "NETCONF" - ], - "namespace": "http://arista.com/yang/openconfig/mpls/deviations", - "version": "2018-03-19" - }, - { - "format": "yang", - "identifier": "openconfig-qos", - "location": [ - "NETCONF" - ], - "namespace": "http://openconfig.net/yang/qos", - "version": "2019-11-28" - }, - { - "format": "yang", - "identifier": "openconfig-platform-types", - "location": [ - "NETCONF" - ], - "namespace": "http://openconfig.net/yang/platform-types", - "version": "2019-06-03" - }, - { - "format": "yang", - "identifier": "arista-netinst-deviations", - "location": [ - "NETCONF" - ], - "namespace": "http://arista.com/yang/openconfig/network-instances/deviations", - "version": "2019-05-24" - }, - { - "format": "yang", - "identifier": "openconfig-if-ethernet", - "location": [ - "NETCONF" - ], - "namespace": "http://openconfig.net/yang/interfaces/ethernet", - "version": "2020-05-06" - }, - { - "format": "yang", - "identifier": "openconfig-rib-bgp", - "location": [ - "NETCONF" - ], - "namespace": "http://openconfig.net/yang/rib/bgp", - "version": "2019-10-15" - }, - { - "format": "yang", - "identifier": "arista-exp-eos-vxlan", - "location": [ - "NETCONF" - ], - "namespace": "http://arista.com/yang/experimental/eos/vxlan", - "version": "2018-08-01" - }, - { - "format": "yang", - "identifier": "arista-isis-deviations", - "location": [ - "NETCONF" - ], - "namespace": "http://arista.com/yang/openconfig/isis/deviations", - "version": "2019-05-14" - }, - { - "format": "yang", - "identifier": "openconfig-platform-fan", - "location": [ - "NETCONF" - ], - "namespace": "http://openconfig.net/yang/platform/fan", - "version": "2018-11-21" - }, - { - "format": "yang", - "identifier": "openconfig-platform-cpu", - "location": [ - "NETCONF" - ], - "namespace": "http://openconfig.net/yang/platform/cpu", - "version": "2018-11-21" - }, - { - "format": "yang", - "identifier": "ietf-netconf-monitoring", - "location": [ - "NETCONF" - ], - "namespace": "urn:ietf:params:xml:ns:yang:ietf-netconf-monitoring", - "version": "2010-10-04" - }, - { - "format": "yang", - "identifier": "openconfig-hercules-platform-port", - "location": [ - "NETCONF" - ], - "namespace": "http://openconfig.net/yang/hercules/platform", - "version": "2018-06-01" - }, - { - "format": "yang", - "identifier": "openconfig-if-aggregate", - "location": [ - "NETCONF" - ], - "namespace": "http://openconfig.net/yang/interfaces/aggregate", - "version": "2020-05-01" - }, - { - "format": "yang", - "identifier": "arista-srte-augments", - "location": [ - "NETCONF" - ], - "namespace": "http://arista.com/yang/openconfig/policy-forwarding/augments", - "version": "2020-01-28" - }, - { - "format": "yang", - "identifier": "arista-exp-eos", - "location": [ - "NETCONF" - ], - "namespace": "http://arista.com/yang/experimental/eos", - "version": "2016-11-09" - }, - { - "format": "yang", - "identifier": "openconfig-igmp", - "location": [ - "NETCONF" - ], - "namespace": "http://openconfig.net/yang/igmp", - "version": "2019-07-09" - }, - { - "format": "yang", - "identifier": "openconfig-inet-types", - "location": [ - "NETCONF" - ], - "namespace": "http://openconfig.net/yang/types/inet", - "version": "2019-04-25" - }, - { - "format": "yang", - "identifier": "openconfig-isis-lsp", - "location": [ - "NETCONF" - ], - "namespace": "http://openconfig.net/yang/openconfig-isis", - "version": "2020-03-24" - }, - { - "format": "yang", - "identifier": "arista-exp-eos-qos-config", - "location": [ - "NETCONF" - ], - "namespace": "http://arista.com/yang/experimental/eos/qos/config", - "version": "2017-09-26" - }, - { - "format": "yang", - "identifier": "openconfig-system", - "location": [ - "NETCONF" - ], - "namespace": "http://openconfig.net/yang/system", - "version": "2020-03-25" - }, - { - "format": "yang", - "identifier": "openconfig-openflow", - "location": [ - "NETCONF" - ], - "namespace": "http://openconfig.net/yang/openflow", - "version": "2018-11-21" - }, - { - "format": "yang", - "identifier": "openconfig-pim-types", - "location": [ - "NETCONF" - ], - "namespace": "http://openconfig.net/yang/pim/types", - "version": "2018-11-21" - }, - { - "format": "yang", - "identifier": "openconfig-network-instance-l2", - "location": [ - "NETCONF" - ], - "namespace": "http://openconfig.net/yang/network-instance", - "version": "2020-06-20" - }, - { - "format": "yang", - "identifier": "arista-rpc-netconf", - "location": [ - "NETCONF" - ], - "namespace": "http://arista.com/yang/rpc/netconf", - "version": "2018-01-04" - }, - { - "format": "yang", - "identifier": "arista-intf-augments", - "location": [ - "NETCONF" - ], - "namespace": "http://arista.com/yang/openconfig/interfaces/augments", - "version": "2020-05-13" - }, - { - "format": "yang", - "identifier": "openconfig-vlan", - "location": [ - "NETCONF" - ], - "namespace": "http://openconfig.net/yang/vlan", - "version": "2019-04-16" - }, - { - "format": "yang", - "identifier": "arista-exp-eos-igmpsnooping", - "location": [ - "NETCONF" - ], - "namespace": "http://arista.com/yang/experimental/igmpsnooping", - "version": "2017-10-23" - } - ] - }, - "sessions": { - "session": [] - }, - "statistics": { - "dropped-sessions": 0, - "in-bad-hellos": 0, - "in-bad-rpcs": 0, - "in-rpcs": 0, - "in-sessions": 0, - "out-notifications": 0, - "out-rpc-errors": 0 - } - }, - "openconfig-acl:acl": { - "state": { - "counter-capability": "AGGREGATE_ONLY" - } - }, - "openconfig-bfd:bfd": { - "arista-bfd-augments:config": { - "desired-minimum-tx-interval": 300, - "detection-multiplier": 3, - "enabled": true, - "local-address": [], - "multihop-desired-minimum-tx-interval": 300, - "multihop-detection-multiplier": 3, - "multihop-required-minimum-receive": 300, - "required-minimum-receive": 300, - "slow-timer": 2000 - } - }, - "openconfig-interfaces:interfaces": { - "interface": [ - { - "config": { - "arista-intf-augments:load-interval": 300, - "description": "", - "enabled": true, - "loopback-mode": false, - "mtu": 0, - "name": "Ethernet510", - "openconfig-vlan:tpid": "openconfig-vlan-types:TPID_0X8100", - "type": "iana-if-type:ethernetCsmacd" - }, - "hold-time": { - "config": { - "down": 0, - "up": 0 - }, - "state": { - "down": 0, - "up": 0 - } - }, - "name": "Ethernet510", - "openconfig-if-ethernet:ethernet": { - "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" - } - } - ] - } - }, - "config": { - "arista-intf-augments:fec-encoding": { - "disabled": false, - "fire-code": false, - "reed-solomon": false, - "reed-solomon544": false - }, - "arista-intf-augments:sfp-1000base-t": false, - "mac-address": "00:00:00:00:00:00", - "openconfig-hercules-interfaces:forwarding-viable": true, - "port-speed": "SPEED_UNKNOWN" - }, - "state": { - "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" - ], - "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, - "hw-mac-address": "02:42:c0:a8:02:42", - "mac-address": "02:42:c0:a8:02:42", - "negotiated-port-speed": "SPEED_UNKNOWN", - "openconfig-hercules-interfaces:forwarding-viable": true, - "port-speed": "SPEED_UNKNOWN" - } - }, - "state": { - "admin-status": "UP", - "arista-intf-augments:inactive": false, - "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, - "ifindex": 510, - "last-change": "1614091948142304000", - "loopback-mode": false, - "mtu": 0, - "name": "Ethernet510", - "openconfig-platform-port:hardware-port": "Port510", - "openconfig-vlan:tpid": "openconfig-vlan-types:TPID_0X8100", - "oper-status": "UP", - "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 - } - } - ] - } - } - ] - }, - "openconfig-lacp:lacp": { - "config": { - "system-priority": 32768 - }, - "state": { - "system-priority": 32768 - } - }, - "openconfig-lldp:lldp": { - "config": { - "arista-lldp-augments:management-address": { - "interface": "", - "network-instance": "default", - "transmit-mode": "BEST" - }, - "chassis-id": "02:42:c0:6c:64:78", - "chassis-id-type": "MAC_ADDRESS", - "enabled": true, - "hello-timer": "30", - "suppress-tlv-advertisement": [], - "system-description": "", - "system-name": "localhost" - }, - "interfaces": { - "interface": [ - { - "config": { - "enabled": true, - "name": "Ethernet510" - }, - "name": "Ethernet510", - "state": { - "counters": { - "frame-discard": "0", - "frame-error-in": "0", - "frame-in": "0", - "frame-out": "26299", - "tlv-discard": "0", - "tlv-unknown": "0" - }, - "enabled": true, - "name": "Ethernet510" - } - } - ] - }, - "state": { - "chassis-id": "02:42:c0:6c:64:78", - "chassis-id-type": "MAC_ADDRESS", - "enabled": true, - "hello-timer": "30", - "suppress-tlv-advertisement": [], - "system-description": "", - "system-name": "localhost" - } - }, - "openconfig-network-instance:network-instances": { - "network-instance": [ - { - "arista-exp-eos-varp-net-inst:arista-varp": { - "config": { - "virtual-mac-address": "00:00:00:00:00:00" - }, - "state": { - "virtual-mac-address": "00:00:00:00:00:00" - } - }, - "config": { - "enabled-address-families": [], - "name": "default", - "type": "openconfig-network-instance-types:DEFAULT_INSTANCE" - }, - "inter-instance-policies": { - "apply-policy": { - "config": { - "default-import-policy": "REJECT_ROUTE" - } - } - }, - "mpls": { - "global": { - "config": { - "null-label": "openconfig-mpls-types:IMPLICIT" - }, - "reserved-label-blocks": { - "reserved-label-block": [ - { - "config": { - "local-id": "isis-sr", - "lower-bound": 900000, - "upper-bound": 965535 - }, - "local-id": "isis-sr" - }, - { - "config": { - "local-id": "bgp-sr", - "lower-bound": 900000, - "upper-bound": 965535 - }, - "local-id": "bgp-sr" - }, - { - "config": { - "local-id": "srlb", - "lower-bound": 965536, - "upper-bound": 1031071 - }, - "local-id": "srlb" - }, - { - "config": { - "local-id": "l2evpn", - "lower-bound": 1036288, - "upper-bound": 1048575 - }, - "local-id": "l2evpn" - }, - { - "config": { - "local-id": "dynamic", - "lower-bound": 100000, - "upper-bound": 362143 - }, - "local-id": "dynamic" - }, - { - "config": { - "local-id": "static", - "lower-bound": 16, - "upper-bound": 99999 - }, - "local-id": "static" - } - ] - } - } - }, - "name": "default", - "protocols": { - "protocol": [ - { - "config": { - "identifier": "openconfig-policy-types:DIRECTLY_CONNECTED", - "name": "DIRECTLY_CONNECTED" - }, - "identifier": "openconfig-policy-types:DIRECTLY_CONNECTED", - "name": "DIRECTLY_CONNECTED" - }, - { - "config": { - "identifier": "openconfig-policy-types:STATIC", - "name": "STATIC" - }, - "identifier": "openconfig-policy-types:STATIC", - "name": "STATIC", - "static-routes": { - "static": [ - { - "config": { - "prefix": "::/0" - }, - "next-hops": { - "next-hop": [ - { - "config": { - "index": "AUTO_1_fdfd--1", - "metric": 1, - "next-hop": "fdfd::1" - }, - "index": "AUTO_1_fdfd--1" - } - ] - }, - "prefix": "::/0" - }, - { - "config": { - "prefix": "0.0.0.0/0" - }, - "next-hops": { - "next-hop": [ - { - "config": { - "index": "AUTO_1_192-168-2-1", - "metric": 1, - "next-hop": "192.168.2.1" - }, - "index": "AUTO_1_192-168-2-1" - } - ] - }, - "prefix": "0.0.0.0/0" - } - ] - } - }, - { - "bgp": { - "global": { - "afi-safis": { - "afi-safi": [ - { - "afi-safi-name": "openconfig-bgp-types:IPV6_UNICAST", - "config": { - "afi-safi-name": "openconfig-bgp-types:IPV6_UNICAST" - }, - "state": { - "afi-safi-name": "openconfig-bgp-types:IPV6_UNICAST" - } - }, - { - "afi-safi-name": "openconfig-bgp-types:IPV4_UNICAST", - "config": { - "afi-safi-name": "openconfig-bgp-types:IPV4_UNICAST" - }, - "state": { - "afi-safi-name": "openconfig-bgp-types:IPV4_UNICAST" - } - } - ] - }, - "use-multiple-paths": { - "config": { - "enabled": true - }, - "state": { - "enabled": true - } - } - } - }, - "config": { - "identifier": "openconfig-policy-types:BGP", - "name": "BGP" - }, - "identifier": "openconfig-policy-types:BGP", - "name": "BGP" - }, - { - "config": { - "identifier": "openconfig-policy-types:PIM", - "name": "PIM" - }, - "identifier": "openconfig-policy-types:PIM", - "name": "PIM", - "state": { - "identifier": "openconfig-policy-types:PIM", - "name": "PIM" - } - } - ] - }, - "segment-routing": { - "srgbs": { - "srgb": [ - { - "config": { - "dataplane-type": "MPLS", - "local-id": "isis-sr", - "mpls-label-blocks": [ - "isis-sr" - ] - }, - "local-id": "isis-sr" - } - ] - }, - "srlbs": { - "srlb": [ - { - "config": { - "dataplane-type": "MPLS", - "local-id": "srlb", - "mpls-label-block": "srlb" - }, - "local-id": "srlb" - } - ] - } - }, - "tables": { - "table": [ - { - "address-family": "openconfig-types:IPV4", - "config": { - "address-family": "openconfig-types:IPV4", - "protocol": "openconfig-policy-types:DIRECTLY_CONNECTED" - }, - "protocol": "openconfig-policy-types:DIRECTLY_CONNECTED" - }, - { - "address-family": "openconfig-types:IPV6", - "config": { - "address-family": "openconfig-types:IPV6", - "protocol": "openconfig-policy-types:DIRECTLY_CONNECTED" - }, - "protocol": "openconfig-policy-types:DIRECTLY_CONNECTED" - }, - { - "address-family": "openconfig-types:IPV4", - "config": { - "address-family": "openconfig-types:IPV4", - "protocol": "openconfig-policy-types:STATIC" - }, - "protocol": "openconfig-policy-types:STATIC" - }, - { - "address-family": "openconfig-types:IPV6", - "config": { - "address-family": "openconfig-types:IPV6", - "protocol": "openconfig-policy-types:STATIC" - }, - "protocol": "openconfig-policy-types:STATIC" - } - ] - }, - "vlans": { - "vlan": [ - { - "config": { - "arista-vlan-augments:mac-learning": true, - "name": "default", - "status": "ACTIVE", - "vlan-id": 1 - }, - "members": { - "member": [ - { - "state": { - "interface": "Ethernet510" - } - } - ] - }, - "state": { - "arista-vlan-augments:mac-learning": true, - "name": "default", - "status": "ACTIVE", - "vlan-id": 1 - }, - "vlan-id": 1 - } - ] - } - } - ] - }, - "openconfig-platform:components": { - "component": [ - { - "config": { - "name": "CPU1" - }, - "cpu": { - "openconfig-platform-cpu:utilization": { - "state": { - "avg": 0, - "instant": 0, - "interval": "1000000000000", - "max": 11, - "max-time": "3220922909253935104", - "min": 0, - "min-time": "3220922969253274112" - } - } - }, - "name": "CPU1", - "state": { - "type": "openconfig-platform-types:CPU" - } - }, - { - "config": { - "name": "CPU2" - }, - "cpu": { - "openconfig-platform-cpu:utilization": { - "state": { - "avg": 0, - "instant": 1, - "interval": "1000000000000", - "max": 3, - "max-time": "3220921819260574208", - "min": 0, - "min-time": "3220922939256949248" - } - } - }, - "name": "CPU2", - "state": { - "type": "openconfig-platform-types:CPU" - } - }, - { - "config": { - "name": "CPU3" - }, - "cpu": { - "openconfig-platform-cpu:utilization": { - "state": { - "avg": 0, - "instant": 0, - "interval": "1000000000000", - "max": 11, - "max-time": "3220922009258855936", - "min": 0, - "min-time": "3220922969253549568" - } - } - }, - "name": "CPU3", - "state": { - "type": "openconfig-platform-types:CPU" - } - }, - { - "config": { - "name": "CPU0" - }, - "cpu": { - "openconfig-platform-cpu:utilization": { - "state": { - "avg": 0, - "instant": 0, - "interval": "1000000000000", - "max": 3, - "max-time": "3220922909253848064", - "min": 0, - "min-time": "3220922969253206528" - } - } - }, - "name": "CPU0", - "state": { - "type": "openconfig-platform-types:CPU" - } - }, - { - "config": { - "name": "Chassis" - }, - "name": "Chassis", - "state": { - "memory": { - "available": "4127031296", - "utilized": "3911405568" - }, - "name": "Chassis", - "type": "openconfig-platform-types:CHASSIS" - } - }, - { - "config": { - "name": "Port510" - }, - "name": "Port510", - "state": { - "name": "Port510" - } - } - ] - }, - "openconfig-routing-policy:routing-policy": { - "defined-sets": { - "prefix-sets": { - "prefix-set": [] - } - }, - "policy-definitions": { - "policy-definition": [] - } - }, - "openconfig-system:system": { - "aaa": { - "arista-system-augments:global": { - "radius": { - "config": { - "retransmit-attempts": 3, - "timeout": 5 - }, - "state": { - "retransmit-attempts": 3, - "timeout": 5 - } - }, - "tacacs": { - "config": { - "timeout": 5 - }, - "state": { - "timeout": 5 - } - } - }, - "authentication": { - "config": { - "authentication-method": [ - "openconfig-aaa-types:LOCAL" - ] - }, - "state": { - "authentication-method": [ - "openconfig-aaa-types:LOCAL" - ] - }, - "users": { - "user": [ - { - "config": { - "password-hashed": "$6$TA00T9txFfm8ez7I$CPgZxMSvbkc3IODR3h.5dnel2K5N3dcuZ6qmwd8u8HDaMhViG9YSbHQaDeH7cQYV4zWz.5eOsjreQZac9LkgO/", - "role": "openconfig-aaa-types:SYSTEM_ROLE_ADMIN", - "username": "admin" - }, - "state": { - "password-hashed": "$6$TA00T9txFfm8ez7I$CPgZxMSvbkc3IODR3h.5dnel2K5N3dcuZ6qmwd8u8HDaMhViG9YSbHQaDeH7cQYV4zWz.5eOsjreQZac9LkgO/", - "role": "openconfig-aaa-types:SYSTEM_ROLE_ADMIN", - "username": "admin" - }, - "username": "admin" - } - ] - } - } - }, - "arista-system-augments:fhrp": { - "config": { - "accept-mode": "DISABLED" - } - }, - "config": {}, - "dns": { - "config": { - "arista-system-augments:network-instance": "default" - }, - "state": { - "arista-system-augments:network-instance": "default" - } - }, - "grpc-server": { - "config": { - "certificate-id": "", - "enable": true, - "port": 6030, - "transport-security": false - }, - "state": { - "certificate-id": "", - "enable": true, - "port": 6030, - "transport-security": false - } - }, - "memory": { - "state": { - "physical": "4127031296", - "reserved": "3911405568" - } - }, - "ntp": { - "config": { - "enable-ntp-auth": false, - "enabled": false - }, - "state": { - "enable-ntp-auth": false, - "enabled": false - } - }, - "openconfig-openflow:openflow": { - "agent": { - "config": { - "inactivity-probe": "10" - }, - "state": { - "inactivity-probe": "10" - } - } - }, - "processes": { - "process": [ - { - "pid": "966", - "state": { - "args": [ - "--agenttitle=McastCommon6 --dlopen procmgr /usr/bin/McastCommon6" - ], - "cpu-usage-system": "1", - "cpu-usage-user": "0", - "cpu-utilization": 0, - "memory-usage": "1650688", - "memory-utilization": 0, - "name": "netns", - "pid": "966", - "start-time": "1622215688635663872" - } - }, - { - "pid": "1001", - "state": { - "args": [ - "--agenttitle=SharedSecretProfile --dlopen procmgr /usr/bin/SharedSecretProfile" - ], - "cpu-usage-system": "0", - "cpu-usage-user": "0", - "cpu-utilization": 0, - "memory-usage": "1601536", - "memory-utilization": 0, - "name": "netns", - "pid": "1001", - "start-time": "1622215689635663872" - } - }, - { - "pid": "297", - "state": { - "args": [ - "-n" - ], - "cpu-usage-system": "761", - "cpu-usage-user": "114", - "cpu-utilization": 0, - "memory-usage": "2633728", - "memory-utilization": 0, - "name": "crond", - "pid": "297", - "start-time": "1622215617635663872" - } - }, - { - "pid": "960", - "state": { - "args": [ - "" - ], - "cpu-usage-system": "151115", - "cpu-usage-user": "54927", - "cpu-utilization": 0, - "memory-usage": "69464064", - "memory-utilization": 1, - "name": "AgentMonitor", - "pid": "960", - "start-time": "1622215688635663872" - } - }, - { - "pid": "364", - "state": { - "args": [ - "--dedup --compress --priority Sysdb --maxFiles 1000 /var/tmp/Fossil /mnt/flash/Fossil" - ], - "cpu-usage-system": "0", - "cpu-usage-user": "8", - "cpu-utilization": 0, - "memory-usage": "1802240", - "memory-utilization": 0, - "name": "SaveFossil", - "pid": "364", - "start-time": "1622215617635663872" - } - }, - { - "pid": "956", - "state": { - "args": [ - " -d -i --dlopen -p -f -l libLoadDynamicLibs.so procmgr libProcMgrSetup.so --daemonize" - ], - "cpu-usage-system": "1", - "cpu-usage-user": "0", - "cpu-utilization": 0, - "memory-usage": "10809344", - "memory-utilization": 0, - "name": "netnsd-session", - "pid": "956", - "start-time": "1622215688635663872" - } - }, - { - "pid": "167", - "state": { - "args": [ - "-f" - ], - "cpu-usage-system": "0", - "cpu-usage-user": "0", - "cpu-utilization": 0, - "memory-usage": "2166784", - "memory-utilization": 0, - "name": "lvmetad", - "pid": "167", - "start-time": "1622215614635663872" - } - }, - { - "pid": "972", - "state": { - "args": [ - "--agenttitle=Arp --dlopen procmgr /usr/bin/Arp" - ], - "cpu-usage-system": "0", - "cpu-usage-user": "0", - "cpu-utilization": 0, - "memory-usage": "1617920", - "memory-utilization": 0, - "name": "netns", - "pid": "972", - "start-time": "1622215688635663872" - } - }, - { - "pid": "933", - "state": { - "args": [ - "--agenttitle=PortSec --dlopen procmgr /usr/bin/PortSec" - ], - "cpu-usage-system": "0", - "cpu-usage-user": "0", - "cpu-utilization": 0, - "memory-usage": "1634304", - "memory-utilization": 0, - "name": "netns", - "pid": "933", - "start-time": "1622215688635663872" - } - }, - { - "pid": "924", - "state": { - "args": [ - "" - ], - "cpu-usage-system": "20568", - "cpu-usage-user": "4995", - "cpu-utilization": 0, - "memory-usage": "107622400", - "memory-utilization": 2, - "name": "SuperServer", - "pid": "924", - "start-time": "1622215688635663872" - } - }, - { - "pid": "941", - "state": { - "args": [ - " -d -i --dlopen -p -f -l libLoadDynamicLibs.so procmgr libProcMgrSetup.so --daemonize" - ], - "cpu-usage-system": "0", - "cpu-usage-user": "0", - "cpu-utilization": 0, - "memory-usage": "10809344", - "memory-utilization": 0, - "name": "netnsd-session", - "pid": "941", - "start-time": "1622215688635663872" - } - }, - { - "pid": "940", - "state": { - "args": [ - "" - ], - "cpu-usage-system": "4552", - "cpu-usage-user": "11063", - "cpu-utilization": 0, - "memory-usage": "91471872", - "memory-utilization": 2, - "name": "Lag", - "pid": "940", - "start-time": "1622215688635663872" - } - }, - { - "pid": "938", - "state": { - "args": [ - "--agenttitle=StpTxRx --dlopen procmgr /usr/bin/StpTxRx" - ], - "cpu-usage-system": "1", - "cpu-usage-user": "0", - "cpu-utilization": 0, - "memory-usage": "1638400", - "memory-utilization": 0, - "name": "netns", - "pid": "938", - "start-time": "1622215688635663872" - } - }, - { - "pid": "224", - "state": { - "args": [ - "" - ], - "cpu-usage-system": "1346", - "cpu-usage-user": "264", - "cpu-utilization": 0, - "memory-usage": "1458176", - "memory-utilization": 0, - "name": "ProcMonitor", - "pid": "224", - "start-time": "1622215615635663872" - } - }, - { - "pid": "970", - "state": { - "args": [ - " -d -i --dlopen -p -f -l libLoadDynamicLibs.so procmgr libProcMgrSetup.so --daemonize" - ], - "cpu-usage-system": "0", - "cpu-usage-user": "0", - "cpu-utilization": 0, - "memory-usage": "10809344", - "memory-utilization": 0, - "name": "netnsd-session", - "pid": "970", - "start-time": "1622215688635663872" - } - }, - { - "pid": "997", - "state": { - "args": [ - " -d -i --dlopen -p -f -l libLoadDynamicLibs.so procmgr libProcMgrSetup.so --daemonize" - ], - "cpu-usage-system": "1", - "cpu-usage-user": "0", - "cpu-utilization": 0, - "memory-usage": "10809344", - "memory-utilization": 0, - "name": "netnsd-session", - "pid": "997", - "start-time": "1622215689635663872" - } - }, - { - "pid": "951", - "state": { - "args": [ - "--agenttitle=StpTopology --dlopen procmgr /usr/bin/StpTopology" - ], - "cpu-usage-system": "0", - "cpu-usage-user": "0", - "cpu-utilization": 0, - "memory-usage": "1638400", - "memory-utilization": 0, - "name": "netns", - "pid": "951", - "start-time": "1622215688635663872" - } - }, - { - "pid": "974", - "state": { - "args": [ - "" - ], - "cpu-usage-system": "1303", - "cpu-usage-user": "2836", - "cpu-utilization": 0, - "memory-usage": "82403328", - "memory-utilization": 1, - "name": "McastCommon6", - "pid": "974", - "start-time": "1622215688635663872" - } - }, - { - "pid": "929", - "state": { - "args": [ - "--agenttitle=Lag --dlopen procmgr /usr/bin/Lag" - ], - "cpu-usage-system": "1", - "cpu-usage-user": "0", - "cpu-utilization": 0, - "memory-usage": "1642496", - "memory-utilization": 0, - "name": "netns", - "pid": "929", - "start-time": "1622215688635663872" - } - }, - { - "pid": "1003", - "state": { - "args": [ - "" - ], - "cpu-usage-system": "1918", - "cpu-usage-user": "4022", - "cpu-utilization": 0, - "memory-usage": "99753984", - "memory-utilization": 2, - "name": "IgmpSnooping", - "pid": "1003", - "start-time": "1622215689635663872" - } - }, - { - "pid": "497", - "state": { - "args": [ - "" - ], - "cpu-usage-system": "9497", - "cpu-usage-user": "2576", - "cpu-utilization": 0, - "memory-usage": "2473984", - "memory-utilization": 0, - "name": "SlabMonitor", - "pid": "497", - "start-time": "1622215644635663872" - } - }, - { - "pid": "1004", - "state": { - "args": [ - " -d -i --dlopen -p -f -l libLoadDynamicLibs.so procmgr libProcMgrSetup.so --daemonize" - ], - "cpu-usage-system": "1", - "cpu-usage-user": "0", - "cpu-utilization": 0, - "memory-usage": "10809344", - "memory-utilization": 0, - "name": "netnsd-session", - "pid": "1004", - "start-time": "1622215689635663872" - } - }, - { - "pid": "968", - "state": { - "args": [ - "--agenttitle=LacpTxAgent --dlopen procmgr /usr/bin/LacpTxAgent" - ], - "cpu-usage-system": "1", - "cpu-usage-user": "0", - "cpu-utilization": 0, - "memory-usage": "1638400", - "memory-utilization": 0, - "name": "netns", - "pid": "968", - "start-time": "1622215688635663872" - } - }, - { - "pid": "936", - "state": { - "args": [ - "--agenttitle=EventMgr --dlopen procmgr /usr/bin/EventMgr" - ], - "cpu-usage-system": "0", - "cpu-usage-user": "0", - "cpu-utilization": 0, - "memory-usage": "1736704", - "memory-utilization": 0, - "name": "netns", - "pid": "936", - "start-time": "1622215688635663872" - } - }, - { - "pid": "946", - "state": { - "args": [ - "--agenttitle=FibServices --dlopen procmgr /usr/bin/FibServices" - ], - "cpu-usage-system": "0", - "cpu-usage-user": "0", - "cpu-utilization": 0, - "memory-usage": "1716224", - "memory-utilization": 0, - "name": "netns", - "pid": "946", - "start-time": "1622215688635663872" - } - }, - { - "pid": "935", - "state": { - "args": [ - " -d -i --dlopen -p -f -l libLoadDynamicLibs.so procmgr libProcMgrSetup.so --daemonize" - ], - "cpu-usage-system": "0", - "cpu-usage-user": "0", - "cpu-utilization": 0, - "memory-usage": "10809344", - "memory-utilization": 0, - "name": "netnsd-session", - "pid": "935", - "start-time": "1622215688635663872" - } - }, - { - "pid": "977", - "state": { - "args": [ - " -d -i --dlopen -p -f -l libLoadDynamicLibs.so procmgr libProcMgrSetup.so --daemonize" - ], - "cpu-usage-system": "0", - "cpu-usage-user": "0", - "cpu-utilization": 0, - "memory-usage": "10809344", - "memory-utilization": 0, - "name": "netnsd-session", - "pid": "977", - "start-time": "1622215688635663872" - } - }, - { - "pid": "597", - "state": { - "args": [ - "" - ], - "cpu-usage-system": "24815", - "cpu-usage-user": "28918", - "cpu-utilization": 0, - "memory-usage": "153731072", - "memory-utilization": 3, - "name": "Sysdb", - "pid": "597", - "start-time": "1622215646635663872" - } - }, - { - "pid": "672", - "state": { - "args": [ - " /usr/bin/Cli" - ], - "cpu-usage-system": "1050", - "cpu-usage-user": "1606", - "cpu-utilization": 0, - "memory-usage": "13520896", - "memory-utilization": 0, - "name": "CliShell", - "pid": "672", - "start-time": "1622215648635663872" - } - }, - { - "pid": "949", - "state": { - "args": [ - " -d -i --dlopen -p -f -l libLoadDynamicLibs.so procmgr libProcMgrSetup.so --daemonize" - ], - "cpu-usage-system": "0", - "cpu-usage-user": "0", - "cpu-utilization": 0, - "memory-usage": "10809344", - "memory-utilization": 0, - "name": "netnsd-session", - "pid": "949", - "start-time": "1622215688635663872" - } - }, - { - "pid": "980", - "state": { - "args": [ - "" - ], - "cpu-usage-system": "6315", - "cpu-usage-user": "16098", - "cpu-utilization": 0, - "memory-usage": "76705792", - "memory-utilization": 1, - "name": "Stp", - "pid": "980", - "start-time": "1622215688635663872" - } - }, - { - "pid": "748", - "state": { - "args": [ - "" - ], - "cpu-usage-system": "1", - "cpu-usage-user": "0", - "cpu-utilization": 0, - "memory-usage": "2838528", - "memory-utilization": 0, - "name": "bash", - "pid": "748", - "start-time": "1622215658635663872" - } - }, - { - "pid": "947", - "state": { - "args": [ - "" - ], - "cpu-usage-system": "1661", - "cpu-usage-user": "4080", - "cpu-utilization": 0, - "memory-usage": "100040704", - "memory-utilization": 2, - "name": "Ira", - "pid": "947", - "start-time": "1622215688635663872" - } - }, - { - "pid": "927", - "state": { - "args": [ - "" - ], - "cpu-usage-system": "2095", - "cpu-usage-user": "4769", - "cpu-utilization": 0, - "memory-usage": "82345984", - "memory-utilization": 1, - "name": "Lldp", - "pid": "927", - "start-time": "1622215688635663872" - } - }, - { - "pid": "926", - "state": { - "args": [ - " -d -i --dlopen -p -f -l libLoadDynamicLibs.so procmgr libProcMgrSetup.so --daemonize" - ], - "cpu-usage-system": "0", - "cpu-usage-user": "0", - "cpu-utilization": 0, - "memory-usage": "10809344", - "memory-utilization": 0, - "name": "netnsd-session", - "pid": "926", - "start-time": "1622215688635663872" - } - }, - { - "pid": "993", - "state": { - "args": [ - "--agenttitle=Ebra --dlopen procmgr /usr/bin/Ebra" - ], - "cpu-usage-system": "1", - "cpu-usage-user": "0", - "cpu-utilization": 0, - "memory-usage": "1564672", - "memory-utilization": 0, - "name": "netns", - "pid": "993", - "start-time": "1622215689635663872" - } - }, - { - "pid": "967", - "state": { - "args": [ - "" - ], - "cpu-usage-system": "2258", - "cpu-usage-user": "2317", - "cpu-utilization": 0, - "memory-usage": "79106048", - "memory-utilization": 1, - "name": "Tunnel", - "pid": "967", - "start-time": "1622215688635663872" - } - }, - { - "pid": "983", - "state": { - "args": [ - "" - ], - "cpu-usage-system": "1468", - "cpu-usage-user": "3094", - "cpu-utilization": 0, - "memory-usage": "83124224", - "memory-utilization": 2, - "name": "LacpTxAgent", - "pid": "983", - "start-time": "1622215689635663872" - } - }, - { - "pid": "995", - "state": { - "args": [ - "" - ], - "cpu-usage-system": "2180", - "cpu-usage-user": "3209", - "cpu-utilization": 0, - "memory-usage": "79425536", - "memory-utilization": 1, - "name": "Qos", - "pid": "995", - "start-time": "1622215689635663872" - } - }, - { - "pid": "954", - "state": { - "args": [ - "--agenttitle=Tunnel --dlopen procmgr /usr/bin/Tunnel" - ], - "cpu-usage-system": "1", - "cpu-usage-user": "0", - "cpu-utilization": 0, - "memory-usage": "1642496", - "memory-utilization": 0, - "name": "netns", - "pid": "954", - "start-time": "1622215688635663872" - } - }, - { - "pid": "391", - "state": { - "args": [ - "-m -r -e modify -e create -e delete -e attrib -e move ." - ], - "cpu-usage-system": "0", - "cpu-usage-user": "0", - "cpu-utilization": 0, - "memory-usage": "1576960", - "memory-utilization": 0, - "name": "inotifywait", - "pid": "391", - "start-time": "1622215618635663872" - } - }, - { - "pid": "969", - "state": { - "args": [ - "" - ], - "cpu-usage-system": "6349", - "cpu-usage-user": "17003", - "cpu-utilization": 0, - "memory-usage": "99954688", - "memory-utilization": 2, - "name": "Acl", - "pid": "969", - "start-time": "1622215688635663872" - } - }, - { - "pid": "964", - "state": { - "args": [ - "--agenttitle=KernelNetworkInfo --dlopen procmgr /usr/bin/KernelNetworkInfo" - ], - "cpu-usage-system": "0", - "cpu-usage-user": "0", - "cpu-utilization": 0, - "memory-usage": "1544192", - "memory-utilization": 0, - "name": "netns", - "pid": "964", - "start-time": "1622215688635663872" - } - }, - { - "pid": "998", - "state": { - "args": [ - "" - ], - "cpu-usage-system": "2018", - "cpu-usage-user": "4711", - "cpu-utilization": 0, - "memory-usage": "92426240", - "memory-utilization": 2, - "name": "Ebra", - "pid": "998", - "start-time": "1622215689635663872" - } - }, - { - "pid": "962", - "state": { - "args": [ - " -d -i --dlopen -p -f -l libLoadDynamicLibs.so procmgr libProcMgrSetup.so --daemonize" - ], - "cpu-usage-system": "1", - "cpu-usage-user": "0", - "cpu-utilization": 0, - "memory-usage": "10809344", - "memory-utilization": 0, - "name": "netnsd-session", - "pid": "962", - "start-time": "1622215688635663872" - } - }, - { - "pid": "958", - "state": { - "args": [ - " -d -i --dlopen -p -f -l libLoadDynamicLibs.so procmgr libProcMgrSetup.so --daemonize" - ], - "cpu-usage-system": "0", - "cpu-usage-user": "0", - "cpu-utilization": 0, - "memory-usage": "10809344", - "memory-utilization": 0, - "name": "netnsd-session", - "pid": "958", - "start-time": "1622215688635663872" - } - }, - { - "pid": "1002", - "state": { - "args": [ - "" - ], - "cpu-usage-system": "1881", - "cpu-usage-user": "3990", - "cpu-utilization": 0, - "memory-usage": "91709440", - "memory-utilization": 2, - "name": "KernelFib", - "pid": "1002", - "start-time": "1622215689635663872" - } - }, - { - "pid": "950", - "state": { - "args": [ - "" - ], - "cpu-usage-system": "1604", - "cpu-usage-user": "2701", - "cpu-utilization": 0, - "memory-usage": "92332032", - "memory-utilization": 2, - "name": "Aaa", - "pid": "950", - "start-time": "1622215688635663872" - } - }, - { - "pid": "418", - "state": { - "args": [ - "/usr/sbin/core_annotate_util daemon" - ], - "cpu-usage-system": "0", - "cpu-usage-user": "0", - "cpu-utilization": 0, - "memory-usage": "2588672", - "memory-utilization": 0, - "name": "core_annotate_u", - "pid": "418", - "start-time": "1622215625635663872" - } - }, - { - "pid": "963", - "state": { - "args": [ - "--agenttitle=Stp --dlopen procmgr /usr/bin/Stp" - ], - "cpu-usage-system": "0", - "cpu-usage-user": "0", - "cpu-utilization": 0, - "memory-usage": "1613824", - "memory-utilization": 0, - "name": "netns", - "pid": "963", - "start-time": "1622215688635663872" - } - }, - { - "pid": "434", - "state": { - "args": [ - "-e modify /var/lib/rpm" - ], - "cpu-usage-system": "0", - "cpu-usage-user": "0", - "cpu-utilization": 0, - "memory-usage": "569344", - "memory-utilization": 0, - "name": "inotifywait", - "pid": "434", - "start-time": "1622215625635663872" - } - }, - { - "pid": "981", - "state": { - "args": [ - "" - ], - "cpu-usage-system": "2124", - "cpu-usage-user": "4414", - "cpu-utilization": 0, - "memory-usage": "98656256", - "memory-utilization": 2, - "name": "Arp", - "pid": "981", - "start-time": "1622215688635663872" - } - }, - { - "pid": "939", - "state": { - "args": [ - " -d -i --dlopen -p -f -l libLoadDynamicLibs.so procmgr libProcMgrSetup.so --daemonize" - ], - "cpu-usage-system": "0", - "cpu-usage-user": "0", - "cpu-utilization": 0, - "memory-usage": "10809344", - "memory-utilization": 0, - "name": "netnsd-session", - "pid": "939", - "start-time": "1622215688635663872" - } - }, - { - "pid": "942", - "state": { - "args": [ - "--agenttitle=AgentMonitor --dlopen procmgr /usr/bin/AgentMonitor" - ], - "cpu-usage-system": "0", - "cpu-usage-user": "0", - "cpu-utilization": 0, - "memory-usage": "1593344", - "memory-utilization": 0, - "name": "netns", - "pid": "942", - "start-time": "1622215688635663872" - } - }, - { - "pid": "975", - "state": { - "args": [ - " -d -i --dlopen -p -f -l libLoadDynamicLibs.so procmgr libProcMgrSetup.so --daemonize" - ], - "cpu-usage-system": "1", - "cpu-usage-user": "0", - "cpu-utilization": 0, - "memory-usage": "10809344", - "memory-utilization": 0, - "name": "netnsd-session", - "pid": "975", - "start-time": "1622215688635663872" - } - }, - { - "pid": "979", - "state": { - "args": [ - "--agenttitle=ReloadCauseAgent --dlopen procmgr /usr/bin/ReloadCauseAgent" - ], - "cpu-usage-system": "1", - "cpu-usage-user": "0", - "cpu-utilization": 0, - "memory-usage": "1650688", - "memory-utilization": 0, - "name": "netns", - "pid": "979", - "start-time": "1622215688635663872" - } - }, - { - "pid": "477", - "state": { - "args": [ - "" - ], - "cpu-usage-system": "0", - "cpu-usage-user": "0", - "cpu-utilization": 0, - "memory-usage": "57053184", - "memory-utilization": 1, - "name": "ProcMgr-master", - "pid": "477", - "start-time": "1622215644635663872" - } - }, - { - "pid": "984", - "state": { - "args": [ - "--agenttitle=Qos --dlopen procmgr /usr/bin/Qos" - ], - "cpu-usage-system": "1", - "cpu-usage-user": "0", - "cpu-utilization": 0, - "memory-usage": "1638400", - "memory-utilization": 0, - "name": "netns", - "pid": "984", - "start-time": "1622215689635663872" - } - }, - { - "pid": "948", - "state": { - "args": [ - "" - ], - "cpu-usage-system": "14678", - "cpu-usage-user": "2950", - "cpu-utilization": 0, - "memory-usage": "84791296", - "memory-utilization": 2, - "name": "EventMgr", - "pid": "948", - "start-time": "1622215688635663872" - } - }, - { - "pid": "971", - "state": { - "args": [ - " -d -i --dlopen -p -f -l libLoadDynamicLibs.so procmgr libProcMgrSetup.so --daemonize" - ], - "cpu-usage-system": "0", - "cpu-usage-user": "0", - "cpu-utilization": 0, - "memory-usage": "10809344", - "memory-utilization": 0, - "name": "netnsd-session", - "pid": "971", - "start-time": "1622215688635663872" - } - }, - { - "pid": "994", - "state": { - "args": [ - " -d -i --dlopen -p -f -l libLoadDynamicLibs.so procmgr libProcMgrSetup.so --daemonize" - ], - "cpu-usage-system": "0", - "cpu-usage-user": "0", - "cpu-utilization": 0, - "memory-usage": "10809344", - "memory-utilization": 0, - "name": "netnsd-session", - "pid": "994", - "start-time": "1622215689635663872" - } - }, - { - "pid": "934", - "state": { - "args": [ - "--agenttitle=Ira --dlopen procmgr /usr/bin/Ira" - ], - "cpu-usage-system": "1", - "cpu-usage-user": "0", - "cpu-utilization": 0, - "memory-usage": "1642496", - "memory-utilization": 0, - "name": "netns", - "pid": "934", - "start-time": "1622215688635663872" - } - }, - { - "pid": "368", - "state": { - "args": [ - "-m -r -e modify -e create -e delete -e attrib -e move ." - ], - "cpu-usage-system": "0", - "cpu-usage-user": "0", - "cpu-utilization": 0, - "memory-usage": "610304", - "memory-utilization": 0, - "name": "inotifywait", - "pid": "368", - "start-time": "1622215618635663872" - } - }, - { - "pid": "1008", - "state": { - "args": [ - "" - ], - "cpu-usage-system": "42879814", - "cpu-usage-user": "35050036", - "cpu-utilization": 0, - "memory-usage": "123768832", - "memory-utilization": 2, - "name": "Etba", - "pid": "1008", - "start-time": "1622215689635663872" - } - }, - { - "pid": "1005", - "state": { - "args": [ - "" - ], - "cpu-usage-system": "1781", - "cpu-usage-user": "1923", - "cpu-utilization": 0, - "memory-usage": "69140480", - "memory-utilization": 1, - "name": "SharedSecretPro", - "pid": "1005", - "start-time": "1622215689635663872" - } - }, - { - "pid": "982", - "state": { - "args": [ - " -d -i --dlopen -p -f -l libLoadDynamicLibs.so procmgr libProcMgrSetup.so --daemonize" - ], - "cpu-usage-system": "1", - "cpu-usage-user": "0", - "cpu-utilization": 0, - "memory-usage": "10809344", - "memory-utilization": 0, - "name": "netnsd-session", - "pid": "982", - "start-time": "1622215689635663872" - } - }, - { - "pid": "264", - "state": { - "args": [ - "-stayalive -pidfile /var/run/xinetd.pid" - ], - "cpu-usage-system": "0", - "cpu-usage-user": "0", - "cpu-utilization": 0, - "memory-usage": "2289664", - "memory-utilization": 0, - "name": "xinetd", - "pid": "264", - "start-time": "1622215615635663872" - } - }, - { - "pid": "216", - "state": { - "args": [ - "--ignorenodev --daemon --foreground" - ], - "cpu-usage-system": "0", - "cpu-usage-user": "0", - "cpu-utilization": 0, - "memory-usage": "1667072", - "memory-utilization": 0, - "name": "mcelog", - "pid": "216", - "start-time": "1622215615635663872" - } - }, - { - "pid": "921", - "state": { - "args": [ - "--agenttitle=McastCommon --dlopen procmgr /usr/bin/McastCommon" - ], - "cpu-usage-system": "0", - "cpu-usage-user": "0", - "cpu-utilization": 0, - "memory-usage": "1630208", - "memory-utilization": 0, - "name": "netns", - "pid": "921", - "start-time": "1622215688635663872" - } - }, - { - "pid": "991", - "state": { - "args": [ - " -d -i --dlopen -p -f -l libLoadDynamicLibs.so procmgr libProcMgrSetup.so --daemonize" - ], - "cpu-usage-system": "0", - "cpu-usage-user": "0", - "cpu-utilization": 0, - "memory-usage": "10809344", - "memory-utilization": 0, - "name": "netnsd-session", - "pid": "991", - "start-time": "1622215689635663872" - } - }, - { - "pid": "943", - "state": { - "args": [ - "" - ], - "cpu-usage-system": "2005", - "cpu-usage-user": "2261", - "cpu-utilization": 0, - "memory-usage": "77414400", - "memory-utilization": 1, - "name": "PortSec", - "pid": "943", - "start-time": "1622215688635663872" - } - }, - { - "pid": "367", - "state": { - "args": [ - "/usr/bin/inotifyrun -c pax -x sv4cpio -O -w -f /mnt/flash/persist/local.new . \u0026\u0026 mv /mnt/flash/persist/local.new /mnt/flash/persist/local || logger -t SetupPersist Failed to update /mnt/flash/persist/local --daemon --logfile=/var/log/inotifyrun-local.log --pidfile=/var/run/inotifyrun-local.pid /persist/local" - ], - "cpu-usage-system": "0", - "cpu-usage-user": "0", - "cpu-utilization": 0, - "memory-usage": "5214208", - "memory-utilization": 0, - "name": "python", - "pid": "367", - "start-time": "1622215618635663872" - } - }, - { - "pid": "452", - "state": { - "args": [ - " -d -i --dlopen -p -f -l libLoadDynamicLibs.so procmgr libProcMgrSetup.so --daemonize" - ], - "cpu-usage-system": "36", - "cpu-usage-user": "0", - "cpu-utilization": 0, - "memory-usage": "12582912", - "memory-utilization": 0, - "name": "netnsd-server", - "pid": "452", - "start-time": "1622215643635663872" - } - }, - { - "pid": "992", - "state": { - "args": [ - "" - ], - "cpu-usage-system": "2232", - "cpu-usage-user": "2673", - "cpu-utilization": 0, - "memory-usage": "80261120", - "memory-utilization": 1, - "name": "L2Rib", - "pid": "992", - "start-time": "1622215689635663872" - } - }, - { - "pid": "479", - "state": { - "args": [ - "" - ], - "cpu-usage-system": "83165", - "cpu-usage-user": "258040", - "cpu-utilization": 0, - "memory-usage": "21934080", - "memory-utilization": 0, - "name": "ProcMgr-worker", - "pid": "479", - "start-time": "1622215644635663872" - } - }, - { - "pid": "999", - "state": { - "args": [ - "--agenttitle=KernelFib --dlopen procmgr /usr/bin/KernelFib" - ], - "cpu-usage-system": "0", - "cpu-usage-user": "0", - "cpu-utilization": 0, - "memory-usage": "1634304", - "memory-utilization": 0, - "name": "netns", - "pid": "999", - "start-time": "1622215689635663872" - } - }, - { - "pid": "959", - "state": { - "args": [ - "" - ], - "cpu-usage-system": "1346", - "cpu-usage-user": "2865", - "cpu-utilization": 0, - "memory-usage": "79597568", - "memory-utilization": 1, - "name": "StpTopology", - "pid": "959", - "start-time": "1622215688635663872" - } - }, - { - "pid": "987", - "state": { - "args": [ - "--agenttitle=TopoAgent --dlopen procmgr /usr/bin/TopoAgent --scheduled" - ], - "cpu-usage-system": "0", - "cpu-usage-user": "0", - "cpu-utilization": 0, - "memory-usage": "1634304", - "memory-utilization": 0, - "name": "netns", - "pid": "987", - "start-time": "1622215689635663872" - } - }, - { - "pid": "955", - "state": { - "args": [ - "" - ], - "cpu-usage-system": "1821", - "cpu-usage-user": "2064", - "cpu-utilization": 0, - "memory-usage": "77361152", - "memory-utilization": 1, - "name": "FibServices", - "pid": "955", - "start-time": "1622215688635663872" - } - }, - { - "pid": "925", - "state": { - "args": [ - "" - ], - "cpu-usage-system": "1318", - "cpu-usage-user": "2777", - "cpu-utilization": 0, - "memory-usage": "79773696", - "memory-utilization": 1, - "name": "McastCommon", - "pid": "925", - "start-time": "1622215688635663872" - } - }, - { - "pid": "390", - "state": { - "args": [ - "/usr/bin/inotifyrun -c pax -x sv4cpio -O -w -f /mnt/flash/persist/secure.new . \u0026\u0026 sync \u0026\u0026 ( mv /mnt/flash/persist/secure /mnt/flash/persist/secure.old; mv /mnt/flash/persist/secure.new /mnt/flash/persist/secure; sync ) \u0026\u0026 ( scrub --no-signature /mnt/flash/persist/secure.old; rm /mnt/flash/persist/secure.old ) || logger -t SetupPersist Failed to update /mnt/flash/persist/secure --daemon --logfile=/var/log/inotifyrun-secure.log --pidfile=/var/run/inotifyrun-secure.pid /persist/secure" - ], - "cpu-usage-system": "0", - "cpu-usage-user": "0", - "cpu-utilization": 0, - "memory-usage": "5169152", - "memory-utilization": 0, - "name": "python", - "pid": "390", - "start-time": "1622215618635663872" - } - }, - { - "pid": "1471", - "state": { - "args": [ - "-n 0 --retry --follow=name --pid=1469 /var/log/eos-console" - ], - "cpu-usage-system": "3166", - "cpu-usage-user": "581", - "cpu-utilization": 0, - "memory-usage": "589824", - "memory-utilization": 0, - "name": "tail", - "pid": "1471", - "start-time": "1622215703635663872" - } - }, - { - "pid": "376", - "state": { - "args": [ - "-m -r -e modify -e create -e delete -e attrib -e move ." - ], - "cpu-usage-system": "30", - "cpu-usage-user": "13", - "cpu-utilization": 0, - "memory-usage": "602112", - "memory-utilization": 0, - "name": "inotifywait", - "pid": "376", - "start-time": "1622215618635663872" - } - }, - { - "pid": "534", - "state": { - "args": [ - "" - ], - "cpu-usage-system": "59508", - "cpu-usage-user": "114729", - "cpu-utilization": 0, - "memory-usage": "331501568", - "memory-utilization": 8, - "name": "ConfigAgent", - "pid": "534", - "start-time": "1622215645635663872" - } - }, - { - "pid": "1051", - "state": { - "args": [ - "" - ], - "cpu-usage-system": "34477", - "cpu-usage-user": "51161", - "cpu-utilization": 0, - "memory-usage": "106369024", - "memory-utilization": 2, - "name": "Rib", - "pid": "1051", - "start-time": "1622215692635663872" - } - }, - { - "pid": "375", - "state": { - "args": [ - "/usr/bin/inotifyrun -c pax -x sv4cpio -O -w -f /mnt/flash/persist/sys.new . \u0026\u0026 mv /mnt/flash/persist/sys.new /mnt/flash/persist/sys || logger -t SetupPersist Failed to update /mnt/flash/persist/sys --daemon --logfile=/var/log/inotifyrun-sys.log --pidfile=/var/run/inotifyrun-sys.pid /persist/sys" - ], - "cpu-usage-system": "237", - "cpu-usage-user": "103", - "cpu-utilization": 0, - "memory-usage": "5050368", - "memory-utilization": 0, - "name": "python", - "pid": "375", - "start-time": "1622215618635663872" - } - }, - { - "pid": "230", - "state": { - "args": [ - "-n" - ], - "cpu-usage-system": "121", - "cpu-usage-user": "169", - "cpu-utilization": 0, - "memory-usage": "5382144", - "memory-utilization": 0, - "name": "rsyslogd", - "pid": "230", - "start-time": "1622215615635663872" - } - }, - { - "pid": "233", - "state": { - "args": [ - "--system --address=systemd: --nofork --nopidfile --systemd-activation" - ], - "cpu-usage-system": "2", - "cpu-usage-user": "10", - "cpu-utilization": 0, - "memory-usage": "9428992", - "memory-utilization": 0, - "name": "dbus-daemon", - "pid": "233", - "start-time": "1622215615635663872" - } - }, - { - "pid": "961", - "state": { - "args": [ - "--agenttitle=Acl --dlopen procmgr /usr/bin/Acl" - ], - "cpu-usage-system": "1", - "cpu-usage-user": "0", - "cpu-utilization": 0, - "memory-usage": "1548288", - "memory-utilization": 0, - "name": "netns", - "pid": "961", - "start-time": "1622215688635663872" - } - }, - { - "pid": "1470", - "state": { - "args": [ - "-c /usr/bin/tail -n 0 --retry --follow=name --pid=1469 /var/log/eos-console | sed 's/\\(.*\\)/\\1\\r/'" - ], - "cpu-usage-system": "0", - "cpu-usage-user": "0", - "cpu-utilization": 0, - "memory-usage": "2473984", - "memory-utilization": 0, - "name": "sh", - "pid": "1470", - "start-time": "1622215703635663872" - } - }, - { - "pid": "1", - "state": { - "args": [ - "systemd.setenv=INTFTYPE=eth systemd.setenv=ETBA=4 systemd.setenv=SKIP_ZEROTOUCH_BARRIER_IN_SYSDBINIT=1 systemd.setenv=CEOS=1 systemd.setenv=EOS_PLATFORM=ceoslab systemd.setenv=container=docker systemd.setenv=MAPETH0=1 MGMT_INTF=eth0" - ], - "cpu-usage-system": "14444", - "cpu-usage-user": "5894", - "cpu-utilization": 0, - "memory-usage": "4837376", - "memory-utilization": 0, - "name": "systemd", - "pid": "1", - "start-time": "1622215611635663872" - } - }, - { - "pid": "1472", - "state": { - "args": [ - "s/\\(.*\\)/\\1\\r/" - ], - "cpu-usage-system": "0", - "cpu-usage-user": "0", - "cpu-utilization": 0, - "memory-usage": "1748992", - "memory-utilization": 0, - "name": "sed", - "pid": "1472", - "start-time": "1622215703635663872" - } - }, - { - "pid": "953", - "state": { - "args": [ - "" - ], - "cpu-usage-system": "14921", - "cpu-usage-user": "24838", - "cpu-utilization": 0, - "memory-usage": "82567168", - "memory-utilization": 2, - "name": "StpTxRx", - "pid": "953", - "start-time": "1622215688635663872" - } - }, - { - "pid": "540", - "state": { - "args": [ - "" - ], - "cpu-usage-system": "1515", - "cpu-usage-user": "1666", - "cpu-utilization": 0, - "memory-usage": "80396288", - "memory-utilization": 1, - "name": "StageMgr", - "pid": "540", - "start-time": "1622215645635663872" - } - }, - { - "pid": "989", - "state": { - "args": [ - " -d -i --dlopen -p -f -l libLoadDynamicLibs.so procmgr libProcMgrSetup.so --daemonize" - ], - "cpu-usage-system": "0", - "cpu-usage-user": "0", - "cpu-utilization": 0, - "memory-usage": "10809344", - "memory-utilization": 0, - "name": "netnsd-session", - "pid": "989", - "start-time": "1622215689635663872" - } - }, - { - "pid": "985", - "state": { - "args": [ - "--agenttitle=L2Rib --dlopen procmgr /usr/bin/L2Rib" - ], - "cpu-usage-system": "0", - "cpu-usage-user": "0", - "cpu-utilization": 0, - "memory-usage": "1564672", - "memory-utilization": 0, - "name": "netns", - "pid": "985", - "start-time": "1622215689635663872" - } - }, - { - "pid": "450", - "state": { - "args": [ - " -d -i --dlopen -p -f -l libLoadDynamicLibs.so procmgr libProcMgrSetup.so --daemonize" - ], - "cpu-usage-system": "0", - "cpu-usage-user": "0", - "cpu-utilization": 0, - "memory-usage": "12652544", - "memory-utilization": 0, - "name": "netnsd-watcher", - "pid": "450", - "start-time": "1622215643635663872" - } - }, - { - "pid": "978", - "state": { - "args": [ - " -d -i --dlopen -p -f -l libLoadDynamicLibs.so procmgr libProcMgrSetup.so --daemonize" - ], - "cpu-usage-system": "1", - "cpu-usage-user": "0", - "cpu-utilization": 0, - "memory-usage": "10809344", - "memory-utilization": 0, - "name": "netnsd-session", - "pid": "978", - "start-time": "1622215688635663872" - } - }, - { - "pid": "511", - "state": { - "args": [ - "" - ], - "cpu-usage-system": "1478", - "cpu-usage-user": "1659", - "cpu-utilization": 0, - "memory-usage": "92073984", - "memory-utilization": 2, - "name": "Fru", - "pid": "511", - "start-time": "1622215644635663872" - } - }, - { - "pid": "928", - "state": { - "args": [ - "--agenttitle=OpenConfig" - ], - "cpu-usage-system": "72139", - "cpu-usage-user": "232952", - "cpu-utilization": 1, - "memory-usage": "142307328", - "memory-utilization": 3, - "name": "OpenConfig", - "pid": "928", - "start-time": "1622215688635663872" - } - }, - { - "pid": "937", - "state": { - "args": [ - " -d -i --dlopen -p -f -l libLoadDynamicLibs.so procmgr libProcMgrSetup.so --daemonize" - ], - "cpu-usage-system": "0", - "cpu-usage-user": "0", - "cpu-utilization": 0, - "memory-usage": "10809344", - "memory-utilization": 0, - "name": "netnsd-session", - "pid": "937", - "start-time": "1622215688635663872" - } - }, - { - "pid": "922", - "state": { - "args": [ - "--agenttitle=Lldp --dlopen procmgr /usr/bin/Lldp" - ], - "cpu-usage-system": "0", - "cpu-usage-user": "0", - "cpu-utilization": 0, - "memory-usage": "1613824", - "memory-utilization": 0, - "name": "netns", - "pid": "922", - "start-time": "1622215688635663872" - } - }, - { - "pid": "986", - "state": { - "args": [ - "" - ], - "cpu-usage-system": "1578", - "cpu-usage-user": "1738", - "cpu-utilization": 0, - "memory-usage": "69849088", - "memory-utilization": 1, - "name": "ReloadCauseAgen", - "pid": "986", - "start-time": "1622215689635663872" - } - }, - { - "pid": "528", - "state": { - "args": [ - "" - ], - "cpu-usage-system": "1736", - "cpu-usage-user": "2075", - "cpu-utilization": 0, - "memory-usage": "104476672", - "memory-utilization": 2, - "name": "Launcher", - "pid": "528", - "start-time": "1622215645635663872" - } - }, - { - "pid": "1000", - "state": { - "args": [ - " -d -i --dlopen -p -f -l libLoadDynamicLibs.so procmgr libProcMgrSetup.so --daemonize" - ], - "cpu-usage-system": "0", - "cpu-usage-user": "0", - "cpu-utilization": 0, - "memory-usage": "10809344", - "memory-utilization": 0, - "name": "netnsd-session", - "pid": "1000", - "start-time": "1622215689635663872" - } - }, - { - "pid": "616", - "state": { - "args": [ - "" - ], - "cpu-usage-system": "17492", - "cpu-usage-user": "4887", - "cpu-utilization": 0, - "memory-usage": "2531328", - "memory-utilization": 0, - "name": "EosOomAdjust", - "pid": "616", - "start-time": "1622215646635663872" - } - }, - { - "pid": "923", - "state": { - "args": [ - " -d -i --dlopen -p -f -l libLoadDynamicLibs.so procmgr libProcMgrSetup.so --daemonize" - ], - "cpu-usage-system": "0", - "cpu-usage-user": "0", - "cpu-utilization": 0, - "memory-usage": "10809344", - "memory-utilization": 0, - "name": "netnsd-session", - "pid": "923", - "start-time": "1622215688635663872" - } - }, - { - "pid": "1469", - "state": { - "args": [ - "" - ], - "cpu-usage-system": "0", - "cpu-usage-user": "0", - "cpu-utilization": 0, - "memory-usage": "65536", - "memory-utilization": 0, - "name": "conlogd", - "pid": "1469", - "start-time": "1622215703635663872" - } - }, - { - "pid": "965", - "state": { - "args": [ - " -d -i --dlopen -p -f -l libLoadDynamicLibs.so procmgr libProcMgrSetup.so --daemonize" - ], - "cpu-usage-system": "0", - "cpu-usage-user": "0", - "cpu-utilization": 0, - "memory-usage": "10809344", - "memory-utilization": 0, - "name": "netnsd-session", - "pid": "965", - "start-time": "1622215688635663872" - } - }, - { - "pid": "996", - "state": { - "args": [ - "" - ], - "cpu-usage-system": "1683", - "cpu-usage-user": "1812", - "cpu-utilization": 0, - "memory-usage": "78594048", - "memory-utilization": 1, - "name": "TopoAgent", - "pid": "996", - "start-time": "1622215689635663872" - } - }, - { - "pid": "973", - "state": { - "args": [ - "" - ], - "cpu-usage-system": "1395", - "cpu-usage-user": "3031", - "cpu-utilization": 0, - "memory-usage": "71913472", - "memory-utilization": 1, - "name": "KernelNetworkIn", - "pid": "973", - "start-time": "1622215688635663872" - } - }, - { - "pid": "952", - "state": { - "args": [ - " -d -i --dlopen -p -f -l libLoadDynamicLibs.so procmgr libProcMgrSetup.so --daemonize" - ], - "cpu-usage-system": "0", - "cpu-usage-user": "0", - "cpu-utilization": 0, - "memory-usage": "10809344", - "memory-utilization": 0, - "name": "netnsd-session", - "pid": "952", - "start-time": "1622215688635663872" - } - }, - { - "pid": "232", - "state": { - "args": [ - "" - ], - "cpu-usage-system": "63", - "cpu-usage-user": "30", - "cpu-utilization": 0, - "memory-usage": "2740224", - "memory-utilization": 0, - "name": "systemd-logind", - "pid": "232", - "start-time": "1622215615635663872" - } - }, - { - "pid": "760747", - "state": { - "args": [ - "" - ], - "cpu-usage-system": "1", - "cpu-usage-user": "0", - "cpu-utilization": 0, - "memory-usage": "2764800", - "memory-utilization": 0, - "name": "bash", - "pid": "760747", - "start-time": "1623004570635663872" - } - }, - { - "pid": "760756", - "state": { - "args": [ - " /usr/bin/Cli" - ], - "cpu-usage-system": "126", - "cpu-usage-user": "185", - "cpu-utilization": 0, - "memory-usage": "13238272", - "memory-utilization": 0, - "name": "CliShell", - "pid": "760756", - "start-time": "1623004573635663872" - } - }, - { - "pid": "760774", - "state": { - "args": [ - "-l" - ], - "cpu-usage-system": "1", - "cpu-usage-user": "0", - "cpu-utilization": 0, - "memory-usage": "2875392", - "memory-utilization": 0, - "name": "bash", - "pid": "760774", - "start-time": "1623004586635663872" - } - } - ] - }, - "ssh-server": { - "config": { - "enable": true, - "session-limit": 50, - "timeout": 0 - }, - "state": { - "enable": true, - "session-limit": 50, - "timeout": 0 - } - }, - "state": { - "boot-time": "1614091865635663872", - "current-datetime": "2021-03-05T14:34:17Z+00:00", - "hostname": "localhost" - } - } - } - } - } - ] - } -] diff --git a/test/cap-resp-arista-ceos b/test/cap-resp-arista-ceos deleted file mode 100644 index 009569457324faf59d7bf00bb1915f2f3ccc2ec2..0000000000000000000000000000000000000000 --- a/test/cap-resp-arista-ceos +++ /dev/null @@ -1,298 +0,0 @@ - -< -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/test/req-full-node-arista-ceos b/test/req-full-node-arista-ceos deleted file mode 100644 index 6223295e2984b8002ea5573e8fbbecb77ba9dc6d..0000000000000000000000000000000000000000 Binary files a/test/req-full-node-arista-ceos and /dev/null differ diff --git a/test/req-interfaces-arista-ceos b/test/req-interfaces-arista-ceos deleted file mode 100644 index e444e33aa6d44fc9ca4538f5a030df6c8d88a708..0000000000000000000000000000000000000000 --- a/test/req-interfaces-arista-ceos +++ /dev/null @@ -1,5 +0,0 @@ - - -interfaces - -interfaces( \ No newline at end of file diff --git a/test/req-interfaces-interface-arista-ceos b/test/req-interfaces-interface-arista-ceos deleted file mode 100644 index 087f7d8275a07a95d6809081bab6ccecfa81a9f1..0000000000000000000000000000000000000000 --- a/test/req-interfaces-interface-arista-ceos +++ /dev/null @@ -1,7 +0,0 @@ -2 - -interfaces - interface - -interfaces - interface( \ No newline at end of file diff --git a/test/resp-full-node-arista-ceos b/test/resp-full-node-arista-ceos deleted file mode 100644 index 9bcd16e666a683a570c5141eb01b4ed16ad52b8b..0000000000000000000000000000000000000000 Binary files a/test/resp-full-node-arista-ceos and /dev/null differ diff --git a/test/resp-interfaces-arista-ceos b/test/resp-interfaces-arista-ceos deleted file mode 100644 index 58e139172f4264b079f1f61ec7f27fe454129734..0000000000000000000000000000000000000000 --- a/test/resp-interfaces-arista-ceos +++ /dev/null @@ -1,5 +0,0 @@ - -�"� - - -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/test/resp-interfaces-interface-arista-ceos b/test/resp-interfaces-interface-arista-ceos deleted file mode 100644 index 05f0804b1153e5982ff5d5e4d4a32d9d6d6be7d0..0000000000000000000000000000000000000000 --- a/test/resp-interfaces-interface-arista-ceos +++ /dev/null @@ -1,7 +0,0 @@ - -�"� -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/test/terraform/.docker/ca.pem b/test/terraform/.docker/ca.pem deleted file mode 100644 index 335627f7a9eaf379a5c7551d9567a8699da16a44..0000000000000000000000000000000000000000 --- a/test/terraform/.docker/ca.pem +++ /dev/null @@ -1,33 +0,0 @@ ------BEGIN CERTIFICATE----- -MIIFtzCCA5+gAwIBAgIUBWq9uklhkW5VulP/hnERK3IgadswDQYJKoZIhvcNAQEL -BQAwazELMAkGA1UEBhMCQVUxEzARBgNVBAgMClNvbWUtU3RhdGUxITAfBgNVBAoM -GEludGVybmV0IFdpZGdpdHMgUHR5IEx0ZDEkMCIGA1UEAwwbcG9ydGFpbmVyLmRh -bmV0LmZiaS5oLWRhLmRlMB4XDTIxMDMwMjE0MzEwN1oXDTIyMDMwMjE0MzEwN1ow -azELMAkGA1UEBhMCQVUxEzARBgNVBAgMClNvbWUtU3RhdGUxITAfBgNVBAoMGElu -dGVybmV0IFdpZGdpdHMgUHR5IEx0ZDEkMCIGA1UEAwwbcG9ydGFpbmVyLmRhbmV0 -LmZiaS5oLWRhLmRlMIICIjANBgkqhkiG9w0BAQEFAAOCAg8AMIICCgKCAgEA1tx8 -n9HeLdXWMprKS/+8qrC2YITG27BLGTNXPbunks7CyLhJo7G2DqFtYuhLqtBESVw0 -1MJIoGnHbi0cT7bUCRUmp3V+qUzKih5gcIndkwftEUh0IVGf+CuKAdV7l/W95pvY -s8Qt8jn8FU7dQddUhdy3cQSsbIQU1cBHUNzE0RpaHnIv713eHSYhXDb/EuxlH8r+ -cavx89OAqouesMY7TVDTyHhwVefnDvSX4KsCbcK4DtwZA/jwyx/LaPs32vFwX+zw -USH+twA37lbOrYNPgFKLX4gxJ33DvP61DZ/3Sn9YwJK1Jc5O5kRRHVFaSwSouAC5 -YOvRhnaRejrqpep9F8WX/feMSWEsa2LBjdJfWV7AXLNJAH1SbyUMlUM83bYvcYDM -ecy6wor4CSWHKjHitcO9GLlJb6nnAT2eZxv5tX4FzmN1Wftzo6NMkaETeYft6tFC -eoJ1beQpjkRB/O3DVN4m0KGtwUcIm3EB/gxMy5TuYvSimEQ/w4sXHpCwNFmu98Xz -TjfCkNT7T9oJYBlltb1opEeT+UG2t6gqIbjyqia7FjTH/kGJrk2Y6ZHrnYfC/JAw -nBPiEK7O5RkaKMx8ZeLlYcG+Er7zU6S7IP6Lysg8JA6Ay86ixstdEwU3JqdPe3E5 -ooaZRjH7gYj3A5R3wk59FyKs3eud/nrMJM8lQO8CAwEAAaNTMFEwHQYDVR0OBBYE -FBMgzW9McSbOw2ECqj8xjRHaZdF+MB8GA1UdIwQYMBaAFBMgzW9McSbOw2ECqj8x -jRHaZdF+MA8GA1UdEwEB/wQFMAMBAf8wDQYJKoZIhvcNAQELBQADggIBAB6eUXxJ -rMVbSy1iskHV+c9WV5ZGIMwMgspir+U9/n8B+psONjWcQjWe4VFkvBlW82cEF3rY -Rz2cy4e5qtNpctPZfvta1qNNVsGSVTHNXBFU4ZFikKHTzso9eYuGEO77lBhv5j8Y -oPB/dPf2rXi6k+37MIbSHdAXHsNlGkYSkf+nvZ5h/kkUqKAAdy8fdcqeRlyGZblq -Ype83FgE+VNXGenf+tGaiX+nfoPUc+2C8LxkQWzJ9SN2XLu9q8Tl7PzE6Zyq14lQ -1H2rF++/CIbCpMy4/OOct+HvpCuAs53OD+g3fHsKAHgrrEp3WLn++uxlziPT87Sn -ErpmdhmSwIsbRBiHQgVfJRSRKhvaq6HqOOD8KnEEF5gdr3CnGLsG6OsErv3M3soh -hwVrEtzyle4chG2yi1P+szIDYRldbQX4p1BAHEAaV5DXkZMbgUWdtPxI3bumFyR4 -2DXFGFJIsiT8t6bIM1irBOMPiiST1bOqV1sm49RKQ7mer7K6P03kCvnhesk+/+Ak -1486CazHC2G9xWlMXwAK8vh1SB0uz9n9vN1OInzjozopAW/jJH+n56wYiH8odeu+ -cPdmmGd8hlC8gT5NFfmJxCGZ1IlU9oj24aIanV8RRDQoieqcTiIc+XxjhodbvaQi -H1G8DOOV2NajwyqtTyfsJOs1Yqhn2pRnYmv+ ------END CERTIFICATE----- diff --git a/test/terraform/.docker/cert.pem b/test/terraform/.docker/cert.pem deleted file mode 100644 index c9f5c48e93766f0e06d1953fbd5e3dff0bc2dd86..0000000000000000000000000000000000000000 --- a/test/terraform/.docker/cert.pem +++ /dev/null @@ -1,30 +0,0 @@ ------BEGIN CERTIFICATE----- -MIIFJDCCAwygAwIBAgIUWCLw3cqcoQ3g78lzu9SzfnD+GYYwDQYJKoZIhvcNAQEL -BQAwazELMAkGA1UEBhMCQVUxEzARBgNVBAgMClNvbWUtU3RhdGUxITAfBgNVBAoM -GEludGVybmV0IFdpZGdpdHMgUHR5IEx0ZDEkMCIGA1UEAwwbcG9ydGFpbmVyLmRh -bmV0LmZiaS5oLWRhLmRlMB4XDTIxMDMwMjE0MzUwOFoXDTIyMDMwMjE0MzUwOFow -FDESMBAGA1UEAwwJdGVycmFmb3JtMIICIjANBgkqhkiG9w0BAQEFAAOCAg8AMIIC -CgKCAgEA3vemPQNkpinIXLWjfZz1S6bSgxEvv2CDO2qf+/agCqE1dP2cfHyuodTh -D+sste8btSV1a8TiixJ+2U2sVykryYLWd27VUBvFYm6j/MIG9h17iOH2bALXuBU6 -PQ6K7fJwZgunOL0IK5lYLWbacA6CiF/4rwAsaeR1p5TLWz9/1ncLuwqYv8htvvsW -LintokYX+7q2iU0uoOnKPNkMvSwYgZ4JR1XBXWxd9wrJEd7Q5MfqqPFP9uEBDeXl -+nxYrxiNAhvBAxoAV141hH/3nj6wMiReWDW0ZgRRHHiG+B8fZVSYrA6j8n6O2IB0 -wBwaem85Fa+NDMJ4GUWLS7HJsh3ld906FClrjCr30AeqES4UUTnLXwSRtyrxufTH -oK7WAqp7MRusMxohVfAky6Uj0qKtlgJwNQoUjjnVjNTP8DrHkPoFeJ8x7gcpw/ue -yylDyLRh8RSnrQrMOw/7iT6k/G2JAb/c3GupOfNCFhZ0gVbJd2cdFohqmCo0L8mV -Rb38zDORyRBZccM0b8GHayLbefy2yYSHjLZaZJueAUwwPnn6QnOpDLqj+gpoLu/g -6ah2O0PqpievKubUyNIRZct3A82JZ9usF2FD6MqkhFzx/4w9YaKUGSpT2khru8Hg -AiGhdjV/pI603EKg3N6qQxvkmGPM4jkgNTAgNdVM7lovoKiOf18CAwEAAaMXMBUw -EwYDVR0lBAwwCgYIKwYBBQUHAwIwDQYJKoZIhvcNAQELBQADggIBAE3SVAwei8Mk -SzZsXCrgXaWdfaV3XnEJh8KPXdIXgNXXHYjJhdUssQz9X1dD3hzGlrME+aTRuVTS -wcgfJOLZUovIk3955TM+rCs/L86DvxAwZ733mE0k9BmEaG5J+4ZdkezD0BxWsFxR -i/IBcc7o03cx4Z7ocqGl4Z+sLsbG7Y3tXElILfk/6W3AbN/Yi52UCfkg3ugnr3q+ -hrv57fIE35WhXXld7jTf33WOc82JFMbJ1kwVMF9T6blny0RwN98PTzYwVy8Zofaa -Cuun8VA7pYhiOD1Ej+LVytKBcsin79mNFyQO2ZO78ByE19vtgSWn6HD1LHlfJ7J6 -oKyLWWNk95EaFTY7Y+0vFbLbtXASCfvIb1QfFQ4xiIn/V9osOgUjgyPRvaE6GldG -zAAbbBSaRtVTElV61cSqekubsqyuPM8p/G6Ai8M4ZVBtX0+wUQetC+jV6TOTcX54 -bVNf2YNz9iwvSzVU7hwtl7sQskmcoVxnIYIO0KIS6C/5LYGnN8z/gyb4lMxIHxF3 -PweMfPEUH1xG8Ob0IFOGli7mMIIoRmBBfEjI5VDbVso8Bm6EH+VXDqAO5hF7YRSO -nHKZXqAowrXDtG9pBQvJJGdO3AOlwEF4lNWjvQSbThVw/9gnOTOFuI5AkHsQFgvN -BakHe9onKWI9CIt4o3hra6Pi8DgZWYHF ------END CERTIFICATE----- diff --git a/test/terraform/.docker/server-cert.pem b/test/terraform/.docker/server-cert.pem deleted file mode 100644 index a5899ae7f8646bda3b1115d5e1763f43be7c52b0..0000000000000000000000000000000000000000 --- a/test/terraform/.docker/server-cert.pem +++ /dev/null @@ -1,31 +0,0 @@ ------BEGIN CERTIFICATE----- -MIIFajCCA1KgAwIBAgIUWCLw3cqcoQ3g78lzu9SzfnD+GYUwDQYJKoZIhvcNAQEL -BQAwazELMAkGA1UEBhMCQVUxEzARBgNVBAgMClNvbWUtU3RhdGUxITAfBgNVBAoM -GEludGVybmV0IFdpZGdpdHMgUHR5IEx0ZDEkMCIGA1UEAwwbcG9ydGFpbmVyLmRh -bmV0LmZiaS5oLWRhLmRlMB4XDTIxMDMwMjE0MzMxMFoXDTIyMDMwMjE0MzMxMFow -JjEkMCIGA1UEAwwbcG9ydGFpbmVyLmRhbmV0LmZiaS5oLWRhLmRlMIICIjANBgkq -hkiG9w0BAQEFAAOCAg8AMIICCgKCAgEAxD+yXHFK9796DnvnheJLf5Mc+h5Os8Bu -NgCI/6lixs06EUso0w4Th/YHH3dHdLUVEXbOPpXHHbEP37/J6eJk019goSZnafQM -4KS6X/sYid4GTLVjn/JrFvrMKmXfthMYB2i9afcoc8UI6qbDQ0JR6rsy0H5CRnrk -mWT6fSA2wscKnDniQTlkpM6CpEeywGgD7Ph40hlsOyXFQDv9ORdLnmHaC1bqCedK -UEmDI4RnoKv/aEspYHv+ooaPE0mX/wqkZkPK6PIR30OX7zrNH0wFYZNRtQVn0Y0G -DUcFB1yjaiVQnbxwm8qtvIFWR1EAE8nWXm4ikP7GCOw5g0Idqz+woqDci0utVIh5 -E5IAvQpajEY8nFyWDVDOcgm2D2oJkuWU1hpD186hILr6ZjmIR/3ZrN9DiPXtK68+ -8/VBPzRjOtsgtx/9JYUVrVH1BoBkvRSKf6CcroNMqupsHeeR2EcFpFuLSVLYx039 -d8otyxD8R05uaPeDroCNh4RJ++fyVI/M5PijA6LOWgzJhc+iJRcRA/zflpKOUs2y -W7hl1GUtyK8lwE3BozKcOgZ9kKWYB6Aw3kZNdwnQnnFvt/PK+SZsdd5ZaHErGW6h -rQKAieL9w6Ls9SrsWmGocb++OvizgMMS0wMXlSGgkWNNny44IdQZWjc7TqN8uObe -c/qSZ3lnWx8CAwEAAaNLMEkwMgYDVR0RBCswKYIbcG9ydGFpbmVyLmRhbmV0LmZi -aS5oLWRhLmRlhwSNZEaqhwR/AAABMBMGA1UdJQQMMAoGCCsGAQUFBwMBMA0GCSqG -SIb3DQEBCwUAA4ICAQC+c5hxSzmtS/BlOWHUZQIj9PKFTfMFdSau/rXGpZF1kSfr -tvAjHgRxiQiZWDS3XN5UfA7YD3IDwjAL+WmA4V13K5JMjSUR5WPu0eMq/IGHLVMQ -xaWAbcpRMzORTRfRWz2ecI4Zr4N8p8Rc5WnHzLoszAMXFrHmFAZOihFSOGSBHqxB -ez4udZ0sa+ZErrPx60OdsO4UGGWxxqxlJtMFyJDyLAYyOF7hhapBvFvP0ELG8Ep3 -uI2mbrDd75o9dLNUyiH3M0mcOeldLdvwEvhCaZn2bIwQBwXMMFb9WW5wp0vOF/kA -6uy/0Ix5Fmfx2ZUZrm28fLK0vd1277t7WXsKL9lojTgeP4UnlvahYkBLISZp8Az8 -g1T0kiIeOkqAnmEKBbSyNy/QvssCkA9C2r3P80O5Ry5orPujDHt6UlUyahDisBw2 -Cy3IfhIZbtvkTS6xTx7Ns2WC3euFFgcnmGbYWClJ3SjP8tJkjN6kBNEVC9FKKv58 -ug69HVRedU91iyXEToW93Myicv42AUojUB9NsGmTVbEvRszw03+rduERJjIevUG5 -miMAKMHy/2o7ZE/i8yBcTLnTfXCV/hr4qvBbhCVN/evnxVk8mdsrnaqJUX4ppN2r -doJi9xROeWDpK9UfsxuBpY/GhPUimcMOlsTV9bGAhPmj9qy/ikJrgUlKxwf0+A== ------END CERTIFICATE----- diff --git a/test/terraform/containers.tf b/test/terraform/containers.tf deleted file mode 100644 index a6e381a9169eef45337aaf0b843bc1c89ddebef0..0000000000000000000000000000000000000000 --- a/test/terraform/containers.tf +++ /dev/null @@ -1,56 +0,0 @@ -resource "docker_container" "gosdn" { - depends_on = [ - docker_container.ceos] - name = "contoller-${random_id.server.hex}" - image = docker_image.gosdn.name - restart = "always" - - ports { - internal = 55055 - external = 5555 - } - - env = [ - "GOSDN_DEBUG=", - ] -} - -# create arista container -# namespace is french cheeses -resource "docker_container" "ceos" { - name = "ceos-${random_id.server.hex}" - image = docker_image.ceos.name - restart = "always" - - ports { - internal = 6030 - external = 6030 - } - - networks_advanced { - name = "bridge" - } - - command = ["/sbin/init", - "systemd.setenv=INTFTYPE=eth", - "systemd.setenv=ETBA=4", - "systemd.setenv=SKIP_ZEROTOUCH_BARRIER_IN_SYSDBINIT=1", - "systemd.setenv=CEOS=1", - "systemd.setenv=EOS_PLATFORM=ceoslab", - "systemd.setenv=container=docker", - "MGMT_INTF=eth0"] - - env = ["INTFTYPE=eth", - "ETBA=4", - "SKIP_ZEROTOUCH_BARRIER_IN_SYSDBINIT=1", - "CEOS=1", - "EOS_PLATFORM=ceoslab", - "container=docker", - "MGMT_INTF=eth0"] - privileged = true - - volumes { - host_path = "/usr/local/etc/terraform/arista" - container_path = "/mnt/flash" - } -} diff --git a/test/terraform/images.tf b/test/terraform/images.tf deleted file mode 100644 index 39d234b387f5b14a704a028b6b7f31f39a217218..0000000000000000000000000000000000000000 --- a/test/terraform/images.tf +++ /dev/null @@ -1,7 +0,0 @@ -resource "docker_image" "gosdn" { - name = var.container_tag -} - -resource "docker_image" "ceos" { - name = "registry.code.fbi.h-da.de/cocsn/gosdn/ceos:latest" -} \ No newline at end of file diff --git a/test/terraform/main.tf b/test/terraform/main.tf deleted file mode 100644 index 1f228766349903fbad196dbd3b1df05324f8c70b..0000000000000000000000000000000000000000 --- a/test/terraform/main.tf +++ /dev/null @@ -1,9 +0,0 @@ -terraform { - backend "http" { - } - required_providers { - docker = { - source = "kreuzwerker/docker" - } - } -} diff --git a/test/terraform/networks.tf b/test/terraform/networks.tf deleted file mode 100644 index 2372a310a9d9c239419a706a22ffc809fb05a64a..0000000000000000000000000000000000000000 --- a/test/terraform/networks.tf +++ /dev/null @@ -1,15 +0,0 @@ -resource "docker_network" "danet_legacy" { - name = "legacy-${random_id.server.hex}" - - ipam_config { - subnet = "172.100.100.0/24" - } -} - -resource "docker_network" "danet" { - name = "danet-${random_id.server.hex}" - ipv6 = true - ipam_config { - subnet = "fdfe::/64" - } -} \ No newline at end of file diff --git a/test/terraform/providers.tf b/test/terraform/providers.tf deleted file mode 100644 index 8da71dbfed7b68768fdae4985e95284f27212b9a..0000000000000000000000000000000000000000 --- a/test/terraform/providers.tf +++ /dev/null @@ -1,13 +0,0 @@ -provider "docker" { - host = "tcp://141.100.70.171:2376" - - ca_material = var.tls_ca_cert - cert_material = var.tls_cert - key_material = var.tls_key - - registry_auth { - address = var.integration_registry - username = var.integration_username - password = var.integration_access_token - } -} \ No newline at end of file diff --git a/test/terraform/resources.tf b/test/terraform/resources.tf deleted file mode 100644 index 9659f2d949aaa978b04167a7a62d1a0dcc6752eb..0000000000000000000000000000000000000000 --- a/test/terraform/resources.tf +++ /dev/null @@ -1,3 +0,0 @@ -resource "random_id" "server" { - byte_length = 8 -} diff --git a/test/terraform/variables.tf b/test/terraform/variables.tf deleted file mode 100644 index beacac0158789901783dad04be71645d0cb2a697..0000000000000000000000000000000000000000 --- a/test/terraform/variables.tf +++ /dev/null @@ -1,32 +0,0 @@ -variable "integration_registry" { - type = string -} - -variable "integration_username" { - type = string -} - -variable "integration_access_token" { - type = string -} -variable "tls_key" { - type = string -} - -variable "tls_cert" { - type = string -} - -variable "tls_ca_cert" { - type = string -} - -variable "container_tag" { - type = string - default = "registry.code.fbi.h-da.de/cocsn/gosdn:latest" -} - -variable "network_name" { - type = string - default = "" -} \ No newline at end of file diff --git a/test/req-full-node b/test_resources/req-full-node similarity index 100% rename from test/req-full-node rename to test_resources/req-full-node diff --git a/test/req-interfaces-wildcard b/test_resources/req-interfaces-wildcard similarity index 100% rename from test/req-interfaces-wildcard rename to test_resources/req-interfaces-wildcard diff --git a/test/resp-full-node b/test_resources/resp-full-node similarity index 100% rename from test/resp-full-node rename to test_resources/resp-full-node diff --git a/test/resp-interfaces-wildcard b/test_resources/resp-interfaces-wildcard similarity index 100% rename from test/resp-interfaces-wildcard rename to test_resources/resp-interfaces-wildcard diff --git a/test/targets.go b/test_resources/targets.go similarity index 99% rename from test/targets.go rename to test_resources/targets.go index b9c30787f451dcc445c9a50ff35bbd382b7ab385..7aa3d84999e972ba0706641e048c40aa0c1f31c9 100644 --- a/test/targets.go +++ b/test_resources/targets.go @@ -1,4 +1,4 @@ -package test +package test_resources import ( "code.fbi.h-da.de/cocsn/gosdn/forks/google/gnmi"