Commit 804ee25b authored by Brendan Burns's avatar Brendan Burns

Make CredentialProvider config loading deterministic.

parent b05a61e2
...@@ -17,6 +17,8 @@ limitations under the License. ...@@ -17,6 +17,8 @@ limitations under the License.
package credentialprovider package credentialprovider
import ( import (
"reflect"
"sort"
"sync" "sync"
"github.com/golang/glog" "github.com/golang/glog"
...@@ -49,11 +51,17 @@ func NewDockerKeyring() DockerKeyring { ...@@ -49,11 +51,17 @@ func NewDockerKeyring() DockerKeyring {
Providers: make([]DockerConfigProvider, 0), Providers: make([]DockerConfigProvider, 0),
} }
// TODO(mattmoor): iterating over the map is non-deterministic. We should keys := reflect.ValueOf(providers).MapKeys()
// introduce the notion of priorities for conflict resolution. stringKeys := make([]string, len(keys))
for name, provider := range providers { for ix := range keys {
stringKeys[ix] = keys[ix].String()
}
sort.Strings(stringKeys)
for _, key := range stringKeys {
provider := providers[key]
if provider.Enabled() { if provider.Enabled() {
glog.V(4).Infof("Registering credential provider: %v", name) glog.V(4).Infof("Registering credential provider: %v", key)
keyring.Providers = append(keyring.Providers, provider) keyring.Providers = append(keyring.Providers, provider)
} }
} }
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment