Sign inSign up

denbicloud/cloud-api

By denbicloud

Updated over 3 years ago

A django based REST layer.

Image
0

10K+

denbicloud/cloud-api repository overview

Development

For development, the API is addressed through an apache reverse proxy, which secures authentication via oidc. Apache is started using a docker container running on port 8000.

  1. Clone the cloud-api repository and change into development branch with

    git clone -b dev https://github.com/deNBI/cloud-api.git
    cd cloud-api/app
    
  2. Place client.pem and CA.pem(https://github.com/deNBI/cloud-portal/tree/master/config/keys) in cloud-api/app/keys.

  3. In order to start the API you have to copy the setEnv.sh.in to setEnv.sh and set the different environment variables in the script.

  4. Makefile

    There are several make commands available, you will find an overview with documentation running:

    make help
    

    To start the API you just need to run

    make dev-build
    

    or

    make dev
    

    You can now reach the django developement server locally with http://localhost:8000.

    Changes to the API are updated on the run!

Compute Center

To allocate groups to the resources of facilitys you need to add the information of the new compute center to the Database via django-admin.

You can find the different ResourceIDs of the resources of your facility in the Perun GUI, on the bottom right is a small button which can open extended settings. If you click it you can see the different ID's in the resource overview of the facility.

Celery

You can start a redis container and your celery tasks scheduling defined in the celery config with:

make start_celery

Celery automatically detects tasks in a project across modules when they are located in a tasks.py file. It is important to specify the module in the decorator of the new task so that the tasks can be detected.

@shared_task(name='projects.check_lifetime')
def check_lifetime():
...

Then the tasks are detected automatically and can be added to the beat scheduler in the celery config e.g. as periodic tasks:

CELERY_BEAT_SCHEDULE = {
    'lifetime_check': {
        'task': 'projects.check_lifetime',
        'schedule': crontab(minute=0, hour=9),
        # 'schedule': 30.0,
}, }

If you want to know how to create a task visit First steps with celery.

Tag summary

Content type

Image

Digest

sha256:42c9ff4f1

Size

643.2 MB

Last updated

over 3 years ago

docker pull denbicloud/cloud-api:dev