Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion .github/workflows/pull_request.yml
Original file line number Diff line number Diff line change
Expand Up @@ -42,7 +42,7 @@ jobs:
- name: Install dependencies
run: |
python -m pip install --upgrade pip
pip install ansible==5.*
pip install ansible==5.* jmespath
ansible-galaxy collection install git+file://$(pwd)

- name: Run Pulp in one
Expand Down
2 changes: 2 additions & 0 deletions galaxy.yml
Original file line number Diff line number Diff line change
Expand Up @@ -13,3 +13,5 @@ license:
tags:
- pulp
repository: "https://github.com/stackhpc/ansible-collection-pulp"
build_ignore:
- settings
2 changes: 1 addition & 1 deletion roles/pulp_distribution/tasks/container.yml
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@
password: "{{ pulp_password }}"
validate_certs: "{{ pulp_validate_certs | bool }}"
name: "{{ item.name }}"
base_path: "{{ item.base_path }}"
base_path: "{{ item.base_path | default(omit) }}"
repository: "{{ item.repository | default(omit) }}"
version: "{{ item.version | default(omit) }}"
content_guard: "{{ item.content_guard | default(omit) }}"
Expand Down
5 changes: 5 additions & 0 deletions roles/pulp_django_user/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,11 @@ pulp_django_user

This role creates Django users using the Django admin site.

Requirements
------------

The `jmespath` Python module must be installed on the Ansible control host.

Role variables
--------------

Expand Down
28 changes: 28 additions & 0 deletions tests/files/ca.pem
Original file line number Diff line number Diff line change
@@ -0,0 +1,28 @@
-----BEGIN CERTIFICATE-----
MIIEuTCCA6GgAwIBAgIQQBrEZCGzEyEDDrvkEhrFHTANBgkqhkiG9w0BAQsFADCB
vTELMAkGA1UEBhMCVVMxFzAVBgNVBAoTDlZlcmlTaWduLCBJbmMuMR8wHQYDVQQL
ExZWZXJpU2lnbiBUcnVzdCBOZXR3b3JrMTowOAYDVQQLEzEoYykgMjAwOCBWZXJp
U2lnbiwgSW5jLiAtIEZvciBhdXRob3JpemVkIHVzZSBvbmx5MTgwNgYDVQQDEy9W
ZXJpU2lnbiBVbml2ZXJzYWwgUm9vdCBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eTAe
Fw0wODA0MDIwMDAwMDBaFw0zNzEyMDEyMzU5NTlaMIG9MQswCQYDVQQGEwJVUzEX
MBUGA1UEChMOVmVyaVNpZ24sIEluYy4xHzAdBgNVBAsTFlZlcmlTaWduIFRydXN0
IE5ldHdvcmsxOjA4BgNVBAsTMShjKSAyMDA4IFZlcmlTaWduLCBJbmMuIC0gRm9y
IGF1dGhvcml6ZWQgdXNlIG9ubHkxODA2BgNVBAMTL1ZlcmlTaWduIFVuaXZlcnNh
bCBSb290IENlcnRpZmljYXRpb24gQXV0aG9yaXR5MIIBIjANBgkqhkiG9w0BAQEF
AAOCAQ8AMIIBCgKCAQEAx2E3XrEBNNti1xWb/1hajCMj1mCOkdeQmIN65lgZOIzF
9uVkhbSicfvtvbnazU0AtMgtc6XHaXGVHzk8skQHnOgO+k1KxCHfKWGPMiJhgsWH
H26MfF8WIFFE0XBPV+rjHOPMee5Y2A7Cs0WTwCznmhcrewA3ekEzeOEz4vMQGn+H
LL729fdC4uW/h2KJXwBL38Xd5HVEMkE6HnFuacsLdUYI0crSK5XQz/u5QGtkjFdN
/BMReYTtXlT2NJ8IAfMQJQYXStrxHXpma5hgZqTZ79IugvHw7wnqRMkVauIDbjPT
rJ9VAMf2CGqUuV/c4DPxhGD5WycRtPwW8rtWaoAljQIDAQABo4GyMIGvMA8GA1Ud
EwEB/wQFMAMBAf8wDgYDVR0PAQH/BAQDAgEGMG0GCCsGAQUFBwEMBGEwX6FdoFsw
WTBXMFUWCWltYWdlL2dpZjAhMB8wBwYFKw4DAhoEFI/l0xqGrI2Oa8PPgGrUSBgs
exkuMCUWI2h0dHA6Ly9sb2dvLnZlcmlzaWduLmNvbS92c2xvZ28uZ2lmMB0GA1Ud
DgQWBBS2d/ppSEefUxLVwuoHMnYH0ZcHGTANBgkqhkiG9w0BAQsFAAOCAQEASvj4
sAPmLGd75JR3Y8xuTPl9Dg3cyLk1uXBPY/ok+myDjEedO2Pzmvl2MpWRsXe8rJq+
seQxIcaBlVZaDrHC1LGmWazxY8u4TB1ZkErvkBYoH1quEPuBUDgMbMzxPcP1Y+Oz
4yHJJDnp/RVmRvQbEdBNc6N9Rvk97ahfYtTxP/jgdFcrGJ2BtMQo2pSXpXDrrB2+
BxHw1dvd5Yzw1TKwg+ZX4o+/vqGqvz0dtdQ46tewXDpPaj+PwGZsY6rp2aQW9IHR
lRQOfc2VNNnSj3BzgXucfr2YYdhFh5iQxeuGMMY1v/D/w1WIg0vvBZIGcfK4mJO3
7M2CYfE45k+XmCpajQ==
-----END CERTIFICATE-----
104 changes: 104 additions & 0 deletions tests/test_container_distribution.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,104 @@
---
- name: Test container distribution
gather_facts: false
hosts: localhost
vars:
pulp_url: http://localhost:8080
pulp_username: admin
pulp_password: password
pulp_validate_certs: true
tasks:
- include_role:
name: pulp_repository
vars:
pulp_repository_container_repos:
- name: test_container_repo
upstream_name: pulp/test-fixture-1
url: "https://registry-1.docker.io"
policy: immediate
state: present

- include_role:
name: pulp_distribution
vars:
pulp_distribution_container:
- name: test_container_distribution
base_path: test_container_distribution
repository: test_container_repo
state: present
- name: test_container_distribution_version_1
base_path: test_container_distribution_version_1
repository: test_container_repo
version: 1
state: present

- name: Query repository
pulp.squeezer.container_repository:
pulp_url: "{{ pulp_url }}"
username: "{{ pulp_username }}"
password: "{{ pulp_password }}"
validate_certs: "{{ pulp_validate_certs }}"
name: test_container_repo
register: repo_result

- name: Query distribution
pulp.squeezer.container_distribution:
pulp_url: "{{ pulp_url }}"
username: "{{ pulp_username }}"
password: "{{ pulp_password }}"
validate_certs: "{{ pulp_validate_certs }}"
name: test_container_distribution
register: dist_result

- name: Query distribution version 1
pulp.squeezer.container_distribution:
pulp_url: "{{ pulp_url }}"
username: "{{ pulp_username }}"
password: "{{ pulp_password }}"
validate_certs: "{{ pulp_validate_certs }}"
name: test_container_distribution_version_1
register: dist_version_1_result

- name: Verify distribution creation
assert:
that:
- dist_result.distribution.name == "test_container_distribution"
- dist_result.distribution.base_path == "test_container_distribution"
- dist_result.distribution.repository == repo_result.repository.pulp_href
- dist_result.distribution.repository_version is none

- name: Verify distribution creation
assert:
that:
- dist_version_1_result.distribution.name == "test_container_distribution_version_1"
- dist_version_1_result.distribution.base_path == "test_container_distribution_version_1"
- dist_version_1_result.distribution.repository is none
- dist_version_1_result.distribution.repository_version == repo_result.repository.latest_version_href

- include_role:
name: pulp_distribution
vars:
pulp_distribution_container:
- name: test_container_distribution
state: absent
- name: test_container_distribution_version_1
state: absent

- include_role:
name: pulp_repository
vars:
pulp_repository_container_repos:
- name: test_container_repo
state: absent

- name: Query distributions
pulp.squeezer.container_distribution:
pulp_url: "{{ pulp_url }}"
username: "{{ pulp_username }}"
password: "{{ pulp_password }}"
validate_certs: "{{ pulp_validate_certs }}"
register: container_distributions

- name: Verify distribution deletion
assert:
that: container_distributions.distributions | length == 0
81 changes: 81 additions & 0 deletions tests/test_container_repository.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,81 @@
---
- name: Test container repositories
gather_facts: false
hosts: localhost
vars:
pulp_url: http://localhost:8080
pulp_username: admin
pulp_password: password
pulp_validate_certs: true
tasks:
- include_role:
name: pulp_repository
vars:
pulp_repository_container_repos:
- name: test_container_repo
upstream_name: pulp/test-fixture-1
url: "https://registry-1.docker.io"
policy: immediate
state: present

- name: Query repository
pulp.squeezer.container_repository:
pulp_url: "{{ pulp_url }}"
username: "{{ pulp_username }}"
password: "{{ pulp_password }}"
validate_certs: "{{ pulp_validate_certs }}"
name: test_container_repo
register: repo_result

- name: Verify repository creation
assert:
that:
- repo_result.repository.name == "test_container_repo"

- name: Query remote
pulp.squeezer.container_remote:
pulp_url: "{{ pulp_url }}"
username: "{{ pulp_username }}"
password: "{{ pulp_password }}"
validate_certs: "{{ pulp_validate_certs }}"
name: test_container_repo-remote
register: remote_result

- name: Verify remote creation
assert:
that:
- remote_result.remote.name == "test_container_repo-remote"
- remote_result.remote.url == "https://registry-1.docker.io"
- remote_result.remote.upstream_name == "pulp/test-fixture-1"
- remote_result.remote.policy == "immediate"

- include_role:
name: pulp_repository
vars:
pulp_repository_container_repos:
- name: test_container_repo
state: absent

- name: Query repositories
pulp.squeezer.container_repository:
pulp_url: "{{ pulp_url }}"
username: "{{ pulp_username }}"
password: "{{ pulp_password }}"
validate_certs: "{{ pulp_validate_certs }}"
register: container_repositories

- name: Verify repository deletion
assert:
that: container_repositories.repositories | length == 0

- name: Query remotes
pulp.squeezer.container_remote:
pulp_url: "{{ pulp_url }}"
username: "{{ pulp_username }}"
password: "{{ pulp_password }}"
validate_certs: "{{ pulp_validate_certs }}"
register: container_remotes

- name: Verify remote deletion
assert:
that: container_remotes.remotes | length == 0
53 changes: 53 additions & 0 deletions tests/test_content_guard.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,53 @@
---
- name: Test content guards
gather_facts: false
hosts: localhost
vars:
pulp_url: http://localhost:8080
pulp_username: admin
pulp_password: password
pulp_validate_certs: true
tasks:
- include_role:
name: pulp_content_guard
vars:
pulp_content_guard_x509_cert_guards:
- name: test_cert_guard
description: foo
ca_certificate: "{{ lookup('file', 'files/ca.pem') }}"
state: present

- name: Query content guard
pulp.squeezer.x509_cert_guard:
pulp_url: "{{ pulp_url }}"
username: "{{ pulp_username }}"
password: "{{ pulp_password }}"
validate_certs: "{{ pulp_validate_certs }}"
name: test_cert_guard
register: cg_result

- name: Verify cert guard creation
assert:
that:
- cg_result.content_guard.name == "test_cert_guard"
- cg_result.content_guard.description == "foo"
- cg_result.content_guard.ca_certificate == lookup('file', 'files/ca.pem')

- include_role:
name: pulp_content_guard
vars:
pulp_content_guard_x509_cert_guards:
- name: test_cert_guard
state: absent

- name: Query content guards
pulp.squeezer.x509_cert_guard:
pulp_url: "{{ pulp_url }}"
username: "{{ pulp_username }}"
password: "{{ pulp_password }}"
validate_certs: "{{ pulp_validate_certs }}"
register: cert_guards

- name: Verify cert guard deletion
assert:
that: cert_guards.content_guards | length == 0
91 changes: 91 additions & 0 deletions tests/test_django_user.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,91 @@
---
- name: Test django users
gather_facts: false
hosts: localhost
vars:
pulp_url: http://localhost:8080
pulp_admin_username: admin
pulp_admin_password: password
pulp_validate_certs: true
tasks:
- name: Query groups
uri:
url: "{{ pulp_url }}/pulp/api/v3/groups/"
user: "{{ pulp_admin_username }}"
password: "{{ pulp_admin_password }}"
method: GET
body_format: json
status_code: 200
force_basic_auth: true
register: groups_result

- name: Create groups
uri:
url: "{{ pulp_url }}/pulp/api/v3/groups/"
user: "{{ pulp_admin_username }}"
password: "{{ pulp_admin_password }}"
method: POST
body:
name: "{{ item }}"
body_format: json
status_code: 201
force_basic_auth: true
loop:
- test_group1
- test_group2
when: item not in groups_result.json.results | map(attribute='name') | list

- include_role:
name: pulp_django_user
vars:
pulp_django_users:
- username: test_user
password: correct horse battery staple
groups:
- test_group1

- name: Query user
uri:
url: "{{ pulp_url }}/pulp/api/v3/users/?username=test_user"
user: "{{ pulp_admin_username }}"
password: "{{ pulp_admin_password }}"
method: GET
status_code: 200
force_basic_auth: true
register: user_result

- name: Verify django user creation
assert:
that:
- user_result.json.count == 1
- user_result.json.results[0].username == "test_user"
- user_result.json.results[0].groups | length == 1
- user_result.json.results[0].groups[0].name == "test_group1"

# Update group membership.
- include_role:
name: pulp_django_user
vars:
pulp_django_users:
- username: test_user
password: correct horse battery staple
groups:
- test_group2

- name: Query user
uri:
url: "{{ pulp_url }}/pulp/api/v3/users/?username=test_user"
user: "{{ pulp_admin_username }}"
password: "{{ pulp_admin_password }}"
method: GET
status_code: 200
force_basic_auth: true
register: user_result

- name: Verify django user group update
assert:
that:
- user_result.json.count == 1
- user_result.json.results[0].username == "test_user"
- user_result.json.results[0].groups | length == 1
- user_result.json.results[0].groups[0].name == "test_group2"