Metadata-Version: 2.1
Name: task-manager
Version: 6.4.0
Summary: The Task Manager is a server that tracks and dispenses tasks for clients to perform.
Home-page: https://gitlab.com/radiology/infrastructure/task-manager
Author: H.C. Achterberg, M. Koek, A. Versteeg, H. Vrooman
Author-email: h.achterberg@erasmusmc.nl, m.koek@erasmusmc.nl, a.versteeg@erasmusmc.nl, h.vrooman@erasmusmc.nl
License: Apache 2.0
Platform: UNKNOWN
Classifier: Development Status :: 4 - Beta
Classifier: Intended Audience :: Developers
Classifier: Intended Audience :: Science/Research
Classifier: Intended Audience :: Healthcare Industry
Classifier: Intended Audience :: Information Technology
Classifier: Intended Audience :: Education
Classifier: License :: OSI Approved :: Apache Software License
Classifier: Natural Language :: English
Classifier: Operating System :: OS Independent
Classifier: Programming Language :: Python :: 3.6
Classifier: Programming Language :: Python :: 3.7
Classifier: Programming Language :: Python :: 3.8
Classifier: Programming Language :: Python :: 3 :: Only
Classifier: Topic :: Scientific/Engineering :: Information Analysis
Classifier: Topic :: System :: Logging
Classifier: Topic :: Utilities
Description-Content-Type: text/x-rst
License-File: LICENSE

The TaskListManager keeps track of lists of tasks that users should support. It
has a REST interface to access tasks and update them.

Documentation
=============

The Task Manager is documented at https://idsp-task-manager.readthedocs.io/


Installation on a Debian or Ubuntu Server
=========================================

Prerequisites
-------------

::

   # apt-get install -y build-essential python-dev python-pip mercurial mysql-server libmysqlclient-dev nginx
   # pip install virtualenv
   # adduser taskman
   # su taskman
   (taskman)$ mkdir ~/taskmanager && cd ~/taskmanager
   (taskman)$ virtualenv --prompt="(taskman)" venv
   (taskman)$ ln -s venv/bin/activate
   (taskman)$ source activate
   (taskman)$ hg clone https://bitbucket.org/bigr_erasmusmc/taskmanager
   (taskman)$ cd taskmanager
   (taskman)$ pip install -e .


Mysql database initialization
-----------------------------

::

    # mysql -p  [use -p if you have set a root password, which you should done anyway]
    mysql> CREATE USER 'taskmanager'@'localhost' IDENTIFIED BY 'blaat123';
    mysql> CREATE DATABASE taskmanager;
    mysql> GRANT ALL ON taskmanager.* TO 'taskmanager'@'localhost';
    (taskman)$ python ./create_config.py -d taskmanager -u taskmanager -p blaat123
    (taskman)$ taskmanager-db-init [migrations should be implemented]




Mysql dummy data (optional)
---------------------------

::

    (taskman)$ taskmanager-data-init


Running a test instance of the taskmanger
-----------------------------------------

::

    (taskman)$ taskmanager-run



Deploy on a production server
-----------------------------

::

    (taskman)$ pip install -r requirements_production.txt

    # service nginx start
    # rm /etc/nginx/sites-enabled/default
    # cp resources/nginx/taskmanager /etc/nginx/sites-available/taskmanager
    # ln -s /etc/nginx/sites-available/taskmanager /etc/nginx/sites-enabled/taskmanager


Startup scripts
~~~~~~~~~~~~~~~

Find out which process management system you are using: ``# stat /proc/1/exe``. If this outputs something along the lines of '/lib/systemd/systemd' skip to the systemd version otherwise you probably are running on an upstart system. See [this StackExchange post](http://unix.stackexchange.com/questions/196166/how-to-find-out-if-a-system-uses-sysv-upstart-or-systemd-initsystem) for more details.
Below are configurations for the upstart and systemd provided. (Make sure you should only follow 1 of those).

systemd
*******

There is script that is called from the systemd unit in ``resources/systemd/taskmanager-run``. If you have changed the install location in the first steps please make sure to update this file accordingly.

::

    # cp resources/systemd/taskmanager.service /etc/systemd/system/taskmanager.service
    # systemctl enable taskmanager.service
    # systemctl start taskmanager
    # systemctl restart nginx
    
    
upstart
*******

If you have changed the install location in the first steps please make sure to update the upstart file accordingly.

::

    # cp resources/upstart/taskmanager.conf /etc/systemd/system/taskmanager.conf
    # initctl reload-configuration
    # service taskmanager start
    # service nginx restart


You can now reach the taskmanager on port 80 from your network.

Add authentication to the taskmanager (optional)
------------------------------------------------

You can add Basic Authentication to the taskmanager by creating credentials and uncommenting 2 lines from the provided nginx config

::

    # apt install apache2-utils
    # htpasswd -c /etc/nginx/.htpasswd username

Uncomment ``auth_basic ...`` and ``auth_basic_user_file ...`` in the nginx config (``/etc/nginx/sites-available/taskmanager``).

::

    # systemctl restart nginx


Add sentry.io to the taskmanager
--------------------------------

Install the dependencies in the taskmanager virtualenv:

::

    (taskman)$ pip install raven[flask]

Create a drop-in configuration for the systemd unit:

::

    # mkdir /etc/systemd/system/taskmanager.service.d
    # touch /etc/systemd/system/taskmanager.service.d/environment.conf
    # vim /etc/systemd/system/taskmanager.service.d/environment.conf

Add the following to the file and close it:

::

    [service]
    Environment="SENTRY_DSN=YOUR_SENTRY_DSN"

::

    # systemctl daemon-reload
    # systemctl restart taskmanager


