Skip to main content

AsyncIO Client for Lancium

Project description

Build Status Verification codecov Documentation Status PyPI version PyPI - Python Version License: MIT Black

aiolancium

aiolancium is a simplistic python REST client for the Lancium Compute REST API utilizing asyncio. The client itself has been developed against the Lancium Compute REST API documentation.

Installation

aiolancium can be installed via PyPi using

pip install aiolancium

How to use aiolancium

from aiolancium.auth import Authenticator
from aiolancium.client import LanciumClient

# Authenticate yourself against the API and refresh your token if necessary
auth = Authenticator(api_key="<your_api_key>")

# Initialise the actual client
client = LanciumClient(api_url="https://portal.lancium.com/api/v1/", auth=auth)

# List details about the `lancium/ubuntu` container
await client.images.list_image("lancium/ubuntu")

# Create your hellow world first job.
job = {"job": {"name": "GridKa Test Job",
                   "qos": "high",
                   "image": "lancium/ubuntu",
                   "command_line": 'echo "Hello World"',
                   "max_run_time": 600}}

await client.jobs.create_job(**job)

# Show all your jobs and their status in Lancium compute
jobs = await client.jobs.show_jobs()

for job in jobs["jobs"]:
    # Retrieve the stdout/stdin output of your finished jobs
    await client.jobs.download_job_output(job["id"], "stdout.txt")
    await client.jobs.download_job_output(job["id"], "stderr.txt")
    
    # or download them to disk
    await client.download_file_helper("stdout.txt", "stdout.txt", job["id"])
    await client.download_file_helper("stderr.txt", "stderr.txt", job["id"])

# Delete all your jobs in Lancium compute
for job in jobs["jobs"]:
    await client.jobs.delete_job(id=job["id"])

In order to simplify file uploads and downloads to/from the Lancium compute platform, an upload/download helper method has been added to the client. The upload helper takes care of reading a file in binary format and uploading it in 32 MB chunks (default) to the Lancium persistent storage. The download helper downloads a file from the Lancium persistent storage to the local disks. The download helper also supports the download of jobs outputs (stdout.txt, stderr.txt) to local disk (see example above). Unfortunately, streaming of data is not support by the underlying simple-rest-client. Thus, the entire file is downloaded to memory before writing to the disk.

from aiolancium.auth import Authenticator
from aiolancium.client import LanciumClient

# Authenticate yourself against the API and refresh your token if necessary
auth = Authenticator(api_key="<your_api_key>")

# Initialise the actual client
client = LanciumClient(api_url="https://portal.lancium.com/api/v1/", auth=auth)

# Upload /bin/bash to /test on the Lancium persistent storage
await client.upload_file_helper(path="test", source="/bin/bash")

# Get information about the uploaded file
await client.data.get_file_info("/test")

# Download the file again
await client.download_file_helper("/test", destination="test_downloaded_again")

# Delete the uploaded file again, the 
arg = {"file-path": "/test"}
await client.data.delete_data_item(**arg)

# Alternative approach to delete the uploaded file
await client.data.delete_data_item("/test")

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

aiolancium-0.2.0.tar.gz (24.7 kB view details)

Uploaded Source

Built Distribution

aiolancium-0.2.0-py3-none-any.whl (25.9 kB view details)

Uploaded Python 3

File details

Details for the file aiolancium-0.2.0.tar.gz.

File metadata

  • Download URL: aiolancium-0.2.0.tar.gz
  • Upload date:
  • Size: 24.7 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: poetry/1.2.2 CPython/3.11.0 Darwin/21.6.0

File hashes

Hashes for aiolancium-0.2.0.tar.gz
Algorithm Hash digest
SHA256 97adfd5a6736d4d1e2b6cee8d8b09eaa2d148c64257dbd14372469c75ff4d9f1
MD5 356c43663f75ad1acf964a01773ee0ab
BLAKE2b-256 bdb314ac0d6b1b5937414a33a3ac1ffa20dd1f32916d702fd71997a9f19d3f42

See more details on using hashes here.

File details

Details for the file aiolancium-0.2.0-py3-none-any.whl.

File metadata

  • Download URL: aiolancium-0.2.0-py3-none-any.whl
  • Upload date:
  • Size: 25.9 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: poetry/1.2.2 CPython/3.11.0 Darwin/21.6.0

File hashes

Hashes for aiolancium-0.2.0-py3-none-any.whl
Algorithm Hash digest
SHA256 bcd034e1490ce6857a745ffa63c574d8da034effc1b37ba0f57b2603e544fd40
MD5 5a3dc8f4301b5fc4e0605ae70d9c47dc
BLAKE2b-256 4d873ad6b092420b5cf016c31348e6caf5b2e251ed68d7cd3296c7bb4ee10267

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page