File plugin for the Pulp Project
Project description
``pulp_file`` Plugin
====================
This is the ``pulp_file`` Plugin for `Pulp Project
3.0+ <https://pypi.org/project/pulpcore/>`__. This plugin replaces the ISO support in the
``pulp_rpm`` plugin for Pulp 2. This plugin uses the
`ChangeSet API <http://docs.pulpproject.org/en/3.0/nightly/plugins/plugin-api/changeset.html>`_
to add and remove content from a repository.
All REST API examples bellow use `httpie <https://httpie.org/doc>`__ to perform the requests.
The ``httpie`` commands below assume that the user executing the commands has a ``.netrc`` file
in the home directory. The ``.netrc`` should have the following configuration:
.. code-block::
machine localhost
login admin
password admin
If you configured the ``admin`` user with a different password, adjust the configuration
accordingly. If you prefer to specify the username and password with each request, please see
``httpie`` documentation on how to do that.
This documentation makes use of the `jq library <https://stedolan.github.io/jq/>`_
to parse the json received from requests, in order to get the unique urls generated
when objects are created. To follow this documentation as-is please install the jq
library with:
``$ sudo dnf install jq``
Install ``pulpcore``
--------------------
Follow the `installation
instructions <https://docs.pulpproject.org/en/3.0/nightly/installation/instructions.html>`__
provided with pulpcore.
Users should install from **either** PyPI or source.
Install ``pulp-file`` from source
---------------------------------
.. code-block:: bash
sudo -u pulp -i
source ~/pulpvenv/bin/activate
git clone https://github.com/pulp/pulp_file.git
cd pulp_file
pip install -e .
Install ``pulp-file`` From PyPI
-------------------------------
.. code-block:: bash
sudo -u pulp -i
source ~/pulpvenv/bin/activate
pip install pulp-file
Make and Run Migrations
-----------------------
.. code-block:: bash
pulp-manager makemigrations pulp_file
pulp-manager migrate pulp_file
Run Services
------------
.. code-block:: bash
pulp-manager runserver
sudo systemctl restart pulp_resource_manager
sudo systemctl restart pulp_worker@1
sudo systemctl restart pulp_worker@2
Create a repository ``foo``
---------------------------
``$ http POST http://localhost:8000/pulp/api/v3/repositories/ name=foo``
.. code:: json
{
"_href": "http://localhost:8000/pulp/api/v3/repositories/8d7cd67a-9421-461f-9106-2df8e4854f5f/",
...
}
``$ export REPO_HREF=$(http :8000/pulp/api/v3/repositories/ | jq -r '.results[] | select(.name == "foo") | ._href')``
Create a new remote ``bar``
---------------------------
``$ http POST http://localhost:8000/pulp/api/v3/remotes/file/ name='bar' url='https://repos.fedorapeople.org/pulp/pulp/demo_repos/test_file_repo/PULP_MANIFEST'``
.. code:: json
{
"_href": "http://localhost:8000/pulp/api/v3/remotes/file/13ac2d63-7b7b-401d-b71b-9a5af05aab3c/",
...
}
``$ export REMOTE_HREF=$(http :8000/pulp/api/v3/remotes/file/ | jq -r '.results[] | select(.name == "bar") | ._href')``
Sync repository ``foo`` using remote ``bar``
--------------------------------------------
``$ http POST $REMOTE_HREF'sync/' repository=$REPO_HREF``
Look at the new Repository Version created
------------------------------------------
``$ http GET $REPO_HREF'versions/1/'``
.. code:: json
{
"_added_href": "http://localhost:8000/pulp/api/v3/repositories/b787e6ad-d6b6-4e3d-ab12-73eba19b42fb/versions/1/added_content/",
"_content_href": "http://localhost:8000/pulp/api/v3/repositories/b787e6ad-d6b6-4e3d-ab12-73eba19b42fb/versions/1/content/",
"_href": "http://localhost:8000/pulp/api/v3/repositories/b787e6ad-d6b6-4e3d-ab12-73eba19b42fb/versions/1/",
"_removed_href": "http://localhost:8000/pulp/api/v3/repositories/b787e6ad-d6b6-4e3d-ab12-73eba19b42fb/versions/1/removed_content/",
"content_summary": {
"file": 3
},
"created": "2018-02-23T20:29:54.499055Z",
"number": 1
}
Upload ``foo.tar.gz`` to Pulp
-----------------------------
Create an Artifact by uploading the file to Pulp.
``$ http --form POST http://localhost:8000/pulp/api/v3/artifacts/ file@./foo.tar.gz``
.. code:: json
{
"_href": "http://localhost:8000/pulp/api/v3/artifacts/7d39e3f6-535a-4b6e-81e9-c83aa56aa19e/",
...
}
Create ``file`` content from an Artifact
-----------------------------------------
Create a content unit and point it to your artifact
``$ http POST http://localhost:8000/pulp/api/v3/content/file/files/ relative_path=foo.tar.gz artifact="http://localhost:8000/pulp/api/v3/artifacts/7d39e3f6-535a-4b6e-81e9-c83aa56aa19e/"``
.. code:: json
{
"_href": "http://localhost:8000/pulp/api/v3/content/file/files/a9578a5f-c59f-4920-9497-8d1699c112ff/",
"artifact": "http://localhost:8000/pulp/api/v3/artifacts/7d39e3f6-535a-4b6e-81e9-c83aa56aa19e/",
"relative_path": "foo.tar.gz",
"type": "file"
}
``$ export CONTENT_HREF=$(http :8000/pulp/api/v3/content/file/files/ | jq -r '.results[] | select(.relative_path == "foo.tar.gz") | ._href')``
Add content to repository ``foo``
---------------------------------
``$ http POST $REPO_HREF'versions/' add_content_units:="[\"$CONTENT_HREF\"]"``
Create a ``file`` Publisher
---------------------------
``$ http POST http://localhost:8000/pulp/api/v3/publishers/file/ name=bar``
.. code:: json
{
"_href": "http://localhost:8000/pulp/api/v3/publishers/file/fd4cbecd-6c6a-4197-9cbe-4e45b0516309/",
...
}
``$ export PUBLISHER_HREF=$(http :8000/pulp/api/v3/publishers/file/ | jq -r '.results[] | select(.name == "bar") | ._href')``
Use the ``bar`` Publisher to create a Publication
-------------------------------------------------
``$ http POST $PUBLISHER_HREF'publish/' repository=$REPO_HREF``
.. code:: json
[
{
"_href": "http://localhost:8000/pulp/api/v3/tasks/fd4cbecd-6c6a-4197-9cbe-4e45b0516309/",
"task_id": "fd4cbecd-6c6a-4197-9cbe-4e45b0516309"
}
]
``$ export PUBLICATION_HREF=$(http :8000/pulp/api/v3/publications/ | jq -r --arg PUBLISHER_HREF "$PUBLISHER_HREF" '.results[] | select(.publisher==$PUBLISHER_HREF) | ._href')``
Create a Distribution for the Publication
-----------------------------------------
``$ http POST http://localhost:8000/pulp/api/v3/distributions/ name='baz' base_path='foo' publication=$PUBLICATION_HREF``
.. code:: json
{
"_href": "http://localhost:8000/pulp/api/v3/distributions/9b29f1b2-6726-40a2-988a-273d3f009a41/",
...
}
Download ``test.iso`` from Pulp
-------------------------------
``$ http GET http://localhost:8000/pulp/content/foo/test.iso``
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
pulp-file-0.0.1b4.tar.gz
(17.4 kB
view hashes)
Built Distribution
Close
Hashes for pulp_file-0.0.1b4-py3-none-any.whl
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 | 9f89fb71531ce02bff006d963a14de91c918a5876f6248e9d8a91161f42a1970 |
|
| MD5 | bc2b8240b37a4bb4d683cb3f3b8460c9 |
|
| BLAKE2b-256 | 44d48230a282d1f87e1532948938bec893073f3440879403b11641ec642761bb |