Skip to content

Instantly share code, notes, and snippets.

@athos-ribeiro
Created August 26, 2020 14:56
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save athos-ribeiro/8227fd2425df78b7fcd82bbaedb2a7d9 to your computer and use it in GitHub Desktop.
Save athos-ribeiro/8227fd2425df78b7fcd82bbaedb2a7d9 to your computer and use it in GitHub Desktop.
Testing cachito Nexus Python repositories
from cachito.workers import nexus
from cachito.workers.pkg_managers import pip
import requests
pypi_repo = "test-pip-hosted-1"
raw_repo = "test-raw-hosted-1"
username = "test-user"
raw_archive_path = "./cachito-master.tar.gz"
dest_dir = "cachito-master"
filename = "cachito-master-20200826.tar.gz"
pypi_archive_path = "flexmock-0.10.4.tar.gz"
payload = {
"pip_repository_name": pypi_repo,
"raw_repository_name": raw_repo,
"username": username,
}
nexus.execute_script("pip_cleanup", payload)
r = requests.get(
"https://github.com/release-engineering/cachito/archive/master.tar.gz", allow_redirects=True
)
with open(raw_archive_path, 'wb') as f:
f.write(r.content)
pypi_hash = "03fc6622d823e6d292c29e444c808788e580b5ad66000f4d75e49c14f51f"
r = requests.get(
f"https://files.pythonhosted.org/packages/0d/76/{pypi_hash}/flexmock-0.10.4.tar.gz",
allow_redirects=True,
)
with open(pypi_archive_path, 'wb') as f:
f.write(r.content)
pip.prepare_nexus_for_pip_request(pypi_repo, raw_repo)
password = pip.finalize_nexus_for_pip_request(pypi_repo, raw_repo, username)
print("cachito user: {}, password: {}; repositories: pypi - {}; and raw - {}".format(
username,
password,
pypi_repo,
raw_repo,
))
pip.upload_raw_package(raw_repo, raw_archive_path, dest_dir, filename, is_request_repository=True)
# Set retries to 5 to allow for component to be uploaded and generated
raw_component = nexus.get_raw_component_asset_url(raw_repo, dest_dir + '/' + filename, 5)
print(raw_component)
pip.upload_pypi_package(pypi_repo, pypi_archive_path)
# Set retries to 5 to allow for component to be uploaded and generated
pypi_component = nexus.get_component_info_from_nexus(
pypi_repo, "pypi", "flexmock", "0.10.4", max_attempts=5
)
print(pypi_component)
payload = {
"pip_repository_name": pypi_repo,
"raw_repository_name": raw_repo,
"username": username,
}
nexus.execute_script("pip_cleanup", payload)
print("Repositories and user removed.")
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment