Commit f7078830 authored by Joshua Gutow's avatar Joshua Gutow Committed by GitHub

op-node: Add flag categories (#9629)

* op-node: Add flag categories

* op-node: Order categories & move some beacon flags to L1 RPC
parent af1d4829
......@@ -130,7 +130,7 @@ func init() {
optionalFlags = append(optionalFlags, oppprof.CLIFlags(EnvVarPrefix)...)
optionalFlags = append(optionalFlags, txmgr.CLIFlags(EnvVarPrefix)...)
optionalFlags = append(optionalFlags, compressor.CLIFlags(EnvVarPrefix)...)
optionalFlags = append(optionalFlags, plasma.CLIFlags(EnvVarPrefix)...)
optionalFlags = append(optionalFlags, plasma.CLIFlags(EnvVarPrefix, "")...)
Flags = append(requiredFlags, optionalFlags...)
}
......
......@@ -13,8 +13,8 @@ import (
const envVarPrefix = "OP_BOOTNODE"
var Flags = []cli.Flag{
opflags.CLINetworkFlag(envVarPrefix),
opflags.CLIRollupConfigFlag(envVarPrefix),
opflags.CLINetworkFlag(envVarPrefix, ""),
opflags.CLIRollupConfigFlag(envVarPrefix, ""),
}
func init() {
......
......@@ -112,7 +112,7 @@ func init() {
optionalFlags = append(optionalFlags, oplog.CLIFlags(EnvVarPrefix)...)
optionalFlags = append(optionalFlags, opmetrics.CLIFlags(EnvVarPrefix)...)
optionalFlags = append(optionalFlags, oppprof.CLIFlags(EnvVarPrefix)...)
optionalFlags = append(optionalFlags, opflags.CLIFlags(EnvVarPrefix)...)
optionalFlags = append(optionalFlags, opflags.CLIFlags(EnvVarPrefix, "")...)
Flags = append(requiredFlags, optionalFlags...)
}
......
......@@ -18,7 +18,7 @@ var Subcommands = []*cli.Command{
Name: "dump-rollup-config",
Usage: "Dumps network configs",
Flags: []cli.Flag{
opflags.CLINetworkFlag(flags.EnvVarPrefix),
opflags.CLINetworkFlag(flags.EnvVarPrefix, ""),
},
Action: func(ctx *cli.Context) error {
logCfg := oplog.ReadCLIConfig(ctx)
......
This diff is collapsed.
......@@ -62,6 +62,7 @@ func deprecatedP2PFlags(envPrefix string) []cli.Flag {
Usage: fmt.Sprintf("Deprecated: Use %v instead", ScoringName),
Required: false,
Hidden: true,
Category: P2PCategory,
},
&cli.StringFlag{
Name: PeerScoreBandsName,
......@@ -69,12 +70,14 @@ func deprecatedP2PFlags(envPrefix string) []cli.Flag {
Required: false,
Value: "",
Hidden: true,
Category: P2PCategory,
},
&cli.StringFlag{
Name: TopicScoringName,
Usage: fmt.Sprintf("Deprecated: Use %v instead", ScoringName),
Required: false,
Hidden: true,
Category: P2PCategory,
},
}
}
......@@ -88,12 +91,14 @@ func P2PFlags(envPrefix string) []cli.Flag {
Usage: "Completely disable the P2P stack",
Required: false,
EnvVars: p2pEnv(envPrefix, "DISABLE"),
Category: P2PCategory,
},
&cli.BoolFlag{
Name: NoDiscoveryName,
Usage: "Disable Discv5 (node discovery)",
Required: false,
EnvVars: p2pEnv(envPrefix, "NO_DISCOVERY"),
Category: P2PCategory,
},
&cli.StringFlag{
Name: ScoringName,
......@@ -101,6 +106,7 @@ func P2PFlags(envPrefix string) []cli.Flag {
Required: false,
Value: "light",
EnvVars: p2pEnv(envPrefix, "PEER_SCORING"),
Category: P2PCategory,
},
&cli.BoolFlag{
// Banning Flag - whether or not we want to act on the scoring
......@@ -109,6 +115,7 @@ func P2PFlags(envPrefix string) []cli.Flag {
Value: true,
Required: false,
EnvVars: p2pEnv(envPrefix, "PEER_BANNING"),
Category: P2PCategory,
},
&cli.Float64Flag{
Name: BanningThresholdName,
......@@ -116,6 +123,7 @@ func P2PFlags(envPrefix string) []cli.Flag {
Required: false,
Value: -100,
EnvVars: p2pEnv(envPrefix, "PEER_BANNING_THRESHOLD"),
Category: P2PCategory,
},
&cli.DurationFlag{
Name: BanningDurationName,
......@@ -123,6 +131,7 @@ func P2PFlags(envPrefix string) []cli.Flag {
Required: false,
Value: 1 * time.Hour,
EnvVars: p2pEnv(envPrefix, "PEER_BANNING_DURATION"),
Category: P2PCategory,
},
&cli.StringFlag{
Name: P2PPrivPathName,
......@@ -132,6 +141,7 @@ func P2PFlags(envPrefix string) []cli.Flag {
Value: "opnode_p2p_priv.txt",
EnvVars: p2pEnv(envPrefix, "PRIV_PATH"),
TakesFile: true,
Category: P2PCategory,
},
&cli.StringFlag{
// sometimes it may be ok to not persist the peer priv key as file, and instead pass it directly.
......@@ -141,6 +151,7 @@ func P2PFlags(envPrefix string) []cli.Flag {
Hidden: true,
Value: "",
EnvVars: p2pEnv(envPrefix, "PRIV_RAW"),
Category: P2PCategory,
},
&cli.StringFlag{
Name: ListenIPName,
......@@ -148,6 +159,7 @@ func P2PFlags(envPrefix string) []cli.Flag {
Required: false,
Value: "0.0.0.0",
EnvVars: p2pEnv(envPrefix, "LISTEN_IP"),
Category: P2PCategory,
},
&cli.UintFlag{
Name: ListenTCPPortName,
......@@ -155,6 +167,7 @@ func P2PFlags(envPrefix string) []cli.Flag {
Required: false,
Value: 9222,
EnvVars: p2pEnv(envPrefix, "LISTEN_TCP_PORT"),
Category: P2PCategory,
},
&cli.UintFlag{
Name: ListenUDPPortName,
......@@ -162,6 +175,7 @@ func P2PFlags(envPrefix string) []cli.Flag {
Required: false,
Value: 0, // can simply match the TCP libp2p port
EnvVars: p2pEnv(envPrefix, "LISTEN_UDP_PORT"),
Category: P2PCategory,
},
&cli.StringFlag{
Name: AdvertiseIPName,
......@@ -171,6 +185,7 @@ func P2PFlags(envPrefix string) []cli.Flag {
// by communicating with bootnodes. Fixed IP is recommended for faster bootstrap though.
Value: "",
EnvVars: p2pEnv(envPrefix, "ADVERTISE_IP"),
Category: P2PCategory,
},
&cli.UintFlag{
Name: AdvertiseTCPPortName,
......@@ -178,6 +193,7 @@ func P2PFlags(envPrefix string) []cli.Flag {
Required: false,
Value: 0,
EnvVars: p2pEnv(envPrefix, "ADVERTISE_TCP"),
Category: P2PCategory,
},
&cli.UintFlag{
Name: AdvertiseUDPPortName,
......@@ -185,6 +201,7 @@ func P2PFlags(envPrefix string) []cli.Flag {
Required: false,
Value: 0,
EnvVars: p2pEnv(envPrefix, "ADVERTISE_UDP"),
Category: P2PCategory,
},
&cli.StringFlag{
Name: BootnodesName,
......@@ -192,6 +209,7 @@ func P2PFlags(envPrefix string) []cli.Flag {
Required: false,
Value: "",
EnvVars: p2pEnv(envPrefix, "BOOTNODES"),
Category: P2PCategory,
},
&cli.StringFlag{
Name: StaticPeersName,
......@@ -200,12 +218,14 @@ func P2PFlags(envPrefix string) []cli.Flag {
Required: false,
Value: "",
EnvVars: p2pEnv(envPrefix, "STATIC"),
Category: P2PCategory,
},
&cli.StringFlag{
Name: NetRestrictName,
Usage: "Comma-separated list of CIDR masks. P2P will only try to connect on these networks",
Required: false,
EnvVars: p2pEnv(envPrefix, "NETRESTRICT"),
Category: P2PCategory,
},
&cli.StringFlag{
Name: HostMuxName,
......@@ -214,6 +234,7 @@ func P2PFlags(envPrefix string) []cli.Flag {
Required: false,
Value: "yamux,mplex",
EnvVars: p2pEnv(envPrefix, "MUX"),
Category: P2PCategory,
},
&cli.StringFlag{
Name: HostSecurityName,
......@@ -222,6 +243,7 @@ func P2PFlags(envPrefix string) []cli.Flag {
Required: false,
Value: "noise",
EnvVars: p2pEnv(envPrefix, "SECURITY"),
Category: P2PCategory,
},
&cli.UintFlag{
Name: PeersLoName,
......@@ -229,6 +251,7 @@ func P2PFlags(envPrefix string) []cli.Flag {
Required: false,
Value: 20,
EnvVars: p2pEnv(envPrefix, "PEERS_LO"),
Category: P2PCategory,
},
&cli.UintFlag{
Name: PeersHiName,
......@@ -236,6 +259,7 @@ func P2PFlags(envPrefix string) []cli.Flag {
Required: false,
Value: 30,
EnvVars: p2pEnv(envPrefix, "PEERS_HI"),
Category: P2PCategory,
},
&cli.DurationFlag{
Name: PeersGraceName,
......@@ -243,12 +267,14 @@ func P2PFlags(envPrefix string) []cli.Flag {
Required: false,
Value: 30 * time.Second,
EnvVars: p2pEnv(envPrefix, "PEERS_GRACE"),
Category: P2PCategory,
},
&cli.BoolFlag{
Name: NATName,
Usage: "Enable NAT traversal with PMP/UPNP devices to learn external IP.",
Required: false,
EnvVars: p2pEnv(envPrefix, "NAT"),
Category: P2PCategory,
},
&cli.StringFlag{
Name: UserAgentName,
......@@ -257,6 +283,7 @@ func P2PFlags(envPrefix string) []cli.Flag {
Required: false,
Value: "optimism",
EnvVars: p2pEnv(envPrefix, "AGENT"),
Category: P2PCategory,
},
&cli.DurationFlag{
Name: TimeoutNegotiationName,
......@@ -265,6 +292,7 @@ func P2PFlags(envPrefix string) []cli.Flag {
Required: false,
Value: 10 * time.Second,
EnvVars: p2pEnv(envPrefix, "TIMEOUT_NEGOTIATION"),
Category: P2PCategory,
},
&cli.DurationFlag{
Name: TimeoutAcceptName,
......@@ -273,6 +301,7 @@ func P2PFlags(envPrefix string) []cli.Flag {
Required: false,
Value: 10 * time.Second,
EnvVars: p2pEnv(envPrefix, "TIMEOUT_ACCEPT"),
Category: P2PCategory,
},
&cli.DurationFlag{
Name: TimeoutDialName,
......@@ -281,6 +310,7 @@ func P2PFlags(envPrefix string) []cli.Flag {
Required: false,
Value: 10 * time.Second,
EnvVars: p2pEnv(envPrefix, "TIMEOUT_DIAL"),
Category: P2PCategory,
},
&cli.StringFlag{
Name: PeerstorePathName,
......@@ -291,6 +321,7 @@ func P2PFlags(envPrefix string) []cli.Flag {
TakesFile: true,
Value: "opnode_peerstore_db",
EnvVars: p2pEnv(envPrefix, "PEERSTORE_PATH"),
Category: P2PCategory,
},
&cli.StringFlag{
Name: DiscoveryPathName,
......@@ -299,6 +330,7 @@ func P2PFlags(envPrefix string) []cli.Flag {
TakesFile: true,
Value: "opnode_discovery_db",
EnvVars: p2pEnv(envPrefix, "DISCOVERY_PATH"),
Category: P2PCategory,
},
&cli.StringFlag{
Name: SequencerP2PKeyName,
......@@ -306,6 +338,7 @@ func P2PFlags(envPrefix string) []cli.Flag {
Required: false,
Value: "",
EnvVars: p2pEnv(envPrefix, "SEQUENCER_KEY"),
Category: P2PCategory,
},
&cli.UintFlag{
Name: GossipMeshDName,
......@@ -314,6 +347,7 @@ func P2PFlags(envPrefix string) []cli.Flag {
Hidden: true,
Value: p2p.DefaultMeshD,
EnvVars: p2pEnv(envPrefix, "GOSSIP_MESH_D"),
Category: P2PCategory,
},
&cli.UintFlag{
Name: GossipMeshDloName,
......@@ -322,6 +356,7 @@ func P2PFlags(envPrefix string) []cli.Flag {
Hidden: true,
Value: p2p.DefaultMeshDlo,
EnvVars: p2pEnv(envPrefix, "GOSSIP_MESH_DLO"),
Category: P2PCategory,
},
&cli.UintFlag{
Name: GossipMeshDhiName,
......@@ -330,6 +365,7 @@ func P2PFlags(envPrefix string) []cli.Flag {
Hidden: true,
Value: p2p.DefaultMeshDhi,
EnvVars: p2pEnv(envPrefix, "GOSSIP_MESH_DHI"),
Category: P2PCategory,
},
&cli.UintFlag{
Name: GossipMeshDlazyName,
......@@ -338,6 +374,7 @@ func P2PFlags(envPrefix string) []cli.Flag {
Hidden: true,
Value: p2p.DefaultMeshDlazy,
EnvVars: p2pEnv(envPrefix, "GOSSIP_MESH_DLAZY"),
Category: P2PCategory,
},
&cli.BoolFlag{
Name: GossipFloodPublishName,
......@@ -345,6 +382,7 @@ func P2PFlags(envPrefix string) []cli.Flag {
Required: false,
Hidden: true,
EnvVars: p2pEnv(envPrefix, "GOSSIP_FLOOD_PUBLISH"),
Category: P2PCategory,
},
&cli.BoolFlag{
Name: SyncReqRespName,
......@@ -352,6 +390,7 @@ func P2PFlags(envPrefix string) []cli.Flag {
Value: true,
Required: false,
EnvVars: p2pEnv(envPrefix, "SYNC_REQ_RESP"),
Category: P2PCategory,
},
}
}
......@@ -17,24 +17,27 @@ func plasmaEnv(envprefix, v string) []string {
return []string{envprefix + "_PLASMA_" + v}
}
func CLIFlags(envPrefix string) []cli.Flag {
func CLIFlags(envPrefix string, category string) []cli.Flag {
return []cli.Flag{
&cli.BoolFlag{
Name: EnabledFlagName,
Usage: "Enable plasma mode",
Value: false,
EnvVars: plasmaEnv(envPrefix, "ENABLED"),
Category: category,
},
&cli.StringFlag{
Name: DaServerAddressFlagName,
Usage: "HTTP address of a DA Server",
EnvVars: plasmaEnv(envPrefix, "DA_SERVER"),
Category: category,
},
&cli.BoolFlag{
Name: VerifyOnReadFlagName,
Usage: "Verify input data matches the commitments from the DA storage service",
Value: true,
EnvVars: plasmaEnv(envPrefix, "VERIFY_ON_READ"),
Category: category,
},
}
}
......
......@@ -18,44 +18,49 @@ const (
EcotoneOverrideFlagName = "override.ecotone"
)
func CLIFlags(envPrefix string) []cli.Flag {
func CLIFlags(envPrefix string, category string) []cli.Flag {
return []cli.Flag{
&cli.Uint64Flag{
Name: CanyonOverrideFlagName,
Usage: "Manually specify the Canyon fork timestamp, overriding the bundled setting",
EnvVars: opservice.PrefixEnvVar(envPrefix, "OVERRIDE_CANYON"),
Hidden: false,
Category: category,
},
&cli.Uint64Flag{
Name: DeltaOverrideFlagName,
Usage: "Manually specify the Delta fork timestamp, overriding the bundled setting",
EnvVars: opservice.PrefixEnvVar(envPrefix, "OVERRIDE_DELTA"),
Hidden: false,
Category: category,
},
&cli.Uint64Flag{
Name: EcotoneOverrideFlagName,
Usage: "Manually specify the Ecotone fork timestamp, overriding the bundled setting",
EnvVars: opservice.PrefixEnvVar(envPrefix, "OVERRIDE_ECOTONE"),
Hidden: false,
Category: category,
},
CLINetworkFlag(envPrefix),
CLIRollupConfigFlag(envPrefix),
CLINetworkFlag(envPrefix, category),
CLIRollupConfigFlag(envPrefix, category),
}
}
func CLINetworkFlag(envPrefix string) cli.Flag {
func CLINetworkFlag(envPrefix string, category string) cli.Flag {
return &cli.StringFlag{
Name: NetworkFlagName,
Usage: fmt.Sprintf("Predefined network selection. Available networks: %s", strings.Join(chaincfg.AvailableNetworks(), ", ")),
EnvVars: opservice.PrefixEnvVar(envPrefix, "NETWORK"),
Category: category,
}
}
func CLIRollupConfigFlag(envPrefix string) cli.Flag {
func CLIRollupConfigFlag(envPrefix string, category string) cli.Flag {
return &cli.StringFlag{
Name: RollupConfigFlagName,
Usage: "Rollup chain parameters",
EnvVars: opservice.PrefixEnvVar(envPrefix, "ROLLUP_CONFIG"),
Category: category,
}
}
......
......@@ -22,27 +22,34 @@ const (
ColorFlagName = "log.color"
)
// CLIFlags creates flag definitions for the logging utils.
func CLIFlags(envPrefix string) []cli.Flag {
return CLIFlagsWithCategory(envPrefix, "")
}
// CLIFlagsWithCategory creates flag definitions for the logging utils.
// Warning: flags are not safe to reuse due to an upstream urfave default-value mutation bug in GenericFlag.
// Use cliapp.ProtectFlags(flags) to create a copy before passing it into an App if the app runs more than once.
func CLIFlags(envPrefix string) []cli.Flag {
func CLIFlagsWithCategory(envPrefix string, category string) []cli.Flag {
return []cli.Flag{
&cli.GenericFlag{
Name: LevelFlagName,
Usage: "The lowest log level that will be output",
Value: NewLevelFlagValue(log.LevelInfo),
EnvVars: opservice.PrefixEnvVar(envPrefix, "LOG_LEVEL"),
Category: category,
},
&cli.GenericFlag{
Name: FormatFlagName,
Usage: "Format the log output. Supported formats: 'text', 'terminal', 'logfmt', 'json', 'json-pretty',",
Value: NewFormatFlagValue(FormatText),
EnvVars: opservice.PrefixEnvVar(envPrefix, "LOG_FORMAT"),
Category: category,
},
&cli.BoolFlag{
Name: ColorFlagName,
Usage: "Color the log output if in terminal mode",
EnvVars: opservice.PrefixEnvVar(envPrefix, "LOG_COLOR"),
Category: category,
},
}
}
......
......@@ -61,29 +61,37 @@ func DefaultCLIConfig() CLIConfig {
}
func CLIFlags(envPrefix string) []cli.Flag {
return CLIFlagsWithCategory(envPrefix, "")
}
func CLIFlagsWithCategory(envPrefix string, category string) []cli.Flag {
return []cli.Flag{
&cli.BoolFlag{
Name: EnabledFlagName,
Usage: "Enable the pprof server",
EnvVars: opservice.PrefixEnvVar(envPrefix, "PPROF_ENABLED"),
Category: category,
},
&cli.StringFlag{
Name: ListenAddrFlagName,
Usage: "pprof listening address",
Value: defaultListenAddr, // TODO(CLI-4159): Switch to 127.0.0.1
EnvVars: opservice.PrefixEnvVar(envPrefix, "PPROF_ADDR"),
Category: category,
},
&cli.IntFlag{
Name: PortFlagName,
Usage: "pprof listening port",
Value: defaultListenPort,
EnvVars: opservice.PrefixEnvVar(envPrefix, "PPROF_PORT"),
Category: category,
},
&cli.GenericFlag{
Name: ProfilePathFlagName,
Usage: "pprof file path. If it is a directory, the path is {dir}/{profileType}.prof",
Value: new(flags.PathFlag),
EnvVars: opservice.PrefixEnvVar(envPrefix, "PPROF_PATH"),
Category: category,
},
&cli.GenericFlag{
Name: ProfileTypeFlagName,
......@@ -93,6 +101,7 @@ func CLIFlags(envPrefix string) []cli.Flag {
return &defaultProfType
}(),
EnvVars: opservice.PrefixEnvVar(envPrefix, "PPROF_TYPE"),
Category: category,
},
}
}
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment