diff --git a/controller/nucleus/databaseDeviceStore.go b/controller/nucleus/databaseDeviceStore.go index 530bbec1e615698430d54e73aeca00291c2b96ec..4aea432e79cbda0130a3a3321771adf88c830a65 100644 --- a/controller/nucleus/databaseDeviceStore.go +++ b/controller/nucleus/databaseDeviceStore.go @@ -2,6 +2,7 @@ package nucleus import ( "fmt" + "reflect" "code.fbi.h-da.de/danet/gosdn/controller/interfaces/device" "code.fbi.h-da.de/danet/gosdn/controller/nucleus/database" @@ -65,7 +66,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{Object: idOfDevice, Type: reflect.TypeOf(loadedDevice), Err: err} } return loadedDevice, nil @@ -88,7 +89,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{Object: nameOfDevice, Type: reflect.TypeOf(loadedDevice), Err: err} } return loadedDevice, nil @@ -114,7 +115,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: reflect.TypeOf(loadedDevices), Err: err} } return loadedDevices, nil diff --git a/controller/nucleus/databasePndStore.go b/controller/nucleus/databasePndStore.go index f39ef113893bb3b75ee52a517a6a3d05ab9fcc51..a1eb29323e1105d7033ea929199dbf5d5a21adfc 100644 --- a/controller/nucleus/databasePndStore.go +++ b/controller/nucleus/databasePndStore.go @@ -1,6 +1,8 @@ package nucleus import ( + "reflect" + "code.fbi.h-da.de/danet/gosdn/controller/interfaces/device" "code.fbi.h-da.de/danet/gosdn/controller/interfaces/networkdomain" @@ -44,7 +46,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{Object: query.ID, Type: reflect.TypeOf(loadedPND), Err: err} } csbiClient, err := s.getCsbiClient() @@ -87,7 +89,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: reflect.TypeOf(loadedPnds), Err: err} } csbiClient, err := s.getCsbiClient() diff --git a/controller/nucleus/databaseSbiStore.go b/controller/nucleus/databaseSbiStore.go index 43a1bca99887df3407eaccbeb23b88e14be5076d..cadd719817c15f5fd3c67ae97f59f3ab81f8a071 100644 --- a/controller/nucleus/databaseSbiStore.go +++ b/controller/nucleus/databaseSbiStore.go @@ -1,6 +1,8 @@ package nucleus import ( + "reflect" + "code.fbi.h-da.de/danet/gosdn/controller/interfaces/southbound" "code.fbi.h-da.de/danet/gosdn/controller/nucleus/database" "code.fbi.h-da.de/danet/gosdn/controller/nucleus/errors" @@ -75,7 +77,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{Object: query.ID, Type: reflect.TypeOf(loadedSbi), Err: err} } return loadedSbi, nil @@ -101,7 +103,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: reflect.TypeOf(loadedSbis), Err: err} } return loadedSbis, nil diff --git a/controller/nucleus/errors/errors.go b/controller/nucleus/errors/errors.go index eac05eb448f53a654dd3acede79c215a70b4932f..43cf54e9a003178bdd2cbbbeccb99e5bb2f7e6b0 100644 --- a/controller/nucleus/errors/errors.go +++ b/controller/nucleus/errors/errors.go @@ -162,11 +162,13 @@ 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 + Object 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 Object: %v of Type: %v, Internal error: %v", e.Object, e.Type, e.Err) } // ErrCouldNotUpdate implements the Error interface and is called if a diff --git a/controller/rbac/databaseRoleStore.go b/controller/rbac/databaseRoleStore.go index b97da6d9a59dc1f4c91f5ab409c4b3901693d267..8d1ac67a78414f5bd324354572cd8e93dd437767 100644 --- a/controller/rbac/databaseRoleStore.go +++ b/controller/rbac/databaseRoleStore.go @@ -1,6 +1,8 @@ package rbac import ( + "reflect" + "code.fbi.h-da.de/danet/gosdn/controller/interfaces/rbac" "code.fbi.h-da.de/danet/gosdn/controller/nucleus/database" "code.fbi.h-da.de/danet/gosdn/controller/nucleus/errors" @@ -93,7 +95,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{Object: idOfRole, Type: reflect.TypeOf(loadedRole), Err: err} } return loadedRole, nil @@ -116,7 +118,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{Object: nameOfRole, Type: reflect.TypeOf(loadedRole), Err: err} } return loadedRole, nil @@ -142,7 +144,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: reflect.TypeOf(loadedRoles), Err: err} } return loadedRoles, nil } diff --git a/controller/rbac/databaseUserStore.go b/controller/rbac/databaseUserStore.go index a300c96ede566071de73472281753950a05e7bd6..dda2bc790b126cba6adf03f6f6ada8d2b97c82c9 100644 --- a/controller/rbac/databaseUserStore.go +++ b/controller/rbac/databaseUserStore.go @@ -1,6 +1,8 @@ package rbac import ( + "reflect" + "code.fbi.h-da.de/danet/gosdn/controller/interfaces/rbac" "code.fbi.h-da.de/danet/gosdn/controller/nucleus/database" "code.fbi.h-da.de/danet/gosdn/controller/nucleus/errors" @@ -93,7 +95,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{Object: idOfUser, Type: reflect.TypeOf(loadedUser), Err: err} } return loadedUser, nil @@ -116,7 +118,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{Object: nameOfUser, Type: reflect.TypeOf(loadedUser), Err: err} } return loadedUser, nil @@ -142,7 +144,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: reflect.TypeOf(loadedUsers), Err: err} } return loadedUsers, nil }