Skip to content
Snippets Groups Projects
README.md 2.94 KiB
Newer Older
JORGE SASIAIN's avatar
JORGE SASIAIN committed
## Environment and dependencies
JORGE SASIAIN's avatar
JORGE SASIAIN committed

JORGE SASIAIN's avatar
JORGE SASIAIN committed
- Install python 3.10 if you don't have it already:
	- ``add-apt-repository ppa:deadsnakes/ppa``
	- ``apt install python3.10 python3.10-distutils``
- Follow Steps 1 and 2 from here to install dependencies and setup DB: https://workfloworchestrator.org/orchestrator-core/workshops/beginner/debian/
JORGE SASIAIN's avatar
JORGE SASIAIN committed
- To install the orchestrator GUI, you can follow the steps 5 and 6 from the above link.
JORGE SASIAIN's avatar
JORGE SASIAIN committed
- Create a virtualenv:
	- ``source /usr/share/virtualenvwrapper/virtualenvwrapper.sh``
	- ``mkvirtualenv --python python3.10 gso``
- To use the virtualenv:
	- `source /usr/share/virtualenvwrapper/virtualenvwrapper.sh`
	- `workon gso`

## Install

Do all of this inside the virtualenv.
- Clone this repo and ``cd`` into it
- ``pip install -r requirements.txt`` 
	- If you get an error because you pip version is too old, run this: `curl -sS https://bootstrap.pypa.io/get-pip.py | python3.10`
Erik Reid's avatar
Erik Reid committed
- ``pip install -e .``
JORGE SASIAIN's avatar
JORGE SASIAIN committed
- `cd` into `gso` directory and create ``oss-params.json`` based on the ``oss-params-example.json`` file.
- Export the oss-params file: ``export OSS_PARAMS_FILENAME="/path/to/oss-params.json"``
- Upgrade DB to latest revision: `PYTHONPATH=. python main.py db upgrade heads`
JORGE SASIAIN's avatar
JORGE SASIAIN committed

JORGE SASIAIN's avatar
JORGE SASIAIN committed
## Run
JORGE SASIAIN's avatar
JORGE SASIAIN committed

JORGE SASIAIN's avatar
JORGE SASIAIN committed
- The core of workflow orchestrator can be started with ``uvicorn --host 0.0.0.0 --port 8080 main:app`` from inside the ``gso`` directory of this repo.
- The GUI can be started with ``yarn start``.
JORGE SASIAIN's avatar
JORGE SASIAIN committed
## Useful WFO Resources
JORGE SASIAIN's avatar
JORGE SASIAIN committed

JORGE SASIAIN's avatar
JORGE SASIAIN committed
- WFO API (Swagger): https://workfloworchestrator.org/orchestrator-core/architecture/application/api/
- WFO API (repo): https://github.com/workfloworchestrator/orchestrator-core/tree/main/orchestrator/api/api_v1/endpoints
- Carolina notes:
https://wiki.geant.org/pages/viewpage.action?pageId=562921625
JORGE SASIAIN's avatar
JORGE SASIAIN committed

JORGE SASIAIN's avatar
JORGE SASIAIN committed
### API examples
JORGE SASIAIN's avatar
JORGE SASIAIN committed

JORGE SASIAIN's avatar
JORGE SASIAIN committed
*Note: update IP address in the request to your own where you're running WFO.*
JORGE SASIAIN's avatar
JORGE SASIAIN committed

JORGE SASIAIN's avatar
JORGE SASIAIN committed
**Creating subscriptions** (look at initial_input_form_generator method of the workflow to find what properties need to be passed in the data of the POST request)
JORGE SASIAIN's avatar
JORGE SASIAIN committed

JORGE SASIAIN's avatar
JORGE SASIAIN committed
Create process that produces a new subscription (CREATE workflow)
JORGE SASIAIN's avatar
JORGE SASIAIN committed

JORGE SASIAIN's avatar
JORGE SASIAIN committed
``curl -X POST -H "Content-Type: application/json" http://10.98.1.62:8080/api/processes/create_trunk --data '[{"product": "321045fc-21ec-476b-b67b-5f211e47c3d7"},{"trunk_name": "mytrunkfromapi", "geant_s_sid": "a1b2c3"}]'``

Create process that manipulates the state of a subscription (TERMINATE workflow)

``curl -X POST -H "Content-Type: application/json" http://10.98.1.62:8080/api/processes/terminate_trunk --data '[{"subscription_id": "910e7044-c427-46d1-afc3-7817e221d45d"}, {"are_you_sure": "yes"}]'``

**Deleting subscriptions** (not the same as running a TERMINATE workflow for a subscription, but to actually erase it from the WFO database)

Delete a subscription:

``curl -X 'DELETE' 'http://10.98.1.62:8080/api/subscriptions/3f16532b-0a48-4fe3-802a-36b3f54eed0e'``

To do the above, you first have to delete the processes first:

``curl -X 'DELETE' 'http://10.98.1.62:8080/api/processes/7447a3e9-7c58-4ae7-8804-c0a75c39c924'``