Merge pull request #12862 from matejvasek/fix-info-ep

Add IndexConfigs info to compat /info endpoint
This commit is contained in:
OpenShift Merge Robot
2022-01-19 09:29:05 -05:00
committed by GitHub
3 changed files with 49 additions and 11 deletions

View File

@ -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 {

View File

@ -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"

View File

@ -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()