Skip to content
Snippets Groups Projects
Commit e71ea10c authored by Malte Bauch's avatar Malte Bauch
Browse files

WIP: linter pleasing

parent dfe256e9
No related branches found
No related tags found
1 merge request!401Change the current gosdn plugin implementation from Go's internal plugin system to hashicorp's go-plugins
Pipeline #135486 failed
......@@ -178,7 +178,7 @@ func (d *CsbiNetworkElement) GetModel() ([]byte, error) {
// GetModelAsFilteredCopy returns the ygot representation of the Network
// Element, but as copy with read-only fields removed.
// TODO: extend plugin to provide a filtered copy of the model
// TODO: extend plugin to provide a filtered copy of the model.
func (n *CsbiNetworkElement) GetModelAsFilteredCopy() (ygot.GoStruct, error) {
//filteredModelCopy, err := createFilteredCopy(n)
//if err != nil {
......@@ -345,12 +345,13 @@ func (d *CommonNetworkElement) GetModelAsString() (string, error) {
return string(byteModel), err
}
func (n *CommonNetworkElement) getYgotEmitJSONConfig() *ygot.EmitJSONConfig {
return &ygot.EmitJSONConfig{
Format: ygot.RFC7951,
Indent: "",
SkipValidation: true,
RFC7951Config: &ygot.RFC7951JSONConfig{
AppendModuleName: true,
}}
}
//TODO: check if this can be removed
//func (n *CommonNetworkElement) getYgotEmitJSONConfig() *ygot.EmitJSONConfig {
// return &ygot.EmitJSONConfig{
// Format: ygot.RFC7951,
// Indent: "",
// SkipValidation: true,
// RFC7951Config: &ygot.RFC7951JSONConfig{
// AppendModuleName: true,
// }}
//}
......@@ -15,7 +15,6 @@ import (
"code.fbi.h-da.de/danet/gosdn/controller/nucleus/types"
"code.fbi.h-da.de/danet/gosdn/controller/nucleus/util"
"go.mongodb.org/mongo-driver/bson"
"golang.org/x/sync/errgroup"
cpb "code.fbi.h-da.de/danet/gosdn/api/go/gosdn/csbi"
rpb "code.fbi.h-da.de/danet/gosdn/api/go/gosdn/plugin-registry"
......@@ -462,7 +461,6 @@ func (pnd *pndImplementation) ensureIntendedConfigurationIsAppliedOnNetworkEleme
// ChangeMNE creates a change from the provided Operation, path and value.
// The Change is Pending and times out after the specified timeout period.
func (pnd *pndImplementation) ChangeMNE(duid uuid.UUID, operation ppb.ApiOperation, path string, value ...string) (uuid.UUID, error) {
mne, err := pnd.networkElementService.Get(store.Query{
ID: duid,
})
......@@ -613,130 +611,132 @@ func (pnd *pndImplementation) handleCsbiDeletion(mne networkelement.NetworkEleme
return nil
}
func (pnd *pndImplementation) handleCsbiEnrolment(name string, opt *tpb.TransportOption) (uuid.UUID, error) {
g := new(errgroup.Group)
ctx, cancel := context.WithTimeout(context.Background(), time.Minute*5)
defer cancel()
req := &cpb.CreateRequest{
Timestamp: time.Now().UnixNano(),
TransportOption: []*tpb.TransportOption{opt},
}
resp, err := pnd.csbiClient.Create(ctx, req)
if err != nil {
return uuid.Nil, err
}
// the slice only contains one deployment
var mneID uuid.UUID
for _, deployment := range resp.Deployments {
dCopy := deployment
g.Go(func() error {
mneID, err = pnd.createCsbiNetworkElement(ctx, name, dCopy, opt)
if err != nil {
return err
}
return nil
})
}
err = g.Wait()
if err != nil {
return uuid.Nil, err
}
return mneID, nil
}
//TODO: can probably be removed
//func (pnd *pndImplementation) handleCsbiEnrolment(name string, opt *tpb.TransportOption) (uuid.UUID, error) {
// g := new(errgroup.Group)
// ctx, cancel := context.WithTimeout(context.Background(), time.Minute*5)
// defer cancel()
// req := &cpb.CreateRequest{
// Timestamp: time.Now().UnixNano(),
// TransportOption: []*tpb.TransportOption{opt},
// }
// resp, err := pnd.csbiClient.Create(ctx, req)
// if err != nil {
// return uuid.Nil, err
// }
// // the slice only contains one deployment
// var mneID uuid.UUID
// for _, deployment := range resp.Deployments {
// dCopy := deployment
// g.Go(func() error {
// mneID, err = pnd.createCsbiNetworkElement(ctx, name, dCopy, opt)
// if err != nil {
// return err
// }
// return nil
// })
// }
// err = g.Wait()
// if err != nil {
// return uuid.Nil, err
// }
//
// return mneID, nil
//}
//TODO: can probably be removed
// createCsbiNetworkElement is a helper method for cSBI network element creation. The method
// waits for a SYN (which indicates that the cSBI is running and addressable)
// of the commissioned cSBI and creates the network element within the controller.
func (pnd *pndImplementation) createCsbiNetworkElement(
ctx context.Context,
name string,
deployment *cpb.Deployment,
opt *tpb.TransportOption,
) (uuid.UUID, error) {
//id, err := uuid.Parse(deployment.Id)
//if err != nil {
// return uuid.Nil, err
//}
//ch := make(chan networkelement.Details, 1)
//pnd.callback(id, ch)
//defer pnd.callback(id, nil)
//defer close(ch)
//tickatus := time.NewTicker(time.Minute * 1)
//defer tickatus.Stop()
//select {
//case <-tickatus.C:
// log.WithFields(log.Fields{
// "id": deployment.Id,
// "err": ctx.Err(),
// }).Error("csbi handshake timed out")
//case mneDetails := <-ch:
// log.Infof("syn from csbi %v", mneDetails.ID)
// id, err := uuid.Parse(mneDetails.ID)
// if err != nil {
// return uuid.Nil, err
// }
// csbiTransportOptions := &tpb.TransportOption{
// Address: mneDetails.Address,
// Username: opt.Username,
// Password: opt.Password,
// Tls: opt.Tls,
// Type: opt.Type,
// TransportOption: opt.TransportOption,
// }
// log.WithField("transport option", csbiTransportOptions).Debug("gosdn gnmi transport options")
//
// files := []string{util.GoStructName, util.ManifestFileName, util.GoStructAdditionsName}
// csbiID := uuid.New()
// ctx, cancel := context.WithTimeout(context.Background(), time.Minute*10)
// defer cancel()
//
// g := new(errgroup.Group)
// for _, f := range files {
// req := &cpb.GetPayloadRequest{
// Timestamp: time.Now().UnixNano(),
// Did: deployment.Id,
// File: f,
// }
// g.Go(func() error {
// gClient, err := pnd.csbiClient.GetFile(ctx, req)
// if err != nil {
// return err
// }
// err = saveStreamToFile(gClient, req.GetFile(), csbiID)
// if err != nil {
// return err
// }
// return nil
// })
// }
//
// err = g.Wait()
// if err != nil {
// return uuid.Nil, err
// }
//
// csbi, err := NewSBI(spb.Type_TYPE_CONTAINERISED, csbiID)
// if err != nil {
// return uuid.Nil, err
// }
// err = pnd.southboundService.Add(csbi)
// if err != nil {
// return uuid.Nil, err
// }
// mne, err := NewNetworkElement(name, uuid.Nil, csbiTransportOptions, csbi, conflict.Metadata{ResourceVersion: 0})
// if err != nil {
// return uuid.Nil, err
// }
// mne.(*CsbiNetworkElement).UUID = id
// ch <- networkelement.Details{TransportOption: opt}
// if err := pnd.networkElementService.Add(mne); err != nil {
// return uuid.Nil, err
// }
// return id, nil
//}
return uuid.Nil, nil
}
//func (pnd *pndImplementation) createCsbiNetworkElement(
// ctx context.Context,
// name string,
// deployment *cpb.Deployment,
// opt *tpb.TransportOption,
//) (uuid.UUID, error) {
// //id, err := uuid.Parse(deployment.Id)
// //if err != nil {
// // return uuid.Nil, err
// //}
// //ch := make(chan networkelement.Details, 1)
// //pnd.callback(id, ch)
// //defer pnd.callback(id, nil)
// //defer close(ch)
// //tickatus := time.NewTicker(time.Minute * 1)
// //defer tickatus.Stop()
// //select {
// //case <-tickatus.C:
// // log.WithFields(log.Fields{
// // "id": deployment.Id,
// // "err": ctx.Err(),
// // }).Error("csbi handshake timed out")
// //case mneDetails := <-ch:
// // log.Infof("syn from csbi %v", mneDetails.ID)
// // id, err := uuid.Parse(mneDetails.ID)
// // if err != nil {
// // return uuid.Nil, err
// // }
// // csbiTransportOptions := &tpb.TransportOption{
// // Address: mneDetails.Address,
// // Username: opt.Username,
// // Password: opt.Password,
// // Tls: opt.Tls,
// // Type: opt.Type,
// // TransportOption: opt.TransportOption,
// // }
// // log.WithField("transport option", csbiTransportOptions).Debug("gosdn gnmi transport options")
// //
// // files := []string{util.GoStructName, util.ManifestFileName, util.GoStructAdditionsName}
// // csbiID := uuid.New()
// // ctx, cancel := context.WithTimeout(context.Background(), time.Minute*10)
// // defer cancel()
// //
// // g := new(errgroup.Group)
// // for _, f := range files {
// // req := &cpb.GetPayloadRequest{
// // Timestamp: time.Now().UnixNano(),
// // Did: deployment.Id,
// // File: f,
// // }
// // g.Go(func() error {
// // gClient, err := pnd.csbiClient.GetFile(ctx, req)
// // if err != nil {
// // return err
// // }
// // err = saveStreamToFile(gClient, req.GetFile(), csbiID)
// // if err != nil {
// // return err
// // }
// // return nil
// // })
// // }
// //
// // err = g.Wait()
// // if err != nil {
// // return uuid.Nil, err
// // }
// //
// // csbi, err := NewSBI(spb.Type_TYPE_CONTAINERISED, csbiID)
// // if err != nil {
// // return uuid.Nil, err
// // }
// // err = pnd.southboundService.Add(csbi)
// // if err != nil {
// // return uuid.Nil, err
// // }
// // mne, err := NewNetworkElement(name, uuid.Nil, csbiTransportOptions, csbi, conflict.Metadata{ResourceVersion: 0})
// // if err != nil {
// // return uuid.Nil, err
// // }
// // mne.(*CsbiNetworkElement).UUID = id
// // ch <- networkelement.Details{TransportOption: opt}
// // if err := pnd.networkElementService.Add(mne); err != nil {
// // return uuid.Nil, err
// // }
// // return id, nil
// //}
// return uuid.Nil, nil
//}
// TODO: update
// requestPlugin request a plugin from the plugin-registry.
......
......@@ -526,7 +526,6 @@ func Test_pndImplementation_RequestAll(t *testing.T) {
//}
func Test_pndImplementation_GetNetworkElement(t *testing.T) {
pnd := newPnd()
mne := mockNetworkElement()
......
......@@ -165,7 +165,6 @@ func (m *DeviceModelServer) ValidateChange(
func (m *DeviceModelServer) SchemaTreeGzip(
req *pb.SchemaTreeGzipRequest,
stream pb.Plugin_SchemaTreeGzipServer) error {
buffer := make([]byte, int(MB))
schema, err := m.Impl.SchemaTreeGzip()
if err != nil {
......
......@@ -64,7 +64,6 @@ func (s *Server) Get(ctx context.Context, req *pb.GetRequest) (*pb.GetResponse,
}
func (s *Server) GetAll(ctx context.Context, req *pb.GetAllRequest) (*pb.GetResponse, error) {
pluginResultSlice := make([]*pb.Plugin, 0)
for _, plugin := range s.registry.Plugins {
pluginResultSlice = append(pluginResultSlice, pluginConverter(plugin))
......@@ -121,6 +120,7 @@ func (s *Server) Download(req *pb.GetDownloadRequest, stream pb.PluginRegistrySe
return nil
}
// Delete removes a plugin from the plugin registry.
func (s *Server) Delete(ctx context.Context, req *pb.DeleteRequest) (*pb.DeleteResponse, error) {
return nil, nil
return nil, status.Error(codes.Unimplemented, "The delete method is currently not implemented.")
}
......@@ -29,7 +29,6 @@ func NewDeviceModel(generatedSchemaFn func() (*ytypes.Schema, error), generatedU
schema, err := generatedSchemaFn()
if err != nil {
return nil, err
}
validatedCopy, err := createValidatedCopy(schema.Root)
......@@ -177,8 +176,12 @@ func (d *DeviceModel) Diff(original, modified []byte) (*gpb.Notification, error)
}
//TODO: This should be changed to be optional
ygot.PruneConfigFalse(d.schema.RootSchema(), originalAsValidatedCopy)
ygot.PruneConfigFalse(d.schema.RootSchema(), modifiedAsValidatedCopy)
if err := ygot.PruneConfigFalse(d.schema.RootSchema(), originalAsValidatedCopy); err != nil {
return nil, err
}
if err := ygot.PruneConfigFalse(d.schema.RootSchema(), modifiedAsValidatedCopy); err != nil {
return nil, err
}
return ygot.Diff(originalAsValidatedCopy, modifiedAsValidatedCopy)
}
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment