Skip to content

Commit

Permalink
Config store CLI: make value required when updating (cadence-workflow…
Browse files Browse the repository at this point in the history
  • Loading branch information
mantas-sidlauskas authored Feb 20, 2023
1 parent 937e436 commit f4f8a85
Show file tree
Hide file tree
Showing 4 changed files with 43 additions and 35 deletions.
27 changes: 15 additions & 12 deletions common/dynamicconfig/configstore/config_store_client.go
Original file line number Diff line number Diff line change
Expand Up @@ -69,22 +69,25 @@ type cacheEntry struct {

// NewConfigStoreClient creates a config store client
func NewConfigStoreClient(clientCfg *csc.ClientConfig, persistenceCfg *config.Persistence, logger log.Logger, doneCh chan struct{}) (dc.Client, error) {
if err := validateClientConfig(clientCfg); err != nil {
logger.Error("Invalid Client Config Values, Using Default Values")
clientCfg = defaultConfigValues
}

if persistenceCfg == nil {
return nil, errors.New("persistence cfg is nil")
} else if persistenceCfg.DefaultStore != "cass-default" {
return nil, fmt.Errorf("persistence cfg default store is not Cassandra")
} else if store, ok := persistenceCfg.DataStores[persistenceCfg.DefaultStore]; !ok {
return nil, errors.New("persistence cfg datastores missing Cassandra")
} else if store.NoSQL == nil {
}

store, ok := persistenceCfg.DataStores[persistenceCfg.DefaultStore]
if !ok {
return nil, errors.New("default persistence config missing")
}

if store.NoSQL == nil {
return nil, errors.New("NoSQL struct is nil")
}

client, err := newConfigStoreClient(clientCfg, persistenceCfg.DataStores[persistenceCfg.DefaultStore].NoSQL, logger, doneCh)
if err := validateClientConfig(clientCfg); err != nil {
logger.Warn("invalid ClientConfig values, using default values")
clientCfg = defaultConfigValues
}

client, err := newConfigStoreClient(clientCfg, store.NoSQL, logger, doneCh)
if err != nil {
return nil, err
}
Expand Down Expand Up @@ -522,7 +525,7 @@ func (csc *configStoreClient) storeValues(snapshot *persistence.DynamicConfigSna
schemaVersion: snapshot.Values.SchemaVersion,
dcEntries: dcEntryMap,
})
csc.logger.Info("Updated dynamic config")
csc.logger.Debug("Updated dynamic config")
return nil
}

Expand Down
41 changes: 23 additions & 18 deletions tools/cli/admin.go
Original file line number Diff line number Diff line change
Expand Up @@ -22,6 +22,7 @@
package cli

import (
"fmt"
"strings"
"time"

Expand Down Expand Up @@ -1218,62 +1219,66 @@ func newAdminRebalanceCommands() []cli.Command {
func newAdminConfigStoreCommands() []cli.Command {
return []cli.Command{
{
Name: "get-dynamic-config",
Aliases: []string{"getdc", "g"},
Name: "get",
Aliases: []string{"g"},
Usage: "Get Dynamic Config Value",
Flags: []cli.Flag{
cli.StringFlag{
Name: FlagDynamicConfigName,
Usage: "Name of Dynamic Config parameter to get value of",
Name: FlagDynamicConfigName,
Usage: "Name of Dynamic Config parameter to get value of",
Required: true,
},
cli.StringSliceFlag{
Name: FlagDynamicConfigFilter,
Usage: `Optional. Can be specified multiple times for multiple filters. ex: --dynamic-config-filter '{"Name":"domainName","Value":"global-samples-domain"}'`,
Usage: fmt.Sprintf(`Optional. Can be specified multiple times for multiple filters. ex: --%s '{"Name":"domainName","Value":"global-samples-domain"}'`, FlagDynamicConfigFilter),
},
},
Action: func(c *cli.Context) {
AdminGetDynamicConfig(c)
},
},
{
Name: "update-dynamic-config",
Aliases: []string{"updc", "u"},
Name: "update",
Aliases: []string{"u"},
Usage: "Update Dynamic Config Value",
Flags: []cli.Flag{
cli.StringFlag{
Name: FlagDynamicConfigName,
Usage: "Name of Dynamic Config parameter to update value of",
Name: FlagDynamicConfigName,
Usage: "Name of Dynamic Config parameter to update value of",
Required: true,
},
cli.StringSliceFlag{
Name: FlagDynamicConfigValue,
Usage: `Optional. Can be specified multiple times for multiple values. ex: --dynamic-config-value '{"Value":true,"Filters":[]}'`,
Name: FlagDynamicConfigValue,
Usage: fmt.Sprintf(`Can be specified multiple times for multiple values. ex: --%s '{"Value":true,"Filters":[]}'`, FlagDynamicConfigValue),
Required: true,
},
},
Action: func(c *cli.Context) {
AdminUpdateDynamicConfig(c)
},
},
{
Name: "restore-dynamic-config",
Aliases: []string{"resdc", "r"},
Name: "restore",
Aliases: []string{"r"},
Usage: "Restore Dynamic Config Value",
Flags: []cli.Flag{
cli.StringFlag{
Name: FlagDynamicConfigName,
Usage: "Name of Dynamic Config parameter to restore",
Name: FlagDynamicConfigName,
Usage: "Name of Dynamic Config parameter to restore",
Required: true,
},
cli.StringSliceFlag{
Name: FlagDynamicConfigFilter,
Usage: `Optional. Can be specified multiple times for multiple filters. ex: --dynamic-config-filter '{"Name":"domainName","Value":"global-samples-domain"}'`,
Usage: fmt.Sprintf(`Optional. Can be specified multiple times for multiple filters. ex: --%s '{"Name":"domainName","Value":"global-samples-domain"}'`, FlagDynamicConfigFilter),
},
},
Action: func(c *cli.Context) {
AdminRestoreDynamicConfig(c)
},
},
{
Name: "list-dynamic-config",
Aliases: []string{"listdc", "l"},
Name: "list",
Aliases: []string{"l"},
Usage: "List Dynamic Config Value",
Flags: []cli.Flag{},
Action: func(c *cli.Context) {
Expand Down
4 changes: 2 additions & 2 deletions tools/cli/adminConfigStoreCommands.go
Original file line number Diff line number Diff line change
Expand Up @@ -148,7 +148,7 @@ func AdminUpdateDynamicConfig(c *cli.Context) {
if err != nil {
ErrorAndExit("Failed to update dynamic config value", err)
}
fmt.Printf("Dynamic Config %s updated\n", dcName)
fmt.Printf("Dynamic Config %q updated with %s \n", dcName, dcValues)
}

// AdminRestoreDynamicConfig removes values of specified dynamic config parameter matching specified filter
Expand All @@ -175,7 +175,7 @@ func AdminRestoreDynamicConfig(c *cli.Context) {
if err != nil {
ErrorAndExit("Failed to restore dynamic config value", err)
}
fmt.Printf("Dynamic Config %s restored\n", dcName)
fmt.Printf("Dynamic Config %q restored\n", dcName)
}

// AdminListDynamicConfig lists all values associated with specified dynamic config parameter or all values for all dc parameter if none is specified.
Expand Down
6 changes: 3 additions & 3 deletions tools/cli/flags.go
Original file line number Diff line number Diff line change
Expand Up @@ -288,9 +288,9 @@ const (
FlagJWT = "jwt"
FlagJWTPrivateKey = "jwt-private-key"
FlagJWTPrivateKeyWithAlias = FlagJWTPrivateKey + ", jwt-pk"
FlagDynamicConfigName = "dynamic_config_name"
FlagDynamicConfigFilter = "dynamic_config_filter"
FlagDynamicConfigValue = "dynamic_config_value"
FlagDynamicConfigName = "name"
FlagDynamicConfigFilter = "filter"
FlagDynamicConfigValue = "value"
FlagTransport = "transport"
FlagTransportWithAlias = FlagTransport + ", t"
FlagFormat = "format"
Expand Down

0 comments on commit f4f8a85

Please sign in to comment.