Package: lithopscloud
Tool to generate Lithops configuration fileLithopscloud is a CLI tool that greatly simplifies user experience by generating Lithops and Ray configuration files.SetupThe tool been mostly tested with Ubuntu 18.04/20.04, but should work with most Linux systems
Requirements:ssh-keygenutility installed:sudo apt install openssh-clientInstalllithopscloudfrom pip repositorypip install lithopscloudUsageUse the configuration tool as followslithopscloud [--iam-api-key IAM_API_KEY] [-i INPUT_FILE] [-o OUTPUT_PATH] [--verify_config CONFIG_FILE_PATH] [--version] [--backend backend] [--defaults]Get a short description of the available flags vialithopscloud --helpFlags Detailed DescriptionKeyDefaultMandatoryAdditional infoiam-api-keyyesIBM Cloud API key. To generate a new API Key, adhere to the followingguideinput-file<compute_backend>/defaults.pynoExisting config file to be used as a template in the configuration processoutput-pathA randomly generated path to a randomly named yaml filenoA custom location the config file will be written toverify-confignoVerifies the integrity of an existing config file and outputs a usable config file based on it. Currently doesn't support gen2 backends.versionnoReturns lithopscloud's package versionVerify Additional ways of configurationUsing theverify-configoption enables verification of additional valid ways of configuration, that otherwise
left unchecked. This mode scans for any possible subset of valid parameters and extract them to output a new
lithops config file (e.g., verify cos configured by HMAC credentials).
To utilize simply runlithopscloud --verify-config CONFIG_FILE_PATH -o OUTPUT_FILE_PATHPlease note that this feature doesn't currently support the verification of gen2 backends.Supported backends:Standalone Compute BackendsServerless Compute BackendsStorage BackendsGen2/LithopsGen2/RayLocal HostIBM Cloud FunctionsIBM Code EngineIBM Cloud Object StorageUsing lithopscloud to generate config file without user interactionIn order to let lithopscloud generate config file based on some defaults and create vpc and all its peripherial assets automatically, please run:lithopscloud -a <API_KEY> -b <BACKEND> --defaultscurrently, lithopsgen2is the only supported backendUsing lithopscloud config tool programmaticallyNotice, not all fields are mandatory. Unspecified resources will be created automatically on the backend.E.g.
If existing vpc id not provided - vpc will be created automatically with all required peripherial resources like security groups, gateway.. etc following minimal default requierments
If ssh key details not provided - new ssh key pair will be generated and registered in ibm cloudLithops Gen2from lithopscloud import generate_config
from lithopscloud import LITHOPS_GEN2, LITHOPS_CF, LITHOPS_CE, RAY_GEN2, LOCAL_HOST

api_key = '<IAM_API_KEY>'
region = 'eu-de'
generate_config(LITHOPS_GEN2, api_key, region, cos_bucket_name='kpavel-bucket', image_id='r010-5a674db7-95aa-45c5-a2f1-a6aa9d7e93ad', key_id='r010-fe6cb103-60e6-46bc-9cb5-14e415990849', ssh_key_filename='/home/kpavel/.ssh/id_rsa', profile_name='bx2-2x8', vpc_id='r010-af1adda4-e4e5-4060-9aa2-7a0c981aff8e')Mandatory fields are: backend_type (LITHOPS_GEN2), api_key, region and cos_bucket.
Minimal example:from lithopscloud import generate_config
from lithopscloud import LITHOPS_GEN2, RAY_GEN2

api_key = <IAM_API_KEY>
region = 'ca-tor'
cos_bucket_name='kpavel-bucket'
config_file = generate_config(LITHOPS_GEN2, api_key, region, cos_bucket_name=cos_bucket_name)Ray Gen2from lithopscloud import generate_config
from lithopscloud import RAY_GEN2

api_key = '<IAM_API_KEY>'
region = 'eu-de'
generate_config(RAY_GEN2, api_key, region, image_id='r010-5a674db7-95aa-45c5-a2f1-a6aa9d7e93ad', key_id='r010-fe6cb103-60e6-46bc-9cb5-14e415990849', ssh_key_filename='/home/kpavel/.ssh/id_rsa', profile_name='bx2-2x8', vpc_id='r010-af1adda4-e4e5-4060-9aa2-7a0c981aff8e', min_workers=1, max_workers=1)Mandatory fields are: backend_type (LITHOPS_GEN2), api_key, region and cos_bucket.
Minimal example:from lithopscloud import generate_config
from lithopscloud import RAY_GEN2

api_key = <IAM_API_KEY>
region = 'eu-de'
config_file = generate_config(RAY_GEN2, api_key, region)For ContributorsAdd new unsupported sections to config fileIf the new configuration is provider specificimplementconfig_builder.pyinterfaceadd your implementation underproviderpackageadd reference to your implementation in the list of exported modules, e.g.lithops modulesIf the new configuration is common for multiple providersimplementconfig_builder.pyinterface to hold common logicadd your implementation tomodulespackageextend your common implementation under each provider package, e.g.lithops image.pyandray image.pyto have config file specific logic