Project

Profile

Help

Story #1887 ยป docker_test_plan.txt

bmbouter, 08/02/2016 05:55 PM

 
Install docker

Get docker v1 content:
-------------------------------
$ docker pull busybox
$ docker save busybox > busybox.tar

Get docker v2 content:
------------------------------
Deploy registry on localhost by following example here: https://docs.docker.com/registry/deploying/
- Go as far as pushing the ubuntu image into the registry


# Create docker repo for v1 content:
pulp-admin docker repo create --repo-id mydocker1
# upload two docker images to mydocker 1 repository
pulp-admin docker repo uploads upload --file busybox.tar --repo-id mydocker1

# Create docker v2 repo that will sync from local registry created earlier:
pulp-admin docker repo create --feed http://127.0.0.1:5000 --upstream-name ubuntu --repo-id mydocker2 --auto-publish false

---- docker_rsync_distributor_config.json ----

{
"distributor_id": "mydocker_rsync_distributor",
"distributor_type_id": "docker_rsync_distributor",
"distributor_config": {
"remote": {
"ssh_identity_file": "/home/vagrant/devel/my_rsa_key",
"ssh_user": "dkliban",
"host": "192.168.121.1",
"root": "/home/dkliban/pulp_root_dir"
},
"postdistributor_id": "docker_web_distributor_name_cli"
}
}
-------------------------------------------------------------------------------------
-----create_mydocker-repo_with_rsync_predistributor.json---------
{
"display_name": null,
"description": null,
"distributors": [{
"distributor_id": "docker_web_distributor_name_cli",
"auto_publish": false,
"distributor_config": {
"repo-registry-id": "myregistry",
"predistributor_id": "mydocker1_rsync_distributor"
},
"distributor_type_id": "docker_distributor_web"
}, {
"distributor_id": "docker_export_distributor_name_cli",
"auto_publish": false,
"distributor_config": {
"repo-registry-id": "myregistry"
},
"distributor_type_id": "docker_distributor_export"
}],
"notes": {
"_repo-type": "docker-repo"
},
"importer_type_id": "docker_importer",
"importer_config": {
"feed": "http://127.0.0.1:5000",
"ssl_ca_cert": null,
"ssl_client_cert": null,
"proxy_host": null,
"max_downloads": null,
"ssl_validation": null,
"proxy_password": null,
"proxy_port": null,
"max_speed": null,
"proxy_username": null,
"validate": null,
"upstream_name": "ubuntu",
"ssl_client_key": null
},
"id": "mydocker-repo"
}
---------------------------------------------------
---- publish_docker_rsync.json -----

{
"id": "mydocker_rsync_distributor"
}
------------------------------------------------
--- publish_with_delete_docker_rsync.json ---
{
"id": "mydocker_rsync_distributor",
"override_config": {
"delete": "true"
}
}
------------------------------------------------
--- publish_content_units_only_docker_rsync.json ---
{
"id": "mydocker_rsync_distributor",
"override_config": {
"content_units_only": "true"
}
}
------------------------------------------------
--- publish_remote_path_docker_rsync.json ---
{
"id": "mydocker_rsync_distributor",
"override_config": {
"remote_units_path": "foo/bar"
}
}
------------------------------------------------
--- publish_docker_with_predistributor.json ----
{
"id": "docker_web_distributor_name_cli",
"override_config": {
"predistributor_id": "mydocker_rsync_distributor"
}
}
---------------------------------------------------------------
----publish_docker_with_relative_path.json-----------

{
"id": "mydocker_rsync_distributor",
"override_config": {
"repo_relative_path": "my/cool/path"
}
}

-----------------------------------------------------------------------

=== Key based publish v1 content ===
# remove all content from remote server
rm -rf /root/dir/on/remote/*
# remove all locally published docker content
rm -rf /var/lib/pulp/published/docker


# Create docker repo for v1 content:
pulp-admin docker repo create --repo-id mydocker1
# upload one docker images to mydocker1 repository
pulp-admin docker repo uploads upload --file busybox.tar --repo-id mydocker1
# add docker rsync distributor to mydocker1 repository (with postdistributor_id defined)
http --verify no --auth admin:admin POST https://localhost/pulp/api/v2/repositories/mydocker1/distributors/ < docker_rsync_distributor_config.json
# publish using docker rsync distributor
http --verify no --auth admin:admin POST https://localhost/pulp/api/v2/repositories/mydocker1/actions/publish/ < publish_docker_rsync.json
# publish using the web distributor
pulp-admin docker repo publish run --repo-id mydocker1

# verify how many docker images are in the repository content unit counts
pulp-admin docker repo list --details --repo-id mydocker1
# verify that same number of images are present in mydocker1 directory on remote server
# verify that content directory is populated and symlinks are pointing to existing files

pulp-admin docker repo delete --repo-id mydocker1
pulp-admin orphan remove --all

=== Key based publish v2 content ===

# remove all content from remote server
rm -rf /root/dir/on/remote/*
# remove all locally published docker content
rm -rf /var/lib/pulp/published/docker

pulp-admin docker repo create --feed http://127.0.0.1:5000 --upstream-name ubuntu --repo-id mydocker2 --auto-publish false
http --verify no --auth admin:admin POST https://localhost/pulp/api/v2/repositories/mydocker2/distributors/ < docker_rsync_distributor_config.json
pulp-admin docker repo sync run --repo-id mydocker2
http --verify no --auth admin:admin POST https://localhost/pulp/api/v2/repositories/mydocker2/actions/publish/ < publish_docker_rsync.json
pulp-admin docker repo list --details --repo-id mydocker2

# Check how many blobs, manifests, and tags are present in repo unit content counts (5, 1, 1 respectively)
# verify that mydocker2/manifests, mydocker2/blobs, mydocker2/tags directories exist
# verify that mydocker2/tags/list contains these contents
{
"name": "mydocker2",
"tags": ["latest"]
}
# verify that content directory is populated with docker_blob and docker_manifest folders exist and contain content
# verify symlinks are pointing to existing files


=== mix of v2 and v1 content ====
This test is a continuation of the previous test which published v2

pulp-admin docker repo uploads upload --file busybox.tar --repo-id mydocker2
http --verify no --auth admin:admin POST https://localhost/pulp/api/v2/repositories/mydocker2/actions/publish/ < publish_docker_rsync.json
pulp-admin docker repo list --repo-id mydocker2


# Check how many docker images, blobs, manifests, and tags are present in repo unit content counts (1, 5, 1, 1 respectively)
# verify that mydocker2/manifests, mydocker2/blobs, mydocker2/tags, mydocker2/<dockerimage> directories exist
# verify that mydocker2/tags/list contains these contents
{
"name": "mydocker2",
"tags": ["latest"]
}
# verify that content directory is populated with docker_blob, docker_manifest, and docker_image folders exist and contain content
# verify symlinks are pointing to existing files

pulp-admin docker repo delete --repo-id mydocker2
pulp-admin orphan remove --all

==== repo-registry-id =======

# remove all content from remote server
rm -rf /root/dir/on/remote/*
# remove all locally published docker content
rm -rf /var/lib/pulp/published/docker

pulp-admin docker repo create --feed http://127.0.0.1:5000 --upstream-name ubuntu --repo-id mydocker-repo --auto-publish false --repo-registry-id myregistry
http --verify no --auth admin:admin POST https://localhost/pulp/api/v2/repositories/mydocker-repo/distributors/ < docker_rsync_distributor_config.json
pulp-admin docker repo sync run --repo-id mydocker-repo
http --verify no --auth admin:admin POST https://localhost/pulp/api/v2/repositories/mydocker-repo/actions/publish/ < publish_docker_rsync.json

# verify the repo directory is mydocker-repo
pulp-admin docker repo list --repo-id mydocker-repo
# verify how many blobs, manifests, and tags are present in repo unit content counts (5, 1, 1 respectively)
# verify that mydocker-repo/manifests, mydocker-repo/blobs, mydocker-repo/tags directories exist
# verify that mydocker-repo/tags/list contains these contents
{
"name": "myregistry",
"tags": ["latest"]
}
# verify that content directory is populated with docker_blob and docker_manifest folders exist and contain content
# verify symlinks are pointing to existing files

pulp-admin docker repo delete --repo-id mydocker-repo
pulp-admin orphan remove --all


==== test delete option ====

# remove all content from remote server
rm -rf /root/dir/on/remote/*
# remove all locally published docker content
rm -rf /var/lib/pulp/published/docker

pulp-admin docker repo create --feed http://127.0.0.1:5000 --upstream-name ubuntu --repo-id mydocker-repo --auto-publish false
http --verify no --auth admin:admin POST https://localhost/pulp/api/v2/repositories/mydocker-repo/distributors/ < docker_rsync_distributor_config.json
pulp-admin docker repo sync run --repo-id mydocker-repo

# do the first publish
http --verify no --auth admin:admin POST https://localhost/pulp/api/v2/repositories/mydocker-repo/actions/publish/ < publish_docker_rsync.json

# Add in extra files into the mydocker-repo published repo on the remote
touch mydocker-repo/afile
touch mydocker-repo/blobs/afile
touch mydocker-repo/manifests/afile
touch mydocker-repo/tags/afile

# Do the second publish
http --verify no --auth admin:admin POST https://localhost/pulp/api/v2/repositories/mydocker-repo/actions/publish/ < publish_with_delete_docker_rsync.json

# verify that the added files have been removed

pulp-admin docker repo delete --repo-id mydocker-repo
pulp-admin orphan remove --all


==== test content_units_only option ====
# remove all content from remote server
rm -rf /root/dir/on/remote/*
# remove all locally published docker content
rm -rf /var/lib/pulp/published/docker

pulp-admin docker repo create --feed http://127.0.0.1:5000 --upstream-name ubuntu --repo-id mydocker-repo --auto-publish false
http --verify no --auth admin:admin POST https://localhost/pulp/api/v2/repositories/mydocker-repo/distributors/ < docker_rsync_distributor_config.json
pulp-admin docker repo sync run --repo-id mydocker-repo

# publish with the override option
http --verify no --auth admin:admin POST https://localhost/pulp/api/v2/repositories/mydocker-repo/actions/publish/ < publish_content_units_only_docker_rsync.json

# verify that the repo directory is not published
# verify that the content directory is published

pulp-admin docker repo delete --repo-id mydocker-repo
pulp-admin orphan remove --all


==== remote_units_path ====
# remove all content from remote server
rm -rf /root/dir/on/remote/*
# remove all locally published docker content
rm -rf /var/lib/pulp/published/docker

pulp-admin docker repo create --feed http://127.0.0.1:5000 --upstream-name ubuntu --repo-id mydocker-repo --auto-publish false
http --verify no --auth admin:admin POST https://localhost/pulp/api/v2/repositories/mydocker-repo/distributors/ < docker_rsync_distributor_config.json
pulp-admin docker repo sync run --repo-id mydocker-repo

# publish with the override option
http --verify no --auth admin:admin POST https://localhost/pulp/api/v2/repositories/mydocker-repo/actions/publish/ < publish_remote_path_docker_rsync.json

# verify that there is no 'content' directory
# verify that there is a foo/bar directory

pulp-admin docker repo delete --repo-id mydocker-repo
pulp-admin orphan remove --all


==== rsync distributor as predistributor for web distributor ====

--- publish_docker_with_predistributor.json ----
{
"id": "docker_web_distributor_name_cli",
"override_config": {
"predistributor_id": "mydocker_rsync_distributor"
}
}
---------------------------------------------------------------

# remove all content from remote server
rm -rf /root/dir/on/remote/*
# remove all locally published docker content
rm -rf /var/lib/pulp/published/docker

# create docker repo to sync v2 content
pulp-admin docker repo create --feed http://127.0.0.1:5000 --upstream-name ubuntu --repo-id mydocker-repo --auto-publish false

# sync the v2 content
pulp-admin docker repo sync run --repo-id mydocker-repo
# validate that an auto publish did not occur (on local pulp install, not remote)

# add rsync distributor
http --verify no --auth admin:admin POST https://localhost/pulp/api/v2/repositories/mydocker-repo/distributors/ < docker_rsync_distributor_config.json

# publish using web distributor with rsync distributor defined as the predistributor
http --verify no --auth admin:admin POST https://localhost/pulp/api/v2/repositories/mydocker-repo/actions/publish/ < publish_docker_with_predistributor.json

# verify that the publish is skipped in the task details because the rsync predistributor has not published yet

# publish using rsync distributor
http --verify no --auth admin:admin POST https://localhost/pulp/api/v2/repositories/mydocker-repo/actions/publish/ < publish_docker_rsync.json

# verify that content directory contains v2 blobs and manifests are published to remote server
# verify that the mydocker-repo has been published to remote server

# upload the v1 image
pulp-admin docker repo uploads upload --file busybox.tar --repo-id mydocker-repo

# publish using web distributor with rsync distributor defined as the predistributor
http --verify no --auth admin:admin POST https://localhost/pulp/api/v2/repositories/mydocker-repo/actions/publish/ < publish_docker_with_predistributor.json

# verify that the publish is performed, but only the v2 content is published because that was all the rsync distributor published

# publish using rsync distributor
http --verify no --auth admin:admin POST https://localhost/pulp/api/v2/repositories/mydocker-repo/actions/publish/ < publish_docker_rsync.json

# verify that both v2 and v1 content is published to the remote server

# publish using web distributor with rsync distributor defined as the predistributor
http --verify no --auth admin:admin POST https://localhost/pulp/api/v2/repositories/mydocker-repo/actions/publish/ < publish_docker_with_predistributor.json

# verify that both v1 and v2 content is published locally

pulp-admin docker repo delete --repo-id mydocker-repo
pulp-admin orphan remove --all


===== rsync with repo_relative_path =====
# remove all content from remote server
rm -rf /root/dir/on/remote/*
# remove all locally published docker content
rm -rf /var/lib/pulp/published/docker

# Create docker repo for v1 content:
pulp-admin docker repo create --repo-id mydocker1

# upload one docker images to mydocker1 repository
pulp-admin docker repo uploads upload --file busybox.tar --repo-id mydocker1

# add docker rsync distributor to mydocker1 repository (with postdistributor_id defined)
http --verify no --auth admin:admin POST https://localhost/pulp/api/v2/repositories/mydocker1/distributors/ < docker_rsync_distributor_config.json

# publish using docker rsync distributor
http --verify no --auth admin:admin POST https://localhost/pulp/api/v2/repositories/mydocker1/actions/publish/ < publish_docker_with_relative_path.json


# verify how many docker images are in the repository content unit counts
pulp-admin docker repo list --details --repo-id mydocker1
# verify that same number of images are present in my/cool/path directory on remote server
# verify that content directory is populated and symlinks are pointing to existing files


    (1-1/1)