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
No related branches found
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