summaryrefslogtreecommitdiff
path: root/tests/integration_tests
diff options
context:
space:
mode:
authorLucendio <github+dev@lucendio.com>2021-10-25 21:31:07 +0200
committerGitHub <noreply@github.com>2021-10-25 14:31:07 -0500
commita4236c375ddf78258a8f9252c1d79c665aa4f88b (patch)
treea092882639d27965c2fe6fd7d3faa232c37f5d22 /tests/integration_tests
parent81f6aa1653936e324bba69e51439aa8894aaf170 (diff)
downloadvyos-cloud-init-a4236c375ddf78258a8f9252c1d79c665aa4f88b.tar.gz
vyos-cloud-init-a4236c375ddf78258a8f9252c1d79c665aa4f88b.zip
Add module 'write-files-deferred' executed in stage 'final' (#916)
The main idea is to introduce a second module that takes care of writing files, but in the 'final' stage. While the introduction of a second module would allow for choosing the appropriate place withing the order of modules (and stages), there is no addition top-level directive being added to the cloud configuration schema. Instead, 'write-files' schema is being extended to include a 'defer' attribute used only by the 'write-deffered-files' modules. The new module 'write-deferred-files' reuses as much as possible of the 'write-files' functionality.
Diffstat (limited to 'tests/integration_tests')
-rw-r--r--tests/integration_tests/modules/test_write_files.py21
1 files changed, 21 insertions, 0 deletions
diff --git a/tests/integration_tests/modules/test_write_files.py b/tests/integration_tests/modules/test_write_files.py
index 15832ae3..1d532fac 100644
--- a/tests/integration_tests/modules/test_write_files.py
+++ b/tests/integration_tests/modules/test_write_files.py
@@ -21,6 +21,9 @@ B64_CONTENT = base64.b64encode(ASCII_TEXT.encode("utf-8"))
#
USER_DATA = """\
#cloud-config
+users:
+- default
+- name: myuser
write_files:
- encoding: b64
content: {}
@@ -41,6 +44,12 @@ write_files:
H4sIAIDb/U8C/1NW1E/KzNMvzuBKTc7IV8hIzcnJVyjPL8pJ4QIA6N+MVxsAAAA=
path: /root/file_gzip
permissions: '0755'
+- path: '/home/testuser/my-file'
+ content: |
+ echo 'hello world!'
+ defer: true
+ owner: 'myuser'
+ permissions: '0644'
""".format(B64_CONTENT.decode("ascii"))
@@ -64,3 +73,15 @@ class TestWriteFiles:
def test_write_files(self, cmd, expected_out, class_client):
out = class_client.execute(cmd)
assert expected_out in out
+
+ def test_write_files_deferred(self, class_client):
+ """Test that write files deferred works as expected.
+
+ Users get created after write_files module runs, so ensure that
+ with `defer: true`, the file gets written with correct ownership.
+ """
+ out = class_client.read_from_file("/home/testuser/my-file")
+ assert "echo 'hello world!'" == out
+ assert class_client.execute(
+ 'stat -c "%U %a" /home/testuser/my-file'
+ ) == 'myuser 644'