From 3f0220808f2782cf148beae543293d7b15378ccc Mon Sep 17 00:00:00 2001 From: David Sheets Date: Sun, 30 Apr 2017 17:24:12 +0100 Subject: [PATCH] daemon/info: don't sort authorization plugins as order matters plugins exist in a chain that composes potentially mutating requests and responses. This simply reverts the sorting of AuthZ plugins so that the /info API endpoint returns the internal ordering used for AuthZ composition. Volume driver plugins are not affected because they are just a set. Signed-off-by: David Sheets Upstream-commit: cfcf2a0cec8d83c1584020ccaab0c94f5bb6d7d4 Component: engine --- components/engine/daemon/config/config.go | 14 -------------- components/engine/daemon/info.go | 4 +++- 2 files changed, 3 insertions(+), 15 deletions(-) diff --git a/components/engine/daemon/config/config.go b/components/engine/daemon/config/config.go index 134fc671d5..3abf0ae990 100644 --- a/components/engine/daemon/config/config.go +++ b/components/engine/daemon/config/config.go @@ -9,7 +9,6 @@ import ( "io/ioutil" "reflect" "runtime" - "sort" "strings" "sync" @@ -503,19 +502,6 @@ func Validate(config *Config) error { return nil } -// GetAuthorizationPlugins returns daemon's sorted authorization plugins -func (conf *Config) GetAuthorizationPlugins() []string { - conf.Lock() - defer conf.Unlock() - - authPlugins := make([]string, 0, len(conf.AuthorizationPlugins)) - for _, p := range conf.AuthorizationPlugins { - authPlugins = append(authPlugins, p) - } - sort.Strings(authPlugins) - return authPlugins -} - // ModifiedDiscoverySettings returns whether the discovery configuration has been modified or not. func ModifiedDiscoverySettings(config *Config, backendType, advertise string, clusterOpts map[string]string) bool { if config.ClusterStore != backendType || config.ClusterAdvertise != advertise { diff --git a/components/engine/daemon/info.go b/components/engine/daemon/info.go index b6c2565f44..8ae7cbc953 100644 --- a/components/engine/daemon/info.go +++ b/components/engine/daemon/info.go @@ -175,7 +175,9 @@ func (daemon *Daemon) showPluginsInfo() types.PluginsInfo { pluginsInfo.Volume = volumedrivers.GetDriverList() pluginsInfo.Network = daemon.GetNetworkDriverList() - pluginsInfo.Authorization = daemon.configStore.GetAuthorizationPlugins() + // The authorization plugins are returned in the order they are + // used as they constitute a request/response modification chain. + pluginsInfo.Authorization = daemon.configStore.AuthorizationPlugins pluginsInfo.Log = logger.ListDrivers() return pluginsInfo