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 <dsheets@docker.com>
Upstream-commit: cfcf2a0cec8d83c1584020ccaab0c94f5bb6d7d4
Component: engine
This commit is contained in:
David Sheets
2017-05-02 09:39:32 +01:00
parent 3d9fa1821c
commit 3f0220808f
2 changed files with 3 additions and 15 deletions
-14
View File
@@ -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 {
+3 -1
View File
@@ -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