Merge "Salt-Models: Trigger branches with regex"
diff --git a/docker/swarm/stack/dashboard.yml b/docker/swarm/stack/dashboard.yml
index 2ee123b..934920f 100644
--- a/docker/swarm/stack/dashboard.yml
+++ b/docker/swarm/stack/dashboard.yml
@@ -1,10 +1,12 @@
 parameters:
   _param:
-    docker_grafana_replicas: 1
+    docker_grafana_replicas: 3
     grafana_database_type: sqlite3
     grafana_database_host: localhost
     grafana_database_port: 3306
     grafana_database_password: password
+    grafana_session_directory: /data/sessions
+    grafana_session_life_time: 86400
   docker:
     client:
       stack:
@@ -18,6 +20,8 @@
               image: ${_param:docker_image_grafana}
               ports:
                 - 15013:3000
+              volumes:
+                - /srv/glusterfs/grafana:${_param:grafana_session_directory}
               environment:
                 GF_DATABASE_TYPE: ${_param:grafana_database_type}
                 GF_DATABASE_NAME: grafana
@@ -25,3 +29,6 @@
                 GF_DATABASE_PASSWORD: ${_param:grafana_database_password}
                 GF_DATABASE_HOST: "${_param:grafana_database_host}:${_param:grafana_database_port}"
                 GF_SECURITY_ADMIN_PASSWORD: ${_param:grafana_admin_password}
+                GF_SESSION_PROVIDER: file
+                GF_SESSION_PROVIDER_CONFIG: ${_param:grafana_session_directory}
+                GF_SESSION_LIFE_TIME: ${_param:grafana_session_life_time}
diff --git a/docker/swarm/stack/monitoring.yml b/docker/swarm/stack/monitoring.yml
index 7c03c35..a11024d 100644
--- a/docker/swarm/stack/monitoring.yml
+++ b/docker/swarm/stack/monitoring.yml
@@ -2,6 +2,7 @@
 - service.prometheus.server.container
 - service.prometheus.alertmanager.container
 - service.prometheus.pushgateway.container
+- service.prometheus.remote_storage_adapter.container
 - system.prometheus.server
 - system.prometheus.alertmanager
 parameters:
@@ -15,6 +16,27 @@
               driver_opts:
                 encrypted: 1
           service:
+            remote_storage_adapter:
+              networks:
+                - monitoring
+              deploy:
+                replicas: 1
+                labels:
+                  com.mirantis.monitoring: "remote_storage_adapter"
+                restart_policy:
+                  condition: any
+              labels:
+                com.mirantis.monitoring: "remote_storage_adapter"
+              image: ${_param:docker_image_remote_storage_adapter}
+              ports:
+                - 15015:${prometheus:remote_storage_adapter:bind:port}
+              environment:
+                bind_port: ${prometheus:remote_storage_adapter:bind:port}
+                bind_address: ${prometheus:remote_storage_adapter:bind:address}
+                influxdb_url: ${_param:prometheus_influxdb_url}
+                influxdb_db: ${_param:prometheus_influxdb_db}
+                influxdb_username: ${_param:prometheus_influxdb_username}
+                influxdb_password: ${_param:prometheus_influxdb_password}
             remote_agent:
               networks:
                 - monitoring
diff --git a/glusterfs/client/volume/grafana.yml b/glusterfs/client/volume/grafana.yml
new file mode 100644
index 0000000..bd939c1
--- /dev/null
+++ b/glusterfs/client/volume/grafana.yml
@@ -0,0 +1,13 @@
+parameters:
+  _param:
+    grafana_glusterfs_service_host: ${_param:glusterfs_service_host}
+    glusterfs_node01_address: ${_param:cluster_node01_address}
+    glusterfs_node02_address: ${_param:cluster_node02_address}
+    glusterfs_node03_address: ${_param:cluster_node03_address}
+  glusterfs:
+    client:
+      volumes:
+        grafana:
+          path: /srv/volumes/grafana
+          server: ${_param:grafana_glusterfs_service_host}
+          opts: "defaults,backup-volfile-servers=${_param:glusterfs_node01_address}:${_param:glusterfs_node02_address}:${_param:glusterfs_node03_address}"
diff --git a/glusterfs/server/volume/grafana.yml b/glusterfs/server/volume/grafana.yml
new file mode 100644
index 0000000..f099c99
--- /dev/null
+++ b/glusterfs/server/volume/grafana.yml
@@ -0,0 +1,17 @@
+parameters:
+  glusterfs:
+    server:
+      volumes:
+        grafana:
+          storage: /srv/glusterfs/grafana
+          replica: 3
+          bricks:
+            - ${_param:cluster_node01_address}:/srv/glusterfs/grafana
+            - ${_param:cluster_node02_address}:/srv/glusterfs/grafana
+            - ${_param:cluster_node03_address}:/srv/glusterfs/grafana
+          options:
+            cluster.readdir-optimize: On
+            nfs.disable: On
+            network.remote-dio: On
+            diagnostics.client-log-level: WARNING
+            diagnostics.brick-log-level: WARNING
diff --git a/jenkins/client/job/debian/packages/salt.yml b/jenkins/client/job/debian/packages/salt.yml
index 0e5ab64..c5a6709 100644
--- a/jenkins/client/job/debian/packages/salt.yml
+++ b/jenkins/client/job/debian/packages/salt.yml
@@ -149,6 +149,8 @@
               dist: trusty
             - name: postgresql
               dist: trusty
+            - name: powerdns
+              dist: trusty
             - name: pritunl
               dist: trusty
             - name: prometheus
@@ -259,6 +261,8 @@
               dist: xenial
             - name: glusterfs
               dist: xenial
+            - name: gnocchi
+              dist: xenial
             - name: grafana
               dist: xenial
             - name: graphite
@@ -337,6 +341,8 @@
               dist: xenial
             - name: owncloud
               dist: xenial
+            - name: panko
+              dist: xenial
             - name: postfix
               dist: xenial
             - name: postgresql
@@ -345,6 +351,8 @@
               dist: xenial
             - name: prometheus
               dist: xenial
+            - name: powerdns
+              dist: xenial
             - name: python
               dist: xenial
             - name: rabbitmq
diff --git a/jenkins/client/job/deploy/openstack.yml b/jenkins/client/job/deploy/openstack.yml
index cad1182..c2eb71b 100644
--- a/jenkins/client/job/deploy/openstack.yml
+++ b/jenkins/client/job/deploy/openstack.yml
@@ -34,3 +34,23 @@
             ASK_ON_ERROR:
                 type: boolean
                 default: 'false'
+        deploy-openstack-compute:
+          type: workflow-scm
+          concurrent: true
+          display_name: "Deploy - OpenStack Compute node"
+          scm:
+            type: git
+            url: "${_param:jenkins_gerrit_url}/mk/mk-pipelines"
+            credentials: "gerrit"
+            script: openstack-compute-install.groovy
+          param:
+            SALT_MASTER_URL:
+              type: string
+              default: "${_param:jenkins_salt_api_url}"
+            SALT_MASTER_CREDENTIALS:
+              type: string
+              default: "salt"
+            TARGET_SERVERS:
+              type: string
+              default: ""
+              description: "Salt compound target to match nodes to be updated [*, G@osfamily:debian]."
\ No newline at end of file
diff --git a/jenkins/client/job/deploy/update/saltenv.yml b/jenkins/client/job/deploy/update/saltenv.yml
index 397e3f3..1ce1494 100644
--- a/jenkins/client/job/deploy/update/saltenv.yml
+++ b/jenkins/client/job/deploy/update/saltenv.yml
@@ -5,6 +5,7 @@
   _param:
     jenkins_salt_api_url: "http://${_param:salt_master_host}:6969"
     jenkins_salt_model_name: "salt"
+    jenkins_salt_model_branch: "master"
   jenkins:
     client:
       job_template:
@@ -21,6 +22,7 @@
             scm:
               type: git
               url: "${_param:jenkins_gerrit_url}/salt-models/{{name}}"
+              branch: ${_param:jenkins_salt_model_branch}
               credentials: "gerrit"
               script: Jenkinsfile
             param:
diff --git a/jenkins/client/job/salt-formulas/git-mirrors/2way.yml b/jenkins/client/job/salt-formulas/git-mirrors/2way.yml
index cf39dbd..a170ba9 100644
--- a/jenkins/client/job/salt-formulas/git-mirrors/2way.yml
+++ b/jenkins/client/job/salt-formulas/git-mirrors/2way.yml
@@ -40,6 +40,7 @@
             - name: gitlab
             - name: glance
             - name: glusterfs
+            - name: gnocchi
             - name: grafana
             - name: graphite
             - name: haproxy
@@ -85,8 +86,10 @@
             - name: openvpn
             - name: openvstorage
             - name: owncloud
+            - name: panko
             - name: postfix
             - name: postgresql
+            - name: powerdns
             - name: pritunl
             - name: prometheus
             - name: python
diff --git a/jenkins/client/job/salt-formulas/tests.yml b/jenkins/client/job/salt-formulas/tests.yml
index 68792d4..99ac553 100644
--- a/jenkins/client/job/salt-formulas/tests.yml
+++ b/jenkins/client/job/salt-formulas/tests.yml
@@ -39,6 +39,7 @@
             - name: gitlab
             - name: glance
             - name: glusterfs
+            - name: gnocchi
             - name: grafana
             - name: graphite
             - name: haproxy
@@ -84,8 +85,10 @@
             - name: openvpn
             - name: openvstorage
             - name: owncloud
+            - name: panko
             - name: postfix
             - name: postgresql
+            - name: powerdns
             - name: pritunl
             - name: prometheus
             - name: python
diff --git a/opencontrail/compute/cluster.yml b/opencontrail/compute/cluster.yml
index 375e600..d10b361 100644
--- a/opencontrail/compute/cluster.yml
+++ b/opencontrail/compute/cluster.yml
@@ -20,6 +20,8 @@
       version: ${_param:opencontrail_version}
       disable_flow_collection: true
       enabled: True
+      bind:
+        address: ${_param:single_address}
       discovery:
         host: ${_param:opencontrail_control_address}
       interface:
diff --git a/openldap/client/groups/mirantis.yml b/openldap/client/groups/mirantis.yml
new file mode 100644
index 0000000..003eba0
--- /dev/null
+++ b/openldap/client/groups/mirantis.yml
@@ -0,0 +1,19 @@
+classes:
+  - system.openldap.client.groups
+parameters:
+  openldap:
+    client:
+      entry:
+        groups:
+          entry:
+            mirantis:
+              attr:
+                description: Mirantis Administrators
+                gidNumber: 20002
+                memberUid:
+                  - akomarek
+                  - fpytloun
+                  - jpavlik
+              classes:
+                - posixGroup
+                - top
diff --git a/openldap/client/people/mirantis.yml b/openldap/client/people/mirantis.yml
new file mode 100644
index 0000000..3673783
--- /dev/null
+++ b/openldap/client/people/mirantis.yml
@@ -0,0 +1,64 @@
+#
+# This class defines Mirantis users. To crypt user password, use this command:
+#   echo "{CRYPT}$(mkpasswd --rounds 500000 -m sha-512 --salt `head -c 40 /dev/random | base64 | sed -e 's/+/./g' |  cut -b 10-25` 'password')"
+#
+classes:
+  - system.openldap.client.people
+  - system.openldap.client.groups.mirantis
+parameters:
+  openldap:
+    client:
+      entry:
+        people:
+          entry:
+            jpavlik:
+              attr:
+                uid: jpavlik
+                userPassword: '{CRYPT}$6$rounds=500000$sSdm1peCUw78UsaP$l55AuiLv3j.0avLg.k8B2jM.xBczuf9CMursuS4QUm0ZEUgIZkmToPU1PiaTJB37zGgv2ubAYbr2oME7.TX8G1'
+                uidNumber: 20051
+                gidNumber: ${openldap:client:entry:groups:entry:mirantis:attr:gidNumber}
+                gecos: "Jakub Pavlik"
+                givenName: Jakub
+                sn: Pavlik
+                homeDirectory: /home/jpavlik
+                loginShell: /bin/bash
+                mail: jpavlik@mirantis.com
+              classes:
+                - posixAccount
+                - inetOrgPerson
+                - top
+                - shadowAccount
+            akomarek:
+              attr:
+                uid: akomarek
+                userPassword: '{CRYPT}$6$rounds=500000$sSdm1peCUw78UsaP$l55AuiLv3j.0avLg.k8B2jM.xBczuf9CMursuS4QUm0ZEUgIZkmToPU1PiaTJB37zGgv2ubAYbr2oME7.TX8G1'
+                uidNumber: 20052
+                gidNumber: ${openldap:client:entry:groups:entry:mirantis:attr:gidNumber}
+                gecos: "Ales Komarek"
+                givenName: Ales
+                sn: Komarek
+                homeDirectory: /home/akomarek
+                loginShell: /bin/bash
+                mail: akomarek@mirantis.com
+              classes:
+                - posixAccount
+                - inetOrgPerson
+                - top
+                - shadowAccount
+            fpytloun:
+              attr:
+                uid: fpytloun
+                userPassword: '{CRYPT}$6$rounds=500000$T84bEG26yetA1384$.Zh2GZu6pjWdS3hA2WVFzMnWe/hD15IeNIiGM.clq4XpKkwzbNeLbIs7F21vMsxzdOs0R8P8fvjepVHyrPrjQ.'
+                uidNumber: 20053
+                gidNumber: ${openldap:client:entry:groups:entry:mirantis:attr:gidNumber}
+                gecos: "Filip Pytloun"
+                givenName: Filip
+                sn: Pytloun
+                homeDirectory: /home/fpytloun
+                loginShell: /bin/bash
+                mail: fpytloun@mirantis.com
+              classes:
+                - posixAccount
+                - inetOrgPerson
+                - top
+                - shadowAccount
diff --git a/prometheus/server/remote_write/docker.yml b/prometheus/server/remote_write/docker.yml
new file mode 100644
index 0000000..356f31f
--- /dev/null
+++ b/prometheus/server/remote_write/docker.yml
@@ -0,0 +1,8 @@
+parameters:
+  prometheus:
+    server:
+      config:
+        remote_write:
+          docker_remote_write:
+            enabled: true
+            url: http://monitoring_remote_storage_adapter:${prometheus:remote_storage_adapter:bind:port}/write
diff --git a/telegraf/agent/remote.yml b/telegraf/agent/remote.yml
index ecbae25..c634d54 100644
--- a/telegraf/agent/remote.yml
+++ b/telegraf/agent/remote.yml
@@ -3,6 +3,7 @@
 parameters:
   telegraf:
     remote_agent:
+      omit_hostname: true
       dir:
         config: /srv/volumes/local/telegraf
         config_d: /srv/volumes/local/telegraf/telegraf.d