Merge pull request #2350 from mheon/lock_renumber

Add lock renumbering
This commit is contained in:
OpenShift Merge Robot
2019-02-21 23:11:24 +01:00
committed by GitHub
26 changed files with 569 additions and 70 deletions

View File

@@ -548,3 +548,7 @@ type SystemPruneValues struct {
Force bool
Volume bool
}
type SystemRenumberValues struct {
PodmanCommand
}

View File

@@ -131,5 +131,6 @@ func getTrustSubCommands() []*cobra.Command {
func getSystemSubCommands() []*cobra.Command {
return []*cobra.Command{
_pruneSystemCommand,
_renumberCommand,
}
}

View File

@@ -8,8 +8,17 @@ import (
"github.com/pkg/errors"
)
// GetRuntimeRenumber gets a libpod runtime that will perform a lock renumber
func GetRuntimeRenumber(c *cliconfig.PodmanCommand) (*libpod.Runtime, error) {
return getRuntime(c, true)
}
// GetRuntime generates a new libpod runtime configured by command line options
func GetRuntime(c *cliconfig.PodmanCommand) (*libpod.Runtime, error) {
return getRuntime(c, false)
}
func getRuntime(c *cliconfig.PodmanCommand, renumber bool) (*libpod.Runtime, error) {
options := []libpod.RuntimeOption{}
storageOpts, volumePath, err := util.GetDefaultStoreOptions()

View File

@@ -0,0 +1,49 @@
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 (
renumberCommand cliconfig.SystemRenumberValues
renumberDescription = `
podman system renumber
Migrate lock numbers to handle a change in maximum number of locks.
Mandatory after the number of locks in libpod.conf is changed.
`
_renumberCommand = &cobra.Command{
Use: "renumber",
Short: "Migrate lock numbers",
Long: renumberDescription,
RunE: func(cmd *cobra.Command, args []string) error {
renumberCommand.InputArgs = args
renumberCommand.GlobalFlags = MainGlobalOpts
return renumberCmd(&renumberCommand)
},
}
)
func init() {
renumberCommand.Command = _renumberCommand
renumberCommand.SetUsageTemplate(UsageTemplate())
}
func renumberCmd(c *cliconfig.SystemRenumberValues) error {
// We need to pass one extra option to NewRuntime.
// This will inform the OCI runtime to start a renumber.
// That's controlled by the last argument to GetRuntime.
r, err := libpodruntime.GetRuntimeRenumber(&c.PodmanCommand)
if err != nil {
return errors.Wrapf(err, "error renumbering locks")
}
if err := r.Shutdown(false); err != nil {
return err
}
return nil
}