Skip to main content

(Python) client for the Pfcon API

Project description

A Python3 client for pfcon’s web API.

MIT License https://badge.fury.io/py/python-pfconclient.svg

Overview

This repository provides a Python3 client for pfcon service’s web API. The client provides both a Python programmatic interface and a standalone CLI tool called pfconclient.

Installation

$> pip install -U python-pfconclient

pfcon server preconditions

These preconditions are only necessary to be able to test the client against an actual instance of the pfcon server and run the automated tests.

Install latest Docker

Currently tested platforms:

  • Ubuntu 20.04+ and MAC OS X 12+

Note: On a Linux machine make sure to add your computer user to the docker group. Consult this page https://docs.docker.com/engine/install/linux-postinstall/

Fire up the full set of pfcon services

Open a terminal and run the following commands in any working directory:

$> git clone https://github.com/FNNDSC/pfcon.git
$> cd pfcon
$> ./make.sh -N -F fslink

You can later remove all the backend containers with:

$> cd pfcon
$> ./unmake.sh -N -F fslink

Usage

Python programmatic interface

Instantiate the client:

from pfconclient.client import Client, JobType

token = Client.get_auth_token('http://localhost:30006/api/v1/auth-token/', 'pfcon', 'pfcon1234')
cl = Client('http://localhost:30006/api/v1/', token)

Standalone CLI client tool

Get and print auth token with the auth subcommand:

$> pfconclient http://localhost:30006/api/v1/ auth --pfcon_user pfcon --pfcon_password pfcon1234

Submit a copy job:

$> pfconclient http://localhost:30006/api/v1/ -a <token> submit --job_type copy --jid chris-jid-2 --input_dirs home/user/cube --output_dir home/user/cube_out

Poll copy job status:

$> pfconclient http://localhost:30006/api/v1/ -a <token> poll --job_type copy --jid chris-jid-2

Submit a ds plugin job:

$> pfconclient http://localhost:30006/api/v1/ -a <token> submit --job_type plugin --jid chris-jid-2 --entrypoint python3 /usr/local/bin/simpledsapp --args '--prefix le' --auid cube --number_of_workers 1 --cpu_limit 1000 --memory_limit 200 --gpu_limit 0 --image fnndsc/pl-simpledsapp --type ds --input_dirs home/user/cube --output_dir home/user/cube_out

Poll plugin job status:

$> pfconclient http://localhost:30006/api/v1/ -a <token> poll --job_type plugin --jid chris-jid-2

Get plugin job status:

$> pfconclient http://localhost:30006/api/v1/ -a <token> status --job_type plugin --jid chris-jid-2

Delete a copy job’s container:

$> pfconclient http://localhost:30006/api/v1/ -a <token> delete --job_type copy --jid chris-jid-2

Delete a plugin job’s container:

$> pfconclient http://localhost:30006/api/v1/ -a <token> delete --job_type plugin --jid chris-jid-2

Submit a delete job:

$> pfconclient http://localhost:30006/api/v1/ -a <token> submit --job_type delete --jid chris-jid-2

Poll delete job status:

$> pfconclient http://localhost:30006/api/v1/ -a <token> poll --job_type delete --jid chris-jid-2

Delete a delete job’s container:

$> pfconclient http://localhost:30006/api/v1/ -a <token> delete --job_type delete --jid chris-jid-2

Visit the standalone CLI client wiki page to learn more about the CLI client.

Development and testing

Optionally setup a virtual environment

Install virtualenv and virtualenvwrapper using your OS package manager.

Create a directory for your virtual environments e.g.:

$> mkdir ~/Python_Envs

You might want to add the following lines to your .bashrc or .zshrc file:

VIRTUALENVWRAPPER_PYTHON=/usr/local/bin/python3
export WORKON_HOME=~/Python_Envs
source /usr/local/bin/virtualenvwrapper.sh

Then source the file and create a new Python3 virtual environment:

$> mkvirtualenv pfcon_client_env

To activate pfcon_client_env:

$> workon pfcon_client_env

To deactivate pfcon_client_env:

$> deactivate

Clone the repo

$> git clone https://github.com/FNNDSC/python-pfconclient.git

Run automated tests

$> cd python-pfconclient
$> workon pfcon_client_env
$> pip install -e ".[dev]"
$> pytest

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

python_pfconclient-4.0.0.tar.gz (13.1 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

python_pfconclient-4.0.0-py3-none-any.whl (9.7 kB view details)

Uploaded Python 3

File details

Details for the file python_pfconclient-4.0.0.tar.gz.

File metadata

  • Download URL: python_pfconclient-4.0.0.tar.gz
  • Upload date:
  • Size: 13.1 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.14.3

File hashes

Hashes for python_pfconclient-4.0.0.tar.gz
Algorithm Hash digest
SHA256 53bd125a47d1dfc00c29de57d3e1bd08bcf5efad78d7b9df0296458370cee4b1
MD5 6624f4bf786a9a08ee85383566f70b5c
BLAKE2b-256 c3167a0b532f7eaceb29f65b88303a88c29eaa46f0bba475576d9acebf926838

See more details on using hashes here.

File details

Details for the file python_pfconclient-4.0.0-py3-none-any.whl.

File metadata

File hashes

Hashes for python_pfconclient-4.0.0-py3-none-any.whl
Algorithm Hash digest
SHA256 68651bfe30925754e6417e5d414ff767b059835cce5e622cea45afca40ad46ae
MD5 cb42c21b45f93bf6f7c5716b722da0ef
BLAKE2b-256 552e846ddbcc6b8ffbe5c4cd79ffca560773ec9150508ac69a89b51c11e7643b

See more details on using hashes here.

Supported by

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