Skip to content
Snippets Groups Projects
Verified Commit df610e17 authored by André Sterba's avatar André Sterba
Browse files

Move models in dedicated package

parent 49301a54
Branches
No related tags found
1 merge request!557Draft: Refactor nucleus to remove hard dependencies on structs
Showing
with 106 additions and 31 deletions
......@@ -6,6 +6,7 @@ import (
"code.fbi.h-da.de/danet/gosdn/controller/customerrs"
"code.fbi.h-da.de/danet/gosdn/controller/interfaces/networkelement"
"code.fbi.h-da.de/danet/gosdn/controller/nucleus/database"
"code.fbi.h-da.de/danet/gosdn/controller/nucleus/model"
"code.fbi.h-da.de/danet/gosdn/controller/store"
"go.mongodb.org/mongo-driver/bson"
"go.mongodb.org/mongo-driver/bson/primitive"
......@@ -205,7 +206,7 @@ func (s *DatabaseNetworkElementStore) Update(networkElementToUpdate networkeleme
// Important: You must pass sessCtx as the Context parameter to the operations for them to be executed in the
// transaction.
u, _ := networkElementToUpdate.(*CommonNetworkElement)
u, _ := networkElementToUpdate.(*model.CommonNetworkElement)
u.Metadata.ResourceVersion = u.Metadata.ResourceVersion + 1
update := bson.D{primitive.E{Key: "$set", Value: u}}
......
......@@ -12,6 +12,7 @@ import (
"code.fbi.h-da.de/danet/gosdn/controller/interfaces/plugin"
"code.fbi.h-da.de/danet/gosdn/controller/mocks"
"code.fbi.h-da.de/danet/gosdn/controller/nucleus/model"
"code.fbi.h-da.de/danet/gosdn/controller/nucleus/util/proto"
"code.fbi.h-da.de/danet/gosdn/controller/test"
"code.fbi.h-da.de/danet/gosdn/forks/goarista/gnmi"
......@@ -82,8 +83,8 @@ func targetRunner() {
}
}
func mockTransport(t testing.TB) Gnmi {
return Gnmi{
func mockTransport(t testing.TB) model.Gnmi {
return model.Gnmi{
SetNode: mockPlugin(t).SetNode,
RespChan: make(chan *gpb.SubscribeResponse),
Options: newGnmiTransportOptions(),
......
package nucleus
package model
import (
"context"
......
package nucleus
package model
// import (
// "context"
......
package nucleus
package model
import (
"context"
......
package nucleus
package model
import (
"context"
......@@ -7,7 +7,9 @@ import (
"testing"
"code.fbi.h-da.de/danet/gosdn/controller/interfaces/change"
"code.fbi.h-da.de/danet/gosdn/controller/interfaces/plugin"
"code.fbi.h-da.de/danet/gosdn/controller/nucleus/types"
"code.fbi.h-da.de/danet/gosdn/controller/test"
mnepb "code.fbi.h-da.de/danet/gosdn/api/go/gosdn/networkelement"
tpb "code.fbi.h-da.de/danet/gosdn/api/go/gosdn/transport"
......@@ -16,12 +18,79 @@ import (
"code.fbi.h-da.de/danet/gosdn/forks/goarista/gnmi"
openconfig "code.fbi.h-da.de/danet/gosdn/models/generated/openconfig"
pluginSDK "code.fbi.h-da.de/danet/gosdn/plugins/sdk"
"github.com/google/uuid"
gpb "github.com/openconfig/gnmi/proto/gnmi"
"github.com/openconfig/ygot/ygot"
log "github.com/sirupsen/logrus"
"github.com/stretchr/testify/mock"
pb "google.golang.org/protobuf/proto"
)
// testSetupGnmi bootstraps tests for gnmi transport.
var gnmiConfig *gnmi.Config
var startGnmiTarget chan string
var stopGnmiTarget chan bool
var mockContext = mock.MatchedBy(func(ctx context.Context) bool { return true })
var defaultPluginID = uuid.MustParse("b70c8425-68c7-4d4b-bb5e-5586572bd64b")
var gnmiMessages = map[string]pb.Message{
"../test/proto/cap-resp-arista-ceos": &gpb.CapabilityResponse{},
"../test/proto/req-full-node": &gpb.GetRequest{},
"../test/proto/req-full-node-arista-ceos": &gpb.GetRequest{},
"../test/proto/req-interfaces-arista-ceos": &gpb.GetRequest{},
"../test/proto/req-interfaces-interface-arista-ceos": &gpb.GetRequest{},
"../test/proto/req-interfaces-wildcard": &gpb.GetRequest{},
"../test/proto/resp-full-node": &gpb.GetResponse{},
"../test/proto/resp-full-node-arista-ceos": &gpb.GetResponse{},
"../test/proto/resp-interfaces-arista-ceos": &gpb.GetResponse{},
"../test/proto/resp-interfaces-interface-arista-ceos": &gpb.GetResponse{},
"../test/proto/resp-interfaces-wildcard": &gpb.GetResponse{},
"../test/proto/resp-set-system-config-hostname": &gpb.SetResponse{},
}
func mockTransport(t testing.TB) Gnmi {
return Gnmi{
SetNode: mockPlugin(t).SetNode,
RespChan: make(chan *gpb.SubscribeResponse),
Options: newGnmiTransportOptions(),
client: &mocks.GNMIClient{},
config: gnmiConfig,
}
}
func mockPlugin(t testing.TB) plugin.Plugin {
mockPlugin := &mocks.Plugin{}
mockPlugin.On("ID").Return(defaultPluginID)
mockPlugin.On("Unmarshal", mock.Anything, mock.Anything).Return(nil)
mockPlugin.On("Model", mock.Anything).Return([]byte(
"{\n\t\"Acl\": null,\n\t\"Bfd\": null,\n\t\"Components\": null,\n\t\"Interfaces\": null,\n\t\"Keychains\": null,\n\t\"Lldp\": null,\n\t\"Messages\": null,\n\t\"NetworkInstances\": null,\n\t\"RoutingPolicy\": null,\n\t\"System\": null\n}"),
nil,
)
return mockPlugin
}
func newGnmiTransportOptions() *tpb.TransportOption {
return &tpb.TransportOption{
Address: "localhost:13371",
Username: "test",
Password: "test",
TransportOption: &tpb.TransportOption_GnmiTransportOption{
GnmiTransportOption: &tpb.GnmiTransportOption{},
},
}
}
func targetRunner() {
for {
addr := <-startGnmiTarget
if err := test.GnmiTarget(stopGnmiTarget, addr); err != nil {
log.Fatal(err)
}
}
}
// TestSetupGnmi bootstraps tests for gnmi transport.
func testSetupGnmi() {
// TODO: Set sane defaults
gnmiConfig = &gnmi.Config{
......
package nucleus
package model
import (
"encoding/json"
......
package nucleus
package model
// import (
// "reflect"
......
package nucleus
package model
import (
"encoding/json"
......
package nucleus
package model
//import (
// "testing"
......
package nucleus
package model
import (
"go.mongodb.org/mongo-driver/bson"
......
package nucleus
package model
// import (
// "io"
......
package nucleus
package model
import (
"context"
......
package nucleus
package model
import (
"context"
......
package nucleus
package model
import (
tpb "code.fbi.h-da.de/danet/gosdn/api/go/gosdn/transport"
......
package nucleus
package model
import (
"testing"
......
......@@ -7,6 +7,7 @@ import (
"code.fbi.h-da.de/danet/gosdn/controller/conflict"
"code.fbi.h-da.de/danet/gosdn/controller/interfaces/networkelement"
"code.fbi.h-da.de/danet/gosdn/controller/mocks"
"code.fbi.h-da.de/danet/gosdn/controller/nucleus/model"
"code.fbi.h-da.de/danet/gosdn/controller/store"
"github.com/google/uuid"
"github.com/stretchr/testify/mock"
......@@ -40,7 +41,7 @@ func TestAddNetworkElement(t *testing.T) {
plugin1.On("Model", mock.Anything).Return([]byte{}, nil)
networkElementStore := NewNetworkElementStore()
mne, _ := NewNetworkElement("testNetworkElement", mneID, &trop, defaultPndID, plugin1, conflict.Metadata{})
mne, _ := model.NewNetworkElement("testNetworkElement", mneID, &trop, defaultPndID, plugin1, conflict.Metadata{})
err := networkElementStore.Add(mne)
if err != nil {
......@@ -63,12 +64,12 @@ func TestGetAllNetworkElements(t *testing.T) {
transportOptions := returnBasicTransportOption()
mne1, err := NewNetworkElement("testname", mneID1, &transportOptions, defaultPndID, plugin, conflict.Metadata{})
mne1, err := model.NewNetworkElement("testname", mneID1, &transportOptions, defaultPndID, plugin, conflict.Metadata{})
if err != nil {
t.Error(err)
}
mne2, err := NewNetworkElement("testname2", mneID2, &transportOptions, defaultPndID, plugin, conflict.Metadata{})
mne2, err := model.NewNetworkElement("testname2", mneID2, &transportOptions, defaultPndID, plugin, conflict.Metadata{})
if err != nil {
t.Error(err)
}
......@@ -117,12 +118,12 @@ func TestGetNetworkElement(t *testing.T) {
trop := returnBasicTransportOption()
mne1, err := NewNetworkElement("testname", mneID1, &trop, defaultPndID, plugin, conflict.Metadata{})
mne1, err := model.NewNetworkElement("testname", mneID1, &trop, defaultPndID, plugin, conflict.Metadata{})
if err != nil {
t.Error(err)
}
mne2, err := NewNetworkElement("testname2", mneID2, &trop, defaultPndID, plugin, conflict.Metadata{})
mne2, err := model.NewNetworkElement("testname2", mneID2, &trop, defaultPndID, plugin, conflict.Metadata{})
if err != nil {
t.Error(err)
}
......@@ -164,14 +165,14 @@ func TestUpdateNetworkElement(t *testing.T) {
plugin1.On("Model", mock.Anything).Return([]byte{}, nil)
networkElementStore := NewNetworkElementStore()
mne, _ := NewNetworkElement("testNetworkElement", mneID, &trop, defaultPndID, plugin1, conflict.Metadata{})
mne, _ := model.NewNetworkElement("testNetworkElement", mneID, &trop, defaultPndID, plugin1, conflict.Metadata{})
err := networkElementStore.Add(mne)
if err != nil {
t.Error(err)
}
mne, _ = NewNetworkElement(updatedNetworkElementName, mneID, &trop, defaultPndID, plugin1, conflict.Metadata{})
mne, _ = model.NewNetworkElement(updatedNetworkElementName, mneID, &trop, defaultPndID, plugin1, conflict.Metadata{})
err = networkElementStore.Update(mne)
if err != nil {
......@@ -206,12 +207,12 @@ func TestDeleteNetworkElement(t *testing.T) {
trop := returnBasicTransportOption()
mne1, err := NewNetworkElement("testname", mneID1, &trop, defaultPndID, plugin, conflict.Metadata{})
mne1, err := model.NewNetworkElement("testname", mneID1, &trop, defaultPndID, plugin, conflict.Metadata{})
if err != nil {
t.Error(err)
}
mne2, err := NewNetworkElement("testname2", mneID2, &trop, defaultPndID, plugin, conflict.Metadata{})
mne2, err := model.NewNetworkElement("testname2", mneID2, &trop, defaultPndID, plugin, conflict.Metadata{})
if err != nil {
t.Error(err)
}
......
......@@ -8,6 +8,7 @@ import (
eventInterfaces "code.fbi.h-da.de/danet/gosdn/controller/interfaces/event"
"code.fbi.h-da.de/danet/gosdn/controller/interfaces/networkelement"
"code.fbi.h-da.de/danet/gosdn/controller/interfaces/plugin"
"code.fbi.h-da.de/danet/gosdn/controller/nucleus/model"
"code.fbi.h-da.de/danet/gosdn/controller/store"
"github.com/google/uuid"
"github.com/openconfig/gnmi/proto/gnmi"
......@@ -216,7 +217,7 @@ func (s *NetworkElementService) createNetworkElementFromStore(loadedNetworkEleme
return nil, err
}
mne, err := NewNetworkElement(
mne, err := model.NewNetworkElement(
loadedNetworkElement.Name,
uuid.MustParse(loadedNetworkElement.ID),
&tpb.TransportOption{
......
......@@ -8,6 +8,7 @@ import (
"code.fbi.h-da.de/danet/gosdn/controller/interfaces/networkelement"
"code.fbi.h-da.de/danet/gosdn/controller/interfaces/plugin"
"code.fbi.h-da.de/danet/gosdn/controller/mocks"
"code.fbi.h-da.de/danet/gosdn/controller/nucleus/model"
"code.fbi.h-da.de/danet/gosdn/controller/store"
"github.com/google/uuid"
"github.com/stretchr/testify/mock"
......@@ -15,7 +16,7 @@ import (
)
func getMockNetworkElement(mneID uuid.UUID, plugin plugin.Plugin) (networkelement.NetworkElement, error) {
return &CommonNetworkElement{
return &model.CommonNetworkElement{
UUID: mneID,
Plugin: plugin,
transport: &mocks.Transport{},
......
......@@ -16,6 +16,7 @@ import (
"code.fbi.h-da.de/danet/gosdn/controller/event"
eventInterfaces "code.fbi.h-da.de/danet/gosdn/controller/interfaces/event"
"code.fbi.h-da.de/danet/gosdn/controller/interfaces/plugin"
"code.fbi.h-da.de/danet/gosdn/controller/nucleus/model"
"code.fbi.h-da.de/danet/gosdn/controller/nucleus/util"
"code.fbi.h-da.de/danet/gosdn/controller/store"
"github.com/google/uuid"
......@@ -119,7 +120,7 @@ func (s *PluginService) createPluginFromStore(loadedPlugin plugin.LoadedPlugin)
plugin, err := s.createPluginFromStoreFn(loadedPlugin)
if err != nil {
if errors.Is(err, hcplugin.ErrProcessNotFound) {
plugin, err = NewPlugin(uuid.MustParse(loadedPlugin.ID), loadedPlugin.ExecPath)
plugin, err = model.NewPlugin(uuid.MustParse(loadedPlugin.ID), loadedPlugin.ExecPath)
if err != nil {
return nil, err
}
......@@ -162,7 +163,7 @@ func (s *PluginService) RequestPlugin(requestID uuid.UUID) (plugin.Plugin, error
}
}
plugin, err := NewPlugin(uuid.New(), path)
plugin, err := model.NewPlugin(uuid.New(), path)
if err != nil {
return nil, err
}
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment