Skip to main content

Manages data storage for CKAN/DCOR (import, symlink, etc.)

Project description

PyPI Version Build Status Coverage Status

This plugin manages how data are stored in DCOR. There are two types of files in DCOR:

  1. Resources uploaded by users, imported from figshare, or imported from a data archive

  2. Ancillary files that are generated upon resource creation, such as condensed DC data, preview images (see ckanext-dc_view).

This plugin implements:

  • Data storage management. All resources uploaded by a user are moved to /data/users-HOSTNAME/USERNAME-ORGNAME/PK/ID/PKGNAME_RESID_RESNAME and symlinks are created in /data/ckan-HOSTNAME/resources/RES/OUR/CEID via a background job. CKAN itself will not notice this. The idea is to have a filesystem overview about the datasets of each user.

  • A backround job that uploads resources to S3 in after_resource_create if the resources were uploaded via the legacy upload route.

  • A background job that backs up resources from S3 to local block storage if the resources were uploaded via the S3 upload route.

  • Import datasets from figshare. Existing datasets from figshare are downloaded to the /data/depots/figshare directory and, upon resource creation, symlinked there from /data/ckan-HOSTNAME/resources/RES/OUR/CEID (Note that this is an exemption of the data storage management described above). When running the following command, the “figshare-import” organization is created and the datasets listed in figshare_dois.txt are added to CKAN:

    ckan import-figshare
  • CLI for symlinking datasets that have failed to symlink before:

    ckan run-jobs-dcor-depot
  • CLI for appending a resource to a dataset

    ckan append-resource /path/to/file dataset_id --delete-source

Please make sure that the necessary file permissions are given in /data.

In 2023, it was decided that the huge block storage of DCOR should be replaced with an S3-compatible object store, because block storage does not scale well. This partially deprecates some of the commands above which might be removed or modified to support object storage directly.

  • CLI for migrating data from block storage to an S3-compatible object storage service. For this, the following configuration keys must be specified in the ckan.ini file:

    dcor_object_store.access_key_id = ACCESS_KEY_ID
    dcor_object_store.secret_access_key = SECRET_ACCESS_KEY
    dcor_object_store.endpoint_url = S3_ENDPOINT_URL
    dcor_object_store.ssl_verify = true
    # The bucket name is by default defined by the circle ID. Resources
    # are stored in the "RES/OUR/CEID-SCHEME" in that bucket.
    dcor_object_store.bucket_name = circle-{organization_id}

    Usage:

    ckan dcor-migrate-resources-to-object-store

Installation

pip install ckanext-dcor_depot

Add this extension to the plugins and defaul_views in ckan.ini:

ckan.plugins = [...] dcor_depot
ckan.storage_path=/data/ckan-HOSTNAME
ckanext.dcor_depot.depots_path=/data/depots
ckanext.dcor_depot.users_depot_name=users-HOSTNAME

This plugin stores resources to /data:

mkdir -p /data/depots/users-$(hostname)
chown -R www-data /data/depots/users-$(hostname)

Testing

If CKAN/DCOR is installed and setup for testing, this extension can be tested with pytest:

pytest ckanext

Testing can also be done via vagrant in a virtualmachine using the dcor-test <https://app.vagrantup.com/paulmueller/boxes/dcor-test/> image. Make sure that vagrant and virtualbox are installed and run the following commands in the root of this repository:

# Setup virtual machine using `Vagrantfile`
vagrant up
# Run the tests
vagrant ssh -- sudo bash /testing/vagrant-run-tests.sh

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

ckanext-dcor_depot-0.14.0.tar.gz (35.2 kB view details)

Uploaded Source

Built Distribution

ckanext_dcor_depot-0.14.0-py3-none-any.whl (37.7 kB view details)

Uploaded Python 3

File details

Details for the file ckanext-dcor_depot-0.14.0.tar.gz.

File metadata

  • Download URL: ckanext-dcor_depot-0.14.0.tar.gz
  • Upload date:
  • Size: 35.2 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/5.0.0 CPython/3.9.19

File hashes

Hashes for ckanext-dcor_depot-0.14.0.tar.gz
Algorithm Hash digest
SHA256 70b9dbd319f003db7e7e3940ef6ee94667b795f3a29249176ecd77d2dfa19e78
MD5 f48cf4df03e4fb7457cb15ac4b606c3d
BLAKE2b-256 b4a5736665afaa324f1d3e0a40bd9dd39229ca3dc4ce5bbb27ebd56fdefdfeba

See more details on using hashes here.

File details

Details for the file ckanext_dcor_depot-0.14.0-py3-none-any.whl.

File metadata

File hashes

Hashes for ckanext_dcor_depot-0.14.0-py3-none-any.whl
Algorithm Hash digest
SHA256 064a328fea372990b665f8c84c32cdd3441351ea3d2d2fb5d8ed3d3a940f8b73
MD5 e2bc96992e08f451fc9bc6c8a03f4558
BLAKE2b-256 6dda46d340efe94184ff736d889a3e87ee2eb03969fdf4d17371ebe3936b6429

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