Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Support distinguishing flavours #7

Draft
wants to merge 3 commits into
base: main
Choose a base branch
from

Conversation

mtesseract
Copy link

@mtesseract mtesseract commented Jan 3, 2022

This work is part of a proof-of-concept for https://issues.redhat.com/browse/ROX-8711.

The basic idea here is that we would like to execute the Helm chart's test suite also in the case where we pre-render the chart files in "deployment bundle mode".

However, the difficulty is that in general the tests require some modification depending on whether executed in the "Helm chart mode" or in the "deployment bundle mode".

This PR extends the helmtest framework such that tests can be run selectively, depending on a "flavour" value, which is passed in by the user of helmtest and which can be accessed by the leave tests defined in the test suite.

Copy link
Contributor

@misberner misberner left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

To be honest, I'm not a fan of this approach. It seems very limited/tailored towards a single use case, when a more general approach that doesn't rely on introducing a concept foreign to Helm charts would work as well.

Here's a rough idea sketch, off the top of my head:

  • Instead of flavor, we could use either the Helm release name (.Release.Name) or the .Release.Service value. We currently don't rely on either to distinguish kubectl vs true helm, because they aren't available at the meta-templating level. However, it seems reasonable and in line with Helm's design to either set a different release name or service (or both) when rendering kubectl templates (edit: I found that actually the chart name is different at least for sensor, so that could also be used)
  • Instead of suppressing individual test cases, allow conditional expect statements. Thus, in addition to supporting a multiline string for expect, allow a list of the following form (the individual YAML labels can obviously be different):
expect:
- that: <some kubectl bundle-only property>
  when: .helm.Chart.Name == "sensor"

WDYT?

@mtesseract
Copy link
Author

Sounds like a good solution, thanks for the feedback.

@mtesseract
Copy link
Author

@misberner , just want to make sure that we are not looking at this feature for helmtest in isolation, since this is directly connected to the work in stackrox/stackrox#218.

Do you plan to do a separate review of the PoC of the stackrox PR? We should be aligned on what changes we actually aim for before we iterate on this helmtest feature, I think.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

3 participants