Merge "Remove mongo keepalived, to resolve openstack telemetry conflict"
diff --git a/docker/swarm/service/dashboard/grafana_server.yml b/docker/swarm/service/dashboard/grafana_server.yml
index 4ed587e..5da0164 100644
--- a/docker/swarm/service/dashboard/grafana_server.yml
+++ b/docker/swarm/service/dashboard/grafana_server.yml
@@ -1,10 +1,20 @@
 parameters:
+  _param:
+    grafana_database_type: sqlite3
+    grafana_database_host: localhost
+    grafana_database_port: 3306
+    grafana_database_password: password
   docker:
     client:
       service:
         grafana_server:
           replica: 1
           environment:
+            GF_DATABASE_TYPE: ${_param:grafana_database_type}
+            GF_DATABASE_NAME: grafana
+            GF_DATABASE_USER: grafana
+            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}
           restart:
             condition: any
diff --git a/docker/swarm/stack/dashboard.yml b/docker/swarm/stack/dashboard.yml
index 5621d8a..e7667a2 100644
--- a/docker/swarm/stack/dashboard.yml
+++ b/docker/swarm/stack/dashboard.yml
@@ -1,4 +1,9 @@
 parameters:
+  _param:
+    grafana_database_type: sqlite3
+    grafana_database_host: localhost
+    grafana_database_port: 3306
+    grafana_database_password: password
   docker:
     client:
       stack:
@@ -13,4 +18,9 @@
               ports:
                 - 15013:3000
               environment:
+                GF_DATABASE_TYPE: ${_param:grafana_database_type}
+                GF_DATABASE_NAME: grafana
+                GF_DATABASE_USER: grafana
+                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}
diff --git a/jenkins/client/job/debian/packages/heat/resources.yml b/jenkins/client/job/debian/packages/heat/resources.yml
index d167434..01033ad 100644
--- a/jenkins/client/job/debian/packages/heat/resources.yml
+++ b/jenkins/client/job/debian/packages/heat/resources.yml
@@ -68,7 +68,7 @@
                 default: "${_param:jenkins_aptly_api_url}"
               APTLY_REPO:
                 type: string
-                default: "{{os}}-{{dist}}"
+                default: "{{os}}-{{dist}}-extra"
               OS:
                 type: string
                 default: "{{os}}"
@@ -80,4 +80,6 @@
                 default: "amd64"
               UPLOAD_APTLY:
                 type: boolean
-                default: 'true'
\ No newline at end of file
+                default: 'true'
+              PRE_BUILD_SCRIPT:
+                type: text
diff --git a/jenkins/client/job/debian/packages/horizon/modules.yml b/jenkins/client/job/debian/packages/horizon/modules.yml
index 359ab89..235c84c 100644
--- a/jenkins/client/job/debian/packages/horizon/modules.yml
+++ b/jenkins/client/job/debian/packages/horizon/modules.yml
@@ -53,6 +53,42 @@
               dist: xenial
               os_version: ocata
               branch: stable/ocata
+            # Trusty
+            - name: horizon-jenkins-dashboard
+              os: ubuntu
+              dist: trusty
+              os_version: liberty
+              branch: stable/liberty
+            # Xenial
+            - name: horizon-jenkins-dashboard
+              os: ubuntu
+              dist: xenial
+              os_version: liberty
+              branch: stable/liberty
+            # Trusty
+            - name: horizon-telemetry-dashboard
+              os: ubuntu
+              dist: trusty
+              os_version: liberty
+              branch: stable/liberty
+            # Xenial
+            - name: horizon-telemetry-dashboard
+              os: ubuntu
+              dist: xenial
+              os_version: liberty
+              branch: stable/liberty
+            # Trusty
+            - name: horizon-telemetry-dashboard
+              os: ubuntu
+              dist: trusty
+              os_version: mitaka
+              branch: stable/mitaka
+            # Xenial
+            - name: horizon-telemetry-dashboard
+              os: ubuntu
+              dist: xenial
+              os_version: mitaka
+              branch: stable/mitaka
           template:
             discard:
               build:
diff --git a/jenkins/client/job/deploy/update/init.yml b/jenkins/client/job/deploy/update/init.yml
index af87dcf..a65d440 100644
--- a/jenkins/client/job/deploy/update/init.yml
+++ b/jenkins/client/job/deploy/update/init.yml
@@ -2,3 +2,4 @@
   - system.jenkins.client.job.deploy.update.package
   - system.jenkins.client.job.deploy.update.config
   - system.jenkins.client.job.deploy.update.saltenv
+  - system.jenkins.client.job.deploy.update.upgrade
diff --git a/jenkins/client/job/deploy/update/upgrade.yml b/jenkins/client/job/deploy/update/upgrade.yml
new file mode 100644
index 0000000..81a7b16
--- /dev/null
+++ b/jenkins/client/job/deploy/update/upgrade.yml
@@ -0,0 +1,25 @@
+#
+# Jobs to update packages on given Salt master environment
+#
+parameters:
+  _param:
+    jenkins_salt_api_url: "http://${_param:salt_master_host}:6969"
+  jenkins:
+    client:
+      job:
+        deploy-upgrade-control:
+          type: workflow-scm
+          concurrent: true
+          display_name: "Deploy - upgrade control VMs"
+          scm:
+            type: git
+            url: "${_param:jenkins_gerrit_url}/mk/mk-pipelines"
+            credentials: "gerrit"
+            script: openstack-control-upgrade.groovy
+          param:
+            SALT_MASTER_URL:
+              type: string
+              default: "${_param:jenkins_salt_api_url}"
+            SALT_MASTER_CREDENTIALS:
+              type: string
+              default: "salt"
diff --git a/jenkins/client/job/opencontrail/build/generic.yml b/jenkins/client/job/opencontrail/build/generic.yml
index a26472b..cd8a132 100644
--- a/jenkins/client/job/opencontrail/build/generic.yml
+++ b/jenkins/client/job/opencontrail/build/generic.yml
@@ -49,6 +49,18 @@
               branch: R3.2
               ppa: mirantis-opencontrail/opencontrail-3.2
               upload_source_package: true
+            - buildname: oc40
+              os: ubuntu
+              dist: trusty
+              branch: R4.0
+              ppa: mirantis-opencontrail/opencontrail-4.0
+              upload_source_package: false
+            - buildname: oc40
+              os: ubuntu
+              dist: xenial
+              branch: R4.0
+              ppa: mirantis-opencontrail/opencontrail-4.0
+              upload_source_package: false
             - buildname: oc666
               os: ubuntu
               dist: trusty
diff --git a/jenkins/client/job/opencontrail/init.yml b/jenkins/client/job/opencontrail/init.yml
index df8f51b..2d38d5a 100644
--- a/jenkins/client/job/opencontrail/init.yml
+++ b/jenkins/client/job/opencontrail/init.yml
@@ -3,12 +3,12 @@
   - system.jenkins.client.job.opencontrail.git-mirrors
 parameters:
   _param:
-    contrail_branches: "R3.0.2.x,R3.0.3.x,R3.1,R3.1.1.x,R3.2,master"
+    contrail_branches: "R3.0.2.x,R3.0.3.x,R3.1,R3.1.1.x,R3.2,R4.0,master"
     contrail_kubernetes_branches: "master,release-1.2"
     contrail_dpdk_extra_branches: "mitaka,kilo,liberty-multiqueue"
-    contrail_ceilometer_plugin_branches: "master"
+    contrail_ceilometer_plugin_branches: "master,R4.0"
     contrail_kubernetes_branches: "master,origin-1.1,origin-1.1.3,release-1.1,release-1.2"
-    contrail_dpdk_branches: "master,R3.0.2.x,R3.0.3.x,R3.1,R3.1.1.x,R3.2,contrail_dpdk_17_02,contrail_dpdk_1_7,contrail_dpdk_2_0,contrail_dpdk_2_1"
+    contrail_dpdk_branches: "master,R3.0.2.x,R3.0.3.x,R3.1,R3.1.1.x,R3.2,R4.0,contrail_dpdk_17_02,contrail_dpdk_1_7,contrail_dpdk_2_0,contrail_dpdk_2_1"
   jenkins:
     client:
       view:
@@ -27,5 +27,7 @@
               naming_rule: "R3.1.1.x"
             - group_regex: "build-opencontrail-oc32-.*"
               naming_rule: "R3.2"
+            - group_regex: "build-opencontrail-oc40-.*"
+              naming_rule: "R4.0"
             - group_regex: "build-opencontrail-oc666-.*"
               naming_rule: "oc-666"
diff --git a/jenkins/client/job/salt-models/generate.yml b/jenkins/client/job/salt-models/generate.yml
index 967de8c..697ab51 100644
--- a/jenkins/client/job/salt-models/generate.yml
+++ b/jenkins/client/job/salt-models/generate.yml
@@ -29,21 +29,6 @@
               COOKIECUTTER_TEMPLATE_PATH:
                 type: string
                 default: "./"
-              COOKIECUTTER_INSTALL_CICD:
-                type: boolean
-                default: false
-              COOKIECUTTER_INSTALL_CONTRAIL:
-                type: boolean
-                default: false
-              COOKIECUTTER_INSTALL_KUBERNETES:
-                type: boolean
-                default: false
-              COOKIECUTTER_INSTALL_OPENSTACK:
-                type: boolean
-                default: false
-              COOKIECUTTER_INSTALL_STACKLIGHT:
-                type: boolean
-                default: false
               COOKIECUTTER_TEMPLATE_CONTEXT:
                 type: text
               RECLASS_MODEL_URL:
@@ -57,3 +42,5 @@
               COMMIT_CHANGES:
                 type: boolean
                 default: false
+              EMAIL_ADDRESS:
+                type: string
diff --git a/linux/system/repo_local/mcp/openstack.yml b/linux/system/repo_local/mcp/openstack.yml
index 29329d1..83bb29b 100644
--- a/linux/system/repo_local/mcp/openstack.yml
+++ b/linux/system/repo_local/mcp/openstack.yml
@@ -15,7 +15,7 @@
           architectures: amd64
           key_url: "http://${_param:local_repo_url}/public.gpg"
           pin:
-          - pin: 'release a=m${_param:openstack_version}-hotfix'
+          - pin: 'release a=${_param:openstack_version}-hotfix'
             priority: 1100
             package: '*'
         mirantis_openstack_security:
diff --git a/linux/system/sudo.yml b/linux/system/sudo.yml
index a2c7822..1668c12 100644
--- a/linux/system/sudo.yml
+++ b/linux/system/sudo.yml
@@ -23,12 +23,17 @@
     - /usr/sbin/visudo
     sudo_coreutils_safe:
     - /usr/bin/less
+    sudo_rabbitmq_safe:
+    - /usr/sbin/rabbitmqctl status
+    - /usr/sbin/rabbitmqctl cluster_status
+    - /usr/sbin/rabbitmqctl list_queues*
     sudo_salt_safe:
     - /usr/bin/salt * state*
     - /usr/bin/salt * service*
     - /usr/bin/salt * pillar*
     - /usr/bin/salt * grains*
     - /usr/bin/salt * saltutil*
+    - /usr/bin/salt * test.ping
     - /usr/bin/salt-call state*
     - /usr/bin/salt-call service*
     - /usr/bin/salt-call pillar*
diff --git a/mysql/client/init.yml b/mysql/client/init.yml
new file mode 100644
index 0000000..4cea41a
--- /dev/null
+++ b/mysql/client/init.yml
@@ -0,0 +1,14 @@
+parameters:
+  _param:
+    mysql_client_host: localhost
+  mysql:
+    client:
+      enabled: true
+      server:
+        database:
+          admin:
+            host: ${_param:mysql_client_host}
+            port: 3306
+            user: ${_param:mysql_admin_user}
+            password: ${_param:mysql_admin_password}
+            encoding: utf8
diff --git a/mysql/client/single.yml b/mysql/client/single.yml
index dd96da5..f518a87 100644
--- a/mysql/client/single.yml
+++ b/mysql/client/single.yml
@@ -1,4 +1,5 @@
 classes:
+- system.mysql.client
 - system.mysql.client.database.aodh
 - system.mysql.client.database.ceilometer
 - system.mysql.client.database.cinder
@@ -8,17 +9,3 @@
 - system.mysql.client.database.nova
 - system.mysql.client.database.nova_api
 - system.mysql.client.database.neutron
-parameters:
-  _param:
-    mysql_client_host: localhost
-  mysql:
-    client:
-      enabled: true
-      server:
-        database:
-          admin:
-            host: ${_param:mysql_client_host}
-            port: 3306
-            user: ${_param:mysql_admin_user}
-            password: ${_param:mysql_admin_password}
-            encoding: utf8
diff --git a/openssh/server/team/l1_support.yml b/openssh/server/team/l1_support.yml
index 85e096a..f25149a 100644
--- a/openssh/server/team/l1_support.yml
+++ b/openssh/server/team/l1_support.yml
@@ -5,6 +5,7 @@
 - system.openssh.server.team.members.aleksandrrubtsov
 - system.openssh.server.team.members.anatoliineliubin
 - system.openssh.server.team.members.antonrodionov
+- system.openssh.server.team.members.collinmay
 - system.openssh.server.team.members.daniillapshin
 - system.openssh.server.team.members.danilakhmetov
 - system.openssh.server.team.members.deniskostriukov
@@ -18,7 +19,6 @@
 - system.openssh.server.team.members.mikhailkraynov
 - system.openssh.server.team.members.nadezhdakabanova
 - system.openssh.server.team.members.renesoto
-- system.openssh.server.team.members.rudymccomb
 - system.openssh.server.team.members.scottmachtmes
 - system.openssh.server.team.members.zahedkhurasani
 parameters:
@@ -34,6 +34,7 @@
           command:
             L1_SUPPORT_SALT: ${_param:sudo_salt_safe}
             L1_SUPPORT_COREUTILS: ${_param:sudo_coreutils_safe}
+            L1_SUPPORT_RABBITMQ: ${_param:sudo_rabbitmq_safe}
             L1_SUPPORT_SALT_TRUSTED: ${_param:sudo_salt_trusted}
             L1_SUPPORT_RESTRICTED_SHELLS: ${_param:sudo_shells}
             L1_SUPPORT_RESTRICTED: ${_param:sudo_restricted_su}
@@ -42,5 +43,6 @@
             commands:
                 - L1_SUPPORT_SALT
                 - L1_SUPPORT_COREUTILS
+                - L1_SUPPORT_RABBITMQ
                 - '!L1_SUPPORT_RESTRICTED_SHELLS'
                 - '!L1_SUPPORT_RESTRICTED'
diff --git a/openssh/server/team/members/collinmay.yml b/openssh/server/team/members/collinmay.yml
new file mode 100644
index 0000000..cf55e05
--- /dev/null
+++ b/openssh/server/team/members/collinmay.yml
@@ -0,0 +1,26 @@
+parameters:
+  linux:
+    system:
+      user:
+        cmay:
+          enabled: true
+          name: cmay
+          sudo: false
+          full_name: Collin May
+          home: /home/cmay
+          email: cmay@mirantis.com
+          groups:
+          - support
+  openssh:
+    server:
+      enabled: true
+      user:
+        cmay:
+          enabled: true
+          public_keys: ${public_keys:cmay}
+          user: ${linux:system:user:cmay}
+  public_keys:
+    cmay:
+      - key: ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAACAQDjJ7z4adgi3Ha/eoLV/f/Q9eKN3lXaOE/WWvLIDC4KhGzJLjrrOAC/Qbmd+rD/k2VFPg/7m9KiyRJiRpBeda58CAKIP2I+DDpKpaRAKblrTvuDRPaTPgoo52viF8KsILGp2l5IEwmI5DceCzyEZaZh4X8qa4sXgASa8XFLcVpK0JJDZ7uxYuJ8u5KRGqXFI16dO2NuB1AY1E3XPaQA3vqFEnv+PyRvYDSmmZ2Ey5nLI5x1UeszLM5OvNojYUYH6N1BovoH08p4YIzPK0vQj40AneDehldskKu1JUC7VBFeOvFjSclWjgieqavFNKQrcyj5NO3bqSUmRW0cnS8MMv00whzb/r6NHcubKkSW7zgUP6WCdyr6BK/HYCNxkKV1P/vizBAwa4cN7w9MxDHXnfSmxujjHEZ3TJaKM0RCpMs4Ss1U6dwftLptKRs/0u5ma2FAaWFp1tYLccE2joe1knwjJdlZVFY2jJu2RMt4KfAs6Dp7FiuzWBMiZV3oLsGM8oORbYaHUVtLGaoFu0doIcqogdQ02RrQLrF89HLDSGmUJph195OmauATbkejPxAwLkf9jLcGVesvPByIldENoCAhaxlE3y0Lxdm+DOlg1Sg2iqo06O9hAtEye6G0+zfv0bEdw1CYlBJWAPIRAIvuiFarx1eTH7wfT3zWgXdRlTp5eQ== cmay@Collin.May.Workstation
+
+
diff --git a/openssh/server/team/members/rudymccomb.yml b/openssh/server/team/members/rudymccomb.yml
deleted file mode 100644
index 6c6c0b8..0000000
--- a/openssh/server/team/members/rudymccomb.yml
+++ /dev/null
@@ -1,25 +0,0 @@
-parameters:
-  linux:
-    system:
-      user:
-        rmccomb:
-          enabled: true
-          name: rmccomb
-          sudo: false
-          full_name: Rudy McComb
-          home: /home/rmccomb
-          email: rmccomb@mirantis.com
-          groups:
-          - support
-  openssh:
-    server:
-      enabled: true
-      user:
-        rmccomb:
-          enabled: true
-          public_keys: ${public_keys:rmccomb}
-          user: ${linux:system:user:rmccomb}
-  public_keys:
-    rmccomb:
-      - key: ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDYhqXhsWyb1VwGKjCeu0jmocrYMQODBxt2qIDjmvt/Qc6Ou78e3EIvZarjNiGczl6fKX3pOUxtZEcqHMZpPciQhyS5TB0hh+7XuBAZy+I0KAT3rM+mHpJ3WRK84hhx/gCHN52qEdiNaS5ofmmrxTk+AcZF9HElPgwi9IC79SKKyIFa2SQxLwNMmrjNab2FQbCcXx34HqsCFi9Sahadpk8Zpk8YKgrH06P+K//lR5mpa8z0svubaLsU+Qde/frjB9xVFeYvm5YcYTJg9GYXubVGqgELFgCqpAGPDCHOIu1T2oQLpTMc4pxqs1EZ6EC9gEE2fMGRfPoSuwacs0WxLzXp
-
diff --git a/prometheus/collector/init.yml b/prometheus/collector/init.yml
new file mode 100644
index 0000000..47b9ff9
--- /dev/null
+++ b/prometheus/collector/init.yml
@@ -0,0 +1,2 @@
+classes:
+- service.prometheus.collector
diff --git a/salt/control/cluster/openstack_gateway_cluster.yml b/salt/control/cluster/openstack_gateway_cluster.yml
new file mode 100644
index 0000000..5d2a20a
--- /dev/null
+++ b/salt/control/cluster/openstack_gateway_cluster.yml
@@ -0,0 +1,26 @@
+parameters:
+  salt:
+    control:
+      size:
+        openstack.gateway:
+          cpu: 32
+          ram: 65536
+          disk_profile: small
+          net_profile: default
+      cluster:
+        internal:
+          domain: ${_param:cluster_domain}
+          engine: virt
+          node:
+            gtw01:
+              provider: kvm01.${_param:cluster_domain}
+              image: ${_param:salt_control_xenial_image}
+              size: openstack.gateway
+            gtw02:
+              provider: kvm01.${_param:cluster_domain}
+              image: ${_param:salt_control_xenial_image}
+              size: openstack.gateway
+            gtw03:
+              provider: kvm01.${_param:cluster_domain}
+              image: ${_param:salt_control_xenial_image}
+              size: openstack.gateway
diff --git a/salt/control/cluster/openstack_gateway_single.yml b/salt/control/cluster/openstack_gateway_single.yml
index c1a4588..1b30b6c 100644
--- a/salt/control/cluster/openstack_gateway_single.yml
+++ b/salt/control/cluster/openstack_gateway_single.yml
@@ -14,5 +14,5 @@
           node:
             gtw01:
               provider: kvm01.${_param:cluster_domain}
-              image: ${_param:salt_control_trusty_image}
+              image: ${_param:salt_control_xenial_image}
               size: openstack.gateway
diff --git a/telegraf/agent/init.yml b/telegraf/agent/init.yml
index 5537b75..0e836e8 100644
--- a/telegraf/agent/init.yml
+++ b/telegraf/agent/init.yml
@@ -1,3 +1,5 @@
+classes:
+- service.telegraf.agent
 parameters:
   telegraf:
     agent: