Added support for password-protected registries

Related-Prod: PROD-32890
Change-Id: I92f543da94223e746d25b48d20f344d694fcb6cc
diff --git a/README.rst b/README.rst
index 2157a2b..f7a6313 100644
--- a/README.rst
+++ b/README.rst
@@ -334,6 +334,33 @@
         - container: f020d0d3efa8
         - service: contrail-control
 
+Use registry that requires authentication
+=========================================================
+
+* Define private Docker registry and credentials for it:
+
+  .. code-block:: yaml
+
+    docker:
+      host:
+        insecure_registries:
+          - 192.168.0.254:5000
+      registry:
+        my_registry:
+          address: 192.168.0.254:5000
+          user: registry_user
+          password: registry_password
+
+* Specify that services in stack require registry with authentication
+
+  .. code-block:: yaml
+
+    docker:
+      client:
+        stack:
+          myapp:
+            registry_auth: True
+
 **Read more**
 
 * https://docs.docker.com/installation/ubuntulinux/
diff --git a/docker/client/stack.sls b/docker/client/stack.sls
index b7bac65..ce649c6 100644
--- a/docker/client/stack.sls
+++ b/docker/client/stack.sls
@@ -75,7 +75,11 @@
         retry=5
         i=1;
         while [[ $i -lt $retry ]]; do
+          {%- if compose.registry_auth|default(False) %}
+          docker stack deploy --with-registry-auth --compose-file docker-compose.yml {{ app }};
+          {%- else %}
           docker stack deploy --compose-file docker-compose.yml {{ app }};
+          {%- endif %}
           ret=$?;
           if [[ $ret -eq 0 ]]; then echo 'Stack created'; break;
           else
@@ -101,7 +105,11 @@
         retry=5
         i=1;
         while [[ $i -lt $retry ]]; do
+          {%- if compose.registry_auth|default(False) %}
+          docker stack deploy --with-registry-auth --compose-file docker-compose.yml {{ app }};
+          {%- else %}
           docker stack deploy --compose-file docker-compose.yml {{ app }};
+          {%- endif %}
           ret=$?;
           if [[ $ret -eq 0 ]]; then echo 'Stack updated'; break;
           else