Skip to content
/ caomdev Public

fire up a local development CAOM db instance (with associated services)

Notifications You must be signed in to change notification settings

uksrc/caomdev

Folders and files

NameName
Last commit message
Last commit date

Latest commit

1bbf879 · Dec 10, 2024

History

43 Commits
Jul 3, 2024
Dec 4, 2024
Jul 29, 2024
Aug 1, 2024
Jul 3, 2024
Aug 23, 2024
Aug 23, 2024
Jul 31, 2024
Aug 22, 2024
Jul 29, 2024
Aug 9, 2024
Aug 19, 2024

Repository files navigation

Fire up a local development CAOM db instance. This will only create a local instance of the database with the REST API that the https://github.com/uksrc/emerlin2caom can talk to. There is some background detail of the services that need to be set up.

Components

Postgres database

A built version of this has been deployed to docker hub for convience, image can be changed if an update is required stephenlloyd/uksrc:cadc-postgresql-dev. Intended to be a test database only.

CADC's repository https://github.com/opencadc/docker-base/tree/main/cadc-postgresql-dev

  • build an updated version
  • push to docker hub (or equivalent)
  • update docker-compose-dbase.yml

CADC components

Several components that have been developed by OpenCADC are used in this deployment:

Deploying

  1. Install self-signed certificates

    • RootCA.crt in browser and command line. See Ubuntu example and Firefox example for linux reference.
    • Domain for this is https://src-data-repo.co.uk
    • Can be changed but you'll have to create your own certificate & root authority, repeat 1 above, update the nginx.conf and replace the rootCA.crt in each service's config folder (so they can trust each other).
  2. Install Docker (& docker-compose)

    https://docs.docker.com/get-docker/
    https://docs.docker.com/compose/install/

  3. Clone repository

    https://github.com/uksrc/caomdev

  4. Adjust settings See detail.md for information reagrding identity managment, permissions groups & bearer tokens for requests.

  5. Start the postgres db (done separately)

docker-compose -f docker-compose-dbase.yml up -d
  1. Wait for a minute or so to allow the postgres db to start

  2. Start the main services

docker-compose up -d
  1. Stopping the services
docker-compose down
docker-compose -f docker-compose-dbase.yml down

Testing

Each component has a couple of standard 'status' APIs (returns XML):

Get the status of the component(s)

https://<domain>/<component>/availability

Get a list of available APIs

https://<domain>/<component>/capabilities

Can be called like this from the command line (or use the URL in a browser)

curl -k https://src-data-repo.co.uk/torkeep/availability

These should work for the reg, baldur or torkeep components.

List the registry contents

curl -k https://src-data-repo.co.uk/reg/resource-caps

# Should return a list of services that were defined in <em>./config/reg/reg-resource-caps.properties

#First, global services:
ivo://skao.int/reg = https://src-data-repo.co.uk/reg/capabilities  
ivo://skao.int/gms = https://ska-gms.stfc.ac.uk/gms/capabilities  
ivo://skao.int/baldur = https://src-data-repo.co.uk/baldur/capabilities  

Group permissions as defined in ./config/baldur/baldur.properties

Extra info here - https://github.com/opencadc/storage-inventory/tree/main/baldur

curl https://<domain>/baldur/perms?op=grantType&ID=identifier

> curl https://src-data-repo.co.uk/baldur/perms?op=read\&ID=caom:EMERLIN/

# Should return (if found), details of the group

<?xml version="1.0" encoding="UTF-8"?>
<grant type="ReadGrant">
  <expiryDate>2024-08-02T09:30:20.146</expiryDate>
  <anonymousRead>true</anonymousRead>
</grant>

# assetID pattern needs to conform to caom:{collection}/{observationID}

⚠️ Warning: Be cautious of the pattern used to match, see baldur.properties' <entry name>.pattern for the regular expression used to match the search term.


Database submission & retrieval (torkeep service)

https://src-data-repo.co.uk/torkeep/ in a browser for a detailed list of available APIs in a more readable fashion than calling ../torkeep/capabilities

Note A bearer token is required for write and delete requests (shown as "SKA_TOKEN" below), see details.md for user account & bear token information.

> curl https://src-data-repo.co.uk/torkeep/observations
# Should return the list of groups (collections) defined in baldur.properties

EMERLIN

# Inject some data
> curl -v --header "Content-Type: text/xml" --header "authorization: bearer $SKA_TOKEN" -T test_data.xml https://src-data-repo.co.uk/torkeep/observations/EMERLIN/TS8004_C_001_20190801_avg.ms

# Check what's been stored for a named collection 
> curl https://src-data-repo.co.uk/torkeep/observations/EMERLIN
EMERLIN minimal-observation     2024-08-22T10:56:37.252 md5:f1a40291ce1dd85623a43d0c2b3b3758
EMERLIN TS8004_C_001_20190801_avg.ms    2024-08-22T11:05:31.771 md5:260c09954bcb7494e0ca8255aa3ec743

# Delete an entry
> curl -X DELETE --header "authorization: bearer $SKA_TOKEN" -T test_data.xml https://src-data-repo.co.uk/torkeep/observations/EMERLIN/TS8004_C_001_20190801_avg.ms


About

fire up a local development CAOM db instance (with associated services)

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages