Skip to content
Snippets Groups Projects
Commit bbedf774 authored by Fabian Seidl's avatar Fabian Seidl
Browse files

Resolve "Some of the used errors do not provide useful information"

See merge request !336
parent 8e9d37a3
No related branches found
No related tags found
2 merge requests!336Resolve "Some of the used errors do not provide useful information",!333WIP: Develop
Pipeline #106530 passed
This commit is part of merge request !333. Comments created here will be created in the context of that merge request.
Showing
with 69 additions and 69 deletions
......@@ -65,7 +65,7 @@ func (s *DatabaseDeviceStore) getByID(idOfDevice uuid.UUID) (device.LoadedDevice
err := result.Decode(&loadedDevice)
if err != nil {
log.Printf("Failed marshalling %v", err)
return loadedDevice, errors.ErrCouldNotMarshall{StoreName: s.storeName}
return loadedDevice, errors.ErrCouldNotMarshall{Identifier: idOfDevice, Type: loadedDevice, Err: err}
}
return loadedDevice, nil
......@@ -88,7 +88,7 @@ func (s *DatabaseDeviceStore) getByName(nameOfDevice string) (device.LoadedDevic
err := result.Decode(&loadedDevice)
if err != nil {
log.Printf("Failed marshalling %v", err)
return loadedDevice, errors.ErrCouldNotMarshall{StoreName: s.storeName}
return loadedDevice, errors.ErrCouldNotMarshall{Identifier: nameOfDevice, Type: loadedDevice, Err: err}
}
return loadedDevice, nil
......@@ -114,7 +114,7 @@ func (s *DatabaseDeviceStore) GetAll() ([]device.LoadedDevice, error) {
if err != nil {
log.Printf("Failed marshalling %v", err)
return nil, errors.ErrCouldNotMarshall{StoreName: pndStoreName}
return nil, errors.ErrCouldNotMarshall{Type: loadedDevices, Err: err}
}
return loadedDevices, nil
......@@ -131,7 +131,7 @@ func (s *DatabaseDeviceStore) Add(deviceToAdd device.Device) error {
InsertOne(ctx, deviceToAdd)
if err != nil {
log.Printf("Could not create Device: %v", err)
return errors.ErrCouldNotCreate{StoreName: pndStoreName}
return errors.ErrCouldNotCreate{Identifier: deviceToAdd.ID(), Type: deviceToAdd, Err: err}
}
return nil
......@@ -162,7 +162,7 @@ func (s *DatabaseDeviceStore) Update(deviceToUpdate device.Device) error {
if err != nil {
log.Printf("Could not update Device: %v", err)
return errors.ErrCouldNotUpdate{StoreName: pndStoreName}
return errors.ErrCouldNotUpdate{Identifier: deviceToUpdate.ID(), Type: deviceToUpdate, Err: err}
}
return nil
......@@ -178,7 +178,7 @@ func (s *DatabaseDeviceStore) Delete(deviceToDelete device.Device) error {
collection := db.Collection(s.storeName)
_, err := collection.DeleteOne(ctx, bson.D{primitive.E{Key: deviceToDelete.ID().String()}})
if err != nil {
return err
return errors.ErrCouldNotDelete{Identifier: deviceToDelete.ID(), Type: deviceToDelete, Err: err}
}
return nil
......
......@@ -44,7 +44,7 @@ func (s *DatabasePndStore) Get(query store.Query) (networkdomain.NetworkDomain,
if err != nil {
log.Printf("Failed marshalling %v", err)
return nil, errors.ErrCouldNotMarshall{StoreName: pndStoreName}
return nil, errors.ErrCouldNotMarshall{Identifier: query.ID, Type: loadedPND, Err: err}
}
csbiClient, err := s.getCsbiClient()
......@@ -87,7 +87,7 @@ func (s *DatabasePndStore) GetAll() ([]networkdomain.NetworkDomain, error) {
if err != nil {
log.Printf("Failed marshalling %v", err)
return nil, errors.ErrCouldNotMarshall{StoreName: pndStoreName}
return nil, errors.ErrCouldNotMarshall{Type: loadedPnds, Err: err}
}
csbiClient, err := s.getCsbiClient()
......@@ -114,16 +114,16 @@ func (s *DatabasePndStore) GetAll() ([]networkdomain.NetworkDomain, error) {
}
// Add adds a pnd to the pnd store.
func (s *DatabasePndStore) Add(pnd networkdomain.NetworkDomain) error {
func (s *DatabasePndStore) Add(pndToAdd networkdomain.NetworkDomain) error {
client, ctx, cancel := database.GetMongoConnection()
defer cancel()
defer client.Disconnect(ctx)
_, err := client.Database(database.DatabaseName).
Collection(s.pndStoreName).
InsertOne(ctx, pnd)
InsertOne(ctx, pndToAdd)
if err != nil {
return errors.ErrCouldNotCreate{StoreName: pndStoreName}
return errors.ErrCouldNotCreate{Identifier: pndToAdd.ID(), Type: pndToAdd, Err: err}
}
return nil
......@@ -131,16 +131,16 @@ func (s *DatabasePndStore) Add(pnd networkdomain.NetworkDomain) error {
// Delete deletes a pnd.
// It also deletes all assosicated devices and sbis.
func (s *DatabasePndStore) Delete(pnd networkdomain.NetworkDomain) error {
func (s *DatabasePndStore) Delete(pndToDelete networkdomain.NetworkDomain) error {
client, ctx, cancel := database.GetMongoConnection()
defer cancel()
defer client.Disconnect(ctx)
db := client.Database(database.DatabaseName)
collection := db.Collection(s.pndStoreName)
_, err := collection.DeleteOne(ctx, bson.D{primitive.E{Key: pnd.ID().String()}})
_, err := collection.DeleteOne(ctx, bson.D{primitive.E{Key: pndToDelete.ID().String()}})
if err != nil {
return err
return errors.ErrCouldNotDelete{Identifier: pndToDelete.ID(), Type: pndToDelete, Err: err}
}
// TODO: Delete all assosicated devices + SBIs
......
......@@ -18,36 +18,36 @@ type DatabaseSbiStore struct {
}
// Add adds a SBI.
func (s *DatabaseSbiStore) Add(item southbound.SouthboundInterface) error {
func (s *DatabaseSbiStore) Add(sbiToAdd southbound.SouthboundInterface) error {
client, ctx, cancel := database.GetMongoConnection()
defer cancel()
defer client.Disconnect(ctx)
_, err := client.Database(database.DatabaseName).
Collection(s.sbiStoreName).
InsertOne(ctx, item)
InsertOne(ctx, sbiToAdd)
if err != nil {
if mongo.IsDuplicateKeyError(err) {
return nil
}
return errors.ErrCouldNotCreate{StoreName: sbiStoreName}
return errors.ErrCouldNotCreate{Identifier: sbiToAdd.ID(), Type: sbiToAdd, Err: err}
}
return nil
}
// Delete deletes an SBI.
func (s *DatabaseSbiStore) Delete(item southbound.SouthboundInterface) error {
func (s *DatabaseSbiStore) Delete(sbiToDelete southbound.SouthboundInterface) error {
client, ctx, cancel := database.GetMongoConnection()
defer cancel()
defer client.Disconnect(ctx)
_, err := client.Database(database.DatabaseName).
Collection(s.sbiStoreName).
DeleteOne(ctx, bson.D{primitive.E{Key: "_id", Value: item.ID().String()}})
DeleteOne(ctx, bson.D{primitive.E{Key: "_id", Value: sbiToDelete.ID().String()}})
if err != nil {
return errors.ErrCouldNotDelete{StoreName: sbiStoreName}
return errors.ErrCouldNotDelete{Identifier: sbiToDelete.ID(), Type: sbiToDelete, Err: err}
}
return nil
......@@ -75,7 +75,7 @@ func (s *DatabaseSbiStore) Get(query store.Query) (southbound.LoadedSbi, error)
if err != nil {
log.Printf("Failed marshalling %v", err)
return loadedSbi, errors.ErrCouldNotMarshall{StoreName: sbiStoreName}
return loadedSbi, errors.ErrCouldNotMarshall{Identifier: query.ID, Type: loadedSbi, Err: err}
}
return loadedSbi, nil
......@@ -101,7 +101,7 @@ func (s *DatabaseSbiStore) GetAll() ([]southbound.LoadedSbi, error) {
if err != nil {
log.Printf("Failed marshalling %v", err)
return nil, errors.ErrCouldNotMarshall{StoreName: sbiStoreName}
return nil, errors.ErrCouldNotMarshall{Type: loadedSbis, Err: err}
}
return loadedSbis, nil
......
......@@ -142,7 +142,7 @@ func (s *FilesystemDeviceStore) Update(deviceToUpdate device.Device) error {
}
}
return &errors.ErrCouldNotFind{ID: deviceToUpdate.ID().String(), Name: deviceToUpdate.Name()}
return &errors.ErrCouldNotUpdate{Identifier: deviceToUpdate.ID(), Type: deviceToUpdate, Err: err}
}
// Delete deletes a device from the device store.
......@@ -170,5 +170,5 @@ func (s *FilesystemDeviceStore) Delete(deviceToDelete device.Device) error {
}
}
return &errors.ErrCouldNotFind{ID: deviceToDelete.ID, Name: deviceToDelete.Name()}
return &errors.ErrCouldNotDelete{Identifier: deviceToDelete.ID(), Type: deviceToDelete, Err: err}
}
......@@ -162,21 +162,25 @@ func (e ErrTypeNotSupported) Error() string {
// ErrCouldNotMarshall implements Error interface and is called if a
// database respone can not be parsed.
type ErrCouldNotMarshall struct {
StoreName string
Identifier any
Type any
Err error
}
func (e ErrCouldNotMarshall) Error() string {
return fmt.Sprintf("could not marshall %s", e.StoreName)
return fmt.Sprintf("could not marshall Identifier: %v of Type: %T, Internal error: %v", e.Identifier, e.Type, e.Err)
}
// ErrCouldNotUpdate implements the Error interface and is called if a
// stored item can not be updated.
type ErrCouldNotUpdate struct {
StoreName string
Identifier any
Type any
Err error
}
func (e ErrCouldNotUpdate) Error() string {
return fmt.Sprintf("could not update %s", e.StoreName)
return fmt.Sprintf("could not update Identifier: %v of Type: %T, Internal error: %v", e.Identifier, e.Type, e.Err)
}
// ErrCouldNotFind implements the Error interface and is called if a
......@@ -193,21 +197,25 @@ func (e ErrCouldNotFind) Error() string {
// ErrCouldNotCreate implements the Error interface and is called if a
// stored item can not be found.
type ErrCouldNotCreate struct {
StoreName string
Identifier any
Type any
Err error
}
func (e ErrCouldNotCreate) Error() string {
return fmt.Sprintf("could not create %s", e.StoreName)
return fmt.Sprintf("could not create Identifier: %v of Type: %T, Internal error: %v", e.Identifier, e.Type, e.Err)
}
// ErrCouldNotDelete implements the Error interface and is called if a
// stored item can not be deleted.
type ErrCouldNotDelete struct {
StoreName string
Identifier any
Type any
Err error
}
func (e ErrCouldNotDelete) Error() string {
return fmt.Sprintf("could not delete %s", e.StoreName)
return fmt.Sprintf("could not delete Identifier: %v of Type: %T, Internal error: %v", e.Identifier, e.Type, e.Err)
}
// ErrNoNewChanges implements the Error interface and is called if a the
......
......@@ -85,7 +85,7 @@ func (t *MemorySbiStore) Get(query store.Query) (southbound.LoadedSbi, error) {
// Second search for name
id, ok := t.nameLookupTable[query.Name]
if !ok {
return item, errors.ErrCouldNotDelete{StoreName: sbiStoreName}
return item, errors.ErrCouldNotFind{ID: query.ID, Name: query.Name}
}
item, ok := t.Store[id]
......
......@@ -87,7 +87,7 @@ func (t *FilesystemPndStore) writeAllPndsToFile(pnds []networkdomain.NetworkDoma
}
// Add a pnd to the store.
func (t *FilesystemPndStore) Add(item networkdomain.NetworkDomain) error {
func (t *FilesystemPndStore) Add(pndToAdd networkdomain.NetworkDomain) error {
t.fileMutex.Lock()
defer t.fileMutex.Unlock()
......@@ -96,7 +96,7 @@ func (t *FilesystemPndStore) Add(item networkdomain.NetworkDomain) error {
return err
}
pnds = append(pnds, item)
pnds = append(pnds, pndToAdd)
err = t.writeAllPndsToFile(pnds)
if err != nil {
......@@ -107,7 +107,7 @@ func (t *FilesystemPndStore) Add(item networkdomain.NetworkDomain) error {
}
// Delete deletes a pnd from the store.
func (t *FilesystemPndStore) Delete(item networkdomain.NetworkDomain) error {
func (t *FilesystemPndStore) Delete(pndToDelete networkdomain.NetworkDomain) error {
t.fileMutex.Lock()
defer t.fileMutex.Unlock()
......@@ -117,7 +117,7 @@ func (t *FilesystemPndStore) Delete(item networkdomain.NetworkDomain) error {
}
for i, pnd := range pnds {
if pnd.ID() == item.ID() {
if pnd.ID() == pndToDelete.ID() {
//remove item from slice
pnds[i] = pnds[len(pnds)-1]
pnds = pnds[:len(pnds)-1]
......@@ -131,7 +131,7 @@ func (t *FilesystemPndStore) Delete(item networkdomain.NetworkDomain) error {
}
}
return &errors.ErrCouldNotFind{ID: item.ID, Name: item.GetName()}
return &errors.ErrCouldNotDelete{Identifier: pndToDelete.ID(), Type: pndToDelete, Err: err}
}
// Get provides a the query interface to find a stored pnd.
......
......@@ -8,10 +8,6 @@ import (
log "github.com/sirupsen/logrus"
)
const (
pndStoreName = "pnd"
)
// LoadedPnd represents a Principal Network Domain that was loaeded by using
// the Load() method of the PndStore.
type LoadedPnd struct {
......
......@@ -110,7 +110,7 @@ func (s *FilesystemSbiStore) Delete(sbiToDelete southbound.SouthboundInterface)
return nil
}
}
return &errors.ErrCouldNotFind{ID: sbiToDelete.ID, Name: sbiToDelete.Name()}
return &errors.ErrCouldNotDelete{Identifier: sbiToDelete.ID(), Type: sbiToDelete, Err: err}
}
// Get takes a SouthboundInterface's UUID or name and returns the SouthboundInterface. If the requested
......
......@@ -9,10 +9,6 @@ import (
"github.com/google/uuid"
)
const (
sbiStoreName = "sbi"
)
// SbiStore is used to store SouthboundInterfaces
type SbiStore struct {
sbiStoreName string
......
......@@ -32,7 +32,7 @@ func (s *DatabaseRoleStore) Add(roleToAdd rbac.Role) error {
return nil
}
return errors.ErrCouldNotCreate{StoreName: s.roleStoreName}
return errors.ErrCouldNotCreate{Identifier: roleToAdd.ID(), Type: roleToAdd, Err: err}
}
return nil
......@@ -48,7 +48,7 @@ func (s *DatabaseRoleStore) Delete(roleToDelete rbac.Role) error {
Collection(s.roleStoreName).
DeleteOne(ctx, bson.D{primitive.E{Key: "_id", Value: roleToDelete.ID().String()}})
if err != nil {
return errors.ErrCouldNotFind{ID: roleToDelete.ID(), Name: roleToDelete.Name()}
return errors.ErrCouldNotDelete{Identifier: roleToDelete.ID(), Type: roleToDelete, Err: err}
}
return nil
......@@ -93,7 +93,7 @@ func (s *DatabaseRoleStore) getByID(idOfRole uuid.UUID) (rbac.LoadedRole, error)
err := result.Decode(&loadedRole)
if err != nil {
log.Printf("Failed marshalling %v", err)
return loadedRole, errors.ErrCouldNotMarshall{StoreName: s.roleStoreName}
return loadedRole, errors.ErrCouldNotMarshall{Identifier: idOfRole, Type: loadedRole, Err: err}
}
return loadedRole, nil
......@@ -116,7 +116,7 @@ func (s *DatabaseRoleStore) getByName(nameOfRole string) (rbac.LoadedRole, error
err := result.Decode(&loadedRole)
if err != nil {
log.Printf("Failed marshalling %v", err)
return loadedRole, errors.ErrCouldNotMarshall{StoreName: s.roleStoreName}
return loadedRole, errors.ErrCouldNotMarshall{Identifier: nameOfRole, Type: loadedRole, Err: err}
}
return loadedRole, nil
......@@ -142,7 +142,7 @@ func (s *DatabaseRoleStore) GetAll() ([]rbac.LoadedRole, error) {
if err != nil {
log.Printf("Failed marshalling %v", err)
return nil, errors.ErrCouldNotMarshall{StoreName: s.roleStoreName}
return nil, errors.ErrCouldNotMarshall{Type: loadedRoles, Err: err}
}
return loadedRoles, nil
}
......@@ -172,7 +172,7 @@ func (s *DatabaseRoleStore) Update(roleToUpdate rbac.Role) error {
if err != nil {
log.Printf("Could not update Role: %v", err)
return errors.ErrCouldNotUpdate{StoreName: s.roleStoreName}
return errors.ErrCouldNotUpdate{Identifier: roleToUpdate.ID(), Type: roleToUpdate, Err: err}
}
return nil
......
......@@ -32,7 +32,7 @@ func (s *DatabaseUserStore) Add(userToAdd rbac.User) error {
return nil
}
return errors.ErrCouldNotCreate{StoreName: s.userStoreName}
return errors.ErrCouldNotCreate{Identifier: userToAdd.ID(), Type: userToAdd, Err: err}
}
return nil
......@@ -48,7 +48,7 @@ func (s *DatabaseUserStore) Delete(userToDelete rbac.User) error {
Collection(s.userStoreName).
DeleteOne(ctx, bson.D{primitive.E{Key: "_id", Value: userToDelete.ID().String()}})
if err != nil {
return errors.ErrCouldNotFind{ID: userToDelete.ID(), Name: userToDelete.Name()}
return errors.ErrCouldNotDelete{Identifier: userToDelete.ID(), Type: userToDelete, Err: err}
}
return nil
......@@ -93,7 +93,7 @@ func (s *DatabaseUserStore) getByID(idOfUser uuid.UUID) (rbac.LoadedUser, error)
err := result.Decode(&loadedUser)
if err != nil {
log.Printf("Failed marshalling %v", err)
return loadedUser, errors.ErrCouldNotMarshall{StoreName: s.userStoreName}
return loadedUser, errors.ErrCouldNotMarshall{Identifier: idOfUser, Type: loadedUser, Err: err}
}
return loadedUser, nil
......@@ -116,7 +116,7 @@ func (s *DatabaseUserStore) getByName(nameOfUser string) (rbac.LoadedUser, error
err := result.Decode(&loadedUser)
if err != nil {
log.Printf("Failed marshalling %v", err)
return loadedUser, errors.ErrCouldNotMarshall{StoreName: s.userStoreName}
return loadedUser, errors.ErrCouldNotMarshall{Identifier: nameOfUser, Type: loadedUser, Err: err}
}
return loadedUser, nil
......@@ -142,7 +142,7 @@ func (s *DatabaseUserStore) GetAll() ([]rbac.LoadedUser, error) {
if err != nil {
log.Printf("Failed marshalling %v", err)
return nil, errors.ErrCouldNotMarshall{StoreName: s.userStoreName}
return nil, errors.ErrCouldNotMarshall{Type: loadedUsers, Err: err}
}
return loadedUsers, nil
}
......@@ -172,7 +172,7 @@ func (s *DatabaseUserStore) Update(userToUpdate rbac.User) error {
if err != nil {
log.Printf("Could not update User: %v", err)
return errors.ErrCouldNotUpdate{StoreName: s.userStoreName}
return errors.ErrCouldNotUpdate{Identifier: userToUpdate.ID(), Type: userToUpdate, Err: err}
}
return nil
......
......@@ -40,8 +40,8 @@ func (s *FileSystemRoleStore) readAllRolesFromFile() ([]rbac.LoadedRole, error)
return loadedRoles, nil
}
func (s *FileSystemRoleStore) writeAllRolesToFile(Roles []rbac.LoadedRole) error {
serializedData, err := json.Marshal(Roles)
func (s *FileSystemRoleStore) writeAllRolesToFile(roles []rbac.LoadedRole) error {
serializedData, err := json.Marshal(roles)
if err != nil {
return err
}
......@@ -55,7 +55,7 @@ func (s *FileSystemRoleStore) writeAllRolesToFile(Roles []rbac.LoadedRole) error
}
// Add adds a Role to the Role store
func (s *FileSystemRoleStore) Add(RoleToAdd rbac.Role) error {
func (s *FileSystemRoleStore) Add(roleToAdd rbac.Role) error {
s.fileMutex.Lock()
defer s.fileMutex.Unlock()
......@@ -65,7 +65,7 @@ func (s *FileSystemRoleStore) Add(RoleToAdd rbac.Role) error {
}
var loadedRole rbac.LoadedRole
loadedRole, err = store.TransformObjectToLoadedObject[rbac.Role, rbac.LoadedRole](RoleToAdd)
loadedRole, err = store.TransformObjectToLoadedObject[rbac.Role, rbac.LoadedRole](roleToAdd)
if err != nil {
return err
}
......@@ -81,7 +81,7 @@ func (s *FileSystemRoleStore) Add(RoleToAdd rbac.Role) error {
}
//Delete deletes a Role from the Role store
func (s *FileSystemRoleStore) Delete(RoleToDelete rbac.Role) error {
func (s *FileSystemRoleStore) Delete(roleToDelete rbac.Role) error {
s.fileMutex.Lock()
defer s.fileMutex.Unlock()
......@@ -91,7 +91,7 @@ func (s *FileSystemRoleStore) Delete(RoleToDelete rbac.Role) error {
}
for i, role := range roles {
if role.ID == RoleToDelete.ID().String() {
if role.ID == roleToDelete.ID().String() {
//remove item from slice
roles[i] = roles[len(roles)-1]
roles = roles[:len(roles)-1]
......@@ -105,7 +105,7 @@ func (s *FileSystemRoleStore) Delete(RoleToDelete rbac.Role) error {
}
}
return &errors.ErrCouldNotFind{ID: RoleToDelete.ID(), Name: RoleToDelete.Name()}
return &errors.ErrCouldNotDelete{Identifier: roleToDelete.ID(), Type: roleToDelete, Err: err}
}
//Get takes a Roles ID and return the Role if found
......@@ -162,5 +162,5 @@ func (s *FileSystemRoleStore) Update(roleToUpdate rbac.Role) error {
}
}
return &errors.ErrCouldNotFind{ID: roleToUpdate.ID(), Name: roleToUpdate.Name()}
return &errors.ErrCouldNotUpdate{Identifier: roleToUpdate.ID(), Type: roleToUpdate, Err: err}
}
......@@ -105,7 +105,7 @@ func (s *FileSystemUserStore) Delete(userToDelete rbac.User) error {
}
}
return &errors.ErrCouldNotFind{ID: userToDelete.ID(), Name: userToDelete.Name()}
return &errors.ErrCouldNotDelete{Identifier: userToDelete.ID(), Type: userToDelete, Err: err}
}
//Get takes a Users ID and return the User if found
......@@ -162,5 +162,5 @@ func (s *FileSystemUserStore) Update(userToUpdate rbac.User) error {
}
}
return &errors.ErrCouldNotFind{ID: userToUpdate.ID(), Name: userToUpdate.Name()}
return &errors.ErrCouldNotUpdate{Identifier: userToUpdate.ID(), Type: userToUpdate, Err: err}
}
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment