Files
podman/pkg/domain/entities/containers.go
Paul Holzinger 51fbf3da9e enable gocritic linter
The linter ensures a common code style.
- use switch/case instead of else if
- use if instead of switch/case for single case statement
- add space between comment and text
- detect the use of defer with os.Exit()
- use short form var += "..." instead of var = var + "..."
- detect problems with append()
```
newSlice := append(orgSlice, val)
```
  This could lead to nasty bugs because the orgSlice will be changed in
  place if it has enough capacity too hold the new elements. Thus we
  newSlice might not be a copy.

Of course most of the changes are just cosmetic and do not cause any
logic errors but I think it is a good idea to enforce a common style.
This should help maintainability.

Signed-off-by: Paul Holzinger <pholzing@redhat.com>
2022-04-26 18:12:22 +02:00

482 lines
11 KiB
Go

package entities
import (
"io"
"net/url"
"os"
"time"
nettypes "github.com/containers/common/libnetwork/types"
"github.com/containers/image/v5/types"
"github.com/containers/podman/v4/libpod/define"
"github.com/containers/podman/v4/pkg/specgen"
"github.com/containers/storage/pkg/archive"
)
// ContainerRunlabelOptions are the options to execute container-runlabel.
type ContainerRunlabelOptions struct {
// Authfile - path to an authentication file.
Authfile string
// CertDir - path to a directory containing TLS certifications and
// keys.
CertDir string
// Credentials - `user:password` to use when pulling an image.
Credentials string
// Display - do not execute but print the command.
Display bool
// Replace - replace an existing container with a new one from the
// image.
Replace bool
// Name - use this name when executing the runlabel container.
Name string
// Optional1 - fist optional parameter for install.
Optional1 string
// Optional2 - second optional parameter for install.
Optional2 string
// Optional3 - third optional parameter for install.
Optional3 string
// Pull - pull the specified image if it's not in the local storage.
Pull bool
// Quiet - suppress output when pulling images.
Quiet bool
// SignaturePolicy - path to a signature-policy file.
SignaturePolicy string
// SkipTLSVerify - skip HTTPS and certificate verifications when
// contacting registries.
SkipTLSVerify types.OptionalBool
}
// ContainerRunlabelReport contains the results from executing container-runlabel.
type ContainerRunlabelReport struct {
}
type WaitOptions struct {
Condition []define.ContainerStatus
Interval time.Duration
Latest bool
}
type WaitReport struct {
Id string //nolint
Error error
ExitCode int32
}
type BoolReport struct {
Value bool
}
// StringSliceReport wraps a string slice.
type StringSliceReport struct {
Value []string
}
type PauseUnPauseOptions struct {
All bool
}
type PauseUnpauseReport struct {
Err error
Id string //nolint
}
type StopOptions struct {
All bool
Ignore bool
Latest bool
Timeout *uint
}
type StopReport struct {
Err error
Id string //nolint
RawInput string
}
type TopOptions struct {
// CLI flags.
ListDescriptors bool
Latest bool
// Options for the API.
Descriptors []string
NameOrID string
}
type KillOptions struct {
All bool
Latest bool
Signal string
}
type KillReport struct {
Err error
Id string //nolint
RawInput string
}
type RestartOptions struct {
All bool
Latest bool
Running bool
Timeout *uint
}
type RestartReport struct {
Err error
Id string //nolint
}
type RmOptions struct {
All bool
Depend bool
Force bool
Ignore bool
Latest bool
Timeout *uint
Volumes bool
}
type ContainerInspectReport struct {
*define.InspectContainerData
}
type ContainerStatReport struct {
define.FileInfo
}
type CommitOptions struct {
Author string
Changes []string
Format string
ImageName string
IncludeVolumes bool
Message string
Pause bool
Quiet bool
Squash bool
Writer io.Writer
}
type CopyOptions struct {
// If used with ContainerCopyFromArchive and set to true
// it will change ownership of files from the source tar archive
// to the primary uid/gid of the destination container.
Chown bool
// Map to translate path names.
Rename map[string]string
}
type CommitReport struct {
Id string //nolint
}
type ContainerExportOptions struct {
Output string
}
type CheckpointOptions struct {
All bool
Export string
CreateImage string
IgnoreRootFS bool
IgnoreVolumes bool
Keep bool
Latest bool
LeaveRunning bool
TCPEstablished bool
PreCheckPoint bool
WithPrevious bool
Compression archive.Compression
PrintStats bool
FileLocks bool
}
type CheckpointReport struct {
Err error `json:"-"`
Id string `json:"Id` //nolint
RuntimeDuration int64 `json:"runtime_checkpoint_duration"`
CRIUStatistics *define.CRIUCheckpointRestoreStatistics `json:"criu_statistics"`
}
type RestoreOptions struct {
All bool
IgnoreRootFS bool
IgnoreVolumes bool
IgnoreStaticIP bool
IgnoreStaticMAC bool
Import string
CheckpointImage bool
Keep bool
Latest bool
Name string
TCPEstablished bool
ImportPrevious string
PublishPorts []string
Pod string
PrintStats bool
FileLocks bool
}
type RestoreReport struct {
Err error `json:"-"`
Id string `json:"Id` //nolint
RuntimeDuration int64 `json:"runtime_restore_duration"`
CRIUStatistics *define.CRIUCheckpointRestoreStatistics `json:"criu_statistics"`
}
type ContainerCreateReport struct {
Id string //nolint
}
// AttachOptions describes the cli and other values
// needed to perform an attach
type AttachOptions struct {
DetachKeys string
Latest bool
NoStdin bool
SigProxy bool
Stdin *os.File
Stdout *os.File
Stderr *os.File
}
// ContainerLogsOptions describes the options to extract container logs.
type ContainerLogsOptions struct {
// Show extra details provided to the logs.
Details bool
// Follow the log output.
Follow bool
// Display logs for the latest container only. Ignored on the remote client.
Latest bool
// Show container names in the output.
Names bool
// Show logs since this timestamp.
Since time.Time
// Show logs until this timestamp.
Until time.Time
// Number of lines to display at the end of the output.
Tail int64
// Show timestamps in the logs.
Timestamps bool
// Show different colors in the logs.
Colors bool
// Write the stdout to this Writer.
StdoutWriter io.Writer
// Write the stderr to this Writer.
StderrWriter io.Writer
}
// ExecOptions describes the cli values to exec into
// a container
type ExecOptions struct {
Cmd []string
DetachKeys string
Envs map[string]string
Interactive bool
Latest bool
PreserveFDs uint
Privileged bool
Tty bool
User string
WorkDir string
}
// ContainerExistsOptions describes the cli values to check if a container exists
type ContainerExistsOptions struct {
External bool
}
// ContainerStartOptions describes the val from the
// CLI needed to start a container
type ContainerStartOptions struct {
Filters map[string][]string
All bool
Attach bool
DetachKeys string
Interactive bool
Latest bool
SigProxy bool
Stdout *os.File
Stderr *os.File
Stdin *os.File
}
// ContainerStartReport describes the response from starting
// containers from the cli
type ContainerStartReport struct {
Id string //nolint
RawInput string
Err error
ExitCode int
}
// ContainerListOptions describes the CLI options
// for listing containers
type ContainerListOptions struct {
All bool
Filters map[string][]string
Format string
Last int
Latest bool
Namespace bool
Pod bool
Quiet bool
Size bool
External bool
Sort string
Sync bool
Watch uint
}
// ContainerRunOptions describes the options needed
// to run a container from the CLI
type ContainerRunOptions struct {
CIDFile string
Detach bool
DetachKeys string
ErrorStream *os.File
InputStream *os.File
OutputStream *os.File
PreserveFDs uint
Rm bool
SigProxy bool
Spec *specgen.SpecGenerator
Passwd bool
}
// ContainerRunReport describes the results of running
// a container
type ContainerRunReport struct {
ExitCode int
Id string //nolint
}
// ContainerCleanupOptions are the CLI values for the
// cleanup command
type ContainerCleanupOptions struct {
All bool
Exec string
Latest bool
Remove bool
RemoveImage bool
}
// ContainerCleanupReport describes the response from a
// container cleanup
type ContainerCleanupReport struct {
CleanErr error
Id string //nolint
RmErr error
RmiErr error
}
// ContainerInitOptions describes input options
// for the container init cli
type ContainerInitOptions struct {
All bool
Latest bool
}
// ContainerInitReport describes the results of a
// container init
type ContainerInitReport struct {
Err error
Id string //nolint
}
// ContainerMountOptions describes the input values for mounting containers
// in the CLI
type ContainerMountOptions struct {
All bool
Format string
Latest bool
NoTruncate bool
}
// ContainerUnmountOptions are the options from the cli for unmounting
type ContainerUnmountOptions struct {
All bool
Force bool
Latest bool
}
// ContainerMountReport describes the response from container mount
type ContainerMountReport struct {
Err error
Id string //nolint
Name string
Path string
}
// ContainerUnmountReport describes the response from umounting a container
type ContainerUnmountReport struct {
Err error
Id string //nolint
}
// ContainerPruneOptions describes the options needed
// to prune a container from the CLI
type ContainerPruneOptions struct {
Filters url.Values `json:"filters" schema:"filters"`
}
// ContainerPortOptions describes the options to obtain
// port information on containers
type ContainerPortOptions struct {
All bool
Latest bool
}
// ContainerPortReport describes the output needed for
// the CLI to output ports
type ContainerPortReport struct {
Id string //nolint
Ports []nettypes.PortMapping
}
// ContainerCpOptions describes input options for cp.
type ContainerCpOptions struct {
// Pause the container while copying.
Pause bool
// Extract the tarfile into the destination directory.
Extract bool
}
// ContainerStatsOptions describes input options for getting
// stats on containers
type ContainerStatsOptions struct {
// Operate on the latest known container. Only supported for local
// clients.
Latest bool
// Stream stats.
Stream bool
// Interval in seconds
Interval int
}
// ContainerStatsReport is used for streaming container stats.
type ContainerStatsReport struct {
// Error from reading stats.
Error error
// Results, set when there is no error.
Stats []define.ContainerStats
}
// ContainerRenameOptions describes input options for renaming a container.
type ContainerRenameOptions struct {
// NewName is the new name that will be given to the container.
NewName string
}
// ContainerCloneOptions contains options for cloning an existing continer
type ContainerCloneOptions struct {
ID string
Destroy bool
CreateOpts ContainerCreateOptions
Image string
RawImageName string
Run bool
Force bool
}