From 84ff4a3bdf80aa06feb03c04732be4972efe272b Mon Sep 17 00:00:00 2001 From: Gergely Brautigam <182850+Skarlso@users.noreply.github.com> Date: Mon, 27 May 2024 14:24:09 +0200 Subject: [PATCH] fix: only have yaml out put on stdout if dryrun is enabled --- .../ocm/commands/controllercmds/common/log.go | 19 +++++++++++++++++++ .../controllercmds/common/manifests.go | 10 +++++----- .../commands/controllercmds/install/cmd.go | 11 +++++------ .../controllercmds/install/cmd_test.go | 11 ++--------- .../install/install_cert_manager.go | 7 +++---- .../controllercmds/uninstall/cmd_test.go | 5 ++--- 6 files changed, 36 insertions(+), 27 deletions(-) create mode 100644 cmds/ocm/commands/controllercmds/common/log.go diff --git a/cmds/ocm/commands/controllercmds/common/log.go b/cmds/ocm/commands/controllercmds/common/log.go new file mode 100644 index 0000000000..7793b26cdc --- /dev/null +++ b/cmds/ocm/commands/controllercmds/common/log.go @@ -0,0 +1,19 @@ +package common + +import ( + "fmt" + + "github.com/open-component-model/ocm/pkg/out" +) + +func Outf(ctx out.Context, dryRun bool, msg string, args ...any) (int, error) { + if dryRun { + return -1, nil + } + + if len(args) == 0 { + return fmt.Fprint(ctx.StdOut(), msg) + } + + return fmt.Fprintf(ctx.StdOut(), msg, args...) +} diff --git a/cmds/ocm/commands/controllercmds/common/manifests.go b/cmds/ocm/commands/controllercmds/common/manifests.go index 9e603e67ff..bf1a5b07d9 100644 --- a/cmds/ocm/commands/controllercmds/common/manifests.go +++ b/cmds/ocm/commands/controllercmds/common/manifests.go @@ -27,7 +27,7 @@ func Install(ctx context.Context, octx clictx.Context, sm *ssa.ResourceManager, return fmt.Errorf("✗ failed to apply manifests: %w", err) } - out.Outf(octx, "► waiting for ocm deployment to be ready\n") + Outf(octx, dryRun, "► waiting for ocm deployment to be ready\n") if err = sm.Wait(objects, ssa.DefaultWaitOptions()); err != nil { return fmt.Errorf("✗ failed to wait for objects to be ready: %w", err) } @@ -50,7 +50,7 @@ func Uninstall(ctx context.Context, octx clictx.Context, sm *ssa.ResourceManager return fmt.Errorf("✗ failed to delete manifests: %w", err) } - out.Outf(octx, "► waiting for ocm deployment to be deleted\n") + Outf(octx, dryRun, "► waiting for ocm deployment to be deleted\n") if err = sm.WaitForTermination(objects, ssa.DefaultWaitOptions()); err != nil { return fmt.Errorf("✗ failed to wait for objects to be deleted: %w", err) } @@ -64,7 +64,7 @@ func fetchObjects(ctx context.Context, octx clictx.Context, releaseURL, baseURL, if err != nil { return nil, fmt.Errorf("✗ failed to retrieve latest version for %s: %w", manifest, err) } - out.Outf(octx, "► got latest version %q\n", latest) + Outf(octx, dryRun, "► got latest version %q\n", latest) version = latest } else { exists, err := existingVersion(ctx, releaseURL, version) @@ -90,7 +90,7 @@ func fetchObjects(ctx context.Context, octx clictx.Context, releaseURL, baseURL, if _, err := os.Stat(path); os.IsNotExist(err) { return nil, fmt.Errorf("✗ failed to find %s file at location: %w", filename, err) } - out.Outf(octx, "✔ successfully fetched install file\n") + Outf(octx, dryRun, "✔ successfully fetched install file\n") if dryRun { content, err := os.ReadFile(path) if err != nil { @@ -101,7 +101,7 @@ func fetchObjects(ctx context.Context, octx clictx.Context, releaseURL, baseURL, return nil, nil } - out.Outf(octx, "► applying to cluster...\n") + Outf(octx, dryRun, "► applying to cluster...\n") objects, err := ReadObjects(path) if err != nil { diff --git a/cmds/ocm/commands/controllercmds/install/cmd.go b/cmds/ocm/commands/controllercmds/install/cmd.go index 873786f0ea..5d5a5b8bea 100644 --- a/cmds/ocm/commands/controllercmds/install/cmd.go +++ b/cmds/ocm/commands/controllercmds/install/cmd.go @@ -19,7 +19,6 @@ import ( "github.com/open-component-model/ocm/cmds/ocm/commands/verbs" "github.com/open-component-model/ocm/cmds/ocm/pkg/utils" "github.com/open-component-model/ocm/pkg/contexts/clictx" - "github.com/open-component-model/ocm/pkg/out" ) var ( @@ -97,22 +96,22 @@ func (o *Command) Run() (err error) { ctx := context.Background() if !o.SkipPreFlightCheck { - out.Outf(o.Context, "► running pre-install check\n") + common.Outf(o.Context, o.DryRun, "► running pre-install check\n") if err := o.RunPreFlightCheck(ctx); err != nil { if o.InstallPrerequisites { - out.Outf(o.Context, "► installing prerequisites\n") + common.Outf(o.Context, o.DryRun, "► installing prerequisites\n") if err := o.installPrerequisites(ctx); err != nil { return err } - out.Outf(o.Context, "✔ successfully installed prerequisites\n") + common.Outf(o.Context, o.DryRun, "✔ successfully installed prerequisites\n") } else { return fmt.Errorf("✗ failed to run pre-flight check: %w\n", err) } } } - out.Outf(o.Context, "► installing ocm-controller with version %s\n", o.Version) + common.Outf(o.Context, o.DryRun, "► installing ocm-controller with version %s\n", o.Version) version := o.Version if err := common.Install( ctx, @@ -128,7 +127,7 @@ func (o *Command) Run() (err error) { return err } - out.Outf(o.Context, "✔ ocm-controller successfully installed\n") + common.Outf(o.Context, o.DryRun, "✔ ocm-controller successfully installed\n") return nil } diff --git a/cmds/ocm/commands/controllercmds/install/cmd_test.go b/cmds/ocm/commands/controllercmds/install/cmd_test.go index 9b8f5a31e3..dae47175a0 100644 --- a/cmds/ocm/commands/controllercmds/install/cmd_test.go +++ b/cmds/ocm/commands/controllercmds/install/cmd_test.go @@ -50,21 +50,14 @@ var _ = Describe("Test Environment", func() { It("install latest version", func() { buf := bytes.NewBuffer(nil) Expect(env.CatchOutput(buf).Execute("controller", "install", "-d", "-s", "-u", testServer.URL, "-a", testServer.URL)).To(Succeed()) - Expect(buf.String()).To(StringEqualTrimmedWithContext(`► installing ocm-controller with version latest -► got latest version "v0.0.1-test" -✔ successfully fetched install file -test: content -✔ ocm-controller successfully installed + Expect(buf.String()).To(StringEqualTrimmedWithContext(`test: content `)) }) It("install specific version", func() { buf := bytes.NewBuffer(nil) Expect(env.CatchOutput(buf).Execute("controller", "install", "-d", "-s", "-u", testServer.URL, "-a", testServer.URL, "-v", "v0.1.0-test-2")).To(Succeed()) - Expect(buf.String()).To(StringEqualTrimmedWithContext(`► installing ocm-controller with version v0.1.0-test-2 -✔ successfully fetched install file -test: content -✔ ocm-controller successfully installed + Expect(buf.String()).To(StringEqualTrimmedWithContext(`test: content `)) }) }) diff --git a/cmds/ocm/commands/controllercmds/install/install_cert_manager.go b/cmds/ocm/commands/controllercmds/install/install_cert_manager.go index 8fe2a325a1..089ec79fc0 100644 --- a/cmds/ocm/commands/controllercmds/install/install_cert_manager.go +++ b/cmds/ocm/commands/controllercmds/install/install_cert_manager.go @@ -11,26 +11,25 @@ import ( "github.com/mandelsoft/filepath/pkg/filepath" "github.com/open-component-model/ocm/cmds/ocm/commands/controllercmds/common" - "github.com/open-component-model/ocm/pkg/out" ) //go:embed issuer/registry_certificate.yaml var issuer []byte func (o *Command) installPrerequisites(ctx context.Context) error { - out.Outf(o.Context, "► installing cert-manager with version %s\n", o.CertManagerVersion) + common.Outf(o.Context, o.DryRun, "► installing cert-manager with version %s\n", o.CertManagerVersion) if err := common.Install(ctx, o.Context, o.SM, o.CertManagerReleaseAPIURL, o.CertManagerBaseURL, "cert-manager", "cert-manager.yaml", o.CertManagerVersion, o.DryRun); err != nil { return err } - out.Outf(o.Context, "✔ cert-manager successfully installed\n") + common.Outf(o.Context, o.DryRun, "✔ cert-manager successfully installed\n") if o.DryRun { return nil } - out.Outf(o.Context, "► creating certificate for internal registry\n") + common.Outf(o.Context, o.DryRun, "► creating certificate for internal registry\n") if err := o.createRegistryCertificate(); err != nil { return fmt.Errorf("✗ failed to create registry certificate: %w", err) diff --git a/cmds/ocm/commands/controllercmds/uninstall/cmd_test.go b/cmds/ocm/commands/controllercmds/uninstall/cmd_test.go index a9559d69ba..d6316b5894 100644 --- a/cmds/ocm/commands/controllercmds/uninstall/cmd_test.go +++ b/cmds/ocm/commands/controllercmds/uninstall/cmd_test.go @@ -50,9 +50,8 @@ var _ = Describe("Test Environment", func() { It("uninstall latest version", func() { buf := bytes.NewBuffer(nil) Expect(env.CatchOutput(buf).Execute("controller", "uninstall", "-d", "-u", testServer.URL, "-a", testServer.URL)).To(Succeed()) + fmt.Println(buf.String()) Expect(buf.String()).To(StringEqualTrimmedWithContext(`► uninstalling ocm-controller with version latest -► got latest version "v0.0.1-test" -✔ successfully fetched install file test: content ✔ ocm-controller successfully uninstalled `)) @@ -61,8 +60,8 @@ test: content It("uninstall specific version", func() { buf := bytes.NewBuffer(nil) Expect(env.CatchOutput(buf).Execute("controller", "uninstall", "-d", "-u", testServer.URL, "-a", testServer.URL, "-v", "v0.1.0-test-2")).To(Succeed()) + fmt.Println(buf.String()) Expect(buf.String()).To(StringEqualTrimmedWithContext(`► uninstalling ocm-controller with version v0.1.0-test-2 -✔ successfully fetched install file test: content ✔ ocm-controller successfully uninstalled `))