Skip to content
Open
2 changes: 1 addition & 1 deletion cmd/config.go
Original file line number Diff line number Diff line change
Expand Up @@ -18,7 +18,7 @@ func assembleConfigForCommand(configBase *deployer.Config, configFromArgs deploy

// Apply user config on top (overriding defaults).
if !skipUserConfig {
if err := tryApplyUserDefaults(globalLogger, &config); err != nil {
if err := tryApplyUserDefaults(&config); err != nil {
return deployer.Config{}, fmt.Errorf("applying user config: %w", err)
}
}
Expand Down
41 changes: 17 additions & 24 deletions cmd/deploy.go
Original file line number Diff line number Diff line change
Expand Up @@ -21,7 +21,7 @@ import (
"github.com/stackrox/roxie/internal/helpers"
"github.com/stackrox/roxie/internal/imagetag"
"github.com/stackrox/roxie/internal/k8s"
"github.com/stackrox/roxie/internal/logger"
log "github.com/stackrox/roxie/internal/logger"
"github.com/stackrox/roxie/internal/manifest"
"github.com/stackrox/roxie/internal/roxieenv"
"github.com/stackrox/roxie/internal/stackroxversions"
Expand Down Expand Up @@ -218,9 +218,8 @@ this flag can be used to tell roxie how to pre-load images for the current clust
}

func runDeploy(cmd *cobra.Command, args []string) error {
log := globalLogger
if !dryRun {
if err := env.Initialize(log); err != nil {
if err := env.Initialize(); err != nil {
return err
}
}
Expand All @@ -241,7 +240,7 @@ func runDeploy(cmd *cobra.Command, args []string) error {
setupCtx, setupCancel := context.WithTimeout(context.Background(), 10*time.Minute)
defer setupCancel()

clusterConfig := retrieveClusterConfigForComponents(setupCtx, log, components)
clusterConfig := retrieveClusterConfigForComponents(setupCtx, components)

deploySettings, err := assembleConfigForCommand(clusterConfig, deploySettingsFromArgs, skipUserConfig)
if err != nil {
Expand All @@ -254,7 +253,7 @@ func runDeploy(cmd *cobra.Command, args []string) error {
if deploySettings.Roxie.Version != "" {
log.Dimf("Using main image tag %s", deploySettings.Roxie.Version)
} else {
mainImageTag, err := helpers.LookupMainImageTag(ctx, log)
mainImageTag, err := helpers.LookupMainImageTag(ctx)
if err != nil {
return fmt.Errorf("looking up main image tag: %w", err)
}
Expand All @@ -267,15 +266,15 @@ func runDeploy(cmd *cobra.Command, args []string) error {
}
}

if err := configureConfig(log, components, &deploySettings); err != nil {
if err := configureConfig(components, &deploySettings); err != nil {
return err
}

if err := deployValidate(log, components, &deploySettings); err != nil {
if err := deployValidate(components, &deploySettings); err != nil {
return err
}

d, err := deployer.New(log)
d, err := deployer.New()
if err != nil {
return fmt.Errorf("failed to create deployer: %w", err)
}
Expand All @@ -284,7 +283,6 @@ func runDeploy(cmd *cobra.Command, args []string) error {
if envrc != "" {
d.SetEnvrcFile(envrc)
}
d.SetVerbose(verbose)
d.SetConfig(deploySettings)

if dryRun {
Expand All @@ -303,7 +301,7 @@ func runDeploy(cmd *cobra.Command, args []string) error {
if deploySettings.Roxie.ClusterType.IsLocal() && !deploySettings.Roxie.KonfluxImagesEnabled() {
var preLoader deployer.ImagePreLoader
if imagePreLoadCommand != "" {
preLoader = deployer.NewCustomImagePreloader(ctx, log, imagePreLoadCommand)
preLoader = deployer.NewCustomImagePreloader(imagePreLoadCommand)
} else {
preLoader, err = d.GetPreLoaderForCluster()
if err != nil {
Expand Down Expand Up @@ -352,13 +350,13 @@ func runDeploy(cmd *cobra.Command, args []string) error {
RoxieEnvironment: roxieEnv,
Config: deploySettings,
}
if err := manifest.CreateManifestSecretOnCluster(ctx, log, m); err != nil {
if err := manifest.CreateManifestSecretOnCluster(ctx, m); err != nil {
log.Warningf("Failed to save roxie manifest: %v", err)
}
}

if components.IncludesCentral() && envrc == "" {
if err := spawnSubshellForDeployerEnv(deploySettings.Roxie, d, log); err != nil {
if err := spawnSubshellForDeployerEnv(deploySettings.Roxie, d); err != nil {
return fmt.Errorf("failed to spawn subshell: %w", err)
}
}
Expand Down Expand Up @@ -406,10 +404,9 @@ func validateContainerizedCredentials(registry string, clusterType types.Cluster

func retrieveClusterConfigForComponents(
ctx context.Context,
log *logger.Logger,
components component.Component,
) *deployer.Config {
clusterManifest, err := manifest.LoadManifestSecret(ctx, log)
clusterManifest, err := manifest.LoadManifestSecret(ctx)
if err != nil {
if errors.Is(err, k8s.ErrResourceNotFound) {
log.Dim("No existing manifest found on cluster, starting from defaults")
Expand All @@ -429,7 +426,7 @@ func retrieveClusterConfigForComponents(
return &clusterManifest.Config
}

func configureConfig(log *logger.Logger, components component.Component, deploySettings *deployer.Config) error {
func configureConfig(components component.Component, deploySettings *deployer.Config) error {
if deploySettings.Roxie.ClusterType == "" {
clusterType := env.GetAutoDetectedClusterType()
log.Dimf("Detected cluster type: %v", clusterType)
Expand All @@ -443,10 +440,8 @@ func configureConfig(log *logger.Logger, components component.Component, deployS
if err != nil {
return err
}
if verbose {
log.Dimf("Applying the following defaults based on cluster type %v:", clusterType)
helpers.LogMultilineYaml(log, defaults)
}
log.Debugf("Applying the following defaults based on cluster type %v:", clusterType)
log.DebugMultilineYaml(defaults)

// Deal with the "auto" resourceProfile.
if deploySettings.Central.ResourceProfile == types.ResourceProfileAuto {
Expand Down Expand Up @@ -484,10 +479,8 @@ func configureConfig(log *logger.Logger, components component.Component, deployS
return fmt.Errorf("configuring SecuredCluster spec: %w", err)
}
}
if verbose {
log.Dim("Deployment configuration:")
helpers.LogMultilineYaml(log, deploySettings)
}
log.Debug("Deployment configuration:")
log.DebugMultilineYaml(deploySettings)

if !deploySettings.Central.PortForwardingSet() && !deploySettings.Central.ExposureEnabled() {
log.Info("Enabling port-forwarding due to no exposure")
Expand All @@ -497,7 +490,7 @@ func configureConfig(log *logger.Logger, components component.Component, deployS
return nil
}

func deployValidate(log *logger.Logger, components component.Component, deploySettings *deployer.Config) error {
func deployValidate(components component.Component, deploySettings *deployer.Config) error {
if components.IncludesCentral() && os.Getenv("ROXIE_SHELL") != "" {
return errors.New("already in a roxie sub-shell (ROXIE_SHELL environment variable is set), please exit the shell and try again")
}
Expand Down
7 changes: 2 additions & 5 deletions cmd/deploy_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,6 @@ import (
"github.com/stackrox/roxie/internal/constants"
"github.com/stackrox/roxie/internal/deployer"
"github.com/stackrox/roxie/internal/imagetag"
"github.com/stackrox/roxie/internal/logger"
"github.com/stackrox/roxie/internal/paths"
"github.com/stackrox/roxie/internal/types"
"github.com/stretchr/testify/assert"
Expand Down Expand Up @@ -366,8 +365,6 @@ func TestValidateImageRegistry(t *testing.T) {
}

func TestApplyUserDefaults(t *testing.T) {
log := logger.New()

tests := []struct {
name string
config deployer.Config
Expand Down Expand Up @@ -455,7 +452,7 @@ func TestApplyUserDefaults(t *testing.T) {

cfg := deployer.NewConfig()
require.NoError(t, mergo.Merge(&cfg, &tt.config, mergo.WithOverride, mergo.WithoutDereference))
require.NoError(t, tryApplyUserDefaults(log, &cfg))
require.NoError(t, tryApplyUserDefaults(&cfg))

expected := deployer.NewConfig()
require.NoError(t, mergo.Merge(&expected, &tt.expected, mergo.WithOverride, mergo.WithoutDereference))
Expand All @@ -475,7 +472,7 @@ func TestApplyUserDefaults(t *testing.T) {
require.NoError(t, os.WriteFile(configPath, []byte(`invalid: [yaml`), 0o644))

cfg := deployer.NewConfig()
assert.Error(t, tryApplyUserDefaults(log, &cfg))
assert.Error(t, tryApplyUserDefaults(&cfg))
})
}

Expand Down
3 changes: 1 addition & 2 deletions cmd/env.go
Original file line number Diff line number Diff line change
Expand Up @@ -21,8 +21,7 @@ func newEnvCmd() *cobra.Command {
}

func runEnv(cmd *cobra.Command, args []string) error {
log := globalLogger
if err := env.Initialize(log); err != nil {
if err := env.Initialize(); err != nil {
return err
}

Expand Down
10 changes: 6 additions & 4 deletions cmd/main.go
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,7 @@ import (
"github.com/spf13/cobra"
"github.com/stackrox/roxie/internal/deployer"
"github.com/stackrox/roxie/internal/helpers"
"github.com/stackrox/roxie/internal/logger"
log "github.com/stackrox/roxie/internal/logger"
"github.com/stackrox/roxie/internal/paths"
"gopkg.in/yaml.v3"
"helm.sh/helm/v3/pkg/strvals"
Expand All @@ -27,8 +27,6 @@ var (

skipUserConfig bool

globalLogger = logger.New()

// We need this set up before command line flags are parsed.
deploySettingsFromArgs = deployer.NewConfig()
)
Expand All @@ -44,7 +42,7 @@ func main() {
// If a user config file exists, apply those user defaults on top the
// current config. This essentially means, that the user config can
// override values, which are already initialized in NewConfig().
func tryApplyUserDefaults(log *logger.Logger, config *deployer.Config) error {
func tryApplyUserDefaults(config *deployer.Config) error {
path, err := paths.UserConfigPath(true)
if err != nil {
return err
Expand Down Expand Up @@ -72,6 +70,10 @@ var rootCmd = &cobra.Command{
Short: "roxie - Advanced Cluster Security Deployment Tool",
Long: `roxie is a fast, developer-friendly CLI to deploy and manage
Red Hat Advanced Cluster Security (ACS) on any Kubernetes/OpenShift cluster.`,
PersistentPreRunE: func(cmd *cobra.Command, args []string) error {
log.SetVerbose(verbose)
return nil
},
SilenceUsage: true,
SilenceErrors: true,
}
Expand Down
11 changes: 5 additions & 6 deletions cmd/shell.go
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,7 @@ import (

"github.com/spf13/cobra"
"github.com/stackrox/roxie/internal/env"
"github.com/stackrox/roxie/internal/logger"
log "github.com/stackrox/roxie/internal/logger"
"github.com/stackrox/roxie/internal/manifest"
)

Expand Down Expand Up @@ -52,8 +52,7 @@ Examples:
}

func runShell(args []string) error {
log := logger.New()
if err := env.Initialize(log); err != nil {
if err := env.Initialize(); err != nil {
return err
}

Expand All @@ -66,7 +65,7 @@ func runShell(args []string) error {
ctx, cancel := context.WithTimeout(context.Background(), 1*time.Minute)
defer cancel()

m, err := manifest.LoadManifestSecret(ctx, log)
m, err := manifest.LoadManifestSecret(ctx)
if err != nil {
return fmt.Errorf("failed to load roxie manifest: %w", err)
}
Expand All @@ -85,10 +84,10 @@ func runShell(args []string) error {
}
defer os.RemoveAll(tempDir)

centralDeploymentInfo, err := manifest.ManifestToCentralDeploymentInfo(ctx, log, tempDir, m)
centralDeploymentInfo, err := manifest.ManifestToCentralDeploymentInfo(ctx, tempDir, m)
if err != nil {
return fmt.Errorf("extracting central deployment info from manifest: %w", err)
}

return runCommandOrSubshell(config.Roxie, centralDeploymentInfo, log, args)
return runCommandOrSubshell(config.Roxie, centralDeploymentInfo, args)
}
11 changes: 5 additions & 6 deletions cmd/subshell.go
Original file line number Diff line number Diff line change
Expand Up @@ -11,20 +11,20 @@ import (
"github.com/stackrox/roxie/internal/deployer"
"github.com/stackrox/roxie/internal/env"
"github.com/stackrox/roxie/internal/haproxy"
"github.com/stackrox/roxie/internal/logger"
log "github.com/stackrox/roxie/internal/logger"
"github.com/stackrox/roxie/internal/roxieenv"
"github.com/stackrox/roxie/internal/types"
)

// spawnSubshellForDeployerEnv assembles the roxie environment from a Deployer and invokes an interactive subshell.
func spawnSubshellForDeployerEnv(roxieConfig deployer.RoxieConfig, d *deployer.Deployer, log *logger.Logger) error {
return runCommandOrSubshell(roxieConfig, d.GetCentralDeploymentInfo(), log, nil)
func spawnSubshellForDeployerEnv(roxieConfig deployer.RoxieConfig, d *deployer.Deployer) error {
return runCommandOrSubshell(roxieConfig, d.GetCentralDeploymentInfo(), nil)
}

// runCommandOrSubshell spawns an interactive subshell or runs the provided command using the given
// central deployment info.
// It handles HAProxy setup, prints the connection banner, and manages shell lifecycle.
func runCommandOrSubshell(roxieConfig deployer.RoxieConfig, centralDeploymentInfo types.CentralDeploymentInfo, log *logger.Logger, args []string) error {
func runCommandOrSubshell(roxieConfig deployer.RoxieConfig, centralDeploymentInfo types.CentralDeploymentInfo, args []string) error {
cmdEnv := os.Environ()
for name, val := range roxieenv.AssembleRoxieEnvironment(centralDeploymentInfo).Export() {
cmdEnv = append(cmdEnv, fmt.Sprintf("%s=%s", name, val))
Expand All @@ -33,7 +33,7 @@ func runCommandOrSubshell(roxieConfig deployer.RoxieConfig, centralDeploymentInf
cmdEnv = append(cmdEnv, fmt.Sprintf("name=acs@%s", centralDeploymentInfo.KubeContext))

if roxieConfig.HAProxy.Enabled() {
cleanupFunc, err := tryStartHAProxy(log, roxieConfig, &centralDeploymentInfo)
cleanupFunc, err := tryStartHAProxy(roxieConfig, &centralDeploymentInfo)
if err != nil {
log.Warningf("Failed to start HAProxy: %v", err)
}
Expand Down Expand Up @@ -89,7 +89,6 @@ func runCommandOrSubshell(roxieConfig deployer.RoxieConfig, centralDeploymentInf
}

func tryStartHAProxy(
log *logger.Logger,
roxieConfig deployer.RoxieConfig,
centralDeploymentInfo *types.CentralDeploymentInfo) (func(), error) {

Expand Down
13 changes: 6 additions & 7 deletions cmd/teardown.go
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,7 @@ import (
"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 @@ -40,8 +41,7 @@ func newTeardownCmd(settings *deployer.Config) *cobra.Command {
}

func runTeardown(cmd *cobra.Command, args []string) error {
log := globalLogger
if err := env.Initialize(log); err != nil {
if err := env.Initialize(); err != nil {
return err
}

Expand All @@ -61,7 +61,7 @@ func runTeardown(cmd *cobra.Command, args []string) error {
defer cancel()

var clusterConfig *deployer.Config
clusterManifest, err := manifest.LoadManifestSecret(ctx, log)
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 {
Expand All @@ -75,26 +75,25 @@ func runTeardown(cmd *cobra.Command, args []string) error {
return err
}

d, err := deployer.New(log)
d, err := deployer.New()
if err != nil {
return fmt.Errorf("failed to create deployer: %w", err)
}
defer d.Cleanup()

d.SetConfig(deploySettings)
d.SetVerbose(verbose)

if err := d.Teardown(ctx, components); err != nil {
return fmt.Errorf("teardown failed: %w", err)
}

if components.IncludesCentral() {
if err := manifest.DeleteManifestSecret(ctx, log); err != nil {
if err := manifest.DeleteManifestSecret(ctx); err != nil {
log.Warningf("Failed to delete roxie manifest: %v", err)
}
}
if components == component.All {
if err := manifest.DeleteRoxieNamespace(ctx, log); err != nil {
if err := manifest.DeleteRoxieNamespace(ctx); err != nil {
log.Warningf("Failed to delete roxie namespace: %v", err)
}
}
Expand Down
Loading
Loading