mirror of
https://github.com/containers/podman.git
synced 2025-06-23 02:18:13 +08:00
Merge pull request #14374 from umohnani8/todo-3
Combine the CheckAllLatest CID and PodID functions
This commit is contained in:
@ -31,7 +31,7 @@ var (
|
||||
Long: checkpointDescription,
|
||||
RunE: checkpoint,
|
||||
Args: func(cmd *cobra.Command, args []string) error {
|
||||
return validate.CheckAllLatestAndCIDFile(cmd, args, false, false)
|
||||
return validate.CheckAllLatestAndIDFile(cmd, args, false, "")
|
||||
},
|
||||
ValidArgsFunction: common.AutocompleteContainersRunning,
|
||||
Example: `podman container checkpoint --keep ctrID
|
||||
|
@ -27,7 +27,7 @@ var (
|
||||
Long: cleanupDescription,
|
||||
RunE: cleanup,
|
||||
Args: func(cmd *cobra.Command, args []string) error {
|
||||
return validate.CheckAllLatestAndCIDFile(cmd, args, false, false)
|
||||
return validate.CheckAllLatestAndIDFile(cmd, args, false, "")
|
||||
},
|
||||
ValidArgsFunction: common.AutocompleteContainersExited,
|
||||
Example: `podman container cleanup --latest
|
||||
|
@ -21,7 +21,7 @@ var (
|
||||
Long: initDescription,
|
||||
RunE: initContainer,
|
||||
Args: func(cmd *cobra.Command, args []string) error {
|
||||
return validate.CheckAllLatestAndCIDFile(cmd, args, false, false)
|
||||
return validate.CheckAllLatestAndIDFile(cmd, args, false, "")
|
||||
},
|
||||
ValidArgsFunction: common.AutocompleteContainersCreated,
|
||||
Example: `podman init --latest
|
||||
|
@ -25,7 +25,7 @@ var (
|
||||
Long: killDescription,
|
||||
RunE: kill,
|
||||
Args: func(cmd *cobra.Command, args []string) error {
|
||||
return validate.CheckAllLatestAndCIDFile(cmd, args, false, true)
|
||||
return validate.CheckAllLatestAndIDFile(cmd, args, false, "cidfile")
|
||||
},
|
||||
ValidArgsFunction: common.AutocompleteContainersRunning,
|
||||
Example: `podman kill mywebserver
|
||||
@ -35,7 +35,7 @@ var (
|
||||
|
||||
containerKillCommand = &cobra.Command{
|
||||
Args: func(cmd *cobra.Command, args []string) error {
|
||||
return validate.CheckAllLatestAndCIDFile(cmd, args, false, true)
|
||||
return validate.CheckAllLatestAndIDFile(cmd, args, false, "cidfile")
|
||||
},
|
||||
Use: killCommand.Use,
|
||||
Short: killCommand.Short,
|
||||
|
@ -33,7 +33,7 @@ var (
|
||||
Long: mountDescription,
|
||||
RunE: mount,
|
||||
Args: func(cmd *cobra.Command, args []string) error {
|
||||
return validate.CheckAllLatestAndCIDFile(cmd, args, true, false)
|
||||
return validate.CheckAllLatestAndIDFile(cmd, args, true, "")
|
||||
},
|
||||
ValidArgsFunction: common.AutocompleteContainers,
|
||||
}
|
||||
|
@ -23,7 +23,7 @@ var (
|
||||
Long: portDescription,
|
||||
RunE: port,
|
||||
Args: func(cmd *cobra.Command, args []string) error {
|
||||
return validate.CheckAllLatestAndCIDFile(cmd, args, true, false)
|
||||
return validate.CheckAllLatestAndIDFile(cmd, args, true, "")
|
||||
},
|
||||
ValidArgsFunction: common.AutocompleteContainerOneArg,
|
||||
Example: `podman port --all
|
||||
@ -37,7 +37,7 @@ var (
|
||||
Long: portDescription,
|
||||
RunE: portCommand.RunE,
|
||||
Args: func(cmd *cobra.Command, args []string) error {
|
||||
return validate.CheckAllLatestAndCIDFile(cmd, args, true, false)
|
||||
return validate.CheckAllLatestAndIDFile(cmd, args, true, "")
|
||||
},
|
||||
ValidArgsFunction: portCommand.ValidArgsFunction,
|
||||
Example: `podman container port --all
|
||||
|
@ -26,7 +26,7 @@ var (
|
||||
Long: restartDescription,
|
||||
RunE: restart,
|
||||
Args: func(cmd *cobra.Command, args []string) error {
|
||||
return validate.CheckAllLatestAndCIDFile(cmd, args, false, false)
|
||||
return validate.CheckAllLatestAndIDFile(cmd, args, false, "")
|
||||
},
|
||||
ValidArgsFunction: common.AutocompleteContainers,
|
||||
Example: `podman restart ctrID
|
||||
|
@ -28,7 +28,7 @@ var (
|
||||
Long: restoreDescription,
|
||||
RunE: restore,
|
||||
Args: func(cmd *cobra.Command, args []string) error {
|
||||
return validate.CheckAllLatestAndCIDFile(cmd, args, true, false)
|
||||
return validate.CheckAllLatestAndIDFile(cmd, args, true, "")
|
||||
},
|
||||
ValidArgsFunction: common.AutocompleteContainersAndImages,
|
||||
Example: `podman container restore ctrID
|
||||
|
@ -28,7 +28,7 @@ var (
|
||||
Long: rmDescription,
|
||||
RunE: rm,
|
||||
Args: func(cmd *cobra.Command, args []string) error {
|
||||
return validate.CheckAllLatestAndCIDFile(cmd, args, false, true)
|
||||
return validate.CheckAllLatestAndIDFile(cmd, args, false, "cidfile")
|
||||
},
|
||||
ValidArgsFunction: common.AutocompleteContainers,
|
||||
Example: `podman rm imageID
|
||||
|
@ -26,7 +26,7 @@ var (
|
||||
Long: stopDescription,
|
||||
RunE: stop,
|
||||
Args: func(cmd *cobra.Command, args []string) error {
|
||||
return validate.CheckAllLatestAndCIDFile(cmd, args, false, true)
|
||||
return validate.CheckAllLatestAndIDFile(cmd, args, false, "cidfile")
|
||||
},
|
||||
ValidArgsFunction: common.AutocompleteContainersRunning,
|
||||
Example: `podman stop ctrID
|
||||
@ -40,7 +40,7 @@ var (
|
||||
Long: stopCommand.Long,
|
||||
RunE: stopCommand.RunE,
|
||||
Args: func(cmd *cobra.Command, args []string) error {
|
||||
return validate.CheckAllLatestAndCIDFile(cmd, args, false, true)
|
||||
return validate.CheckAllLatestAndIDFile(cmd, args, false, "cidfile")
|
||||
},
|
||||
ValidArgsFunction: stopCommand.ValidArgsFunction,
|
||||
Example: `podman container stop ctrID
|
||||
|
@ -27,7 +27,7 @@ var (
|
||||
Long: description,
|
||||
RunE: unmount,
|
||||
Args: func(cmd *cobra.Command, args []string) error {
|
||||
return validate.CheckAllLatestAndCIDFile(cmd, args, false, false)
|
||||
return validate.CheckAllLatestAndIDFile(cmd, args, false, "")
|
||||
},
|
||||
ValidArgsFunction: common.AutocompleteContainers,
|
||||
Example: `podman unmount ctrID
|
||||
@ -43,7 +43,7 @@ var (
|
||||
Long: unmountCommand.Long,
|
||||
RunE: unmountCommand.RunE,
|
||||
Args: func(cmd *cobra.Command, args []string) error {
|
||||
return validate.CheckAllLatestAndCIDFile(cmd, args, false, false)
|
||||
return validate.CheckAllLatestAndIDFile(cmd, args, false, "")
|
||||
},
|
||||
ValidArgsFunction: common.AutocompleteContainers,
|
||||
Example: `podman container unmount ctrID
|
||||
|
@ -21,7 +21,7 @@ var (
|
||||
Long: networkReloadDescription,
|
||||
RunE: networkReload,
|
||||
Args: func(cmd *cobra.Command, args []string) error {
|
||||
return validate.CheckAllLatestAndCIDFile(cmd, args, false, false)
|
||||
return validate.CheckAllLatestAndIDFile(cmd, args, false, "")
|
||||
},
|
||||
ValidArgsFunction: common.AutocompleteContainers,
|
||||
Example: `podman network reload --latest
|
||||
|
@ -22,7 +22,7 @@ var (
|
||||
Long: podKillDescription,
|
||||
RunE: kill,
|
||||
Args: func(cmd *cobra.Command, args []string) error {
|
||||
return validate.CheckAllLatestAndCIDFile(cmd, args, false, false)
|
||||
return validate.CheckAllLatestAndIDFile(cmd, args, false, "")
|
||||
},
|
||||
ValidArgsFunction: common.AutocompletePodsRunning,
|
||||
Example: `podman pod kill podID
|
||||
|
@ -22,7 +22,7 @@ var (
|
||||
Long: podPauseDescription,
|
||||
RunE: pause,
|
||||
Args: func(cmd *cobra.Command, args []string) error {
|
||||
return validate.CheckAllLatestAndCIDFile(cmd, args, false, false)
|
||||
return validate.CheckAllLatestAndIDFile(cmd, args, false, "")
|
||||
},
|
||||
ValidArgsFunction: common.AutocompletePodsRunning,
|
||||
Example: `podman pod pause podID1 podID2
|
||||
|
@ -22,7 +22,7 @@ var (
|
||||
Long: podRestartDescription,
|
||||
RunE: restart,
|
||||
Args: func(cmd *cobra.Command, args []string) error {
|
||||
return validate.CheckAllLatestAndCIDFile(cmd, args, false, false)
|
||||
return validate.CheckAllLatestAndIDFile(cmd, args, false, "")
|
||||
},
|
||||
ValidArgsFunction: common.AutocompletePods,
|
||||
Example: `podman pod restart podID1 podID2
|
||||
|
@ -35,7 +35,7 @@ var (
|
||||
Long: podRmDescription,
|
||||
RunE: rm,
|
||||
Args: func(cmd *cobra.Command, args []string) error {
|
||||
return validate.CheckAllLatestAndPodIDFile(cmd, args, false, true)
|
||||
return validate.CheckAllLatestAndIDFile(cmd, args, false, "pod-id-file")
|
||||
},
|
||||
ValidArgsFunction: common.AutocompletePods,
|
||||
Example: `podman pod rm mywebserverpod
|
||||
|
@ -31,7 +31,7 @@ var (
|
||||
Long: podStartDescription,
|
||||
RunE: start,
|
||||
Args: func(cmd *cobra.Command, args []string) error {
|
||||
return validate.CheckAllLatestAndPodIDFile(cmd, args, false, true)
|
||||
return validate.CheckAllLatestAndIDFile(cmd, args, false, "pod-id-file")
|
||||
},
|
||||
ValidArgsFunction: common.AutocompletePods,
|
||||
Example: `podman pod start podID
|
||||
|
@ -36,7 +36,7 @@ var (
|
||||
Long: podStopDescription,
|
||||
RunE: stop,
|
||||
Args: func(cmd *cobra.Command, args []string) error {
|
||||
return validate.CheckAllLatestAndPodIDFile(cmd, args, false, true)
|
||||
return validate.CheckAllLatestAndIDFile(cmd, args, false, "pod-id-file")
|
||||
},
|
||||
ValidArgsFunction: common.AutocompletePodsRunning,
|
||||
Example: `podman pod stop mywebserverpod
|
||||
|
@ -22,7 +22,7 @@ var (
|
||||
Long: podUnpauseDescription,
|
||||
RunE: unpause,
|
||||
Args: func(cmd *cobra.Command, args []string) error {
|
||||
return validate.CheckAllLatestAndCIDFile(cmd, args, false, false)
|
||||
return validate.CheckAllLatestAndIDFile(cmd, args, false, "")
|
||||
},
|
||||
// TODO have a function which shows only pods which could be unpaused
|
||||
// for now show all
|
||||
|
@ -50,34 +50,44 @@ func IDOrLatestArgs(cmd *cobra.Command, args []string) error {
|
||||
return nil
|
||||
}
|
||||
|
||||
// TODO: the two functions CheckAllLatestAndCIDFile and CheckAllLatestAndPodIDFile are almost identical.
|
||||
// It may be worth looking into generalizing the two a bit more and share code but time is scarce and
|
||||
// we only live once.
|
||||
|
||||
// CheckAllLatestAndCIDFile checks that --all and --latest are used correctly.
|
||||
// If cidfile is set, also check for the --cidfile flag.
|
||||
// CheckAllLatestAndCIDFile checks that --all and --latest are used correctly for containers and pods
|
||||
// If idFileFlag is set is set, also checks for the --cidfile or --pod-id-file flag.
|
||||
// Note: this has been deprecated, use CheckAllLatestAndIDFile instead
|
||||
func CheckAllLatestAndCIDFile(c *cobra.Command, args []string, ignoreArgLen bool, cidfile bool) error {
|
||||
return CheckAllLatestAndIDFile(c, args, ignoreArgLen, "cidfile")
|
||||
}
|
||||
|
||||
// CheckAllLatestAndPodIDFile checks that --all and --latest are used correctly.
|
||||
// If withIDFile is set, also check for the --pod-id-file flag.
|
||||
// Note: this has been deprecated, use CheckAllLatestAndIDFile instead
|
||||
func CheckAllLatestAndPodIDFile(c *cobra.Command, args []string, ignoreArgLen bool, withIDFile bool) error {
|
||||
return CheckAllLatestAndIDFile(c, args, ignoreArgLen, "pod-id-file")
|
||||
}
|
||||
|
||||
// CheckAllLatestAndIDFile checks that --all and --latest are used correctly for containers and pods
|
||||
// If idFileFlag is set is set, also checks for the --cidfile or --pod-id-file flag.
|
||||
func CheckAllLatestAndIDFile(c *cobra.Command, args []string, ignoreArgLen bool, idFileFlag string) error {
|
||||
var specifiedLatest bool
|
||||
argLen := len(args)
|
||||
if !registry.IsRemote() {
|
||||
specifiedLatest, _ = c.Flags().GetBool("latest")
|
||||
if c.Flags().Lookup("all") == nil || c.Flags().Lookup("latest") == nil {
|
||||
if !cidfile {
|
||||
if idFileFlag == "" {
|
||||
return errors.New("unable to lookup values for 'latest' or 'all'")
|
||||
} else if c.Flags().Lookup("cidfile") == nil {
|
||||
return errors.New("unable to lookup values for 'latest', 'all' or 'cidfile'")
|
||||
} else if c.Flags().Lookup(idFileFlag) == nil {
|
||||
return errors.Errorf("unable to lookup values for 'latest', 'all', or '%s'", idFileFlag)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
specifiedAll, _ := c.Flags().GetBool("all")
|
||||
specifiedCIDFile := false
|
||||
if cid, _ := c.Flags().GetStringArray("cidfile"); len(cid) > 0 {
|
||||
specifiedCIDFile = true
|
||||
specifiedIDFile := false
|
||||
if cid, _ := c.Flags().GetStringArray(idFileFlag); len(cid) > 0 {
|
||||
specifiedIDFile = true
|
||||
}
|
||||
|
||||
if specifiedCIDFile && (specifiedAll || specifiedLatest) {
|
||||
return errors.Errorf("--all, --latest and --cidfile cannot be used together")
|
||||
if specifiedIDFile && (specifiedAll || specifiedLatest) {
|
||||
return errors.Errorf("--all, --latest, and --%s cannot be used together", idFileFlag)
|
||||
} else if specifiedAll && specifiedLatest {
|
||||
return errors.Errorf("--all and --latest cannot be used together")
|
||||
}
|
||||
@ -93,71 +103,16 @@ func CheckAllLatestAndCIDFile(c *cobra.Command, args []string, ignoreArgLen bool
|
||||
if argLen > 0 {
|
||||
if specifiedLatest {
|
||||
return errors.Errorf("--latest and containers cannot be used together")
|
||||
} else if cidfile && (specifiedLatest || specifiedCIDFile) {
|
||||
return errors.Errorf("no arguments are needed with --latest or --cidfile")
|
||||
} else if idFileFlag != "" && (specifiedLatest || specifiedIDFile) {
|
||||
return errors.Errorf("no arguments are needed with --latest or --%s", idFileFlag)
|
||||
}
|
||||
}
|
||||
|
||||
if specifiedCIDFile {
|
||||
if specifiedIDFile {
|
||||
return nil
|
||||
}
|
||||
|
||||
if argLen < 1 && !specifiedAll && !specifiedLatest && !specifiedCIDFile {
|
||||
return errors.Errorf("you must provide at least one name or id")
|
||||
}
|
||||
return nil
|
||||
}
|
||||
|
||||
// CheckAllLatestAndPodIDFile checks that --all and --latest are used correctly.
|
||||
// If withIDFile is set, also check for the --pod-id-file flag.
|
||||
func CheckAllLatestAndPodIDFile(c *cobra.Command, args []string, ignoreArgLen bool, withIDFile bool) error {
|
||||
var specifiedLatest bool
|
||||
argLen := len(args)
|
||||
if !registry.IsRemote() {
|
||||
// remote clients have no latest flag
|
||||
specifiedLatest, _ = c.Flags().GetBool("latest")
|
||||
if c.Flags().Lookup("all") == nil || c.Flags().Lookup("latest") == nil {
|
||||
if !withIDFile {
|
||||
return errors.New("unable to lookup values for 'latest' or 'all'")
|
||||
} else if c.Flags().Lookup("pod-id-file") == nil {
|
||||
return errors.New("unable to lookup values for 'latest', 'all' or 'pod-id-file'")
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
specifiedAll, _ := c.Flags().GetBool("all")
|
||||
specifiedPodIDFile := false
|
||||
if pid, _ := c.Flags().GetStringArray("pod-id-file"); len(pid) > 0 {
|
||||
specifiedPodIDFile = true
|
||||
}
|
||||
|
||||
if specifiedPodIDFile && (specifiedAll || specifiedLatest) {
|
||||
return errors.Errorf("--all, --latest and --pod-id-file cannot be used together")
|
||||
} else if specifiedAll && specifiedLatest {
|
||||
return errors.Errorf("--all and --latest cannot be used together")
|
||||
}
|
||||
|
||||
if (argLen > 0) && specifiedAll {
|
||||
return errors.Errorf("no arguments are needed with --all")
|
||||
}
|
||||
|
||||
if ignoreArgLen {
|
||||
return nil
|
||||
}
|
||||
|
||||
if argLen > 0 {
|
||||
if specifiedLatest {
|
||||
return errors.Errorf("--latest and pods cannot be used together")
|
||||
} else if withIDFile && (specifiedLatest || specifiedPodIDFile) {
|
||||
return errors.Errorf("no arguments are needed with --latest or --pod-id-file")
|
||||
}
|
||||
}
|
||||
|
||||
if specifiedPodIDFile {
|
||||
return nil
|
||||
}
|
||||
|
||||
if argLen < 1 && !specifiedAll && !specifiedLatest && !specifiedPodIDFile {
|
||||
if argLen < 1 && !specifiedAll && !specifiedLatest && !specifiedIDFile {
|
||||
return errors.Errorf("you must provide at least one name or id")
|
||||
}
|
||||
return nil
|
||||
|
Reference in New Issue
Block a user