Skip to content
Snippets Groups Projects
path_traversal.go 786 B
Newer Older
  • Learn to ignore specific revisions
  • Manuel Kieweg's avatar
    Manuel Kieweg committed
    package main
    
    import (
    
    	schema "code.fbi.h-da.de/cocsn/yang-models/generated/arista"
    
    Manuel Kieweg's avatar
    Manuel Kieweg committed
    	"fmt"
    	"github.com/openconfig/goyang/pkg/yang"
    )
    
    type PathElement struct {
    	Children []*PathElement
    	Name     string
    }
    
    func main() {
    
    	tree := schema.SchemaTree
    
    Manuel Kieweg's avatar
    Manuel Kieweg committed
    	paths := make(map[string]*PathElement)
    
    	for k,v := range tree {
    
    		if v.Parent != nil {
    			if v.Parent.Name == "device" {
    				paths[k] = processEntry(v)
    			}
    
    Manuel Kieweg's avatar
    Manuel Kieweg committed
    		}
    	}
    	fmt.Println("stop")
    }
    
    func processEntry(e *yang.Entry) *PathElement {
    	if e.Dir != nil {
    		elem := &PathElement{
    			Children: make([]*PathElement, len(e.Dir)),
    			Name:     e.Name,
    		}
    		for _,v := range e.Dir {
    			child :=  processEntry(v)
    			elem.Children = append(elem.Children, child)
    		}
    
    Manuel Kieweg's avatar
    Manuel Kieweg committed
    	}
    	leaf := &PathElement{
    		Name:     e.Name,
    	}
    	return leaf
    }