tdviet / fedcloudclient

EGI FedCloud Client
https://fedcloudclient.fedcloud.eu
MIT License
8 stars 9 forks source link
cloud egi egi-federated-cloud fedcloud-client openstack-commands openstack-sites

FedCloud client: Command-line client and library for EGI Federated Cloud

DOI

TL;DR: Visit the cheat sheet for real examples of fedcloud commands.

The FedCloud client is a high-level Python package for a command-line client designed for interaction with the OpenStack services in the EGI infrastructure. The client can access various EGI services and can perform many tasks for users including managing access tokens, listing services, and mainly execute commands on OpenStack sites in EGI infrastructure.

The most notable features of FedCloud client are following:

Five modules are included: fedcloudclient.checkin for operation with EGI Check-in like getting tokens, fedcloudclient.endpoint for searching endpoints via GOCDB, getting unscoped/scoped token from OpenStack keystone, fedcloudclient.sites for managing site configurations, fedcloudclient.openstack for performing OpenStack operations on sites, and finally fedcloudclient.ec3 for deploying elastic computing clusters in Cloud.

A short tutorial of the fedcloudclient is available in this presentation. The full documentation, including installation, usage and API description is available at https://fedcloudclient.fedcloud.eu/.

Quick start

Using fedcloudclient as development library

All functionalities offered by the fedcloud client can be used as a library for development of other tools and services for EGI Federated Cloud. For example, performing openstack command as a function in Python:


from fedcloudclient.openstack import fedcloud_openstack

....
error_code, result = fedcloud_openstack(oidc_access_token,
                                        site,
                                        vo,
                                        openstack_command)

See a working example "demo.py". The documentation of fedcloudclient API is available at https://fedcloudclient.fedcloud.eu/.

FAQ

  1. The fedcloud client is slow.

    Execute command fedcloud site save-config to download site configurations from GitHub repository and save them on a local machine. That will significantly speed up site configurations loading.

    Some sites in the repository may not respond, and client has to wait for long time before report "Connection time out". You can remove the sites from your local repository to speed-up all-sites operations

    libsodium which is used by oidc-agent Python library may be frozen at initialization on VMs with low entropy. The problem is described here. Check the entropy on the VMs by executing command cat /proc/sys/kernel/random/entropy_avail, and if the result is lower than 300, consider installing haveged or rng-tools to increase entropy. On VMs with CentOS, you also have to start the daemon manually after installation (or reboot the VMs)

  2. The fedcloud client fails with error message SSL exception connecting to <https://> ... when attempts to interact with some sites.

    Some sites use certificates issued by national grid CAs that are not included in default distribution, so fedcloud client cannot verify them. Follow this instruction to install EGI Core Trust Anchor and add certificates to Python request certificate bundle.

    In the case of using virtual environment for quick test, you can download and import bundle certificates by using the script from this repository

  3. The fedcloud client fails with error message "VO XX not found on site YY", but they do exist.

    Site configurations at GitHub repository may be incomplete. Check the site configurations stored in ~/.config/fedcloud/site-config/ if the VOs are included. If not, you can ask site admins to fix site configuration. You can also execute fedcloud endpoint projects --site SITE --oidc-access-token ACCESS_TOKEN to find project IDs of the VOs on the site and add the VOs to local site configuration on your machine manually.