summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMatej Vasek <mvasek@redhat.com>2022-01-14 17:08:52 +0100
committerMatej Vasek <mvasek@redhat.com>2022-01-19 13:46:32 +0100
commit4b384e08a9680d480976ab575ecf54acdb4d1922 (patch)
tree1296ffdc40e6b45086ea485c5f275188130dc669
parent094665ac0cccc04c7797881ff2a27ff330e9a72e (diff)
downloadpodman-4b384e08a9680d480976ab575ecf54acdb4d1922.tar.gz
podman-4b384e08a9680d480976ab575ecf54acdb4d1922.tar.bz2
podman-4b384e08a9680d480976ab575ecf54acdb4d1922.zip
Add IndexConfigs to compat /info endpoint
Signed-off-by: Matej Vasek <mvasek@redhat.com>
-rw-r--r--pkg/api/handlers/compat/info.go34
-rw-r--r--test/python/docker/__init__.py21
-rw-r--r--test/python/docker/compat/test_system.py5
3 files changed, 49 insertions, 11 deletions
diff --git a/pkg/api/handlers/compat/info.go b/pkg/api/handlers/compat/info.go
index 42a513002..2dfca2f30 100644
--- a/pkg/api/handlers/compat/info.go
+++ b/pkg/api/handlers/compat/info.go
@@ -11,6 +11,7 @@ import (
"github.com/containers/common/pkg/config"
"github.com/containers/common/pkg/sysinfo"
+ "github.com/containers/image/v5/pkg/sysregistriesv2"
"github.com/containers/podman/v4/libpod"
"github.com/containers/podman/v4/libpod/define"
"github.com/containers/podman/v4/pkg/api/handlers"
@@ -108,7 +109,7 @@ func GetInfo(w http.ResponseWriter, r *http.Request) {
Log: infoData.Plugins.Log,
},
ProductLicense: "Apache-2.0",
- RegistryConfig: new(registry.ServiceConfig),
+ RegistryConfig: getServiceConfig(runtime),
RuncCommit: docker.Commit{},
Runtimes: getRuntimes(configInfo),
SecurityOptions: getSecOpts(sysInfo),
@@ -133,6 +134,37 @@ func GetInfo(w http.ResponseWriter, r *http.Request) {
utils.WriteResponse(w, http.StatusOK, info)
}
+func getServiceConfig(runtime *libpod.Runtime) *registry.ServiceConfig {
+ var indexConfs map[string]*registry.IndexInfo
+
+ regs, err := sysregistriesv2.GetRegistries(runtime.SystemContext())
+ if err == nil {
+ indexConfs = make(map[string]*registry.IndexInfo, len(regs))
+ for _, reg := range regs {
+ mirrors := make([]string, len(reg.Mirrors))
+ for i, mirror := range reg.Mirrors {
+ mirrors[i] = mirror.Location
+ }
+ indexConfs[reg.Prefix] = &registry.IndexInfo{
+ Name: reg.Prefix,
+ Mirrors: mirrors,
+ Secure: !reg.Insecure,
+ }
+ }
+ } else {
+ log.Warnf("failed to get registries configuration: %v", err)
+ indexConfs = make(map[string]*registry.IndexInfo)
+ }
+
+ return &registry.ServiceConfig{
+ AllowNondistributableArtifactsCIDRs: make([]*registry.NetIPNet, 0),
+ AllowNondistributableArtifactsHostnames: make([]string, 0),
+ InsecureRegistryCIDRs: make([]*registry.NetIPNet, 0),
+ IndexConfigs: indexConfs,
+ Mirrors: make([]string, 0),
+ }
+}
+
func getGraphStatus(storeInfo map[string]string) [][2]string {
graphStatus := make([][2]string, 0, len(storeInfo))
for k, v := range storeInfo {
diff --git a/test/python/docker/__init__.py b/test/python/docker/__init__.py
index f75185192..539b30d36 100644
--- a/test/python/docker/__init__.py
+++ b/test/python/docker/__init__.py
@@ -42,16 +42,19 @@ class Podman(object):
os.environ["CONTAINERS_REGISTRIES_CONF"] = os.path.join(
self.anchor_directory, "registry.conf"
)
- p = configparser.ConfigParser()
- p.read_dict(
- {
- "registries.search": {"registries": "['quay.io', 'docker.io']"},
- "registries.insecure": {"registries": "[]"},
- "registries.block": {"registries": "[]"},
- }
- )
+ conf = """unqualified-search-registries = ["docker.io", "quay.io"]
+
+[[registry]]
+location="localhost:5000"
+insecure=true
+
+[[registry.mirror]]
+location = "mirror.localhost:5000"
+
+"""
+
with open(os.environ["CONTAINERS_REGISTRIES_CONF"], "w") as w:
- p.write(w)
+ w.write(conf)
os.environ["CNI_CONFIG_PATH"] = os.path.join(
self.anchor_directory, "cni", "net.d"
diff --git a/test/python/docker/compat/test_system.py b/test/python/docker/compat/test_system.py
index 131b18991..a928de0ee 100644
--- a/test/python/docker/compat/test_system.py
+++ b/test/python/docker/compat/test_system.py
@@ -54,7 +54,10 @@ class TestSystem(unittest.TestCase):
return super().tearDownClass()
def test_Info(self):
- self.assertIsNotNone(self.client.info())
+ info = self.client.info()
+ self.assertIsNotNone(info)
+ self.assertEqual(info["RegistryConfig"]["IndexConfigs"]["localhost:5000"]["Secure"], False)
+ self.assertEqual(info["RegistryConfig"]["IndexConfigs"]["localhost:5000"]["Mirrors"], ["mirror.localhost:5000"])
def test_info_container_details(self):
info = self.client.info()