Merge "upstream proxy release note"
diff --git a/.releasenotes/notes/add-prometheus-relay-df282e14ed88da8c.yaml b/.releasenotes/notes/add-prometheus-relay-df282e14ed88da8c.yaml
index dbf8a39..e9db668 100644
--- a/.releasenotes/notes/add-prometheus-relay-df282e14ed88da8c.yaml
+++ b/.releasenotes/notes/add-prometheus-relay-df282e14ed88da8c.yaml
@@ -1,12 +1,10 @@
 ---
-
 summary: >
-  Add prometheus relay service
+  Added the Prometheus Relay service
 
 features:
-  - The Prometheus Relay service is responsible for
-    getting PromQL queries from external components,
-    such as Grafana, passing them to all discovered
-    Prometheus servers, merging the results and returning
-    the data. Prometheus Relay can be used to handle
-    Prometheus high availability or sharding.
+  - Added the Prometheus Relay service. The Prometheus Relay service is
+    responsible for getting PromQL queries from external components,
+    such as Grafana, passing them to all discovered Prometheus servers,
+    merging the results and returning the data. Prometheus Relay can be
+    used to handle Prometheus high availability or sharding.
diff --git a/.releasenotes/notes/add_ssl_support_oss-ea1eb1e086d08e3c.yaml b/.releasenotes/notes/add_ssl_support_oss-ea1eb1e086d08e3c.yaml
index 082e12f..b74bc21 100644
--- a/.releasenotes/notes/add_ssl_support_oss-ea1eb1e086d08e3c.yaml
+++ b/.releasenotes/notes/add_ssl_support_oss-ea1eb1e086d08e3c.yaml
@@ -1,7 +1,10 @@
------
+---
+summary: >
+  Added SSL support for cloud-monitoring services
+
 upgrades:
   - |
-    Added SSL support for the followibg cloud-monitoring services:
+    Added SSL support for the following cloud-monitoring services:
 
     * Rundeck CIS Collectors
 
diff --git a/.releasenotes/notes/rename-options-5db6ad4bb2ff80f5.yaml b/.releasenotes/notes/rename-options-5db6ad4bb2ff80f5.yaml
new file mode 100644
index 0000000..c318d41
--- /dev/null
+++ b/.releasenotes/notes/rename-options-5db6ad4bb2ff80f5.yaml
@@ -0,0 +1,37 @@
+---
+summary: >
+  change OS-cloud credentials defining process
+
+upgrades:
+   * 'cacert_path' and 'cafile' variables for Security Audit and Cleanup services were changed to:
+
+     .. code-block:: yaml
+        security_monkey_openstack:
+          source_credentials: source/path/for/os/credentials/on/env
+          service_credentials: path/to/os/credentials/in/service/container
+
+        janitor_monkey_openstack:
+          source_credentials: source/path/for/os/credentials/on/env
+          service_credentials: path/to/os/credentials/in/service/container
+
+     Now you do not need to specify cert-file properly, need to define directory only.
+     Cert-file named 'cert.pem' by default for all services.
+     'source_credentials' equal to 'oss_openstack_credentials_path'.
+
+   * 'oss_openstack_cert_path' was changed to:
+
+     .. code-block:: yaml
+
+        oss_openstack_credentials_path: source/path/for/os/credentials/on/env
+
+   .. code-block:: text
+
+      Changes affect cluster and system levels.
+
+fixes:
+  - https://mirantis.jira.com/browse/PROD-14863
+  - https://mirantis.jira.com/browse/PROD-14870
+
+other:
+  * full change-list:
+    https://gerrit.mcp.mirantis.net/#/q/topic:os-creds+(status:open+OR+status:merged)
diff --git a/.releasenotes/notes/sfdc-support-995867e00a89add0.yaml b/.releasenotes/notes/sfdc-support-995867e00a89add0.yaml
new file mode 100644
index 0000000..0b4bff4
--- /dev/null
+++ b/.releasenotes/notes/sfdc-support-995867e00a89add0.yaml
@@ -0,0 +1,20 @@
+---
+summary: >
+   Added support for the Push Notifications service to Salesforce.
+
+features:
+  - |
+    Added support for the Push Notification service to Salesforce.
+    To configure the Push Notification service for a SalesForce account,
+    define following variables on the cluster level metadata:
+
+    .. code-block:: yaml
+
+       sfdc_auth_url: https://login.salesforce.com/services/oauth2/token
+       sfdc_username: user@example.net
+       sfdc_password: secret
+       sfdc_consumer_key: example_consumer_key
+       sfdc_consumer_secret: example_consumer_secret
+       sfdc_organization_id: example_organization_id
+       sfdc_sandbox_enabled: True/False
+
diff --git a/.releasenotes/notes/spawn-multiple-replicas-prometheus-b80eaede9c19b8cd.yaml b/.releasenotes/notes/spawn-multiple-replicas-prometheus-b80eaede9c19b8cd.yaml
index cc11b73..df15d71 100644
--- a/.releasenotes/notes/spawn-multiple-replicas-prometheus-b80eaede9c19b8cd.yaml
+++ b/.releasenotes/notes/spawn-multiple-replicas-prometheus-b80eaede9c19b8cd.yaml
@@ -1,3 +1,4 @@
+---
 summary: >
   Spawned two replicas of Prometheus to provide HA
 
diff --git a/aptly/server/mirror/ubuntu/trusty/docker.yml b/aptly/server/mirror/ubuntu/trusty/docker.yml
index 217d405..db97d14 100644
--- a/aptly/server/mirror/ubuntu/trusty/docker.yml
+++ b/aptly/server/mirror/ubuntu/trusty/docker.yml
@@ -3,12 +3,12 @@
     server:
       mirror:
         docker-trusty:
-          source: https://apt.dockerproject.org/repo
-          distribution: ubuntu-trusty
-          components: main
+          source: 'https://download.docker.com/linux/ubuntu'
+          distribution: trusty
+          components: stable
           architectures: amd64
           gpgkeys:
-            - 58118E89F3A912897C070ADBF76221572C52609D
+            - 9DC858229FC7DD38854AE2D88D81803C0EBFCD88
           publisher:
             component: docker
             distributions:
diff --git a/aptly/server/mirror/ubuntu/xenial/docker.yml b/aptly/server/mirror/ubuntu/xenial/docker.yml
index 4334374..b5d98c5 100644
--- a/aptly/server/mirror/ubuntu/xenial/docker.yml
+++ b/aptly/server/mirror/ubuntu/xenial/docker.yml
@@ -1,16 +1,14 @@
 parameters:
-  _param:
-    apt_mk_version: stable
   aptly:
     server:
       mirror:
         docker-xenial:
-          source: https://apt.dockerproject.org/repo
-          distribution: ubuntu-xenial
-          components: main
+          source: 'https://download.docker.com/linux/ubuntu'
+          distribution: xenial
+          components: stable
           architectures: amd64
           gpgkeys:
-            - 58118E89F3A912897C070ADBF76221572C52609D
+            - 9DC858229FC7DD38854AE2D88D81803C0EBFCD88
           publisher:
             component: docker
             distributions:
diff --git a/artifactory/client/init.yml b/artifactory/client/init.yml
index ef43633..05c05be 100644
--- a/artifactory/client/init.yml
+++ b/artifactory/client/init.yml
@@ -7,13 +7,14 @@
         server:
           host: ${_param:artifactory_server_host}
           port: ${_param:artifactory_server_port}
+          proto: ${_param:artifactory_server_proto}
+          ssl_verify: ${_param:artifactory_server_verify_ssl}
           user: ${_param:artifactory_client_user}
           password: ${_param:artifactory_client_password}
           license_key: ${_param:artifactory_license_key}
           ldap_server: ${_param:artifactory_security_ldap_server}
           ldap_account_base: ${_param:artifactory_security_ldap_root_dn}
           ldap_searchFilter: ${_param:artifactory_security_ldap_searchFilter}
-          ssl_verify: False
         repo:
           _genericRepository-local:
             description: "Used by Jimbo"
diff --git a/docker/host.yml b/docker/host.yml
index f7649b5..853a5d2 100644
--- a/docker/host.yml
+++ b/docker/host.yml
@@ -4,6 +4,9 @@
 parameters:
   docker:
     host:
+      pkgs:
+        - docker-ce
+        - python-docker
       experimental: true
       insecure_registries:
         - ${_param:cluster_vip_address}:5000
diff --git a/docker/swarm/service/artifactory.yml b/docker/swarm/service/artifactory.yml
index d7f8626..36d9577 100644
--- a/docker/swarm/service/artifactory.yml
+++ b/docker/swarm/service/artifactory.yml
@@ -30,3 +30,7 @@
               type: bind
               source: /srv/volumes/artifactory/logs
               destination: /var/opt/jfrog/artifactory/logs
+            keys:
+              type: bind
+              source: /srv/volumes/artifactory/keys
+              destination: /var/opt/jfrog/artifactory/access/etc/keys
diff --git a/docker/swarm/stack/artifactory.yml b/docker/swarm/stack/artifactory.yml
index 411b22e..caab0ee 100644
--- a/docker/swarm/stack/artifactory.yml
+++ b/docker/swarm/stack/artifactory.yml
@@ -21,3 +21,4 @@
                 - /srv/volumes/artifactory/backup:/var/opt/jfrog/artifactory/backup
                 - /srv/volumes/artifactory/etc:/var/opt/jfrog/artifactory/etc
                 - /srv/volumes/artifactory/logs:/var/opt/jfrog/artifactory/logs
+                - /srv/volumes/artifactory/keys:/var/opt/jfrog/artifactory/access/etc/keys
diff --git a/docker/swarm/stack/janitor_monkey.yml b/docker/swarm/stack/janitor_monkey.yml
index ffea607..2e5698a 100644
--- a/docker/swarm/stack/janitor_monkey.yml
+++ b/docker/swarm/stack/janitor_monkey.yml
@@ -33,8 +33,8 @@
       username: admin
       password: password
       ssl_verify: False
-      cacert_path: /srv/volumes/rundeck/storage/content/cis/openstack/cert.pem
-      cafile: /opt/certs/cert.pem
+      source_credentials: /srv/volumes/rundeck/storage/content/cis/openstack
+      service_credentials: /opt/os_creds
   docker:
     client:
       stack:
@@ -61,7 +61,7 @@
             simianarmy.client.cloudfire.domain: ${_param:janitor_monkey_openstack:project_domain_name}
             simianarmy.client.cloudfire.project: ${_param:janitor_monkey_openstack:project_name}
             simianarmy.client.cloudfire.SSLVerify: ${_param:janitor_monkey_openstack:ssl_verify}
-            simianarmy.client.cloudfire.cafile: ${_param:janitor_monkey_openstack:cafile}
+            simianarmy.client.cloudfire.cafile: ${_param:janitor_monkey_openstack:service_credentials}/cert.pem
             simianarmy.janitor.rule.stoppedInstanceRule.instanceAgeThreshold: ${_param:janitor_monkey_instance_age_threshold}
             simianarmy.janitor.notification.oss.url: ${_param:janitor_monkey_notification_oss_url}
             simianarmy.janitor.notification.oss.login_id: ${_param:janitor_monkey_notification_oss_login_id}
@@ -86,7 +86,7 @@
               ports:
                 - ${_param:haproxy_janitor_monkey_exposed_port}:${_param:janitor_monkey_bind_port}
               volumes:
-                - ${_param:janitor_monkey_openstack:cacert_path}:${_param:janitor_monkey_openstack:cafile}:ro
+                - ${_param:janitor_monkey_openstack:source_credentials}:${_param:janitor_monkey_openstack:service_credentials}:ro
           network:
             default:
               external:
diff --git a/docker/swarm/stack/jenkins/master.yml b/docker/swarm/stack/jenkins/master.yml
index f40d6cd..5f8de05 100644
--- a/docker/swarm/stack/jenkins/master.yml
+++ b/docker/swarm/stack/jenkins/master.yml
@@ -5,6 +5,7 @@
     docker_image_jenkins: tcpcloud/jenkins:2.73
     jenkins_master_extra_opts: ""
     jenkins_master_executors_num: 4
+    jenkins_master_max_concurent_requests: 40
   docker:
     client:
       stack:
@@ -15,6 +16,7 @@
                 JENKINS_HOME: /var/jenkins_home
                 JAVA_OPTS: " -server -XX:+AlwaysPreTouch -Xloggc:$JENKINS_HOME/gc-%t.log -XX:NumberOfGCLogFiles=5 -XX:+UseGCLogFileRotation -XX:GCLogFileSize=20m -XX:+PrintGC -XX:+PrintGCDateStamps -XX:+PrintGCDetails -XX:+PrintHeapAtGC -XX:+PrintGCCause -XX:+PrintTenuringDistribution -XX:+PrintReferenceGC -XX:+PrintAdaptiveSizePolicy -XX:+UseG1GC -XX:+ExplicitGCInvokesConcurrent -XX:+ParallelRefProcEnabled -XX:+UseStringDeduplication -XX:+UnlockExperimentalVMOptions -XX:G1NewSizePercent=20 -XX:+UnlockDiagnosticVMOptions -XX:G1SummarizeRSetStatsPeriod=1 -Djenkins.install.runSetupWizard=false -Dhudson.DNSMultiCast.disabled=true -Dhudson.udp=-1 -Dhudson.footerURL=https://www.mirantis.com ${_param:jenkins_master_extra_opts}"
                 JENKINS_NUM_EXECUTORS: ${_param:jenkins_master_executors_num}
+                JENKINS_OPTS: " --handlerCountMax=${_param:jenkins_master_max_concurent_requests}"
                 https_proxy: ${_param:docker_https_proxy}
                 http_proxy: ${_param:docker_http_proxy}
                 no_proxy: ${_param:docker_no_proxy}
diff --git a/docker/swarm/stack/monitoring/init.yml b/docker/swarm/stack/monitoring/init.yml
index e274426..6efe125 100644
--- a/docker/swarm/stack/monitoring/init.yml
+++ b/docker/swarm/stack/monitoring/init.yml
@@ -76,6 +76,7 @@
                 ALERTMANAGER_BIND_PORT: ${prometheus:alertmanager:bind:port}
                 ALERTMANAGER_BIND_ADDRESS: ${prometheus:alertmanager:bind:address}
                 ALERTMANAGER_DISCOVERY_DOMAIN: 'monitoring_alertmanager'
+                ALERTMANAGER_EXTERNAL_URL: "http://${_param:stacklight_monitor_address}:15011"
             pushgateway:
               networks:
                 - monitoring
@@ -119,3 +120,4 @@
                 PROMETHEUS_STORAGE_LOCAL_RETENTION: ${prometheus:server:storage:local:retention}
                 PROMETHEUS_STORAGE_LOCAL_TARGET_HEAP_SIZE: ${prometheus:server:storage:local:target_heap_size}
                 PROMETHEUS_STORAGE_LOCAL_NUM_FINGERPRINT_MUTEXES: ${prometheus:server:storage:local:num_fingerprint_mutexes}
+                PROMETHEUS_EXTERNAL_URL: "http://${_param:stacklight_monitor_address}:15010"
diff --git a/docker/swarm/stack/pushkin.yml b/docker/swarm/stack/pushkin.yml
index 71b5f5f..892b4f9 100644
--- a/docker/swarm/stack/pushkin.yml
+++ b/docker/swarm/stack/pushkin.yml
@@ -9,6 +9,12 @@
     pushkin_db: pushkin
     pushkin_smtp_host: smtp.gmail.com
     pushkin_smtp_port: 587
+    webhook_from: your_sender@mail.com
+    pushkin_email_sender_password: your_sender_password
+    webhook_recipients: "recepient1@mail.com,recepient2@mail.com"
+    webhook_login_id: 13
+    webhook_application_id: 24
+    webhook_sfdc_username: your_sfdc_username
   docker:
     client:
       stack:
diff --git a/docker/swarm/stack/security_monkey.yml b/docker/swarm/stack/security_monkey.yml
index 67233c2..b5a1100 100644
--- a/docker/swarm/stack/security_monkey.yml
+++ b/docker/swarm/stack/security_monkey.yml
@@ -28,8 +28,8 @@
       project_domain_name: Default
       project_name: admin
       user_domain_name: Default
-      cacert_path: /srv/volumes/rundeck/storage/content/cis/openstack/cert.pem
-      cafile: /opt/certs/cert.pem
+      source_credentials: /srv/volumes/rundeck/storage/content/cis/openstack
+      service_credentials: /opt/os_creds
       endpoint_type: public
       ssl_verify: False
   docker:
@@ -58,7 +58,7 @@
             OS_PROJECT_NAME: ${_param:security_monkey_openstack:project_name}
             OS_SSL_VERIFY: ${_param:security_monkey_openstack:ssl_verify}
             OS_ENDPOINT_TYPE: ${_param:security_monkey_openstack:endpoint_type}
-            CACERT_PATH: ${_param:security_monkey_openstack:cafile}
+            CACERT_PATH: ${_param:security_monkey_openstack:service_credentials}/cert.pem
             USER_DOMAIN_NAME: ${_param:security_monkey_openstack:user_domain_name}
             SM_WTF_CSRF_ENABLED: ${_param:devops_portal_sm_wtf_csrf_enabled}
             SECURITY_MONKEY_SYNC_INTERVAL: ${_param:security_monkey_sync_interval}
@@ -75,7 +75,7 @@
                 - ${_param:haproxy_security_monkey_exposed_port}:${_param:haproxy_security_monkey_bind_port}
               volumes:
                 - /srv/volumes/security_monkey/logs:/var/log/security_monkey/logs
-                - ${_param:security_monkey_openstack:cacert_path}:${_param:security_monkey_openstack:cafile}:ro
+                - ${_param:security_monkey_openstack:source_credentials}:${_param:security_monkey_openstack:service_credentials}:ro
             security-audit-scheduler:
               image: ${_param:docker_image_security_monkey_scheduler}
               deploy:
@@ -84,7 +84,7 @@
                   condition: any
               volumes:
                 - /srv/volumes/security_monkey/logs:/var/log/security_monkey/logs
-                - ${_param:security_monkey_openstack:cacert_path}:${_param:security_monkey_openstack:cafile}:ro
+                - ${_param:security_monkey_openstack:source_credentials}:${_param:security_monkey_openstack:service_credentials}:ro
           network:
             default:
               external:
diff --git a/haproxy/proxy/listen/cicd/aptly.yml b/haproxy/proxy/listen/cicd/aptly.yml
index 35ae3d6..e170a5d 100644
--- a/haproxy/proxy/listen/cicd/aptly.yml
+++ b/haproxy/proxy/listen/cicd/aptly.yml
@@ -1,4 +1,4 @@
-parameters:
+gerreparameters:
   _param:
     haproxy_aptly_api_bind_host: ${_param:haproxy_bind_address}
     haproxy_aptly_api_bind_port: 8084
@@ -24,15 +24,7 @@
             - name: ${_param:cluster_node01_name}
               host: ${_param:cluster_node01_address}
               port: 18084
-              params: check
-            - name: ${_param:cluster_node02_name}
-              host: ${_param:cluster_node02_address}
-              port: 18084
-              params: backup check
-            - name: ${_param:cluster_node03_name}
-              host: ${_param:cluster_node03_address}
-              port: 18084
-              params: backup check
+              params: check inter 10s fastinter 2s downinter 3s rise 3 fall 3
         aptly-public:
           mode: http
           options:
@@ -45,14 +37,6 @@
               port: ${_param:haproxy_aptly_public_bind_port}
           servers:
             - name: ${_param:cluster_node01_name}
-              host: ${_param:cluster_node01_address}
+              host: localhost
               port: 18085
-              params: check
-            - name: ${_param:cluster_node02_name}
-              host: ${_param:cluster_node02_address}
-              port: 18085
-              params: check
-            - name: ${_param:cluster_node03_name}
-              host: ${_param:cluster_node03_address}
-              port: 18085
-              params: check
+              params: check inter 10s fastinter 2s downinter 3s rise 3 fall 3
diff --git a/haproxy/proxy/listen/cicd/artifactory.yml b/haproxy/proxy/listen/cicd/artifactory.yml
index 349d998..cb6184e 100644
--- a/haproxy/proxy/listen/cicd/artifactory.yml
+++ b/haproxy/proxy/listen/cicd/artifactory.yml
@@ -12,27 +12,25 @@
           mode: http
           options:
             - forwardfor
-#            - httpchk
+            - httpchk
             - httpclose
             - httplog
           balance: source
+          acl:
+            is_docker: "path_reg ^/v[12][/.]*"
           http_request:
+            - action: "add-header X-Artifactory-Override-Base-Url https://%[req.hdr(host)]/artifactory"
+              condition: "if is_docker"
             - action: "add-header X-Forwarded-Proto https"
               condition: "if { ssl_fc }"
+            - action: "set-path /artifactory/api/docker/%[req.hdr(host),lower,field(1,'.')]%[path]"
+              condition: "if is_docker "
           binds:
             - address: ${_param:haproxy_artifactory_bind_host}
               port: ${_param:haproxy_artifactory_bind_port}
               ssl: ${_param:haproxy_artifactory_ssl}
           servers:
             - name: ${_param:cluster_node01_name}
-              host: ${_param:cluster_node01_address}
+              host: localhost
               port: 18082
-              params: check
-            - name: ${_param:cluster_node02_name}
-              host: ${_param:cluster_node02_address}
-              port: 18082
-              params: backup check
-            - name: ${_param:cluster_node03_name}
-              host: ${_param:cluster_node03_address}
-              port: 18082
-              params: backup check
+              params: check inter 10s fastinter 2s downinter 3s rise 3 fall 3
\ No newline at end of file
diff --git a/haproxy/proxy/listen/cicd/gerrit.yml b/haproxy/proxy/listen/cicd/gerrit.yml
index 3ee21b1..f6ded20 100644
--- a/haproxy/proxy/listen/cicd/gerrit.yml
+++ b/haproxy/proxy/listen/cicd/gerrit.yml
@@ -13,7 +13,7 @@
           mode: http
           options:
             - forwardfor
-#            - httpchk
+            - httpchk
             - httpclose
             - httplog
           balance: source
@@ -26,17 +26,9 @@
               ssl: ${_param:haproxy_gerrit_ssl}
           servers:
             - name: ${_param:cluster_node01_name}
-              host: ${_param:cluster_node01_address}
+              host: localhost
               port: 18083
-              params: check
-            - name: ${_param:cluster_node02_name}
-              host: ${_param:cluster_node02_address}
-              port: 18083
-              params: backup check
-            - name: ${_param:cluster_node03_name}
-              host: ${_param:cluster_node03_address}
-              port: 18083
-              params: backup check
+              params: check inter 10s fastinter 2s downinter 3s rise 3 fall 3
         gerrit_ssh:
           mode: tcp
           balance: source
@@ -45,14 +37,7 @@
               port: ${_param:haproxy_gerrit_ssh_bind_port}
           servers:
             - name: ${_param:cluster_node01_name}
-              host: ${_param:cluster_node01_address}
+              host: localhost
               port: 29417
-              params: check
-            - name: ${_param:cluster_node02_name}
-              host: ${_param:cluster_node02_address}
-              port: 29417
-              params: backup check
-            - name: ${_param:cluster_node03_name}
-              host: ${_param:cluster_node03_address}
-              port: 29417
-              params: backup check
+              params: check inter 10s fastinter 2s downinter 3s rise 3 fall 3
+
diff --git a/haproxy/proxy/listen/cicd/jenkins.yml b/haproxy/proxy/listen/cicd/jenkins.yml
index eda12f8..150fac0 100644
--- a/haproxy/proxy/listen/cicd/jenkins.yml
+++ b/haproxy/proxy/listen/cicd/jenkins.yml
@@ -13,7 +13,7 @@
           mode: http
           options:
             - forwardfor
-#            - httpchk
+            - httpchk
             - httpclose
             - httplog
           balance: source
@@ -28,17 +28,9 @@
               ssl: ${_param:haproxy_jenkins_ssl}
           servers:
             - name: ${_param:cluster_node01_name}
-              host: ${_param:cluster_node01_address}
+              host: localhost
               port: 18081
-              params: check
-            - name: ${_param:cluster_node02_name}
-              host: ${_param:cluster_node02_address}
-              port: 18081
-              params: backup check
-            - name: ${_param:cluster_node03_name}
-              host: ${_param:cluster_node03_address}
-              port: 18081
-              params: backup check
+              params: check inter 10s fastinter 2s downinter 3s rise 3 fall 3
         jenkins_jnlp:
           mode: tcp
           balance: source
@@ -47,14 +39,6 @@
               port: ${_param:haproxy_jenkins_jnlp_bind_port}
           servers:
             - name: ${_param:cluster_node01_name}
-              host: ${_param:cluster_node01_address}
+              host: localhost
               port: 50001
-              params: check
-            - name: ${_param:cluster_node02_name}
-              host: ${_param:cluster_node02_address}
-              port: 50001
-              params: backup check
-            - name: ${_param:cluster_node03_name}
-              host: ${_param:cluster_node03_address}
-              port: 50001
-              params: backup check
+              params: check inter 10s fastinter 2s downinter 3s rise 3 fall 3
diff --git a/haproxy/proxy/listen/docker/registry.yml b/haproxy/proxy/listen/docker/registry.yml
index 8d45e97..e0f63e8 100644
--- a/haproxy/proxy/listen/docker/registry.yml
+++ b/haproxy/proxy/listen/docker/registry.yml
@@ -23,14 +23,7 @@
               ssl: ${_param:haproxy_docker_registry_ssl}
           servers:
             - name: ${_param:cluster_node01_name}
-              host: ${_param:cluster_node01_address}
+              host: localhost
               port: 15000
-              params: check
-            - name: ${_param:cluster_node02_name}
-              host: ${_param:cluster_node02_address}
-              port: 15000
-              params: check
-            - name: ${_param:cluster_node03_name}
-              host: ${_param:cluster_node03_address}
-              port: 15000
-              params: check
+              params: check inter 10s fastinter 2s downinter 3s rise 3 fall 3
+
diff --git a/haproxy/proxy/listen/docker/visualizer.yml b/haproxy/proxy/listen/docker/visualizer.yml
index 6fec3ba..d4e74bb 100644
--- a/haproxy/proxy/listen/docker/visualizer.yml
+++ b/haproxy/proxy/listen/docker/visualizer.yml
@@ -8,7 +8,7 @@
           mode: http
           options:
             - forwardfor
-#            - httpchk
+            - httpchk
             - httpclose
             - httplog
           balance: source
@@ -17,14 +17,6 @@
               port: ${_param:haproxy_docker_visualizer_listen_port}
           servers:
             - name: ${_param:cluster_node01_name}
-              host: ${_param:cluster_node01_address}
+              host: localhost
               port: 18090
-              params: check
-            - name: ${_param:cluster_node02_name}
-              host: ${_param:cluster_node02_address}
-              port: 18090
-              params: check
-            - name: ${_param:cluster_node03_name}
-              host: ${_param:cluster_node03_address}
-              port: 18090
-              params: check
+              params: check inter 10s fastinter 2s downinter 3s rise 3 fall 3
\ No newline at end of file
diff --git a/jenkins/client/approved_scripts.yml b/jenkins/client/approved_scripts.yml
index 62bab8d..4e3d1d1 100644
--- a/jenkins/client/approved_scripts.yml
+++ b/jenkins/client/approved_scripts.yml
@@ -130,3 +130,4 @@
         - method org.jenkinsci.plugins.workflow.support.steps.build.RunWrapper getRawBuild
         - method hudson.model.Actionable getAction java.lang.Class
         - staticMethod org.codehaus.groovy.runtime.DefaultGroovyMethods toSorted java.lang.Iterable
+        - staticMethod org.codehaus.groovy.runtime.DefaultGroovyMethods intersect java.util.List java.lang.Iterable
diff --git a/jenkins/client/job/deploy/lab/component/kubernetes.yml b/jenkins/client/job/deploy/lab/component/kubernetes.yml
index e2598eb..62526f7 100644
--- a/jenkins/client/job/deploy/lab/component/kubernetes.yml
+++ b/jenkins/client/job/deploy/lab/component/kubernetes.yml
@@ -35,7 +35,7 @@
         job_timer: "H H(0-6) * * *"
       - stack_name: k8s_ha_calico_sm
         stack_env: devcloud
-        stack_type: heat
+        stack_type: aws
         stack_install: core,k8s,calico
         stack_test: ""
         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 0f2cdc9..61f1e6d 100644
--- a/jenkins/client/job/docker/build-images.yml
+++ b/jenkins/client/job/docker/build-images.yml
@@ -26,7 +26,7 @@
             trigger:
               gerrit:
                 project:
-                  "mk/docker-{{name}}":
+                  "{{repo}}/docker-{{name}}":
                     branches:
                       - master
                 event:
diff --git a/jenkins/client/job/opencontrail/build/generic.yml b/jenkins/client/job/opencontrail/build/generic.yml
index f21eaa9..14dd93c 100644
--- a/jenkins/client/job/opencontrail/build/generic.yml
+++ b/jenkins/client/job/opencontrail/build/generic.yml
@@ -95,6 +95,22 @@
               upload_source_package: true
               dpdk: contrail_dpdk_17_02
               build_trigger: "H H(20-23) * * *"
+            - buildname: oc41
+              os: ubuntu
+              dist: trusty
+              branch: R4.1
+              ppa: mirantis-opencontrail/opencontrail-4.1
+              upload_source_package: true
+              dpdk: contrail_dpdk_17_02
+              build_trigger: "H H(20-23) * * *"
+            - buildname: oc41
+              os: ubuntu
+              dist: xenial
+              branch: R4.1
+              ppa: mirantis-opencontrail/opencontrail-4.1
+              upload_source_package: true
+              dpdk: contrail_dpdk_17_02
+              build_trigger: "H H(20-23) * * *"
             - buildname: oc666
               os: ubuntu
               dist: trusty
diff --git a/jenkins/client/job/opencontrail/init.yml b/jenkins/client/job/opencontrail/init.yml
index e07adaf..34cc4e5 100644
--- a/jenkins/client/job/opencontrail/init.yml
+++ b/jenkins/client/job/opencontrail/init.yml
@@ -3,12 +3,12 @@
   - system.jenkins.client.job.opencontrail.git-mirrors
 parameters:
   _param:
-    contrail_branches: "R3.0.2.x,R3.0.3.x,R3.1,R3.1.1.x,R3.2,R3.2.3.x,R4.0,master"
+    contrail_branches: "R3.0.2.x,R3.0.3.x,R3.1,R3.1.1.x,R3.2,R3.2.3.x,R4.0,R4.1,master"
     contrail_kubernetes_branches: "master,release-1.2"
     contrail_dpdk_extra_branches: "mitaka,mitaka_dpdk_17_02,mitaka_dpdk_17_05,kilo,liberty-multiqueue,newton,ocata"
-    contrail_ceilometer_plugin_branches: "master,R4.0"
+    contrail_ceilometer_plugin_branches: "master,R4.0,R4.1"
     contrail_kubernetes_branches: "master,origin-1.1,origin-1.1.3,release-1.1,release-1.2"
-    contrail_dpdk_branches: "master,R3.0.2.x,R3.0.3.x,R3.1,R3.1.1.x,R3.2,R3.2.3.x,R4.0,R4.0.1,contrail_dpdk_17_02,contrail_dpdk_17_05,contrail_dpdk_1_7,contrail_dpdk_2_0,contrail_dpdk_2_1"
+    contrail_dpdk_branches: "master,R3.0.2.x,R3.0.3.x,R3.1,R3.1.1.x,R3.2,R3.2.3.x,R4.0,R4.0.1,R4.1,contrail_dpdk_17_02,contrail_dpdk_17_05,contrail_dpdk_1_7,contrail_dpdk_2_0,contrail_dpdk_2_1"
   jenkins:
     client:
       view:
@@ -31,5 +31,7 @@
               naming_rule: "R3.2.3.x"
             - group_regex: "build-opencontrail-oc40-.*"
               naming_rule: "R4.0"
+            - group_regex: "build-opencontrail-oc41-.*"
+              naming_rule: "R4.1"
             - group_regex: "build-opencontrail-oc666-.*"
               naming_rule: "oc-666"
diff --git a/jenkins/client/job/test_pipelines.yml b/jenkins/client/job/test_pipelines.yml
index 822084d..b1b782a 100644
--- a/jenkins/client/job/test_pipelines.yml
+++ b/jenkins/client/job/test_pipelines.yml
@@ -7,6 +7,8 @@
           jobs:
             - name: mk-mk-pipelines
               repo: mk/mk-pipelines
+            - name: mcp-ci-pipeline-library
+              repo: mcp-ci/pipeline-library
             - name: oss-jenkins-pipelines
               repo: oss/jenkins/pipelines
           template:
diff --git a/linux/system/repo/docker.yml b/linux/system/repo/docker.yml
index c527aa8..bb36728 100644
--- a/linux/system/repo/docker.yml
+++ b/linux/system/repo/docker.yml
@@ -3,7 +3,6 @@
     system:
       repo:
         docker:
-          source: "deb https://apt.dockerproject.org/repo ubuntu-${_param:linux_system_codename} main"
+          source: 'deb [arch=amd64] https://download.docker.com/linux/ubuntu/ ${_param:linux_system_codename} stable'
           architectures: amd64
-          key_id: 58118E89F3A912897C070ADBF76221572C52609D
-          key_server: keyserver.ubuntu.com
+          key_url: https://download.docker.com/linux/ubuntu/gpg
diff --git a/linux/system/single/debian.yml b/linux/system/single/debian.yml
new file mode 100644
index 0000000..b6d0b2b
--- /dev/null
+++ b/linux/system/single/debian.yml
@@ -0,0 +1,10 @@
+classes:
+- system.linux.system.single
+
+# DEBIAN family overrides
+parameters:
+  linux:
+    system:
+      package:
+        python-msgpack:
+          version: latest
diff --git a/linux/system/single.yml b/linux/system/single/init.yml
similarity index 96%
rename from linux/system/single.yml
rename to linux/system/single/init.yml
index ccde6ad..1e68380 100644
--- a/linux/system/single.yml
+++ b/linux/system/single/init.yml
@@ -15,8 +15,6 @@
           name: root
           home: /root
       package:
-        python-msgpack:
-          version: latest
         cloud-init:
           version: purged
         unattended-updates:
diff --git a/linux/system/single/rhel.yml b/linux/system/single/rhel.yml
new file mode 100644
index 0000000..38dba03
--- /dev/null
+++ b/linux/system/single/rhel.yml
@@ -0,0 +1,4 @@
+classes:
+- system.linux.system.single
+
+# RHEL family overrides
diff --git a/openssh/server/team/l1_support.yml b/openssh/server/team/l1_support.yml
index 9d2a4c9..1db07d6 100644
--- a/openssh/server/team/l1_support.yml
+++ b/openssh/server/team/l1_support.yml
@@ -13,6 +13,7 @@
 - system.openssh.server.team.members.deniskostriukov
 - system.openssh.server.team.members.dmitrygoloshubov
 - system.openssh.server.team.members.javierdiaz
+- system.openssh.server.team.members.jorgesorondo
 - system.openssh.server.team.members.josuepalmerin
 - system.openssh.server.team.members.krzysztoffranckowski
 - system.openssh.server.team.members.matthewroark
diff --git a/openssh/server/team/members/jorgesorondo.yml b/openssh/server/team/members/jorgesorondo.yml
new file mode 100644
index 0000000..9f6a1c5
--- /dev/null
+++ b/openssh/server/team/members/jorgesorondo.yml
@@ -0,0 +1,22 @@
+parameters:
+  linux:
+    system:
+      user:
+        jsorondo:
+          enabled: true
+          name: jsorondo
+          sudo: ${_param:linux_system_user_sudo}
+          full_name: Jorge Sorondo
+          home: /home/jsorondo
+          email: jsorondo@mirantis.com
+  openssh:
+    server:
+      enabled: true
+      user:
+        jsorondo:
+          enabled: true
+          public_keys: ${public_keys:jsorondo}
+          user: ${linux:system:user:jsorondo}
+  public_keys:
+    jsorondo:
+      - key: ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDQifWsY+b8n8imC0NaP1zVpgihzIT+8A5w35W8dF7YyGcgGOYAcmTRV2Wqm8el9iLsW1ANOdjjulZ/jAzicVwh5IEq9MYjNl4+YjThDN9J1yvw9BjkXPs0Ymrqt4Xq9wZdE5c3P6DaoicxOCEpaL3t1ZxigAcMpQxa5qSyxeY0mvr5eb9O6I0eznEsSjikHOJPaWTdAG5Wx6acwhqB6G7gAF0fpE3Hn+enmtAiqJQVnaBKeX06isMPxyabaNgDCdw1jIJ+uHa3RFRXlucResGiJiDggP+GabKenrSkig8xUWk6UBoO3h28fzEF/J3LSJbL2dHTcWLIrdPZJFVj/0l/
diff --git a/openssh/server/team/services.yml b/openssh/server/team/services.yml
index 564fc32..9fb36c9 100644
--- a/openssh/server/team/services.yml
+++ b/openssh/server/team/services.yml
@@ -1,9 +1,12 @@
 classes:
 - system.linux.system.sudo
 - system.openssh.server.team.members.mniedbala
+- system.openssh.server.team.members.pmichalec
+- system.openssh.server.team.members.pcizinsky
+- system.openssh.server.team.members.lmercl
+- system.openssh.server.team.members.korlowska
+- system.openssh.server.team.members.miwinski
+- system.openssh.server.team.members.mlos
 parameters:
-  linux:
-    system:
-      user:
-        mniedbala:
-          sudo: true
+  _param:
+    linux_system_user_sudo: true
diff --git a/openssh/server/team/stacklight.yml b/openssh/server/team/stacklight.yml
index fcdbce5..5e2f9d3 100644
--- a/openssh/server/team/stacklight.yml
+++ b/openssh/server/team/stacklight.yml
@@ -74,6 +74,13 @@
           full_name: Krzysztof Szukiełojć
           home: /home/kszukielojc
           email: kszukielojc@mirantis.com
+        bkupidura:
+          enabled: true
+          name: bkupidura
+          sudo: true
+          full_name: Bartosz Kupidura
+          home: /home/bkupidura
+          email: bkupidura@mirantis.com
         isviridov:
           enabled: true
           name: isviridov
@@ -144,6 +151,11 @@
           public_keys:
           - ${public_keys:kszukielojc}
           user: ${linux:system:user:kszukielojc}
+        bkupidura:
+          enable: true
+          public_keys:
+          - ${public_keys:bkupidura}
+          user: ${linux:system:user:bkupidura}
         isviridov:
           enabled: true
           public_keys:
@@ -175,6 +187,8 @@
       key: ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAACAQDjpy9RI6iEDH/04eOOwreDa+R32USZiWxyFiKHa8zoDAlOfwaZVg6mZWepOxzwxCJPYusPGXCwQ6Zw9tHxVWOCgtzzPpsCCfhUU4v+99Wh08//W8d/s/WFka+5vqyskAO5Z8Ekk+kQU+jpUBG8/gMxAPBjj0fFc5BNeqDY9r9nmMNK6N2RVjvA6wZ8G5hLGxL9bn5Prhf/+avui1NAfy6gsT/mRt1W+eHWTvpijyNGm+m83jU34dQO6gE48n6WdSylLh/fY/p31rzAURaq1V/AZhdbSuZ8aJYDnfHevpK5+hMjoOop3v3hb7WHEmybGujQfW5HVaaWmG7SFlHeKGE/gZ2P9T+bQ+SgO+PmEAw4LayiBkzTPAHdZ2UGZe+3BI5gdM/ayovK2WVO1jS5FNlNGIvEQW+ws9V+ph+S1jL4jobDJEjs358iXrAYpf4JL+LvxFHiuj6EL51tbo8EU22z5mmgRQQ5eFrDzBuVLhcim651A3a5iSlmCeAQ5rTmHX/Op/PbK+3vAtI8vnlK4AhycLvWQ3kK2DRx+Uhzrlk5v6E14SopAhvpGOHqrLgmoHwHp1xt/9M1JgxkOUK5gccFKTQduxLHoTNBaNcP60IOG/MjqUPcOXSBcAN4Y1RDBg+pwXe4PFgOzwKdFoYeuhvtm8y185S0IvvfCHLCD8pNfQ== akholkin@mirantis.com
     kszukielojc:
       key: ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAACAQCiUm3Z3W3t4v7oe143rCNM/hbg9NU2bYUmQXek8DJPA4c3Xm6u0q+RL9kEXME+3zcj2HKqMxKsCBLXXdFIsgdUbOBV8AYiuySE220FTnEKRmdxsEnfSaBhXxFyIBNoew4gI7URSqAOclt5WuPJTqRM7K4VhbtzwEgeWVd/NUhxMCCtgkdJCYTSmycxmxs7R6V8vMr9Mb8DOqKkSpOu6f3JkR0lwnFN9zGGC4V/60FlJSDzvvI5Tn40ANPHITivs8xME0znsx7t0bF4vQUimvhYn1mumQCY1NwIaxJ/QqasD6Ag9Sn5dxSg9b3SeLn0JM6qKoIqZtfPYVuCp9gmlH0fyzJUdqu4lKKb2wBw/H5lK6icH4+owMawkav55rbvinHQOqmVCr/Bg/rTfc35ycVqjTXH/5J7OhzioKjU0yFkXFS2X/s8gpyxp3beJ+Ea4faoX+kcs0gyhMYzqC7/DOamrau7aVyEAjKYJNy60xRfjCQzjqiurbxVFh+3Fi64UUn7Bl1QV8VEiU3ztJ118psEI7zA+x2VROLZ1jrtaBYZTYB118JZicaFDycEVgg3+BHX3pFH/QSOjLsA4SK+HJjSz8CFKvWwaO6QJv1/3KHpcGEacMvmqKxwpQK0E4WpjWhglZRMPObQ0dBaGClOujgoOIHXtFGILEpWy2SdzDQkHw== kszukielojc@w541
+    bkupidura:
+      key: ssh-rsa AAAAB3NzaC1yc2EAAAABIwAAAfsAyuh1O+SfVRgddjQ8nByz2nNzXm71sP9FAPi5G5WoJA7El3fdrOWsG5bj5kQveVZj/M4qlETajcxMLwaFQd36nS4C0WjmzfoX2i6X+iWHFH/L/ha0UaDclfYkuGdxtCeYRakJ0Xqsm0vNuMpGhIGQP8j+OSLK0Q9pnrd1md+jrxx6JS1MXM5iUh+zU4roklrGy75WQvDJcCD3miVnktJsjb2hda8cIxkRf+l88xPm5TcC82cVAWpXF91+kUVdcHiB1D13t0IDEL6BdeUHffQij1++9x6JUukIEVDoP8Ot6DC16cbma4H9ssjdc9vnTGJjsZiu7Am+BNLKD4zsMnuSqWWfPYzQuoG5HZlyonzQIYncxo98LsHLRtrEE/CWnnO+jrd8Zfe9nAatelBgVv86UHoKEPyL666nd4UxaTiyKaXfNlvHWhfgbV67ZGRTrmllfdTmu1olOIniO706L3t3V+Zu6RjN5VjYdLegKKMo2E6XwhkMCcIg9Syi95pj8x8jFoKwjvOhb1EleuZyNHNbEvosIjAy1HsUgEo5bIwiV8K0aWIQE8VVyqyhdXOpR/Gk9UtFYsACyfCX84DjQBXp7OXIkyYt9s5N15Panml2X1CXnNgsh9M60+RvJBsFj3k8M57zcc7VAarAUKnYrI59l3cCZZVLtd4aIp8= zynzel@banshee
     isviridov:
       key: ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDGNZxzOm7OsZi/q6Qk71fnvjCfWk4BfxpZ5hDig6N1f9D0iAMaINyNmlF2PxstSLW0Mjdq2tXTUvVWlYpGrw+YLHQmVk8dckmLdUAxe2Z0oEvtWhiQC64927ibBTgQ2Tjfkao+PFYPbdjiO4FgRymS1/FpGKhvpdyPDCcOLrxsMSK9YpPi4kbkd4GmlGMercuaEzP3JOOzJioOOLtEw3LOLWG5mAIzXjGFxuCNdTI4gqxQm/iw/tOpb9PcsY10EapZsS4Pd8j58vuhJlwdoTxI3gzySJcTlWm0tcphex0g8X0tEUI+zVjemJcrYkZgUpb6x5/mUjNxC4nv+4A4yMTP
     nzaporozhets:
diff --git a/openssh/server/team/support.yml b/openssh/server/team/support.yml
index 1005a83..f78ceac 100644
--- a/openssh/server/team/support.yml
+++ b/openssh/server/team/support.yml
@@ -10,6 +10,7 @@
 - system.openssh.server.team.members.deniskostriukov
 - system.openssh.server.team.members.dmitrygoloshubov
 - system.openssh.server.team.members.javierdiaz
+- system.openssh.server.team.members.jorgesorondo
 - system.openssh.server.team.members.josuepalmerin
 - system.openssh.server.team.members.krzysztoffranckowski
 - system.openssh.server.team.members.matthewroark
diff --git a/salt/control/virt.yml b/salt/control/virt.yml
index 6ed8537..7556dc9 100644
--- a/salt/control/virt.yml
+++ b/salt/control/virt.yml
@@ -45,3 +45,6 @@
       xxxlarge:
         - system:
             size: 500000
+      xxxxlarge:
+        - system:
+            size: 700000