53 lines
		
	
	
		
			1.4 KiB
		
	
	
	
		
			Go
		
	
	
	
			
		
		
	
	
			53 lines
		
	
	
		
			1.4 KiB
		
	
	
	
		
			Go
		
	
	
	
| package main
 | |
| 
 | |
| import (
 | |
| 	"github.com/containers/libpod/cmd/podman/cliconfig"
 | |
| 	"github.com/containers/libpod/cmd/podman/libpodruntime"
 | |
| 	"github.com/pkg/errors"
 | |
| 	"github.com/spf13/cobra"
 | |
| )
 | |
| 
 | |
| var (
 | |
| 	migrateCommand     cliconfig.SystemMigrateValues
 | |
| 	migrateDescription = `
 | |
|         podman system migrate
 | |
| 
 | |
|         Migrate existing containers to a new version of Podman.
 | |
| `
 | |
| 
 | |
| 	_migrateCommand = &cobra.Command{
 | |
| 		Use:   "migrate",
 | |
| 		Args:  noSubArgs,
 | |
| 		Short: "Migrate containers",
 | |
| 		Long:  migrateDescription,
 | |
| 		RunE: func(cmd *cobra.Command, args []string) error {
 | |
| 			migrateCommand.InputArgs = args
 | |
| 			migrateCommand.GlobalFlags = MainGlobalOpts
 | |
| 			return migrateCmd(&migrateCommand)
 | |
| 		},
 | |
| 	}
 | |
| )
 | |
| 
 | |
| func init() {
 | |
| 	migrateCommand.Command = _migrateCommand
 | |
| 	migrateCommand.SetHelpTemplate(HelpTemplate())
 | |
| 	migrateCommand.SetUsageTemplate(UsageTemplate())
 | |
| 	flags := migrateCommand.Flags()
 | |
| 	flags.StringVar(&migrateCommand.NewRuntime, "new-runtime", "", "Specify a new runtime for all containers")
 | |
| }
 | |
| 
 | |
| func migrateCmd(c *cliconfig.SystemMigrateValues) error {
 | |
| 	// We need to pass one extra option to NewRuntime.
 | |
| 	// This will inform the OCI runtime to start a migrate.
 | |
| 	// That's controlled by the last argument to GetRuntime.
 | |
| 	r, err := libpodruntime.GetRuntimeMigrate(getContext(), &c.PodmanCommand, c.NewRuntime)
 | |
| 	if err != nil {
 | |
| 		return errors.Wrapf(err, "error migrating containers")
 | |
| 	}
 | |
| 	if err := r.Shutdown(false); err != nil {
 | |
| 		return err
 | |
| 	}
 | |
| 
 | |
| 	return nil
 | |
| }
 |