{ "info": { "author": "Simon Baatz", "author_email": "gmbnomis@gmail.com", "bugtrack_url": null, "classifiers": [ "Development Status :: 4 - Beta", "Framework :: Django", "License :: OSI Approved :: GNU General Public License v2 or later (GPLv2+)", "Operating System :: POSIX :: Linux", "Programming Language :: Python", "Programming Language :: Python :: 3", "Programming Language :: Python :: 3.6", "Programming Language :: Python :: 3.7" ], "description": ".. image:: https://travis-ci.org/gmbnomis/pulp_cookbook.svg?branch=master\n :target: https://travis-ci.org/gmbnomis/pulp_cookbook\n :alt: Travis (.org)\n.. image:: https://img.shields.io/pypi/v/pulp-cookbook.svg\n :target: https://pypi.python.org/pypi/pulp-cookbook\n :alt: PyPI\n.. image:: https://img.shields.io/pypi/pyversions/pulp-cookbook.svg\n :target: https://pypi.python.org/pypi/pulp-cookbook\n :alt: PyPI - Python Version\n.. image:: https://img.shields.io/badge/code%20style-black-000000.svg\n :target: https://github.com/ambv/black\n :alt: Code style: black\n\n\n``pulp_cookbook`` Plugin\n========================\n\nThis is the ``pulp_cookbook`` Plugin for `Pulp Project 3.0+\n`__. This plugin implements\nsupport for Chef cookbooks.\n\nCurrently, it allows to import packaged cookbooks into cookbook\nrepositories. When publishing a specific version of a cookbook\nrepository, a `universe\n`_ endpoint will\nbe created to allow tools like `berkshelf\n`_ to download cookbooks and\nresolve cookbook dependencies.\n\n**Not supported** (yet):\n\n- Full support of the `Supermarket API `_\n- Cookbook version constraints to a remote (only filtering by cookbook name\n is supported)\n\nAll REST API examples below use `httpie `__ to perform\nthe requests. The ``httpie`` commands below assume that the user executing the\ncommands has a ``.netrc`` file in the home directory. The ``.netrc`` should have\nthe following configuration:\n\n.. code:: text\n\n machine localhost\n login admin\n password admin\n\nIf you configured the ``admin`` user with a different password, adjust the\nconfiguration accordingly. If you prefer to specify the username and password\nwith each request, please see ``httpie`` documentation on how to do that.\n\nThis documentation makes use of the `jq library\n`_ to parse the json received from requests, in\norder to get the unique urls generated when objects are created. To follow this\ndocumentation as-is please install the jq library/binary with:\n\n``$ sudo dnf install jq``\n\n\nInstall ``pulpcore``\n--------------------\n\nFollow the `installation\ninstructions `__\nprovided with pulpcore.\n\nUsers should install from **either** PyPI or source.\n\nInstall ``pulp_cookbook`` from source\n-------------------------------------\n\n.. code-block:: bash\n\n sudo -u pulp -i\n source ~/pulpvenv/bin/activate\n git clone https://github.com/gmbnomis/pulp_cookbook.git\n cd pulp_cookbook\n pip install -e .\n\nInstall ``pulp-cookbook`` From PyPI\n-----------------------------------\n\n.. code-block:: bash\n\n sudo -u pulp -i\n source ~/pulpvenv/bin/activate\n pip install pulp-cookbook\n\nMake and Run Migrations\n-----------------------\n\n.. code-block:: bash\n\n export DJANGO_SETTINGS_MODULE=pulpcore.app.settings\n django-admin migrate pulp_cookbook\n\nRun Services\n------------\n\n.. code-block:: bash\n\n django-admin runserver 24817\n gunicorn pulpcore.content:server --bind 'localhost:24816' --worker-class 'aiohttp.GunicornWebWorker' -w 2\n sudo systemctl restart pulpcore-resource-manager\n sudo systemctl restart pulpcore-worker@1\n sudo systemctl restart pulpcore-worker@2\n\nExample: Import cookbooks and synchronize from remote\n=====================================================\n\nCreate a repository ``foo``\n---------------------------\n\n``$ http POST http://localhost:24817/pulp/api/v3/repositories/ name=foo``\n\n.. code:: json\n\n {\n \"pulp_created\": \"2019-10-03T16:29:25.171311Z\",\n \"pulp_href\": \"/pulp/api/v3/repositories/200118d5-dc92-4e2d-b970-df7edec122ea/\",\n \"latest_version_href\": null,\n \"versions_href\": \"/pulp/api/v3/repositories/200118d5-dc92-4e2d-b970-df7edec122ea/versions/\",\n \"description\": null,\n \"name\": \"foo\",\n \"plugin_managed\": false\n }\n\n``$ export REPO_HREF=$(http :24817/pulp/api/v3/repositories/ | jq -r '.results[] | select(.name == \"foo\") | .pulp_href')``\n\nUpload cookbooks to Pulp\n------------------------\n\nAs a simple example, let's download two cookbooks from the Chef Supermarket and\nupload them into our repository.\n\nDownload 'ubuntu' and 'apt' cookbooks (the 'ubuntu' cookbooks depends on the\n'apt' cookbook):\n\n``$ curl -Lo ubuntu-2.0.1.tgz https://supermarket.chef.io:443/api/v1/cookbooks/ubuntu/versions/2.0.1/download``\n``$ curl -Lo apt-7.0.0.tgz https://supermarket.chef.io:443/api/v1/cookbooks/apt/versions/7.0.0/download``\n\nCreate a content unit for ubuntu 2.0.1:\n\n``$ http --form POST http://localhost:24817/pulp/api/v3/content/cookbook/cookbooks/ name=\"ubuntu\" file@ubuntu-2.0.1.tgz``\n\n``$ export UBUNTU_CONTENT_HREF=$(http :24817/pulp/api/v3/content/cookbook/cookbooks/?name=ubuntu | jq -r '.results[0].pulp_href')``\n\nCreate a content unit for apt 7.0.0:\n\n``$ http --form POST http://localhost:24817/pulp/api/v3/content/cookbook/cookbooks/ name=\"apt\" file@apt-7.0.0.tgz``\n\n``$ export APT_CONTENT_HREF=$(http :24817/pulp/api/v3/content/cookbook/cookbooks/?name=apt | jq -r '.results[0].pulp_href')``\n\n\nAdd content to repository ``foo``\n---------------------------------\n\n``$ http POST :24817$REPO_HREF'versions/' add_content_units:=\"[\\\"$UBUNTU_CONTENT_HREF\\\",\\\"$APT_CONTENT_HREF\\\"]\"``\n\n``$ export LATEST_VERSION_HREF=$(http :24817$REPO_HREF | jq -r '.latest_version_href')``\n\nCreate a Publication\n--------------------\n\n``$ http POST http://localhost:24817/pulp/api/v3/publications/cookbook/cookbook/ repository_version=$LATEST_VERSION_HREF``\n\n.. code:: json\n\n {\n \"task\": \"/pulp/api/v3/tasks/cd37e3dd-fb9b-4fa3-a32b-174bcb860c79/\"\n }\n\n``$ export PUBLICATION_HREF=$(http :24817/pulp/api/v3/publications/cookbook/cookbook/ | jq --arg LVH \"$LATEST_VERSION_HREF\" -r '.results[] | select(.repository_version == $LVH) | .pulp_href')``\n\n\nCreate a Distribution at 'foo' for the Publication\n--------------------------------------------------\n\n``$ http POST http://localhost:24817/pulp/api/v3/distributions/cookbook/cookbook/ name='baz' base_path='foo' publication=$PUBLICATION_HREF``\n\nYou can have a look at the published \"universe\" metadata now:\n\n``$ http http://localhost:24816/pulp_cookbook/content/foo/universe``\n\n.. code:: json\n\n {\n \"apt\": {\n \"7.0.0\": {\n \"dependencies\": {},\n \"download_url\": \"http://localhost:24816/pulp_cookbook/content/foo/cookbook_files/apt/7_0_0/apt-7.0.0.tar.gz\",\n \"location_path\": \"http://localhost:24816/pulp_cookbook/content/foo/cookbook_files/apt/7_0_0/apt-7.0.0.tar.gz\",\n \"location_type\": \"uri\"\n }\n },\n \"ubuntu\": {\n \"2.0.1\": {\n \"dependencies\": {\n \"apt\": \">= 0.0.0\"\n },\n \"download_url\": \"http://localhost:24816/pulp_cookbook/content/foo/cookbook_files/ubuntu/2_0_1/ubuntu-2.0.1.tar.gz\",\n \"location_path\": \"http://localhost:24816/pulp_cookbook/content/foo/cookbook_files/ubuntu/2_0_1/ubuntu-2.0.1.tar.gz\",\n \"location_type\": \"uri\"\n }\n }\n }\n\n\nUse Berkshelf with the published repo\n-------------------------------------\n\nCreate a Berksfile with the following content:\n\n\n.. code:: ruby\n\n source 'http://localhost:24816/pulp_cookbook/content/foo/'\n\n cookbook 'ubuntu'\n\n\n``$ berks install``\n\n.. code:: text\n\n Resolving cookbook dependencies...\n Fetching cookbook index from http://localhost:24816/pulp_cookbook/content/foo/...\n Installing apt (7.0.0) from http://localhost:24816/pulp_cookbook/content/foo/ ([uri] http://localhost:24816/pulp_cookbook/content/foo/cookbook_files/apt/7_0_0/apt-7.0.0.tar.gz)\n Installing ubuntu (2.0.1) from http://localhost:24816/pulp_cookbook/content/foo/ ([uri] http://localhost:24816/pulp_cookbook/content/foo/cookbook_files/ubuntu/2_0_1/ubuntu-2.0.1.tar.gz)\n\nCreate a new remote ``foo_remote``\n-----------------------------------\n\nIn addition to uploading content, ``pulp_cookbook`` allows to synchronize a repo\nwith an upstream repo (that has to provide a \"universe\" endpoint).\n\nLet's mirror the ``pulp`` and ``qpid`` cookbooks into our existing repo. First, we have to create a remote:\n\n``$ http POST http://localhost:24817/pulp/api/v3/remotes/cookbook/cookbook/ name='foo_remote' url='https://supermarket.chef.io/' cookbooks:='{\"pulp\": \"\", \"qpid\": \"\"}'``\n\n.. code:: json\n\n {\n \"pulp_created\": \"2019-10-03T16:37:19.240581Z\",\n \"pulp_href\": \"/pulp/api/v3/remotes/cookbook/cookbook/601c0402-30ff-4209-9008-5bc0339419be/\",\n \"pulp_last_updated\": \"2019-10-03T16:37:19.240602Z\",\n \"_type\": \"cookbook.cookbook\",\n \"cookbooks\": {\n \"pulp\": \"\",\n \"qpid\": \"\"\n },\n \"download_concurrency\": 20,\n \"name\": \"foo_remote\",\n \"policy\": \"immediate\",\n \"proxy_url\": null,\n \"ssl_ca_certificate\": null,\n \"ssl_client_certificate\": null,\n \"ssl_client_key\": null,\n \"ssl_validation\": true,\n \"url\": \"https://supermarket.chef.io/\"\n }\n\n``$ export REMOTE_HREF=$(http :24817/pulp/api/v3/remotes/cookbook/cookbook/ | jq -r '.results[] | select(.name == \"foo_remote\") | .pulp_href')``\n\nSync repository ``foo`` using remote ``foo_remote``\n----------------------------------------------------\n\nWe don't want to delete the ``apt`` and ``ubuntu`` coobooks imported previously.\nTherefore, we sync in 'additive' mode by setting ``mirror`` to false.\n\n``$ http POST :24817$REMOTE_HREF'sync/' repository=$REPO_HREF mirror:=false``\n\nLook at the new Repository Version created\n------------------------------------------\n\n``$ http GET ':24817'$REPO_HREF'versions/2/'``\n\n.. code:: json\n\n {\n \"pulp_created\": \"2019-10-03T16:38:18.843201Z\",\n \"pulp_href\": \"/pulp/api/v3/repositories/200118d5-dc92-4e2d-b970-df7edec122ea/versions/2/\",\n \"base_version\": null,\n \"content_summary\": {\n \"added\": {\n \"cookbook.cookbook\": {\n \"count\": 2,\n \"href\": \"/pulp/api/v3/content/cookbook/cookbooks/?repository_version_added=/pulp/api/v3/repositories/200118d5-dc92-4e2d-b970-df7edec122ea/versions/2/\"\n }\n },\n \"present\": {\n \"cookbook.cookbook\": {\n \"count\": 4,\n \"href\": \"/pulp/api/v3/content/cookbook/cookbooks/?repository_version=/pulp/api/v3/repositories/200118d5-dc92-4e2d-b970-df7edec122ea/versions/2/\"\n }\n },\n \"removed\": {}\n },\n \"number\": 2\n }\n\nAt the time of writing, there was only a single version of the ``pulp`` and\n``qpid`` cookbooks available, respectively. This brings the total count to 4 cookbooks.\n\nPublish the newest version\n--------------------------\n\nTo publish the version just created, do:\n\n``$ http POST http://localhost:24817/pulp/api/v3/publications/cookbook/cookbook/ repository=$REPO_HREF``\n\nAnd update the distribution:\n\n.. code:: bash\n\n export DISTRIBUTION_HREF=$(http :24817/pulp/api/v3/distributions/cookbook/cookbook/ | jq -r '.results[] | select(.name == \"baz\") | .pulp_href')\n export LATEST_VERSION_HREF=$(http :24817$REPO_HREF | jq -r '.latest_version_href')\n export LATEST_PUBLICATION_HREF=$(http :24817/pulp/api/v3/publications/cookbook/cookbook/ | jq --arg LVH \"$LATEST_VERSION_HREF\" -r '.results[] | select(.repository_version == $LVH) | .pulp_href')\n http PATCH :24817$DISTRIBUTION_HREF publication=$LATEST_PUBLICATION_HREF\n\nNow, the universe endpoint\n``http://localhost:24816/pulp_cookbook/content/foo/universe`` will show the\ncontent of the new repo version.\n\n\nExample: Snapshot of Chef Supermarket\n=====================================\n\nUsing the 'on_demand' policy on a remote allows to create snapshots of a large\nrepo like the Chef Supermarket effectively. In \"on_demand\" mode, only the\nmeta-data will be synchronized. Actual cookbooks are not downloaded at sync\ntime, but only when requested from a distribution. After the first successful\ndownload, the cookbooks are stored locally for faster retrieval.\n\nCreate a repository ``supermarket``\n-----------------------------------\n\n``$ http POST http://localhost:24817/pulp/api/v3/repositories/ name=supermarket``\n\n.. code:: json\n\n {\n \"pulp_created\": \"2019-03-30T22:59:02.569833Z\",\n \"pulp_href\": \"/pulp/api/v3/repositories/80f03582-ae58-406d-b456-bbb33e718f8f/\",\n \"latest_version_href\": null,\n \"versions_href\": \"/pulp/api/v3/repositories/80f03582-ae58-406d-b456-bbb33e718f8f/versions/\",\n \"description\": \"\",\n \"name\": \"supermarket\"\n }\n\n\n``$ export REPO_HREF=$(http :24817/pulp/api/v3/repositories/ | jq -r '.results[] | select(.name == \"supermarket\") | .pulp_href')``\n\n\nCreate a new remote ``supermarket``\n-----------------------------------\n\n``$ http POST http://localhost:24817/pulp/api/v3/remotes/cookbook/cookbook/ name='supermarket' url='https://supermarket.chef.io/' policy=on_demand``\n\n.. code:: json\n\n {\n \"pulp_created\": \"2019-03-30T22:59:35.618466Z\",\n \"pulp_href\": \"/pulp/api/v3/remotes/cookbook/cookbook/472c73b9-0132-4c1b-8814-816fd237a40a/\",\n \"pulp_last_updated\": \"2019-03-30T22:59:35.618484Z\",\n \"_type\": \"cookbook.cookbook\",\n \"cookbooks\": \"\",\n \"download_concurrency\": 20,\n \"name\": \"supermarket\",\n \"policy\": \"on_demand\",\n \"proxy_url\": \"\",\n \"ssl_validation\": true,\n \"url\": \"https://supermarket.chef.io/\",\n \"validate\": true\n }\n\n\n``$ export REMOTE_HREF=$(http :24817/pulp/api/v3/remotes/cookbook/cookbook/ | jq -r '.results[] | select(.name == \"supermarket\") | .pulp_href')``\n\n\nSync repository ``supermarket`` using remote ``supermarket``\n------------------------------------------------------------\n\n\n``$ http POST :24817$REMOTE_HREF'sync/' repository=$REPO_HREF mirror:=true``\n\n.. code:: json\n\n {\n \"task\": \"/pulp/api/v3/tasks/24990466-6602-4f4f-bb59-6d827bd48130/\"\n }\n\nThis will take a while. You can query the task status using the returned URL. In\nthe example above, use ``http\n:24817/pulp/api/v3/tasks/24990466-6602-4f4f-bb59-6d827bd48130/`` and inspect the\n\"state\" field.\n\n\nCreate a Publication\n--------------------\n\n``$ export LATEST_VERSION_HREF=$(http :24817$REPO_HREF | jq -r '.latest_version_href')``\n\n``$ http POST http://localhost:24817/pulp/api/v3/publications/cookbook/cookbook/ repository_version=$LATEST_VERSION_HREF``\n\n.. code:: json\n\n {\n \"task\": \"/pulp/api/v3/tasks/8e9d3faf-695f-4048-a11a-1a7a65bd2f8e/\"\n }\n\nAgain, this may take some time. When the task is finished, get the URL of the\npublication:\n\n``$ export PUBLICATION_HREF=$(http :24817/pulp/api/v3/publications/cookbook/cookbook/ | jq --arg LVH \"$LATEST_VERSION_HREF\" -r '.results[] | select(.repository_version == $LVH) | .pulp_href')``\n\n\nCreate a Distribution at 'supermarket' for the Publication\n----------------------------------------------------------\n\n``$ http POST http://localhost:24817/pulp/api/v3/distributions/cookbook/cookbook/ name='supermarket' base_path='supermarket' publication=$PUBLICATION_HREF``\n\nYou can have a look at the published \"universe\" metadata now:\n\n``$ http localhost:24816/pulp_cookbook/content/supermarket/universe``\n\nIn your ``Berksfile`` you can use the following ``source`` to access the\nSupermarket snapshot:\n\n.. code:: ruby\n\n source 'http://localhost:24816/pulp_cookbook/content/supermarket/'\n\n\n", "description_content_type": "", "docs_url": null, "download_url": "", "downloads": { "last_day": -1, "last_month": -1, "last_week": -1 }, "home_page": "https://github.com/gmbnomis/pulp_cookbook/", "keywords": "", "license": "", "maintainer": "", "maintainer_email": "", "name": "pulp-cookbook", "package_url": "https://pypi.org/project/pulp-cookbook/", "platform": "", "project_url": "https://pypi.org/project/pulp-cookbook/", "project_urls": { "Homepage": "https://github.com/gmbnomis/pulp_cookbook/" }, "release_url": "https://pypi.org/project/pulp-cookbook/0.1.0b3/", "requires_dist": [ "pulpcore-plugin (==0.1rc7)" ], "requires_python": "", "summary": "Cookbook plugin for the Pulp Project", "version": "0.1.0b3" }, "last_serial": 5980197, "releases": { "0.0.1a1": [ { "comment_text": "", "digests": { "md5": "04ceb744b7c96880101ebfc4e66170e7", "sha256": "def9e82e74251379054be4ba5bdc3cc270af18bce890ea16b25a2caedd0415b6" }, "downloads": -1, "filename": "pulp_cookbook-0.0.1a1-py3-none-any.whl", "has_sig": false, "md5_digest": "04ceb744b7c96880101ebfc4e66170e7", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 11758, "upload_time": "2018-08-25T16:28:42", "url": "https://files.pythonhosted.org/packages/be/5b/8575d903075c2c199f7e6b43847c12773caa7cc6083b3707c536b48f3873/pulp_cookbook-0.0.1a1-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "02a9877afee1c774b7b5c4f7b25ee8ec", "sha256": "532350fdfc33fc605d38574a5f8e9e7c7224480aa671f7e43660a3ef8de7de7b" }, "downloads": -1, "filename": "pulp-cookbook-0.0.1a1.tar.gz", "has_sig": false, "md5_digest": "02a9877afee1c774b7b5c4f7b25ee8ec", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 19000, "upload_time": "2018-08-25T16:28:43", "url": "https://files.pythonhosted.org/packages/59/d1/0025736fad1595e972d94bd5338801aad10ae56723775922f5d61ab0b12a/pulp-cookbook-0.0.1a1.tar.gz" } ], "0.0.2a2": [ { "comment_text": "", "digests": { "md5": "423b6fc80b3c1e62dbb6562d43be164e", "sha256": "c49191ff15e6b8d290fd991edd38a598771ef14f9f2031139008c76bc011444c" }, "downloads": -1, "filename": "pulp_cookbook-0.0.2a2-py3-none-any.whl", "has_sig": false, "md5_digest": "423b6fc80b3c1e62dbb6562d43be164e", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 30427, "upload_time": "2018-09-14T18:52:15", "url": "https://files.pythonhosted.org/packages/1f/36/5cc7e4d79e50261131cdd90487027bedb18428cc73005082d9d4f3082ec1/pulp_cookbook-0.0.2a2-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "54e07a6c1b55f9fb07c746acfd388e20", "sha256": "614b4e6c8c01e1475656c941b5bee4d31943c17576e3a81adeef5d1660f8bc95" }, "downloads": -1, "filename": "pulp-cookbook-0.0.2a2.tar.gz", "has_sig": false, "md5_digest": "54e07a6c1b55f9fb07c746acfd388e20", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 30761, "upload_time": "2018-09-14T18:52:17", "url": "https://files.pythonhosted.org/packages/4f/f0/0d51598beb1176611eae8830a8f4b04548923f44dc81cf01c0151e7e0cda/pulp-cookbook-0.0.2a2.tar.gz" } ], "0.0.3a1": [ { "comment_text": "", "digests": { "md5": "7680f8c8288073cc0ccbe4096f7b563a", "sha256": "c10b8230557df1680f9ac7a9b9af0605a4135b21c96d738870821626e747474e" }, "downloads": -1, "filename": "pulp_cookbook-0.0.3a1-py3-none-any.whl", "has_sig": false, "md5_digest": "7680f8c8288073cc0ccbe4096f7b563a", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 34929, "upload_time": "2018-12-19T21:15:51", "url": "https://files.pythonhosted.org/packages/ec/84/b80c622616295236ecbc75fc6d146cedfe7ce7ece1aaf746b070b72ac176/pulp_cookbook-0.0.3a1-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "1ce6e27d65da4cb3f22870916f7081d5", "sha256": "8cfe57ffa5e04f1cc7be7d9233ef67df232d988aac092a7e296bec0551df7975" }, "downloads": -1, "filename": "pulp-cookbook-0.0.3a1.tar.gz", "has_sig": false, "md5_digest": "1ce6e27d65da4cb3f22870916f7081d5", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 29822, "upload_time": "2018-12-19T21:15:53", "url": "https://files.pythonhosted.org/packages/5a/ff/8cfd690260e7fef286d624f40f660a8bb0049b4254b61ff7eddb7c1bf024/pulp-cookbook-0.0.3a1.tar.gz" } ], "0.0.3a2": [ { "comment_text": "", "digests": { "md5": "6ef7b2840efb8fe0cd69d5e9d3a34beb", "sha256": "c577a81e320fca681db6841bd66d064f546e741258692edad9f9da9b06f3241a" }, "downloads": -1, "filename": "pulp_cookbook-0.0.3a2-py3-none-any.whl", "has_sig": false, "md5_digest": "6ef7b2840efb8fe0cd69d5e9d3a34beb", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 35007, "upload_time": "2018-12-22T13:32:39", "url": "https://files.pythonhosted.org/packages/0a/01/c9f0c4c59dded826775f6d3d625cac71569fddfc19cd14879f9d327b62bd/pulp_cookbook-0.0.3a2-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "209b97cba0775d3721b5fe3d6add747d", "sha256": "85a2e4532167431d95128121b0a04a3cbb3e139707b7bfe13395fb82d97274b3" }, "downloads": -1, "filename": "pulp-cookbook-0.0.3a2.tar.gz", "has_sig": false, "md5_digest": "209b97cba0775d3721b5fe3d6add747d", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 29893, "upload_time": "2018-12-22T13:32:41", "url": "https://files.pythonhosted.org/packages/dd/38/03d3dec35389620f733af85ae1cb848fc4f009738d2c54b7a89eee4dd493/pulp-cookbook-0.0.3a2.tar.gz" } ], "0.0.4b1": [ { "comment_text": "", "digests": { "md5": "1c0b93fd76d33e9733e9d543c28421c5", "sha256": "eabcd0b4c647770bab3d604f251b434cef5413da2721031166cbe4d186098a79" }, "downloads": -1, "filename": "pulp_cookbook-0.0.4b1-py3-none-any.whl", "has_sig": false, "md5_digest": "1c0b93fd76d33e9733e9d543c28421c5", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 45509, "upload_time": "2019-02-05T20:49:51", "url": "https://files.pythonhosted.org/packages/8d/65/413be3abb61dc154dbed827ba847b4826dc57e3b307a8d75a7620c0572ef/pulp_cookbook-0.0.4b1-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "4a039fec30101f1cedcfe42290c4bf69", "sha256": "69146929968b8c545da43c5e9bebbdc013565f21d36d7352f76db302724aa54b" }, "downloads": -1, "filename": "pulp-cookbook-0.0.4b1.tar.gz", "has_sig": false, "md5_digest": "4a039fec30101f1cedcfe42290c4bf69", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 39243, "upload_time": "2019-02-05T20:49:53", "url": "https://files.pythonhosted.org/packages/43/f3/201a5d76a4bbcd56d60c8e7e47bdc230f9f51ac76d1fde4beec21610c442/pulp-cookbook-0.0.4b1.tar.gz" } ], "0.0.4b2": [ { "comment_text": "", "digests": { "md5": "d0f440d79f075dededd48e6e003903ed", "sha256": "a27986cc9583f3ae0df5e42bb23c7defdbfc2c37ab8bc67c0151aff25cb0078f" }, "downloads": -1, "filename": "pulp_cookbook-0.0.4b2-py3-none-any.whl", "has_sig": false, "md5_digest": "d0f440d79f075dededd48e6e003903ed", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 47075, "upload_time": "2019-03-31T17:12:50", "url": "https://files.pythonhosted.org/packages/86/d1/61dabd902ec49b4c74a8f8d25458a05984268c649eb4233e4e2eeee29a7a/pulp_cookbook-0.0.4b2-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "21b8517139aa03dac404ea65936a47f6", "sha256": "208b533605e77fbcb78f33002c7f783ab1a8f7ecec7464aa4b1a30f692ee558c" }, "downloads": -1, "filename": "pulp-cookbook-0.0.4b2.tar.gz", "has_sig": false, "md5_digest": "21b8517139aa03dac404ea65936a47f6", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 40162, "upload_time": "2019-03-31T17:12:52", "url": "https://files.pythonhosted.org/packages/6d/e6/76b13c5b229e92527a30c3d87e05f92d3b495d9baf1b973512496bd8b2b8/pulp-cookbook-0.0.4b2.tar.gz" } ], "0.0.4b3": [ { "comment_text": "", "digests": { "md5": "2aad1419c52f78158474e53bfb300033", "sha256": "bbd42c3b55f05eaadc81ed76466b90284933db2647058155af586e4bbc3f089e" }, "downloads": -1, "filename": "pulp_cookbook-0.0.4b3-py3-none-any.whl", "has_sig": false, "md5_digest": "2aad1419c52f78158474e53bfb300033", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 45153, "upload_time": "2019-05-20T18:52:13", "url": "https://files.pythonhosted.org/packages/71/1b/fad6aa7c729025cb1f648fb707f5800cd41227566b09897803747b37e053/pulp_cookbook-0.0.4b3-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "e4a542afb32281a1ef089a25ecca080d", "sha256": "6635202302a850ae153c5745a38d58017e0d26c9911024e6779a7c4c7ff00d34" }, "downloads": -1, "filename": "pulp-cookbook-0.0.4b3.tar.gz", "has_sig": false, "md5_digest": "e4a542afb32281a1ef089a25ecca080d", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 39059, "upload_time": "2019-05-20T18:52:16", "url": "https://files.pythonhosted.org/packages/7b/b8/2dd816ee56bb1e463ef50789f2c76d408fb2988ba9a89be37ba019674972/pulp-cookbook-0.0.4b3.tar.gz" } ], "0.1.0b1": [ { "comment_text": "", "digests": { "md5": "63eedeed88d63020d0772241ce1c976f", "sha256": "cb6f8499b5e9bb808495d830b0b5cc7f691f4181401e69a5f2fb4d9fe11e0901" }, "downloads": -1, "filename": "pulp_cookbook-0.1.0b1-py3-none-any.whl", "has_sig": false, "md5_digest": "63eedeed88d63020d0772241ce1c976f", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 47955, "upload_time": "2019-09-23T17:00:36", "url": "https://files.pythonhosted.org/packages/31/53/c12cb4e3c59b50a3513621ded4b5f9d0349c7442c598d3a6d293a4bec192/pulp_cookbook-0.1.0b1-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "25a3ed2c135a302d91795fe8add0851e", "sha256": "0284e8dfadd93fa11c3e0df166433935389baba9e0446ffa93f58233a942f933" }, "downloads": -1, "filename": "pulp-cookbook-0.1.0b1.tar.gz", "has_sig": false, "md5_digest": "25a3ed2c135a302d91795fe8add0851e", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 41232, "upload_time": "2019-09-23T17:00:38", "url": "https://files.pythonhosted.org/packages/a2/fb/10794ed820ebcbca811883513fc7997e84ee5aa3ad40fe36e6443295abcc/pulp-cookbook-0.1.0b1.tar.gz" } ], "0.1.0b2": [ { "comment_text": "", "digests": { "md5": "2d7b91e0062021fb217b6c72185f8fac", "sha256": "0d566452b6455f80adb5d45ce29d222c2cb3171388caca831621feb121b9212c" }, "downloads": -1, "filename": "pulp_cookbook-0.1.0b2-py3-none-any.whl", "has_sig": false, "md5_digest": "2d7b91e0062021fb217b6c72185f8fac", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 48203, "upload_time": "2019-10-04T20:51:00", "url": "https://files.pythonhosted.org/packages/bb/f5/fb561cac8803611048fa50fd9dd0e93f393d6ca89fdaa382baf68b7665ec/pulp_cookbook-0.1.0b2-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "179cae15897b57ec16c0cb85ad5ee6cf", "sha256": "4944ddf7ab7d8914c8c2998e2d38260092cd508f8b2b5a7fd5cdf1718f25a7db" }, "downloads": -1, "filename": "pulp-cookbook-0.1.0b2.tar.gz", "has_sig": false, "md5_digest": "179cae15897b57ec16c0cb85ad5ee6cf", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 40433, "upload_time": "2019-10-04T20:51:02", "url": "https://files.pythonhosted.org/packages/cb/1b/b678b4a1cf3ca4e8f017e9f77499f9c4de31a43ab2c3158c40bad908db81/pulp-cookbook-0.1.0b2.tar.gz" } ], "0.1.0b3": [ { "comment_text": "", "digests": { "md5": "119ededc9b321a4445fa787a686b453f", "sha256": "1c9dde527c857baed705d64fc28dc55af658d66a4b2b04251672b1bd1cd06f2d" }, "downloads": -1, "filename": "pulp_cookbook-0.1.0b3-py3-none-any.whl", "has_sig": false, "md5_digest": "119ededc9b321a4445fa787a686b453f", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 48249, "upload_time": "2019-10-15T22:27:40", "url": "https://files.pythonhosted.org/packages/97/d5/71819878b20ac743bf5d7ca41e108a5adccea43dae13b0fa54e038a555a2/pulp_cookbook-0.1.0b3-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "32e6bd4f9289494f437c97c35f2870bc", "sha256": "52f9f7dabd2d07d3eda5dd033fc114f3c5eada9c3e7d2844c92920d8176d4bce" }, "downloads": -1, "filename": "pulp-cookbook-0.1.0b3.tar.gz", "has_sig": false, "md5_digest": "32e6bd4f9289494f437c97c35f2870bc", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 40566, "upload_time": "2019-10-15T22:27:42", "url": "https://files.pythonhosted.org/packages/3e/dd/c6a17c8a193eb27aa30936fc2d88f507a47e25c808d35ce6a2eabc150cd0/pulp-cookbook-0.1.0b3.tar.gz" } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "119ededc9b321a4445fa787a686b453f", "sha256": "1c9dde527c857baed705d64fc28dc55af658d66a4b2b04251672b1bd1cd06f2d" }, "downloads": -1, "filename": "pulp_cookbook-0.1.0b3-py3-none-any.whl", "has_sig": false, "md5_digest": "119ededc9b321a4445fa787a686b453f", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 48249, "upload_time": "2019-10-15T22:27:40", "url": "https://files.pythonhosted.org/packages/97/d5/71819878b20ac743bf5d7ca41e108a5adccea43dae13b0fa54e038a555a2/pulp_cookbook-0.1.0b3-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "32e6bd4f9289494f437c97c35f2870bc", "sha256": "52f9f7dabd2d07d3eda5dd033fc114f3c5eada9c3e7d2844c92920d8176d4bce" }, "downloads": -1, "filename": "pulp-cookbook-0.1.0b3.tar.gz", "has_sig": false, "md5_digest": "32e6bd4f9289494f437c97c35f2870bc", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 40566, "upload_time": "2019-10-15T22:27:42", "url": "https://files.pythonhosted.org/packages/3e/dd/c6a17c8a193eb27aa30936fc2d88f507a47e25c808d35ce6a2eabc150cd0/pulp-cookbook-0.1.0b3.tar.gz" } ] }