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. It requires at least Python 3.6
pip install pyartifactory
from pyartifactory import Artifactory
art = Artifactory(url="ARTIFACTORY_URL", auth=('USERNAME','PASSWORD_OR_API_KEY'))
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)
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")
Get the list of groups:
users = art.groups.list()
Get a single group:
users = 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 user
group.description = "test_group_2"
updated_group = art.groups.update(group)
Delete a group:
art.groups.delete("test_group")
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)
Get the list of repositories:
repositories = art.repositories.list()
Get a single repository (Local, Virtual or Remote):
local_repo = art.repositories.get_local_repo("local_repo_name")
virtual_repo = art.repositories.get_virtual_repo("virtual_repo_name")
remote_repo = art.repositories.get_remote_repo("remote_repo_name")
Create/Update a repository:
from pyartifactory.models import LocalRepository, VirtualRepository, RemoteRepository
# Create a repository
local_repo = LocalRepository(key="test_local_repo")
new_local_repo = art.repositories.create_local_repo(local_repo)
# Update a repository
local_repo.description = "test_local_repo"
updated_local_repo = art.repositories.update_local_repo(local_repo)
# Same process for Virtual and Remote repositories
Delete a repository:
art.repositories.delete("test_local_repo")
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")
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")
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
artifact_properties = art.artifacts.properties("<ARTIFACT_PATH_IN_ARTIFACTORY>")
# artifact_properties = art.artifacts.properties("my-repository/my/new/artifact/directory/file.txt")
>>> print(artifact_properties.json)
artifact_stats = art.artifacts.stats("<ARTIFACT_PATH_IN_ARTIFACTORY>")
# artifact_stats = art.artifacts.stats("my-repository/my/new/artifact/directory/file.txt")
>>> print(artifact_stats.json)
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
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
art.artifacts.delete("<ARTIFACT_PATH_IN_ARTIFACTORY>")
Please read the Development - Contributing guidelines.