@@ -207,3 +207,63 @@ func (u *venonaOperator) Delete() error {
207
207
}
208
208
return nil
209
209
}
210
+
211
+ func (u * venonaOperator ) Upgrade () error {
212
+
213
+ // replace of sa creates new secert with sa creds
214
+ // avoid it till patch fully implemented
215
+ var skipUpgradeFor = map [string ]interface {}{
216
+ "service-account.venona.yaml" : nil ,
217
+ }
218
+
219
+ var err error
220
+ s := store .GetStore ()
221
+
222
+ kubeClientset , err := NewKubeClientset (s )
223
+ if err != nil {
224
+ logrus .Errorf ("Cannot create kubernetes clientset: %v\n " , err )
225
+ return err
226
+ }
227
+
228
+ namespace := s .KubernetesAPI .Namespace
229
+
230
+ // special case when we need to get the token from the remote to no regenrate it
231
+ // whole flow should be more like kubectl apply that build a patch
232
+ // based on remote object and candidate object
233
+ secret , err := kubeClientset .CoreV1 ().Secrets (namespace ).Get (s .AppName , metav1.GetOptions {})
234
+ if err != nil {
235
+ return err
236
+ }
237
+ token := secret .Data ["codefresh.token" ]
238
+ s .AgentToken = string (token )
239
+
240
+ kubeObjects , err := getKubeObjectsFromTempalte (s .BuildValues ())
241
+ if err != nil {
242
+ return err
243
+ }
244
+
245
+ for fileName , local := range kubeObjects {
246
+ match , _ := regexp .MatchString (venonaInstallPattern , fileName )
247
+ if match != true {
248
+ logrus .WithFields (logrus.Fields {
249
+ "Operator" : VenonaOperatorType ,
250
+ "Pattern" : venonaInstallPattern ,
251
+ }).Debugf ("Skipping upgrade of %s: pattern not match" , fileName )
252
+ continue
253
+ }
254
+
255
+ if _ , ok := skipUpgradeFor [fileName ]; ok {
256
+ logrus .WithFields (logrus.Fields {
257
+ "Operator" : VenonaOperatorType ,
258
+ }).Debugf ("Skipping upgrade of %s: should be ignored" , fileName )
259
+ continue
260
+ }
261
+
262
+ _ , _ , err := kubeobj .ReplaceObject (kubeClientset , local , namespace )
263
+ if err != nil {
264
+ return err
265
+ }
266
+ }
267
+
268
+ return nil
269
+ }
0 commit comments