Pulp 3 Integration

This page is meant to capture links to various resources around pulp3 integration

Katello Dev box with pulp3:

Dev boxes are deployed with pulp3 by default, via an rpm installation
  • vagrant up katello-dev-box
  • vagrant ssh katello-dev-box

Katello Dev box with pulp3 on master:

On a devel box provisioned with steps above, run :

sudo pip3 install scikit-build nose
sudo yum install -y gcc make cmake bzip2-devel expat-devel file-devel glib2-devel libcurl-devel libmodulemd2-devel ninja-build libxml2-devel python36-devel python36-gobject rpm-devel openssl-devel sqlite-devel xz-devel zchunk-devel zlib-devel swig3

sudo pip3 install "git+" \
  "git+" \
  "git+" \
  "git+" \

cd /tmp
sudo -u pulp PULP_SETTINGS='/etc/pulp/'  /usr/local/bin/pulpcore-manager migrate

cd ~/foreman
bundle exec rails katello:reset

Updating to a New Pulp Version in master & nightly:

1. Request build of new version from build team unles its already built: (
2. Install new version locally on top of existing version with a pip3 install command, or use rpms if they are built
3. Identify any installer changes, open installer PRs
4. Identify katello updates:
  • Updating pulp client gem bindings in katello.gemspec
  • re-record vcr cassettes
  • Identify any katello code changes needed to fix test cases
  • open katello PR with changes

5. Update client binding rpms at foreman-packaging

Installing on a smart proxy: The old (ansible-based) way to deploy pulp3:

  • vagrant up centos7-proxy-devel
  • Install the following packages in your dev box:
  • checkout this forklift pr:
  • setup ansible-pulp:
    cd forklift
    git clone
    cd ansible-pulp
    ansible-galaxy install -r requirements.yml -p ./roles
    ansible-galaxy install pulp.pulp_rpm_prerequisites -p ./roles
  • within forkflift run:
    ansible-playbook ./playbooks/katello_pulp3.yml -l centos7-katello-devel
  • if this fails, run on the capsule:
    rm -rf /usr/lib/python3.6/site-packages/setuptools* -rf

    and re-run:
    ansible-playbook ./playbooks/katello_pulp3.yml -l centos7-katello-devel
  • Refresh the smart proxy:

    1. login to katello/foreman
    2. navigate to infrastructure > smart proxies
    3. click 'refresh' in the list of actions beside your smart proxy
    You're now rockin' Pulp3

To revert to pulp2 on smart proxy:

vi /etc/foreman-proxy/settings.d/pulpcore.yml
set enabled to false
sudo systemctl restart foreman-proxy
Refresh features of proxy

Reset the Katello Pulp 3 Dev Environment
From within the Foreman directory this will take care of it:
bundle exec rake katello:reset

To ONLY reset the pulp3 db (if you know what your doing):

sudo systemctl stop pulpcore*
sudo su - postgres
dropdb pulp -p 7878
createdb pulp -p 7878
cd /usr/local/lib/pulp/src/pulpcore/
sudo -u pulp PULP_SETTINGS='/etc/pulp/' DJANGO_SETTINGS_MODULE='' /usr/local/lib/pulp/bin/django-admin migrate --no-input
sudo -u pulp PULP_SETTINGS='/etc/pulp/' DJANGO_SETTINGS_MODULE='' /usr/local/lib/pulp/bin/django-admin reset-admin-password --password password
Copy /etc/httpd/conf.d/05-foreman-ssl.d/pulpcore.conf  from your dev box to proxy
sudo systemctl restart pulpcore*

Example for querying the Pulp 3 API in a development environment:
curl https://`hostname`/pulp/api/v3/status/   --cert /etc/pki/katello/certs/pulp-client.crt  --key /etc/pki/katello/private/pulp-client.key

Other Resources