diff --git a/cmd/gnmi/gnmi.go b/cmd/gnmi/gnmi.go index 8a6478c4d06b1317cb9a6adefa97990c7c06bf91..22f9798c77a6050aaef8c1e9900a2604dd97053b 100644 --- a/cmd/gnmi/gnmi.go +++ b/cmd/gnmi/gnmi.go @@ -33,8 +33,9 @@ func main() { ctx := gnmi.NewContext(context.Background(), cfg) ctx = context.WithValue(ctx, "config", cfg) - g := nucleus.Gnmi{} - resp, err := g.Capabilities(ctx) + paths := []string{"interfaces/interface"} + req, err := gnmi.NewGetRequest(gnmi.SplitPaths(paths), "") + resp, err := nucleus.GetWithRequest(ctx, req) if err != nil { log.Fatal(err) } diff --git a/forks/goarista b/forks/goarista index 4e6fdcf7f22110ef30e57869c1f0ddac8713b54f..09b37ed24462f5dfc3c5e47abecd790c5540f327 160000 --- a/forks/goarista +++ b/forks/goarista @@ -1 +1 @@ -Subproject commit 4e6fdcf7f22110ef30e57869c1f0ddac8713b54f +Subproject commit 09b37ed24462f5dfc3c5e47abecd790c5540f327 diff --git a/go.mod b/go.mod index b9c41ce1eae7c8e7230ea44f7c82589d99be996d..6550a89466d27a6bf2495a4502a8751670bd4692 100644 --- a/go.mod +++ b/go.mod @@ -2,13 +2,10 @@ module code.fbi.h-da.de/cocsn/gosdn go 1.14 -replace github.com/aristanetworks/goarista/netns => /Users/mk/go/src/github.com/aristanetworks/goarista/netns - require ( code.fbi.h-da.de/cocsn/swagger/apis v0.0.0-20200924152423-61030cab7b88 - code.fbi.h-da.de/cocsn/yang-modules/generated/tapi v0.0.0-20201116134549-765aa1790752 + code.fbi.h-da.de/cocsn/yang-models v0.0.3 github.com/BurntSushi/toml v0.3.1 - github.com/aristanetworks/fsnotify v1.4.2 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 @@ -20,13 +17,11 @@ require ( github.com/onsi/ginkgo v1.13.0 // indirect github.com/openconfig/gnmi v0.0.0-20200617225440-d2b4e6a45802 github.com/openconfig/reference v0.0.0-20190727015836-8dfd928c9696 - github.com/openconfig/ygot v0.8.7 + github.com/openconfig/ygot v0.8.11 github.com/rivo/tview v0.0.0-20201018122409-d551c850a743 github.com/sirupsen/logrus v1.4.2 github.com/tidwall/gjson v1.6.3 golang.org/x/net v0.0.0-20200904194848-62affa334b73 - golang.org/x/sync v0.0.0-20190911185100-cd5d95a43a6e // indirect - golang.org/x/sys v0.0.0-20201017003518-b09fb700fbb7 google.golang.org/grpc v1.29.1 google.golang.org/protobuf v1.25.0 ) diff --git a/go.sum b/go.sum index f7c921521a37d8c204016263273820c29aa25189..a737407855092e369889fc7f59b62f2296a7f762 100644 --- a/go.sum +++ b/go.sum @@ -1,8 +1,8 @@ cloud.google.com/go v0.26.0/go.mod h1:aQUYkXzVsufM+DwF1aE+0xfcU+56JwCaLick0ClmMTw= code.fbi.h-da.de/cocsn/swagger/apis v0.0.0-20200924152423-61030cab7b88 h1:cNqY3WEh+CX8+esxIwWU/uD7hRC5mPvuJmXzB07OeuA= code.fbi.h-da.de/cocsn/swagger/apis v0.0.0-20200924152423-61030cab7b88/go.mod h1:3jDZAOmepPl3kiukNGvPFkJEzgGczgrC3zJ2jcqVFSs= -code.fbi.h-da.de/cocsn/yang-modules/generated/tapi v0.0.0-20201116134549-765aa1790752 h1:hCeie9cCBt0gyETD0EAINuWqpEokf0ulP1Rv9F+rXB0= -code.fbi.h-da.de/cocsn/yang-modules/generated/tapi v0.0.0-20201116134549-765aa1790752/go.mod h1:EhCu5gVeMKHpjwoV5g5eycc7WcfU98jkPswLDRHQX5w= +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= github.com/BurntSushi/toml v0.3.1 h1:WXkYYl6Yr3qBf1K79EBnL4mak0OimBfB0XUf9Vl28OQ= github.com/BurntSushi/toml v0.3.1/go.mod h1:xHWCNGjB5oqiDr8zfno3MHue2Ht5sIBksp03qcyfWMU= github.com/PuerkitoBio/purell v1.1.0/go.mod h1:c11w/QuzBsJSee3cPx9rAFu61PvFxuPbtSwDGJws/X0= @@ -287,14 +287,13 @@ github.com/openconfig/gnmi v0.0.0-20200508230933-d19cebf5e7be/go.mod h1:M/EcuapN github.com/openconfig/gnmi v0.0.0-20200617225440-d2b4e6a45802 h1:WXFwJlWOJINlwlyAZuNo4GdYZS6qPX36+rRUncLmN8Q= github.com/openconfig/gnmi v0.0.0-20200617225440-d2b4e6a45802/go.mod h1:M/EcuapNQgvzxo1DDXHK4tx3QpYM/uG4l591v33jG2A= github.com/openconfig/goyang v0.0.0-20200115183954-d0a48929f0ea/go.mod h1:dhXaV0JgHJzdrHi2l+w0fZrwArtXL7jEFoiqLEdmkvU= -github.com/openconfig/goyang v0.0.0-20200616001533-c0659aea65dd/go.mod h1:vX61x01Q46AzbZUzG617vWqh/cB+aisc+RrNkXRd3W8= -github.com/openconfig/goyang v0.0.0-20200917201611-633eccb6fa97 h1:TaCuNSX/fiTuky8ouzC+JaCJN+OSOpjtYlLrn/uXxxE= -github.com/openconfig/goyang v0.0.0-20200917201611-633eccb6fa97/go.mod h1:vX61x01Q46AzbZUzG617vWqh/cB+aisc+RrNkXRd3W8= +github.com/openconfig/goyang v0.2.1 h1:TaADsLGzULGQL8xTmvLjmXqZ/J1F73dMzURDqrv9cLs= +github.com/openconfig/goyang v0.2.1/go.mod h1:vX61x01Q46AzbZUzG617vWqh/cB+aisc+RrNkXRd3W8= github.com/openconfig/reference v0.0.0-20190727015836-8dfd928c9696 h1:yHCGAHg2zMaW8olLrqEt3SAHGcEx2aJPEQWMRCyravY= github.com/openconfig/reference v0.0.0-20190727015836-8dfd928c9696/go.mod h1:ym2A+zigScwkSEb/cVQB0/ZMpU3rqiH6X7WRRsxgOGw= github.com/openconfig/ygot v0.6.0/go.mod h1:o30svNf7O0xK+R35tlx95odkDmZWS9JyWWQSmIhqwAs= -github.com/openconfig/ygot v0.8.7 h1:BKErV6vM15YGM1+XHDuLAQ938dYahzSgwlt9BIGFrdY= -github.com/openconfig/ygot v0.8.7/go.mod h1:AqXe0HNEITTcmcYkr+yzDMY8ofitImUdfZV4IgRsJWU= +github.com/openconfig/ygot v0.8.11 h1:s9BtpSeqChokRQHhTatv2xmwkTLHPz0ghPnVpgmz8WU= +github.com/openconfig/ygot v0.8.11/go.mod h1:Qh/F0ycMLXJlZn4cR+5iuefEMthLggO8KBq8wjXYPTY= github.com/pborman/getopt v0.0.0-20190409184431-ee0cd42419d3/go.mod h1:85jBQOZwpVEaDAr341tbn15RS4fCAsIst0qp7i8ex1o= github.com/pborman/uuid v1.2.0/go.mod h1:X/NO0urCmaxf9VXbdlT7C2Yzkj2IKimNn4k+gtPdI/k= github.com/pelletier/go-toml v1.4.0/go.mod h1:PN7xzY2wHTK0K9p34ErDQMlFxa51Fk0OUruD3k1mMwo= diff --git a/nucleus/device.go b/nucleus/device.go index 8e7f875f8dddf58b7f73d3cf36c482af0efba427..587678d3dc0a67407e55413dbe9ede57f10aeda7 100644 --- a/nucleus/device.go +++ b/nucleus/device.go @@ -1,17 +1,50 @@ package nucleus import ( + opb "code.fbi.h-da.de/cocsn/gosdn/api/proto/openconfig/openconfig_interfaces" + "code.fbi.h-da.de/cocsn/yang-models/generated/openconfig" "github.com/google/uuid" + "github.com/openconfig/gnmi/proto/gnmi" "github.com/openconfig/ygot/ygot" ) type Device struct { - device ygot.GoStruct + Device ygot.GoStruct SBI SouthboundInterface Config DeviceConfig Transport Transport } +// Add adds a property to a device. Please +// use better naming in further develop +// Also all that Interface Call specific logic belongs to SBI! +func (d Device) Add(resp interface{}) { + r := resp.(*gnmi.GetResponse) + device := d.Device.(*openconfig.Device) + // It's possible that the gnmi response already is too Arista-fied to be used w/YGOT + ifs := opb.Interfaces{ + Interface: []*opb.Interfaces_InterfaceKey{ + { + Interface: &opb.Interfaces_Interface{ + Config: &opb.Interfaces_Interface_Config{ + Description: nil, + Enabled: nil, + LoopbackMode: nil, + Mtu: nil, + Name: nil, + Type: 0, + }, + HoldTime: nil, + State: nil, + Subinterfaces: nil, + }, + }, + }, + } + device.Interfaces = ifs + d.Device = device +} + type DeviceConfig struct { Uuid uuid.UUID Address string diff --git a/nucleus/southbound.go b/nucleus/southbound.go index e8b298154ef7de960a31cd1a3401349b6a64e30f..69d37e843686e00bb482e0052ed3e717e0d23286 100644 --- a/nucleus/southbound.go +++ b/nucleus/southbound.go @@ -9,29 +9,18 @@ type SouthboundInterface interface { type Tapi struct { } -func (t *Tapi) Get(interface{}) (interface{}, error) { - return nil, nil -} -func (t *Tapi) Set(interface{}) error { - return nil -} -func (t *Tapi) Subscribe(interface{}) (interface{}, error) { - return nil, nil -} - type OpenConfig struct { + transport Transport } func (oc *OpenConfig) GetSBIString() string { return "openconfig" } -func (oc *OpenConfig) Get(interface{}) (interface{}, error) { - return nil, nil -} -func (oc *OpenConfig) Set(interface{}) error { - return nil -} -func (oc *OpenConfig) Subscribe(interface{}) (interface{}, error) { - return nil, nil +func (oc *OpenConfig) OpenconfigInterfaces(device Device) { + resp, err := oc.transport.Get(nil, nil...) + if err != nil { + + } + device.Add(resp) } diff --git a/plugins/ciena/mcp.go b/plugins/ciena/mcp.go index 99d588218bd9b668da3a87898ee551ea66a4562c..2c51eed50c44cbe1cd8a4c7c888a22240227beaa 100644 --- a/plugins/ciena/mcp.go +++ b/plugins/ciena/mcp.go @@ -5,7 +5,7 @@ import ( "code.fbi.h-da.de/cocsn/gosdn/database" "code.fbi.h-da.de/cocsn/gosdn/nucleus" apiclient "code.fbi.h-da.de/cocsn/swagger/apis/mcp/client" - "code.fbi.h-da.de/cocsn/yang-modules/generated/tapi" + "code.fbi.h-da.de/cocsn/yang-models/generated/tapi" "crypto/tls" "encoding/json" "github.com/go-openapi/runtime"