Skip to content
This repository has been archived by the owner on Dec 15, 2022. It is now read-only.

Customizable late initialization function for a resource #286

Open
sboschman opened this issue Jul 28, 2022 · 0 comments
Open

Customizable late initialization function for a resource #286

sboschman opened this issue Jul 28, 2022 · 0 comments
Labels
enhancement New feature or request

Comments

@sboschman
Copy link

sboschman commented Jul 28, 2022

Currently late initialization is configured with

r.LateInitializer = config.LateInitializer{
  IgnoredFields: []string{"address_prefix"},
}

As the generation template defaults to using the GenericLateInitializer I don't see a way to have a custom late init function for a specific resource.

A configurable custom late init function per resource would be helpful to solve this issue I believe.
This custom function should be able to handle the following use cases:

  1. Have access to the forProvider fields to use as decision input which parameters from the terraform state to ignore
  2. Use a wildcard glob or regex to match terraform state parameters to exclude (exclude all labels/annotations containing cattle.io)

Scenario 1:

forProvider:
  gkeConfigV2:
    - imported: true

This imported=true use case requires only a specific few attributes to be set, the terraform state on the other hand returns more computed attributes. These computed attributes should be ignored during a tf plan/apply, otherwise they conflict with the imported=true attribute.

Scenario 2:

forProvider:
  annotations:
    example.com/crossplane: hello
  gkeConfigV2:
    - imported: true

Terraform state return additional annotations and labels, but these are externally managed (imported=true). These labels/annotations should be excluded from tf plan/apply and resource drift detection. Crossplane should not be trying to 'revert' the values of these labels/annotations to the value it got after the create/initial apply.

For example, Rancher adds annotations for its own internal housekeeping with a timestamp value:

clusters.management.cattle.io/ke-last-refresh: "1658949309"

When Rancher refreshes, and updates the value of this annotation, Crossplane triggers resource drift and tries to revert the value, which is obviously not what should be happening.

Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Labels
enhancement New feature or request
Projects
None yet
Development

No branches or pull requests

1 participant