From 10fd53d6bbc847e61bff12749f0ff35e20bd7ce2 Mon Sep 17 00:00:00 2001 From: poornas Date: Sat, 14 Mar 2020 00:01:15 -0700 Subject: [PATCH] Fix: admin config set API for notifications (#9085) Filter out targets set via env when validating incoming config change against configured notification targets Fixes #9066 --- cmd/config-current.go | 4 ++++ cmd/globals.go | 7 +++++-- cmd/notification.go | 10 ++++++++-- 3 files changed, 17 insertions(+), 4 deletions(-) diff --git a/cmd/config-current.go b/cmd/config-current.go index d601ff003..d1229cbd8 100644 --- a/cmd/config-current.go +++ b/cmd/config-current.go @@ -428,6 +428,10 @@ func lookupConfigs(s config.Config) { if err != nil { logger.LogIf(ctx, fmt.Errorf("Unable to initialize notification target(s): %w", err)) } + globalEnvTargetList, err = notify.GetNotificationTargets(newServerConfig(), GlobalServiceDoneCh, NewCustomHTTPTransport()) + if err != nil { + logger.LogIf(ctx, fmt.Errorf("Unable to initialize notification target(s): %w", err)) + } } // Help - return sub-system level help diff --git a/cmd/globals.go b/cmd/globals.go index a535258a7..baa06ae19 100644 --- a/cmd/globals.go +++ b/cmd/globals.go @@ -144,8 +144,11 @@ var ( globalNotificationSys *NotificationSys globalConfigTargetList *event.TargetList - globalPolicySys *PolicySys - globalIAMSys *IAMSys + // globalEnvTargetList has list of targets configured via env. + globalEnvTargetList *event.TargetList + + globalPolicySys *PolicySys + globalIAMSys *IAMSys globalLifecycleSys *LifecycleSys globalBucketSSEConfigSys *BucketSSEConfigSys diff --git a/cmd/notification.go b/cmd/notification.go index 226eb0ada..c9ecded9f 100644 --- a/cmd/notification.go +++ b/cmd/notification.go @@ -757,8 +757,14 @@ func (sys *NotificationSys) ConfiguredTargetIDs() []event.TargetID { } } } - - return targetIDs + // Filter out targets configured via env + var tIDs []event.TargetID + for _, targetID := range targetIDs { + if !globalEnvTargetList.Exists(targetID) { + tIDs = append(tIDs, targetID) + } + } + return tIDs } // RemoveNotification - removes all notification configuration for bucket name.