Merge "Update .travis.yml and .kitchen.yml files for parallel testing"
diff --git a/README.rst b/README.rst
index deeb54d..1b2f875 100644
--- a/README.rst
+++ b/README.rst
@@ -33,6 +33,22 @@
             max-size: 50m
 
 
+Configure proxy for docker host
+
+.. code-block:: yaml
+
+    docker:
+      host:
+        proxy:
+          enabled: true
+          http: http://user:pass@proxy:3128
+          https: http://user:pass@proxy:3128
+          no_proxy:
+            - localhost
+            - 127.0.0.1
+            - docker-registry
+
+
 Docker Swarm
 ------------
 
@@ -119,6 +135,7 @@
             update: true
             environment:
               SOMEVAR: somevalue
+            version: "3.1"
             service:
               db:
                 image: postgres
diff --git a/docker/files/docker-compose.yml b/docker/files/docker-compose.yml
index fbe8b74..f120327 100644
--- a/docker/files/docker-compose.yml
+++ b/docker/files/docker-compose.yml
@@ -1,4 +1,4 @@
-version: '3'
+version: '{{ compose.version|default("3") }}'
 
 services:
   {%- for name, srv in service.iteritems() %}
diff --git a/docker/files/http-proxy.conf b/docker/files/http-proxy.conf
new file mode 100644
index 0000000..13d494d
--- /dev/null
+++ b/docker/files/http-proxy.conf
@@ -0,0 +1,5 @@
+{%- from "docker/map.jinja" import host with context -%}
+[Service]
+Environment="HTTP_PROXY={{ host.proxy.http }}"
+Environment="HTTPS_PROXY={{ host.proxy.https }}"
+Environment="NO_PROXY={{ host.proxy.no_proxy|join(',') }}"
diff --git a/docker/host.sls b/docker/host.sls
index 81d6344..dbd2cc0 100644
--- a/docker/host.sls
+++ b/docker/host.sls
@@ -38,6 +38,33 @@
   - watch_in:
     - service: docker_service
 
+{%- if host.get('proxy', {}).get('enabled') %}
+{%- if host.proxy.get('http') or host.proxy.get('https') or host.proxy.get('no_proxy') %}
+
+/etc/systemd/system/docker.service.d/http-proxy.conf:
+  file.managed:
+  - source: salt://docker/files/http-proxy.conf
+  - template: jinja
+  - makedirs: True
+  - require_in:
+    - service: docker_service
+
+{% else %}
+
+/etc/systemd/system/docker.service.d/http-proxy.conf:
+  file.absent
+
+{%- endif %}
+
+systemd_reload_due_proxy:
+  module.run:
+    - name: service.systemctl_reload
+    - onchanges:
+      - file: /etc/systemd/system/docker.service.d/http-proxy.conf
+
+{%- endif %}
+
+
 docker_service:
   service.running:
   - name: {{ host.service }}
diff --git a/docker/meta/prometheus.yml b/docker/meta/prometheus.yml
index 14a6f1a..d5fed29 100644
--- a/docker/meta/prometheus.yml
+++ b/docker/meta/prometheus.yml
@@ -20,7 +20,7 @@
     {%- for service_name, service in stack.get('service', {})|dictsort %}
       {%- if service.get('deploy', {}).replicas is defined %}
         {%- set full_service_name = "{}_{}".format(stack_name, service_name) %}
-        {%- set camel_case_name = full_service_name.split('_')|map('capitalize')|join('') %}
+        {%- set camel_case_name = full_service_name.split('_')|map('capitalize')|join('')|replace('-', '') %}
         {%- set label_selector = 'com_docker_swarm_service_name="{}_{}"'.format(stack_name, service_name) %}
         {%- if service.deploy.replicas > 1 %}
     DockerService{{ camel_case_name }}InvalidReplicasNumber:
diff --git a/tests/pillar/client_deploy.sls b/tests/pillar/client_deploy.sls
index 860531a..d6d56ea 100644
--- a/tests/pillar/client_deploy.sls
+++ b/tests/pillar/client_deploy.sls
@@ -6,6 +6,7 @@
         enabled: true
         environment:
           SOMEVAR: somevalue
+        version: 3.3
         service:
           db:
             image: postgres
diff --git a/tests/pillar/host_single_proxy.sls b/tests/pillar/host_single_proxy.sls
new file mode 100644
index 0000000..516e970
--- /dev/null
+++ b/tests/pillar/host_single_proxy.sls
@@ -0,0 +1,18 @@
+docker:
+  host:
+    enabled: true
+    options:
+      bip: 192.168.0.1/24
+      log-driver: json-file
+      log-opts:
+        size: 50m
+      insecure-registry:
+      - srv01
+      - srv02
+      - srv03
+    proxy:
+      http: http://proxy:3128
+      https: http://[::1]:3128
+      no_proxy:
+        - local1
+        - local2