fix: don't use pointers in interfaces

This commit is contained in:
Stavros
2026-06-14 00:35:18 +03:00
parent f8b85e3bc7
commit e4dc3ca2e4
2 changed files with 20 additions and 6 deletions
+16 -2
View File
@@ -15,11 +15,16 @@ func (app *BootstrapApp) setupServices() error {
return fmt.Errorf("failed to setup policy engine: %w", err)
}
err = app.dig.Provide(app.getLabelProvider)
labelProvider, err := app.getLabelProvider()
if err != nil {
return fmt.Errorf("failed to provide label provider: %w", err)
return fmt.Errorf("failed to get label provider: %w", err)
}
err = app.dig.Provide(func() service.LabelProvider {
return labelProvider
})
err = app.dig.Provide(service.NewLdapService)
if err != nil {
return fmt.Errorf("failed to provide ldap service: %w", err)
@@ -107,6 +112,15 @@ func (app *BootstrapApp) getLabelProvider() (service.LabelProvider, error) {
return nil, fmt.Errorf("failed to invoke kubernetes service: %w", err)
}
// Kubernetes will fail to initialize with an error if it cannot connect to the cluster
// but just to be safe, we check if the service is nil and log a warning if it is
if app.services.kubernetesService == nil {
if app.config.LabelProvider == "kubernetes" {
app.log.App.Warn().Msg("Kubernetes label provider selected but Kubernetes is not available, will continue without it")
}
return nil, nil
}
return app.services.kubernetesService, nil
}
+4 -4
View File
@@ -15,7 +15,7 @@ type LabelProvider interface {
type AccessControlsService struct {
log *logger.Logger
config *model.Config
labelProvider *LabelProvider
labelProvider LabelProvider
}
type AccessControlServiceInput struct {
@@ -23,7 +23,7 @@ type AccessControlServiceInput struct {
Log *logger.Logger
Config *model.Config
LabelProvider *LabelProvider `optional:"true"`
LabelProvider LabelProvider `optional:"true"`
}
func NewAccessControlsService(i AccessControlServiceInput) *AccessControlsService {
@@ -63,8 +63,8 @@ func (service *AccessControlsService) GetAccessControls(domain string) (*model.A
}
// If we have a label provider configured, try to get ACLs from it
if service.labelProvider != nil && *service.labelProvider != nil {
return (*service.labelProvider).GetLabels(domain)
if service.labelProvider != nil {
return service.labelProvider.GetLabels(domain)
}
// no labels