Skip to content

Commit

Permalink
Merge #138711
Browse files Browse the repository at this point in the history
138711: roachprod: refactor gcp environment variable initialization r=vidit-bhat,srosenberg a=shailendra-patel

Moved the initialization of default variables related to the GCP Project and DNS into the GCP provider Init function instead of initializing them during package initialization. Setting default variables as global variables caused issues when environment variables are modified before calling Init.

Epic: none

Release note: None

Co-authored-by: Shailendra Patel <[email protected]>
  • Loading branch information
craig[bot] and shailendra-patel committed Jan 13, 2025
2 parents 358c9a5 + 5fdced8 commit 31e84cb
Show file tree
Hide file tree
Showing 4 changed files with 20 additions and 11 deletions.
1 change: 0 additions & 1 deletion pkg/cmd/drtprod/cli/BUILD.bazel
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,6 @@ go_library(
deps = [
"//pkg/cmd/drtprod/cli/commands",
"//pkg/cmd/roachprod/cli",
"//pkg/roachprod",
"@com_github_spf13_cobra//:cobra",
],
)
9 changes: 4 additions & 5 deletions pkg/cmd/drtprod/cli/handlers.go
Original file line number Diff line number Diff line change
Expand Up @@ -11,20 +11,19 @@ import (

"github.com/cockroachdb/cockroach/pkg/cmd/drtprod/cli/commands"
"github.com/cockroachdb/cockroach/pkg/cmd/roachprod/cli"
"github.com/cockroachdb/cockroach/pkg/roachprod"
"github.com/spf13/cobra"
)

// Initialize sets up the environment and initializes the command-line interface.
func Initialize(ctx context.Context) {
func init() {
// Set environment variables for the GCE project and DNS configurations.
_ = os.Setenv("ROACHPROD_DNS", "drt.crdb.io")
_ = os.Setenv("ROACHPROD_GCE_DNS_DOMAIN", "drt.crdb.io")
_ = os.Setenv("ROACHPROD_GCE_DNS_ZONE", "drt")
_ = os.Setenv("ROACHPROD_GCE_DEFAULT_PROJECT", "cockroach-drt")
// Initialize cloud providers for roachprod.
_ = roachprod.InitProviders()
}

// Initialize sets up the environment and initializes the command-line interface.
func Initialize(ctx context.Context) {
// Disable command sorting in Cobra (command-line parser).
cobra.EnableCommandSorting = false

Expand Down
6 changes: 5 additions & 1 deletion pkg/roachprod/vm/gce/dns.go
Original file line number Diff line number Diff line change
Expand Up @@ -35,6 +35,10 @@ const (
)

var (
dnsDefaultZone, dnsDefaultDomain, dnsDefaultManagedZone, dnsDefaultManagedDomain string
)

func initDNSDefault() {
dnsDefaultZone = config.EnvOrDefaultString(
"ROACHPROD_GCE_DNS_ZONE",
"roachprod",
Expand All @@ -56,7 +60,7 @@ var (
"ROACHPROD_GCE_DNS_MANAGED_DOMAIN",
"roachprod-managed.crdb.io",
)
)
}

var ErrDNSOperation = fmt.Errorf("error during Google Cloud DNS operation")

Expand Down
15 changes: 11 additions & 4 deletions pkg/roachprod/vm/gce/gcloud.go
Original file line number Diff line number Diff line change
Expand Up @@ -64,6 +64,12 @@ const (
var providerInstance = &Provider{}

var (
defaultDefaultProject, defaultMetadataProject, defaultDNSProject, defaultDefaultServiceAccount string
// projects for which a cron GC job exists.
projectsWithGC []string
)

func initGCEProjectDefaults() {
defaultDefaultProject = config.EnvOrDefaultString(
"ROACHPROD_GCE_DEFAULT_PROJECT", "cockroach-ephemeral",
)
Expand All @@ -80,7 +86,8 @@ var (
"ROACHPROD_GCE_DEFAULT_SERVICE_ACCOUNT",
"[email protected]",
)
)
projectsWithGC = []string{defaultDefaultProject}
}

// DefaultProject returns the default GCE project. This is used to determine whether
// certain features, such as DNS names are enabled.
Expand All @@ -93,9 +100,6 @@ func DefaultProject() string {
return defaultDefaultProject
}

// projects for which a cron GC job exists.
var projectsWithGC = []string{defaultDefaultProject}

// Denotes if this provider was successfully initialized.
var initialized = false

Expand All @@ -107,6 +111,9 @@ var initialized = false
// Note that, when roachprod is used as a binary, the defaults for
// providerInstance properties initialized here can be overriden by flags.
func Init() error {
initGCEProjectDefaults()
initDNSDefault()

providerInstance.Projects = []string{defaultDefaultProject}
projectFromEnv := os.Getenv("GCE_PROJECT")
if projectFromEnv != "" {
Expand Down

0 comments on commit 31e84cb

Please sign in to comment.