Added client.registry role to mirror docker images
Change-Id: I4e7815ac087d9d08f3fe80e7bf28f6076d64b77b
diff --git a/README.rst b/README.rst
index ff95bc1..81cb038 100644
--- a/README.rst
+++ b/README.rst
@@ -181,6 +181,24 @@
depends_on:
- db
+Registry
+^^^^^^^^
+
+.. code-block:: yaml
+
+ docker:
+ client:
+ registry:
+ target_registry: apt:5000
+ image:
+ - registry: docker
+ name: compose:1.8.0
+ - registry: tcpcloud
+ name: jenkins:latest
+ - registry: ""
+ name: registry:2
+ target_registry: myregistry
+
Service
-------
diff --git a/docker/client/init.sls b/docker/client/init.sls
index e99aa8b..8e0ca58 100644
--- a/docker/client/init.sls
+++ b/docker/client/init.sls
@@ -12,6 +12,9 @@
{%- if client.stack is defined %}
- docker.client.stack
{%- endif %}
+ {%- if client.registry is defined %}
+ - docker.client.registry
+ {%- endif %}
{%- if client.service is defined %}
- docker.client.service
{%- endif %}
diff --git a/docker/client/registry.sls b/docker/client/registry.sls
new file mode 100644
index 0000000..c8a366b
--- /dev/null
+++ b/docker/client/registry.sls
@@ -0,0 +1,31 @@
+{% from "docker/map.jinja" import client with context %}
+
+include:
+ - docker.client
+
+{%- for image in client.registry.get('image', {}) %}
+
+{%- set target_registry = image.get('target_registry', client.registry.target_registry) ~ '/' %}
+{%- if image.registry is defined and image.registry != "" and image.registry is not none %}
+{%- set source_registry = image.registry ~ '/' %}
+{%- else %}
+{%- set source_registry = "" %}
+{%- endif %}
+
+docker_image_{{ image.name }}_pull:
+ cmd.run:
+ - name: docker pull {{ source_registry }}{{ image.name }}
+
+docker_image_{{ image.name }}_tag:
+ cmd.run:
+ - name: docker tag {{ source_registry }}{{ image.name }} {{ target_registry }}{{ image.name }}
+ - require:
+ - cmd: docker_image_{{ image.name }}_pull
+
+docker_image_{{ image.name }}_push:
+ cmd.run:
+ - name: docker push {{ target_registry }}{{ image.name }}
+ - require:
+ - cmd: docker_image_{{ image.name }}_tag
+
+{%- endfor %}
\ No newline at end of file