in internal/onetime/configure/redis/redis.go [61:123]
func newConnectionParamsCmd(cfg *cliconfig.Configure) *cobra.Command {
var (
port int
projectID, secretName, password string
)
cpCmd := &cobra.Command{
Use: "connection-params",
Short: "Add connection parameters for a Redis database.",
Long: `Sets the port, password, and Secret Manager details
for connecting to the Redis database specified in the main configuration.
Existing connection parameters will be overwritten by the provided flags.
WARNING: Using the --password flag is not recommended for security reasons
as it can expose the password in shell history or logs. Please prefer storing
the password in Google Cloud Secret Manager and using the --project-id and
--secret-name flags instead.`,
Run: func(cmd *cobra.Command, args []string) {
cfg.ValidateRedisConnectionParams()
cp := cfg.Configuration.RedisConfiguration.ConnectionParameters
if cmd.Flags().Changed("port") {
msg := fmt.Sprintf("Setting Redis Port: %v", port)
cfg.LogToBoth(cmd.Context(), msg)
cp.Port = int32(port)
cfg.RedisConfigModified = true
}
if cmd.Flags().Changed("password") {
msg := fmt.Sprintf("Setting Redis Password: %v", password)
cfg.LogToBoth(cmd.Context(), msg)
cp.Password = password
cfg.RedisConfigModified = true
}
spChanged := cmd.Flags().Changed("project-id")
snChanged := cmd.Flags().Changed("secret-name")
if (spChanged || snChanged) && (cp.Secret == nil) {
cp.Secret = &cpb.SecretRef{}
}
if spChanged {
msg := fmt.Sprintf("Setting Redis Project ID: %v", projectID)
cfg.LogToBoth(cmd.Context(), msg)
cp.Secret.ProjectId = projectID
cfg.RedisConfigModified = true
}
if snChanged {
msg := fmt.Sprintf("Setting Redis Secret Name: %v", secretName)
cfg.LogToBoth(cmd.Context(), msg)
cp.Secret.SecretName = secretName
cfg.RedisConfigModified = true
}
},
}
// Add flags for the connection
cpCmd.Flags().IntVar(&port, "port", configuration.DefaultRedisPort, "Port")
cpCmd.Flags().StringVar(&projectID, "project-id", "", "Project ID")
cpCmd.Flags().StringVar(&secretName, "secret-name", "", "Secret name")
cpCmd.Flags().StringVar(&password, "password", "", "Password")
return cpCmd
}