
=====================
Generic system models
=====================

This repo contains general reclass system level of salt model. It is to be
used along with service models and concrete cluster deployment model.

Network configuration
=====================

Enable SR-IOV support
---------------------

Include class at `cluster.<name>.openstack.compute`

.. code-block:: yaml

  - system.nova.compute.nfv.sriov

For single SR-IOV interface setup you can set parameters:
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

`sriov_nic01_device_name`
  Name of the Physical Function interface (pF)

`sriov_nic01_numvfs`
  Number of Virtual Functions (VF), for number of
  supported VF check documentation for your network interface card.

`sriov_nic01_physical_network`
  Default **physnet1**, label for physical network the interface belongs to.

`sriov_unsafe_interrupts`
  Default **False**, needs to be set **True** if your hw platform does not
  support interrupt remapping.


Multiple SR-IOV interface setup:
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

By default, the metadata model contains configuration for 1 NIC
dedicated for SR-IOV, so we need to setup network interfaces like in the
following example.

.. code-block:: yaml

      ...
        nova:
          compute:
            sriov:
              sriov_nic01:
                devname: eth1
                physical_network: physnet3
              sriov_nic02:
                devname: eth2
                physical_network: physnet4
              sriov_nic03:
                devname: eth3
                physical_network: physnet3
              sriov_nic04:
                devname: eth4
                physical_network: physnet6
        linux:
          system:
            kernel:
              sriov: True
              unsafe_interrupts: False
            rc:
              local: |
                #!/bin/sh -e
                # Enabling 7 VFs on eth1 PF
                echo 7 > /sys/class/net/eth1/device/sriov_numvfs; sleep 2; ip link set eth1 up
                # Enabling 15 VFs on eth2 PF
                echo 15 > /sys/class/net/eth2/device/sriov_numvfs; sleep 2; ip link set eth2 up
                # Enabling 15 VFs on eth3 PF
                echo 15 > /sys/class/net/eth3/device/sriov_numvfs; sleep 2; ip link set eth3 up
                # Enabling 7 VFs on eth4 PF
                echo 7 > /sys/class/net/eth4/device/sriov_numvfs; sleep 2; ip link set eth4 up
                exit 0

Grafana
=======

Configure Grafana client
------------------------

The grafana.client talks to Grafana server to create datasource(s) and install
Grafana plugin(s).

User models must first include this class and define corresponding parameters:

- grafana.client
  - grafana_protocol (default: http)
  - grafana_address
  - grafana_port (default: 3000)
  - grafana_user
  - grafana_password

Then include datasource(s) and define corresponding parameters:

- grafana.client.datasource.influxdb
  - grafana_influxdb_address
  - grafana_influxdb_port
  - grafana_influxdb_user
  - grafana_influxdb_password
  - grafana_influxdb_database
  - grafana_influxdb_is_default (default true)

- grafana.client.datasource.prometheus
  - grafana_prometheus_address
  - grafana_prometheus_port
  - grafana_prometheus_is_default (default true)

Backward compatiblity
---------------------

The class **grafana.client.single** configures grafana client and an InfluxDB
datasource. This is the legacy of LMA (aka StackLight) integration with Grafana
and InfluxDB.

Nagios Monitoring
=================

Configure Hosts dynamically
---------------------------

The nagios formula looks up grains.items throught Salt mines to discover hosts.
There are two different parameters that tell the nagios formula how to determine
the hosts' IP address:

- nagios_monitoring_network: IP subnet(s) in CIDR notation (can be a list)
- nagios_monitoring_interface: interface name(s). Default ['eth0', 'ens3'].

'nagios_monitoring_network' parameter takes precedence over 'nagios_monitoring_interface' list.
