Skip to content

Commit

Permalink
Remove nomad references from postgres and restart commands (#3254)
Browse files Browse the repository at this point in the history
  • Loading branch information
rugwirobaker committed Feb 8, 2024
1 parent f3e509c commit cf3066a
Show file tree
Hide file tree
Showing 11 changed files with 11 additions and 616 deletions.
1 change: 0 additions & 1 deletion internal/command/apps/restart.go
Original file line number Diff line number Diff line change
Expand Up @@ -75,7 +75,6 @@ func runRestart(ctx context.Context) error {
if err != nil {
return err
}

return runMachinesRestart(ctx, app)
}

Expand Down
51 changes: 2 additions & 49 deletions internal/command/postgres/attach.go
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,6 @@ import (
"fmt"
"strings"

"github.com/pkg/errors"
"github.com/spf13/cobra"
"github.com/superfly/flyctl/agent"
"github.com/superfly/flyctl/api"
Expand Down Expand Up @@ -121,14 +120,7 @@ func runAttach(ctx context.Context) error {
}
}

switch pgApp.PlatformVersion {
case "machines":
return machineAttachCluster(ctx, params, flycast)
case "nomad":
return nomadAttachCluster(ctx, pgApp, params)
default:
return fmt.Errorf("platform is not supported")
}
return machineAttachCluster(ctx, params, flycast)
}

// AttachCluster is mean't to be called from an external package.
Expand Down Expand Up @@ -172,47 +164,8 @@ func AttachCluster(ctx context.Context, params AttachParams) error {
flycast = &ip.Address
}
}
return machineAttachCluster(ctx, params, flycast)

switch pgApp.PlatformVersion {
case "machines":
return machineAttachCluster(ctx, params, flycast)
case "nomad":
return nomadAttachCluster(ctx, pgApp, params)
default:
return fmt.Errorf("platform is not supported")
}
}

func nomadAttachCluster(ctx context.Context, pgApp *api.AppCompact, params AttachParams) error {
var (
MinPostgresHaVersion = "0.0.19"
client = client.FromContext(ctx).API()
)

if err := hasRequiredVersionOnNomad(pgApp, MinPostgresHaVersion, MinPostgresHaVersion); err != nil {
return err
}

agentclient, err := agent.Establish(ctx, client)
if err != nil {
return errors.Wrap(err, "can't establish agent")
}

pgInstances, err := agentclient.Instances(ctx, pgApp.Organization.Slug, pgApp.Name)
if err != nil {
return fmt.Errorf("failed to lookup 6pn ip for %s app: %v", pgApp.Name, err)
}

if len(pgInstances.Addresses) == 0 {
return fmt.Errorf("no 6pn ips found for %s app", pgApp.Name)
}

leaderIP, err := leaderIpFromNomadInstances(ctx, pgInstances.Addresses)
if err != nil {
return err
}

return runAttachCluster(ctx, leaderIP, params, nil)
}

func machineAttachCluster(ctx context.Context, params AttachParams, flycast *string) error {
Expand Down
43 changes: 1 addition & 42 deletions internal/command/postgres/config_show.go
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,6 @@ import (
"strconv"
"strings"

"github.com/pkg/errors"
"github.com/spf13/cobra"
"github.com/superfly/flyctl/agent"
"github.com/superfly/flyctl/api"
Expand Down Expand Up @@ -62,15 +61,7 @@ func runConfigShow(ctx context.Context) error {
if err != nil {
return err
}

switch app.PlatformVersion {
case "machines":
return runMachineConfigShow(ctx, app)
case "nomad":
return runNomadConfigShow(ctx, app)
default:
return fmt.Errorf("unknown platform version")
}
return runMachineConfigShow(ctx, app)
}

func runMachineConfigShow(ctx context.Context, app *api.AppCompact) (err error) {
Expand Down Expand Up @@ -107,38 +98,6 @@ func runMachineConfigShow(ctx context.Context, app *api.AppCompact) (err error)
return showSettings(ctx, app, manager, leader.PrivateIP)
}

func runNomadConfigShow(ctx context.Context, app *api.AppCompact) (err error) {
var (
MinPostgresHaVersion = "0.0.19"
client = client.FromContext(ctx).API()
)

agentclient, err := agent.Establish(ctx, client)
if err != nil {
return errors.Wrap(err, "can't establish agent")
}

if err := hasRequiredVersionOnNomad(app, MinPostgresHaVersion, MinPostgresHaVersion); err != nil {
return err
}

pgInstances, err := agentclient.Instances(ctx, app.Organization.Slug, app.Name)
if err != nil {
return fmt.Errorf("failed to lookup 6pn ip for %s app: %v", app.Name, err)
}

if len(pgInstances.Addresses) == 0 {
return fmt.Errorf("no 6pn ips found for %s app", app.Name)
}

leaderIP, err := leaderIpFromNomadInstances(ctx, pgInstances.Addresses)
if err != nil {
return err
}

return showSettings(ctx, app, flypg.StolonManager, leaderIP)
}

func showSettings(ctx context.Context, app *api.AppCompact, manager string, leaderIP string) error {
var (
io = iostreams.FromContext(ctx)
Expand Down
71 changes: 1 addition & 70 deletions internal/command/postgres/config_update.go
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,6 @@ import (
"strconv"
"strings"

"github.com/pkg/errors"
"github.com/r3labs/diff"
"github.com/spf13/cobra"
"github.com/superfly/flyctl/agent"
Expand Down Expand Up @@ -108,15 +107,8 @@ func runConfigUpdate(ctx context.Context) error {
if err != nil {
return err
}
return runMachineConfigUpdate(ctx, app)

switch app.PlatformVersion {
case "machines":
return runMachineConfigUpdate(ctx, app)
case "nomad":
return runNomadConfigUpdate(ctx, app)
default:
return fmt.Errorf("unknown platform version")
}
}

func runMachineConfigUpdate(ctx context.Context, app *api.AppCompact) error {
Expand Down Expand Up @@ -371,67 +363,6 @@ func isRestartRequired(pgSettings *flypg.PGSettings, name string) bool {
return false
}

func runNomadConfigUpdate(ctx context.Context, app *api.AppCompact) error {
var (
client = client.FromContext(ctx).API()
io = iostreams.FromContext(ctx)
colorize = io.ColorScheme()
autoConfirm = flag.GetBool(ctx, "yes")

MinPostgresVersion = "v0.0.32"
)

if err := hasRequiredVersionOnNomad(app, MinPostgresVersion, MinPostgresVersion); err != nil {
return err
}

agentclient, err := agent.Establish(ctx, client)
if err != nil {
return errors.Wrap(err, "can't establish agent")
}

pgInstances, err := agentclient.Instances(ctx, app.Organization.Slug, app.Name)
if err != nil {
return fmt.Errorf("failed to lookup 6pn ip for %s app: %v", app.Name, err)
}
if len(pgInstances.Addresses) == 0 {
return fmt.Errorf("no 6pn ips found for %s app", app.Name)
}

leaderIP, err := leaderIpFromNomadInstances(ctx, pgInstances.Addresses)
if err != nil {
return err
}

requiresRestart, err := updateStolonConfig(ctx, app, leaderIP)
if err != nil {
return err
}

if requiresRestart {
if !autoConfirm {
fmt.Fprintln(io.Out, colorize.Yellow("Please note that some of your changes will require a cluster restart before they will be applied."))

switch confirmed, err := prompt.Confirm(ctx, "Restart cluster now?"); {
case err == nil:
if !confirmed {
return nil
}
case prompt.IsNonInteractive(err):
return prompt.NonInteractiveError("yes flag must be specified when not running interactively")
default:
return err
}
}

if err := nomadRestart(ctx, app); err != nil {
return err
}
}

return nil
}

func validateConfigValue(setting flypg.PGSetting, key, val string) error {
switch setting.VarType {
case "enum":
Expand Down
55 changes: 1 addition & 54 deletions internal/command/postgres/connect.go
Original file line number Diff line number Diff line change
Expand Up @@ -77,14 +77,7 @@ func runConnect(ctx context.Context) error {
return err
}

switch app.PlatformVersion {
case "machines":
return runMachineConnect(ctx, app)
case "nomad":
return runNomadConnect(ctx, app)
default:
return fmt.Errorf("unknown platform version")
}
return runMachineConnect(ctx, app)
}

func runMachineConnect(ctx context.Context, app *api.AppCompact) error {
Expand Down Expand Up @@ -125,49 +118,3 @@ func runMachineConnect(ctx context.Context, app *api.AppCompact) error {
Stderr: ioutils.NewWriteCloserWrapper(colorable.NewColorableStderr(), func() error { return nil }),
}, leader.PrivateIP)
}

func runNomadConnect(ctx context.Context, app *api.AppCompact) error {
var (
client = client.FromContext(ctx).API()

MinPostgresStandaloneVersion = "0.0.4"
MinPostgresHaVersion = "0.0.9"

database = flag.GetString(ctx, "database")
user = flag.GetString(ctx, "user")
password = flag.GetString(ctx, "password")
)

if err := hasRequiredVersionOnNomad(app, MinPostgresHaVersion, MinPostgresStandaloneVersion); err != nil {
return err
}

agentclient, err := agent.Establish(ctx, client)
if err != nil {
return fmt.Errorf("failed to establish agent: %w", err)
}

pgInstances, err := agentclient.Instances(ctx, app.Organization.Slug, app.Name)
if err != nil {
return fmt.Errorf("failed to lookup 6pn ip for %s app: %v", app.Name, err)
}
if len(pgInstances.Addresses) == 0 {
return fmt.Errorf("no 6pn ips found for %s app", app.Name)
}
leaderIP, err := leaderIpFromNomadInstances(ctx, pgInstances.Addresses)
if err != nil {
return err
}

return ssh.SSHConnect(&ssh.SSHParams{
Ctx: ctx,
Org: app.Organization,
Dialer: agent.DialerFromContext(ctx),
App: app.Name,
Username: ssh.DefaultSshUsername,
Cmd: fmt.Sprintf("connect %s %s %s", database, user, password),
Stdin: os.Stdin,
Stdout: ioutils.NewWriteCloserWrapper(colorable.NewColorableStdout(), func() error { return nil }),
Stderr: ioutils.NewWriteCloserWrapper(colorable.NewColorableStderr(), func() error { return nil }),
}, leaderIP)
}
43 changes: 1 addition & 42 deletions internal/command/postgres/db.go
Original file line number Diff line number Diff line change
Expand Up @@ -78,15 +78,7 @@ func runListDbs(ctx context.Context) error {
if err != nil {
return err
}

switch app.PlatformVersion {
case "machines":
return runMachineListDbs(ctx, app)
case "nomad":
return runNomadListDbs(ctx, app)
default:
return fmt.Errorf("unknown platform version")
}
return runMachineListDbs(ctx, app)
}

func runMachineListDbs(ctx context.Context, app *api.AppCompact) error {
Expand Down Expand Up @@ -117,39 +109,6 @@ func runMachineListDbs(ctx context.Context, app *api.AppCompact) error {
return listDBs(ctx, leader.PrivateIP)
}

func runNomadListDbs(ctx context.Context, app *api.AppCompact) error {
// Minimum image version requirements
var (
MinPostgresHaVersion = "0.0.19"
client = client.FromContext(ctx).API()
)

if err := hasRequiredVersionOnNomad(app, MinPostgresHaVersion, MinPostgresHaVersion); err != nil {
return err
}

agentclient, err := agent.Establish(ctx, client)
if err != nil {
return fmt.Errorf("can't establish agent %w", err)
}

pgInstances, err := agentclient.Instances(ctx, app.Organization.Slug, app.Name)
if err != nil {
return fmt.Errorf("failed to lookup 6pn ip for %s app: %v", app.Name, err)
}
if len(pgInstances.Addresses) == 0 {
return fmt.Errorf("no 6pn ips found for %s app", app.Name)
}

leaderIP, err := leaderIpFromNomadInstances(ctx, pgInstances.Addresses)
if err != nil {
return err
}

return listDBs(ctx, leaderIP)

}

func listDBs(ctx context.Context, leaderIP string) error {
var (
dialer = agent.DialerFromContext(ctx)
Expand Down

0 comments on commit cf3066a

Please sign in to comment.