Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
13 changes: 1 addition & 12 deletions cmd/teardown.go
Original file line number Diff line number Diff line change
Expand Up @@ -2,15 +2,13 @@ package main

import (
"context"
"errors"
"fmt"
"time"

"github.com/spf13/cobra"
"github.com/stackrox/roxie/internal/component"
"github.com/stackrox/roxie/internal/deployer"
"github.com/stackrox/roxie/internal/env"
"github.com/stackrox/roxie/internal/k8s"
log "github.com/stackrox/roxie/internal/logger"
"github.com/stackrox/roxie/internal/manifest"
)
Expand Down Expand Up @@ -60,16 +58,7 @@ func runTeardown(cmd *cobra.Command, args []string) error {
ctx, cancel := context.WithTimeout(context.Background(), 30*time.Minute)
defer cancel()

var clusterConfig *deployer.Config
clusterManifest, err := manifest.LoadManifestSecret(ctx)
if errors.Is(err, k8s.ErrResourceNotFound) {
log.Infof("No roxie manifest found in cluster, proceeding without it")
} else if err != nil {
log.Warningf("Failed to load manifest from cluster: %v", err)
} else {
clusterConfig = &clusterManifest.Config
}

clusterConfig := new(deployer.DefaultConfig())
deploySettings, err := assembleConfigForCommand(clusterConfig, deploySettingsFromArgs, skipUserConfig)
if err != nil {
return err
Expand Down
2 changes: 1 addition & 1 deletion go.mod
Original file line number Diff line number Diff line change
Expand Up @@ -132,7 +132,7 @@ require (
go.opentelemetry.io/otel/trace v1.45.0 // indirect
go.yaml.in/yaml/v2 v2.4.4 // indirect
golang.org/x/net v0.60.0 // indirect
golang.org/x/sync v0.23.0 // indirect
golang.org/x/sync v0.23.0
golang.org/x/sys v0.49.0 // indirect
golang.org/x/text v0.42.0 // indirect
gopkg.in/inf.v0 v0.9.1 // indirect
Expand Down
37 changes: 23 additions & 14 deletions internal/deployer/addons.go
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,7 @@ import (
"regexp"
"slices"

"github.com/stackrox/roxie/internal/helm"
log "github.com/stackrox/roxie/internal/logger"
)

Expand Down Expand Up @@ -52,24 +53,32 @@ func (d *Deployer) deployAddOns(ctx context.Context, addOns []AddOn) error {
return nil
}

func (d *Deployer) teardownAddOns(ctx context.Context, addOns []AddOn) {
if len(addOns) == 0 {
return
// teardownDiscoveredAddOns uninstalls add-on Helm releases in the given
// namespace. Add-ons are lifecycle-aligned with Central, so the caller
// passes the Central namespace.
func (d *Deployer) teardownDiscoveredAddOns(ctx context.Context, namespace string) error {
releases, err := helm.ListByPrefix(ctx, addOnReleasePrefix, namespace)
if err != nil {
return fmt.Errorf("listing add-on Helm releases in namespace %s: %w", namespace, err)
}
if len(releases) == 0 {
return nil
}

log.Infof("Tearing down %d add-on(s)...", len(addOns))

for _, addon := range addOns {
if err := addon.Teardown(ctx); err != nil {
if !addon.IsOptional() {
log.Errorf("Failed to tear down non-optional add-on %q: %v", addon.Name(), err)
} else {
log.Warningf("Failed to tear down optional add-on %q: %v", addon.Name(), err)
}
} else {
log.Successf("Add-on %q torn down", addon.Name())
log.Infof("Tearing down %d add-on(s)...", len(releases))
var errs []error
for _, release := range releases {
if err := ctx.Err(); err != nil {
errs = append(errs, err)
break
}
if err := helm.Uninstall(ctx, release, namespace); err != nil {
errs = append(errs, fmt.Errorf("tearing down add-on release %q: %w", release, err))
continue
}
log.Successf("Add-on release %q torn down", release)
}
Comment thread
coderabbitai[bot] marked this conversation as resolved.
Resolved
return errors.Join(errs...)
}

// ResolveEnabledAddOns returns the enabled add-ons sorted by descending priority (name for ties at zero).
Expand Down
Loading
Loading