Metadata-Version: 2.1
Name: iotronic
Version: 0.3.0
Summary: IoTronic is an Internet of Things resource management service for OpenStack clouds.
Home-page: https://github.com/openstack/iotronic
Author: OpenStack
Author-email: openstack-dev@lists.openstack.org
License: UNKNOWN
Platform: UNKNOWN
Classifier: Environment :: OpenStack
Classifier: Intended Audience :: Information Technology
Classifier: Intended Audience :: System Administrators
Classifier: License :: OSI Approved :: Apache Software License
Classifier: Operating System :: POSIX :: Linux
Classifier: Programming Language :: Python
Classifier: Programming Language :: Python :: 3
Classifier: Programming Language :: Python :: 3.5
Requires-Dist: pbr (!=2.1.0,>=2.0.0)
Requires-Dist: eventlet (!=0.18.3,!=0.20.1,>=0.18.2)
Requires-Dist: oslo.config (>=5.2.0)
Requires-Dist: oslo.log (>=3.36.0)
Requires-Dist: oslo.concurrency (>=3.26.0)
Requires-Dist: oslo.policy (>=1.35.0)
Requires-Dist: oslo.messaging (>=6.3.0)
Requires-Dist: oslo.db (>=4.27.0)
Requires-Dist: paramiko (>=2.0.0)
Requires-Dist: SQLAlchemy (!=1.1.5,!=1.1.6,!=1.1.7,!=1.1.8,>=1.0.10)
Requires-Dist: keystonemiddleware (>=4.17.0)
Requires-Dist: autobahn (>=0.10.1)
Requires-Dist: python-neutronclient (>=6.7.0)
Requires-Dist: pecan (!=1.0.2,!=1.0.3,!=1.0.4,!=1.2,>=1.0.0)
Requires-Dist: PyMySQL (>=0.7.6)
Requires-Dist: osprofiler (>=1.5.0)
Requires-Dist: WSME (>=0.8)

===============================
IoTronic
===============================

IoTronic is an Internet of Things resource management service for OpenStack clouds.

IoTronic allows to manage Internet of Things resources as part of an OpenStack data center.

* Free software: Apache license
* Source: http://git.openstack.org/git/openstack/iotronic
* Bugs: http://bugs.launchpad.net/iotronic

.. contents:: Contents:
   :local:

Basic scenario
----------------------
For this installation of the Iotronic Service we are considering a scenario with the following hosts and softwares:

- Controller ( **Ubuntu linux**): Mysql, Keystone, Rabbitmq
- Iotronic ( **Ubuntu linux** ): Iotronic-conductor, iotronic-wamp-agent, crossbar
- Board: iotronic-lightining-rod

Controller host setup
----------------------
According to the `Openstack Documentation <https://docs.openstack.org/>`_ install the following softwares on the controller host:

- SQL database
- Message queue
- Memcached
- Keystone

Creation of the database
----------------------
On the dbms create the iotronic db and configure the access for the user iotronic::

    MariaDB [(none)]> CREATE DATABASE iotronic;
    MariaDB [(none)]> GRANT ALL PRIVILEGES ON iotronic.* TO iotronic@'localhost' IDENTIFIED BY ‘IOTRONIC_DBPASS’;
    MariaDB [(none)]> GRANT ALL PRIVILEGES ON iotronic.* TO iotronic@'%' IDENTIFIED BY ‘IOTRONIC_DBPASS’;

Add the user and the enpoints on Keystone::

    source adminrc
    openstack service create iot --name Iotronic
    openstack user create --password-prompt iotronic

    openstack role add --project service --user iotronic admin
    openstack role add admin_iot_project
    openstack role add manager_iot_project
    openstack role add user_iot

    openstack endpoint create --region RegionOne iot public http://IP_IOTRONIC:1288
    openstack endpoint create --region RegionOne iot internal http://IP_IOTRONIC:1288
    openstack endpoint create --region RegionOne iot admin http://1IP_IOTRONIC:1288


Configuring Iotronic Host 
----------------------

Crossbar
^^^^^^^^^^^^^^^^^^^^^
Install crossbar on the Iotronic host following the `official guide <http://crossbar.io/docs/Installation-on-Ubuntu-and-Debian/>`_


Iotronic Installation 
^^^^^^^^^^^^^^^^^^^^^
Get the source::

    git clone https://github.com/openstack/iotronic.git

install the python-mysqldb::

    sudo apt-get install python-mysqldb 

and Iotronic::

    cd iotronic
    sudo pip install -r requirements.txt
    sudo pip install twisted
    sudo pip install paramiko
    sudo python setup.py install

create a log dir::

    mkdir -p /var/log/iotronic

populate the database::

    cd iotronic/utils
    ./loaddb MYSQL_IP_ON_CONTROLLER

API Service Configuration
^^^^^^^^^^^^^^^^^^^^^
Install apache and the other components::

sudo apt-get install apache2 python-setuptools libapache2-mod-wsgi libssl-dev

create ``/etc/apache2/conf-enabled/iotronic.conf`` and copy the following content::

    Listen 1288
    <VirtualHost *:1288>
        WSGIDaemonProcess iotronic 
        #user=root group=root threads=10 display-name=%{GROUP}
        WSGIScriptAlias / /var/www/cgi-bin/iotronic/app.wsgi

        #SetEnv APACHE_RUN_USER stack
        #SetEnv APACHE_RUN_GROUP stack
        WSGIProcessGroup iotronic

        ErrorLog /var/log/iotronic/iotronic-api_error.log
        LogLevel debug
        CustomLog /var/log/iotronic/iotronic-api_access.log combined

        <Directory /etc/iotronic>
            WSGIProcessGroup iotronic
            WSGIApplicationGroup %{GLOBAL}
            AllowOverride All
            Require all granted
        </Directory>
    </VirtualHost>

edit ``/etc/iotronic/iotronic.conf`` with the correct configuration.

There is just one wamp-agent and it must be set as the registration agent::

  register_agent = True

restart apache::

  systemctl restart apache2

Start the service (better use screen)::

  screen -S conductor
  iotronic-conductor

  screen -S agent
  iotronic-wamp-agent

Board Side 
----------------------

Follow the `iotronic-lightning-rod README <https://github.com/openstack/iotronic-lightning-rod/blob/master/README.rst>`_



