diff --git a/cmd/path-traversal/path_traversal.go b/cmd/path-traversal/path_traversal.go new file mode 100644 index 0000000000000000000000000000000000000000..9952b95896c93721134b7ea829fcf60693140fba --- /dev/null +++ b/cmd/path-traversal/path_traversal.go @@ -0,0 +1,62 @@ +package main + +import ( + schema "code.fbi.h-da.de/cocsn/yang-models/generated/arista" + "fmt" + "github.com/openconfig/goyang/pkg/yang" +) + +type PathElement struct { + Children []*PathElement + Name string +} + +func (p *PathElement)Print() { + printPE(0, p) +} + +func printPE(indent int, pe *PathElement) { + for i := 0; i < indent; i++ { + fmt.Print(" ") + } + fmt.Println(pe.Name) + if len(pe.Children) > 0 { + for _,p := range pe.Children { + printPE(indent+1, p) + } + } +} + +func main() { + tree := schema.SchemaTree + paths := make(map[string]*PathElement) + + for k,v := range tree { + if v.Parent != nil { + if v.Parent.Name == "device" { + pathElement := processEntry(v) + pathElement.Print() + paths[k] = pathElement + } + } + } +} + +func processEntry(e *yang.Entry) *PathElement { + if e.Dir != nil { + elem := &PathElement{ + Children: make([]*PathElement, len(e.Dir)), + Name: e.Name, + } + i := 0 + for _,v := range e.Dir { + elem.Children[i] = processEntry(v) + i++ + } + return elem + } + leaf := &PathElement{ + Name: e.Name, + } + return leaf +} \ No newline at end of file diff --git a/go.mod b/go.mod index 52dff3736e40065e46ff398d923299ce67d64ad3..c29f903c1b5ee98c884c1d3b33115d8ca1680a3b 100644 --- a/go.mod +++ b/go.mod @@ -4,7 +4,7 @@ go 1.14 require ( code.fbi.h-da.de/cocsn/swagger/apis v0.0.0-20200924152423-61030cab7b88 - code.fbi.h-da.de/cocsn/yang-models v0.0.3 + code.fbi.h-da.de/cocsn/yang-models v0.0.4 github.com/aristanetworks/goarista v0.0.0-20201120222254-94a892eb0c6a github.com/gdamore/tcell/v2 v2.0.1-0.20201017141208-acf90d56d591 github.com/go-openapi/runtime v0.19.22 @@ -14,6 +14,7 @@ require ( github.com/google/uuid v1.1.2 github.com/neo4j/neo4j-go-driver v1.8.3 github.com/openconfig/gnmi v0.0.0-20200617225440-d2b4e6a45802 + github.com/openconfig/goyang v0.2.2 github.com/openconfig/reference v0.0.0-20190727015836-8dfd928c9696 github.com/openconfig/ygot v0.10.0 github.com/rivo/tview v0.0.0-20201018122409-d551c850a743 diff --git a/go.sum b/go.sum index 38b74c2cbf1df0528fe5d520168c3857d0301cb3..62901d0ef3b8508cd5e77694c0ea3c3d58b888c2 100644 --- a/go.sum +++ b/go.sum @@ -14,6 +14,8 @@ code.fbi.h-da.de/cocsn/swagger/apis v0.0.0-20200924152423-61030cab7b88 h1:cNqY3W code.fbi.h-da.de/cocsn/swagger/apis v0.0.0-20200924152423-61030cab7b88/go.mod h1:3jDZAOmepPl3kiukNGvPFkJEzgGczgrC3zJ2jcqVFSs= code.fbi.h-da.de/cocsn/yang-models v0.0.3 h1:VTVHDTyJiC2TeTAZyxJ1ZFqRwo6H7UeY7PXfp9GXYEY= code.fbi.h-da.de/cocsn/yang-models v0.0.3/go.mod h1:X40pn/xQ1lTNbFFN9QFK99oSNaeN/Rg3MSpdhWc3IS8= +code.fbi.h-da.de/cocsn/yang-models v0.0.4 h1:y/Ph5CaD2NJDPjoOuS59iKrMYf9bvpg2/hefC2RG6E4= +code.fbi.h-da.de/cocsn/yang-models v0.0.4/go.mod h1:7MnNmAQ9o84BpUepcaV6RB1mBGCNyXVJcdbKUl6rK0g= dmitri.shuralyov.com/gpu/mtl v0.0.0-20190408044501-666a987793e9/go.mod h1:H6x//7gZCb22OMCxBHrMx7a5I7Hp++hsVxbQ4BYO7hU= github.com/BurntSushi/toml v0.3.1 h1:WXkYYl6Yr3qBf1K79EBnL4mak0OimBfB0XUf9Vl28OQ= github.com/BurntSushi/toml v0.3.1/go.mod h1:xHWCNGjB5oqiDr8zfno3MHue2Ht5sIBksp03qcyfWMU=