# README

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

# Functions

SetupBucket adds a controller that reconciles Bucket objects.
SetupBucketConfig adds a controller that reconciles Bucket objects.