Skip to content

Commit

Permalink
Fleet deploy prints hook resources too (#2968)
Browse files Browse the repository at this point in the history
Also reduce ReleaseToObjects usage in CLI commands, it focuses only on
  the "ressources"
  • Loading branch information
manno authored Oct 23, 2024
1 parent 9c785e5 commit bf50628
Show file tree
Hide file tree
Showing 5 changed files with 41 additions and 28 deletions.
10 changes: 5 additions & 5 deletions integrationtests/cli/assets/bundledeployment/bd.yaml
Original file line number Diff line number Diff line change
@@ -1,11 +1,11 @@
---
apiVersion: fleet.cattle.io/v1alpha1
content: H4sIAAAAAAAA/4SRMW/bMBCF9/6KA2eLtlygA7fCa7t6KTucpZNNhKII8iTEEPTfA5KRESdOsgjQ3Xv33gfOIlAcxtBQFOrfLBz2JJRoBteZc9VcMPD2kL7yir0Vm7RhciyUQG+OFKIZnIJpr12yKnjr1K6l2ATjOYt+A1NkyCvgCzJMFExnKILh+OrUjq+eFKD31jSYnNpNa85O1nKnHXp/i9ailvUvudNCO7FsHiMw9d4iU9yWcY/+G6BauyfjWgWHbPiLXrueGFtkVNoBFNxEVEXTe0slqloxbsIkSTUntCPV+5+p6GqfZ5DHNI8yDWBZvoCYivBD73KqpQ5Hy1X6uz/SWaIH73ch2+eC+fr7lwMocVmx1qVnzKR5dR/yWbkxWAVnO5zQylKksWNkCn/wRLZgp0v/lx8vAQAA//+su6S1jAIAAA==
content: H4sIAK9MFmcAA51TPW/bMBDd/SsOmi05SoEO2oKsyRQgS5nhTJ0sItSRICmhgeH/Hn5YbhGgtduFgO7eu3fv8HTcAFSOvJmdJF918CMWAI75jS3GiWK1koYHdajliC7sHtPbfOCkq+0KjIBAHBIWrXol55XhDpZ7wWlGB79PENyTl07ZkEEPEMgHyC0IIwZYyKlBkQcV/JkpOHzYOAet1UpiYgpeVp27pm3uBMfmRVpUbdN+j9VKcJXXPG1vMBdoshrjQrtSntDeaLUV/K647+AxE5/RCp4oYI8BO8EA5RDJa+1VVKEiWa8GL8AESQYW1DO199+ShZV+PELzmuq+SQU4nf7J3lKof3RURHoacNahTl/Xxg+a6C9pGElP2VTW/5oDgLJQRqwW6Sfm6+TWNflrhmanOzhos0fdlFWlnn0g94R70uWI/xkQT25RklBKM/OtP8QlJS+F/VDYX6KCzCbkkK+nSXds/LgbjXnvwDqqFfuAWm/zx2wPDntKWJ2NnWmDMR3s0f0KkDcT1caSw2Dc2Xd83zanzScIJmgxDgQAAA==
kind: Content
metadata:
creationTimestamp: null
name: s-ee0480cffe0c0da150814f6844d7c5bc49cc05c158c5ba1efe9a45142f36e
sha256sum: ee0480cffe0c0da150814f6844d7c5bc49cc05c158c5ba1efe9a45142f36eebc
name: s-eaab4652f067cb4cbb2498af40082a70b5bf089873703a72b6895e53daaf0dac
sha256sum: eaab4652f067cb4cbb2498af40082a70b5bf089873703a72b6895e53daaf0dac

---
apiVersion: fleet.cattle.io/v1alpha1
Expand All @@ -22,14 +22,14 @@ metadata:
name: testbundle-simple-chart
namespace: cluster-fleet-local-local-1a3d67d0a899
spec:
deploymentID: s-ee0480cffe0c0da150814f6844d7c5bc49cc05c158c5ba1efe9a45142f36e:c32e813ecbf48f56833aa2267cd3d8758eecc94f9948fb0dea510147a57760b5
deploymentID: s-eaab4652f067cb4cbb2498af40082a70b5bf089873703a72b6895e53daaf0dac:c32e813ecbf48f56833aa2267cd3d8758eecc94f9948fb0dea510147a57760b5
options:
helm:
chart: config-chart
values:
name: example-value
ignore: {}
stagedDeploymentID: s-ee0480cffe0c0da150814f6844d7c5bc49cc05c158c5ba1efe9a45142f36e:c32e813ecbf48f56833aa2267cd3d8758eecc94f9948fb0dea510147a57760b5
stagedDeploymentID: s-eaab4652f067cb4cbb2498af40082a70b5bf089873703a72b6895e53daaf0dac:c32e813ecbf48f56833aa2267cd3d8758eecc94f9948fb0dea510147a57760b5
stagedOptions:
helm:
chart: config-chart
Expand Down
12 changes: 9 additions & 3 deletions integrationtests/cli/deploy/deploy_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -157,9 +157,15 @@ var _ = Describe("Fleet CLI Deploy", func() {
It("prints a manifest and bundledeployment", func() {
buf, err := act(args)
Expect(err).NotTo(HaveOccurred())
Expect(buf).To(gbytes.Say("- apiVersion: v1"))
Expect(buf).To(gbytes.Say(" data:"))
Expect(buf).To(gbytes.Say(" name: example-value"))
Expect(buf.Contents()).To(And(
ContainSubstring("- apiVersion: v1"),
ContainSubstring("ConfigMap"),
ContainSubstring(" data:"),
ContainSubstring(" name: example-value"),
ContainSubstring("ServiceAccount"),
ContainSubstring("helm.sh/hook"),
ContainSubstring("some-operator"),
))

cm := &corev1.ConfigMap{}
err = k8sClient.Get(ctx, types.NamespacedName{Namespace: namespace, Name: "test-simple-chart-config"}, cm)
Expand Down
28 changes: 18 additions & 10 deletions internal/cmd/cli/deploy.go
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,7 @@ import (

"github.com/spf13/cobra"
"helm.sh/helm/v3/pkg/cli"
"helm.sh/helm/v3/pkg/release"
"k8s.io/apimachinery/pkg/runtime"

command "github.com/rancher/fleet/internal/cmd"
Expand Down Expand Up @@ -117,17 +118,12 @@ func (d *Deploy) Run(cmd *cobra.Command, args []string) error {
}

if d.DryRun {
resources, err := helmdeployer.Template(ctx, bd.Name, manifest, bd.Spec.Options, d.KubeVersion)
rel, err := helmdeployer.Template(ctx, bd.Name, manifest, bd.Spec.Options, d.KubeVersion)
if err != nil {
return err
}
b, err = yaml.Marshal(resources)
if err != nil {
return err
}
cmd.Println(string(b))

return nil
return printRelease(cmd, rel)
}

cfg := ctrl.GetConfigOrDie()
Expand Down Expand Up @@ -159,17 +155,29 @@ func (d *Deploy) Run(cmd *cobra.Command, args []string) error {
return err
}

release, err := deployer.Deploy(ctx, bd.Name, manifest, bd.Spec.Options)
rel, err := deployer.Deploy(ctx, bd.Name, manifest, bd.Spec.Options)
if err != nil {
return err
}

objects, err := helmdeployer.ReleaseToObjects(release)
return printRelease(cmd, rel)
}

func printRelease(cmd *cobra.Command, rel *release.Release) error {
resources, err := wyaml.ToObjects(bytes.NewBufferString(rel.Manifest))
if err != nil {
return err
}

b, err = yaml.Marshal(objects)
for _, h := range rel.Hooks {
hookResources, err := wyaml.ToObjects(bytes.NewBufferString(h.Manifest))
if err != nil {
return err
}
resources = append(resources, hookResources...)
}

b, err := yaml.Marshal(resources)
if err != nil {
return err
}
Expand Down
7 changes: 6 additions & 1 deletion internal/cmd/cli/match/match.go
Original file line number Diff line number Diff line change
Expand Up @@ -89,7 +89,12 @@ func printMatch(ctx context.Context, bundle *fleet.Bundle, target *fleet.BundleT

manifest := manifest.New(bundle.Spec.Resources)

objs, err := helmdeployer.Template(ctx, bundle.Name, manifest, opts, "")
rel, err := helmdeployer.Template(ctx, bundle.Name, manifest, opts, "")
if err != nil {
return err
}

objs, err := yaml.ToObjects(bytes.NewBufferString(rel.Manifest))
if err != nil {
return err
}
Expand Down
12 changes: 3 additions & 9 deletions internal/helmdeployer/template.go
Original file line number Diff line number Diff line change
Expand Up @@ -14,18 +14,17 @@ import (
"helm.sh/helm/v3/pkg/action"
"helm.sh/helm/v3/pkg/chartutil"
kubefake "helm.sh/helm/v3/pkg/kube/fake"
"helm.sh/helm/v3/pkg/release"
"helm.sh/helm/v3/pkg/storage"
"helm.sh/helm/v3/pkg/storage/driver"

"k8s.io/apimachinery/pkg/runtime"
)

var (
defaultKubernetesVersion = "v1.25.0"
)

// Template runs helm template and returns the resources as a list of objects, without applying them.
func Template(ctx context.Context, bundleID string, manifest *manifest.Manifest, options fleet.BundleDeploymentOptions, kubeVersionString string) ([]runtime.Object, error) {
func Template(ctx context.Context, bundleID string, manifest *manifest.Manifest, options fleet.BundleDeploymentOptions, kubeVersionString string) (*release.Release, error) {
h := &Helm{
globalCfg: action.Configuration{},
useGlobalCfg: true,
Expand All @@ -52,10 +51,5 @@ func Template(ctx context.Context, bundleID string, manifest *manifest.Manifest,
h.globalCfg.Log = logrus.Infof
h.globalCfg.Releases = storage.Init(mem)

release, err := h.Deploy(ctx, bundleID, manifest, options)
if err != nil {
return nil, err
}

return ReleaseToObjects(release)
return h.Deploy(ctx, bundleID, manifest, options)
}

0 comments on commit bf50628

Please sign in to comment.