Hacktoberfest 2026:メンテナが10月に向けて印を付けた、オープンで初心者向けの issue。 Hacktoberfest の issue を見る

base_path uniqueness constraint prevents syncing the same image from multiple remote registries

オープン
#2,495 コメント 1 件 リアクション 0 件 担当者 0 名 GitHub で見る

メンテナーはふだん 1 日以内に返信

まだ誰も着手していません。

評価

難易度
5/5
見積もり時間
1週間以上
初心者へのやさしさ
35/100
issue の種類
機能追加
明瞭さ
おおむね明確
活発さ
活発
技術スタック
docker, python
領域
api, backend

調査の方向性

Start by reproducing the conflict with the documented pulp container remote, repository sync, and distribution create commands for two registries. Investigate how distributions enforce base_path uniqueness and how repositories are associated with distributions. Done means tags from multiple registries can be served under one image path without the uniqueness error, while existing same-registry behavior remains intact.

索引モデルが issue の本文から書いたものです。

説明

Question

Summary

When the same container image path (e.g. library/mysql) is synced from
multiple remote registries, Pulp rejects the second and subsequent
distributions with a base_path uniqueness error.

Tags from the same image across different registries cannot be served
under a single distribution.


Current Behaviour

Remote registry Image Derived base_path Result
docker.io library/mysql library/mysql ✅ Created
100.10.1.114:443 library/mysql library/mysql ❌ Rejected
100.10.1.114:3445 library/mysql library/mysql ❌ Rejected

Error returned:

{"base_path": ["This field must be unique."]}

Note: Multiple tags of the same image from the same registry sync
and distribute correctly. The issue only occurs when different remote
registries
provide tags for the same image path.


Expected Behaviour

If tags are coming from different registries for the same image, Pulp
should support serving them through the same distribution with the same
base_path. The unified tag list from all upstream sources should be
accessible to clients under a single namespace.


Reproduction Steps

# 1. Create remote A (public registry)
pulp container remote create \
  --name "mysql-dockerhub" \
  --upstream-name "library/mysql" \
  --url "https://registry-1.docker.io" \
  --include-tags "8.0 8.4"

# 2. Sync remote A → repo A
pulp container repository create --name "mysql-a"
pulp container repository sync --name "mysql-a" --remote "mysql-dockerhub"

# 3. Create distribution A  →  succeeds
pulp container distribution create \
  --name "mysql-dist" \
  --base-path "library/mysql" \
  --repository "mysql-a"

# 4. Create remote B (private registry, different tags)
pulp container remote create \
  --name "mysql-private" \
  --upstream-name "library/mysql" \
  --url "https://100.10.1.114:443" \
  --include-tags "8.0-custom 8.4-patched"

# 5. Sync remote B → repo B
pulp container repository create --name "mysql-b"
pulp container repository sync --name "mysql-b" --remote "mysql-private"

# 6. Create distribution B  →  FAILS
pulp container distribution create \
  --name "mysql-dist-private" \
  --base-path "library/mysql" \
  --repository "mysql-b"
# ERROR: {"base_path": ["This field must be unique."]}

Related Issues

  • #2164 – Expose Image Tags in Pulp Container Distribution / CLI
    — that issue added support for exposing tags within a single
    remote/repository. This issue extends the same need across multiple
    remotes/registries
    for the same image path.

Use Case

In enterprise environments it is common to mirror the same image from
multiple upstream registries (public + private, or primary + DR site) and
present them behind a single namespace to consumers. Currently there is
no way to achieve this in Pulp when the image path is identical across
registries.

主要言語
Python
スター
31
フォーク
57
平均マージ
1日 8時間
マージ済み PR(30日)
87

環境構築

はじめの一歩

  1. issue を最後まで読み、次にプロジェクトのコントリビューションガイドを読みます。
  2. 着手することを issue にコメントします — 二人が同じ作業をするのを防げます。
  3. リポジトリをフォークし、ブランチを切って変更します。
  4. issue 番号を参照したプルリクエストを送ります。

pulp/pulp_container のほかの issue

pulp/pulp_container の issue をすべて見る

似ている issue

Python の issue をもっと見る

新しい issue をメールで受け取る

初心者向けの GitHub issue を短くまとめたダイジェスト。