From 43d5690432a1b959e6373c582aac36356fbca44d Mon Sep 17 00:00:00 2001 From: Shivam Sandbhor Date: Mon, 14 Feb 2022 22:15:03 +0530 Subject: [PATCH] Detect missing plugin binary wrt profiles (#1252) Signed-off-by: Shivam Sandbhor --- pkg/csplugin/broker.go | 15 ++++++++++++++- 1 file changed, 14 insertions(+), 1 deletion(-) diff --git a/pkg/csplugin/broker.go b/pkg/csplugin/broker.go index f65765c98..fa85271df 100644 --- a/pkg/csplugin/broker.go +++ b/pkg/csplugin/broker.go @@ -176,6 +176,7 @@ func (pb *PluginBroker) loadConfig(path string) error { return err } +// checks whether every notification in profile has it's own config file func (pb *PluginBroker) verifyPluginConfigsWithProfile() error { for _, profileCfg := range pb.profileConfigs { for _, pluginName := range profileCfg.Notifications { @@ -188,6 +189,18 @@ func (pb *PluginBroker) verifyPluginConfigsWithProfile() error { return nil } +// check whether each plugin in profile has it's own binary +func (pb *PluginBroker) verifyPluginBinaryWithProfile() error { + for _, profileCfg := range pb.profileConfigs { + for _, pluginName := range profileCfg.Notifications { + if _, ok := pb.notificationPluginByName[pluginName]; !ok { + return fmt.Errorf("binary for plugin %s not found", pluginName) + } + } + } + return nil +} + func (pb *PluginBroker) loadPlugins(path string) error { binaryPaths, err := listFilesAtPath(path) if err != nil { @@ -231,7 +244,7 @@ func (pb *PluginBroker) loadPlugins(path string) error { pb.notificationPluginByName[pc.Name] = pluginClient } } - return err + return pb.verifyPluginBinaryWithProfile() } func (pb *PluginBroker) loadNotificationPlugin(name string, binaryPath string) (Notifier, error) {