Typed interactions with the Jfrog Artifactory REST API
Project description
PyArtifactory
pyartifactory
is a Python library to access the Artifactory REST API.
This library enables you to manage Artifactory resources such as users, groups, permissions, repositories, artifacts and access tokens in your applications. Based on Python 3.6+ type hints.
- Requirements
- Install
- Usage
Requirements
- Python 3.6+
Install
pip install pyartifactory
Usage
Authentication
from pyartifactory import Artifactory
art = Artifactory(url="ARTIFACTORY_URL", auth=('USERNAME','PASSWORD_OR_API_KEY'))
SSL Cert Verification Options
Specify a local cert to use as client side certificate
from pyartifactory import Artifactory
art = Artifactory(url="ARTIFACTORY_URL", auth=('USERNAME','PASSORD_OR_API_KEY'), cert="/path_to_file/server.pem")
Disable host cert verification
from pyartifactory import Artifactory
art = Artifactory(url="ARTIFACTORY_URL", auth=('USERNAME','PASSORD_OR_API_KEY'), verify=False)
Admin objects
User
First, you need to create a new Artifactory object.
from pyartifactory import Artifactory
art = Artifactory(url="ARTIFACTORY_URL", auth=('USERNAME','PASSORD_OR_API_KEY'))
Get the list of users:
users = art.users.list()
Get a single user:
user = art.users.get("test_user")
Create a user:
from pyartifactory.models import NewUser
# Create User
user = NewUser(name="test_user", password="test_password", email="user@user.com")
new_user = art.users.create(user)
# Update user
user.email = "test@test.com"
updated_user = art.users.update(user)
Update a user:
from pyartifactory.models import User
user = art.users.get("test_user")
# Update user
user.email = "test@test.com"
updated_user = art.users.update(user)
Delete a user:
art.users.delete("test_user")
Unlock a user:
art.users.unlock("test_user")
Group
Get the list of groups:
groups = art.groups.list()
Get a single group:
group = art.groups.get("group_name")
Create/Update a group:
from pyartifactory.models import Group
# Create a Group
group = Group(name="test_group", description="test_group")
new_group = art.groups.create(group)
# Update a Group
group.description = "test_group_2"
updated_group = art.groups.update(group)
Delete a group:
art.groups.delete("test_group")
Security
A set of methods for performing operations on apiKeys, passwords ...
>>> art.security.
art.security.create_api_key( art.security.get_encrypted_password( art.security.revoke_api_key(
art.security.get_api_key( art.security.regenerate_api_key( art.security.revoke_user_api_key(
Create an access token (for a transient user):
token = art.security.create_access_token(user_name='transient_artifactory_user',
groups=['g1', 'g2'],
refreshable=True)
Create an access token for an existing user (groups are implied from the existing user):
token = art.security.create_access_token(user_name='existing_artifactory_user',
refreshable=True)
Revoke an existing revocable token:
art.security.revoke_access_token(token.access_token)
Repository
Get the list of repositories:
repositories = art.repositories.list()
Get a single repository
repo = art.repositories.get_repo("repo_name")
# According to the repo type, you'll have either a local, virtual or remote repository returned
Create/Update a repository:
from pyartifactory.models import LocalRepository, VirtualRepository, RemoteRepository
# Create local repo
local_repo = LocalRepository(key="test_local_repo")
new_local_repo = art.repositories.create_repo(local_repo)
# Create virtual repo
virtual_repo = VirtualRepository(key="test_virtual_repo")
new_virtual_repo = art.repositories.create_repo(virtual_repo)
# Create remote repo
remote_repo = RemoteRepository(key="test_remote_repo")
new_remote_repo = art.repositories.create_repo(remote_repo)
# Update a repository
local_repo = art.repositories.get_repo("test_local_repo")
local_repo.description = "test_local_repo"
updated_local_repo = art.repositories.update_repo(local_repo)
Delete a repository:
art.repositories.delete("test_local_repo")
Permission
Get the list of permissions:
permissions = art.permissions.list()
Get a single permission:
users = art.permissions.get("test_permission")
Create/Update a permission:
from pyartifactory.models import Permission
# Create a permission
permission = Permission(
**{
"name": "test_permission",
"repositories": ["test_repository"],
"principals": {
"users": {"test_user": ["r", "w", "n", "d"]},
"groups": {"developers": ["r"]},
},
}
)
perm = art.permissions.create(permission)
# Update permission
permission.repositories = ["test_repository_2"]
updated_permission = art.permissions.update(permission)
Delete a permission:
art.permissions.delete("test_permission")
Artifacts
Get the information about a file or folder
artifact_info = art.artifacts.info("<ARTIFACT_PATH_IN_ARTIFACTORY>")
# file_info = art.artifacts.info("my-repository/my/artifact/directory/file.txt")
# folder_info = art.artifacts.info("my-repository/my/artifact/directory")
Deploy an artifact
artifact = art.artifacts.deploy("<LOCAL_FILE_LOCATION>", "<ARTIFACT_PATH_IN_ARTIFACTORY>")
# artifact = art.artifacts.deploy("Desktop/myNewFile.txt", "my-repository/my/new/artifact/directory/file.txt")
Download an artifact
artifact = art.artifacts.download("<ARTIFACT_PATH_IN_ARTIFACTORY>", "<LOCAL_DIRECTORY_PATH>")
# artifact = art.artifacts.download("my-artifactory-repository/my/new/artifact/file.txt", "Desktop/my/local/directory")
# The artifact location is returned by the download method
# If you have not set a <LOCAL_DIRECTORY_PATH>, the artifact will be downloaded in the current directory
Retrieve artifact properties
artifact_properties = art.artifacts.properties("<ARTIFACT_PATH_IN_ARTIFACTORY>") # returns all properties
# artifact_properties = art.artifacts.properties("my-repository/my/new/artifact/directory/file.txt")
artifact_properties = art.artifacts.properties("<ARTIFACT_PATH_IN_ARTIFACTORY>", ["prop1", "prop2"]) # returns specific properties
artifact_properties.properties["prop1"] # ["value1", "value1-bis"]
Retrieve artifact stats
artifact_stats = art.artifacts.stats("<ARTIFACT_PATH_IN_ARTIFACTORY>")
# artifact_stats = art.artifacts.stats("my-repository/my/new/artifact/directory/file.txt")
Copy artifact to a new location
artifact = art.artifacts.copy("<CURRENT_ARTIFACT_PATH_IN_ARTIFACTORY>","<NEW_ARTIFACT_PATH_IN_ARTIFACTORY>")
# If you want to run a dryRun test, you can do the following:
# artifact = art.artifacts.copy("my-repository/current/artifact/path/file.txt","my-repository/new/artifact/path/file.txt", dryrun=True)
# It will return properties of the newly copied artifact
Move artifact to a new location
artifact = art.artifacts.move("<CURRENT_ARTIFACT_PATH_IN_ARTIFACTORY>","<NEW_ARTIFACT_PATH_IN_ARTIFACTORY>")
# You can also run a dryRun test with the move operation
# It will return properties of the newly moved artifact
Delete an artifact
art.artifacts.delete("<ARTIFACT_PATH_IN_ARTIFACTORY>")
Contributing
Please read the Development - Contributing guidelines.
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
Built Distribution
Hashes for PyArtifactory-1.7.2-py3-none-any.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 501c6c12ade8037d7e2c4336ebc07fb4c4976d055416031805ebf29c6bcc48ad |
|
MD5 | b05405845c5c69a082cd3d4164f355bb |
|
BLAKE2b-256 | 467956861e4e7d854d1da43c8b6bf44d15905fe5a424f05cf4afb0f2f8ac4d7c |