Support generating reference resolvers targeting multiple types
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!
This issue has been automatically marked as stale because it has not had recent activity. It will be closed if no further activity occurs. Thank you for your contributions.
This would still be great to have.
I would love to have this too
Really needed functionality