Skip to main content

Help to generate subsets of CVMFS

Project description

SubCVMFS-builder

schema

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, CVMFS and CVMFS-shrinkwrap installed 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-dir should be a directory of applications structured as follows: <apps_dir>/<command>/command.sh.
    • container provides a specific environment to run the applications (generally the one present in the remote computing infrastructure).
    • path-list should contain the result of the command, namely a list of CVMFS dependencies related to the applications to trace.
    • number-core can be used to run multiple applications in parallel.
  • Build: with a list of dependencies, build a subset of CVMFS using the cvmfs-shrinkwrap tool.

    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-list should 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-path should 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-dir should be a directory of applications structured as follows: <apps_dir>/<command>/command.sh.
    • subset-path should the path of a subset of CVMFS.
    • container provides a specific environment to run the applications (generally the one present in the remote computing infrastructure).
    • number-core can 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-path should the path of a subset of CVMFS.
    • remote-location the remote computing infrastructure that will host the subset of CVMFS.
    • bundle-path should be used if one wants to merge a subset of CVMFS with a container (not recommended if the subset of CVMFS is updated periodically).
    • container provides a specific environment to run the applications. If provided, it will be merged with the subset of CVMFS. Mandatory if bundle-path is present.
    • bootstrap the type of container. Mandatory if bundle-path is provided.
    • post-command should represent a command to run before launching the container. Mandatory if bundle-path is 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/name is used as the container option in the command.
  • /steps/commons gathers parameters that are common to all the steps.

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

subcvmfs-builder-1.0.1.tar.gz (99.5 kB view details)

Uploaded Source

Built Distribution

subcvmfs_builder-1.0.1-py3-none-any.whl (16.8 kB view details)

Uploaded Python 3

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

Hashes for subcvmfs-builder-1.0.1.tar.gz
Algorithm Hash digest
SHA256 8b97fa7323e0d52d5dbf049b162457e75b8bffb96f8badf3be0345f401e5f414
MD5 ad6efeba0c3ae6ee17ef17a0d336d397
BLAKE2b-256 2af630bdf16c2ec6d67b50fc6c353eccff299e1aa92b7f3e53fbb5bdf63e76df

See more details on using hashes here.

File details

Details for the file subcvmfs_builder-1.0.1-py3-none-any.whl.

File metadata

File hashes

Hashes for subcvmfs_builder-1.0.1-py3-none-any.whl
Algorithm Hash digest
SHA256 3dab2c64eef4b6583507869e3adb728f7e3ab8f13d6cf5b605c2e1cfdd3501d3
MD5 42a0b15fe938e58449f353cf108335be
BLAKE2b-256 26f43fa553927cd5f5924362e75cb1de9de2522698f1c405e098eaed6a45a62b

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