Merge "Fixed ssh config for user rsafonov"
diff --git a/docker/swarm/stack/influxdb.yml b/docker/swarm/stack/influxdb.yml
new file mode 100644
index 0000000..e753d18
--- /dev/null
+++ b/docker/swarm/stack/influxdb.yml
@@ -0,0 +1,29 @@
+classes:
+- system.influxdb.server.container
+- system.influxdb.server.tmpfs_wal
+- system.telegraf.agent.remote.input.influxdb
+parameters:
+  _param:
+    docker_influxdb_replicas: 1
+    docker_influxdb_data_dir: /srv/volumes/influxdb
+  docker:
+    client:
+      stack:
+        influxdb:
+          service:
+            server:
+              deploy:
+                replicas: ${_param:docker_influxdb_replicas}
+                restart_policy:
+                  condition: any
+              environment:
+                INFLUXDB_CONFIG_PATH: /etc/influxdb/influxdb.conf
+                INFLUXDB_DATA_DIR: /var/lib/influxdb/data
+                INFLUXDB_DATA_WAL_DIR: /var/lib/influxdb/wal
+              image: ${_param:docker_influxdb_image}
+              ports:
+              - 15016:8086
+              volumes:
+              - ${influxdb:server:prefix_dir}/etc/influxdb:/etc/influxdb
+              - ${_param:docker_influxdb_data_dir}:/var/lib/influxdb/data
+              - ${influxdb:server:data:wal_dir}:/var/lib/influxdb/wal
diff --git a/glusterfs/client/volume/influxdb.yml b/glusterfs/client/volume/influxdb.yml
new file mode 100644
index 0000000..4edcf4b
--- /dev/null
+++ b/glusterfs/client/volume/influxdb.yml
@@ -0,0 +1,13 @@
+parameters:
+  _param:
+    influxdb_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:
+        influxdb:
+          path: /srv/volumes/influxdb
+          server: ${_param:influxdb_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/influxdb.yml b/glusterfs/server/volume/influxdb.yml
new file mode 100644
index 0000000..7f2d894
--- /dev/null
+++ b/glusterfs/server/volume/influxdb.yml
@@ -0,0 +1,17 @@
+parameters:
+  glusterfs:
+    server:
+      volumes:
+        influxdb:
+          storage: /srv/glusterfs/influxdb
+          replica: 3
+          bricks:
+            - ${_param:cluster_node01_address}:/srv/glusterfs/influxdb
+            - ${_param:cluster_node02_address}:/srv/glusterfs/influxdb
+            - ${_param:cluster_node03_address}:/srv/glusterfs/influxdb
+          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/influxdb/client/database/ceilometer.yml b/influxdb/client/database/ceilometer.yml
new file mode 100644
index 0000000..52aebae
--- /dev/null
+++ b/influxdb/client/database/ceilometer.yml
@@ -0,0 +1,25 @@
+parameters:
+  _param:
+    influxdb_ceilometer_rp_duration: 30d
+  influxdb:
+    client:
+      database:
+        ceilometer:
+          enabled: true
+          name: ceilometer
+          retention_policy:
+            - name: ceilometer_default
+              is_default: true
+              duration: ${_param:influxdb_ceilometer_rp_duration}
+              replication: 1
+      user:
+        ceilometer:
+          enabled: true
+          name: ceilometer
+          password: ${_param:ceilometer_influxdb_password}
+      grant:
+        ceilometer_all:
+          enabled: true
+          user: ceilometer
+          database: ceilometer
+          privilege: all
diff --git a/influxdb/client/database/stacklight.yml b/influxdb/client/database/stacklight.yml
new file mode 100644
index 0000000..d07d0b8
--- /dev/null
+++ b/influxdb/client/database/stacklight.yml
@@ -0,0 +1,25 @@
+parameters:
+  _param:
+    influxdb_stacklight_rp_duration: 30d
+  influxdb:
+    client:
+      database:
+        lma:
+          enabled: true
+          name: lma
+          retention_policy:
+          - name: lma_default
+            is_default: true
+            duration: ${_param:influxdb_stacklight_password}
+            replication: 1
+      user:
+        lma:
+          enabled: true
+          name: lma
+          password: ${_param:influxdb_stacklight_password}
+      grant:
+        lma_all:
+          enabled: true
+          user: lma
+          database: lma
+          privilege: all
diff --git a/influxdb/client/init.yml b/influxdb/client/init.yml
new file mode 100644
index 0000000..8c66f1b
--- /dev/null
+++ b/influxdb/client/init.yml
@@ -0,0 +1,13 @@
+classes:
+- service.influxdb.client
+parameters:
+  _param:
+    influxdb_client_port: 8086
+  influxdb:
+    client:
+      server:
+        protocol: http
+        host: ${_param:influxdb_client_host}
+        port: ${_param:influxdb_client_port}
+        user: root
+        password: ${_param:influxdb_client_password}
diff --git a/influxdb/server/container.yml b/influxdb/server/container.yml
new file mode 100644
index 0000000..d7e7df7
--- /dev/null
+++ b/influxdb/server/container.yml
@@ -0,0 +1,19 @@
+classes:
+- service.influxdb.server.container
+parameters:
+  influxdb:
+    server:
+      enabled: true
+      prefix_dir: /srv/volumes/local/influxdb
+      http:
+        enabled: true
+        bind:
+          port: 8086
+      admin:
+        enabled: true
+        bind:
+          port: 8083
+        user:
+          enabled: true
+          name: 'root'
+          password: ${_param:influxdb_admin_password}
diff --git a/jenkins/client/approved_scripts.yml b/jenkins/client/approved_scripts.yml
index 4fa5de0..367a800 100644
--- a/jenkins/client/approved_scripts.yml
+++ b/jenkins/client/approved_scripts.yml
@@ -115,10 +115,7 @@
         - staticMethod org.codehaus.groovy.runtime.DefaultGroovyMethods takeRight java.util.List int
         - staticMethod org.codehaus.groovy.runtime.EncodingGroovyMethods encodeBase64 byte[]
         - staticMethod org.codehaus.groovy.runtime.ScriptBytecodeAdapter bitwiseNegate java.lang.Object
-        - staticMethod org.codehaus.groovy.runtime.DefaultGroovyMethods split java.lang.String
-        - staticMethod java.lang.Integer valueOf int
-        - staticMethod org.codehaus.groovy.runtime.DefaultGroovyMethods leftShift java.lang.StringBuffer java.lang.Object
-        - new java.lang.StringBuilder
-        - new java.lang.StringBuilder int
-        - staticMethod org.codehaus.groovy.runtime.DefaultGroovyMethods sort java.util.Collection
         - staticMethod org.codehaus.groovy.runtime.DefaultGroovyMethods toBoolean java.lang.Boolean
+        - staticMethod org.codehaus.groovy.runtime.DefaultGroovyMethods getAt java.lang.Object java.lang.String
+        - method java.io.File listFiles
+        - method java.lang.String concat java.lang.String
diff --git a/jenkins/client/job/deploy/lab/mk/cloud.yml b/jenkins/client/job/deploy/lab/mk/cloud.yml
index d92c607..6a18b42 100644
--- a/jenkins/client/job/deploy/lab/mk/cloud.yml
+++ b/jenkins/client/job/deploy/lab/mk/cloud.yml
@@ -8,7 +8,7 @@
         stack_test: ""
         job_timer: ""
         extra_formulas: ""
-      - stack_name: k8s_calico
+      - stack_name: k8s_ha_calico
         stack_type: aws
         stack_install: core,k8s,calico
         stack_test: ""
@@ -42,12 +42,12 @@
         stack_type: heat
         stack_install: core,k8s,calico
         stack_test: ""
-        job_timer: ""
+        job_timer: "H H(0-6) * * *"
       - stack_name: k8s_ha_contrail
         stack_type: heat
         stack_install: core,k8s,contrail
         stack_test: ""
-        job_timer: ""
+        job_timer: "H H(0-6) * * *"
       - stack_name: os_aio_contrail
         stack_type: heat
         stack_install: core,openstack,contrail
@@ -61,27 +61,27 @@
         stack_type: heat
         stack_install: core,openstack,contrail
         stack_test: ""
-        job_timer: ""
+        job_timer: "H H(0-6) * * *"
       - stack_name: os_ha_ovs
         stack_type: heat
         stack_install: core,openstack,ovs
         stack_test: ""
-        job_timer: ""
+        job_timer: "H H(0-6) * * *"
       - stack_name: stacklight_k8s_calico
         stack_type: heat
         stack_install: core,k8s,calico,stacklight
         stack_test: ""
-        job_timer: ""
+        job_timer: "H H(0-6) * * *"
       - stack_name: stacklight_os_contrail
         stack_type: heat
         stack_install: core,openstack,contrail,stacklight
         stack_test: ""
-        job_timer: ""
+        job_timer: "H H(0-6) * * *"
       - stack_name: stacklight_os_ovs
         stack_type: heat
         stack_install: core,openstack,ovs,stacklight
         stack_test: ""
-        job_timer: ""
+        job_timer: "H H(0-6) * * *"
   jenkins:
     client:
       job_template:
diff --git a/jenkins/client/job/deploy/lab/mk/init.yml b/jenkins/client/job/deploy/lab/mk/init.yml
index dde1fb0..b9d486d 100644
--- a/jenkins/client/job/deploy/lab/mk/init.yml
+++ b/jenkins/client/job/deploy/lab/mk/init.yml
@@ -116,9 +116,22 @@
                 default: "docker-dev-virtual.docker.mirantis.net/mirantis/kubernetes/k8s-conformance:v1.5.1-3_1482332392819"
 
               # Tempest settings
-              TEMPEST_IMAGE_LINK:
+              TEMPEST_IMAGE:
                 type: string
+                description: "Tempest image link"
                 default: "sandbox-docker-prod-local.docker.mirantis.net/mirantis/rally_tempest:0.1"
+              TARGET_TEST_NODE:
+                type: string
+                description: "Node to run tests"
+                default: ""
+              DOCKER_INSTALL:
+                type: boolean
+                description: "Install docker on the target if true"
+                default: "true"
+              PATTERN:
+                type: string
+                description: "Run tests matched to pattern only"
+                default: ""
 
               ASK_ON_ERROR:
                 type: boolean
diff --git a/jenkins/client/job/salt-models/tests.yml b/jenkins/client/job/salt-models/tests.yml
index a760944..8c04aba 100644
--- a/jenkins/client/job/salt-models/tests.yml
+++ b/jenkins/client/job/salt-models/tests.yml
@@ -41,7 +41,7 @@
                 default: "gerrit"
               PARALLEL_NODE_GROUP_SIZE:
                 type: string
-                default: "1"
+                default: "5"
               # Salt master setup extra formulas
               EXTRA_FORMULAS:
                 type: string
diff --git a/neutron/client/service/octavia.yml b/neutron/client/service/octavia.yml
index e818f76..90a4a4e 100644
--- a/neutron/client/service/octavia.yml
+++ b/neutron/client/service/octavia.yml
@@ -1,6 +1,8 @@
 classes:
 - service.neutron.client
 parameters:
+  _param:
+    octavia_hm_bind_ip: '192.168.0.12'
   neutron:
     client:
       server:
@@ -19,7 +21,7 @@
               port:
                 octavia-health-manager-listen-port:
                   fixed_ips:
-                    - ip_address: '192.168.0.12'
+                    - ip_address: ${_param:octavia_hm_bind_ip}
                   device_owner: Octavia:health-mgr
                   binding_host_id: ${_param:openstack_gateway_node01_hostname}
                   security_groups:
diff --git a/neutron/control/opencontrail/single.yml b/neutron/control/opencontrail/single.yml
new file mode 100644
index 0000000..0c2841b
--- /dev/null
+++ b/neutron/control/opencontrail/single.yml
@@ -0,0 +1,39 @@
+classes:
+- service.neutron.control.single
+parameters:
+  mysql:
+    server:
+      database:
+        neutron:
+          encoding: utf8
+          users:
+          - name: neutron
+            password: ${_param:mysql_neutron_password}
+            host: '%'
+            rights: all
+          - name: neutron
+            password: ${_param:mysql_neutron_password}
+            host: ${_param:cluster_local_address}
+            rights: all
+  neutron:
+    server:
+      dns_domain: ${_param:cluster_domain}
+      database:
+        host: ${_param:openstack_database_address}
+      identity:
+        region: ${_param:openstack_region}
+        host: ${_param:openstack_control_address}
+      message_queue:
+        members:
+          - host: ${_param:openstack_message_queue_node01_address}
+      compute:
+        host: ${_param:openstack_control_address}
+        region: ${_param:openstack_region}
+      backend:
+        engine: contrail
+        host: ${_param:opencontrail_control_address}
+        port: 8082
+        user: admin
+        password: ${_param:keystone_admin_password}
+        tenant: admin
+        token: ${_param:keystone_service_token}
\ No newline at end of file
diff --git a/openssh/server/team/members/rsatek.yml b/openssh/server/team/members/rsatek.yml
new file mode 100644
index 0000000..7968ee7
--- /dev/null
+++ b/openssh/server/team/members/rsatek.yml
@@ -0,0 +1,20 @@
+parameters:
+  linux:
+    system:
+      user:
+        rsatek:
+          enabled: true
+          name: rsatek
+          sudo: true
+          full_name: Rudolf Satek
+          home: /home/rsatek
+          email: rsatek@mirantis.com
+  openssh:
+    server:
+      enabled: true
+      user:
+        rsatek:
+          enabled: true
+          public_keys:
+            - key: ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQC63DK9CdBB2WNHcbgzReBlcVY7YDvVKBJI4P5O8N3lg/T+01ROL99/6k8drFYFJjdeXJaMkCg7UM17yIyouDijBHB9G9AM7jkefBZrGDF7QaWJeGvpxB9W3BQnhotCeuP363CNBup+oUfPwXVnkE5iGuLJAGS8SENpVZpZsF0gXAUuVtvl5D8h1wIqQtFveJSV6qJkjVIudZYJfOMDBfiyS5nEwKmboP5jFtrm3e64HpxDhm2J5irNtzw3hOO8cq2ssnZ0ZAHFf2FfnPAzZ2L0Z1MpZcEPdzBonsdO8/cfxdbov9hW4iLmpJF80KxgPyHU0R304uyfnsfkC164l0Rx rsatek@Rudolfs-MacBook-Pro.local
+            user: ${linux:system:user:rsatek}
diff --git a/prometheus/server/target/dns.yml b/prometheus/server/target/dns.yml
index ed6602d..e2745f1 100644
--- a/prometheus/server/target/dns.yml
+++ b/prometheus/server/target/dns.yml
@@ -25,3 +25,8 @@
               - 'tasks.monitoring_remote_agent'
               type: A
               port: ${telegraf:remote_agent:output:prometheus_client:bind:port}
+            - name: 'remote_storage_adapter'
+              domain:
+              - 'tasks.monitoring_remote_storage_adapter'
+              type: A
+              port: ${prometheus:remote_storage_adapter:bind:port}
diff --git a/reclass/storage/system/openstack_control_single.yml b/reclass/storage/system/openstack_control_single.yml
new file mode 100644
index 0000000..016ab96
--- /dev/null
+++ b/reclass/storage/system/openstack_control_single.yml
@@ -0,0 +1,15 @@
+parameters:
+  _param:
+    openstack_control_node01_hostname: ctl01
+  reclass:
+    storage:
+      node:
+        openstack_control_node01:
+          name: ${_param:openstack_control_node01_hostname}
+          domain: ${_param:cluster_domain}
+          classes:
+          - cluster.${_param:cluster_name}.openstack.control
+          params:
+            salt_master_host: ${_param:reclass_config_master}
+            linux_system_codename: xenial
+            single_address: ${_param:openstack_control_node01_address}
diff --git a/reclass/storage/system/openstack_gateway_single_octavia.yml b/reclass/storage/system/openstack_gateway_single_octavia.yml
index 7291977..2a5b952 100644
--- a/reclass/storage/system/openstack_gateway_single_octavia.yml
+++ b/reclass/storage/system/openstack_gateway_single_octavia.yml
@@ -4,6 +4,4 @@
       node:
         openstack_gateway_node01:
           classes:
-          - system.octavia.manager.single
-          - system.salt.minion.ca.octavia_ca
-          - system.salt.minion.cert.octavia_amp_client
+          - cluster.${_param:cluster_name}.openstack.octavia_manager
diff --git a/reclass/storage/system/stacklightv2_server_cluster.yml b/reclass/storage/system/stacklightv2_server_cluster.yml
index 5f14155..c72ac2c 100644
--- a/reclass/storage/system/stacklightv2_server_cluster.yml
+++ b/reclass/storage/system/stacklightv2_server_cluster.yml
@@ -23,7 +23,7 @@
           domain: ${_param:cluster_domain}
           classes:
           - system.docker.swarm.manager
-          - cluster.${_param:cluster_name}.stacklight.client
+          - cluster.${_param:cluster_name}.stacklight.server
           params:
             salt_master_host: ${_param:reclass_config_master}
             linux_system_codename: xenial
@@ -34,7 +34,7 @@
           domain: ${_param:cluster_domain}
           classes:
           - system.docker.swarm.manager
-          - cluster.${_param:cluster_name}.stacklight.client
+          - cluster.${_param:cluster_name}.stacklight.server
           params:
             salt_master_host: ${_param:reclass_config_master}
             linux_system_codename: xenial
diff --git a/salt/master/formula/git/foundation.yml b/salt/master/formula/git/foundation.yml
index 7e21699..dbc7d19 100644
--- a/salt/master/formula/git/foundation.yml
+++ b/salt/master/formula/git/foundation.yml
@@ -54,3 +54,7 @@
               source: git
               address: '${_param:salt_master_environment_repository}/salt-formula-openldap.git'
               revision: ${_param:salt_master_environment_revision}
+            powerdns:
+              source: git
+              address: '${_param:salt_master_environment_repository}/salt-formula-powerdns.git'
+              revision: ${_param:salt_master_environment_revision}
diff --git a/salt/master/formula/pkg/foundation.yml b/salt/master/formula/pkg/foundation.yml
index 3eed5e9..3111419 100644
--- a/salt/master/formula/pkg/foundation.yml
+++ b/salt/master/formula/pkg/foundation.yml
@@ -28,6 +28,9 @@
             openldap:
               source: pkg
               name: salt-formula-openldap
+            powerdns:
+              source: pkg
+              name: salt-formula-powerdns
             lldp:
               source: pkg
               name: salt-formula-lldp
diff --git a/telegraf/agent/remote/input/influxdb.yml b/telegraf/agent/remote/input/influxdb.yml
new file mode 100644
index 0000000..9b28476
--- /dev/null
+++ b/telegraf/agent/remote/input/influxdb.yml
@@ -0,0 +1,12 @@
+parameters:
+  _param:
+    telegraf_remote_agent_influxdb_port: 15016
+    telegraf_remote_agent_influxdb_protocol: http
+  telegraf:
+    remote_agent:
+      input:
+        influxdb:
+          servers:
+          - url: "${_param:telegraf_remote_agent_influxdb_protocol}://${_param:telegraf_remote_agent_influxdb_address}:${_param:telegraf_remote_agent_influxdb_port}/debug/vars"
+          tags:
+            host: ${_param:telegraf_remote_agent_influxdb_address}