diff --git a/init/retina/main_linux.go b/init/retina/main_linux.go index 6c3fa43233..ae8fd2b9ef 100644 --- a/init/retina/main_linux.go +++ b/init/retina/main_linux.go @@ -45,7 +45,7 @@ func run(args ...string) error { // Get config cfg, err := config.GetConfig(*configPath) if err != nil { - l.Fatal("failed to get config", zap.Error(err)) + return errors.Wrap(err, "failed to get config") } // Enable telemetry if applicationInsightsID is provided and telemetry is enabled in config. @@ -59,10 +59,16 @@ func run(args ...string) error { } // Setup BPF - bpf.Setup(l) + err = bpf.Setup(l) + if err != nil { + return errors.Wrap(err, "failed to setup Retina bpf filesystem") + } // Setup CiliumFS. - ciliumfs.Setup(l) + err = ciliumfs.Setup(l) + if err != nil { + return errors.Wrap(err, "failed to setup CiliumFS") + } return nil } diff --git a/pkg/bpf/setup_linux.go b/pkg/bpf/setup_linux.go index a75c68b6a4..e61cb2c271 100644 --- a/pkg/bpf/setup_linux.go +++ b/pkg/bpf/setup_linux.go @@ -10,6 +10,7 @@ import ( "github.com/cilium/cilium/pkg/mountinfo" plugincommon "github.com/microsoft/retina/pkg/plugin/common" "github.com/microsoft/retina/pkg/plugin/filter" + "github.com/pkg/errors" "go.uber.org/zap" "golang.org/x/sys/unix" ) @@ -53,17 +54,17 @@ func mountBpfFs() error { return nil } -func Setup(l *zap.Logger) { +func Setup(l *zap.Logger) error { err := mountBpfFs() if err != nil { - l.Panic("Failed to mount bpf filesystem", zap.Error(err)) + return errors.Wrap(err, "failed to mount BPF filesystem") } l.Info("BPF filesystem mounted successfully", zap.String("path", plugincommon.FilterMapPath)) // Delete existing filter map file. err = os.Remove(plugincommon.FilterMapPath + "/" + plugincommon.FilterMapName) if err != nil && !os.IsNotExist(err) { - l.Panic("Failed to delete existing filter map file", zap.Error(err)) + return errors.Wrap(err, "failed to delete existing filter map file") } l.Info("Deleted existing filter map file", zap.String("path", plugincommon.FilterMapPath), zap.String("Map name", plugincommon.FilterMapName)) @@ -71,7 +72,8 @@ func Setup(l *zap.Logger) { // This will create the filter map in kernel and pin it to /sys/fs/bpf. _, err = filter.Init() if err != nil { - l.Panic("Failed to initialize filter map", zap.Error(err)) + return errors.Wrap(err, "failed to initialize filter map") } l.Info("Filter map initialized successfully", zap.String("path", plugincommon.FilterMapPath), zap.String("Map name", plugincommon.FilterMapName)) + return nil } diff --git a/pkg/ciliumfs/setup_linux.go b/pkg/ciliumfs/setup_linux.go index 0a79a9aba8..98de234045 100644 --- a/pkg/ciliumfs/setup_linux.go +++ b/pkg/ciliumfs/setup_linux.go @@ -3,12 +3,13 @@ package ciliumfs import ( "os" + "github.com/pkg/errors" "go.uber.org/zap" ) const ciliumDir = "/var/run/cilium" -func Setup(l *zap.Logger) { +func Setup(l *zap.Logger) error { // Create /var/run/cilium directory. fp, err := os.Stat(ciliumDir) if err != nil { @@ -18,13 +19,13 @@ func Setup(l *zap.Logger) { // Path does not exist. Create it. err = os.MkdirAll("/var/run/cilium", 0o755) //nolint:gomnd // 0o755 is the permission mode. if err != nil { - l.Error("Failed to create directory", zap.String("dir path", ciliumDir), zap.Error(err)) - l.Panic("Failed to create directory", zap.String("dir path", ciliumDir), zap.Error(err)) + return errors.Wrap(err, "failed to create Cilium directory") } } else { // Some other error. Return. - l.Panic("Failed to stat directory", zap.String("dir path", ciliumDir), zap.Error(err)) + return errors.Wrap(err, "failed to stat Cilium directory") } } l.Info("Created directory", zap.String("dir path", ciliumDir), zap.Any("file", fp)) + return nil }