Skip to content

Commit

Permalink
Merge pull request containers#12862 from matejvasek/fix-info-ep
Browse files Browse the repository at this point in the history
Add IndexConfigs info to compat /info endpoint
  • Loading branch information
openshift-merge-robot authored Jan 19, 2022
2 parents b63e716 + 4b384e0 commit 8301a7c
Show file tree
Hide file tree
Showing 3 changed files with 49 additions and 11 deletions.
34 changes: 33 additions & 1 deletion pkg/api/handlers/compat/info.go
Original file line number Diff line number Diff line change
Expand Up @@ -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"
Expand Down Expand Up @@ -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),
Expand All @@ -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 {
Expand Down
21 changes: 12 additions & 9 deletions test/python/docker/__init__.py
Original file line number Diff line number Diff line change
Expand Up @@ -42,16 +42,19 @@ def __init__(self):
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"
Expand Down
5 changes: 4 additions & 1 deletion test/python/docker/compat/test_system.py
Original file line number Diff line number Diff line change
Expand Up @@ -54,7 +54,10 @@ def tearDownClass(cls):
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()
Expand Down

0 comments on commit 8301a7c

Please sign in to comment.