cli wiring

This commit is contained in:
i-norden 2022-01-30 21:17:25 -06:00
parent 4be92cd48b
commit 4519813341
2 changed files with 154 additions and 60 deletions

View File

@ -201,40 +201,78 @@ func makeFullNode(ctx *cli.Context) (*node.Node, ethapi.Backend) {
FilePath: ctx.GlobalString(utils.StateDiffFilePath.Name), FilePath: ctx.GlobalString(utils.StateDiffFilePath.Name),
} }
case shared.POSTGRES: case shared.POSTGRES:
driverTypeStr := ctx.GlobalString(utils.StateDiffDBDriverTypeFlag.Name) v2DriverTypeStr := ctx.GlobalString(utils.StateDiffV2DBDriverTypeFlag.Name)
driverType, err := postgres.ResolveDriverType(driverTypeStr) v2DriverType, err := postgres.ResolveDriverType(v2DriverTypeStr)
if err != nil { if err != nil {
utils.Fatalf("%v", err) utils.Fatalf("%v", err)
} }
pgConfig := postgres.Config{ v2PgConfig := postgres.Config{
Hostname: ctx.GlobalString(utils.StateDiffDBHostFlag.Name), Hostname: ctx.GlobalString(utils.StateDiffV2DBHostFlag.Name),
Port: ctx.GlobalInt(utils.StateDiffDBPortFlag.Name), Port: ctx.GlobalInt(utils.StateDiffV2DBPortFlag.Name),
DatabaseName: ctx.GlobalString(utils.StateDiffDBNameFlag.Name), DatabaseName: ctx.GlobalString(utils.StateDiffV2DBNameFlag.Name),
Username: ctx.GlobalString(utils.StateDiffDBUserFlag.Name), Username: ctx.GlobalString(utils.StateDiffV2DBUserFlag.Name),
Password: ctx.GlobalString(utils.StateDiffDBPasswordFlag.Name), Password: ctx.GlobalString(utils.StateDiffV2DBPasswordFlag.Name),
ID: nodeID, ID: nodeID,
ClientName: clientName, ClientName: clientName,
Driver: driverType, Driver: v2DriverType,
} }
if ctx.GlobalIsSet(utils.StateDiffDBMinConns.Name) { if ctx.GlobalIsSet(utils.StateDiffV2DBMinConns.Name) {
pgConfig.MinConns = ctx.GlobalInt(utils.StateDiffDBMinConns.Name) v2PgConfig.MinConns = ctx.GlobalInt(utils.StateDiffV2DBMinConns.Name)
} }
if ctx.GlobalIsSet(utils.StateDiffDBMaxConns.Name) { if ctx.GlobalIsSet(utils.StateDiffV2DBMaxConns.Name) {
pgConfig.MaxConns = ctx.GlobalInt(utils.StateDiffDBMaxConns.Name) v2PgConfig.MaxConns = ctx.GlobalInt(utils.StateDiffV2DBMaxConns.Name)
} }
if ctx.GlobalIsSet(utils.StateDiffDBMaxIdleConns.Name) { if ctx.GlobalIsSet(utils.StateDiffV2DBMaxIdleConns.Name) {
pgConfig.MaxIdle = ctx.GlobalInt(utils.StateDiffDBMaxIdleConns.Name) v2PgConfig.MaxIdle = ctx.GlobalInt(utils.StateDiffV2DBMaxIdleConns.Name)
} }
if ctx.GlobalIsSet(utils.StateDiffDBMaxConnLifetime.Name) { if ctx.GlobalIsSet(utils.StateDiffV2DBMaxConnLifetime.Name) {
pgConfig.MaxConnLifetime = ctx.GlobalDuration(utils.StateDiffDBMaxConnLifetime.Name) * time.Second v2PgConfig.MaxConnLifetime = ctx.GlobalDuration(utils.StateDiffV2DBMaxConnLifetime.Name) * time.Second
} }
if ctx.GlobalIsSet(utils.StateDiffDBMaxConnIdleTime.Name) { if ctx.GlobalIsSet(utils.StateDiffV2DBMaxConnIdleTime.Name) {
pgConfig.MaxConnIdleTime = ctx.GlobalDuration(utils.StateDiffDBMaxConnIdleTime.Name) * time.Second v2PgConfig.MaxConnIdleTime = ctx.GlobalDuration(utils.StateDiffV2DBMaxConnIdleTime.Name) * time.Second
} }
if ctx.GlobalIsSet(utils.StateDiffDBConnTimeout.Name) { if ctx.GlobalIsSet(utils.StateDiffV2DBConnTimeout.Name) {
pgConfig.ConnTimeout = ctx.GlobalDuration(utils.StateDiffDBConnTimeout.Name) * time.Second v2PgConfig.ConnTimeout = ctx.GlobalDuration(utils.StateDiffV2DBConnTimeout.Name) * time.Second
}
v3DriverTypeStr := ctx.GlobalString(utils.StateDiffV2DBDriverTypeFlag.Name)
v3DriverType, err := postgres.ResolveDriverType(v3DriverTypeStr)
if err != nil {
utils.Fatalf("%v", err)
}
v3PgConfig := postgres.Config{
Hostname: ctx.GlobalString(utils.StateDiffV3DBHostFlag.Name),
Port: ctx.GlobalInt(utils.StateDiffV3DBPortFlag.Name),
DatabaseName: ctx.GlobalString(utils.StateDiffV3DBNameFlag.Name),
Username: ctx.GlobalString(utils.StateDiffV3DBUserFlag.Name),
Password: ctx.GlobalString(utils.StateDiffV3DBPasswordFlag.Name),
ID: nodeID,
ClientName: clientName,
Driver: v3DriverType,
}
if ctx.GlobalIsSet(utils.StateDiffV3DBMinConns.Name) {
v3PgConfig.MinConns = ctx.GlobalInt(utils.StateDiffV3DBMinConns.Name)
}
if ctx.GlobalIsSet(utils.StateDiffV3DBMaxConns.Name) {
v3PgConfig.MaxConns = ctx.GlobalInt(utils.StateDiffV3DBMaxConns.Name)
}
if ctx.GlobalIsSet(utils.StateDiffV3DBMaxIdleConns.Name) {
v3PgConfig.MaxIdle = ctx.GlobalInt(utils.StateDiffV3DBMaxIdleConns.Name)
}
if ctx.GlobalIsSet(utils.StateDiffV3DBMaxConnLifetime.Name) {
v3PgConfig.MaxConnLifetime = ctx.GlobalDuration(utils.StateDiffV3DBMaxConnLifetime.Name) * time.Second
}
if ctx.GlobalIsSet(utils.StateDiffV3DBMaxConnIdleTime.Name) {
v3PgConfig.MaxConnIdleTime = ctx.GlobalDuration(utils.StateDiffV3DBMaxConnIdleTime.Name) * time.Second
}
if ctx.GlobalIsSet(utils.StateDiffV3DBConnTimeout.Name) {
v3PgConfig.ConnTimeout = ctx.GlobalDuration(utils.StateDiffV3DBConnTimeout.Name) * time.Second
}
indexerConfig = postgres.MultiConfig{
V2: v2PgConfig,
V3: v3PgConfig,
} }
indexerConfig = pgConfig
case shared.DUMP: case shared.DUMP:
dumpTypeStr := ctx.GlobalString(utils.StateDiffDBDumpDst.Name) dumpTypeStr := ctx.GlobalString(utils.StateDiffDBDumpDst.Name)
dumpType, err := dumpdb.ResolveDumpType(dumpTypeStr) dumpType, err := dumpdb.ResolveDumpType(dumpTypeStr)

View File

@ -796,6 +796,7 @@ var (
Name: "catalyst", Name: "catalyst",
Usage: "Catalyst mode (eth2 integration testing)", Usage: "Catalyst mode (eth2 integration testing)",
} }
StateDiffFlag = cli.BoolFlag{ StateDiffFlag = cli.BoolFlag{
Name: "statediff", Name: "statediff",
Usage: "Enables the processing of state diffs between each block", Usage: "Enables the processing of state diffs between each block",
@ -805,63 +806,118 @@ var (
Usage: "Statediff database type (current options: postgres, file, dump)", Usage: "Statediff database type (current options: postgres, file, dump)",
Value: "postgres", Value: "postgres",
} }
StateDiffDBDriverTypeFlag = cli.StringFlag{
Name: "statediff.db.driver",
Usage: "Statediff database driver type",
Value: "pgx",
}
StateDiffDBDumpDst = cli.StringFlag{ StateDiffDBDumpDst = cli.StringFlag{
Name: "statediff.dump.dst", Name: "statediff.dump.dst",
Usage: "Statediff database dump destination (default is stdout)", Usage: "Statediff database dump destination (default is stdout)",
Value: "stdout", Value: "stdout",
} }
StateDiffDBHostFlag = cli.StringFlag{
Name: "statediff.db.host", StateDiffV2DBDriverTypeFlag = cli.StringFlag{
Usage: "Statediff database hostname/ip", Name: "statediff.db.v2.driver",
Usage: "Statediff v2 database driver type",
Value: "pgx",
}
StateDiffV2DBHostFlag = cli.StringFlag{
Name: "statediff.db.v2.host",
Usage: "Statediff v2 database hostname/ip",
Value: "localhost", Value: "localhost",
} }
StateDiffDBPortFlag = cli.IntFlag{ StateDiffV2DBPortFlag = cli.IntFlag{
Name: "statediff.db.port", Name: "statediff.db.v2.port",
Usage: "Statediff database port", Usage: "Statediff v2 database port",
Value: 5432, Value: 5432,
} }
StateDiffDBNameFlag = cli.StringFlag{ StateDiffV2DBNameFlag = cli.StringFlag{
Name: "statediff.db.name", Name: "statediff.db.v2.name",
Usage: "Statediff database name", Usage: "Statediff v2 database name",
} }
StateDiffDBPasswordFlag = cli.StringFlag{ StateDiffV2DBPasswordFlag = cli.StringFlag{
Name: "statediff.db.password", Name: "statediff.db.v2.password",
Usage: "Statediff database password", Usage: "Statediff v2 database password",
} }
StateDiffDBUserFlag = cli.StringFlag{ StateDiffV2DBUserFlag = cli.StringFlag{
Name: "statediff.db.user", Name: "statediff.db.v2.user",
Usage: "Statediff database username", Usage: "Statediff v2 database username",
Value: "postgres", Value: "postgres",
} }
StateDiffDBMaxConnLifetime = cli.DurationFlag{ StateDiffV2DBMaxConnLifetime = cli.DurationFlag{
Name: "statediff.db.maxconnlifetime", Name: "statediff.db.v2.maxconnlifetime",
Usage: "Statediff database maximum connection lifetime (in seconds)", Usage: "Statediff v2 database maximum connection lifetime (in seconds)",
} }
StateDiffDBMaxConnIdleTime = cli.DurationFlag{ StateDiffV2DBMaxConnIdleTime = cli.DurationFlag{
Name: "statediff.db.maxconnidletime", Name: "statediff.db.v2.maxconnidletime",
Usage: "Statediff database maximum connection idle time (in seconds)", Usage: "Statediff v2 database maximum connection idle time (in seconds)",
} }
StateDiffDBMaxConns = cli.IntFlag{ StateDiffV2DBMaxConns = cli.IntFlag{
Name: "statediff.db.maxconns", Name: "statediff.db.v2.maxconns",
Usage: "Statediff database maximum connections", Usage: "Statediff v2 database maximum connections",
} }
StateDiffDBMinConns = cli.IntFlag{ StateDiffV2DBMinConns = cli.IntFlag{
Name: "statediff.db.minconns", Name: "statediff.db.v2.minconns",
Usage: "Statediff database minimum connections", Usage: "Statediff v2 database minimum connections",
} }
StateDiffDBMaxIdleConns = cli.IntFlag{ StateDiffV2DBMaxIdleConns = cli.IntFlag{
Name: "statediff.db.maxidleconns", Name: "statediff.db.v2.maxidleconns",
Usage: "Statediff database maximum idle connections", Usage: "Statediff v2 database maximum idle connections",
} }
StateDiffDBConnTimeout = cli.DurationFlag{ StateDiffV2DBConnTimeout = cli.DurationFlag{
Name: "statediff.db.conntimeout", Name: "statediff.db.v2.conntimeout",
Usage: "Statediff database connection timeout (in seconds)", Usage: "Statediff v2 database connection timeout (in seconds)",
} }
StateDiffV3DBDriverTypeFlag = cli.StringFlag{
Name: "statediff.db.v3.driver",
Usage: "Statediff v3 database driver type",
Value: "pgx",
}
StateDiffV3DBHostFlag = cli.StringFlag{
Name: "statediff.db.v3.host",
Usage: "Statediff v3 database hostname/ip",
Value: "localhost",
}
StateDiffV3DBPortFlag = cli.IntFlag{
Name: "statediff.db.v3.port",
Usage: "Statediff v3 database port",
Value: 5432,
}
StateDiffV3DBNameFlag = cli.StringFlag{
Name: "statediff.db.v3.name",
Usage: "Statediff v3 database name",
}
StateDiffV3DBPasswordFlag = cli.StringFlag{
Name: "statediff.db.v3.password",
Usage: "Statediff v3 database password",
}
StateDiffV3DBUserFlag = cli.StringFlag{
Name: "statediff.db.v3.user",
Usage: "Statediff v3 database username",
Value: "postgres",
}
StateDiffV3DBMaxConnLifetime = cli.DurationFlag{
Name: "statediff.db.v3.maxconnlifetime",
Usage: "Statediff v3 database maximum connection lifetime (in seconds)",
}
StateDiffV3DBMaxConnIdleTime = cli.DurationFlag{
Name: "statediff.db.v3.maxconnidletime",
Usage: "Statediff v3 database maximum connection idle time (in seconds)",
}
StateDiffV3DBMaxConns = cli.IntFlag{
Name: "statediff.db.v3.maxconns",
Usage: "Statediff v3 database maximum connections",
}
StateDiffV3DBMinConns = cli.IntFlag{
Name: "statediff.db.v3.minconns",
Usage: "Statediff v3 database minimum connections",
}
StateDiffV3DBMaxIdleConns = cli.IntFlag{
Name: "statediff.db.v3.maxidleconns",
Usage: "Statediff v3 database maximum idle connections",
}
StateDiffV3DBConnTimeout = cli.DurationFlag{
Name: "statediff.db.v3.conntimeout",
Usage: "Statediff v3 database connection timeout (in seconds)",
}
StateDiffDBNodeIDFlag = cli.StringFlag{ StateDiffDBNodeIDFlag = cli.StringFlag{
Name: "statediff.db.nodeid", Name: "statediff.db.nodeid",
Usage: "Node ID to use when writing state diffs to database", Usage: "Node ID to use when writing state diffs to database",