...
1
16
17 package secrets
18
19 import (
20 "encoding/json"
21
22 v1 "k8s.io/api/core/v1"
23 "k8s.io/kubernetes/pkg/credentialprovider"
24 )
25
26
27
28
29 func MakeDockerKeyring(passedSecrets []v1.Secret, defaultKeyring credentialprovider.DockerKeyring) (credentialprovider.DockerKeyring, error) {
30 passedCredentials := []credentialprovider.DockerConfig{}
31 for _, passedSecret := range passedSecrets {
32 if dockerConfigJSONBytes, dockerConfigJSONExists := passedSecret.Data[v1.DockerConfigJsonKey]; (passedSecret.Type == v1.SecretTypeDockerConfigJson) && dockerConfigJSONExists && (len(dockerConfigJSONBytes) > 0) {
33 dockerConfigJSON := credentialprovider.DockerConfigJSON{}
34 if err := json.Unmarshal(dockerConfigJSONBytes, &dockerConfigJSON); err != nil {
35 return nil, err
36 }
37
38 passedCredentials = append(passedCredentials, dockerConfigJSON.Auths)
39 } else if dockercfgBytes, dockercfgExists := passedSecret.Data[v1.DockerConfigKey]; (passedSecret.Type == v1.SecretTypeDockercfg) && dockercfgExists && (len(dockercfgBytes) > 0) {
40 dockercfg := credentialprovider.DockerConfig{}
41 if err := json.Unmarshal(dockercfgBytes, &dockercfg); err != nil {
42 return nil, err
43 }
44
45 passedCredentials = append(passedCredentials, dockercfg)
46 }
47 }
48
49 if len(passedCredentials) > 0 {
50 basicKeyring := &credentialprovider.BasicDockerKeyring{}
51 for _, currCredentials := range passedCredentials {
52 basicKeyring.Add(currCredentials)
53 }
54 return credentialprovider.UnionDockerKeyring{basicKeyring, defaultKeyring}, nil
55 }
56
57 return defaultKeyring, nil
58 }
59
View as plain text