@@ -15,7 +15,9 @@ package function
15
15
16
16
import (
17
17
"context"
18
+ "encoding/json"
18
19
"errors"
20
+ "fmt"
19
21
"time"
20
22
21
23
ackcompare "github.com/aws-controllers-k8s/runtime/pkg/compare"
@@ -95,8 +97,14 @@ func (rm *resourceManager) customUpdateFunction(
95
97
// not correct to sequentially call UpdateFunctionConfiguration and
96
98
// UpdateFunctionCode because both of them can put the function in a
97
99
// Pending state.
100
+ bytes , _ := json .Marshal (desired .ko .Spec .CodeS3SHA256 )
101
+ fmt .Println ("Desired is:" , string (bytes ))
102
+
103
+ bytes1 , _ := json .Marshal (latest .ko .Spec .CodeS3SHA256 )
104
+ fmt .Println ("Latest is:" , string (bytes1 ))
105
+
98
106
switch {
99
- case delta .DifferentAt ("Spec.Code" ):
107
+ case delta .DifferentAt ("Spec.Code" ) || delta . DifferentAt ( "Spec.CodeS3SHA256" ) :
100
108
err = rm .updateFunctionCode (ctx , desired , delta )
101
109
if err != nil {
102
110
return nil , err
@@ -335,30 +343,22 @@ func (rm *resourceManager) updateFunctionCode(
335
343
exit := rlog .Trace ("rm.updateFunctionCode" )
336
344
defer exit (err )
337
345
338
- if delta .DifferentAt ("Spec.Code.S3Key" ) &&
339
- ! delta .DifferentAt ("Spec.Code.S3Bucket" ) &&
340
- ! delta .DifferentAt ("Spec.Code.S3ObjectVersion" ) &&
341
- ! delta .DifferentAt ("Spec.Code.ImageURI" ) {
342
- log := ackrtlog .FromContext (ctx )
343
- log .Info ("updating code.s3Key field is not currently supported." )
344
- return nil
345
- }
346
-
347
346
dspec := desired .ko .Spec
348
347
input := & svcsdk.UpdateFunctionCodeInput {
349
348
FunctionName : aws .String (* dspec .Name ),
350
349
}
351
350
352
- if dspec .Code != nil {
353
- switch {
354
- case dspec .Code .ImageURI != nil :
355
- input .ImageUri = dspec .Code .ImageURI
356
- case dspec .Code .S3Bucket != nil ,
357
- dspec .Code .S3Key != nil ,
358
- dspec .Code .S3ObjectVersion != nil :
359
- input .S3Bucket = dspec .Code .S3Bucket
360
- input .S3Key = dspec .Code .S3Key
361
- input .S3ObjectVersion = dspec .Code .S3ObjectVersion
351
+ if delta .DifferentAt ("Spec.ImageURI" ) {
352
+ input .ImageUri = dspec .Code .ImageURI
353
+ } else if delta .DifferentAt ("Spec.CodeS3SHA256" ) {
354
+ if dspec .Code .S3Key != nil {
355
+ input .S3Key = aws .String (* dspec .Code .S3Key )
356
+ }
357
+ if dspec .Code .S3Bucket != nil {
358
+ input .S3Bucket = aws .String (* dspec .Code .S3Bucket )
359
+ }
360
+ if dspec .Code .S3ObjectVersion != nil {
361
+ input .S3ObjectVersion = aws .String (* dspec .Code .S3ObjectVersion )
362
362
}
363
363
}
364
364
@@ -416,6 +416,26 @@ func customPreCompare(
416
416
delta .Add ("Spec.Code.ImageURI" , a .ko .Spec .Code .ImageURI , b .ko .Spec .Code .ImageURI )
417
417
}
418
418
}
419
+
420
+ expected , _ := json .Marshal (a .ko .Spec .CodeS3SHA256 )
421
+ fmt .Println ("expected:" , string (expected ))
422
+
423
+ actual , _ := json .Marshal (b .ko .Status .CodeSHA256 )
424
+ fmt .Println ("actual:" , string (actual ))
425
+
426
+ if * b .ko .Status .CodeSHA256 != "" || * a .ko .Spec .CodeS3SHA256 != "" {
427
+ if * b .ko .Status .CodeSHA256 != * a .ko .Spec .CodeS3SHA256 {
428
+ delta .Add ("Spec.CodeS3SHA256" , a .ko .Spec .CodeS3SHA256 , b .ko .Status .CodeSHA256 )
429
+ }
430
+ }
431
+
432
+ // if ackcompare.HasNilDifference(a.ko.Spec.CodeS3SHA256, b.ko.Spec.CodeS3SHA256) {
433
+ // delta.Add("Spec.CodeS3SHA256", a.ko.Spec.CodeS3SHA256, b.ko.Spec.CodeS3SHA256)
434
+ // } else if a.ko.Spec.CodeS3SHA256 != nil && b.ko.Spec.CodeS3SHA256 != nil {
435
+ // if *a.ko.Spec.CodeS3SHA256 != *b.ko.Spec.CodeS3SHA256 {
436
+ // delta.Add("Spec.CodeS3SHA256", a.ko.Spec.CodeS3SHA256, b.ko.Spec.CodeS3SHA256)
437
+ // }
438
+ // }
419
439
//TODO(hialylmh) handle Spec.Code.S3bucket changes
420
440
// if ackcompare.HasNilDifference(a.ko.Spec.Code.S3Bucket, b.ko.Spec.Code.S3Bucket) {
421
441
// delta.Add("Spec.Code.S3Bucket", a.ko.Spec.Code.S3Bucket, b.ko.Spec.Code.S3Bucket)
@@ -424,20 +444,20 @@ func customPreCompare(
424
444
// delta.Add("Spec.Code.S3Bucket", a.ko.Spec.Code.S3Bucket, b.ko.Spec.Code.S3Bucket)
425
445
// }
426
446
// }
427
- if ackcompare .HasNilDifference (a .ko .Spec .Code .S3Key , b .ko .Spec .Code .S3Key ) {
428
- delta .Add ("Spec.Code.S3Key" , a .ko .Spec .Code .S3Key , b .ko .Spec .Code .S3Key )
429
- } else if a .ko .Spec .Code .S3Key != nil && b .ko .Spec .Code .S3Key != nil {
430
- if * a .ko .Spec .Code .S3Key != * b .ko .Spec .Code .S3Key {
431
- delta .Add ("Spec.Code.S3Key" , a .ko .Spec .Code .S3Key , b .ko .Spec .Code .S3Key )
432
- }
433
- }
434
- if ackcompare .HasNilDifference (a .ko .Spec .Code .S3ObjectVersion , b .ko .Spec .Code .S3ObjectVersion ) {
435
- delta .Add ("Spec.Code.S3ObjectVersion" , a .ko .Spec .Code .S3ObjectVersion , b .ko .Spec .Code .S3ObjectVersion )
436
- } else if a .ko .Spec .Code .S3ObjectVersion != nil && b .ko .Spec .Code .S3ObjectVersion != nil {
437
- if * a .ko .Spec .Code .S3ObjectVersion != * b .ko .Spec .Code .S3ObjectVersion {
438
- delta .Add ("Spec.Code.S3ObjectVersion" , a .ko .Spec .Code .S3ObjectVersion , b .ko .Spec .Code .S3ObjectVersion )
439
- }
440
- }
447
+ // if ackcompare.HasNilDifference(a.ko.Spec.Code.S3Key, b.ko.Spec.Code.S3Key) {
448
+ // delta.Add("Spec.Code.S3Key", a.ko.Spec.Code.S3Key, b.ko.Spec.Code.S3Key)
449
+ // } else if a.ko.Spec.Code.S3Key != nil && b.ko.Spec.Code.S3Key != nil {
450
+ // if *a.ko.Spec.Code.S3Key != *b.ko.Spec.Code.S3Key {
451
+ // delta.Add("Spec.Code.S3Key", a.ko.Spec.Code.S3Key, b.ko.Spec.Code.S3Key)
452
+ // }
453
+ // }
454
+ // if ackcompare.HasNilDifference(a.ko.Spec.Code.S3ObjectVersion, b.ko.Spec.Code.S3ObjectVersion) {
455
+ // delta.Add("Spec.Code.S3ObjectVersion", a.ko.Spec.Code.S3ObjectVersion, b.ko.Spec.Code.S3ObjectVersion)
456
+ // } else if a.ko.Spec.Code.S3ObjectVersion != nil && b.ko.Spec.Code.S3ObjectVersion != nil {
457
+ // if *a.ko.Spec.Code.S3ObjectVersion != *b.ko.Spec.Code.S3ObjectVersion {
458
+ // delta.Add("Spec.Code.S3ObjectVersion", a.ko.Spec.Code.S3ObjectVersion, b.ko.Spec.Code.S3ObjectVersion)
459
+ // }
460
+ // }
441
461
}
442
462
}
443
463
0 commit comments