@@ -83,6 +83,8 @@ type copyActionStoreFunc func(log *logger.Logger, newHome string) error
8383type copyRunDirectoryFunc func (log * logger.Logger , oldRunPath , newRunPath string ) error
8484type fileDirCopyFunc func (from , to string , opts ... copy.Options ) error
8585type markUpgradeFunc func (log * logger.Logger , dataDirPath string , agent , previousAgent agentInstall , action * fleetapi.ActionUpgrade , upgradeDetails * details.Details , desiredOutcome UpgradeOutcome ) error
86+ type changeSymlinkFunc func (log * logger.Logger , topDirPath , symlinkPath , newTarget string ) error
87+ type rollbackInstallFunc func (ctx context.Context , log * logger.Logger , topDirPath , versionedHome , oldVersionedHome string ) error
8688
8789// Types used to abstract stdlib functions
8890type mkdirAllFunc func (name string , perm fs.FileMode ) error
@@ -107,6 +109,8 @@ type Upgrader struct {
107109 copyActionStore copyActionStoreFunc
108110 copyRunDirectory copyRunDirectoryFunc
109111 markUpgrade markUpgradeFunc
112+ changeSymlink changeSymlinkFunc
113+ rollbackInstall rollbackInstallFunc
110114}
111115
112116// IsUpgradeable when agent is installed and running as a service or flag was provided.
@@ -132,6 +136,8 @@ func NewUpgrader(log *logger.Logger, settings *artifact.Config, agentInfo info.A
132136 copyActionStore : copyActionStoreProvider (os .ReadFile , os .WriteFile ),
133137 copyRunDirectory : copyRunDirectoryProvider (os .MkdirAll , copy .Copy ),
134138 markUpgrade : markUpgradeProvider (UpdateActiveCommit , os .WriteFile ),
139+ changeSymlink : changeSymlink ,
140+ rollbackInstall : rollbackInstall ,
135141 }, nil
136142}
137143
@@ -365,9 +371,9 @@ func (u *Upgrader) Upgrade(ctx context.Context, version string, sourceURI string
365371 return nil , fmt .Errorf ("calculating home path relative to top, home: %q top: %q : %w" , paths .Home (), paths .Top (), err )
366372 }
367373
368- if err := changeSymlink (u .log , paths .Top (), symlinkPath , newPath ); err != nil {
374+ if err := u . changeSymlink (u .log , paths .Top (), symlinkPath , newPath ); err != nil {
369375 u .log .Errorw ("Rolling back: changing symlink failed" , "error.message" , err )
370- rollbackErr := rollbackInstall (ctx , u .log , paths .Top (), hashedDir , currentVersionedHome )
376+ rollbackErr := u . rollbackInstall (ctx , u .log , paths .Top (), hashedDir , currentVersionedHome )
371377 return nil , goerrors .Join (err , rollbackErr )
372378 }
373379
@@ -396,7 +402,7 @@ func (u *Upgrader) Upgrade(ctx context.Context, version string, sourceURI string
396402 previous , // old agent version data
397403 action , det , OUTCOME_UPGRADE ); err != nil {
398404 u .log .Errorw ("Rolling back: marking upgrade failed" , "error.message" , err )
399- rollbackErr := rollbackInstall (ctx , u .log , paths .Top (), hashedDir , currentVersionedHome )
405+ rollbackErr := u . rollbackInstall (ctx , u .log , paths .Top (), hashedDir , currentVersionedHome )
400406 return nil , goerrors .Join (err , rollbackErr )
401407 }
402408
@@ -405,14 +411,14 @@ func (u *Upgrader) Upgrade(ctx context.Context, version string, sourceURI string
405411 var watcherCmd * exec.Cmd
406412 if watcherCmd , err = InvokeWatcher (u .log , watcherExecutable ); err != nil {
407413 u .log .Errorw ("Rolling back: starting watcher failed" , "error.message" , err )
408- rollbackErr := rollbackInstall (ctx , u .log , paths .Top (), hashedDir , currentVersionedHome )
414+ rollbackErr := u . rollbackInstall (ctx , u .log , paths .Top (), hashedDir , currentVersionedHome )
409415 return nil , goerrors .Join (err , rollbackErr )
410416 }
411417
412418 watcherWaitErr := waitForWatcher (ctx , u .log , markerFilePath (paths .Data ()), watcherMaxWaitTime )
413419 if watcherWaitErr != nil {
414420 killWatcherErr := watcherCmd .Process .Kill ()
415- rollbackErr := rollbackInstall (ctx , u .log , paths .Top (), hashedDir , currentVersionedHome )
421+ rollbackErr := u . rollbackInstall (ctx , u .log , paths .Top (), hashedDir , currentVersionedHome )
416422 return nil , goerrors .Join (watcherWaitErr , killWatcherErr , rollbackErr )
417423 }
418424
0 commit comments