Merge "Refactor vnf-onboarding to make VNF choice configurable"
diff --git a/aptly/server/mirror/ubuntu/trusty/mcp/apt_mk/cassandra.yml b/aptly/server/mirror/ubuntu/trusty/mcp/apt_mk/cassandra.yml
index 41f7e0c..57c669f 100644
--- a/aptly/server/mirror/ubuntu/trusty/mcp/apt_mk/cassandra.yml
+++ b/aptly/server/mirror/ubuntu/trusty/mcp/apt_mk/cassandra.yml
@@ -1,12 +1,14 @@
 parameters:
   _param:
     apt_mk_version: stable
-    mirror_mirantis_openstack_trusty_cassandra_source: http://apt.mirantis.com/trusty/cassandra/
-    mirror_mirantis_openstack_trusty_cassandra_distribution: ${_param:apt_mk_version}
-    mirror_mirantis_openstack_trusty_cassandra_components: 21x
-    mirror_mirantis_openstack_trusty_cassandra_key_url: "http://apt.mirantis.com/public.gpg"
+    mirror_mirantis_openstack_trusty_cassandra_source: http://mirror.mirantis.com/${_param:apt_mk_version}/cassandra/trusty/
+    mirror_mirantis_openstack_trusty_cassandra_distribution: 21x
+    mirror_mirantis_openstack_trusty_cassandra_components: main
     mirror_mirantis_openstack_trusty_cassandra_gpgkeys:
-      - A76882D3
+      - A278B781FE4B2BDA
+      - F758CE318D77295D
+      - 2B5C1B00
+      - 0353B12C
   aptly:
     server:
       mirror:
@@ -15,9 +17,8 @@
           distribution: ${_param:mirror_mirantis_openstack_trusty_cassandra_distribution}
           components: ${_param:mirror_mirantis_openstack_trusty_cassandra_components}
           architectures: amd64
-          key_url: ${_param:mirror_mirantis_openstack_trusty_cassandra_key_url}
           gpgkeys: ${_param:mirror_mirantis_openstack_trusty_cassandra_gpgkeys}
           publisher:
-            component: ${_param:mirror_mirantis_openstack_trusty_cassandra_components}
+            component: 21x
             distributions:
               - ubuntu-trusty/cassandra/${_param:apt_mk_version}
\ No newline at end of file
diff --git a/aptly/server/mirror/ubuntu/trusty/mcp/apt_mk/grafana.yml b/aptly/server/mirror/ubuntu/trusty/mcp/apt_mk/grafana.yml
index 197e58c..7e6fa70 100644
--- a/aptly/server/mirror/ubuntu/trusty/mcp/apt_mk/grafana.yml
+++ b/aptly/server/mirror/ubuntu/trusty/mcp/apt_mk/grafana.yml
@@ -1,12 +1,11 @@
 parameters:
   _param:
     apt_mk_version: stable
-    mirror_mirantis_openstack_trusty_grafana_source: http://apt.mirantis.com/trusty/grafana/
-    mirror_mirantis_openstack_trusty_grafana_distribution: ${_param:apt_mk_version}
+    mirror_mirantis_openstack_trusty_grafana_source: http://mirror.mirantis.com/${_param:apt_mk_version}/grafana/trusty/
+    mirror_mirantis_openstack_trusty_grafana_distribution: jessie
     mirror_mirantis_openstack_trusty_grafana_components: main
-    mirror_mirantis_openstack_trusty_grafana_key_url: "http://apt.mirantis.com/public.gpg"
     mirror_mirantis_openstack_trusty_grafana_gpgkeys:
-      - A76882D3
+      - D59097AB
   aptly:
     server:
       mirror:
@@ -15,9 +14,8 @@
           distribution: ${_param:mirror_mirantis_openstack_trusty_grafana_distribution}
           components: ${_param:mirror_mirantis_openstack_trusty_grafana_components}
           architectures: amd64
-          key_url: ${_param:mirror_mirantis_openstack_trusty_grafana_key_url}
           gpgkeys: ${_param:mirror_mirantis_openstack_trusty_grafana_gpgkeys}
           publisher:
-            component: ${_param:mirror_mirantis_openstack_trusty_grafana_components}
+            component: main
             distributions:
               - ubuntu-trusty/grafana/${_param:apt_mk_version}
\ No newline at end of file
diff --git a/aptly/server/mirror/ubuntu/trusty/mcp/apt_mk/saltstack/salt-2016-3.yml b/aptly/server/mirror/ubuntu/trusty/mcp/apt_mk/saltstack/salt-2016-3.yml
index 19b002a..62972a2 100644
--- a/aptly/server/mirror/ubuntu/trusty/mcp/apt_mk/saltstack/salt-2016-3.yml
+++ b/aptly/server/mirror/ubuntu/trusty/mcp/apt_mk/saltstack/salt-2016-3.yml
@@ -1,12 +1,11 @@
 parameters:
   _param:
     apt_mk_version: stable
-    mirror_mirantis_openstack_trusty_saltstack_2016_3_source: http://apt.mirantis.com/trusty/salt/2016.3/
-    mirror_mirantis_openstack_trusty_saltstack_2016_3_distribution: ${_param:apt_mk_version}
+    mirror_mirantis_openstack_trusty_saltstack_2016_3_source: http://mirror.mirantis.com/${_param:apt_mk_version}/saltstack-2016.3/trusty/
+    mirror_mirantis_openstack_trusty_saltstack_2016_3_distribution: trusty
     mirror_mirantis_openstack_trusty_saltstack_2016_3_components: main
-    mirror_mirantis_openstack_trusty_saltstack_2016_3_key_url: "http://apt.mirantis.com/public.gpg"
     mirror_mirantis_openstack_trusty_saltstack_2016_3_gpgkeys:
-      - A76882D3
+      - DE57BFBE
   aptly:
     server:
       mirror:
@@ -15,9 +14,8 @@
           distribution: ${_param:mirror_mirantis_openstack_trusty_saltstack_2016_3_distribution}
           components: ${_param:mirror_mirantis_openstack_trusty_saltstack_2016_3_components}
           architectures: amd64
-          key_url: ${_param:mirror_mirantis_openstack_trusty_saltstack_2016_3_key_url}
           gpgkeys: ${_param:mirror_mirantis_openstack_trusty_saltstack_2016_3_gpgkeys}
           publisher:
-            component: ${_param:mirror_mirantis_openstack_trusty_saltstack_2016_3_components}
+            component: main
             distributions:
               - ubuntu-trusty/salt/2016.3/${_param:apt_mk_version}
\ No newline at end of file
diff --git a/aptly/server/mirror/ubuntu/trusty/mcp/apt_mk/saltstack/salt-2017-7.yml b/aptly/server/mirror/ubuntu/trusty/mcp/apt_mk/saltstack/salt-2017-7.yml
index 703d0bf..ad1ffcf 100644
--- a/aptly/server/mirror/ubuntu/trusty/mcp/apt_mk/saltstack/salt-2017-7.yml
+++ b/aptly/server/mirror/ubuntu/trusty/mcp/apt_mk/saltstack/salt-2017-7.yml
@@ -1,12 +1,11 @@
 parameters:
   _param:
     apt_mk_version: stable
-    mirror_mirantis_openstack_trusty_saltstack_2017_7_source: http://apt.mirantis.com/trusty/salt/2017.7/
-    mirror_mirantis_openstack_trusty_saltstack_2017_7_distribution: ${_param:apt_mk_version}
+    mirror_mirantis_openstack_trusty_saltstack_2017_7_source: http://mirror.mirantis.com/${_param:apt_mk_version}/saltstack-2017.7/trusty/
+    mirror_mirantis_openstack_trusty_saltstack_2017_7_distribution: trusty
     mirror_mirantis_openstack_trusty_saltstack_2017_7_components: main
-    mirror_mirantis_openstack_trusty_saltstack_2017_7_key_url: "http://apt.mirantis.com/public.gpg"
     mirror_mirantis_openstack_trusty_saltstack_2017_7_gpgkeys:
-      - A76882D3
+      - DE57BFBE
   aptly:
     server:
       mirror:
@@ -15,9 +14,8 @@
           distribution: ${_param:mirror_mirantis_openstack_trusty_saltstack_2017_7_distribution}
           components: ${_param:mirror_mirantis_openstack_trusty_saltstack_2017_7_components}
           architectures: amd64
-          key_url: ${_param:mirror_mirantis_openstack_trusty_saltstack_2017_7_key_url}
           gpgkeys: ${_param:mirror_mirantis_openstack_trusty_saltstack_2017_7_gpgkeys}
           publisher:
-            component: ${_param:mirror_mirantis_openstack_trusty_saltstack_2017_7_components}
+            component: main
             distributions:
-              - ubuntu-trusty/salt/2017.7/${_param:apt_mk_version}
\ No newline at end of file
+              - ubuntu-trusty/salt/2017.7/${_param:apt_mk_version}
diff --git a/aptly/server/mirror/ubuntu/xenial/mcp/apt_mk/elastic/2x.yml b/aptly/server/mirror/ubuntu/xenial/mcp/apt_mk/elastic/2x.yml
index 1bf92ed..7e34831 100644
--- a/aptly/server/mirror/ubuntu/xenial/mcp/apt_mk/elastic/2x.yml
+++ b/aptly/server/mirror/ubuntu/xenial/mcp/apt_mk/elastic/2x.yml
@@ -2,6 +2,7 @@
   _param:
     apt_mk_version: stable
     mirror_mirantis_openstack_xenial_elastic_2x_source: http://mirror.mirantis.com/${_param:apt_mk_version}/elasticsearch-2.x/xenial/
+    mirror_mirantis_openstack_xenial_elastic_curator_2x_source: http://mirror.mirantis.com/${_param:apt_mk_version}/elasticsearch-curator/xenial/
     mirror_mirantis_openstack_xenial_elastic_2x_distribution: stable
     mirror_mirantis_openstack_xenial_elastic_2x_components: main
     mirror_mirantis_openstack_xenial_elastic_2x_gpgkeys:
@@ -18,4 +19,14 @@
           publisher:
             component: main
             distributions:
-              - ubuntu-xenial/elastic/2.x/${_param:apt_mk_version}
\ No newline at end of file
+              - ubuntu-xenial/elastic/2.x/${_param:apt_mk_version}
+        mirantis_openstack_xenial_elastic_curator_2x:
+          source: ${_param:mirror_mirantis_openstack_xenial_elastic_curator_2x_source}
+          distribution: ${_param:mirror_mirantis_openstack_xenial_elastic_2x_distribution}
+          components: ${_param:mirror_mirantis_openstack_xenial_elastic_2x_components}
+          architectures: amd64
+          gpgkeys: ${_param:mirror_mirantis_openstack_xenial_elastic_2x_gpgkeys}
+          publisher:
+            component: main
+            distributions:
+              - ubuntu-xenial/elastic/2.x/${_param:apt_mk_version}
diff --git a/aptly/server/mirror/ubuntu/xenial/mcp/apt_mk/elastic/5x.yml b/aptly/server/mirror/ubuntu/xenial/mcp/apt_mk/elastic/5x.yml
index 1281c30..d746410 100644
--- a/aptly/server/mirror/ubuntu/xenial/mcp/apt_mk/elastic/5x.yml
+++ b/aptly/server/mirror/ubuntu/xenial/mcp/apt_mk/elastic/5x.yml
@@ -2,6 +2,7 @@
   _param:
     apt_mk_version: stable
     mirror_mirantis_openstack_xenial_elastic_5x_source: http://mirror.mirantis.com/${_param:apt_mk_version}/elasticsearch-5.x/xenial/
+    mirror_mirantis_openstack_xenial_elastic_curator_5x_source: http://mirror.mirantis.com/${_param:apt_mk_version}/elasticsearch-curator-5/xenial/
     mirror_mirantis_openstack_xenial_elastic_5x_distribution: stable
     mirror_mirantis_openstack_xenial_elastic_5x_components: main
     mirror_mirantis_openstack_xenial_elastic_5x_gpgkeys:
@@ -19,3 +20,13 @@
             component: main
             distributions:
               - ubuntu-xenial/elastic/5.x/${_param:apt_mk_version}
+        mirantis_openstack_xenial_elastic_curator_5x:
+          source: ${_param:mirror_mirantis_openstack_xenial_elastic_curator_5x_source}
+          distribution: ${_param:mirror_mirantis_openstack_xenial_elastic_5x_distribution}
+          components: ${_param:mirror_mirantis_openstack_xenial_elastic_5x_components}
+          architectures: amd64
+          gpgkeys: ${_param:mirror_mirantis_openstack_xenial_elastic_5x_gpgkeys}
+          publisher:
+            component: main
+            distributions:
+              - ubuntu-xenial/elastic/5.x/${_param:apt_mk_version}
diff --git a/ceilometer/client/nova_control.yml b/ceilometer/client/nova_control.yml
index 252c67e..7ac8f89 100644
--- a/ceilometer/client/nova_control.yml
+++ b/ceilometer/client/nova_control.yml
@@ -3,3 +3,5 @@
     controller:
       notification:
         driver: messagingv2
+        notify_on:
+          state_change: vm_and_task_state
diff --git a/debmirror/mirror_mirantis_com/ubuntu/xenial.yml b/debmirror/mirror_mirantis_com/ubuntu/xenial.yml
index 4a199bf..6a38787 100644
--- a/debmirror/mirror_mirantis_com/ubuntu/xenial.yml
+++ b/debmirror/mirror_mirantis_com/ubuntu/xenial.yml
@@ -80,6 +80,10 @@
           - multiverse/debug
           - restricted/debug
           - universe/debug
+          - comm
+          - multiverse/comm
+          - universe/comm
+          - restricted/comm
           # Updating filter, please always start from section, aka main|universe|multiverse
           filter:
             1: "--exclude='android*'"
@@ -171,6 +175,4 @@
             803: "--include='/main(.*)unittest2'" # openstack* pkgs
             804: "--include='/main(.*)libbluetooth3'" # python-guestfs
             805: "--include='/main(.*)llvm-toolchain-5.0'" # pki-ca: < 389-ds-base < dogtag
-
-
-
+            806: "--include='/main(.*)man-db'" # include man tool
diff --git a/horizon/server/plugin/contrail.yml b/horizon/server/plugin/contrail.yml
index 669dbb6..03da87e 100644
--- a/horizon/server/plugin/contrail.yml
+++ b/horizon/server/plugin/contrail.yml
@@ -9,3 +9,5 @@
         horizon_overrides:
           overrides:
           - contrail_openstack_dashboard
+      openstack_neutron_network:
+        enable_fip_topology_check: False
\ No newline at end of file
diff --git a/jenkins/client/approved_scripts.yml b/jenkins/client/approved_scripts.yml
index 70aa9e6..1fb68c9 100644
--- a/jenkins/client/approved_scripts.yml
+++ b/jenkins/client/approved_scripts.yml
@@ -12,6 +12,7 @@
         - method groovy.json.JsonSlurperClassic parseText java.lang.String
         - method groovy.lang.GString getBytes
         - method groovy.lang.GroovyObject getProperty java.lang.String
+        - method groovy.util.Node get java.lang.String
         - method groovy.util.Node attributes
         - method groovy.util.XmlParser parse java.io.File
         - method groovy.util.XmlParser parseText java.lang.String
@@ -71,6 +72,7 @@
         - method java.util.Calendar add int int
         - method java.util.Calendar getTime
         - method java.util.Date before java.util.Date
+        - method java.text.DateFormat parse java.lang.String
         - method jenkins.model.Jenkins getItemByFullName java.lang.String
         - method jenkins.model.Jenkins getPluginManager
         - method org.jenkinsci.plugins.workflow.job.WorkflowRun doStop
@@ -93,6 +95,7 @@
         - new java.util.ArrayList
         - new java.util.Date
         - new java.util.HashMap
+        - new java.text.SimpleDateFormat java.lang.String java.util.Locale
         - staticField groovy.io.FileType FILES
         - staticMethod com.cloudbees.plugins.credentials.CredentialsProvider lookupCredentials java.lang.Class hudson.model.ItemGroup
         - staticMethod java.lang.Double parseDouble java.lang.String
diff --git a/jenkins/client/init.yml b/jenkins/client/init.yml
index e4a3fcd..856eec5 100644
--- a/jenkins/client/init.yml
+++ b/jenkins/client/init.yml
@@ -37,6 +37,7 @@
         ldap: {}
         matrix-auth: {}
         monitoring: {}
+        performance: {}
         pipeline-utility-steps: {}
         rebuild: {}
         simple-theme-plugin: {}
diff --git a/jenkins/client/job/deploy/lab/component/kubernetes.yml b/jenkins/client/job/deploy/lab/component/kubernetes.yml
index 8cbf766..995acb5 100644
--- a/jenkins/client/job/deploy/lab/component/kubernetes.yml
+++ b/jenkins/client/job/deploy/lab/component/kubernetes.yml
@@ -39,3 +39,9 @@
         stack_install: core,k8s,calico
         stack_test: ""
         job_timer: "H H(0-6) * * *"
+      - stack_name: k8s_ha_calico_flannel_virtlet
+        stack_env: devcloud
+        stack_type: heat
+        stack_install: core,k8s
+        stack_test: "k8s"
+        job_timer: "H H(0-6) * * *"
diff --git a/jenkins/client/job/docker/build-images.yml b/jenkins/client/job/docker/build-images.yml
index 12c84c1..adc1ba8 100644
--- a/jenkins/client/job/docker/build-images.yml
+++ b/jenkins/client/job/docker/build-images.yml
@@ -59,6 +59,14 @@
               DOCKER_GIT_TAG:
                 type: boolean
                 default: "true"
+              ARTIFACTORY_URL:
+                type: string
+                default: "docker-dev-virtual.docker.mirantis.net"
+                description: "URL to artifactory"
+              ARTIFACTORY_NAMESPACE:
+                type: string
+                default: cicd
+                description: "Artifactory namespace (oss, cicd,...)"
               EXTRA_REPO_URL:
                 type: string
                 default: "${_param:jenkins_aptly_url}"
diff --git a/jenkins/client/job/docker/init.yml b/jenkins/client/job/docker/init.yml
index e3619b1..00411fb 100644
--- a/jenkins/client/job/docker/init.yml
+++ b/jenkins/client/job/docker/init.yml
@@ -98,6 +98,14 @@
               REGISTRY_CREDENTIALS_ID:
                 type: string
                 default: "mirantis-dockerhub"
+              ARTIFACTORY_URL:
+                type: string
+                default: "docker-dev-virtual.docker.mirantis.net"
+                description: "URL to artifactory"
+              ARTIFACTORY_NAMESPACE:
+                type: string
+                default: cicd
+                description: "Artifactory namespace (oss, cicd,...)"
               DOCKER_GIT_TAG:
                 type: boolean
                 default: "true"
diff --git a/jenkins/client/job/oscore/qa.yml b/jenkins/client/job/oscore/qa.yml
index eb565a2..6d54082 100644
--- a/jenkins/client/job/oscore/qa.yml
+++ b/jenkins/client/job/oscore/qa.yml
@@ -71,11 +71,6 @@
                     branches:
                       - compare_type: "PLAIN"
                         name: "master"
-                skip_vote:
-                  - successful
-                  - failed
-                  - unstable
-                  - not_built
                 event:
                   patchset:
                     - created
diff --git a/jenkins/client/job/oscore/salt_virtual_models.yml b/jenkins/client/job/oscore/salt_virtual_models.yml
index 17c4aa8..4377a7f 100644
--- a/jenkins/client/job/oscore/salt_virtual_models.yml
+++ b/jenkins/client/job/oscore/salt_virtual_models.yml
@@ -19,10 +19,18 @@
           display_name: oscore-test-virtual-model
           name: oscore-test-virtual-model
           param:
+            SALT_MASTER_CREDENTIALS:
+              type: string
+              default: "salt-qa-credentials"
+              description: Jenkins credential ID for Salt master
             CREDENTIALS_ID:
               default: gerrit
               type: string
               description: "Name of creadentials to use when connecting to gerrit"
+            ARTIFACTORY_CREDENTIALS:
+              type: string
+              default: "artifactory"
+              description: Jenkins credential ID for Artifactory
             HEAT_STACK_ZONE:
               type: string
               description: "Heat stack zone where build stack"
@@ -84,7 +92,7 @@
             TEST_TARGET:
               type: string
               description: Node to run tests
-              default: "cfg01*"
+              default: "gtw01*"
             TEST_CONCURRENCY:
               type: string
               description: How much test threads to run
@@ -93,6 +101,10 @@
               type: boolean
               default: "false"
               description: Enabling of running smoke tests
+            USE_RALLY:
+              type: boolean
+              description: Whether to use container with rally
+              default: "false"
           scm:
             script: test-virtual-model-pipeline.groovy
             type: git
diff --git a/jenkins/client/job/oscore/tests.yml b/jenkins/client/job/oscore/tests.yml
index d06160e..a2a3dec 100644
--- a/jenkins/client/job/oscore/tests.yml
+++ b/jenkins/client/job/oscore/tests.yml
@@ -144,6 +144,10 @@
                 type: string
                 default: "salt-qa-credentials"
                 description: Jenkins credential ID for Salt master
+              USE_RALLY:
+                type: boolean
+                description: Whether to use container with rally
+                default: "{{use_rally}}"
         test-openstack-component-periodic:
           name: "{{job_prefix}}-{{milestone}}-{{model}}-{{openstack_version}}-{{formula_pkg_revision}}"
           template:
@@ -283,6 +287,14 @@
                 type: boolean
                 default: "{{run_smoke}}"
                 description: Enabling of running smoke tests
+              SALT_MASTER_CREDENTIALS:
+                type: string
+                default: "salt-qa-credentials"
+                description: Jenkins credential ID for Salt master
+              USE_RALLY:
+                type: boolean
+                description: Whether to use container with rally
+                default: "{{use_rally}}"
         test-runner-template:
           name: "{{job_prefix}}-{{test_type}}-runner"
           template:
@@ -378,6 +390,10 @@
                 type: boolean
                 description: Whether to use pepper to connect to salt master
                 default: 'false'
+              USE_RALLY:
+                type: boolean
+                description: Whether to use container with rally
+                default: 'true'
         results-checker-template:
           name: "{{job_prefix}}-{{test_type}}-results-checker"
           template:
diff --git a/jenkins/client/job/salt-formulas/tests.yml b/jenkins/client/job/salt-formulas/tests.yml
index 73d9083..07a8fb4 100644
--- a/jenkins/client/job/salt-formulas/tests.yml
+++ b/jenkins/client/job/salt-formulas/tests.yml
@@ -115,6 +115,7 @@
             - name: salt
             - name: sensu
             - name: sentry
+            - name: shibboleth
             - name: sphinx
             - name: spinnaker
             - name: statsd
diff --git a/linux/system/motd/static.yml b/linux/system/motd/static.yml
index 774abc6..c0e23c0 100644
--- a/linux/system/motd/static.yml
+++ b/linux/system/motd/static.yml
@@ -1,12 +1,20 @@
 parameters:
+  _param:
+    motd_company_name: COMPANY_NAME
   linux:
     system:
       motd: |
-        WARNING: This is private network
-        Unauthorized access is strictly prohibited
+        =================================== WARNING ====================================
+        You have accessed a computer managed by ${_param:motd_company_name}.
+        You are required to have authorisation from ${_param:motd_company_name}
+        before you proceed and you are strictly limited to use set out within that
+        authorisation.  Unauthorised access to or misuse of this system is prohibited
+        and constitutes an offence under the Computer Misuse Act 1990.
+        If you disclose  any information obtained through this system without
+        authority ${_param:motd_company_name} may take legal action against you.
+        ================================================================================
 
         ------------------------------------------------------
          Hostname     |  ${linux:system:name}
          Domain       |  ${linux:system:domain}
         ------------------------------------------------------
-        
diff --git a/linux/system/repo/mcp/apt_mirantis/elastic/2x.yml b/linux/system/repo/mcp/apt_mirantis/elastic/2x.yml
index 1db8267..9fc19c6 100644
--- a/linux/system/repo/mcp/apt_mirantis/elastic/2x.yml
+++ b/linux/system/repo/mcp/apt_mirantis/elastic/2x.yml
@@ -11,3 +11,9 @@
           key_id: D88E42B4
           key_server: keyserver.ubuntu.com
           clean_file: true
+        mcp_elastic_curator_2x:
+          source: "deb [arch=amd64] http://mirror.mirantis.com/${_param:linux_system_repo_mcp_elastic_2x_version}/elasticsearch-curator/${_param:linux_system_codename}/ stable main"
+          architectures: amd64
+          key_id: D88E42B4
+          key_server: keyserver.ubuntu.com
+          clean_file: true
diff --git a/linux/system/repo/mcp/apt_mirantis/elastic/5x.yml b/linux/system/repo/mcp/apt_mirantis/elastic/5x.yml
index 453b3bc..01d2ff0 100644
--- a/linux/system/repo/mcp/apt_mirantis/elastic/5x.yml
+++ b/linux/system/repo/mcp/apt_mirantis/elastic/5x.yml
@@ -11,3 +11,10 @@
           key_id: D88E42B4
           key_server: keyserver.ubuntu.com
           clean_file: true
+        mcp_elastic_curator_5x:
+          source: "deb [arch=amd64] http://mirror.mirantis.com/${_param:linux_system_repo_mcp_elastic_5x_version}/elasticsearch-curator-5/${_param:linux_system_codename}/ stable main"
+          architectures: amd64
+          key_id: D88E42B4
+          key_server: keyserver.ubuntu.com
+          clean_file: true
+
diff --git a/nginx/server/proxy/openstack_api.yml b/nginx/server/proxy/openstack_api.yml
index f9f363d..9492c56 100644
--- a/nginx/server/proxy/openstack_api.yml
+++ b/nginx/server/proxy/openstack_api.yml
@@ -8,4 +8,3 @@
 - 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/reclass/storage/system/kubernetes_contrail_cluster.yml b/reclass/storage/system/kubernetes_contrail_cluster.yml
new file mode 100644
index 0000000..49a70e2
--- /dev/null
+++ b/reclass/storage/system/kubernetes_contrail_cluster.yml
@@ -0,0 +1,54 @@
+parameters:
+  _param:
+    kubernetes_control_node01_hostname: kct01
+    kubernetes_control_node02_hostname: kct02
+    kubernetes_control_node03_hostname: kct03
+    kubernetes_control_node01_deploy_address: ${_param:kubernetes_control_node01_address}
+    kubernetes_control_node02_deploy_address: ${_param:kubernetes_control_node02_address}
+    kubernetes_control_node03_deploy_address: ${_param:kubernetes_control_node03_address}
+    kubernetes_control_system_codename: xenial
+  reclass:
+    storage:
+      node:
+        kubernetes_control_node01:
+          name: ${_param:kubernetes_control_node01_hostname}
+          domain: ${_param:cluster_domain}
+          classes:
+          - cluster.${_param:cluster_name}.kubernetes.control
+          - cluster.${_param:cluster_name}.opencontrail.control
+          params:
+            salt_master_host: ${_param:reclass_config_master}
+            linux_system_codename: ${_param:kubernetes_control_system_codename}
+            single_address: ${_param:kubernetes_control_node01_address}
+            deploy_address: ${_param:kubernetes_control_node01_deploy_address}
+            keepalived_vip_priority: 103
+            opencontrail_database_id: 1
+            rabbitmq_cluster_role: master
+        kubernetes_control_node02:
+          name: ${_param:kubernetes_control_node02_hostname}
+          domain: ${_param:cluster_domain}
+          classes:
+          - cluster.${_param:cluster_name}.kubernetes.control
+          - cluster.${_param:cluster_name}.opencontrail.control
+          params:
+            salt_master_host: ${_param:reclass_config_master}
+            linux_system_codename: ${_param:kubernetes_control_system_codename}
+            single_address: ${_param:kubernetes_control_node02_address}
+            deploy_address: ${_param:kubernetes_control_node02_deploy_address}
+            keepalived_vip_priority: 102
+            opencontrail_database_id: 2
+            rabbitmq_cluster_role: slave
+        kubernetes_control_node03:
+          name: ${_param:kubernetes_control_node03_hostname}
+          domain: ${_param:cluster_domain}
+          classes:
+          - cluster.${_param:cluster_name}.kubernetes.control
+          - cluster.${_param:cluster_name}.opencontrail.control
+          params:
+            salt_master_host: ${_param:reclass_config_master}
+            linux_system_codename: ${_param:kubernetes_control_system_codename}
+            single_address: ${_param:kubernetes_control_node03_address}
+            deploy_address: ${_param:kubernetes_control_node03_deploy_address}
+            keepalived_vip_priority: 101
+            opencontrail_database_id: 3
+            rabbitmq_cluster_role: slave