## Environment and dependencies - 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/ - To install the orchestrator GUI, you can follow the steps 5 and 6 from the above link. - 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` - ``pip install -e .`` - `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` ## Run - 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``. ## Useful WFO Resources - 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 ### API examples *Note: update IP address in the request to your own where you're running WFO.* **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) Create process that produces a new subscription (CREATE workflow) ``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'``