Skip to content

Commit

Permalink
feat(helm/bake): Add additional input fields where we can fill in det…
Browse files Browse the repository at this point in the history
…ails of the APIs versions (#1020) (#1031)

* security(feature): Change codeql to scan daily instead of weekly

* feat(helm/bake): Add additional input fields where we can fill in details of the APIs versions

- These input fields will not be pre-populated with versions of the target cluster available in the environment.

- They will become part of the bake result.

- Added API_VERSIONS_ENABLED env variable flag

* feat(helm/bake): Add additional input fields where we can fill in details of the APIs versions

- These input fields will not be pre-populated with versions of the target cluster available in the environment.

- They will become part of the bake result.

- Added API_VERSIONS_ENABLED env variable flag

* feat(helm/bake): Add additional input fields where we can fill in details of the APIs versions

- These input fields will not be pre-populated with versions of the target cluster available in the environment.

- They will become part of the bake result.

- Added API_VERSIONS_ENABLED env variable flag

---------

Co-authored-by: Jason McIntosh <[email protected]>
(cherry picked from commit 4a12958)

Co-authored-by: Krystian <[email protected]>
  • Loading branch information
mergify[bot] and ciurescuraul committed Oct 18, 2023
1 parent a035e26 commit 93ae1b4
Show file tree
Hide file tree
Showing 3 changed files with 67 additions and 0 deletions.
Expand Up @@ -3,12 +3,16 @@
import com.netflix.spinnaker.kork.artifacts.model.Artifact;
import com.netflix.spinnaker.rosco.manifests.BakeManifestRequest;
import java.util.List;
import javax.annotation.Nullable;
import lombok.Data;
import lombok.EqualsAndHashCode;

@Data
@EqualsAndHashCode(callSuper = true)
public class HelmBakeManifestRequest extends BakeManifestRequest {
@Nullable String apiVersions;
@Nullable String kubeVersion;

String namespace;

/**
Expand Down
Expand Up @@ -15,6 +15,7 @@
import java.util.stream.Collectors;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Component;
import org.springframework.util.StringUtils;

@Component
@Slf4j
Expand Down Expand Up @@ -88,6 +89,18 @@ public BakeRecipe buildCommand(
command.add("--include-crds");
}

String apiVersions = request.getApiVersions();
if (StringUtils.hasText(apiVersions)) {
command.add("--api-versions");
command.add(apiVersions);
}

String kubeVersion = request.getKubeVersion();
if (StringUtils.hasText(kubeVersion)) {
command.add("--kube-version");
command.add(kubeVersion);
}

Map<String, Object> overrides = request.getOverrides();
if (!overrides.isEmpty()) {
List<String> overrideList = new ArrayList<>();
Expand Down
Expand Up @@ -340,6 +340,56 @@ public void buildBakeRecipeWithGitRepoArtifactUsingHelmChartFilePath(@TempDir Pa
}
}

@Test
public void buildBakeRecipeIncludingHelmVersionsOptionsWithHelm3() throws IOException {
ArtifactDownloader artifactDownloader = mock(ArtifactDownloader.class);
RoscoHelmConfigurationProperties helmConfigurationProperties =
new RoscoHelmConfigurationProperties();
HelmTemplateUtils helmTemplateUtils =
new HelmTemplateUtils(artifactDownloader, helmConfigurationProperties);

HelmBakeManifestRequest request = new HelmBakeManifestRequest();
Artifact artifact = Artifact.builder().build();
request.setTemplateRenderer(BakeManifestRequest.TemplateRenderer.HELM3);
request.setApiVersions("customApiVersion");
request.setKubeVersion("customKubernetesVersion");
request.setInputArtifacts(Collections.singletonList(artifact));
request.setOverrides(Collections.emptyMap());

try (BakeManifestEnvironment env = BakeManifestEnvironment.create()) {
BakeRecipe bakeRecipe = helmTemplateUtils.buildBakeRecipe(env, request);
assertTrue(bakeRecipe.getCommand().contains("--api-versions"));
assertTrue(bakeRecipe.getCommand().indexOf("--api-versions") > 3);
assertTrue(bakeRecipe.getCommand().contains("--kube-version"));
assertTrue(bakeRecipe.getCommand().indexOf("--kube-version") > 5);
}
}

@Test
public void buildBakeRecipeIncludingHelmVersionsOptionsWithHelm2() throws IOException {
ArtifactDownloader artifactDownloader = mock(ArtifactDownloader.class);
RoscoHelmConfigurationProperties helmConfigurationProperties =
new RoscoHelmConfigurationProperties();
HelmTemplateUtils helmTemplateUtils =
new HelmTemplateUtils(artifactDownloader, helmConfigurationProperties);

HelmBakeManifestRequest request = new HelmBakeManifestRequest();
Artifact artifact = Artifact.builder().build();
request.setTemplateRenderer(BakeManifestRequest.TemplateRenderer.HELM2);
request.setApiVersions("customApiVersion");
request.setKubeVersion("customKubernetesVersion");
request.setInputArtifacts(Collections.singletonList(artifact));
request.setOverrides(Collections.emptyMap());

try (BakeManifestEnvironment env = BakeManifestEnvironment.create()) {
BakeRecipe bakeRecipe = helmTemplateUtils.buildBakeRecipe(env, request);
assertTrue(bakeRecipe.getCommand().contains("--api-versions"));
assertTrue(bakeRecipe.getCommand().indexOf("--api-versions") > 3);
assertTrue(bakeRecipe.getCommand().contains("--kube-version"));
assertTrue(bakeRecipe.getCommand().indexOf("--kube-version") > 5);
}
}

@Test
public void buildBakeRecipeIncludingCRDsWithHelm3() throws IOException {
ArtifactDownloader artifactDownloader = mock(ArtifactDownloader.class);
Expand Down

0 comments on commit 93ae1b4

Please sign in to comment.