crossplane / terrajet

Generate Crossplane Providers from any Terraform Provider
https://crossplane.io
Apache License 2.0
289 stars 38 forks source link

PollInterval is not considered by controllers #288

Closed fhopfensperger closed 1 year ago

fhopfensperger commented 1 year ago

What happened?

Currently the PollInterval Option is not considered by controllers, instead the default poll interval is used. For example provider-jet-aws defines a poll interval

    o := tjcontroller.Options{
        Options: xpcontroller.Options{
            Logger:                  log,
            GlobalRateLimiter:       ratelimiter.NewGlobal(*maxReconcileRate),
            PollInterval:            1 * time.Minute,
            MaxConcurrentReconciles: 1,
            Features:                &feature.Flags{},
        },
        Provider:       config.GetProvider(),
        WorkspaceStore: terraform.NewWorkspaceStore(log, terraform.WithProviderRunner(runner)),
        SetupFn:        clients.TerraformSetupBuilder(*terraformVersion, *providerSource, *providerVersion),
    }

but this option is not considered in controller setup functions

    r := managed.NewReconciler(mgr,
        xpresource.ManagedKind(v1alpha2.Attachment_GroupVersionKind),
        managed.WithExternalConnecter(tjcontroller.NewConnector(mgr.GetClient(), o.WorkspaceStore, o.SetupFn, o.Provider.Resources["aws_autoscaling_attachment"])),
        managed.WithLogger(o.Logger.WithValues("controller", name)),
        managed.WithRecorder(event.NewAPIRecorder(mgr.GetEventRecorderFor(name))),
        managed.WithFinalizer(terraform.NewWorkspaceFinalizer(o.WorkspaceStore, xpresource.NewAPIFinalizer(mgr.GetClient(), managed.FinalizerName))),
        managed.WithTimeout(3*time.Minute),
        managed.WithInitializers(initializers),
        managed.WithConnectionPublishers(cps...),
    )

as the Terrajet generator doesn't define this option.

How can we reproduce it?

Run make generate on any jet provider