Ability to get file from secured source
PROD-31387
Change-Id: Ica1c58f89d962fb4c3a8bc63f207f664ee39c1e5
diff --git a/README.rst b/README.rst
index a14ae15..c315aee 100644
--- a/README.rst
+++ b/README.rst
@@ -546,6 +546,28 @@
/tmp/test.txt:
contents_grains: motd
+Ensure presence of file by specifying its secured source:
+
+.. code-block:: yaml
+
+ linux:
+ system:
+ file:
+ /tmp/test.txt:
+ secured_source:
+ protocol: http #optional
+ user: foo
+ password: bar
+ url: example.com/test.txt
+ secured_hash: #optional
+ url: example.com/test.txt.md5
+ user: root #optional
+ group: root #optional
+ mode: 700 #optional
+ dir_mode: 700 #optional
+ encoding: utf-8 #optional
+ makedirs: true #optional
+
Ensure presence of file to be serialized through one of the
serializer modules (see:
https://docs.saltstack.com/en/latest/ref/serializers/all/index.html):
diff --git a/linux/system/file.sls b/linux/system/file.sls
index 1ae9906..61d1b57 100644
--- a/linux/system/file.sls
+++ b/linux/system/file.sls
@@ -42,7 +42,24 @@
{%- endif %}
{%- else %}
file.managed:
- {%- if file.source is defined %}
+ {%- if file.secured_source is defined %}
+ {%- set file_source = file.secured_source.get('protocol', 'http') + '://' +
+ file.secured_source.get('user') + ':' +
+ file.secured_source.get('password') + '@' +
+ file.secured_source.get('url') %}
+ - source: {{ file_source }}
+ {%- if file.secured_hash is defined %}
+ {%- set file_hash = file.secured_hash.get('protocol', file.secured_source.get('protocol', 'http')) + '://' +
+ file.secured_hash.get('user', file.secured_source.get('user')) + ':' +
+ file.secured_hash.get('password', file.secured_source.get('password')) + '@' +
+ file.secured_hash.get('url', file.secured_source.get('url')) %}
+ - source_hash: {{ file_hash }}
+ {%- elif file.hash is defined %}
+ - source_hash: {{ file.hash }}
+ {%- else %}
+ - skip_verify: True
+ {%- endif %}
+ {%- elif file.source is defined %}
- source: {{ file.source }}
{%- if file.hash is defined %}
- source_hash: {{ file.hash }}
diff --git a/tests/pillar/system.sls b/tests/pillar/system.sls
index d5a953e..1ca26c4 100644
--- a/tests/pillar/system.sls
+++ b/tests/pillar/system.sls
@@ -19,6 +19,15 @@
sample2.txt:
name: /tmp/sample2.txt
source: http://techslides.com/demos/samples/sample.txt
+ sample3.tar.gz:
+ name: /tmp/sample3.tar.gz
+ secured_source:
+ protocol: http #optional
+ user: username
+ password: password
+ url: wordpress.org/latest.tar.gz
+ secured_hash: #optional
+ url: wordpress.org/latest.tar.gz.md5
test2:
name: /tmp/test2.txt
contents: |