mirror of
https://github.com/tailscale/tailscale.git
synced 2024-11-30 05:25:35 +00:00
35f49ac99e
cmd/k8s-operator: add CRD to chart and static manifest Add functionality to insert CRD to chart at package time. Insert CRD to static manifests as this is where they are currently consumed from. Signed-off-by: Irbe Krumina <irbe@tailscale.com>
69 lines
2.4 KiB
Go
69 lines
2.4 KiB
Go
// Copyright (c) Tailscale Inc & AUTHORS
|
|
// SPDX-License-Identifier: BSD-3-Clause
|
|
|
|
//go:build !plan9 && !windows
|
|
|
|
package main
|
|
|
|
import (
|
|
"bytes"
|
|
"os"
|
|
"os/exec"
|
|
"path/filepath"
|
|
"strings"
|
|
"testing"
|
|
)
|
|
|
|
func Test_generate(t *testing.T) {
|
|
base, err := os.Getwd()
|
|
base = filepath.Join(base, "../../../")
|
|
if err != nil {
|
|
t.Fatalf("error getting current working directory: %v", err)
|
|
}
|
|
defer cleanup(base)
|
|
if err := generate(base); err != nil {
|
|
t.Fatalf("CRD template generation: %v", err)
|
|
}
|
|
|
|
tempDir := t.TempDir()
|
|
helmCLIPath := filepath.Join(base, "tool/helm")
|
|
helmChartTemplatesPath := filepath.Join(base, "cmd/k8s-operator/deploy/chart")
|
|
helmPackageCmd := exec.Command(helmCLIPath, "package", helmChartTemplatesPath, "--destination", tempDir, "--version", "0.0.1")
|
|
helmPackageCmd.Stderr = os.Stderr
|
|
helmPackageCmd.Stdout = os.Stdout
|
|
if err := helmPackageCmd.Run(); err != nil {
|
|
t.Fatalf("error packaging Helm chart: %v", err)
|
|
}
|
|
helmPackagePath := filepath.Join(tempDir, "tailscale-operator-0.0.1.tgz")
|
|
helmLintCmd := exec.Command(helmCLIPath, "lint", helmPackagePath)
|
|
helmLintCmd.Stderr = os.Stderr
|
|
helmLintCmd.Stdout = os.Stdout
|
|
if err := helmLintCmd.Run(); err != nil {
|
|
t.Fatalf("Helm chart linter failed: %v", err)
|
|
}
|
|
|
|
// Test that default Helm install contains the CRD
|
|
installContentsWithCRD := bytes.NewBuffer([]byte{})
|
|
helmTemplateWithCRDCmd := exec.Command(helmCLIPath, "template", helmPackagePath)
|
|
helmTemplateWithCRDCmd.Stderr = os.Stderr
|
|
helmTemplateWithCRDCmd.Stdout = installContentsWithCRD
|
|
if err := helmTemplateWithCRDCmd.Run(); err != nil {
|
|
t.Fatalf("templating Helm chart with CRDs failed: %v", err)
|
|
}
|
|
if !strings.Contains(installContentsWithCRD.String(), "name: connectors.tailscale.com") {
|
|
t.Errorf("CRD not found in default chart install")
|
|
}
|
|
|
|
// Test that CRD can be excluded from Helm chart install
|
|
installContentsWithoutCRD := bytes.NewBuffer([]byte{})
|
|
helmTemplateWithoutCRDCmd := exec.Command(helmCLIPath, "template", helmPackagePath, "--set", "installCRDs=false")
|
|
helmTemplateWithoutCRDCmd.Stderr = os.Stderr
|
|
helmTemplateWithoutCRDCmd.Stdout = installContentsWithoutCRD
|
|
if err := helmTemplateWithoutCRDCmd.Run(); err != nil {
|
|
t.Fatalf("templating Helm chart without CRDs failed: %v", err)
|
|
}
|
|
if strings.Contains(installContentsWithoutCRD.String(), "name: connectors.tailscale.com") {
|
|
t.Errorf("CRD found in chart install that should not contain a CRD")
|
|
}
|
|
}
|