mirror of
https://github.com/containers/podman.git
synced 2025-05-21 09:05:56 +08:00

Testing `podman system check` requires that we have a way to intentionally introduce storage corruptions. Add a hidden `podman testing` command that provides the necessary internal logic in subcommands. Stub out the tunnel implementation for now. Signed-off-by: Nalin Dahyabhai <nalin@redhat.com>
128 lines
4.2 KiB
Go
128 lines
4.2 KiB
Go
package main
|
|
|
|
import (
|
|
"fmt"
|
|
|
|
"github.com/containers/common/pkg/completion"
|
|
"github.com/containers/podman/v5/cmd/podman/validate"
|
|
"github.com/containers/podman/v5/internal/domain/entities"
|
|
"github.com/spf13/cobra"
|
|
)
|
|
|
|
var (
|
|
createStorageLayerDescription = `Create an unmanaged layer in local storage.`
|
|
createStorageLayerCmd = &cobra.Command{
|
|
Use: "create-storage-layer [options]",
|
|
Args: validate.NoArgs,
|
|
Short: "Create an unmanaged layer",
|
|
Long: createStorageLayerDescription,
|
|
RunE: createStorageLayer,
|
|
ValidArgsFunction: completion.AutocompleteNone,
|
|
Example: `podman testing create-storage-layer`,
|
|
}
|
|
|
|
createStorageLayerOpts entities.CreateStorageLayerOptions
|
|
|
|
createLayerDescription = `Create an unused layer in local storage.`
|
|
createLayerCmd = &cobra.Command{
|
|
Use: "create-layer [options]",
|
|
Args: validate.NoArgs,
|
|
Short: "Create an unused layer",
|
|
Long: createLayerDescription,
|
|
RunE: createLayer,
|
|
ValidArgsFunction: completion.AutocompleteNone,
|
|
Example: `podman testing create-layer`,
|
|
}
|
|
|
|
createLayerOpts entities.CreateLayerOptions
|
|
|
|
createImageDescription = `Create an image in local storage.`
|
|
createImageCmd = &cobra.Command{
|
|
Use: "create-image [options]",
|
|
Args: validate.NoArgs,
|
|
Short: "Create an image",
|
|
Long: createImageDescription,
|
|
RunE: createImage,
|
|
ValidArgsFunction: completion.AutocompleteNone,
|
|
Example: `podman testing create-image`,
|
|
}
|
|
|
|
createImageOpts entities.CreateImageOptions
|
|
|
|
createContainerDescription = `Create a container in local storage.`
|
|
createContainerCmd = &cobra.Command{
|
|
Use: "create-container [options]",
|
|
Args: validate.NoArgs,
|
|
Short: "Create a container",
|
|
Long: createContainerDescription,
|
|
RunE: createContainer,
|
|
ValidArgsFunction: completion.AutocompleteNone,
|
|
Example: `podman testing create-container`,
|
|
}
|
|
|
|
createContainerOpts entities.CreateContainerOptions
|
|
)
|
|
|
|
func init() {
|
|
mainCmd.AddCommand(createStorageLayerCmd)
|
|
flags := createStorageLayerCmd.Flags()
|
|
flags.StringVarP(&createStorageLayerOpts.ID, "id", "i", "", "ID to assign the new layer (default random)")
|
|
flags.StringVarP(&createStorageLayerOpts.Parent, "parent", "p", "", "ID of parent of new layer (default none)")
|
|
|
|
mainCmd.AddCommand(createLayerCmd)
|
|
flags = createLayerCmd.Flags()
|
|
flags.StringVarP(&createLayerOpts.ID, "id", "i", "", "ID to assign the new layer (default random)")
|
|
flags.StringVarP(&createLayerOpts.Parent, "parent", "p", "", "ID of parent of new layer (default none)")
|
|
|
|
mainCmd.AddCommand(createImageCmd)
|
|
flags = createImageCmd.Flags()
|
|
flags.StringVarP(&createImageOpts.ID, "id", "i", "", "ID to assign the new image (default random)")
|
|
flags.StringVarP(&createImageOpts.Layer, "layer", "l", "", "ID of image's main layer (default none)")
|
|
|
|
mainCmd.AddCommand(createContainerCmd)
|
|
flags = createContainerCmd.Flags()
|
|
flags.StringVarP(&createContainerOpts.ID, "id", "i", "", "ID to assign the new container (default random)")
|
|
flags.StringVarP(&createContainerOpts.Image, "image", "b", "", "ID of containers's base image (default none)")
|
|
flags.StringVarP(&createContainerOpts.Layer, "layer", "l", "", "ID of containers's read-write layer (default none)")
|
|
}
|
|
|
|
func createStorageLayer(cmd *cobra.Command, args []string) error {
|
|
results, err := testingEngine.CreateStorageLayer(mainContext, createStorageLayerOpts)
|
|
if err != nil {
|
|
return err
|
|
}
|
|
|
|
fmt.Println(results.ID)
|
|
return nil
|
|
}
|
|
|
|
func createLayer(cmd *cobra.Command, args []string) error {
|
|
results, err := testingEngine.CreateLayer(mainContext, createLayerOpts)
|
|
if err != nil {
|
|
return err
|
|
}
|
|
|
|
fmt.Println(results.ID)
|
|
return nil
|
|
}
|
|
|
|
func createImage(cmd *cobra.Command, args []string) error {
|
|
results, err := testingEngine.CreateImage(mainContext, createImageOpts)
|
|
if err != nil {
|
|
return err
|
|
}
|
|
|
|
fmt.Println(results.ID)
|
|
return nil
|
|
}
|
|
|
|
func createContainer(cmd *cobra.Command, args []string) error {
|
|
results, err := testingEngine.CreateContainer(mainContext, createContainerOpts)
|
|
if err != nil {
|
|
return err
|
|
}
|
|
|
|
fmt.Println(results.ID)
|
|
return nil
|
|
}
|