Entitlements and Download Manager
Project description
Entitlements and Download Manager
This package installs a CLI that allows users to see their entitlements, released products for those entitlements and to download those products.
Installation
Basic Installation
$ python -m pip install edmgr
Python 3.10+ supported. Recommended Python 3.12.
IBM Aspera FASP Downloads
In order to enable IBM Aspera FASP protocol for downloading artifacts, IBM aspera-cli and its FASP protocol extension are required.
Please install it by following the instructions at
Please make sure that ascli
executable is on your $PATH
when running edmgr CLI.
Usage - API Wrapper
from edmgr import Client
import os
# Instanciate a Client using a JWT
client = Client(token=os.getenv('access_token'))
# NOTE: Client will look for EDM_ACCESS_TOKEN environment variable, if set it
# will use its value as a token thus a Client instance could be created
# without passing any argument.
client = Client()
# NOTE: Creating a Client instance with token keyword takes precedence over
# EDM_ACCESS_TOKEN environment variable.
# Instanciate a Client using username and password
client = Client(username=os.getenv('username'), password=os.getenv('password'))
# NOTE: When creating a Client instance with username and password, the
# client will obtain an access token and automatically refresh it once
# expired.
# NOTE: When EDM_ACCESS_TOKEN environment variable is set, its value will take
# precendence over username and password login method and won't be refreshed once expired.
# Get a list of entitlements
response: list = client.get_entitlements()
# Get a paginated list of entitlements
response: list = client.get_entitlements(params={'offset': 1, 'limit': 10})
# Get a list with a single entitlement
response: list = client.get_entitlements(entitlement_id="388295")
# Get a list of entitlements by performing a search query
# Note: not all the keys are searchable
response: list = client.find_entitlements({"product.id": "DS000"})
# Get a list of releases
response: list = client.get_releases(entitlement_id="388295")
# Get a list with a single release
response: list = client.get_releases(
entitlement_id="388295", release_id="9456330a-54c6-48b9-a92d-990f9c302b42"
)
# Get a list of artifacts
response: list = client.get_artifacts(
entitlement_id="388295", release_id="9456330a-54c6-48b9-a92d-990f9c302b42"
)
# Get a list with a single artifact
response: list = client.get_artifacts(
entitlement_id="388295", release_id="9456330a-54c6-48b9-a92d-990f9c302b42",
artifact_id="942b3b7d-d6fc-4fb6-ac6f-5afbf898514c"
)
# Get artifact's download url
response: dict = client.get_artifact_download_url(
entitlement_id="388295", release_id="9456330a-54c6-48b9-a92d-990f9c302b42",
artifact_id="942b3b7d-d6fc-4fb6-ac6f-5afbf898514c"
)
# Download all artifacts for a release (in the current directory)
artifacts: list = client.get_artifacts(
entitlement_id="388295", release_id="9456330a-54c6-48b9-a92d-990f9c302b42",
)
for file_name, artifact_id in map(lambda x: (x['fileName'], x['id']), artifacts):
with open(file_name, "wb") as file:
client.download_artifact(
file,
entitlement_id="388295",
release_id="9456330a-54c6-48b9-a92d-990f9c302b42",
artifact_id=artifact_id
)
Usage - CLI
Help
$ edmgr --help
Usage: edmgr [OPTIONS] COMMAND [ARGS]...
Options:
-k, --environment [prod|sandbox|qa]
Configuration environment [default: prod]
-v, --verbose
--help Show this message and exit.
Commands:
artifacts Print a list of artifacts for a particular release.
download-artifacts Download all artifacts for a particular release or...
entitlement Print single entitlement details
entitlements Print a list of available entitlements.
login Login using credentials/token
logout Logout by deleting cached token
releases Print a list of releases for a particular entitlement.
show-config Print configuration
version Print edmgr version
Login
There are three ways to authenticate on EDM.
- Using a JWT token from the command line: Use
edmgr login token TOKEN
. The token will be persisted on disk and used until its expiration. Once the token has expired, a new one must be obtained by the user. - Using username and password (credentials): Use
edmgr login credentials
and press enter. You will be prompted for username and password, or useedmgr login credentials --username USERNAME
and only the password will be prompted. An access token will be persisted on disk and refreshed automatically when expired. - Using a JWT token in an environment variable: Set
EDM_ACCESS_TOKEN="<JWT string>"
. The token will not be persisted on disk. Once the token has expired, a new one must be obtained by the user.
In case more than one authentication method is set, the above order also determine the precedence of the method used by edmgr.
$ edmgr login --help
Usage: edmgr login [OPTIONS] COMMAND [ARGS]...
Login using credentials/token
Options:
--help Show this message and exit.
Commands:
credentials Login using username and password
show-token Print Access Token as JWT string with some extra information.
token Login using JWT string
Version
$ edmgr version --help
Usage: edmgr version [OPTIONS]
Print edmgr version
Options:
--help Show this message and exit.
Entitlements
$ edmgr entitlements --help
Usage: edmgr entitlements [OPTIONS]
Print a list of available entitlements.
Options:
-e, --entitlement-id TEXT Entitlement ID to retrieve one
-p, --product-code TEXT Filter by product code
-o, --offset INTEGER RANGE Page number to paginate output [x>=1]
-l, --limit INTEGER RANGE Number of records per page to be displayed.
By default it shows 10 records per page.
This option is ignored if no offset was
given. [x>=1]
-f, --format [table|json|jsonpp]
Output format -> tabular, json or json
prettify [default: table]
--help Show this message and exit.
$ edmgr entitlement --help
Usage: edmgr entitlement [OPTIONS] ENTITLEMENT_ID
Print single entitlement details
Options:
-p, --product-code TEXT Filter grouped entitlements by Product Code
-o, --offset INTEGER RANGE Page number to paginate output [x>=1]
-l, --limit INTEGER RANGE Number of records per page to be displayed.
By default it shows 10 records per page.
This option is ignored if no offset was
given. [x>=1]
-f, --format [table|json|jsonpp]
Output format -> tabular, json or json
prettify [default: table]
--help Show this message and exit.
Releases
$ edmgr releases --help
Usage: edmgr releases [OPTIONS]
Print a list of releases for a particular entitlement.
Options:
-e, --entitlement-id TEXT Entitlement ID [required]
-r, --release-id TEXT Release ID to retrieve one
-f, --format [table|json|jsonpp]
Output format -> tabular, json or json
prettify [default: table]
--help Show this message and exit.
Artifacts
$ edmgr artifacts --help
Usage: edmgr artifacts [OPTIONS]
Print a list of artifacts for a particular release.
Options:
-e, --entitlement-id TEXT Entitlement ID [required]
-r, --release-id TEXT Release ID [required]
-a, --artifact-id TEXT Artifact ID to retrieve one
-f, --format [table|json|jsonpp]
Output format -> tabular, json or json
prettify [default: table]
--help Show this message and exit.
Download Artifacts
$ edmgr download-artifacts --help
Usage: edmgr download-artifacts [OPTIONS]
Download all artifacts for a particular release or only a specific one.
Options:
-e, --entitlement-id TEXT Entitlement ID [required]
-r, --release-id TEXT Release ID [required]
-a, --artifact-id TEXT Artifact ID
-d, --download-dir TEXT Directory in which artifacts are downloaded.
Default: $HOME/Artifacts
-m, --mode [http|fasp] The protocol used to download the files. Default:
http
--help Show this message and exit.
Shell Completions
Tab completions for Bash (version 4.4 and up), Zsh, and Fish can be enabled by running the following command in your shell:
eval "$(_EDMGR_COMPLETE=<shell>_source edmgr)"
Where <shell>
is either bash
, zsh
or fish
Environment Variables
The following environment variables can be used to configure both API Wrapper and CLI.
EDM_ACCESS_TOKEN
: API authentication JWT, please refer to the above sections for more informationEDM_ROOT
: Directory in which EDM will store cached files. If not set, the default is$HOME/.edm
EDM_DOWNLOADS
: Directory in which EDM will save downloaded artifacts. If not set, the default is$HOME/Artifacts
EDM_LOG_LEVEL
: EDM log level. Options: critical, error, warning, info, debug. If not set, the default isinfo
EDM_ENV
: The name of the configuration environment used. Options: prod, sandbox, qa. If not set, the default isprod
Known Bugs
ImportError: symbol not found in flat namespace (_ffi_prep_closure)
is thrown byedmgr.auth.decode_jwt_token()
withcheck_signature
argumentTrue
when running Python 3.7 on Apple M1. This is due to cffi 1.15.0 module's lib_cffi_backend.cpython-37m-darwin.so
trying to load_ffi_prep_closure
symbol. This bug affects CLIedmgr login token
command
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
File details
Details for the file edmgr-1.3.0.tar.gz
.
File metadata
- Download URL: edmgr-1.3.0.tar.gz
- Upload date:
- Size: 29.4 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/5.1.0 CPython/3.10.12
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 4099bb7615df848d05d4289d76b37076b19ba741aa67bf8e63dc1f632e8ff8d9 |
|
MD5 | c67739630fae643954c0ea050f570ad7 |
|
BLAKE2b-256 | 403054ea4e0a23ea8eb1d98d5c0e46e3bbddfefda46608be57f774966ae52ed8 |
File details
Details for the file edmgr-1.3.0-py3-none-any.whl
.
File metadata
- Download URL: edmgr-1.3.0-py3-none-any.whl
- Upload date:
- Size: 22.9 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/5.1.0 CPython/3.10.12
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 3b6eb1fcacba4672b91f98531d469059b24407f153c0664c05ec00b445348381 |
|
MD5 | e151e9e94d703bfcbd46025f796ada2b |
|
BLAKE2b-256 | ccf5bb74e948ac8fabfe0d848bd72ea1f005154bf349bd4e7371ab79a076318a |