Remove containers/common/pkg/config from pkg/util

Probably has to wait for V6

Signed-off-by: Daniel J Walsh <dwalsh@redhat.com>
This commit is contained in:
Daniel J Walsh
2024-09-03 17:42:17 -04:00
parent 858b25df27
commit eb396705c6
14 changed files with 57 additions and 49 deletions

View File

@ -3,7 +3,6 @@ package containers
import ( import (
"github.com/containers/podman/v5/cmd/podman/registry" "github.com/containers/podman/v5/cmd/podman/registry"
"github.com/containers/podman/v5/cmd/podman/validate" "github.com/containers/podman/v5/cmd/podman/validate"
"github.com/containers/podman/v5/pkg/util"
"github.com/spf13/cobra" "github.com/spf13/cobra"
) )
@ -20,7 +19,7 @@ var (
RunE: validate.SubCommandExists, RunE: validate.SubCommandExists,
} }
containerConfig = util.DefaultContainerConfig() containerConfig = registry.PodmanConfig().ContainersConfDefaultsRO
) )
func init() { func init() {

View File

@ -3,7 +3,6 @@ package generate
import ( import (
"github.com/containers/podman/v5/cmd/podman/registry" "github.com/containers/podman/v5/cmd/podman/registry"
"github.com/containers/podman/v5/cmd/podman/validate" "github.com/containers/podman/v5/cmd/podman/validate"
"github.com/containers/podman/v5/pkg/util"
"github.com/spf13/cobra" "github.com/spf13/cobra"
) )
@ -15,7 +14,7 @@ var (
Long: "Generate structured data (e.g., Kubernetes YAML or systemd units) based on containers, pods or volumes.", Long: "Generate structured data (e.g., Kubernetes YAML or systemd units) based on containers, pods or volumes.",
RunE: validate.SubCommandExists, RunE: validate.SubCommandExists,
} }
containerConfig = util.DefaultContainerConfig() containerConfig = registry.PodmanConfig().ContainersConfDefaultsRO
) )
func init() { func init() {

View File

@ -74,7 +74,7 @@ func load(cmd *cobra.Command, args []string) error {
if len(loadOpts.Input) > 0 { if len(loadOpts.Input) > 0 {
// Download the input file if needed. // Download the input file if needed.
if strings.HasPrefix(loadOpts.Input, "https://") || strings.HasPrefix(loadOpts.Input, "http://") { if strings.HasPrefix(loadOpts.Input, "https://") || strings.HasPrefix(loadOpts.Input, "http://") {
tmpdir, err := util.DefaultContainerConfig().ImageCopyTmpDir() tmpdir, err := registry.PodmanConfig().ContainersConfDefaultsRO.ImageCopyTmpDir()
if err != nil { if err != nil {
return err return err
} }

View File

@ -3,7 +3,6 @@ package network
import ( import (
"github.com/containers/podman/v5/cmd/podman/registry" "github.com/containers/podman/v5/cmd/podman/registry"
"github.com/containers/podman/v5/cmd/podman/validate" "github.com/containers/podman/v5/cmd/podman/validate"
"github.com/containers/podman/v5/pkg/util"
"github.com/spf13/cobra" "github.com/spf13/cobra"
) )
@ -18,7 +17,7 @@ var (
Long: "Manage networks", Long: "Manage networks",
RunE: validate.SubCommandExists, RunE: validate.SubCommandExists,
} }
containerConfig = util.DefaultContainerConfig() containerConfig = registry.PodmanConfig().ContainersConfDefaultsRO
) )
func init() { func init() {

View File

@ -3,7 +3,6 @@ package pods
import ( import (
"github.com/containers/podman/v5/cmd/podman/registry" "github.com/containers/podman/v5/cmd/podman/registry"
"github.com/containers/podman/v5/cmd/podman/validate" "github.com/containers/podman/v5/cmd/podman/validate"
"github.com/containers/podman/v5/pkg/util"
"github.com/spf13/cobra" "github.com/spf13/cobra"
) )
@ -18,7 +17,7 @@ var (
Long: "Pods are a group of one or more containers sharing the same network, pid and ipc namespaces.", Long: "Pods are a group of one or more containers sharing the same network, pid and ipc namespaces.",
RunE: validate.SubCommandExists, RunE: validate.SubCommandExists,
} }
containerConfig = util.DefaultContainerConfig() containerConfig = registry.PodmanConfig().ContainersConfDefaultsRO
) )
func init() { func init() {

View File

@ -3,7 +3,6 @@ package volumes
import ( import (
"github.com/containers/podman/v5/cmd/podman/registry" "github.com/containers/podman/v5/cmd/podman/registry"
"github.com/containers/podman/v5/cmd/podman/validate" "github.com/containers/podman/v5/cmd/podman/validate"
"github.com/containers/podman/v5/pkg/util"
"github.com/spf13/cobra" "github.com/spf13/cobra"
) )
@ -18,7 +17,7 @@ var (
Long: "Volumes are created in and can be shared between containers", Long: "Volumes are created in and can be shared between containers",
RunE: validate.SubCommandExists, RunE: validate.SubCommandExists,
} }
containerConfig = util.DefaultContainerConfig() containerConfig = registry.PodmanConfig().ContainersConfDefaultsRO
) )
func init() { func init() {

View File

@ -507,6 +507,11 @@ func (p *Pod) podWithContainers(ctx context.Context, containers []*Container, po
stopTimeout *uint stopTimeout *uint
) )
cfg, err := config.Default()
if err != nil {
return nil, err
}
// Let's sort the containers in order of created time // Let's sort the containers in order of created time
// This will ensure that the init containers are defined in the correct order in the kube yaml // This will ensure that the init containers are defined in the correct order in the kube yaml
sort.Slice(containers, func(i, j int) bool { return containers[i].CreatedTime().Before(containers[j].CreatedTime()) }) sort.Slice(containers, func(i, j int) bool { return containers[i].CreatedTime().Before(containers[j].CreatedTime()) })
@ -560,7 +565,7 @@ func (p *Pod) podWithContainers(ctx context.Context, containers []*Container, po
// Pick the first container that has a stop-timeout set and use that value // Pick the first container that has a stop-timeout set and use that value
// Ignore podman's default // Ignore podman's default
if ctr.config.StopTimeout != util.DefaultContainerConfig().Engine.StopTimeout && stopTimeout == nil { if ctr.config.StopTimeout != cfg.Engine.StopTimeout && stopTimeout == nil {
stopTimeout = &ctr.config.StopTimeout stopTimeout = &ctr.config.StopTimeout
} }
@ -666,6 +671,11 @@ func newPodObject(podName string, annotations map[string]string, initCtrs, conta
// simplePodWithV1Containers is a function used by inspect when kube yaml needs to be generated // simplePodWithV1Containers is a function used by inspect when kube yaml needs to be generated
// for a single container. we "insert" that container description in a pod. // for a single container. we "insert" that container description in a pod.
func simplePodWithV1Containers(ctx context.Context, ctrs []*Container, getService, podmanOnly bool) (*v1.Pod, error) { func simplePodWithV1Containers(ctx context.Context, ctrs []*Container, getService, podmanOnly bool) (*v1.Pod, error) {
cfg, err := config.Default()
if err != nil {
return nil, err
}
kubeCtrs := make([]v1.Container, 0, len(ctrs)) kubeCtrs := make([]v1.Container, 0, len(ctrs))
kubeInitCtrs := []v1.Container{} kubeInitCtrs := []v1.Container{}
kubeVolumes := make([]v1.Volume, 0) kubeVolumes := make([]v1.Volume, 0)
@ -705,7 +715,7 @@ func simplePodWithV1Containers(ctx context.Context, ctrs []*Container, getServic
// Pick the first container that has a stop-timeout set and use that value // Pick the first container that has a stop-timeout set and use that value
// Ignore podman's default // Ignore podman's default
if ctr.config.StopTimeout != util.DefaultContainerConfig().Engine.StopTimeout && stopTimeout == nil { if ctr.config.StopTimeout != cfg.Engine.StopTimeout && stopTimeout == nil {
stopTimeout = &ctr.config.StopTimeout stopTimeout = &ctr.config.StopTimeout
} }
@ -716,7 +726,7 @@ func simplePodWithV1Containers(ctx context.Context, ctrs []*Container, getServic
if ctr.config.Spec.Process != nil { if ctr.config.Spec.Process != nil {
var ulimitArr []string var ulimitArr []string
defaultUlimits := util.DefaultContainerConfig().Ulimits() defaultUlimits := cfg.Ulimits()
for _, ulimit := range ctr.config.Spec.Process.Rlimits { for _, ulimit := range ctr.config.Spec.Process.Rlimits {
finalUlimit := strings.ToLower(strings.ReplaceAll(ulimit.Type, "RLIMIT_", "")) + "=" + strconv.Itoa(int(ulimit.Soft)) + ":" + strconv.Itoa(int(ulimit.Hard)) finalUlimit := strings.ToLower(strings.ReplaceAll(ulimit.Type, "RLIMIT_", "")) + "=" + strconv.Itoa(int(ulimit.Soft)) + ":" + strconv.Itoa(int(ulimit.Hard))
// compare ulimit with default list so we don't add it twice // compare ulimit with default list so we don't add it twice

View File

@ -643,7 +643,10 @@ func BuildImage(w http.ResponseWriter, r *http.Request) {
AuthFilePath: authfile, AuthFilePath: authfile,
DockerAuthConfig: creds, DockerAuthConfig: creds,
} }
utils.PossiblyEnforceDockerHub(r, systemContext) if err := utils.PossiblyEnforceDockerHub(r, systemContext); err != nil {
utils.Error(w, http.StatusInternalServerError, fmt.Errorf("checking to enforce DockerHub: %w", err))
return
}
if _, found := r.URL.Query()["tlsVerify"]; found { if _, found := r.URL.Query()["tlsVerify"]; found {
systemContext.DockerInsecureSkipTLSVerify = types.NewOptionalBool(!query.TLSVerify) systemContext.DockerInsecureSkipTLSVerify = types.NewOptionalBool(!query.TLSVerify)

View File

@ -6,18 +6,24 @@ import (
"fmt" "fmt"
"net/http" "net/http"
"github.com/containers/common/pkg/config"
"github.com/containers/podman/v5/libpod" "github.com/containers/podman/v5/libpod"
"github.com/containers/podman/v5/pkg/api/handlers/utils" "github.com/containers/podman/v5/pkg/api/handlers/utils"
api "github.com/containers/podman/v5/pkg/api/types" api "github.com/containers/podman/v5/pkg/api/types"
"github.com/containers/podman/v5/pkg/domain/entities" "github.com/containers/podman/v5/pkg/domain/entities"
"github.com/containers/podman/v5/pkg/domain/infra/abi" "github.com/containers/podman/v5/pkg/domain/infra/abi"
"github.com/containers/podman/v5/pkg/util"
"github.com/gorilla/schema" "github.com/gorilla/schema"
) )
func GenerateSystemd(w http.ResponseWriter, r *http.Request) { func GenerateSystemd(w http.ResponseWriter, r *http.Request) {
runtime := r.Context().Value(api.RuntimeKey).(*libpod.Runtime) runtime := r.Context().Value(api.RuntimeKey).(*libpod.Runtime)
decoder := r.Context().Value(api.DecoderKey).(*schema.Decoder) decoder := r.Context().Value(api.DecoderKey).(*schema.Decoder)
cfg, err := config.Default()
if err != nil {
utils.Error(w, http.StatusInternalServerError, fmt.Errorf("reading containers.conf: %w", err))
return
}
query := struct { query := struct {
Name bool `schema:"useName"` Name bool `schema:"useName"`
New bool `schema:"new"` New bool `schema:"new"`
@ -36,7 +42,7 @@ func GenerateSystemd(w http.ResponseWriter, r *http.Request) {
AdditionalEnvVariables []string `schema:"additionalEnvVariables"` AdditionalEnvVariables []string `schema:"additionalEnvVariables"`
}{ }{
StartTimeout: 0, StartTimeout: 0,
StopTimeout: util.DefaultContainerConfig().Engine.StopTimeout, StopTimeout: cfg.Engine.StopTimeout,
} }
if err := decoder.Decode(&query, r.URL.Query()); err != nil { if err := decoder.Decode(&query, r.URL.Query()); err != nil {

View File

@ -19,7 +19,6 @@ import (
"github.com/containers/podman/v5/libpod" "github.com/containers/podman/v5/libpod"
api "github.com/containers/podman/v5/pkg/api/types" api "github.com/containers/podman/v5/pkg/api/types"
"github.com/containers/podman/v5/pkg/errorhandling" "github.com/containers/podman/v5/pkg/errorhandling"
"github.com/containers/podman/v5/pkg/util"
"github.com/containers/storage" "github.com/containers/storage"
"github.com/docker/distribution/registry/api/errcode" "github.com/docker/distribution/registry/api/errcode"
"github.com/docker/docker/pkg/jsonmessage" "github.com/docker/docker/pkg/jsonmessage"
@ -30,7 +29,11 @@ import (
// request is for the compat API and if containers.conf set the specific mode. // request is for the compat API and if containers.conf set the specific mode.
// If nameOrID is a (short) ID for a local image, the full ID will be returned. // If nameOrID is a (short) ID for a local image, the full ID will be returned.
func NormalizeToDockerHub(r *http.Request, nameOrID string) (string, error) { func NormalizeToDockerHub(r *http.Request, nameOrID string) (string, error) {
if IsLibpodRequest(r) || !util.DefaultContainerConfig().Engine.CompatAPIEnforceDockerHub { cfg, err := config.Default()
if err != nil {
return "", err
}
if IsLibpodRequest(r) || !cfg.Engine.CompatAPIEnforceDockerHub {
return nameOrID, nil return nameOrID, nil
} }
@ -62,11 +65,16 @@ func NormalizeToDockerHub(r *http.Request, nameOrID string) (string, error) {
// PossiblyEnforceDockerHub sets fields in the system context to enforce // PossiblyEnforceDockerHub sets fields in the system context to enforce
// resolving short names to Docker Hub if the request is for the compat API and // resolving short names to Docker Hub if the request is for the compat API and
// if containers.conf set the specific mode. // if containers.conf set the specific mode.
func PossiblyEnforceDockerHub(r *http.Request, sys *types.SystemContext) { func PossiblyEnforceDockerHub(r *http.Request, sys *types.SystemContext) error {
if IsLibpodRequest(r) || !util.DefaultContainerConfig().Engine.CompatAPIEnforceDockerHub { cfg, err := config.Default()
return if err != nil {
return err
}
if IsLibpodRequest(r) || !cfg.Engine.CompatAPIEnforceDockerHub {
return nil
} }
sys.PodmanOnlyShortNamesIgnoreRegistriesConfAndForceDockerHub = true sys.PodmanOnlyShortNamesIgnoreRegistriesConfAndForceDockerHub = true
return nil
} }
// IsRegistryReference checks if the specified name points to the "docker://" // IsRegistryReference checks if the specified name points to the "docker://"

View File

@ -550,6 +550,11 @@ func (ic *ContainerEngine) playKubeDeployment(ctx context.Context, deploymentYAM
} }
func (ic *ContainerEngine) playKubePod(ctx context.Context, podName string, podYAML *v1.PodTemplateSpec, options entities.PlayKubeOptions, ipIndex *int, annotations map[string]string, configMaps []v1.ConfigMap, serviceContainer *libpod.Container) (*entities.PlayKubeReport, []*notifyproxy.NotifyProxy, error) { func (ic *ContainerEngine) playKubePod(ctx context.Context, podName string, podYAML *v1.PodTemplateSpec, options entities.PlayKubeOptions, ipIndex *int, annotations map[string]string, configMaps []v1.ConfigMap, serviceContainer *libpod.Container) (*entities.PlayKubeReport, []*notifyproxy.NotifyProxy, error) {
cfg, err := ic.Libpod.GetConfigNoCopy()
if err != nil {
return nil, nil, err
}
var ( var (
writer io.Writer writer io.Writer
playKubePod entities.PlayKubePod playKubePod entities.PlayKubePod
@ -777,7 +782,7 @@ func (ic *ContainerEngine) playKubePod(ctx context.Context, podName string, podY
} }
if podOpt.Infra { if podOpt.Infra {
infraImage := util.DefaultContainerConfig().Engine.InfraImage infraImage := cfg.Engine.InfraImage
infraOptions := entities.NewInfraContainerCreateOptions() infraOptions := entities.NewInfraContainerCreateOptions()
infraOptions.Hostname = podSpec.PodSpecGen.PodBasicConfig.Hostname infraOptions.Hostname = podSpec.PodSpecGen.PodBasicConfig.Hostname
infraOptions.ReadOnly = true infraOptions.ReadOnly = true
@ -850,11 +855,6 @@ func (ic *ContainerEngine) playKubePod(ctx context.Context, podName string, podY
} }
} }
cfg, err := ic.Libpod.GetConfigNoCopy()
if err != nil {
return nil, nil, err
}
var readOnly types.OptionalBool var readOnly types.OptionalBool
if cfg.Containers.ReadOnly { if cfg.Containers.ReadOnly {
readOnly = types.NewOptionalBool(cfg.Containers.ReadOnly) readOnly = types.NewOptionalBool(cfg.Containers.ReadOnly)

View File

@ -9,6 +9,7 @@ import (
"github.com/containers/common/libnetwork/types" "github.com/containers/common/libnetwork/types"
"github.com/containers/common/pkg/cgroups" "github.com/containers/common/pkg/cgroups"
"github.com/containers/common/pkg/config"
"github.com/containers/podman/v5/libpod/define" "github.com/containers/podman/v5/libpod/define"
"github.com/containers/podman/v5/pkg/namespaces" "github.com/containers/podman/v5/pkg/namespaces"
"github.com/containers/podman/v5/pkg/rootless" "github.com/containers/podman/v5/pkg/rootless"
@ -328,14 +329,18 @@ func ParseUserNamespace(ns string) (Namespace, error) {
// If the input is nil or empty it will use the default setting from containers.conf // If the input is nil or empty it will use the default setting from containers.conf
func ParseNetworkFlag(networks []string) (Namespace, map[string]types.PerNetworkOptions, map[string][]string, error) { func ParseNetworkFlag(networks []string) (Namespace, map[string]types.PerNetworkOptions, map[string][]string, error) {
var networkOptions map[string][]string var networkOptions map[string][]string
toReturn := Namespace{}
// by default we try to use the containers.conf setting // by default we try to use the containers.conf setting
// if we get at least one value use this instead // if we get at least one value use this instead
ns := containerConfig.Containers.NetNS cfg, err := config.Default()
if err != nil {
return toReturn, nil, nil, err
}
ns := cfg.Containers.NetNS
if len(networks) > 0 { if len(networks) > 0 {
ns = networks[0] ns = networks[0]
} }
toReturn := Namespace{}
podmanNetworks := make(map[string]types.PerNetworkOptions) podmanNetworks := make(map[string]types.PerNetworkOptions)
switch { switch {

View File

@ -3,15 +3,12 @@ package specgen
import ( import (
"errors" "errors"
"fmt" "fmt"
"github.com/containers/podman/v5/pkg/util"
) )
var ( var (
// ErrInvalidPodSpecConfig describes an error given when the podspecgenerator is invalid // ErrInvalidPodSpecConfig describes an error given when the podspecgenerator is invalid
ErrInvalidPodSpecConfig = errors.New("invalid pod spec") ErrInvalidPodSpecConfig = errors.New("invalid pod spec")
// containerConfig has the default configurations defined in containers.conf // containerConfig has the default configurations defined in containers.conf
containerConfig = util.DefaultContainerConfig()
) )
func exclusivePodOptions(opt1, opt2 string) error { func exclusivePodOptions(opt1, opt2 string) error {

View File

@ -17,7 +17,6 @@ import (
"time" "time"
"github.com/BurntSushi/toml" "github.com/BurntSushi/toml"
"github.com/containers/common/pkg/config"
"github.com/containers/image/v5/types" "github.com/containers/image/v5/types"
"github.com/containers/podman/v5/libpod/define" "github.com/containers/podman/v5/libpod/define"
"github.com/containers/podman/v5/pkg/errorhandling" "github.com/containers/podman/v5/pkg/errorhandling"
@ -43,17 +42,6 @@ type idMapFlags struct {
GroupMap bool // The "g" flag GroupMap bool // The "g" flag
} }
var containerConfig *config.Config
func init() {
var err error
containerConfig, err = config.Default()
if err != nil {
logrus.Error(err)
os.Exit(1)
}
}
// Helper function to determine the username/password passed // Helper function to determine the username/password passed
// in the creds string. It could be either or both. // in the creds string. It could be either or both.
func parseCreds(creds string) (string, string) { func parseCreds(creds string) (string, string) {
@ -1225,10 +1213,6 @@ func ValidateSysctls(strSlice []string) (map[string]string, error) {
return sysctl, nil return sysctl, nil
} }
func DefaultContainerConfig() *config.Config {
return containerConfig
}
func CreateIDFile(path string, id string) error { func CreateIDFile(path string, id string) error {
idFile, err := os.Create(path) idFile, err := os.Create(path)
if err != nil { if err != nil {