Merge "Add test_platform job in vnf-onboarding"
diff --git a/apache/server/proxy/openstack/ironic.yml b/apache/server/proxy/openstack/ironic.yml
new file mode 100644
index 0000000..d6bd7d3
--- /dev/null
+++ b/apache/server/proxy/openstack/ironic.yml
@@ -0,0 +1,24 @@
+parameters:
+  _param:
+    apache_proxy_ssl:
+      enabled: false
+    apache_proxy_openstack_api_host: ${_param:cluster_public_host}
+    apache_proxy_openstack_api_address: 0.0.0.0
+    apache_proxy_openstack_ironic_host: ${_param:ironic_service_host}
+  apache:
+    server:
+      site:
+        apache_proxy_openstack_api_ironic:
+          enabled: true
+          type: proxy
+          name: openstack_api_ironic
+          check: false
+          proxy:
+            host: ${_param:apache_proxy_openstack_ironic_host}
+            port: 6385
+            protocol: http
+          host:
+            name: ${_param:apache_proxy_openstack_api_host}
+            port: 6385
+            address: ${_param:apache_proxy_openstack_api_address}
+          ssl: ${_param:apache_proxy_ssl}
diff --git a/glusterfs/server/cluster.yml b/glusterfs/server/cluster.yml
index 87aa0e9..16453c9 100644
--- a/glusterfs/server/cluster.yml
+++ b/glusterfs/server/cluster.yml
@@ -2,6 +2,8 @@
 - service.glusterfs.server
 parameters:
   glusterfs:
+    monitoring:
+      glusterfs_service_host: ${_param:glusterfs_service_host}
     _support:
       iptables:
         enabled: false
diff --git a/haproxy/proxy/listen/radosgw.yml b/haproxy/proxy/listen/radosgw.yml
index ecdeb6b..434555d 100644
--- a/haproxy/proxy/listen/radosgw.yml
+++ b/haproxy/proxy/listen/radosgw.yml
@@ -2,6 +2,12 @@
   _param:
     haproxy_radosgw_bind_port: 8080
     haproxy_radosgw_source_port: 8080
+    ceph_rgw_node01_hostname: ${_param:cluster_node01_hostname}
+    ceph_rgw_node02_hostname: ${_param:cluster_node02_hostname}
+    ceph_rgw_node03_hostname: ${_param:cluster_node03_hostname}
+    ceph_rgw_node01_address: ${_param:cluster_node01_address}
+    ceph_rgw_node02_address: ${_param:cluster_node02_address}
+    ceph_rgw_node03_address: ${_param:cluster_node03_address}
   haproxy:
     proxy:
       listen:
@@ -12,15 +18,15 @@
             - address: ${_param:cluster_vip_address}
               port: ${_param:haproxy_radosgw_bind_port}
           servers:
-            - name: ${_param:cluster_node01_hostname}
-              host: ${_param:cluster_node01_address}
+            - name: ${_param:ceph_rgw_node01_hostname}
+              host: ${_param:ceph_rgw_node01_address}
               port: ${_param:haproxy_radosgw_source_port}
               params: check
-            - name: ${_param:cluster_node02_hostname}
-              host: ${_param:cluster_node02_address}
+            - name: ${_param:ceph_rgw_node02_hostname}
+              host: ${_param:ceph_rgw_node02_address}
               port: ${_param:haproxy_radosgw_source_port}
               params: check
-            - name: ${_param:cluster_node03_hostname}
-              host: ${_param:cluster_node03_address}
+            - name: ${_param:ceph_rgw_node03_hostname}
+              host: ${_param:ceph_rgw_node03_address}
               port: ${_param:haproxy_radosgw_source_port}
               params: check
diff --git a/jenkins/client/approved_scripts.yml b/jenkins/client/approved_scripts.yml
index 80cfd95..8122e8c 100644
--- a/jenkins/client/approved_scripts.yml
+++ b/jenkins/client/approved_scripts.yml
@@ -15,6 +15,7 @@
         - method groovy.util.Node attributes
         - method groovy.util.XmlParser parse java.io.File
         - method groovy.util.XmlParser parseText java.lang.String
+        - method hudson.EnvVars get java.lang.String java.lang.String
         - method hudson.PluginManager getPlugins
         - method hudson.PluginWrapper getShortName
         - method hudson.model.Hudson getSlaves
diff --git a/jenkins/client/job/git-mirrors/2way.yml b/jenkins/client/job/git-mirrors/2way.yml
index ba17f9f..0546d94 100644
--- a/jenkins/client/job/git-mirrors/2way.yml
+++ b/jenkins/client/job/git-mirrors/2way.yml
@@ -1,7 +1,7 @@
 parameters:
   _param:
     jenkins_pollscm_spec: "H/60 * * * *"
-    job_description: <br>Syncronizes code projects with GitHub.<br>
+    job_description_2way: <br>Syncronizes code projects with GitHub.<br>
   jenkins:
     client:
       job_template:
@@ -21,7 +21,7 @@
               target: Mirantis/mcp-offline-model
               branches: "master"
           template:
-            description: ${_param:job_description}
+            description: ${_param:job_description_2way}
             discard:
               build:
                 keep_num: 10
diff --git a/jenkins/client/job/oscore/init.yml b/jenkins/client/job/oscore/init.yml
index 4df13c4..2f45ef8 100644
--- a/jenkins/client/job/oscore/init.yml
+++ b/jenkins/client/job/oscore/init.yml
@@ -5,7 +5,7 @@
   - system.jenkins.client.job.oscore.salt_virtual_models
 parameters:
   _param:
-     job_description: <br>Deploy and test OpenStack.<br>
+     job_description_oscore: <br>Deploy and test OpenStack.<br>
   jenkins:
     client:
       view:
diff --git a/jenkins/client/job/oscore/qa.yml b/jenkins/client/job/oscore/qa.yml
index c8908e7..eb565a2 100644
--- a/jenkins/client/job/oscore/qa.yml
+++ b/jenkins/client/job/oscore/qa.yml
@@ -5,7 +5,7 @@
         oscore-build-docker-image:
           name: "{{job_prefix}}-{{oscore-qa-project}}-build-docker-image"
           template:
-            description: ${_param:job_description}
+            description: ${_param:job_description_oscore}
             discard:
               build:
                 keep_num: 25
@@ -50,7 +50,7 @@
         oscore-docker-image-systest-template:
           name: "{{job_prefix}}-{{oscore-qa-project}}-image-systest-{{model}}"
           template:
-            description: ${_param:job_description}
+            description: ${_param:job_description_oscore}
             discard:
               build:
                 keep_num: 30
diff --git a/jenkins/client/job/oscore/salt_virtual_models.yml b/jenkins/client/job/oscore/salt_virtual_models.yml
index 82b51ee..911c1ce 100644
--- a/jenkins/client/job/oscore/salt_virtual_models.yml
+++ b/jenkins/client/job/oscore/salt_virtual_models.yml
@@ -4,7 +4,7 @@
       job:
         oscore-test_virtual_model:
           concurrent: true
-          description: ${_param:job_description}
+          description: ${_param:job_description_oscore}
           discard:
             build:
               keep_num: 30
@@ -97,7 +97,7 @@
           type: workflow-scm
         oscore-test_virtual_models:
           concurrent: true
-          description: ${_param:job_description}
+          description: ${_param:job_description_oscore}
           discard:
             build:
               keep_num: 30
diff --git a/jenkins/client/job/oscore/security_tests.yml b/jenkins/client/job/oscore/security_tests.yml
index d564574..8c6e39d 100644
--- a/jenkins/client/job/oscore/security_tests.yml
+++ b/jenkins/client/job/oscore/security_tests.yml
@@ -5,7 +5,7 @@
         bandit-scanner-template-downstream:
           name: "{{job_prefix}}-bandit-downstream-{{project}}"
           template:
-            description: ${_param:job_description}
+            description: ${_param:job_description_oscore}
             discard:
               build:
                 keep_num: 30
@@ -95,7 +95,7 @@
         bandit-scanner-template-upstream:
           name: "{{job_prefix}}-bandit-upstream-{{project}}"
           template:
-            description: ${_param:job_description}
+            description: ${_param:job_description_oscore}
             discard:
               build:
                 keep_num: 30
diff --git a/jenkins/client/job/oscore/tests.yml b/jenkins/client/job/oscore/tests.yml
index 122f793..fe9d33c 100644
--- a/jenkins/client/job/oscore/tests.yml
+++ b/jenkins/client/job/oscore/tests.yml
@@ -5,7 +5,7 @@
         test-openstack-component-formula:
           name: "{{job_prefix}}-formula-systest-{{model}}-{{openstack_version}}"
           template:
-            description: ${_param:job_description}
+            description: ${_param:job_description_oscore}
             discard:
               build:
                 keep_num: 30
@@ -147,7 +147,7 @@
         test-openstack-component-periodic:
           name: "{{job_prefix}}-{{milestone}}-{{model}}-{{openstack_version}}-{{formula_pkg_revision}}"
           template:
-            description: ${_param:job_description}
+            description: ${_param:job_description_oscore}
             discard:
               build:
                 keep_num: 30
@@ -286,7 +286,7 @@
         test-runner-template:
           name: "{{job_prefix}}-{{test_type}}-runner"
           template:
-            description: ${_param:job_description}
+            description: ${_param:job_description_oscore}
             discard:
               build:
                 keep_num: 30
@@ -381,7 +381,7 @@
         results-checker-template:
           name: "{{job_prefix}}-{{test_type}}-results-checker"
           template:
-            description: ${_param:job_description}
+            description: ${_param:job_description_oscore}
             discard:
               build:
                 keep_num: 30
@@ -454,7 +454,7 @@
         deploy-kvm-virtual-template:
           name: "{{job_prefix}}-deploy-kvm-VMs"
           template:
-            description: ${_param:job_description}
+            description: ${_param:job_description_oscore}
             discard:
               build:
                 keep_num: 30
@@ -536,7 +536,7 @@
         oscore-oscc-ci-template:
           name: "{{job_prefix}}-oscc-ci"
           template:
-            description: ${_param:job_description}
+            description: ${_param:job_description_oscore}
             discard:
               build:
                 keep_num: 30
@@ -601,7 +601,7 @@
         build-salt-formula-refspec-template:
           name: "{{job_prefix}}-build-salt-formula-refspec"
           template:
-            description: ${_param:job_description}
+            description: ${_param:job_description_oscore}
             discard:
               build:
                 keep_num: 30
@@ -671,7 +671,7 @@
         test-salt-formula-refspec-template:
           name: "{{job_prefix}}-test-salt-formula-refspec"
           template:
-            description: ${_param:job_description}
+            description: ${_param:job_description_oscore}
             discard:
               build:
                 keep_num: 30
@@ -764,7 +764,7 @@
         test-deploy-virtual-model-change-template:
           name: "{{job_prefix}}-deploy-virtual-model-change-{{job_suffix}}"
           template:
-            description: ${_param:job_description}
+            description: ${_param:job_description_oscore}
             discard:
               build:
                 keep_num: 30
diff --git a/jenkins/client/job/salt-formulas/git-mirrors/2way.yml b/jenkins/client/job/salt-formulas/git-mirrors/2way.yml
index cccd01a..a2b000a 100644
--- a/jenkins/client/job/salt-formulas/git-mirrors/2way.yml
+++ b/jenkins/client/job/salt-formulas/git-mirrors/2way.yml
@@ -1,7 +1,7 @@
 parameters:
   _param:
     jenkins_pollscm_spec: "H/60 * * * *"
-    job_description: <br>Syncronizes code projects with GitHub.<br>
+    job_description_2way: <br>Syncronizes code projects with GitHub.<br>
   jenkins:
     client:
       job_template:
@@ -369,7 +369,7 @@
               branches: ${_param:salt_formulas_branches}
               notification_recipients: ${_param:salt_formulas_notification_recipients}
           template:
-            description: ${_param:job_description}
+            description: ${_param:job_description_2way}
             discard:
               build:
                 keep_num: 10
@@ -415,7 +415,7 @@
                 default: "{{notification_recipients}}"
       job:
         git-mirror-2way-salt-formulas-scripts:
-          description: ${_param:job_description}
+          description: ${_param:job_description_2way}
           discard:
             build:
               keep_num: 10
@@ -449,7 +449,7 @@
               type: string
               default: "master"
         git-mirror-2way-salt-formulas-cookiecutter:
-          description: ${_param:job_description}
+          description: ${_param:job_description_2way}
           discard:
             build:
               keep_num: 10
diff --git a/jenkins/client/job/salt-models/tests.yml b/jenkins/client/job/salt-models/tests.yml
index bebc115..80135b5 100644
--- a/jenkins/client/job/salt-models/tests.yml
+++ b/jenkins/client/job/salt-models/tests.yml
@@ -294,7 +294,7 @@
                 default: "1"
               EXTRA_FORMULAS:
                 type: string
-                default: "aptly artifactory backupninja collectd devops-portal docker elasticsearch freeipa gerrit glusterfs grafana haproxy heka horizon influxdb jenkins keepalived kibana libvirt maas memcached mysql nginx ntp openldap openssh postfix prometheus rsync rsyslog rundeck sensu sphinx telegraf xtrabackup watchdog"
+                default: "aptly artifactory backupninja collectd devops-portal docker elasticsearch fluentd freeipa gerrit glusterfs grafana haproxy heka horizon influxdb jenkins keepalived kibana libvirt maas memcached mysql nginx ntp openldap openssh postfix prometheus rsync rsyslog rundeck sensu sphinx telegraf xtrabackup watchdog"
       job:
         test-salt-model-node:
           name: test-salt-model-node
diff --git a/nginx/server/proxy/openstack/cinder.yml b/nginx/server/proxy/openstack/cinder.yml
new file mode 100644
index 0000000..c89fa11
--- /dev/null
+++ b/nginx/server/proxy/openstack/cinder.yml
@@ -0,0 +1,24 @@
+parameters:
+  _param:
+    nginx_proxy_openstack_api_host: ${_param:cluster_public_host}
+    nginx_proxy_openstack_api_address: 0.0.0.0
+    nginx_proxy_openstack_cinder_host: ${_param:cinder_service_host}
+    nginx_proxy_openstack_cinder_protocol: 'http'
+  nginx:
+    server:
+      enabled: true
+      site:
+        nginx_proxy_openstack_api_cinder:
+          enabled: true
+          type: nginx_proxy
+          name: openstack_api_cinder
+          check: false
+          proxy:
+            host: ${_param:nginx_proxy_openstack_cinder_host}
+            port: 8776
+            protocol: ${_param:nginx_proxy_openstack_cinder_protocol}
+          host:
+            name: ${_param:nginx_proxy_openstack_api_host}
+            port: 8776
+            address: ${_param:nginx_proxy_openstack_api_address}
+          ssl: ${_param:nginx_proxy_ssl}
diff --git a/nginx/server/proxy/openstack/glance.yml b/nginx/server/proxy/openstack/glance.yml
new file mode 100644
index 0000000..3479296
--- /dev/null
+++ b/nginx/server/proxy/openstack/glance.yml
@@ -0,0 +1,26 @@
+parameters:
+  _param:
+    nginx_proxy_openstack_api_host: ${_param:cluster_public_host}
+    nginx_proxy_openstack_glance_protocol: 'http'
+    nginx_proxy_openstack_glance_host: ${_param:glance_service_host}
+    nginx_proxy_openstack_api_address: 0.0.0.0
+  nginx:
+    server:
+      enabled: true
+      site:
+        nginx_proxy_openstack_api_glance:
+          enabled: true
+          type: nginx_proxy
+          name: openstack_api_glance
+          check: false
+          underscores_in_headers: true
+          proxy:
+            host: ${_param:nginx_proxy_openstack_glance_host}
+            port: 9292
+            protocol: ${_param:nginx_proxy_openstack_glance_protocol}
+            size: 30000m
+          host:
+            name: ${_param:nginx_proxy_openstack_api_host}
+            port: 9292
+            address: ${_param:nginx_proxy_openstack_api_address}
+          ssl: ${_param:nginx_proxy_ssl}
diff --git a/nginx/server/proxy/openstack/heat.yml b/nginx/server/proxy/openstack/heat.yml
new file mode 100644
index 0000000..bfb7745
--- /dev/null
+++ b/nginx/server/proxy/openstack/heat.yml
@@ -0,0 +1,24 @@
+parameters:
+  _param:
+    nginx_proxy_openstack_api_host: ${_param:cluster_public_host}
+    nginx_proxy_openstack_api_address: 0.0.0.0
+    nginx_proxy_openstack_heat_host: ${_param:heat_service_host}
+    nginx_proxy_openstack_heat_protocol: 'http'
+  nginx:
+    server:
+      enabled: true
+      site:
+        nginx_proxy_openstack_api_heat:
+          enabled: true
+          type: nginx_proxy
+          name: openstack_api_heat
+          check: false
+          proxy:
+            host: ${_param:nginx_proxy_openstack_heat_host}
+            port: 8004
+            protocol: ${_param:nginx_proxy_openstack_heat_protocol}
+          host:
+            name: ${_param:nginx_proxy_openstack_api_host}
+            port: 8004
+            address: ${_param:nginx_proxy_openstack_api_address}
+          ssl: ${_param:nginx_proxy_ssl}
diff --git a/nginx/server/proxy/openstack/heat_cfn.yml b/nginx/server/proxy/openstack/heat_cfn.yml
new file mode 100644
index 0000000..99bb2d3
--- /dev/null
+++ b/nginx/server/proxy/openstack/heat_cfn.yml
@@ -0,0 +1,23 @@
+parameters:
+  _param:
+    nginx_proxy_openstack_api_host: ${_param:cluster_public_host}
+    nginx_proxy_openstack_api_address: 0.0.0.0
+    nginx_proxy_openstack_heat_host: ${_param:heat_service_host}
+    nginx_proxy_openstack_heat_protocol: 'http'
+  nginx:
+    server:
+      enabled: true
+      site:
+        nginx_proxy_openstack_api_heat_cfn:
+          enabled: true
+          type: nginx_proxy
+          name: openstack_api_heat_cfn
+          proxy:
+            host: ${_param:nginx_proxy_openstack_heat_host}
+            port: 8000
+            protocol: ${_param:nginx_proxy_openstack_heat_protocol}
+          host:
+            name: ${_param:nginx_proxy_openstack_api_host}
+            port: 8000
+            address: ${_param:nginx_proxy_openstack_api_address}
+          ssl: ${_param:nginx_proxy_ssl}
diff --git a/nginx/server/proxy/openstack/heat_cloudwatch.yml b/nginx/server/proxy/openstack/heat_cloudwatch.yml
new file mode 100644
index 0000000..2c6a30a
--- /dev/null
+++ b/nginx/server/proxy/openstack/heat_cloudwatch.yml
@@ -0,0 +1,23 @@
+parameters:
+  _param:
+    nginx_proxy_openstack_api_host: ${_param:cluster_public_host}
+    nginx_proxy_openstack_api_address: 0.0.0.0
+    nginx_proxy_openstack_heat_host: ${_param:heat_service_host}
+    nginx_proxy_openstack_heat_protocol: 'http'
+  nginx:
+    server:
+      enabled: true
+      site:
+        nginx_proxy_openstack_api_heat_cloudwatch:
+          enabled: true
+          type: nginx_proxy
+          name: openstack_api_heat_cloudwatch
+          proxy:
+            host: ${_param:nginx_proxy_openstack_heat_host}
+            port: 8003
+            protocol: ${_param:nginx_proxy_openstack_heat_protocol}
+          host:
+            name: ${_param:nginx_proxy_openstack_api_host}
+            port: 8003
+            address: ${_param:nginx_proxy_openstack_api_address}
+          ssl: ${_param:nginx_proxy_ssl}
diff --git a/nginx/server/proxy/openstack/keystone.yml b/nginx/server/proxy/openstack/keystone.yml
new file mode 100644
index 0000000..bf6646a
--- /dev/null
+++ b/nginx/server/proxy/openstack/keystone.yml
@@ -0,0 +1,24 @@
+parameters:
+  _param:
+    nginx_proxy_openstack_api_host: ${_param:cluster_public_host}
+    nginx_proxy_openstack_api_address: 0.0.0.0
+    nginx_proxy_openstack_keystone_host: ${_param:keystone_service_host}
+    nginx_proxy_openstack_keystone_protocol: 'http'
+  nginx:
+    server:
+      enabled: true
+      site:
+        nginx_proxy_openstack_api_keystone:
+          enabled: true
+          type: nginx_proxy
+          name: openstack_api_keystone
+          check: false
+          proxy:
+            host: ${_param:nginx_proxy_openstack_keystone_host}
+            port: 5000
+            protocol: ${_param:nginx_proxy_openstack_keystone_protocol}
+          host:
+            name: ${_param:nginx_proxy_openstack_api_host}
+            port: 5000
+            address: ${_param:nginx_proxy_openstack_api_address}
+          ssl: ${_param:nginx_proxy_ssl}
diff --git a/nginx/server/proxy/openstack/keystone_private.yml b/nginx/server/proxy/openstack/keystone_private.yml
new file mode 100644
index 0000000..bffae74
--- /dev/null
+++ b/nginx/server/proxy/openstack/keystone_private.yml
@@ -0,0 +1,24 @@
+parameters:
+  _param:
+    nginx_proxy_openstack_api_host: ${_param:cluster_public_host}
+    nginx_proxy_openstack_api_address: 0.0.0.0
+    nginx_proxy_openstack_keystone_host: ${_param:keystone_service_host}
+    nginx_proxy_openstack_keystone_protocol: 'http'
+  nginx:
+    server:
+      enabled: true
+      site:
+        nginx_proxy_openstack_api_keystone_private:
+          enabled: true
+          type: nginx_proxy
+          name: openstack_api_keystone_private
+          check: false
+          proxy:
+            host: ${_param:nginx_proxy_openstack_keystone_host}
+            port: 35357
+            protocol: ${_param:nginx_proxy_openstack_keystone_protocol}
+          host:
+            name: ${_param:nginx_proxy_openstack_api_host}
+            port: 35357
+            address: ${_param:nginx_proxy_openstack_api_address}
+          ssl: ${_param:nginx_proxy_ssl}
diff --git a/nginx/server/proxy/openstack/neutron.yml b/nginx/server/proxy/openstack/neutron.yml
new file mode 100644
index 0000000..9ee5796
--- /dev/null
+++ b/nginx/server/proxy/openstack/neutron.yml
@@ -0,0 +1,23 @@
+parameters:
+  _param:
+    nginx_proxy_openstack_api_host: ${_param:cluster_public_host}
+    nginx_proxy_openstack_api_address: 0.0.0.0
+    nginx_proxy_openstack_neutron_host: ${_param:neutron_service_host}
+    nginx_proxy_openstack_neutron_protocol: 'http'
+  nginx:
+    server:
+      site:
+        nginx_proxy_openstack_api_neutron:
+          enabled: true
+          type: nginx_proxy
+          name: openstack_api_neutron
+          check: false
+          proxy:
+            host: ${_param:nginx_proxy_openstack_neutron_host}
+            port: 9696
+            protocol: ${_param:nginx_proxy_openstack_neutron_protocol}
+          host:
+            name: ${_param:nginx_proxy_openstack_api_host}
+            port: 9696
+            address: ${_param:nginx_proxy_openstack_api_address}
+          ssl: ${_param:nginx_proxy_ssl}
diff --git a/nginx/server/proxy/openstack/nova.yml b/nginx/server/proxy/openstack/nova.yml
new file mode 100644
index 0000000..456e056
--- /dev/null
+++ b/nginx/server/proxy/openstack/nova.yml
@@ -0,0 +1,24 @@
+parameters:
+  _param:
+    nginx_proxy_openstack_api_host: ${_param:cluster_public_host}
+    nginx_proxy_openstack_api_address: 0.0.0.0
+    nginx_proxy_openstack_nova_host: ${_param:nova_service_host}
+    nginx_proxy_openstack_nova_protocol: 'http'
+  nginx:
+    server:
+      enabled: true
+      site:
+        nginx_proxy_openstack_api_nova:
+          enabled: true
+          type: nginx_proxy
+          name: openstack_api_nova
+          check: false
+          proxy:
+            host: ${_param:nginx_proxy_openstack_nova_host}
+            port: 8774
+            protocol: ${_param:nginx_proxy_openstack_nova_protocol}
+          host:
+            name: ${_param:nginx_proxy_openstack_api_host}
+            port: 8774
+            address: ${_param:nginx_proxy_openstack_api_address}
+          ssl: ${_param:nginx_proxy_ssl}
diff --git a/nginx/server/proxy/openstack/nova_ec2.yml b/nginx/server/proxy/openstack/nova_ec2.yml
new file mode 100644
index 0000000..27b3f91
--- /dev/null
+++ b/nginx/server/proxy/openstack/nova_ec2.yml
@@ -0,0 +1,24 @@
+parameters:
+  _param:
+    nginx_proxy_openstack_api_host: ${_param:cluster_public_host}
+    nginx_proxy_openstack_api_address: 0.0.0.0
+    nginx_proxy_openstack_nova_host: ${_param:nova_service_host}
+    nginx_proxy_openstack_nova_protocol: 'http'
+  nginx:
+    server:
+      enabled: true
+      site:
+        nginx_proxy_openstack_api_nova_ec2:
+          enabled: true
+          type: nginx_proxy
+          name: openstack_api_nova_ec2
+          check: false
+          proxy:
+            host: ${_param:nginx_proxy_openstack_nova_host}
+            port: 8773
+            protocol: ${_param:nginx_proxy_openstack_nova_protocol}
+          host:
+            name: ${_param:nginx_proxy_openstack_api_host}
+            port: 8773
+            address: ${_param:nginx_proxy_openstack_api_address}
+          ssl: ${_param:nginx_proxy_ssl}
diff --git a/nginx/server/proxy/openstack_api.yml b/nginx/server/proxy/openstack_api.yml
index 26a25da..f9f363d 100644
--- a/nginx/server/proxy/openstack_api.yml
+++ b/nginx/server/proxy/openstack_api.yml
@@ -1,160 +1,11 @@
-parameters:
-  _param:
-    nginx_proxy_openstack_api_host: ${_param:cluster_public_host}
-    nginx_proxy_openstack_api_address: 0.0.0.0
-    nginx_proxy_openstack_keystone_host: ${_param:keystone_service_host}
-    nginx_proxy_openstack_nova_host: ${_param:nova_service_host}
-    nginx_proxy_openstack_cinder_host: ${_param:cinder_service_host}
-    nginx_proxy_openstack_glance_host: ${_param:glance_service_host}
-    nginx_proxy_openstack_neutron_host: ${_param:neutron_service_host}
-    nginx_proxy_openstack_heat_host: ${_param:heat_service_host}
-    nginx_proxy_openstack_keystone_protocol: 'http'
-    nginx_proxy_openstack_nova_protocol: 'http'
-    nginx_proxy_openstack_cinder_protocol: 'http'
-    nginx_proxy_openstack_glance_protocol: 'http'
-    nginx_proxy_openstack_neutron_protocol: 'http'
-    nginx_proxy_openstack_heat_protocol: 'http'
-  nginx:
-    server:
-      enabled: true
-      site:
-        nginx_proxy_openstack_api_keystone:
-          enabled: true
-          type: nginx_proxy
-          name: openstack_api_keystone
-          check: false
-          proxy:
-            host: ${_param:nginx_proxy_openstack_keystone_host}
-            port: 5000
-            protocol: ${_param:nginx_proxy_openstack_keystone_protocol}
-          host:
-            name: ${_param:nginx_proxy_openstack_api_host}
-            port: 5000
-            address: ${_param:nginx_proxy_openstack_api_address}
-          ssl: ${_param:nginx_proxy_ssl}
-        nginx_proxy_openstack_api_keystone_private:
-          enabled: true
-          type: nginx_proxy
-          name: openstack_api_keystone_private
-          check: false
-          proxy:
-            host: ${_param:nginx_proxy_openstack_keystone_host}
-            port: 35357
-            protocol: ${_param:nginx_proxy_openstack_keystone_protocol}
-          host:
-            name: ${_param:nginx_proxy_openstack_api_host}
-            port: 35357
-            address: ${_param:nginx_proxy_openstack_api_address}
-          ssl: ${_param:nginx_proxy_ssl}
-        nginx_proxy_openstack_api_nova:
-          enabled: true
-          type: nginx_proxy
-          name: openstack_api_nova
-          check: false
-          proxy:
-            host: ${_param:nginx_proxy_openstack_nova_host}
-            port: 8774
-            protocol: ${_param:nginx_proxy_openstack_nova_protocol}
-          host:
-            name: ${_param:nginx_proxy_openstack_api_host}
-            port: 8774
-            address: ${_param:nginx_proxy_openstack_api_address}
-          ssl: ${_param:nginx_proxy_ssl}
-        nginx_proxy_openstack_api_cinder:
-          enabled: true
-          type: nginx_proxy
-          name: openstack_api_cinder
-          check: false
-          proxy:
-            host: ${_param:nginx_proxy_openstack_cinder_host}
-            port: 8776
-            protocol: ${_param:nginx_proxy_openstack_cinder_protocol}
-          host:
-            name: ${_param:nginx_proxy_openstack_api_host}
-            port: 8776
-            address: ${_param:nginx_proxy_openstack_api_address}
-          ssl: ${_param:nginx_proxy_ssl}
-        nginx_proxy_openstack_api_glance:
-          enabled: true
-          type: nginx_proxy
-          name: openstack_api_glance
-          check: false
-          underscores_in_headers: true
-          proxy:
-            host: ${_param:nginx_proxy_openstack_glance_host}
-            port: 9292
-            protocol: ${_param:nginx_proxy_openstack_glance_protocol}
-            size: 30000m
-          host:
-            name: ${_param:nginx_proxy_openstack_api_host}
-            port: 9292
-            address: ${_param:nginx_proxy_openstack_api_address}
-          ssl: ${_param:nginx_proxy_ssl}
-        nginx_proxy_openstack_api_neutron:
-          enabled: true
-          type: nginx_proxy
-          name: openstack_api_neutron
-          check: false
-          proxy:
-            host: ${_param:nginx_proxy_openstack_neutron_host}
-            port: 9696
-            protocol: ${_param:nginx_proxy_openstack_neutron_protocol}
-          host:
-            name: ${_param:nginx_proxy_openstack_api_host}
-            port: 9696
-            address: ${_param:nginx_proxy_openstack_api_address}
-          ssl: ${_param:nginx_proxy_ssl}
-        nginx_proxy_openstack_api_heat_cloudwatch:
-          enabled: true
-          type: nginx_proxy
-          name: openstack_api_heat_cloudwatch
-          proxy:
-            host: ${_param:nginx_proxy_openstack_heat_host}
-            port: 8003
-            protocol: ${_param:nginx_proxy_openstack_heat_protocol}
-          host:
-            name: ${_param:nginx_proxy_openstack_api_host}
-            port: 8003
-            address: ${_param:nginx_proxy_openstack_api_address}
-          ssl: ${_param:nginx_proxy_ssl}
-        nginx_proxy_openstack_api_heat_cfn:
-          enabled: true
-          type: nginx_proxy
-          name: openstack_api_heat_cfn
-          proxy:
-            host: ${_param:nginx_proxy_openstack_heat_host}
-            port: 8000
-            protocol: ${_param:nginx_proxy_openstack_heat_protocol}
-          host:
-            name: ${_param:nginx_proxy_openstack_api_host}
-            port: 8000
-            address: ${_param:nginx_proxy_openstack_api_address}
-          ssl: ${_param:nginx_proxy_ssl}
-        nginx_proxy_openstack_api_heat:
-          enabled: true
-          type: nginx_proxy
-          name: openstack_api_heat
-          check: false
-          proxy:
-            host: ${_param:nginx_proxy_openstack_heat_host}
-            port: 8004
-            protocol: ${_param:nginx_proxy_openstack_heat_protocol}
-          host:
-            name: ${_param:nginx_proxy_openstack_api_host}
-            port: 8004
-            address: ${_param:nginx_proxy_openstack_api_address}
-          ssl: ${_param:nginx_proxy_ssl}
-        nginx_proxy_openstack_api_nova_ec2:
-          enabled: true
-          type: nginx_proxy
-          name: openstack_api_nova_ec2
-          check: false
-          proxy:
-            host: ${_param:nginx_proxy_openstack_nova_host}
-            port: 8773
-            protocol: ${_param:nginx_proxy_openstack_nova_protocol}
-          host:
-            name: ${_param:nginx_proxy_openstack_api_host}
-            port: 8773
-            address: ${_param:nginx_proxy_openstack_api_address}
-          ssl: ${_param:nginx_proxy_ssl}
+classes:
+- system.nginx.server.proxy.openstack.cinder
+- system.nginx.server.proxy.openstack.glance
+- system.nginx.server.proxy.openstack.heat
+- system.nginx.server.proxy.openstack.heat_cfn
+- system.nginx.server.proxy.openstack.heat_cloudwatch
+- system.nginx.server.proxy.openstack.keystone
+- system.nginx.server.proxy.openstack.keystone_private
+- system.nginx.server.proxy.openstack.neutron
+- system.nginx.server.proxy.openstack.nova
+- system.nginx.server.proxy.openstack.nova_ec2
diff --git a/openssh/server/team/qa_scale.yml b/openssh/server/team/qa_scale.yml
index 98c5540..0414e35 100644
--- a/openssh/server/team/qa_scale.yml
+++ b/openssh/server/team/qa_scale.yml
@@ -2,6 +2,7 @@
 - system.openssh.server.team.members.listomin
 - system.openssh.server.team.members.sgalkin
 - system.openssh.server.team.members.obasov
+- system.openssh.server.team.members.mikhailkraynov
 
 parameters:
   _param: