What happened?
When a Composition generates resources with the same metadata.name and kind but different API group/version - such as ProviderConfig.helm and ProviderConfig.kubernetes - the Usages created for these resources will have the same metadata.name because only the resource kind and metadata.name is included in the generated metadata.name, the API group/version is excluded and is the only differentiating factor. This results in a single Usage getting created but it toggles back and forth between the two resource dependencies on each subsequent reconciliation.
How can we reproduce it?
Using a composition that generates a ProviderConfig.helm and ProviderConfig.kubernetes which have the same metadata.name and are both sequenced to depend on another common resource.
Observe that there is a single generated Usage that gets recreated on every reconciliation and toggles back and forth between the two resources.
The function should leave the Usage name generation up to the kubernetes API server, and it should also leave the reason field blank so that the Usage controller can populate it automatically.
What environment did it happen in?
Function version: v0.5.0
What happened?
When a Composition generates resources with the same
metadata.nameandkindbut different API group/version - such asProviderConfig.helmandProviderConfig.kubernetes- theUsagescreated for these resources will have the samemetadata.namebecause only the resourcekindandmetadata.nameis included in the generatedmetadata.name, the API group/version is excluded and is the only differentiating factor. This results in a singleUsagegetting created but it toggles back and forth between the two resource dependencies on each subsequent reconciliation.How can we reproduce it?
Using a composition that generates a
ProviderConfig.helmandProviderConfig.kuberneteswhich have the samemetadata.nameand are both sequenced to depend on another common resource.Observe that there is a single generated
Usagethat gets recreated on every reconciliation and toggles back and forth between the two resources.The function should leave the
Usagename generation up to the kubernetes API server, and it should also leave thereasonfield blank so that theUsagecontroller can populate it automatically.What environment did it happen in?
Function version: v0.5.0