Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Test Docker Manifest Support #713

Closed
Ichimonji10 opened this issue Jul 17, 2017 · 2 comments
Closed

Test Docker Manifest Support #713

Ichimonji10 opened this issue Jul 17, 2017 · 2 comments

Comments

@Ichimonji10
Copy link
Contributor

Ichimonji10 commented Jul 17, 2017

Pulp 2.14 adds support for Docker manifest lists. This change is significant, and it really needs to be tested before 2.14 is released. Some of the testing for this new feature can be automated, but given the lack of Docker clients on our automated systems, some of the testing will need to be manual.

A docker manifest list is a list of docker manifests, and a docker manifest describes the layers of a docker image. A typical docker manifest list will list out one docker manifest per supported architecture, where supported architectures are values like amd64-linux or arm32v7. In addition, there's two versions of docker manifests: schema v2 and schema v1.

New docker clients can natively understand docker manifest lists. When a new docker client contacts the docker hub (or a clone like Pulp + Crane), it will express its support for this new format by sending certain HTTP headers saying so. When an older docker client contacts the docker hub (or a clone), the hub must be capable of downgrading its response on-the-fly. Pulp + Crane do this by pre-emptively contacting the docker hub and fetching all the content that each generation of docker clients might want.

We need to create automated tests that do the following:

  • Create a Docker repository, and let it sync content from a repository that has a manifest list with entries for more than one architecture.
  • Create a Docker repository, and let it sync content from a repository that has a manifest list with no entry for the amd64-linux architecture.

For each repository, we need the following tests:

  • Pretend to be a modern Docker client, and get (or at least list) the contents of the repository.
  • Pretend to be an older Docker client, and get (or at least list) the contents of the repository.
  • Pretend to be an even older Docker client, and get (or at least list) the contents of the repository.

We also need to manually test this new feature by installing and configuring the official Docker client and ensuring that it can docker pull from each repository.

To fully understand the testing that needs to be done, please read https://docs.docker.com/registry/spec/manifest-v2-2/#backward-compatibility

The following Docker repositories may be useful for testing:

Related to: #555

@preethit
Copy link

Adding issues that may be related to this
https://pulp.plan.io/issues/2924
https://pulp.plan.io/issues/2920

@Ichimonji10 Ichimonji10 self-assigned this Jul 24, 2017
@Ichimonji10
Copy link
Contributor Author

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

2 participants