Buckets
Buckets, once created, cannot be modified (eg if encrypted, they cannot be unencrypted. Or moved to a different geography). So the crossplane "Update" call does not do anything really... (because the spec is "write once" and the "Observe" reports always that things are up-to-date).
The problem this causes is that if you "import" a bucket - but while doing so you give the "wrong" (ie not-reflecting-the-state-of-affairs-in-the-IBM-cloud) spec, in the YAML file (eg the bucket is encrypted but you import is as unencrypted, or with a different location), ... the "copy" you-end-up-with-in-crossplane will have a different ForProvider spec than the one in the IBM cloud. Keep in mind that
- our crossplane controller does NOT get involved in the "import"
- of course, subsequently, the Observe(...) method will be called
- ...if the Observe(..) were to report "not in sync", then the Update(...) would be invoked
- but it does not do anything currently, nor could it - even if it wanted
- ...so to prevent continuous Update(..) invocations, we just have Observe(...) report "all good"
We can probably have the Observe(...) method report this inconsistency in another way (eg via "status" - certainly not via telling crossplane "things are not in sync -> please call Update(..) ASAP"), but we decided to not do it, for now.
More about buckets here
Bucket configurations
Read all about them here