@@ -155,12 +155,12 @@ func runPod(ctx context.Context, client *kubernetes.Clientset, runCollector *tro
155155 },
156156 }
157157
158- if runCollector .ImagePullSecret != nil && runCollector .ImagePullSecret .Name != "" {
159- err := createSecret (ctx , client , pod .Namespace , runCollector .ImagePullSecret )
158+ if runCollector .ImagePullSecret != nil && runCollector .ImagePullSecret .Data != nil {
159+ secretName , err := createSecret (ctx , client , pod .Namespace , runCollector .ImagePullSecret )
160160 if err != nil {
161161 return nil , errors .Wrap (err , "failed to create secret" )
162162 }
163- pod .Spec .ImagePullSecrets = append (pod .Spec .ImagePullSecrets , corev1.LocalObjectReference {Name : runCollector . ImagePullSecret . Name })
163+ pod .Spec .ImagePullSecrets = append (pod .Spec .ImagePullSecrets , corev1.LocalObjectReference {Name : secretName })
164164 }
165165 created , err := client .CoreV1 ().Pods (namespace ).Create (ctx , & pod , metav1.CreateOptions {})
166166 if err != nil {
@@ -170,33 +170,33 @@ func runPod(ctx context.Context, client *kubernetes.Clientset, runCollector *tro
170170 return created , nil
171171}
172172
173- func createSecret (ctx context.Context , client * kubernetes.Clientset , namespace string , imagePullSecret * troubleshootv1beta2.ImagePullSecrets ) error {
173+ func createSecret (ctx context.Context , client * kubernetes.Clientset , namespace string , imagePullSecret * troubleshootv1beta2.ImagePullSecrets ) ( string , error ) {
174174 if imagePullSecret .Data == nil {
175- return nil
175+ return "" , nil
176176 }
177177
178178 var out bytes.Buffer
179179 data := make (map [string ][]byte )
180180 if imagePullSecret .SecretType != "kubernetes.io/dockerconfigjson" {
181- return errors .Errorf ("ImagePullSecret must be of type: kubernetes.io/dockerconfigjson" )
181+ return "" , errors .Errorf ("ImagePullSecret must be of type: kubernetes.io/dockerconfigjson" )
182182 }
183183
184184 // Check if required field in data exists
185185 v , found := imagePullSecret .Data [".dockerconfigjson" ]
186186 if ! found {
187- return errors .Errorf ("Secret type kubernetes.io/dockerconfigjson requires argument \" .dockerconfigjson\" " )
187+ return "" , errors .Errorf ("Secret type kubernetes.io/dockerconfigjson requires argument \" .dockerconfigjson\" " )
188188 }
189189 if len (imagePullSecret .Data ) > 1 {
190- return errors .Errorf ("Secret type kubernetes.io/dockerconfigjson accepts only one argument \" .dockerconfigjson\" " )
190+ return "" , errors .Errorf ("Secret type kubernetes.io/dockerconfigjson accepts only one argument \" .dockerconfigjson\" " )
191191 }
192192 // K8s client accepts only Json formated files as data, provided data must be decoded and indented
193193 parsedConfig , err := base64 .StdEncoding .DecodeString (v )
194194 if err != nil {
195- return errors .Wrap (err , "Unable to decode data." )
195+ return "" , errors .Wrap (err , "Unable to decode data." )
196196 }
197197 err = json .Indent (& out , parsedConfig , "" , "\t " )
198198 if err != nil {
199- return errors .Wrap (err , "Unable to parse encoded data." )
199+ return "" , errors .Wrap (err , "Unable to parse encoded data." )
200200 }
201201 data [".dockerconfigjson" ] = out .Bytes ()
202202
@@ -214,10 +214,10 @@ func createSecret(ctx context.Context, client *kubernetes.Clientset, namespace s
214214 Type : corev1 .SecretType (imagePullSecret .SecretType ),
215215 }
216216
217- _ , err = client .CoreV1 ().Secrets (namespace ).Create (ctx , & secret , metav1.CreateOptions {})
217+ created , err : = client .CoreV1 ().Secrets (namespace ).Create (ctx , & secret , metav1.CreateOptions {})
218218 if err != nil {
219- return errors .Wrap (err , "failed to create secret" )
219+ return "" , errors .Wrap (err , "failed to create secret" )
220220 }
221221
222- return nil
222+ return created . Name , nil
223223}
0 commit comments