############
Installation
############

How to install
==============

The Autosubmit code is maintained in *PyPi*, the main source for python packages.

- Pre-requisties: These packages (bash, python2, sqlite3, git-scm > 1.8.2, subversion, dialog and GraphViz) must be available at local host machine.

These packages **argparse**, **python-dateutil**, **pyparsing**, **numpy**, **pydotplus**, **matplotlib**, **paramiko**, **python2-pythondialog**, **portalocker**, **requests**, **typing** must be available for python runtime.

.. important:: (SYSTEM) Graphviz version must be 2.38, 2.40 is not working, others perhaps works. You can check the version using dot -v.

.. important:: dot -v command should contain "dot",pdf,png,svg,xlib  in device section.

.. important:: The host machine has to be able to access HPC's/Clusters via password-less ssh. Make sure that the ssh key is in PEM format `ssh-keygen -t rsa -b 4096 -C "email@email.com" -m PEM`.



To install autosubmit just execute:
::

    pip install autosubmit

or download, unpack and:
::

    python setup.py install

.. hint::
    To check if autosubmit has been installed run ``autosubmit -v.`` This command will print autosubmit's current
    version

.. hint::
    To read autosubmit's readme file, run ``autosubmit readme``

.. hint::
    To see the changelog, use ``autosubmit changelog``

How to configure
================

After installation, you have to configure database and path for Autosubmit.
In order to use the default settings, just create a directory called `autosubmit` in your home directory before running the configure command.
The experiments will be created in this folder, and the database named `autosubmit.db` in your home directory.

::

    autosubmit configure




For advanced options you can add `--advanced` to the configure command. It will allow you to choose different directories (they must exist) for the experiments and database,
as well as configure SMTP server and an email account in order to use the email notifications feature.


::

    autosubmit configure --advanced


.. hint::
    The ``dialog`` (GUI) library is optional. Otherwise the configuration parameters
    will be prompted (CLI). Use ``autosubmit configure -h`` to see all the allowed options.


For installing the database for Autosubmit on the configured folder, when no database is created on the given path, execute:
::

    autosubmit install

.. danger:: Be careful ! autosubmit install will create a blank database.

Lastly, if autosubmit configure doesn't work for you or you need to configure additional info create:

Create or modify /etc/autosubmitrc file or ~/.autosubmitrc with the information as follows:

.. code-block:: ini

    [database]
    path = path to autosubmit db
    filename = autosubmit.db

    [local]
    path = path to experiment folders

    [conf]
    jobs = path to any experiment  jobs conf # If not working on esarchive, you must create one from scratch check the how to.
    platforms = path to any experiment  platform conf # If not working on esarchive, you must create one from scratch check the how to.

    [mail]
    smtp_server = mail.bsc.es
    mail_from = automail@bsc.es

    [structures]
    path =  path to experiment folders

    [globallogs]
    path =  path to global logs (for expid,delete and migrate commands)

    [historicdb]
    path = <experiment_folder>/historic

    [autosubmitapi]
    url = url of Autosubmit API (The API is provided inside the BSC network) 
    # Autosubmit API provides extra information for some Autosubmit functions. It is not mandatory to have access to it to use Autosubmit.

    [hosts]
    whitelist = localhost bscesautosubmit01 bscesautosubmit02 # Add localhost only if you are not on esarchive system

Now you are ready to use Autosubmit !
