Help to generate subsets of CVMFS
Project description
SubCVMFS-builder
Purpose
SubCVMFS-builder aims to help scientific communities to build a subset of CVMFS containing the minimal requirements to execute applications of interests and deploy it on a remote computing infrastructure.
The tool is mainly used on supercomputers having no outbound connectivity.
Installation
- Before starting, you need to have
singularity,CVMFSandCVMFS-shrinkwrapinstalled on the machine.
git clone https://gitlab.cern.ch/alboyer/subcvmfs-builder.git
cd subcvmfs-builder
pip install . --user
Usage
- Get the help:
subcvmfs --help
-
Trace: run applications in a singularity container and return the list of dependencies related to CVMFS.
subcvmfs trace <config> \ --apps-dir <required_input_directory> --path-list <output_file> --container <optional_input_string> --number-core <optional_input_int>
Trace is generally used when one has no idea about the dependencies of the applications to include in the subset of CVMFS.
apps-dirshould be a directory of applications structured as follows:<apps_dir>/<command>/command.sh.containerprovides a specific environment to run the applications (generally the one present in the remote computing infrastructure).path-listshould contain the result of the command, namely a list of CVMFS dependencies related to the applications to trace.number-corecan be used to run multiple applications in parallel.
-
Build: with a list of dependencies, build a subset of CVMFS using the
cvmfs-shrinkwraptool.subcvmfs build <config> \ --path-list <Trace_output> <another_input_list> --subset-path <output_subset_path>
Build is a required step to build a subset of CVMFS.
path-listshould be a file - or a list of files - containing the CVMFS dependencies to include in the subset. It can be obtain from Trace or built from scratch.subset-pathshould the path of the generated subset.
-
Test: execute application using a subset of dependencies instead of CVMFS.
subcvmfs test <config> \ --apps-dir <required_input_directory> --subset-path <required_input_path> --container <optional_input_str> --number-core <optional_input_int>
Test is generally used before deploying a subset of CVMFS. One may want to make sure the subset is valid against a certain set of applications.
apps-dirshould be a directory of applications structured as follows:<apps_dir>/<command>/command.sh.subset-pathshould the path of a subset of CVMFS.containerprovides a specific environment to run the applications (generally the one present in the remote computing infrastructure).number-corecan be used to run multiple applications in parallel.
-
Deploy: Deploy the subset of CVMFS - within a container if needed - on the remote computing infrastructure.
subcvmfs deploy <config> \ --subset-path <required_input_subset_path> --remote-location <required_input_str> --container <optional_input_path> --bootstrap <optional_input_path> --post-command <optional_input_path> --bundle-path <optional_output_path>
Deploy requires one to have access to the remote computing infrastructure.
subset-pathshould the path of a subset of CVMFS.remote-locationthe remote computing infrastructure that will host the subset of CVMFS.bundle-pathshould be used if one wants to merge a subset of CVMFS with a container (not recommended if the subset of CVMFS is updated periodically).containerprovides a specific environment to run the applications. If provided, it will be merged with the subset of CVMFS. Mandatory ifbundle-pathis present.bootstrapthe type of container. Mandatory ifbundle-pathis provided.post-commandshould represent a command to run before launching the container. Mandatory ifbundle-pathis present.
Configuration
- Minimal configuration possible:
{
"cvmfs_extensions":
{
"<repository_name>":
{
"url": "<repository_url>",
"public_key": "<repository_pubkey>",
},
}
}
In this case, arguments should be passed through the CLI.
- A concrete example:
{
"cvmfs_extensions":
{
"lhcb.cern.ch":
{
"url": "http://cvmfs-stratum-one.cern.ch/cvmfs/lhcb.cern.ch",
"public_key": "/cvmfs/cvmfs-config.cern.ch/etc/cvmfs/keys/<key.pub>",
},
"lhcb-condb.cern.ch":
{
"url": "http://cvmfs-stratum-one.cern.ch/cvmfs/lhcb-condb.cern.ch",
"public_key": "/cvmfs/cvmfs-config.cern.ch/etc/cvmfs/keys/<key.pub>",
}
},
"steps":
{
"trace":
{
"apps_dir": "inputs_trace",
"path_list": "namelist1.txt"
},
"build":
{
"path_list": ["namelist1.txt", "namelist2.txt"],
},
"test":
{
"apps_dir": "inputs_test",
},
"commons":
{
"subset_path": "/path/to/subcvmfs"
}
},
"tools":
{
"parrot":
{
"http_proxy": "DIRECT"
},
"singularity":
{
"name": "/cvmfs/cernvm-prod/cvm4"
}
}
}
Arguments are entirely provided by the configuration, there is no need to provide them individually to the CLI unless overloading them is necessary. A few details here:
/tools/singularity/nameis used as thecontaineroption in the command./steps/commonsgathers parameters that are common to all the steps.
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
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file subcvmfs-builder-1.0.1.tar.gz.
File metadata
- Download URL: subcvmfs-builder-1.0.1.tar.gz
- Upload date:
- Size: 99.5 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/4.0.2 CPython/3.9.16
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
8b97fa7323e0d52d5dbf049b162457e75b8bffb96f8badf3be0345f401e5f414
|
|
| MD5 |
ad6efeba0c3ae6ee17ef17a0d336d397
|
|
| BLAKE2b-256 |
2af630bdf16c2ec6d67b50fc6c353eccff299e1aa92b7f3e53fbb5bdf63e76df
|
File details
Details for the file subcvmfs_builder-1.0.1-py3-none-any.whl.
File metadata
- Download URL: subcvmfs_builder-1.0.1-py3-none-any.whl
- Upload date:
- Size: 16.8 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/4.0.2 CPython/3.9.16
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
3dab2c64eef4b6583507869e3adb728f7e3ab8f13d6cf5b605c2e1cfdd3501d3
|
|
| MD5 |
42a0b15fe938e58449f353cf108335be
|
|
| BLAKE2b-256 |
26f43fa553927cd5f5924362e75cb1de9de2522698f1c405e098eaed6a45a62b
|