@@ -38,31 +38,57 @@ import (
3838var (
3939 cmdUpgrade = & cobra.Command {
4040 Use : "upgrade" ,
41- Short : "Start the ArangoDB starter in the background " ,
41+ Short : "Upgrade an ArangoDB deployment to a new version " ,
4242 Run : cmdUpgradeRun ,
4343 }
44+ cmdRetry = & cobra.Command {
45+ Use : "retry" ,
46+ Short : "Retry an operation" ,
47+ Run : cmdShowUsage ,
48+ }
49+ cmdRetryUpgrade = & cobra.Command {
50+ Use : "upgrade" ,
51+ Short : "Retry a failed upgrade of an ArangoDB deployment to a new version" ,
52+ Run : cmdRetryUpgradeRun ,
53+ }
4454 upgradeOptions struct {
4555 starterEndpoint string
4656 }
57+ retryUpgradeOptions struct {
58+ starterEndpoint string
59+ }
4760)
4861
4962func init () {
5063 f := cmdUpgrade .Flags ()
5164 f .StringVar (& upgradeOptions .starterEndpoint , "starter.endpoint" , "" , "The endpoint of the starter to connect to. E.g. http://localhost:8528" )
5265
66+ f = cmdRetryUpgrade .Flags ()
67+ f .StringVar (& retryUpgradeOptions .starterEndpoint , "starter.endpoint" , "" , "The endpoint of the starter to connect to. E.g. http://localhost:8528" )
68+
5369 cmdMain .AddCommand (cmdUpgrade )
70+ cmdMain .AddCommand (cmdRetry )
71+ cmdRetry .AddCommand (cmdRetryUpgrade )
5472}
5573
5674func cmdUpgradeRun (cmd * cobra.Command , args []string ) {
75+ runUpgrade (upgradeOptions .starterEndpoint , false , false )
76+ }
77+
78+ func cmdRetryUpgradeRun (cmd * cobra.Command , args []string ) {
79+ runUpgrade (retryUpgradeOptions .starterEndpoint , false , true )
80+ }
81+
82+ func runUpgrade (starterEndpoint string , force , retry bool ) {
5783 // Setup logging
5884 consoleOnly := true
5985 configureLogging (consoleOnly )
6086
6187 // Check options
62- if upgradeOptions . starterEndpoint == "" {
88+ if starterEndpoint == "" {
6389 log .Fatal ().Msg ("--starter.endpoint must be set" )
6490 }
65- ep , err := url .Parse (upgradeOptions . starterEndpoint )
91+ ep , err := url .Parse (starterEndpoint )
6692 if err != nil {
6793 log .Fatal ().Err (err ).Msg ("--starter.endpoint is invalid" )
6894 }
@@ -73,11 +99,17 @@ func cmdUpgradeRun(cmd *cobra.Command, args []string) {
7399 log .Fatal ().Err (err ).Msg ("Failed to create Starter client" )
74100 }
75101 ctx := context .Background ()
76- force := false
77- if err := c .StartDatabaseUpgrade (ctx , force ); err != nil {
78- log .Fatal ().Err (err ).Msg ("Failed to starter database automatic upgrade" )
102+ if retry {
103+ if err := c .RetryDatabaseUpgrade (ctx ); err != nil {
104+ log .Fatal ().Err (err ).Msg ("Failed to retry database automatic upgrade" )
105+ }
106+ log .Info ().Msg ("Database automatic upgrade has been restarted" )
107+ } else {
108+ if err := c .StartDatabaseUpgrade (ctx , force ); err != nil {
109+ log .Fatal ().Err (err ).Msg ("Failed to start database automatic upgrade" )
110+ }
111+ log .Info ().Msg ("Database automatic upgrade has been started" )
79112 }
80- log .Info ().Msg ("Database automatic upgrade has been started" )
81113
82114 // Wait for the upgrade to finish
83115 remaining := ""
0 commit comments