Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions go.mod
Original file line number Diff line number Diff line change
Expand Up @@ -22,6 +22,7 @@ require (
github.com/aws/aws-sdk-go-v2/config v1.32.14
github.com/aws/aws-sdk-go-v2/credentials v1.19.14
github.com/aws/aws-sdk-go-v2/feature/s3/manager v1.21.1
github.com/aws/aws-sdk-go-v2/service/ec2 v1.297.1
github.com/aws/aws-sdk-go-v2/service/s3 v1.99.1
github.com/bcp-innovations/hyperlane-cosmos v1.1.0
github.com/celestiaorg/go-square/v2 v2.3.3
Expand Down
2 changes: 2 additions & 0 deletions go.sum
Original file line number Diff line number Diff line change
Expand Up @@ -188,6 +188,8 @@ github.com/aws/aws-sdk-go-v2/internal/ini v1.8.6 h1:qYQ4pzQ2Oz6WpQ8T3HvGHnZydA72
github.com/aws/aws-sdk-go-v2/internal/ini v1.8.6/go.mod h1:O3h0IK87yXci+kg6flUKzJnWeziQUKciKrLjcatSNcY=
github.com/aws/aws-sdk-go-v2/internal/v4a v1.4.23 h1:FPXsW9+gMuIeKmz7j6ENWcWtBGTe1kH8r9thNt5Uxx4=
github.com/aws/aws-sdk-go-v2/internal/v4a v1.4.23/go.mod h1:7J8iGMdRKk6lw2C+cMIphgAnT8uTwBwNOsGkyOCm80U=
github.com/aws/aws-sdk-go-v2/service/ec2 v1.297.1 h1:9nfacm+uWgbdPaOplvJjxN50qgthexb7GOR/97ygc5o=
github.com/aws/aws-sdk-go-v2/service/ec2 v1.297.1/go.mod h1:E1pnYwWFZ8N3REmeN9Fe/Zipbpps4HJj8DQGNnLUMYc=
github.com/aws/aws-sdk-go-v2/service/internal/accept-encoding v1.13.8 h1:HtOTYcbVcGABLOVuPYaIihj6IlkqubBwFj10K5fxRek=
github.com/aws/aws-sdk-go-v2/service/internal/accept-encoding v1.13.8/go.mod h1:VsK9abqQeGlzPgUr+isNWzPlK2vKe9INMLWnY65f5Xs=
github.com/aws/aws-sdk-go-v2/service/internal/checksum v1.9.14 h1:xnvDEnw+pnj5mctWiYuFbigrEzSm35x7k4KS/ZkCANg=
Expand Down
28 changes: 25 additions & 3 deletions tools/talis/add.go
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,7 @@ func addCmd() *cobra.Command {
nodeType string
provider string
region string
slug string
)
cmd := &cobra.Command{
Use: "add",
Expand All @@ -31,27 +32,35 @@ func addCmd() *cobra.Command {

switch nodeType {
case "validator":
start := len(cfg.Validators)
for range count {
switch provider {
case "digitalocean":
cfg = cfg.WithDigitalOceanValidator(region)
case "googlecloud":
cfg = cfg.WithGoogleCloudValidator(region)
case "aws":
cfg = cfg.WithAWSValidator(region)
default:
return fmt.Errorf("unknown provider %q (supported: digitalocean, googlecloud)", provider)
return fmt.Errorf("unknown provider %q (supported: digitalocean, googlecloud, aws)", provider)
}
}
applySlug(cfg.Validators, start, slug)
case "encoder":
start := len(cfg.Encoders)
for range count {
switch provider {
case "digitalocean":
cfg = cfg.WithDigitalOceanEncoder(region)
case "googlecloud":
cfg = cfg.WithGoogleCloudEncoder(region)
case "aws":
cfg = cfg.WithAWSEncoder(region)
default:
return fmt.Errorf("unknown provider %q (supported: digitalocean, googlecloud)", provider)
return fmt.Errorf("unknown provider %q (supported: digitalocean, googlecloud, aws)", provider)
}
}
applySlug(cfg.Encoders, start, slug)
case "bridge":
log.Println("bridges are not yet supported")
return nil
Expand All @@ -71,8 +80,21 @@ func addCmd() *cobra.Command {
_ = cmd.MarkFlagRequired("count")
cmd.Flags().StringVarP(&nodeType, "type", "t", "", "Type of the node (validator, encoder, bridge, light)")
_ = cmd.MarkFlagRequired("type")
cmd.Flags().StringVarP(&provider, "provider", "p", "digitalocean", "Provider for the node (digitalocean, googlecloud)")
cmd.Flags().StringVarP(&provider, "provider", "p", "digitalocean", "Provider for the node (digitalocean, googlecloud, aws)")
cmd.Flags().StringVarP(&region, "region", "r", "random", "the region to deploy the instance in (random if blank)")
cmd.Flags().StringVar(&slug, "slug", "", "provider-specific instance type override (e.g. c6in.4xlarge). Empty = provider default for the node type.")

return cmd
}

// applySlug overrides the Slug field on the just-added instances in the
// slice. It only touches entries at index [start, len(instances)) so a
// second `add` with a different `--slug` does not re-stamp earlier ones.
func applySlug(instances []Instance, start int, slug string) {
if slug == "" {
return
}
for i := start; i < len(instances); i++ {
instances[i].Slug = slug
}
}
Loading