refactor!: drop backup/restore for now
This will be done with the bot from now on.
This commit is contained in:
parent
672b44f965
commit
a1abe5c6be
|
@ -7,7 +7,7 @@
|
||||||
|
|
||||||
The Co-op Cloud utility belt 🎩🐇
|
The Co-op Cloud utility belt 🎩🐇
|
||||||
|
|
||||||
`abra` is a command-line tool for managing your own [Co-op Cloud](https://coopcloud.tech). It can provision new servers, create apps, deploy them, run backup and restore operations and a whole lot of other things. Please see [docs.coopcloud.tech](https://docs.coopcloud.tech) for more extensive documentation.
|
`abra` is a command-line tool for managing your own [Co-op Cloud](https://coopcloud.tech). It can provision new servers, create apps, deploy them and a whole lot of other things. Please see [docs.coopcloud.tech](https://docs.coopcloud.tech) for more extensive documentation.
|
||||||
|
|
||||||
## Quick install
|
## Quick install
|
||||||
|
|
||||||
|
|
|
@ -12,8 +12,8 @@ var AppCommand = cli.Command{
|
||||||
ArgsUsage: "<app>",
|
ArgsUsage: "<app>",
|
||||||
Description: `
|
Description: `
|
||||||
This command provides all the functionality you need to manage the life cycle
|
This command provides all the functionality you need to manage the life cycle
|
||||||
of your apps. From initial deployment, day-2 operations (e.g. backup/restore)
|
of your apps. From initial deployment to day-2 operations to scaling apps up
|
||||||
to scaling apps up and spinning them down.
|
and spinning them down.
|
||||||
`,
|
`,
|
||||||
Subcommands: []cli.Command{
|
Subcommands: []cli.Command{
|
||||||
appNewCommand,
|
appNewCommand,
|
||||||
|
@ -22,8 +22,6 @@ to scaling apps up and spinning them down.
|
||||||
appDeployCommand,
|
appDeployCommand,
|
||||||
appUpgradeCommand,
|
appUpgradeCommand,
|
||||||
appUndeployCommand,
|
appUndeployCommand,
|
||||||
appBackupCommand,
|
|
||||||
appRestoreCommand,
|
|
||||||
appRemoveCommand,
|
appRemoveCommand,
|
||||||
appCheckCommand,
|
appCheckCommand,
|
||||||
appListCommand,
|
appListCommand,
|
||||||
|
|
|
@ -1,79 +0,0 @@
|
||||||
package app
|
|
||||||
|
|
||||||
import (
|
|
||||||
"errors"
|
|
||||||
"fmt"
|
|
||||||
"io/ioutil"
|
|
||||||
"os"
|
|
||||||
"os/exec"
|
|
||||||
"path"
|
|
||||||
"strings"
|
|
||||||
|
|
||||||
"coopcloud.tech/abra/cli/internal"
|
|
||||||
"coopcloud.tech/abra/pkg/autocomplete"
|
|
||||||
"coopcloud.tech/abra/pkg/config"
|
|
||||||
"github.com/sirupsen/logrus"
|
|
||||||
"github.com/urfave/cli"
|
|
||||||
)
|
|
||||||
|
|
||||||
var backupAllServices bool
|
|
||||||
var backupAllServicesFlag = &cli.BoolFlag{
|
|
||||||
Name: "all, a",
|
|
||||||
Destination: &backupAllServices,
|
|
||||||
Usage: "Backup all services",
|
|
||||||
}
|
|
||||||
|
|
||||||
var appBackupCommand = cli.Command{
|
|
||||||
Name: "backup",
|
|
||||||
Aliases: []string{"b"},
|
|
||||||
Usage: "Backup an app",
|
|
||||||
Flags: []cli.Flag{
|
|
||||||
internal.DebugFlag,
|
|
||||||
internal.NoInputFlag,
|
|
||||||
backupAllServicesFlag},
|
|
||||||
Before: internal.SubCommandBefore,
|
|
||||||
ArgsUsage: "<service>",
|
|
||||||
Action: func(c *cli.Context) error {
|
|
||||||
app := internal.ValidateApp(c)
|
|
||||||
|
|
||||||
if c.Args().Get(1) != "" && backupAllServices {
|
|
||||||
internal.ShowSubcommandHelpAndError(c, errors.New("cannot use '<service>' and '--all' together"))
|
|
||||||
}
|
|
||||||
|
|
||||||
abraSh := path.Join(config.RECIPES_DIR, app.Type, "abra.sh")
|
|
||||||
if _, err := os.Stat(abraSh); err != nil {
|
|
||||||
if os.IsNotExist(err) {
|
|
||||||
logrus.Fatalf("%s does not exist?", abraSh)
|
|
||||||
}
|
|
||||||
logrus.Fatal(err)
|
|
||||||
}
|
|
||||||
|
|
||||||
sourceCmd := fmt.Sprintf("source %s", abraSh)
|
|
||||||
|
|
||||||
execCmd := "abra_backup"
|
|
||||||
if !backupAllServices {
|
|
||||||
serviceName := c.Args().Get(1)
|
|
||||||
if serviceName == "" {
|
|
||||||
internal.ShowSubcommandHelpAndError(c, errors.New("no service(s) target provided"))
|
|
||||||
}
|
|
||||||
execCmd = fmt.Sprintf("abra_backup_%s", serviceName)
|
|
||||||
}
|
|
||||||
|
|
||||||
bytes, err := ioutil.ReadFile(abraSh)
|
|
||||||
if err != nil {
|
|
||||||
logrus.Fatal(err)
|
|
||||||
}
|
|
||||||
if !strings.Contains(string(bytes), execCmd) {
|
|
||||||
logrus.Fatalf("%s doesn't have a %s function", app.Type, execCmd)
|
|
||||||
}
|
|
||||||
|
|
||||||
sourceAndExec := fmt.Sprintf("%s; %s", sourceCmd, execCmd)
|
|
||||||
cmd := exec.Command("bash", "-c", sourceAndExec)
|
|
||||||
if err := internal.RunCmd(cmd); err != nil {
|
|
||||||
logrus.Fatal(err)
|
|
||||||
}
|
|
||||||
|
|
||||||
return nil
|
|
||||||
},
|
|
||||||
BashComplete: autocomplete.AppNameComplete,
|
|
||||||
}
|
|
|
@ -1,82 +0,0 @@
|
||||||
package app
|
|
||||||
|
|
||||||
import (
|
|
||||||
"errors"
|
|
||||||
"fmt"
|
|
||||||
"io/ioutil"
|
|
||||||
"os"
|
|
||||||
"os/exec"
|
|
||||||
"path"
|
|
||||||
"strings"
|
|
||||||
|
|
||||||
"coopcloud.tech/abra/cli/internal"
|
|
||||||
"coopcloud.tech/abra/pkg/config"
|
|
||||||
"github.com/sirupsen/logrus"
|
|
||||||
"github.com/urfave/cli"
|
|
||||||
)
|
|
||||||
|
|
||||||
var restoreAllServices bool
|
|
||||||
var restoreAllServicesFlag = &cli.BoolFlag{
|
|
||||||
Name: "all, a",
|
|
||||||
Destination: &restoreAllServices,
|
|
||||||
Usage: "Restore all services",
|
|
||||||
}
|
|
||||||
|
|
||||||
var appRestoreCommand = cli.Command{
|
|
||||||
Name: "restore",
|
|
||||||
Aliases: []string{"rs"},
|
|
||||||
Usage: "Restore an app from a backup",
|
|
||||||
Flags: []cli.Flag{
|
|
||||||
internal.DebugFlag,
|
|
||||||
internal.NoInputFlag,
|
|
||||||
restoreAllServicesFlag,
|
|
||||||
},
|
|
||||||
Before: internal.SubCommandBefore,
|
|
||||||
ArgsUsage: "<service> [<backup file>]",
|
|
||||||
Action: func(c *cli.Context) error {
|
|
||||||
app := internal.ValidateApp(c)
|
|
||||||
|
|
||||||
if len(c.Args()) > 1 && restoreAllServices {
|
|
||||||
internal.ShowSubcommandHelpAndError(c, errors.New("cannot use <service>/<backup file> and '--all' together"))
|
|
||||||
}
|
|
||||||
|
|
||||||
abraSh := path.Join(config.RECIPES_DIR, app.Type, "abra.sh")
|
|
||||||
if _, err := os.Stat(abraSh); err != nil {
|
|
||||||
if os.IsNotExist(err) {
|
|
||||||
logrus.Fatalf("%s does not exist?", abraSh)
|
|
||||||
}
|
|
||||||
logrus.Fatal(err)
|
|
||||||
}
|
|
||||||
|
|
||||||
sourceCmd := fmt.Sprintf("source %s", abraSh)
|
|
||||||
execCmd := "abra_restore"
|
|
||||||
if !restoreAllServices {
|
|
||||||
serviceName := c.Args().Get(1)
|
|
||||||
if serviceName == "" {
|
|
||||||
internal.ShowSubcommandHelpAndError(c, errors.New("no service(s) target provided"))
|
|
||||||
}
|
|
||||||
execCmd = fmt.Sprintf("abra_restore_%s", serviceName)
|
|
||||||
}
|
|
||||||
|
|
||||||
bytes, err := ioutil.ReadFile(abraSh)
|
|
||||||
if err != nil {
|
|
||||||
logrus.Fatal(err)
|
|
||||||
}
|
|
||||||
if !strings.Contains(string(bytes), execCmd) {
|
|
||||||
logrus.Fatalf("%s doesn't have a %s function", app.Type, execCmd)
|
|
||||||
}
|
|
||||||
|
|
||||||
backupFile := c.Args().Get(2)
|
|
||||||
if backupFile != "" {
|
|
||||||
execCmd = fmt.Sprintf("%s %s", execCmd, backupFile)
|
|
||||||
}
|
|
||||||
|
|
||||||
sourceAndExec := fmt.Sprintf("%s; %s", sourceCmd, execCmd)
|
|
||||||
cmd := exec.Command("bash", "-c", sourceAndExec)
|
|
||||||
if err := internal.RunCmd(cmd); err != nil {
|
|
||||||
logrus.Fatal(err)
|
|
||||||
}
|
|
||||||
|
|
||||||
return nil
|
|
||||||
},
|
|
||||||
}
|
|
Loading…
Reference in New Issue