11package gitreceive
22
33import (
4- "encoding/base64"
5- "encoding/json"
6- "errors"
74 "strings"
85
9- "github.com/drycc/builder/pkg/storage"
10- "k8s.io/kubernetes/pkg/api"
116 client "k8s.io/kubernetes/pkg/client/unversioned"
127)
138
@@ -27,43 +22,7 @@ func getDetailsFromRegistrySecret(secretGetter client.SecretsInterface, secret s
2722 return regDetails , nil
2823}
2924
30- func getDetailsFromDockerConfigSecret (secretGetter client.SecretsInterface , secret string ) (map [string ]string , error ) {
31- configSecret , err := secretGetter .Get (secret )
32- if err != nil {
33- return nil , err
34- }
35- dockerConfigJSONBytes := configSecret .Data [api .DockerConfigJsonKey ]
36- var secretData map [string ]interface {}
37- if err = json .Unmarshal (dockerConfigJSONBytes , & secretData ); err != nil {
38- return nil , err
39- }
40-
41- var authdata map [string ]interface {}
42- var hostname string
43- for key , value := range secretData ["auths" ].(map [string ]interface {}) {
44- hostname = key
45- authdata = value .(map [string ]interface {})
46- }
47- token := authdata ["auth" ].(string )
48- decodedToken , err := base64 .StdEncoding .DecodeString (token )
49- if err != nil {
50- return nil , err
51- }
52- parts := strings .SplitN (string (decodedToken ), ":" , 2 )
53- if len (parts ) != 2 {
54- return nil , errors .New ("Invalid token in docker config secret" )
55- }
56- user := parts [0 ]
57- password := parts [1 ]
58- regDetails := make (map [string ]string )
59- regDetails ["DRYCC_REGISTRY_USERNAME" ] = user
60- regDetails ["DRYCC_REGISTRY_PASSWORD" ] = password
61- regDetails ["DRYCC_REGISTRY_HOSTNAME" ] = hostname
62- return regDetails , nil
63- }
64-
6525func getRegistryDetails (kubeClient client.SecretsNamespacer , image * string , registryLocation , namespace , registrySecretPrefix string ) (map [string ]string , error ) {
66- registryConfigSecretInterface := kubeClient .Secrets (* image )
6726 privateRegistrySecretInterface := kubeClient .Secrets (namespace )
6827 registryEnv := make (map [string ]string )
6928 var regSecretData map [string ]string
@@ -82,44 +41,6 @@ func getRegistryDetails(kubeClient client.SecretsNamespacer, image *string, regi
8241 if registryEnv ["DRYCC_REGISTRY_HOSTNAME" ] != "" {
8342 * image = registryEnv ["DRYCC_REGISTRY_HOSTNAME" ] + "/" + * image
8443 }
85- } else if registryLocation == "ecr" {
86- registryEnv , err = getDetailsFromDockerConfigSecret (registryConfigSecretInterface , registrySecretPrefix + "-" + registryLocation )
87- if err != nil {
88- return nil , err
89- }
90-
91- regSecretData , err = getDetailsFromRegistrySecret (privateRegistrySecretInterface , registrySecret )
92- if err != nil {
93- return nil , err
94- }
95- err = storage .CreateImageRepo (* image , regSecretData )
96- if err != nil {
97- return nil , err
98- }
99- hostname := strings .Replace (registryEnv ["DRYCC_REGISTRY_HOSTNAME" ], "https://" , "" , 1 )
100- * image = hostname + "/" + * image
101-
102- } else if registryLocation == "gcr" {
103- registryEnv , err = getDetailsFromDockerConfigSecret (registryConfigSecretInterface , registrySecretPrefix + "-" + registryLocation )
104- if err != nil {
105- return nil , err
106- }
107-
108- regSecretData , err = getDetailsFromRegistrySecret (privateRegistrySecretInterface , registrySecret )
109- if err != nil {
110- return nil , err
111- }
112- var key struct {
113- ProjectID string `json:"project_id"`
114- }
115- jsonKey := []byte (regSecretData ["key.json" ])
116- if err := json .Unmarshal (jsonKey , & key ); err != nil {
117- return nil , err
118- }
119- hostname := strings .Replace (registryEnv ["DRYCC_REGISTRY_HOSTNAME" ], "https://" , "" , 1 )
120- projectID := strings .Replace (key .ProjectID , ":" , "/" , - 1 )
121- registryEnv ["DRYCC_REGISTRY_GCS_PROJ_ID" ] = projectID
122- * image = strings .Replace (hostname , "https://" , "" , 1 ) + "/" + projectID + "/" + * image
12344 }
12445 return registryEnv , nil
12546}
0 commit comments