mirror of
				https://github.com/containers/podman.git
				synced 2025-10-31 18:08:51 +08:00 
			
		
		
		
	 2e70d4201f
			
		
	
	2e70d4201f
	
	
	
		
			
			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
 | |
| }
 |