Merge pull request #6121 from vrothberg/v2-auto-update

auto-update
This commit is contained in:
OpenShift Merge Robot
2020-05-08 16:08:11 +02:00
committed by GitHub
5 changed files with 79 additions and 0 deletions

46
cmd/podman/auto-update.go Normal file
View File

@ -0,0 +1,46 @@
package main
import (
"fmt"
"github.com/containers/libpod/cmd/podman/registry"
"github.com/containers/libpod/pkg/domain/entities"
"github.com/containers/libpod/pkg/errorhandling"
"github.com/pkg/errors"
"github.com/spf13/cobra"
)
var (
autoUpdateDescription = `Auto update containers according to their auto-update policy.
Auto-update policies are specified with the "io.containers.autoupdate" label.
Note that this command is experimental.`
autoUpdateCommand = &cobra.Command{
Use: "auto-update [flags]",
Short: "Auto update containers according to their auto-update policy",
Long: autoUpdateDescription,
RunE: autoUpdate,
Example: `podman auto-update`,
}
)
func init() {
registry.Commands = append(registry.Commands, registry.CliCommand{
Mode: []entities.EngineMode{entities.ABIMode},
Command: autoUpdateCommand,
})
}
func autoUpdate(cmd *cobra.Command, args []string) error {
if len(args) > 0 {
// Backwards compat. System tests expext this error string.
return errors.Errorf("`%s` takes no arguments", cmd.CommandPath())
}
report, failures := registry.ContainerEngine().AutoUpdate(registry.GetContext())
if report != nil {
for _, unit := range report.Units {
fmt.Println(unit)
}
}
return errorhandling.JoinErrors(failures)
}

View File

@ -0,0 +1,7 @@
package entities
// AutoUpdateReport contains the results from running auto-update.
type AutoUpdateReport struct {
// Units - the restarted systemd units during auto-update.
Units []string
}

View File

@ -10,6 +10,7 @@ import (
)
type ContainerEngine interface {
AutoUpdate(ctx context.Context) (*AutoUpdateReport, []error)
Config(ctx context.Context) (*config.Config, error)
ContainerAttach(ctx context.Context, nameOrId string, options AttachOptions) error
ContainerCheckpoint(ctx context.Context, namesOrIds []string, options CheckpointOptions) ([]*CheckpointReport, error)

View File

@ -0,0 +1,13 @@
package abi
import (
"context"
"github.com/containers/libpod/pkg/autoupdate"
"github.com/containers/libpod/pkg/domain/entities"
)
func (ic *ContainerEngine) AutoUpdate(ctx context.Context) (*entities.AutoUpdateReport, []error) {
units, failures := autoupdate.AutoUpdate(ic.Libpod)
return &entities.AutoUpdateReport{Units: units}, failures
}

View File

@ -0,0 +1,12 @@
package tunnel
import (
"context"
"github.com/containers/libpod/pkg/domain/entities"
"github.com/pkg/errors"
)
func (ic *ContainerEngine) AutoUpdate(ctx context.Context) (*entities.AutoUpdateReport, []error) {
return nil, []error{errors.New("not implemented")}
}