diff options
author | OpenShift Merge Robot <openshift-merge-robot@users.noreply.github.com> | 2020-03-18 18:27:33 +0100 |
---|---|---|
committer | GitHub <noreply@github.com> | 2020-03-18 18:27:33 +0100 |
commit | 45e7cbfef65d0379af19264c5fa90e1ae9ccb74a (patch) | |
tree | 213fbf640875883d598cff217b933b3c413c5707 /cmd/podman/autoupdate.go | |
parent | d9eb078e2a1cff73461f285924ab1ab8699e9bca (diff) | |
parent | f4e873c4e10502dd0a7fb14cc2fd87b12760a318 (diff) | |
download | podman-45e7cbfef65d0379af19264c5fa90e1ae9ccb74a.tar.gz podman-45e7cbfef65d0379af19264c5fa90e1ae9ccb74a.tar.bz2 podman-45e7cbfef65d0379af19264c5fa90e1ae9ccb74a.zip |
Merge pull request #5480 from vrothberg/auto-updates
auto update containers in systemd units
Diffstat (limited to 'cmd/podman/autoupdate.go')
-rw-r--r-- | cmd/podman/autoupdate.go | 56 |
1 files changed, 56 insertions, 0 deletions
diff --git a/cmd/podman/autoupdate.go b/cmd/podman/autoupdate.go new file mode 100644 index 000000000..2cc1ae72e --- /dev/null +++ b/cmd/podman/autoupdate.go @@ -0,0 +1,56 @@ +package main + +import ( + "fmt" + + "github.com/containers/libpod/cmd/podman/cliconfig" + "github.com/containers/libpod/pkg/adapter" + "github.com/pkg/errors" + "github.com/spf13/cobra" +) + +var ( + autoUpdateCommand cliconfig.AutoUpdateValues + autoUpdateDescription = `Auto update containers according to their auto-update policy. + +Auto-update policies are specified with the "io.containers.autoupdate" label.` + _autoUpdateCommand = &cobra.Command{ + Use: "auto-update [flags]", + Short: "Auto update containers according to their auto-update policy", + Args: noSubArgs, + Long: autoUpdateDescription, + RunE: func(cmd *cobra.Command, args []string) error { + restartCommand.InputArgs = args + restartCommand.GlobalFlags = MainGlobalOpts + return autoUpdateCmd(&restartCommand) + }, + Example: `podman auto-update`, + } +) + +func init() { + autoUpdateCommand.Command = _autoUpdateCommand + autoUpdateCommand.SetHelpTemplate(HelpTemplate()) + autoUpdateCommand.SetUsageTemplate(UsageTemplate()) +} + +func autoUpdateCmd(c *cliconfig.RestartValues) error { + runtime, err := adapter.GetRuntime(getContext(), &c.PodmanCommand) + if err != nil { + return errors.Wrapf(err, "error creating libpod runtime") + } + defer runtime.DeferredShutdown(false) + + units, failures := runtime.AutoUpdate() + for _, unit := range units { + fmt.Println(unit) + } + var finalErr error + if len(failures) > 0 { + finalErr = failures[0] + for _, e := range failures[1:] { + finalErr = errors.Errorf("%v\n%v", finalErr, e) + } + } + return finalErr +} |