mirror of
https://github.com/containers/podman.git
synced 2025-12-01 10:38:05 +08:00
When a user specifies a invalid connection in CONTAINER_CONNECTION then podman should return a proper error saying so. Currently it ignored the error and in rootFlags() just exited early with defining any flags. This caused a panic then when trying to use the flags later. In order to address this first store the connection error in the PodmanConfig struct and not abort right away during flag setup. This is important as the user might have specified a flag with a valid remote connection. As such we check all flags and only when none were given we return the connection error. Also while at it I noticed that the default connection reported via podman --help was wrong as it only used the old containers.conf field for it and did not consider the podman-connections.json default. New regression tests have been added to make sure it behaves correctly. This fixes the problem reported in the PR #22997. Signed-off-by: Paul Holzinger <pholzing@redhat.com>
63 lines
2.6 KiB
Go
63 lines
2.6 KiB
Go
package entities
|
|
|
|
import (
|
|
"github.com/containers/common/pkg/config"
|
|
"github.com/spf13/pflag"
|
|
)
|
|
|
|
// EngineMode is the connection type podman is using to access libpod
|
|
type EngineMode string
|
|
|
|
// EngineSetup calls out whether a "normal" or specialized engine should be created
|
|
type EngineSetup string
|
|
|
|
const (
|
|
ABIMode = EngineMode("abi")
|
|
TunnelMode = EngineMode("tunnel")
|
|
)
|
|
|
|
// Convert EngineMode to String
|
|
func (m EngineMode) String() string {
|
|
return string(m)
|
|
}
|
|
|
|
// PodmanConfig combines the defaults and settings from the file system with the
|
|
// flags given in os.Args. Some runtime state is also stored here.
|
|
type PodmanConfig struct {
|
|
*pflag.FlagSet
|
|
|
|
ContainersConf *config.Config
|
|
ContainersConfDefaultsRO *config.Config // The read-only! defaults from containers.conf.
|
|
DBBackend string // Hidden: change the database backend
|
|
DockerConfig string // Location of authentication config file
|
|
CgroupUsage string // rootless code determines Usage message
|
|
ConmonPath string // --conmon flag will set Engine.ConmonPath
|
|
CPUProfile string // Hidden: Should CPU profile be taken
|
|
EngineMode EngineMode // ABI or Tunneling mode
|
|
HooksDir []string
|
|
Identity string // ssh identity for connecting to server
|
|
IsRenumber bool // Is this a system renumber command? If so, a number of checks will be relaxed
|
|
IsReset bool // Is this a system reset command? If so, a number of checks will be skipped/omitted
|
|
MaxWorks int // maximum number of parallel threads
|
|
MemoryProfile string // Hidden: Should memory profile be taken
|
|
RegistriesConf string // allows for specifying a custom registries.conf
|
|
Remote bool // Connection to Podman API Service will use RESTful API
|
|
RuntimePath string // --runtime flag will set Engine.RuntimePath
|
|
RuntimeFlags []string // global flags for the container runtime
|
|
Syslog bool // write logging information to syslog as well as the console
|
|
Trace bool // Hidden: Trace execution
|
|
URI string // URI to RESTful API Service
|
|
FarmNodeName string // Name of farm node
|
|
ConnectionError error // Error when looking up the connection in setupRemoteConnection()
|
|
|
|
Runroot string
|
|
ImageStore string
|
|
StorageDriver string
|
|
StorageOpts []string
|
|
SSHMode string
|
|
MachineMode bool
|
|
TransientStore bool
|
|
GraphRoot string
|
|
PullOptions []string
|
|
}
|