Merge "Set alertmanager external host to cluster_public_host"
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/docker/swarm/stack/kqueen.yml b/docker/swarm/stack/kqueen.yml
index 4708725..c6b608d 100644
--- a/docker/swarm/stack/kqueen.yml
+++ b/docker/swarm/stack/kqueen.yml
@@ -8,6 +8,8 @@
     kqueen_api_db_host: etcd
     kqueen_api_debug: True
     kqueen_api_prometheus_whitelist: '172.16.10.0/24' ##REcheck with network
+    kqueen_api_ldap_uri: 'ldap://ldap'
+    kqueen_api_auth_modules: 'local'
     docker_kqueen_ui_replicas: 1
     kqueen_ui_bind_port: ${_param:haproxy_kqueen_ui_bind_port}
     kqueen_ui_bind_host: kqueen-ui
@@ -15,6 +17,8 @@
     kqueen_ui_mail_port: 10025
     kqueen_ui_debug: True
     kqueen_ui_enable_public_registration: False
+    kqueen_ui_ldap_auth_notify: False
+    kqueen_ui_local_auth_notify: True
     kqueen_credentials:
       kqueen_api_secret_key: 'pasteyoursecret'
       kqueen_ui_secret_key: 'pasteyoursecret'
@@ -33,6 +37,8 @@
               environment:
                 KQUEEN_DEBUG: ${_param:kqueen_api_debug}
                 KQUEEN_CONFIG_FILE: config/prod.py
+                KQUEEN_LDAP_URI: ${_param:kqueen_api_ldap_uri}
+                KQUEEN_AUTH_MODULES: ${_param:kqueen_api_auth_modules}
                 KQUEEN_ETCD_HOST: ${_param:kqueen_api_db_host}
                 KQUEEN_PROMETHEUS_WHITELIST: ${_param:kqueen_api_prometheus_whitelist}
                 KQUEEN_SECRET_KEY: ${_param:kqueen_credentials:kqueen_api_secret_key}
@@ -63,6 +69,8 @@
                 KQUEENUI_MAIL_SERVER: ${_param:kqueen_ui_mail_host}
                 KQUEENUI_MAIL_PORT: ${_param:kqueen_ui_mail_port}
                 KQUEENUI_ENABLE_PUBLIC_REGISTRATION: ${_param:kqueen_ui_enable_public_registration}
+                KQUEENUI_LDAP_AUTH_NOTIFY: ${_param:kqueen_ui_ldap_auth_notify}
+                KQUEENUI_LOCAL_AUTH_NOTIFY: ${_param:kqueen_ui_local_auth_notify}
                 STATIC_DIR: /mnt/static/
               deploy:
                 replicas: ${_param:docker_kqueen_ui_replicas}
diff --git a/docker/swarm/stack/monitoring/prometheus/global.yml b/docker/swarm/stack/monitoring/prometheus/global.yml
index d86f456..6114f44 100644
--- a/docker/swarm/stack/monitoring/prometheus/global.yml
+++ b/docker/swarm/stack/monitoring/prometheus/global.yml
@@ -7,3 +7,5 @@
             server:
               deploy:
                 mode: global
+              environment:
+                PROMETHEUS_USE_STATIC_DATADIR: "true"
diff --git a/gerrit/client/project/vnf_onboarding.yml b/gerrit/client/project/vnf_onboarding.yml
index 9cefb95..1e7d238 100644
--- a/gerrit/client/project/vnf_onboarding.yml
+++ b/gerrit/client/project/vnf_onboarding.yml
@@ -42,3 +42,11 @@
           require_change_id: true
           require_agreement: false
           merge_content: true
+        vnf-onboarding/platform-tests:
+          enabled: true
+          description: VNF onboarding platform tests
+          upstream: https://gerrit.mcp.mirantis.net/vnf-onboarding/platform-tests
+          access: ${gerrit:client:default_access}
+          require_change_id: true
+          require_agreement: false
+          merge_content: true
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..17c4aa8 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
@@ -47,6 +47,10 @@
               type: string
               description: Version of formulas for salt-master bootstrap
               default: "nightly"
+            BOOTSTRAP_EXTRA_REPO_PARAMS:
+              type: string
+              default: ""
+              description: "Defines a list of extra repos with parameters, format: repo 1, repo priority 1, repo pin 1; repo 2, repo priority 2, repo pin 2"
             # openstack api
             OPENSTACK_API_URL:
               type: string
@@ -97,7 +101,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..56ecfe2 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
@@ -598,10 +598,18 @@
                 type: boolean
                 default: "{{auto_promote}}"
                 description: Enable to autopromote repo
+              TEST_MULTINODE:
+                type: boolean
+                default: "{{test_multinode}}"
+                description: Whether to test nightly snapshot against multi-node virtual models
+              STACK_CLUSTER_NAMES:
+                type: string
+                default: "{{stack_cluster_names}}"
+                description: "Cluster name to use from reclass to deploy multi-node"
         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 +679,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
@@ -688,7 +696,7 @@
             trigger:
               gerrit:
                 project:
-                  "^salt-formulas/(nova|cinder|glance|keystone|horizon|neutron|designate|heat|ironic|barbican|aodh|ceilometer|gnocchi|panko|manila|salt|linux|reclass|galera|memcached|rabbitmq|bind|apache)$":
+                  "^salt-formulas/(nova|cinder|glance|keystone|horizon|neutron|designate|heat|ironic|barbican|aodh|ceilometer|gnocchi|panko|manila|salt|linux|reclass|galera|memcached|rabbitmq|bind|apache|runtest)$":
                     compare_type: 'REG_EXP'
                     branches:
                       - master
@@ -764,7 +772,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/jenkins/client/job/validate.yml b/jenkins/client/job/validate.yml
index 168dcfd..c97c0ad 100644
--- a/jenkins/client/job/validate.yml
+++ b/jenkins/client/job/validate.yml
@@ -364,3 +364,43 @@
             PROXY:
               type: string
               default: ""
+        cvp-stacklight:
+          type: workflow-scm
+          name: cvp-stacklight
+          display_name: "CVP - Stacklight tests"
+          discard:
+            build:
+              keep_num: 20
+            artifact:
+              keep_num: 20
+          concurrent: false
+          scm:
+            type: git
+            url: "${_param:jenkins_gerrit_url}/mk/mk-pipelines"
+            branch: "${_param:jenkins_pipelines_branch}"
+            credentials: "gerrit"
+            script: cvp-runner.groovy
+          param:
+            SALT_MASTER_URL:
+              type: string
+              default: "${_param:jenkins_salt_api_url}"
+              description: Full Salt API address [e.g. https://10.10.10.2:6969]
+            SALT_MASTER_CREDENTIALS:
+              type: string
+              default: "salt"
+            TESTS_REPO:
+              type: string
+              default: "https://github.com/legan4ik/stacklight-pytest"
+              description: Url for cvp-stacklight-tests
+            TESTS_SETTINGS:
+              type: string
+              default: "SL_AUTOCONF=True"
+              description: "Additional environment variables to export"
+            TESTS_SET:
+              type: string
+              default: "stacklight-pytest/stacklight_tests/tests/prometheus/"
+              description: "Leave empty for full run or choose a file, e.g. test_dashboards.py"
+            PROXY:
+              type: string
+              default: ""
+              description: Proxy address to clone repo and install python requirements
diff --git a/jenkins/client/job/vnf-onboarding/init.yml b/jenkins/client/job/vnf-onboarding/init.yml
index cd97fef..19ba3f6 100644
--- a/jenkins/client/job/vnf-onboarding/init.yml
+++ b/jenkins/client/job/vnf-onboarding/init.yml
@@ -1,6 +1,7 @@
 classes:
   - system.jenkins.client.job.vnf-onboarding.test_avi_loadbalancer
   - system.jenkins.client.job.vnf-onboarding.test_nginx_vnf
+  - system.jenkins.client.job.vnf-onboarding.test_platform
 
 parameters:
   _param:
@@ -9,3 +10,4 @@
     vnf_openstack_api_url: "${_param:cluster_public_protocol}://${_param:cluster_public_host}:5000/v2.0"
     vnf_openstack_api_credentials: "test-openstack"
     vnf_elastic_url: "${_param:stacklight_log_address}:${_param:cluster_elasticsearch_port}"
+    vnf_docker_registry_path: "docker-dev-local.docker.mirantis.net/mirantis/vnf-onboarding"
diff --git a/jenkins/client/job/vnf-onboarding/test_platform.yml b/jenkins/client/job/vnf-onboarding/test_platform.yml
new file mode 100644
index 0000000..1dd0051
--- /dev/null
+++ b/jenkins/client/job/vnf-onboarding/test_platform.yml
@@ -0,0 +1,99 @@
+parameters:
+  jenkins:
+    client:
+      plugin:
+        gerrit-trigger: {}
+      job:
+        platform_validation_pipeline:
+          type: workflow-scm
+          name: platform_validation_pipeline
+          display_name: "Validate OpenStack platform before deploy of VNF"
+          discard:
+            build:
+              keep_num: 20
+          scm:
+            type: git
+            url: "${_param:jenkins_gerrit_url}/vnf-onboarding/pipelines"
+            credentials: "${_param:vnf_gerrit_credentials}"
+            script: test_platform.groovy
+          param:
+            OPENSTACK_API_CREDENTIALS:
+              type: string
+              description: "OpenStack admin user credentials for running tests"
+              default: "${_param:vnf_openstack_api_credentials}"
+            OS_PROJECT_NAME:
+              type: string
+              description: "OpenStack project name for running tests"
+              default: "platform-test"
+            OS_AUTH_URL:
+              type: string
+              description: "OpenStack auth url"
+              default: "http://${_param:openstack_control_address}:35357/v3"
+            IMAGE_ID:
+              type: string
+              description: "Specify image id to execute tests against custom images"
+              default: ""
+            FLAVOR_ID:
+              type: string
+              description: "Specify flavor id to execute tests against custom images"
+              default: ""
+            MIN_COMPUTE_NODES:
+              type: string
+              description: "Specify number of compute nodes of environment"
+              default: '2'
+            FIXED_SHARED_NETWORK_NAME:
+              type: string
+              description: "Shared network that will be used in tests."
+              default: "test-shared"
+            COMPUTE_NODE_HOST_NAME:
+              type: string
+              description: "To run CPU pinning/NUMA topology tests against specific node"
+              default: ''
+            COMPUTE_AVAILABILITY_ZONE:
+              type: string
+              description: "To run CPU pinning/NUMA topology tests against specific node"
+              default: 'nova'
+            COMPUTE_NUMA_NODE_COUNT:
+              type: string
+              description: "Number of NUMA node for NUMA topology testing."
+              default: '2'
+            IMAGE_SSH_USER:
+              type: string
+              description: "Specify user name to login in test OpenStack VMs"
+              default: "cirros"
+            VNF_PLATFORM_TESTS_REPO:
+              type: string
+              description: "Repository with testing framework"
+              default: "${_param:jenkins_gerrit_url}vnf-onboarding/platform-tests"
+            VNF_PLATFORM_TESTS_BRANCH:
+              type: string
+              default: "master"
+            VNF_PLATFORM_TESTS_REPO_CREDENTIALS:
+              type: string
+              default: "${_param:vnf_gerrit_credentials}"
+            TEMPEST_IMAGE_DOCKER_REGISTRY_PATH:
+              type: string
+              description: "Path for docker image with testing tool.  If empty, image will be build using VNF_PLATFORM_TESTS_* parameters."
+              default: ${_param:vnf_docker_registry_path}
+            TEMPEST_IMAGE_NAME:
+              type: string
+              description: "Name of docker image with testing tool"
+              default: "platform_tests:latest"
+            ELASTIC_URL:
+              type: string
+              description: "URL to elastic search API"
+              default: "${_param:vnf_elastic_url}"
+            ELASTIC_TRANSFER_REPO:
+              type: string
+              description: "Repository with scripts for transfering test results to elastic search"
+              default: "${_param:jenkins_gerrit_url}/vnf-onboarding/nfv-platform"
+            ELASTIC_TRANSFER_REPO_CREDENTIALS:
+              type: string
+              default: "${_param:vnf_gerrit_credentials}"
+            ELASTIC_TRANSFER_REPO_BRANCH:
+              type: string
+              default: "master"
+            DOCKER_TEMPEST_PARAMS:
+              type: string
+              description: "Pass custom parameters for tempest container"
+              default: ""
diff --git a/nginx/server/proxy/openstack/aodh.yml b/nginx/server/proxy/openstack/aodh.yml
index bd73165..d15bca5 100644
--- a/nginx/server/proxy/openstack/aodh.yml
+++ b/nginx/server/proxy/openstack/aodh.yml
@@ -3,6 +3,7 @@
     nginx_proxy_openstack_api_host: ${_param:cluster_public_host}
     nginx_proxy_openstack_api_address: 0.0.0.0
     nginx_proxy_openstack_aodh_host: ${_param:aodh_service_host}
+    nginx_proxy_openstack_aodh_protocol: 'http'
   nginx:
     server:
       enabled: true
@@ -15,7 +16,7 @@
           proxy:
             host: ${_param:nginx_proxy_openstack_aodh_host}
             port: 8042
-            protocol: http
+            protocol: ${_param:nginx_proxy_openstack_aodh_protocol}
           host:
             name: ${_param:nginx_proxy_openstack_api_host}
             port: 8042
diff --git a/nginx/server/proxy/openstack/barbican.yml b/nginx/server/proxy/openstack/barbican.yml
index 89e5a9c..6ac6a14 100644
--- a/nginx/server/proxy/openstack/barbican.yml
+++ b/nginx/server/proxy/openstack/barbican.yml
@@ -3,6 +3,7 @@
     nginx_proxy_openstack_api_host: ${_param:cluster_public_host}
     nginx_proxy_openstack_api_address: 0.0.0.0
     nginx_proxy_openstack_barbican_host: ${_param:barbican_service_host}
+    nginx_proxy_openstack_barbican_protocol: 'http'
   nginx:
     server:
       enabled: true
@@ -15,7 +16,7 @@
           proxy:
             host: ${_param:nginx_proxy_openstack_barbican_host}
             port: 9311
-            protocol: http
+            protocol: ${_param:nginx_proxy_openstack_barbican_protocol}
           host:
             name: ${_param:nginx_proxy_openstack_api_host}
             port: 9311
diff --git a/nginx/server/proxy/openstack/ceilometer.yml b/nginx/server/proxy/openstack/ceilometer.yml
index 938b6cf..78b1f00 100644
--- a/nginx/server/proxy/openstack/ceilometer.yml
+++ b/nginx/server/proxy/openstack/ceilometer.yml
@@ -3,6 +3,7 @@
     nginx_proxy_openstack_api_host: ${_param:cluster_public_host}
     nginx_proxy_openstack_api_address: 0.0.0.0
     nginx_proxy_openstack_ceilometer_host: ${_param:ceilometer_service_host}
+    nginx_proxy_openstack_ceilometer_protocol: 'http'
   nginx:
     server:
       enabled: true
@@ -15,7 +16,7 @@
           proxy:
             host: ${_param:nginx_proxy_openstack_ceilometer_host}
             port: 8777
-            protocol: http
+            protocol: ${_param:nginx_proxy_openstack_ceilometer_protocol}
           host:
             name: ${_param:nginx_proxy_openstack_api_host}
             port: 8777
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/designate.yml b/nginx/server/proxy/openstack/designate.yml
index c238775..ce92ff6 100644
--- a/nginx/server/proxy/openstack/designate.yml
+++ b/nginx/server/proxy/openstack/designate.yml
@@ -3,6 +3,7 @@
     nginx_proxy_openstack_api_host: ${_param:cluster_public_host}
     nginx_proxy_openstack_api_address: 0.0.0.0
     nginx_proxy_openstack_designate_host: ${_param:designate_service_host}
+    nginx_proxy_openstack_designate_protocol: 'http'
   nginx:
     server:
       enabled: true
@@ -14,7 +15,7 @@
           proxy:
             host: ${_param:nginx_proxy_openstack_designate_host}
             port: 9001
-            protocol: http
+            protocol: ${_param:nginx_proxy_openstack_designate_protocol}
           host:
             name: ${_param:nginx_proxy_openstack_api_host}
             port: 9001
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/gnocchi.yml b/nginx/server/proxy/openstack/gnocchi.yml
index 2f6d0e5..6169648 100644
--- a/nginx/server/proxy/openstack/gnocchi.yml
+++ b/nginx/server/proxy/openstack/gnocchi.yml
@@ -3,6 +3,7 @@
     nginx_proxy_openstack_api_host: ${_param:cluster_public_host}
     nginx_proxy_openstack_api_address: 0.0.0.0
     nginx_proxy_openstack_gnocchi_host: ${_param:gnocchi_service_host}
+    nginx_proxy_openstack_gnocchi_protocol: 'http'
   nginx:
     server:
       enabled: true
@@ -15,7 +16,7 @@
           proxy:
             host: ${_param:nginx_proxy_openstack_gnocchi_host}
             port: 8041
-            protocol: http
+            protocol: ${_param:nginx_proxy_openstack_gnocchi_protocol}
           host:
             name: ${_param:nginx_proxy_openstack_api_host}
             port: 8041
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/ironic.yml b/nginx/server/proxy/openstack/ironic.yml
index 95eb1bd..6ccedb3 100644
--- a/nginx/server/proxy/openstack/ironic.yml
+++ b/nginx/server/proxy/openstack/ironic.yml
@@ -3,6 +3,7 @@
     nginx_proxy_openstack_api_host: ${_param:cluster_public_host}
     nginx_proxy_openstack_api_address: 0.0.0.0
     nginx_proxy_openstack_ironic_host: ${_param:ironic_service_host}
+    nginx_proxy_openstack_ironic_protocol: 'http'
   nginx:
     server:
       enabled: true
@@ -14,7 +15,7 @@
           proxy:
             host: ${_param:nginx_proxy_openstack_ironic_host}
             port: 6385
-            protocol: http
+            protocol: ${_param:nginx_proxy_openstack_ironic_protocol}
           host:
             name: ${_param:nginx_proxy_openstack_api_host}
             port: 6385
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/manila.yml b/nginx/server/proxy/openstack/manila.yml
index 050d0de..8157dd8 100644
--- a/nginx/server/proxy/openstack/manila.yml
+++ b/nginx/server/proxy/openstack/manila.yml
@@ -3,6 +3,7 @@
     nginx_proxy_openstack_api_host: ${_param:cluster_public_host}
     nginx_proxy_openstack_api_address: 0.0.0.0
     nginx_proxy_openstack_manila_host: ${_param:manila_service_host}
+    nginx_proxy_openstack_manila_protocol: 'http'
   nginx:
     server:
       enabled: true
@@ -14,7 +15,7 @@
           proxy:
             host: ${_param:nginx_proxy_openstack_manila_host}
             port: 8786
-            protocol: http
+            protocol: ${_param:nginx_proxy_openstack_manila_protocol}
           host:
             name: ${_param:nginx_proxy_openstack_api_host}
             port: 8786
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/panko.yml b/nginx/server/proxy/openstack/panko.yml
index 6081dd1..45d389b 100644
--- a/nginx/server/proxy/openstack/panko.yml
+++ b/nginx/server/proxy/openstack/panko.yml
@@ -3,6 +3,7 @@
     nginx_proxy_openstack_api_host: ${_param:cluster_public_host}
     nginx_proxy_openstack_api_address: 0.0.0.0
     nginx_proxy_openstack_panko_host: ${_param:panko_service_host}
+    nginx_proxy_openstack_panko_protocol: 'http'
   nginx:
     server:
       enabled: true
@@ -15,7 +16,7 @@
           proxy:
             host: ${_param:nginx_proxy_openstack_panko_host}
             port: 8977
-            protocol: http
+            protocol: ${_param:nginx_proxy_openstack_panko_protocol}
           host:
             name: ${_param:nginx_proxy_openstack_api_host}
             port: 8977
diff --git a/nginx/server/proxy/openstack/placement.yml b/nginx/server/proxy/openstack/placement.yml
index eda272c..9e8b08c 100644
--- a/nginx/server/proxy/openstack/placement.yml
+++ b/nginx/server/proxy/openstack/placement.yml
@@ -3,6 +3,7 @@
     nginx_proxy_openstack_api_host: ${_param:cluster_public_host}
     nginx_proxy_openstack_api_address: 0.0.0.0
     nginx_proxy_openstack_placement_host: ${_param:placement_service_host}
+    nginx_proxy_openstack_placement_protocol: 'http'
   nginx:
     server:
       enabled: true
@@ -14,7 +15,7 @@
           proxy:
             host: ${_param:nginx_proxy_openstack_placement_host}
             port: 8778
-            protocol: http
+            protocol: ${_param:nginx_proxy_openstack_placement_protocol}
           host:
             name: ${_param:nginx_proxy_openstack_api_host}
             port: 8778
diff --git a/nginx/server/proxy/openstack_api.yml b/nginx/server/proxy/openstack_api.yml
index 4f6073d..f9f363d 100644
--- a/nginx/server/proxy/openstack_api.yml
+++ b/nginx/server/proxy/openstack_api.yml
@@ -1,154 +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:
-    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: http
-          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: http
-          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: http
-          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: http
-          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: http
-            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: http
-          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: http
-          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: http
-          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: http
-          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: http
-          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: