mirror of https://github.com/k3s-io/k3s
Make CredentialProvider config loading deterministic.
parent
b05a61e299
commit
804ee25b1e
|
@ -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 {
|
||||||
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)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue