Skip to content

Support generating reference resolvers targeting multiple types #38

@wwentland

Description

@wwentland

What problem are you facing?

It is currently not possible to generate ResolveReferences methods that target multiple suitable types even though there are cases in which this would be desirable.

A good example for this are references to KMS CMKs and Aliases in AWS.

Either can be used as reference in a SQS Queue's kmsMasterKeyId and Crossplane should support both.

How could Crossplane help solve your problem?

Resolving of references to KMS Keys for Queues has been implemented in the following way:

// KMSMasterKeyID - The ID of an AWS-managed customer master key (CMK)
// ...
// +crossplane:generate:reference:type=github.com/crossplane/provider-aws/apis/kms/v1alpha1.Key
KMSMasterKeyID *string `json:"kmsMasterKeyId,omitempty"`
KMSMasterKeyIDRef *xpv1.Reference `json:"kmsMasterKeyIdRef,omitempty"`
KMSMasterKeyIDSelector *xpv1.Selector `json:"kmsMasterKeyIdSelector,omitempty"`

It would be absolutely fantastic if crossplane-tools would support listing multiple suitable types here, similar to:

// KMSMasterKeyID - The ID of an AWS-managed customer master key (CMK)
// ...
// +crossplane:generate:reference:type=github.com/crossplane/provider-aws/apis/kms/v1alpha1.Key
// +crossplane:generate:reference:type=github.com/crossplane/provider-aws/apis/kms/v1alpha1.Alias
KMSMasterKeyID *string `json:"kmsMasterKeyId,omitempty"`
KMSMasterKeyIDRef *xpv1.Reference `json:"kmsMasterKeyIdRef,omitempty"`
KMSMasterKeyIDSelector *xpv1.Selector `json:"kmsMasterKeyIdSelector,omitempty"`

If there are multiple suitable candidates users would use matchLabels and suitable matches to differentiate between these resources.

Thank you!

Metadata

Metadata

Assignees

No one assigned

    Labels

    enhancementNew feature or requestwontfixThis will not be worked on

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions