Metadata-Version: 1.1
Name: iotronic
Version: 0.4.17
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
Description: ===============================
        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::
        
            openstack service create iot --name Iotronic
            openstack user create --password-prompt iotronic
            openstack role add --project service --user iotronic admin
            openstack role create admin_iot_project
            openstack role create manager_iot_project
            openstack role create user_iot
            openstack role add --project service --user iotronic admin_iot_project
        
            openstack endpoint create --region RegionOne iot public http://IP_IOTRONIC:8812
            openstack endpoint create --region RegionOne iot internal http://IP_IOTRONIC:8812
            openstack endpoint create --region RegionOne iot admin http://1IP_IOTRONIC:8812
        
        
        Configuring Iotronic Host 
        --------------------------
        
        Crossbar
        ^^^^^^^^^^^^^^^^^^^^^
        Install crossbar on the Iotronic host::
        
            apt install python-pip python3-pip libsnappy-dev libssl-dev libffi-dev python-dev
            pip3 install python-snappy crossbar
        
        Configuration::
        
            mkdir /etc/crossbar
            nano /etc/crossbar/config.json
        
        **config.json**::
        
            {
               "version": 2,
               "controller": {
               },
               "workers": [
                  {
                     "type": "router",
                     "realms": [
                        {
                           "name": "s4t",
                           "roles": [
                              {
                                 "name": "anonymous",
                                 "permissions": [
                                    {
                                       "uri": "*",
                                       "allow": {
                                            "publish": true,
                                            "subscribe": true,
                                            "call": true,
                                            "register": true
                                        }
                                    }
                                 ]
                              }
                           ]
                        }
                     ],
                     "transports": [
                        {
                            "type": "websocket",
                            "endpoint": {
                              "type": "tcp",
                              "port": 8181
                            },
                            "debug":true,
                            "options":{
                              "enable_webstatus":true,
                              "fail_by_drop": true,
                              "open_handshake_timeout": 2500,
                              "close_handshake_timeout": 1000,
                              "auto_ping_interval": 10000,
                              "auto_ping_timeout": 5000,
                              "auto_ping_size": 4
                            }
                        }
                     ]
                  }
               ]
            }
        
        Create a systemd service file /etc/systemd/system/crossbar.service::
        
            nano /etc/systemd/system/crossbar.service
        
        **crossbar.service**::
        
            [Unit]
            Description=Crossbar.io
            After=network.target
        
            [Service]
            Type=simple
            User=root
            Group=root
            StandardInput=null
            StandardOutput=journal
            StandardError=journal
            ExecStart=/usr/local/bin/crossbar start --cbdir=/etc/crossbar/
            ExecStop=/usr/local/bin/crossbar stop --cbdir=/etc/crossbar/
            Restart=on-abort
            [Install]
            WantedBy=multi-user.target
        
        Iotronic Installation 
        ^^^^^^^^^^^^^^^^^^^^^
        Get the source::
        
            git clone https://github.com/openstack/iotronic.git
        
        add the user iotronic::
            
            useradd -m -d /var/lib/iotronic iotronic
        
        and Iotronic::
        
            cd iotronic
            pip3 install -r requirements.txt 
            python3 setup.py install
        
        create a log dir::
        
            mkdir -p /var/log/iotronic
            chown -R iotronic:iotronic /var/log/iotronic/
        
        edit ``/etc/iotronic/iotronic.conf`` with the correct configuration::
            
            nano /etc/iotronic/iotronic.conf 
        
        There is just one wamp-agent and it must be set as the registration agent::
         
            register_agent = True
        
        populate the database::
        
            iotronic-dbsync
        
        
        API Service Configuration
        ^^^^^^^^^^^^^^^^^^^^^^^^^^
        Install apache and the other components::
        
            sudo apt-get install apache2 python-setuptools libapache2-mod-wsgi-py3
        
        create log directory::
        
            touch /var/log/iotronic/iotronic-api_error.log
            touch /var/log/iotronic/iotronic-api_access.log
            chown -R iotronic:iotronic /var/log/iotronic/
        
        copy the config apache2 file::
        
            cp etc/apache2/iotronic.conf /etc/apache2/sites-available/iotronic.conf
        
        enable the configuration::
        
            a2ensite /etc/apache2/sites-available/iotronic.conf
        
        restart apache::
          
          systemctl restart apache2
        
        
        Starting
        ^^^^^^^^^^^^^^^^^^^^^
        On the wamp agent::
        
          systemctl enable iotronic-wamp-agent
          systemctl start iotronic-wamp-agent
        
        On the conductor::
        
          systemctl enable iotronic-conductor
          systemctl start iotronic-conductor
        
        
        Board Side 
        ----------------------
        
        Follow the `iotronic-lightning-rod README <https://opendev.org/x/iotronic-lightning-rod>`_
        
        
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.6
Classifier: Programming Language :: Python :: 3.7
Classifier: Programming Language :: Python :: 3.8
