diff --git a/sdk_container/src/third_party/coreos-overlay/changelog/bugfixes/2022-09-27-ignition.md b/sdk_container/src/third_party/coreos-overlay/changelog/bugfixes/2022-09-27-ignition.md new file mode 100644 index 0000000000..881de34a85 --- /dev/null +++ b/sdk_container/src/third_party/coreos-overlay/changelog/bugfixes/2022-09-27-ignition.md @@ -0,0 +1 @@ +- Added merging of Ignition systemd duplicated units when auto-translating from Ignition 2 to Ignition 3. ([coreos-overlay#2187](https://github.com/flatcar/coreos-overlay/pull/2187)) diff --git a/sdk_container/src/third_party/coreos-overlay/sys-apps/ignition/files/0001-sed-s-coreos-flatcar-linux.patch b/sdk_container/src/third_party/coreos-overlay/sys-apps/ignition/files/0001-sed-s-coreos-flatcar.patch similarity index 95% rename from sdk_container/src/third_party/coreos-overlay/sys-apps/ignition/files/0001-sed-s-coreos-flatcar-linux.patch rename to sdk_container/src/third_party/coreos-overlay/sys-apps/ignition/files/0001-sed-s-coreos-flatcar.patch index d9c5cf44f7..c1b0196685 100644 --- a/sdk_container/src/third_party/coreos-overlay/sys-apps/ignition/files/0001-sed-s-coreos-flatcar-linux.patch +++ b/sdk_container/src/third_party/coreos-overlay/sys-apps/ignition/files/0001-sed-s-coreos-flatcar.patch @@ -1,7 +1,7 @@ -From 68f056c7c8d36234ca7fd5e6ad2eb55ed1f557e6 Mon Sep 17 00:00:00 2001 +From 4b86d64fe196d9cb5ca43548234d521907a1cb4d Mon Sep 17 00:00:00 2001 From: Mathieu Tortuyaux Date: Wed, 25 May 2022 10:09:37 +0200 -Subject: [PATCH 01/15] *: sed `s/coreos/flatcar/` +Subject: [PATCH 01/16] *: sed `s/coreos/flatcar/` Signed-off-by: Mathieu Tortuyaux --- @@ -306,7 +306,7 @@ Signed-off-by: Mathieu Tortuyaux 298 files changed, 813 insertions(+), 813 deletions(-) diff --git a/build b/build -index dba50388..3fe7eb93 100755 +index dba50388..b8f0a049 100755 --- a/build +++ b/build @@ -5,7 +5,7 @@ set -eu @@ -328,7 +328,7 @@ index dba50388..3fe7eb93 100755 eval $(go env) diff --git a/config/config.go b/config/config.go -index 3ded9022..578f7fc6 100644 +index 3ded9022..def40387 100644 --- a/config/config.go +++ b/config/config.go @@ -15,8 +15,8 @@ @@ -343,7 +343,7 @@ index 3ded9022..578f7fc6 100644 "github.com/coreos/vcontext/report" ) diff --git a/config/config_test.go b/config/config_test.go -index c39f85ca..85065c97 100644 +index c39f85ca..8fc7d40e 100644 --- a/config/config_test.go +++ b/config/config_test.go @@ -19,12 +19,12 @@ import ( @@ -366,7 +366,7 @@ index c39f85ca..85065c97 100644 type typeSet map[reflect.Type]struct{} diff --git a/config/merge/merge.go b/config/merge/merge.go -index 1ba91b3d..4a6ebeab 100644 +index 1ba91b3d..f2bcc274 100644 --- a/config/merge/merge.go +++ b/config/merge/merge.go @@ -19,7 +19,7 @@ import ( @@ -397,7 +397,7 @@ index 1ba91b3d..4a6ebeab 100644 } transcribeOne(fromPath, toPath, transcript) diff --git a/config/merge/merge_test.go b/config/merge/merge_test.go -index 4555a7a9..69dd9e59 100644 +index 4555a7a9..165567b4 100644 --- a/config/merge/merge_test.go +++ b/config/merge/merge_test.go @@ -17,9 +17,9 @@ package merge @@ -423,7 +423,7 @@ index 4555a7a9..69dd9e59 100644 type test struct { in1 v3_2.Config diff --git a/config/shared/validations/unit.go b/config/shared/validations/unit.go -index 57744c31..36fa3612 100644 +index 57744c31..273ccbe0 100644 --- a/config/shared/validations/unit.go +++ b/config/shared/validations/unit.go @@ -17,7 +17,7 @@ @@ -436,7 +436,7 @@ index 57744c31..36fa3612 100644 "github.com/coreos/go-systemd/v22/unit" ) diff --git a/config/translate/translate.go b/config/translate/translate.go -index 05d8ce2c..ee4183a7 100644 +index 05d8ce2c..1195e50b 100644 --- a/config/translate/translate.go +++ b/config/translate/translate.go @@ -18,7 +18,7 @@ import ( @@ -449,7 +449,7 @@ index 05d8ce2c..ee4183a7 100644 /* diff --git a/config/translate/translate_test.go b/config/translate/translate_test.go -index 5d1adda9..b0ae0855 100644 +index 5d1adda9..dee790f1 100644 --- a/config/translate/translate_test.go +++ b/config/translate/translate_test.go @@ -19,8 +19,8 @@ import ( @@ -464,7 +464,7 @@ index 5d1adda9..b0ae0855 100644 // Note: we need different input and output types which unfortunately means a lot of tests diff --git a/config/util/config.go b/config/util/config.go -index 85cd7fa7..9fb88d8e 100644 +index 85cd7fa7..4cdd83b7 100644 --- a/config/util/config.go +++ b/config/util/config.go @@ -14,7 +14,7 @@ @@ -477,7 +477,7 @@ index 85cd7fa7..9fb88d8e 100644 "github.com/coreos/go-semver/semver" "github.com/coreos/vcontext/report" diff --git a/config/util/parsingErrors.go b/config/util/parsingErrors.go -index 2af85e2b..5e2b4a2b 100644 +index 2af85e2b..865d75d2 100644 --- a/config/util/parsingErrors.go +++ b/config/util/parsingErrors.go @@ -17,7 +17,7 @@ package util @@ -490,7 +490,7 @@ index 2af85e2b..5e2b4a2b 100644 "github.com/coreos/vcontext/path" "github.com/coreos/vcontext/report" diff --git a/config/v3_0/config.go b/config/v3_0/config.go -index ca32f7ad..851b26b1 100644 +index ca32f7ad..a00e33f0 100644 --- a/config/v3_0/config.go +++ b/config/v3_0/config.go @@ -15,11 +15,11 @@ @@ -511,7 +511,7 @@ index ca32f7ad..851b26b1 100644 "github.com/coreos/go-semver/semver" "github.com/coreos/vcontext/report" diff --git a/config/v3_0/config_test.go b/config/v3_0/config_test.go -index f26d98c4..6e1ea5d7 100644 +index f26d98c4..a4e757c4 100644 --- a/config/v3_0/config_test.go +++ b/config/v3_0/config_test.go @@ -17,8 +17,8 @@ package v3_0 @@ -526,7 +526,7 @@ index f26d98c4..6e1ea5d7 100644 ) diff --git a/config/v3_0/types/disk.go b/config/v3_0/types/disk.go -index bbb073ab..3137b652 100644 +index bbb073ab..dc201c31 100644 --- a/config/v3_0/types/disk.go +++ b/config/v3_0/types/disk.go @@ -15,8 +15,8 @@ @@ -541,7 +541,7 @@ index bbb073ab..3137b652 100644 "github.com/coreos/vcontext/path" "github.com/coreos/vcontext/report" diff --git a/config/v3_0/types/file.go b/config/v3_0/types/file.go -index 5fa9ca8b..fee8d209 100644 +index 5fa9ca8b..43291675 100644 --- a/config/v3_0/types/file.go +++ b/config/v3_0/types/file.go @@ -15,8 +15,8 @@ @@ -556,7 +556,7 @@ index 5fa9ca8b..fee8d209 100644 "github.com/coreos/vcontext/path" "github.com/coreos/vcontext/report" diff --git a/config/v3_0/types/file_test.go b/config/v3_0/types/file_test.go -index ca0e3582..1e0e4cac 100644 +index ca0e3582..ad33e454 100644 --- a/config/v3_0/types/file_test.go +++ b/config/v3_0/types/file_test.go @@ -17,8 +17,8 @@ package types @@ -571,7 +571,7 @@ index ca0e3582..1e0e4cac 100644 func TestFileValidateOverwrite(t *testing.T) { diff --git a/config/v3_0/types/filesystem.go b/config/v3_0/types/filesystem.go -index 08d1e8ef..55ff45d8 100644 +index 08d1e8ef..ae9f719a 100644 --- a/config/v3_0/types/filesystem.go +++ b/config/v3_0/types/filesystem.go @@ -15,8 +15,8 @@ @@ -586,7 +586,7 @@ index 08d1e8ef..55ff45d8 100644 "github.com/coreos/vcontext/path" "github.com/coreos/vcontext/report" diff --git a/config/v3_0/types/filesystem_test.go b/config/v3_0/types/filesystem_test.go -index 93b1bcea..9cb89531 100644 +index 93b1bcea..19d9d62a 100644 --- a/config/v3_0/types/filesystem_test.go +++ b/config/v3_0/types/filesystem_test.go @@ -17,8 +17,8 @@ package types @@ -601,7 +601,7 @@ index 93b1bcea..9cb89531 100644 func TestFilesystemValidateFormat(t *testing.T) { diff --git a/config/v3_0/types/ignition.go b/config/v3_0/types/ignition.go -index 7a4d3cdb..c7297db5 100644 +index 7a4d3cdb..4d8482f4 100644 --- a/config/v3_0/types/ignition.go +++ b/config/v3_0/types/ignition.go @@ -17,7 +17,7 @@ package types @@ -614,7 +614,7 @@ index 7a4d3cdb..c7297db5 100644 "github.com/coreos/vcontext/path" "github.com/coreos/vcontext/report" diff --git a/config/v3_0/types/mode.go b/config/v3_0/types/mode.go -index 6021b915..2d2488ae 100644 +index 6021b915..8acc4e75 100644 --- a/config/v3_0/types/mode.go +++ b/config/v3_0/types/mode.go @@ -15,7 +15,7 @@ @@ -627,7 +627,7 @@ index 6021b915..2d2488ae 100644 func validateMode(m *int) error { diff --git a/config/v3_0/types/mode_test.go b/config/v3_0/types/mode_test.go -index addf4afa..87016c22 100644 +index addf4afa..e9a243ce 100644 --- a/config/v3_0/types/mode_test.go +++ b/config/v3_0/types/mode_test.go @@ -18,8 +18,8 @@ import ( @@ -642,7 +642,7 @@ index addf4afa..87016c22 100644 ) diff --git a/config/v3_0/types/node.go b/config/v3_0/types/node.go -index fb41f1f0..f030be40 100644 +index fb41f1f0..36e79157 100644 --- a/config/v3_0/types/node.go +++ b/config/v3_0/types/node.go @@ -17,8 +17,8 @@ package types @@ -657,7 +657,7 @@ index fb41f1f0..f030be40 100644 vpath "github.com/coreos/vcontext/path" "github.com/coreos/vcontext/report" diff --git a/config/v3_0/types/node_test.go b/config/v3_0/types/node_test.go -index 265db7f1..5ebd0384 100644 +index 265db7f1..11087ecf 100644 --- a/config/v3_0/types/node_test.go +++ b/config/v3_0/types/node_test.go @@ -18,8 +18,8 @@ import ( @@ -672,7 +672,7 @@ index 265db7f1..5ebd0384 100644 "github.com/coreos/vcontext/path" "github.com/coreos/vcontext/report" diff --git a/config/v3_0/types/partition.go b/config/v3_0/types/partition.go -index 84be0cd9..567d6930 100644 +index 84be0cd9..46e873d7 100644 --- a/config/v3_0/types/partition.go +++ b/config/v3_0/types/partition.go @@ -19,8 +19,8 @@ import ( @@ -687,7 +687,7 @@ index 84be0cd9..567d6930 100644 "github.com/coreos/vcontext/path" "github.com/coreos/vcontext/report" diff --git a/config/v3_0/types/partition_test.go b/config/v3_0/types/partition_test.go -index 728aead6..eb9d34b4 100644 +index 728aead6..dcd3b8de 100644 --- a/config/v3_0/types/partition_test.go +++ b/config/v3_0/types/partition_test.go @@ -17,8 +17,8 @@ package types @@ -702,7 +702,7 @@ index 728aead6..eb9d34b4 100644 func TestValidateLabel(t *testing.T) { diff --git a/config/v3_0/types/path.go b/config/v3_0/types/path.go -index c06fccf1..5757ac86 100644 +index c06fccf1..4266034a 100644 --- a/config/v3_0/types/path.go +++ b/config/v3_0/types/path.go @@ -17,8 +17,8 @@ package types @@ -717,7 +717,7 @@ index c06fccf1..5757ac86 100644 func validatePath(p string) error { diff --git a/config/v3_0/types/path_test.go b/config/v3_0/types/path_test.go -index 98960487..13a0e935 100644 +index 98960487..b7f7598b 100644 --- a/config/v3_0/types/path_test.go +++ b/config/v3_0/types/path_test.go @@ -18,7 +18,7 @@ import ( @@ -730,7 +730,7 @@ index 98960487..13a0e935 100644 func TestPathValidate(t *testing.T) { diff --git a/config/v3_0/types/raid.go b/config/v3_0/types/raid.go -index 9c861fcb..85be6d3f 100644 +index 9c861fcb..3b746c1c 100644 --- a/config/v3_0/types/raid.go +++ b/config/v3_0/types/raid.go @@ -15,7 +15,7 @@ @@ -743,7 +743,7 @@ index 9c861fcb..85be6d3f 100644 "github.com/coreos/vcontext/path" "github.com/coreos/vcontext/report" diff --git a/config/v3_0/types/raid_test.go b/config/v3_0/types/raid_test.go -index 34861605..a28bfa70 100644 +index 34861605..639ecea5 100644 --- a/config/v3_0/types/raid_test.go +++ b/config/v3_0/types/raid_test.go @@ -18,8 +18,8 @@ import ( @@ -758,7 +758,7 @@ index 34861605..a28bfa70 100644 "github.com/coreos/vcontext/path" "github.com/coreos/vcontext/report" diff --git a/config/v3_0/types/storage.go b/config/v3_0/types/storage.go -index eac98e74..44b3bf04 100644 +index eac98e74..69fe9eb6 100644 --- a/config/v3_0/types/storage.go +++ b/config/v3_0/types/storage.go @@ -18,8 +18,8 @@ import ( @@ -773,7 +773,7 @@ index eac98e74..44b3bf04 100644 vpath "github.com/coreos/vcontext/path" "github.com/coreos/vcontext/report" diff --git a/config/v3_0/types/storage_test.go b/config/v3_0/types/storage_test.go -index 00c5861a..e5c59b6b 100644 +index 00c5861a..a9ef8934 100644 --- a/config/v3_0/types/storage_test.go +++ b/config/v3_0/types/storage_test.go @@ -18,8 +18,8 @@ import ( @@ -788,7 +788,7 @@ index 00c5861a..e5c59b6b 100644 "github.com/coreos/vcontext/path" "github.com/coreos/vcontext/report" diff --git a/config/v3_0/types/unit.go b/config/v3_0/types/unit.go -index e0e5c50a..200931dd 100644 +index e0e5c50a..630c7331 100644 --- a/config/v3_0/types/unit.go +++ b/config/v3_0/types/unit.go @@ -19,9 +19,9 @@ import ( @@ -805,7 +805,7 @@ index e0e5c50a..200931dd 100644 "github.com/coreos/go-systemd/v22/unit" cpath "github.com/coreos/vcontext/path" diff --git a/config/v3_0/types/unit_test.go b/config/v3_0/types/unit_test.go -index b0b2e884..84c04f11 100644 +index b0b2e884..3a22e081 100644 --- a/config/v3_0/types/unit_test.go +++ b/config/v3_0/types/unit_test.go @@ -19,8 +19,8 @@ import ( @@ -820,7 +820,7 @@ index b0b2e884..84c04f11 100644 "github.com/coreos/vcontext/path" "github.com/coreos/vcontext/report" diff --git a/config/v3_0/types/url.go b/config/v3_0/types/url.go -index 6a1f9397..90d903f2 100644 +index 6a1f9397..2d8c44b1 100644 --- a/config/v3_0/types/url.go +++ b/config/v3_0/types/url.go @@ -19,8 +19,8 @@ import ( @@ -835,7 +835,7 @@ index 6a1f9397..90d903f2 100644 func validateURL(s string) error { diff --git a/config/v3_0/types/url_test.go b/config/v3_0/types/url_test.go -index 46674d7c..6c9d5908 100644 +index 46674d7c..12dcdee0 100644 --- a/config/v3_0/types/url_test.go +++ b/config/v3_0/types/url_test.go @@ -17,8 +17,8 @@ package types @@ -850,7 +850,7 @@ index 46674d7c..6c9d5908 100644 func TestURLValidate(t *testing.T) { diff --git a/config/v3_0/types/verification.go b/config/v3_0/types/verification.go -index 23b7d7ad..5dd053b2 100644 +index 23b7d7ad..e37f0e3f 100644 --- a/config/v3_0/types/verification.go +++ b/config/v3_0/types/verification.go @@ -19,7 +19,7 @@ import ( @@ -863,7 +863,7 @@ index 23b7d7ad..5dd053b2 100644 "github.com/coreos/vcontext/path" "github.com/coreos/vcontext/report" diff --git a/config/v3_0/types/verification_test.go b/config/v3_0/types/verification_test.go -index 1ec23b00..0ec09889 100644 +index 1ec23b00..243a8884 100644 --- a/config/v3_0/types/verification_test.go +++ b/config/v3_0/types/verification_test.go @@ -18,7 +18,7 @@ import ( @@ -876,7 +876,7 @@ index 1ec23b00..0ec09889 100644 "github.com/coreos/vcontext/path" "github.com/coreos/vcontext/report" diff --git a/config/v3_1/config.go b/config/v3_1/config.go -index a40ae56c..f7c06856 100644 +index a40ae56c..e413ee25 100644 --- a/config/v3_1/config.go +++ b/config/v3_1/config.go @@ -15,13 +15,13 @@ @@ -901,7 +901,7 @@ index a40ae56c..f7c06856 100644 "github.com/coreos/go-semver/semver" "github.com/coreos/vcontext/report" diff --git a/config/v3_1/config_test.go b/config/v3_1/config_test.go -index 6c27691b..60782675 100644 +index 6c27691b..5b6a1d3f 100644 --- a/config/v3_1/config_test.go +++ b/config/v3_1/config_test.go @@ -17,8 +17,8 @@ package v3_1 @@ -916,7 +916,7 @@ index 6c27691b..60782675 100644 ) diff --git a/config/v3_1/translate/translate.go b/config/v3_1/translate/translate.go -index 5921c42c..d16abc20 100644 +index 5921c42c..9217cc0a 100644 --- a/config/v3_1/translate/translate.go +++ b/config/v3_1/translate/translate.go @@ -15,10 +15,10 @@ @@ -935,7 +935,7 @@ index 5921c42c..d16abc20 100644 func translateFilesystem(old old_types.Filesystem) (ret types.Filesystem) { diff --git a/config/v3_1/translate/translate_test.go b/config/v3_1/translate/translate_test.go -index 84761a30..9ad5b0ab 100644 +index 84761a30..ed6f58eb 100644 --- a/config/v3_1/translate/translate_test.go +++ b/config/v3_1/translate/translate_test.go @@ -18,8 +18,8 @@ import ( @@ -950,7 +950,7 @@ index 84761a30..9ad5b0ab 100644 // Check that we have valid translators for the complete config struct diff --git a/config/v3_1/types/disk.go b/config/v3_1/types/disk.go -index bbb073ab..3137b652 100644 +index bbb073ab..dc201c31 100644 --- a/config/v3_1/types/disk.go +++ b/config/v3_1/types/disk.go @@ -15,8 +15,8 @@ @@ -965,7 +965,7 @@ index bbb073ab..3137b652 100644 "github.com/coreos/vcontext/path" "github.com/coreos/vcontext/report" diff --git a/config/v3_1/types/file.go b/config/v3_1/types/file.go -index 97aa84a7..3e077700 100644 +index 97aa84a7..51e9bae8 100644 --- a/config/v3_1/types/file.go +++ b/config/v3_1/types/file.go @@ -15,8 +15,8 @@ @@ -980,7 +980,7 @@ index 97aa84a7..3e077700 100644 "github.com/coreos/vcontext/path" "github.com/coreos/vcontext/report" diff --git a/config/v3_1/types/file_test.go b/config/v3_1/types/file_test.go -index f44bf890..3e67741d 100644 +index f44bf890..bcd01746 100644 --- a/config/v3_1/types/file_test.go +++ b/config/v3_1/types/file_test.go @@ -17,8 +17,8 @@ package types @@ -995,7 +995,7 @@ index f44bf890..3e67741d 100644 func TestFileValidateOverwrite(t *testing.T) { diff --git a/config/v3_1/types/filesystem.go b/config/v3_1/types/filesystem.go -index 8b07e3b9..0cc4e666 100644 +index 8b07e3b9..149dead1 100644 --- a/config/v3_1/types/filesystem.go +++ b/config/v3_1/types/filesystem.go @@ -15,8 +15,8 @@ @@ -1010,7 +1010,7 @@ index 8b07e3b9..0cc4e666 100644 "github.com/coreos/vcontext/path" "github.com/coreos/vcontext/report" diff --git a/config/v3_1/types/filesystem_test.go b/config/v3_1/types/filesystem_test.go -index 94f6b0a2..294dc2ea 100644 +index 94f6b0a2..67bc42f6 100644 --- a/config/v3_1/types/filesystem_test.go +++ b/config/v3_1/types/filesystem_test.go @@ -17,8 +17,8 @@ package types @@ -1025,7 +1025,7 @@ index 94f6b0a2..294dc2ea 100644 func TestFilesystemValidateFormat(t *testing.T) { diff --git a/config/v3_1/types/headers.go b/config/v3_1/types/headers.go -index be1aadad..56835594 100644 +index be1aadad..e968a2b4 100644 --- a/config/v3_1/types/headers.go +++ b/config/v3_1/types/headers.go @@ -17,7 +17,7 @@ package types @@ -1038,7 +1038,7 @@ index be1aadad..56835594 100644 "github.com/coreos/vcontext/report" ) diff --git a/config/v3_1/types/headers_test.go b/config/v3_1/types/headers_test.go -index 40380b68..02682db1 100644 +index 40380b68..5e888830 100644 --- a/config/v3_1/types/headers_test.go +++ b/config/v3_1/types/headers_test.go @@ -17,7 +17,7 @@ package types @@ -1051,7 +1051,7 @@ index 40380b68..02682db1 100644 func toPointer(val string) *string { diff --git a/config/v3_1/types/ignition.go b/config/v3_1/types/ignition.go -index 689b6093..c23e0ed6 100644 +index 689b6093..5e9cb356 100644 --- a/config/v3_1/types/ignition.go +++ b/config/v3_1/types/ignition.go @@ -17,7 +17,7 @@ package types @@ -1064,7 +1064,7 @@ index 689b6093..c23e0ed6 100644 "github.com/coreos/vcontext/path" "github.com/coreos/vcontext/report" diff --git a/config/v3_1/types/mode.go b/config/v3_1/types/mode.go -index 6021b915..2d2488ae 100644 +index 6021b915..8acc4e75 100644 --- a/config/v3_1/types/mode.go +++ b/config/v3_1/types/mode.go @@ -15,7 +15,7 @@ @@ -1077,7 +1077,7 @@ index 6021b915..2d2488ae 100644 func validateMode(m *int) error { diff --git a/config/v3_1/types/mode_test.go b/config/v3_1/types/mode_test.go -index addf4afa..87016c22 100644 +index addf4afa..e9a243ce 100644 --- a/config/v3_1/types/mode_test.go +++ b/config/v3_1/types/mode_test.go @@ -18,8 +18,8 @@ import ( @@ -1092,7 +1092,7 @@ index addf4afa..87016c22 100644 ) diff --git a/config/v3_1/types/node.go b/config/v3_1/types/node.go -index fb41f1f0..f030be40 100644 +index fb41f1f0..36e79157 100644 --- a/config/v3_1/types/node.go +++ b/config/v3_1/types/node.go @@ -17,8 +17,8 @@ package types @@ -1107,7 +1107,7 @@ index fb41f1f0..f030be40 100644 vpath "github.com/coreos/vcontext/path" "github.com/coreos/vcontext/report" diff --git a/config/v3_1/types/node_test.go b/config/v3_1/types/node_test.go -index 265db7f1..5ebd0384 100644 +index 265db7f1..11087ecf 100644 --- a/config/v3_1/types/node_test.go +++ b/config/v3_1/types/node_test.go @@ -18,8 +18,8 @@ import ( @@ -1122,7 +1122,7 @@ index 265db7f1..5ebd0384 100644 "github.com/coreos/vcontext/path" "github.com/coreos/vcontext/report" diff --git a/config/v3_1/types/partition.go b/config/v3_1/types/partition.go -index 84be0cd9..567d6930 100644 +index 84be0cd9..46e873d7 100644 --- a/config/v3_1/types/partition.go +++ b/config/v3_1/types/partition.go @@ -19,8 +19,8 @@ import ( @@ -1137,7 +1137,7 @@ index 84be0cd9..567d6930 100644 "github.com/coreos/vcontext/path" "github.com/coreos/vcontext/report" diff --git a/config/v3_1/types/partition_test.go b/config/v3_1/types/partition_test.go -index 728aead6..eb9d34b4 100644 +index 728aead6..dcd3b8de 100644 --- a/config/v3_1/types/partition_test.go +++ b/config/v3_1/types/partition_test.go @@ -17,8 +17,8 @@ package types @@ -1152,7 +1152,7 @@ index 728aead6..eb9d34b4 100644 func TestValidateLabel(t *testing.T) { diff --git a/config/v3_1/types/path.go b/config/v3_1/types/path.go -index c06fccf1..5757ac86 100644 +index c06fccf1..4266034a 100644 --- a/config/v3_1/types/path.go +++ b/config/v3_1/types/path.go @@ -17,8 +17,8 @@ package types @@ -1167,7 +1167,7 @@ index c06fccf1..5757ac86 100644 func validatePath(p string) error { diff --git a/config/v3_1/types/path_test.go b/config/v3_1/types/path_test.go -index 98960487..13a0e935 100644 +index 98960487..b7f7598b 100644 --- a/config/v3_1/types/path_test.go +++ b/config/v3_1/types/path_test.go @@ -18,7 +18,7 @@ import ( @@ -1180,7 +1180,7 @@ index 98960487..13a0e935 100644 func TestPathValidate(t *testing.T) { diff --git a/config/v3_1/types/proxy.go b/config/v3_1/types/proxy.go -index 4a60087f..afe121b0 100644 +index 4a60087f..13b7501e 100644 --- a/config/v3_1/types/proxy.go +++ b/config/v3_1/types/proxy.go @@ -17,7 +17,7 @@ package types @@ -1193,7 +1193,7 @@ index 4a60087f..afe121b0 100644 "github.com/coreos/vcontext/path" "github.com/coreos/vcontext/report" diff --git a/config/v3_1/types/proxy_test.go b/config/v3_1/types/proxy_test.go -index e9429421..84ee38be 100644 +index e9429421..17a52956 100644 --- a/config/v3_1/types/proxy_test.go +++ b/config/v3_1/types/proxy_test.go @@ -18,8 +18,8 @@ import ( @@ -1208,7 +1208,7 @@ index e9429421..84ee38be 100644 "github.com/coreos/vcontext/path" "github.com/coreos/vcontext/report" diff --git a/config/v3_1/types/raid.go b/config/v3_1/types/raid.go -index 9c861fcb..85be6d3f 100644 +index 9c861fcb..3b746c1c 100644 --- a/config/v3_1/types/raid.go +++ b/config/v3_1/types/raid.go @@ -15,7 +15,7 @@ @@ -1221,7 +1221,7 @@ index 9c861fcb..85be6d3f 100644 "github.com/coreos/vcontext/path" "github.com/coreos/vcontext/report" diff --git a/config/v3_1/types/raid_test.go b/config/v3_1/types/raid_test.go -index 34861605..a28bfa70 100644 +index 34861605..639ecea5 100644 --- a/config/v3_1/types/raid_test.go +++ b/config/v3_1/types/raid_test.go @@ -18,8 +18,8 @@ import ( @@ -1236,7 +1236,7 @@ index 34861605..a28bfa70 100644 "github.com/coreos/vcontext/path" "github.com/coreos/vcontext/report" diff --git a/config/v3_1/types/resource.go b/config/v3_1/types/resource.go -index 68da6c7b..8c03b7f5 100644 +index 68da6c7b..6ea74d3d 100644 --- a/config/v3_1/types/resource.go +++ b/config/v3_1/types/resource.go @@ -17,8 +17,8 @@ package types @@ -1251,7 +1251,7 @@ index 68da6c7b..8c03b7f5 100644 "github.com/coreos/vcontext/path" "github.com/coreos/vcontext/report" diff --git a/config/v3_1/types/storage.go b/config/v3_1/types/storage.go -index eac98e74..44b3bf04 100644 +index eac98e74..69fe9eb6 100644 --- a/config/v3_1/types/storage.go +++ b/config/v3_1/types/storage.go @@ -18,8 +18,8 @@ import ( @@ -1266,7 +1266,7 @@ index eac98e74..44b3bf04 100644 vpath "github.com/coreos/vcontext/path" "github.com/coreos/vcontext/report" diff --git a/config/v3_1/types/storage_test.go b/config/v3_1/types/storage_test.go -index 00c5861a..e5c59b6b 100644 +index 00c5861a..a9ef8934 100644 --- a/config/v3_1/types/storage_test.go +++ b/config/v3_1/types/storage_test.go @@ -18,8 +18,8 @@ import ( @@ -1281,7 +1281,7 @@ index 00c5861a..e5c59b6b 100644 "github.com/coreos/vcontext/path" "github.com/coreos/vcontext/report" diff --git a/config/v3_1/types/unit.go b/config/v3_1/types/unit.go -index e0e5c50a..200931dd 100644 +index e0e5c50a..630c7331 100644 --- a/config/v3_1/types/unit.go +++ b/config/v3_1/types/unit.go @@ -19,9 +19,9 @@ import ( @@ -1298,7 +1298,7 @@ index e0e5c50a..200931dd 100644 "github.com/coreos/go-systemd/v22/unit" cpath "github.com/coreos/vcontext/path" diff --git a/config/v3_1/types/unit_test.go b/config/v3_1/types/unit_test.go -index b0b2e884..84c04f11 100644 +index b0b2e884..3a22e081 100644 --- a/config/v3_1/types/unit_test.go +++ b/config/v3_1/types/unit_test.go @@ -19,8 +19,8 @@ import ( @@ -1313,7 +1313,7 @@ index b0b2e884..84c04f11 100644 "github.com/coreos/vcontext/path" "github.com/coreos/vcontext/report" diff --git a/config/v3_1/types/url.go b/config/v3_1/types/url.go -index 6a1f9397..90d903f2 100644 +index 6a1f9397..2d8c44b1 100644 --- a/config/v3_1/types/url.go +++ b/config/v3_1/types/url.go @@ -19,8 +19,8 @@ import ( @@ -1328,7 +1328,7 @@ index 6a1f9397..90d903f2 100644 func validateURL(s string) error { diff --git a/config/v3_1/types/url_test.go b/config/v3_1/types/url_test.go -index 46674d7c..6c9d5908 100644 +index 46674d7c..12dcdee0 100644 --- a/config/v3_1/types/url_test.go +++ b/config/v3_1/types/url_test.go @@ -17,8 +17,8 @@ package types @@ -1343,7 +1343,7 @@ index 46674d7c..6c9d5908 100644 func TestURLValidate(t *testing.T) { diff --git a/config/v3_1/types/verification.go b/config/v3_1/types/verification.go -index e410f98a..d1090f9a 100644 +index e410f98a..2bd16354 100644 --- a/config/v3_1/types/verification.go +++ b/config/v3_1/types/verification.go @@ -19,7 +19,7 @@ import ( @@ -1356,7 +1356,7 @@ index e410f98a..d1090f9a 100644 "github.com/coreos/vcontext/path" "github.com/coreos/vcontext/report" diff --git a/config/v3_1/types/verification_test.go b/config/v3_1/types/verification_test.go -index 6c0b3b2b..506c2685 100644 +index 6c0b3b2b..88fa0323 100644 --- a/config/v3_1/types/verification_test.go +++ b/config/v3_1/types/verification_test.go @@ -18,7 +18,7 @@ import ( @@ -1369,7 +1369,7 @@ index 6c0b3b2b..506c2685 100644 "github.com/coreos/vcontext/path" "github.com/coreos/vcontext/report" diff --git a/config/v3_2/config.go b/config/v3_2/config.go -index c6c7d94d..3f4ca522 100644 +index c6c7d94d..e324f848 100644 --- a/config/v3_2/config.go +++ b/config/v3_2/config.go @@ -15,13 +15,13 @@ @@ -1394,7 +1394,7 @@ index c6c7d94d..3f4ca522 100644 "github.com/coreos/go-semver/semver" "github.com/coreos/vcontext/report" diff --git a/config/v3_2/config_test.go b/config/v3_2/config_test.go -index 0fb1d221..1f2dc95a 100644 +index 0fb1d221..80d95b51 100644 --- a/config/v3_2/config_test.go +++ b/config/v3_2/config_test.go @@ -17,8 +17,8 @@ package v3_2 @@ -1409,7 +1409,7 @@ index 0fb1d221..1f2dc95a 100644 ) diff --git a/config/v3_2/translate/translate.go b/config/v3_2/translate/translate.go -index 0fd4f420..9066221f 100644 +index 0fd4f420..323d3bf8 100644 --- a/config/v3_2/translate/translate.go +++ b/config/v3_2/translate/translate.go @@ -15,9 +15,9 @@ @@ -1426,7 +1426,7 @@ index 0fd4f420..9066221f 100644 func translateIgnition(old old_types.Ignition) (ret types.Ignition) { diff --git a/config/v3_2/translate/translate_test.go b/config/v3_2/translate/translate_test.go -index 72d0b359..a7ca2f85 100644 +index 72d0b359..fcea2c70 100644 --- a/config/v3_2/translate/translate_test.go +++ b/config/v3_2/translate/translate_test.go @@ -18,8 +18,8 @@ import ( @@ -1441,7 +1441,7 @@ index 72d0b359..a7ca2f85 100644 // Check that we have valid translators for the complete config struct diff --git a/config/v3_2/types/custom.go b/config/v3_2/types/custom.go -index 2a1231cb..5191d1e2 100644 +index 2a1231cb..bcde76fb 100644 --- a/config/v3_2/types/custom.go +++ b/config/v3_2/types/custom.go @@ -15,7 +15,7 @@ @@ -1454,7 +1454,7 @@ index 2a1231cb..5191d1e2 100644 "github.com/coreos/vcontext/path" "github.com/coreos/vcontext/report" diff --git a/config/v3_2/types/disk.go b/config/v3_2/types/disk.go -index 8caf8499..24c36547 100644 +index 8caf8499..29fd3900 100644 --- a/config/v3_2/types/disk.go +++ b/config/v3_2/types/disk.go @@ -15,8 +15,8 @@ @@ -1469,7 +1469,7 @@ index 8caf8499..24c36547 100644 "github.com/coreos/vcontext/path" "github.com/coreos/vcontext/report" diff --git a/config/v3_2/types/file.go b/config/v3_2/types/file.go -index 4e7566bd..83345a31 100644 +index 4e7566bd..f86d520b 100644 --- a/config/v3_2/types/file.go +++ b/config/v3_2/types/file.go @@ -15,8 +15,8 @@ @@ -1484,7 +1484,7 @@ index 4e7566bd..83345a31 100644 "github.com/coreos/vcontext/path" "github.com/coreos/vcontext/report" diff --git a/config/v3_2/types/file_test.go b/config/v3_2/types/file_test.go -index 449e0700..ec53cb38 100644 +index 449e0700..5aa2e87c 100644 --- a/config/v3_2/types/file_test.go +++ b/config/v3_2/types/file_test.go @@ -17,8 +17,8 @@ package types @@ -1499,7 +1499,7 @@ index 449e0700..ec53cb38 100644 func TestFileValidateOverwrite(t *testing.T) { diff --git a/config/v3_2/types/filesystem.go b/config/v3_2/types/filesystem.go -index 3bf064f3..fa68c2d1 100644 +index 3bf064f3..9e5c5f2b 100644 --- a/config/v3_2/types/filesystem.go +++ b/config/v3_2/types/filesystem.go @@ -15,8 +15,8 @@ @@ -1514,7 +1514,7 @@ index 3bf064f3..fa68c2d1 100644 "github.com/coreos/vcontext/path" "github.com/coreos/vcontext/report" diff --git a/config/v3_2/types/filesystem_test.go b/config/v3_2/types/filesystem_test.go -index 1f8db903..3cab3146 100644 +index 1f8db903..6e710426 100644 --- a/config/v3_2/types/filesystem_test.go +++ b/config/v3_2/types/filesystem_test.go @@ -17,8 +17,8 @@ package types @@ -1529,7 +1529,7 @@ index 1f8db903..3cab3146 100644 func TestFilesystemValidateFormat(t *testing.T) { diff --git a/config/v3_2/types/headers.go b/config/v3_2/types/headers.go -index be1aadad..56835594 100644 +index be1aadad..e968a2b4 100644 --- a/config/v3_2/types/headers.go +++ b/config/v3_2/types/headers.go @@ -17,7 +17,7 @@ package types @@ -1542,7 +1542,7 @@ index be1aadad..56835594 100644 "github.com/coreos/vcontext/report" ) diff --git a/config/v3_2/types/headers_test.go b/config/v3_2/types/headers_test.go -index 40380b68..02682db1 100644 +index 40380b68..5e888830 100644 --- a/config/v3_2/types/headers_test.go +++ b/config/v3_2/types/headers_test.go @@ -17,7 +17,7 @@ package types @@ -1555,7 +1555,7 @@ index 40380b68..02682db1 100644 func toPointer(val string) *string { diff --git a/config/v3_2/types/ignition.go b/config/v3_2/types/ignition.go -index 190445bd..746218a6 100644 +index 190445bd..1fbcf8c4 100644 --- a/config/v3_2/types/ignition.go +++ b/config/v3_2/types/ignition.go @@ -17,7 +17,7 @@ package types @@ -1568,7 +1568,7 @@ index 190445bd..746218a6 100644 "github.com/coreos/vcontext/path" "github.com/coreos/vcontext/report" diff --git a/config/v3_2/types/luks.go b/config/v3_2/types/luks.go -index 123392b2..592d49b8 100644 +index 123392b2..c80fc8d2 100644 --- a/config/v3_2/types/luks.go +++ b/config/v3_2/types/luks.go @@ -17,8 +17,8 @@ package types @@ -1583,7 +1583,7 @@ index 123392b2..592d49b8 100644 "github.com/coreos/vcontext/path" "github.com/coreos/vcontext/report" diff --git a/config/v3_2/types/mode.go b/config/v3_2/types/mode.go -index ad3e51c2..4ebde9f0 100644 +index ad3e51c2..8f15a8cb 100644 --- a/config/v3_2/types/mode.go +++ b/config/v3_2/types/mode.go @@ -15,7 +15,7 @@ @@ -1596,7 +1596,7 @@ index ad3e51c2..4ebde9f0 100644 func validateMode(m *int) error { diff --git a/config/v3_2/types/mode_test.go b/config/v3_2/types/mode_test.go -index 53e37a6b..0dcb80d4 100644 +index 53e37a6b..a8fa7a81 100644 --- a/config/v3_2/types/mode_test.go +++ b/config/v3_2/types/mode_test.go @@ -18,8 +18,8 @@ import ( @@ -1611,7 +1611,7 @@ index 53e37a6b..0dcb80d4 100644 ) diff --git a/config/v3_2/types/node.go b/config/v3_2/types/node.go -index 248276e7..e23730f2 100644 +index 248276e7..f4e94f9e 100644 --- a/config/v3_2/types/node.go +++ b/config/v3_2/types/node.go @@ -17,8 +17,8 @@ package types @@ -1626,7 +1626,7 @@ index 248276e7..e23730f2 100644 vpath "github.com/coreos/vcontext/path" "github.com/coreos/vcontext/report" diff --git a/config/v3_2/types/node_test.go b/config/v3_2/types/node_test.go -index 20ba4eb6..89a4aa04 100644 +index 20ba4eb6..9176b4b7 100644 --- a/config/v3_2/types/node_test.go +++ b/config/v3_2/types/node_test.go @@ -18,8 +18,8 @@ import ( @@ -1641,7 +1641,7 @@ index 20ba4eb6..89a4aa04 100644 "github.com/coreos/vcontext/path" "github.com/coreos/vcontext/report" diff --git a/config/v3_2/types/partition.go b/config/v3_2/types/partition.go -index 1b2d97ed..8363be28 100644 +index 1b2d97ed..6603af3b 100644 --- a/config/v3_2/types/partition.go +++ b/config/v3_2/types/partition.go @@ -19,8 +19,8 @@ import ( @@ -1656,7 +1656,7 @@ index 1b2d97ed..8363be28 100644 "github.com/coreos/vcontext/path" "github.com/coreos/vcontext/report" diff --git a/config/v3_2/types/partition_test.go b/config/v3_2/types/partition_test.go -index a1e1623f..fde716a9 100644 +index a1e1623f..9f8e7997 100644 --- a/config/v3_2/types/partition_test.go +++ b/config/v3_2/types/partition_test.go @@ -17,8 +17,8 @@ package types @@ -1671,7 +1671,7 @@ index a1e1623f..fde716a9 100644 func TestValidateLabel(t *testing.T) { diff --git a/config/v3_2/types/path.go b/config/v3_2/types/path.go -index 131e300c..d6d394a7 100644 +index 131e300c..cb48e341 100644 --- a/config/v3_2/types/path.go +++ b/config/v3_2/types/path.go @@ -17,8 +17,8 @@ package types @@ -1686,7 +1686,7 @@ index 131e300c..d6d394a7 100644 func validatePath(p string) error { diff --git a/config/v3_2/types/path_test.go b/config/v3_2/types/path_test.go -index 3d199cbd..6ed191b6 100644 +index 3d199cbd..33b2d0ba 100644 --- a/config/v3_2/types/path_test.go +++ b/config/v3_2/types/path_test.go @@ -18,7 +18,7 @@ import ( @@ -1699,7 +1699,7 @@ index 3d199cbd..6ed191b6 100644 func TestPathValidate(t *testing.T) { diff --git a/config/v3_2/types/proxy.go b/config/v3_2/types/proxy.go -index d48d210a..088459d8 100644 +index d48d210a..de146a99 100644 --- a/config/v3_2/types/proxy.go +++ b/config/v3_2/types/proxy.go @@ -17,7 +17,7 @@ package types @@ -1712,7 +1712,7 @@ index d48d210a..088459d8 100644 "github.com/coreos/vcontext/path" "github.com/coreos/vcontext/report" diff --git a/config/v3_2/types/proxy_test.go b/config/v3_2/types/proxy_test.go -index 269f4fb2..6884dd46 100644 +index 269f4fb2..3cc5e5cd 100644 --- a/config/v3_2/types/proxy_test.go +++ b/config/v3_2/types/proxy_test.go @@ -18,8 +18,8 @@ import ( @@ -1727,7 +1727,7 @@ index 269f4fb2..6884dd46 100644 "github.com/coreos/vcontext/path" "github.com/coreos/vcontext/report" diff --git a/config/v3_2/types/raid.go b/config/v3_2/types/raid.go -index 5ae4f8c0..22155cd0 100644 +index 5ae4f8c0..c3324bab 100644 --- a/config/v3_2/types/raid.go +++ b/config/v3_2/types/raid.go @@ -15,7 +15,7 @@ @@ -1740,7 +1740,7 @@ index 5ae4f8c0..22155cd0 100644 "github.com/coreos/vcontext/path" "github.com/coreos/vcontext/report" diff --git a/config/v3_2/types/raid_test.go b/config/v3_2/types/raid_test.go -index 34861605..a28bfa70 100644 +index 34861605..639ecea5 100644 --- a/config/v3_2/types/raid_test.go +++ b/config/v3_2/types/raid_test.go @@ -18,8 +18,8 @@ import ( @@ -1755,7 +1755,7 @@ index 34861605..a28bfa70 100644 "github.com/coreos/vcontext/path" "github.com/coreos/vcontext/report" diff --git a/config/v3_2/types/resource.go b/config/v3_2/types/resource.go -index 68da6c7b..8c03b7f5 100644 +index 68da6c7b..6ea74d3d 100644 --- a/config/v3_2/types/resource.go +++ b/config/v3_2/types/resource.go @@ -17,8 +17,8 @@ package types @@ -1770,7 +1770,7 @@ index 68da6c7b..8c03b7f5 100644 "github.com/coreos/vcontext/path" "github.com/coreos/vcontext/report" diff --git a/config/v3_2/types/storage.go b/config/v3_2/types/storage.go -index fd1b8cec..9e3e2931 100644 +index fd1b8cec..5b640136 100644 --- a/config/v3_2/types/storage.go +++ b/config/v3_2/types/storage.go @@ -18,8 +18,8 @@ import ( @@ -1785,7 +1785,7 @@ index fd1b8cec..9e3e2931 100644 vpath "github.com/coreos/vcontext/path" "github.com/coreos/vcontext/report" diff --git a/config/v3_2/types/storage_test.go b/config/v3_2/types/storage_test.go -index 7d27bd55..5caf872d 100644 +index 7d27bd55..a18f69a7 100644 --- a/config/v3_2/types/storage_test.go +++ b/config/v3_2/types/storage_test.go @@ -18,8 +18,8 @@ import ( @@ -1800,7 +1800,7 @@ index 7d27bd55..5caf872d 100644 "github.com/coreos/vcontext/path" "github.com/coreos/vcontext/report" diff --git a/config/v3_2/types/tang.go b/config/v3_2/types/tang.go -index 86ab79c9..d6df1d98 100644 +index 86ab79c9..a2fd8ee6 100644 --- a/config/v3_2/types/tang.go +++ b/config/v3_2/types/tang.go @@ -17,8 +17,8 @@ package types @@ -1815,7 +1815,7 @@ index 86ab79c9..d6df1d98 100644 "github.com/coreos/vcontext/path" "github.com/coreos/vcontext/report" diff --git a/config/v3_2/types/unit.go b/config/v3_2/types/unit.go -index bc2d3299..933163a7 100644 +index bc2d3299..ecc7ab08 100644 --- a/config/v3_2/types/unit.go +++ b/config/v3_2/types/unit.go @@ -19,9 +19,9 @@ import ( @@ -1832,7 +1832,7 @@ index bc2d3299..933163a7 100644 "github.com/coreos/go-systemd/v22/unit" cpath "github.com/coreos/vcontext/path" diff --git a/config/v3_2/types/unit_test.go b/config/v3_2/types/unit_test.go -index 3dc90540..494f210a 100644 +index 3dc90540..8c96dfba 100644 --- a/config/v3_2/types/unit_test.go +++ b/config/v3_2/types/unit_test.go @@ -19,8 +19,8 @@ import ( @@ -1847,7 +1847,7 @@ index 3dc90540..494f210a 100644 "github.com/coreos/vcontext/path" "github.com/coreos/vcontext/report" diff --git a/config/v3_2/types/url.go b/config/v3_2/types/url.go -index 0d8771bf..bb90bdf9 100644 +index 0d8771bf..bf1f3a5e 100644 --- a/config/v3_2/types/url.go +++ b/config/v3_2/types/url.go @@ -19,8 +19,8 @@ import ( @@ -1862,7 +1862,7 @@ index 0d8771bf..bb90bdf9 100644 func validateURL(s string) error { diff --git a/config/v3_2/types/url_test.go b/config/v3_2/types/url_test.go -index bfef261f..c371179f 100644 +index bfef261f..b10533d9 100644 --- a/config/v3_2/types/url_test.go +++ b/config/v3_2/types/url_test.go @@ -17,8 +17,8 @@ package types @@ -1877,7 +1877,7 @@ index bfef261f..c371179f 100644 func TestURLValidate(t *testing.T) { diff --git a/config/v3_2/types/verification.go b/config/v3_2/types/verification.go -index 5def6f04..0aaba72a 100644 +index 5def6f04..1ef291c0 100644 --- a/config/v3_2/types/verification.go +++ b/config/v3_2/types/verification.go @@ -19,7 +19,7 @@ import ( @@ -1890,7 +1890,7 @@ index 5def6f04..0aaba72a 100644 "github.com/coreos/vcontext/path" "github.com/coreos/vcontext/report" diff --git a/config/v3_2/types/verification_test.go b/config/v3_2/types/verification_test.go -index 9a0914d0..2ec32227 100644 +index 9a0914d0..f121b503 100644 --- a/config/v3_2/types/verification_test.go +++ b/config/v3_2/types/verification_test.go @@ -18,7 +18,7 @@ import ( @@ -1903,7 +1903,7 @@ index 9a0914d0..2ec32227 100644 "github.com/coreos/vcontext/path" "github.com/coreos/vcontext/report" diff --git a/config/v3_3/config.go b/config/v3_3/config.go -index 446ea67d..7a4dec23 100644 +index 446ea67d..a0a74723 100644 --- a/config/v3_3/config.go +++ b/config/v3_3/config.go @@ -15,13 +15,13 @@ @@ -1928,7 +1928,7 @@ index 446ea67d..7a4dec23 100644 "github.com/coreos/go-semver/semver" "github.com/coreos/vcontext/report" diff --git a/config/v3_3/config_test.go b/config/v3_3/config_test.go -index deb1e3b7..4792b544 100644 +index deb1e3b7..983c5a44 100644 --- a/config/v3_3/config_test.go +++ b/config/v3_3/config_test.go @@ -17,8 +17,8 @@ package v3_3 @@ -1943,7 +1943,7 @@ index deb1e3b7..4792b544 100644 ) diff --git a/config/v3_3/translate/translate.go b/config/v3_3/translate/translate.go -index 656ad0a4..970c4db8 100644 +index 656ad0a4..8d61318b 100644 --- a/config/v3_3/translate/translate.go +++ b/config/v3_3/translate/translate.go @@ -15,10 +15,10 @@ @@ -1962,7 +1962,7 @@ index 656ad0a4..970c4db8 100644 func translateIgnition(old old_types.Ignition) (ret types.Ignition) { diff --git a/config/v3_3/translate/translate_test.go b/config/v3_3/translate/translate_test.go -index 81f3029b..eccd9029 100644 +index 81f3029b..89c7c765 100644 --- a/config/v3_3/translate/translate_test.go +++ b/config/v3_3/translate/translate_test.go @@ -18,8 +18,8 @@ import ( @@ -1977,7 +1977,7 @@ index 81f3029b..eccd9029 100644 // Check that we have valid translators for the complete config struct diff --git a/config/v3_3/types/clevis.go b/config/v3_3/types/clevis.go -index 68887d43..6ac55ec6 100644 +index 68887d43..564154f6 100644 --- a/config/v3_3/types/clevis.go +++ b/config/v3_3/types/clevis.go @@ -15,8 +15,8 @@ @@ -1992,7 +1992,7 @@ index 68887d43..6ac55ec6 100644 "github.com/coreos/vcontext/path" "github.com/coreos/vcontext/report" diff --git a/config/v3_3/types/clevis_test.go b/config/v3_3/types/clevis_test.go -index f616868c..13f80b6c 100644 +index f616868c..c28509ee 100644 --- a/config/v3_3/types/clevis_test.go +++ b/config/v3_3/types/clevis_test.go @@ -18,8 +18,8 @@ import ( @@ -2007,7 +2007,7 @@ index f616868c..13f80b6c 100644 "github.com/coreos/vcontext/path" "github.com/coreos/vcontext/report" diff --git a/config/v3_3/types/disk.go b/config/v3_3/types/disk.go -index 8caf8499..24c36547 100644 +index 8caf8499..29fd3900 100644 --- a/config/v3_3/types/disk.go +++ b/config/v3_3/types/disk.go @@ -15,8 +15,8 @@ @@ -2022,7 +2022,7 @@ index 8caf8499..24c36547 100644 "github.com/coreos/vcontext/path" "github.com/coreos/vcontext/report" diff --git a/config/v3_3/types/file.go b/config/v3_3/types/file.go -index 4e7566bd..83345a31 100644 +index 4e7566bd..f86d520b 100644 --- a/config/v3_3/types/file.go +++ b/config/v3_3/types/file.go @@ -15,8 +15,8 @@ @@ -2037,7 +2037,7 @@ index 4e7566bd..83345a31 100644 "github.com/coreos/vcontext/path" "github.com/coreos/vcontext/report" diff --git a/config/v3_3/types/file_test.go b/config/v3_3/types/file_test.go -index 449e0700..ec53cb38 100644 +index 449e0700..5aa2e87c 100644 --- a/config/v3_3/types/file_test.go +++ b/config/v3_3/types/file_test.go @@ -17,8 +17,8 @@ package types @@ -2052,7 +2052,7 @@ index 449e0700..ec53cb38 100644 func TestFileValidateOverwrite(t *testing.T) { diff --git a/config/v3_3/types/filesystem.go b/config/v3_3/types/filesystem.go -index c722b363..d18da9e3 100644 +index c722b363..9f7f8bbc 100644 --- a/config/v3_3/types/filesystem.go +++ b/config/v3_3/types/filesystem.go @@ -15,8 +15,8 @@ @@ -2067,7 +2067,7 @@ index c722b363..d18da9e3 100644 "github.com/coreos/vcontext/path" "github.com/coreos/vcontext/report" diff --git a/config/v3_3/types/filesystem_test.go b/config/v3_3/types/filesystem_test.go -index 1f8db903..3cab3146 100644 +index 1f8db903..6e710426 100644 --- a/config/v3_3/types/filesystem_test.go +++ b/config/v3_3/types/filesystem_test.go @@ -17,8 +17,8 @@ package types @@ -2082,7 +2082,7 @@ index 1f8db903..3cab3146 100644 func TestFilesystemValidateFormat(t *testing.T) { diff --git a/config/v3_3/types/headers.go b/config/v3_3/types/headers.go -index be1aadad..56835594 100644 +index be1aadad..e968a2b4 100644 --- a/config/v3_3/types/headers.go +++ b/config/v3_3/types/headers.go @@ -17,7 +17,7 @@ package types @@ -2095,7 +2095,7 @@ index be1aadad..56835594 100644 "github.com/coreos/vcontext/report" ) diff --git a/config/v3_3/types/headers_test.go b/config/v3_3/types/headers_test.go -index 40380b68..02682db1 100644 +index 40380b68..5e888830 100644 --- a/config/v3_3/types/headers_test.go +++ b/config/v3_3/types/headers_test.go @@ -17,7 +17,7 @@ package types @@ -2108,7 +2108,7 @@ index 40380b68..02682db1 100644 func toPointer(val string) *string { diff --git a/config/v3_3/types/ignition.go b/config/v3_3/types/ignition.go -index 190445bd..746218a6 100644 +index 190445bd..1fbcf8c4 100644 --- a/config/v3_3/types/ignition.go +++ b/config/v3_3/types/ignition.go @@ -17,7 +17,7 @@ package types @@ -2121,7 +2121,7 @@ index 190445bd..746218a6 100644 "github.com/coreos/vcontext/path" "github.com/coreos/vcontext/report" diff --git a/config/v3_3/types/kargs_test.go b/config/v3_3/types/kargs_test.go -index 1a258727..79eecda7 100644 +index 1a258727..a79c037a 100644 --- a/config/v3_3/types/kargs_test.go +++ b/config/v3_3/types/kargs_test.go @@ -17,7 +17,7 @@ package types @@ -2134,7 +2134,7 @@ index 1a258727..79eecda7 100644 func TestKernelArgumentsValidate(t *testing.T) { diff --git a/config/v3_3/types/luks.go b/config/v3_3/types/luks.go -index 90d72387..0d505e34 100644 +index 90d72387..2862ebae 100644 --- a/config/v3_3/types/luks.go +++ b/config/v3_3/types/luks.go @@ -17,8 +17,8 @@ package types @@ -2149,7 +2149,7 @@ index 90d72387..0d505e34 100644 "github.com/coreos/vcontext/path" "github.com/coreos/vcontext/report" diff --git a/config/v3_3/types/mode.go b/config/v3_3/types/mode.go -index ad3e51c2..4ebde9f0 100644 +index ad3e51c2..8f15a8cb 100644 --- a/config/v3_3/types/mode.go +++ b/config/v3_3/types/mode.go @@ -15,7 +15,7 @@ @@ -2162,7 +2162,7 @@ index ad3e51c2..4ebde9f0 100644 func validateMode(m *int) error { diff --git a/config/v3_3/types/mode_test.go b/config/v3_3/types/mode_test.go -index 53e37a6b..0dcb80d4 100644 +index 53e37a6b..a8fa7a81 100644 --- a/config/v3_3/types/mode_test.go +++ b/config/v3_3/types/mode_test.go @@ -18,8 +18,8 @@ import ( @@ -2177,7 +2177,7 @@ index 53e37a6b..0dcb80d4 100644 ) diff --git a/config/v3_3/types/node.go b/config/v3_3/types/node.go -index 248276e7..e23730f2 100644 +index 248276e7..f4e94f9e 100644 --- a/config/v3_3/types/node.go +++ b/config/v3_3/types/node.go @@ -17,8 +17,8 @@ package types @@ -2192,7 +2192,7 @@ index 248276e7..e23730f2 100644 vpath "github.com/coreos/vcontext/path" "github.com/coreos/vcontext/report" diff --git a/config/v3_3/types/node_test.go b/config/v3_3/types/node_test.go -index 20ba4eb6..89a4aa04 100644 +index 20ba4eb6..9176b4b7 100644 --- a/config/v3_3/types/node_test.go +++ b/config/v3_3/types/node_test.go @@ -18,8 +18,8 @@ import ( @@ -2207,7 +2207,7 @@ index 20ba4eb6..89a4aa04 100644 "github.com/coreos/vcontext/path" "github.com/coreos/vcontext/report" diff --git a/config/v3_3/types/partition.go b/config/v3_3/types/partition.go -index 1b2d97ed..8363be28 100644 +index 1b2d97ed..6603af3b 100644 --- a/config/v3_3/types/partition.go +++ b/config/v3_3/types/partition.go @@ -19,8 +19,8 @@ import ( @@ -2222,7 +2222,7 @@ index 1b2d97ed..8363be28 100644 "github.com/coreos/vcontext/path" "github.com/coreos/vcontext/report" diff --git a/config/v3_3/types/partition_test.go b/config/v3_3/types/partition_test.go -index a1e1623f..fde716a9 100644 +index a1e1623f..9f8e7997 100644 --- a/config/v3_3/types/partition_test.go +++ b/config/v3_3/types/partition_test.go @@ -17,8 +17,8 @@ package types @@ -2237,7 +2237,7 @@ index a1e1623f..fde716a9 100644 func TestValidateLabel(t *testing.T) { diff --git a/config/v3_3/types/path.go b/config/v3_3/types/path.go -index 131e300c..d6d394a7 100644 +index 131e300c..cb48e341 100644 --- a/config/v3_3/types/path.go +++ b/config/v3_3/types/path.go @@ -17,8 +17,8 @@ package types @@ -2252,7 +2252,7 @@ index 131e300c..d6d394a7 100644 func validatePath(p string) error { diff --git a/config/v3_3/types/path_test.go b/config/v3_3/types/path_test.go -index 3d199cbd..6ed191b6 100644 +index 3d199cbd..33b2d0ba 100644 --- a/config/v3_3/types/path_test.go +++ b/config/v3_3/types/path_test.go @@ -18,7 +18,7 @@ import ( @@ -2265,7 +2265,7 @@ index 3d199cbd..6ed191b6 100644 func TestPathValidate(t *testing.T) { diff --git a/config/v3_3/types/proxy.go b/config/v3_3/types/proxy.go -index d48d210a..088459d8 100644 +index d48d210a..de146a99 100644 --- a/config/v3_3/types/proxy.go +++ b/config/v3_3/types/proxy.go @@ -17,7 +17,7 @@ package types @@ -2278,7 +2278,7 @@ index d48d210a..088459d8 100644 "github.com/coreos/vcontext/path" "github.com/coreos/vcontext/report" diff --git a/config/v3_3/types/proxy_test.go b/config/v3_3/types/proxy_test.go -index 269f4fb2..6884dd46 100644 +index 269f4fb2..3cc5e5cd 100644 --- a/config/v3_3/types/proxy_test.go +++ b/config/v3_3/types/proxy_test.go @@ -18,8 +18,8 @@ import ( @@ -2293,7 +2293,7 @@ index 269f4fb2..6884dd46 100644 "github.com/coreos/vcontext/path" "github.com/coreos/vcontext/report" diff --git a/config/v3_3/types/raid.go b/config/v3_3/types/raid.go -index 9d69aa36..6bc73349 100644 +index 9d69aa36..fa1d3f4d 100644 --- a/config/v3_3/types/raid.go +++ b/config/v3_3/types/raid.go @@ -15,8 +15,8 @@ @@ -2308,7 +2308,7 @@ index 9d69aa36..6bc73349 100644 "github.com/coreos/vcontext/path" "github.com/coreos/vcontext/report" diff --git a/config/v3_3/types/raid_test.go b/config/v3_3/types/raid_test.go -index 7323b26f..542316b2 100644 +index 7323b26f..313b4572 100644 --- a/config/v3_3/types/raid_test.go +++ b/config/v3_3/types/raid_test.go @@ -18,8 +18,8 @@ import ( @@ -2323,7 +2323,7 @@ index 7323b26f..542316b2 100644 "github.com/coreos/vcontext/path" "github.com/coreos/vcontext/report" diff --git a/config/v3_3/types/resource.go b/config/v3_3/types/resource.go -index 68da6c7b..8c03b7f5 100644 +index 68da6c7b..6ea74d3d 100644 --- a/config/v3_3/types/resource.go +++ b/config/v3_3/types/resource.go @@ -17,8 +17,8 @@ package types @@ -2338,7 +2338,7 @@ index 68da6c7b..8c03b7f5 100644 "github.com/coreos/vcontext/path" "github.com/coreos/vcontext/report" diff --git a/config/v3_3/types/storage.go b/config/v3_3/types/storage.go -index 02108613..7c01d6d1 100644 +index 02108613..89299b0f 100644 --- a/config/v3_3/types/storage.go +++ b/config/v3_3/types/storage.go @@ -18,8 +18,8 @@ import ( @@ -2353,7 +2353,7 @@ index 02108613..7c01d6d1 100644 vpath "github.com/coreos/vcontext/path" "github.com/coreos/vcontext/report" diff --git a/config/v3_3/types/storage_test.go b/config/v3_3/types/storage_test.go -index cb9256cf..61efae3c 100644 +index cb9256cf..1d894b20 100644 --- a/config/v3_3/types/storage_test.go +++ b/config/v3_3/types/storage_test.go @@ -18,8 +18,8 @@ import ( @@ -2368,7 +2368,7 @@ index cb9256cf..61efae3c 100644 "github.com/coreos/vcontext/path" "github.com/coreos/vcontext/report" diff --git a/config/v3_3/types/tang.go b/config/v3_3/types/tang.go -index 86ab79c9..d6df1d98 100644 +index 86ab79c9..a2fd8ee6 100644 --- a/config/v3_3/types/tang.go +++ b/config/v3_3/types/tang.go @@ -17,8 +17,8 @@ package types @@ -2383,7 +2383,7 @@ index 86ab79c9..d6df1d98 100644 "github.com/coreos/vcontext/path" "github.com/coreos/vcontext/report" diff --git a/config/v3_3/types/unit.go b/config/v3_3/types/unit.go -index bc2d3299..933163a7 100644 +index bc2d3299..ecc7ab08 100644 --- a/config/v3_3/types/unit.go +++ b/config/v3_3/types/unit.go @@ -19,9 +19,9 @@ import ( @@ -2400,7 +2400,7 @@ index bc2d3299..933163a7 100644 "github.com/coreos/go-systemd/v22/unit" cpath "github.com/coreos/vcontext/path" diff --git a/config/v3_3/types/unit_test.go b/config/v3_3/types/unit_test.go -index 3dc90540..494f210a 100644 +index 3dc90540..8c96dfba 100644 --- a/config/v3_3/types/unit_test.go +++ b/config/v3_3/types/unit_test.go @@ -19,8 +19,8 @@ import ( @@ -2415,7 +2415,7 @@ index 3dc90540..494f210a 100644 "github.com/coreos/vcontext/path" "github.com/coreos/vcontext/report" diff --git a/config/v3_3/types/url.go b/config/v3_3/types/url.go -index 0d8771bf..bb90bdf9 100644 +index 0d8771bf..bf1f3a5e 100644 --- a/config/v3_3/types/url.go +++ b/config/v3_3/types/url.go @@ -19,8 +19,8 @@ import ( @@ -2430,7 +2430,7 @@ index 0d8771bf..bb90bdf9 100644 func validateURL(s string) error { diff --git a/config/v3_3/types/url_test.go b/config/v3_3/types/url_test.go -index bfef261f..c371179f 100644 +index bfef261f..b10533d9 100644 --- a/config/v3_3/types/url_test.go +++ b/config/v3_3/types/url_test.go @@ -17,8 +17,8 @@ package types @@ -2445,7 +2445,7 @@ index bfef261f..c371179f 100644 func TestURLValidate(t *testing.T) { diff --git a/config/v3_3/types/verification.go b/config/v3_3/types/verification.go -index 5def6f04..0aaba72a 100644 +index 5def6f04..1ef291c0 100644 --- a/config/v3_3/types/verification.go +++ b/config/v3_3/types/verification.go @@ -19,7 +19,7 @@ import ( @@ -2458,7 +2458,7 @@ index 5def6f04..0aaba72a 100644 "github.com/coreos/vcontext/path" "github.com/coreos/vcontext/report" diff --git a/config/v3_3/types/verification_test.go b/config/v3_3/types/verification_test.go -index 9a0914d0..2ec32227 100644 +index 9a0914d0..f121b503 100644 --- a/config/v3_3/types/verification_test.go +++ b/config/v3_3/types/verification_test.go @@ -18,7 +18,7 @@ import ( @@ -2471,7 +2471,7 @@ index 9a0914d0..2ec32227 100644 "github.com/coreos/vcontext/path" "github.com/coreos/vcontext/report" diff --git a/config/v3_4_experimental/config.go b/config/v3_4_experimental/config.go -index a8836488..512fc9f0 100644 +index a8836488..097dbd83 100644 --- a/config/v3_4_experimental/config.go +++ b/config/v3_4_experimental/config.go @@ -15,13 +15,13 @@ @@ -2496,7 +2496,7 @@ index a8836488..512fc9f0 100644 "github.com/coreos/go-semver/semver" "github.com/coreos/vcontext/report" diff --git a/config/v3_4_experimental/config_test.go b/config/v3_4_experimental/config_test.go -index 97253860..7ff31ee8 100644 +index 97253860..e334ca85 100644 --- a/config/v3_4_experimental/config_test.go +++ b/config/v3_4_experimental/config_test.go @@ -17,8 +17,8 @@ package v3_4_experimental @@ -2511,7 +2511,7 @@ index 97253860..7ff31ee8 100644 ) diff --git a/config/v3_4_experimental/translate/translate.go b/config/v3_4_experimental/translate/translate.go -index 2539c8f4..1076cdba 100644 +index 2539c8f4..339513cb 100644 --- a/config/v3_4_experimental/translate/translate.go +++ b/config/v3_4_experimental/translate/translate.go @@ -15,10 +15,10 @@ @@ -2530,7 +2530,7 @@ index 2539c8f4..1076cdba 100644 func translateIgnition(old old_types.Ignition) (ret types.Ignition) { diff --git a/config/v3_4_experimental/translate/translate_test.go b/config/v3_4_experimental/translate/translate_test.go -index 8ff8c05c..f446bbaf 100644 +index 8ff8c05c..8d0e5759 100644 --- a/config/v3_4_experimental/translate/translate_test.go +++ b/config/v3_4_experimental/translate/translate_test.go @@ -18,8 +18,8 @@ import ( @@ -2545,7 +2545,7 @@ index 8ff8c05c..f446bbaf 100644 // Check that we have valid translators for the complete config struct diff --git a/config/v3_4_experimental/types/clevis.go b/config/v3_4_experimental/types/clevis.go -index 68887d43..6ac55ec6 100644 +index 68887d43..564154f6 100644 --- a/config/v3_4_experimental/types/clevis.go +++ b/config/v3_4_experimental/types/clevis.go @@ -15,8 +15,8 @@ @@ -2560,7 +2560,7 @@ index 68887d43..6ac55ec6 100644 "github.com/coreos/vcontext/path" "github.com/coreos/vcontext/report" diff --git a/config/v3_4_experimental/types/clevis_test.go b/config/v3_4_experimental/types/clevis_test.go -index f616868c..13f80b6c 100644 +index f616868c..c28509ee 100644 --- a/config/v3_4_experimental/types/clevis_test.go +++ b/config/v3_4_experimental/types/clevis_test.go @@ -18,8 +18,8 @@ import ( @@ -2575,7 +2575,7 @@ index f616868c..13f80b6c 100644 "github.com/coreos/vcontext/path" "github.com/coreos/vcontext/report" diff --git a/config/v3_4_experimental/types/disk.go b/config/v3_4_experimental/types/disk.go -index 8caf8499..24c36547 100644 +index 8caf8499..29fd3900 100644 --- a/config/v3_4_experimental/types/disk.go +++ b/config/v3_4_experimental/types/disk.go @@ -15,8 +15,8 @@ @@ -2590,7 +2590,7 @@ index 8caf8499..24c36547 100644 "github.com/coreos/vcontext/path" "github.com/coreos/vcontext/report" diff --git a/config/v3_4_experimental/types/file.go b/config/v3_4_experimental/types/file.go -index 9b71bb26..dafdf5af 100644 +index 9b71bb26..e3f7fbdf 100644 --- a/config/v3_4_experimental/types/file.go +++ b/config/v3_4_experimental/types/file.go @@ -15,8 +15,8 @@ @@ -2605,7 +2605,7 @@ index 9b71bb26..dafdf5af 100644 "github.com/coreos/vcontext/path" "github.com/coreos/vcontext/report" diff --git a/config/v3_4_experimental/types/file_test.go b/config/v3_4_experimental/types/file_test.go -index 449e0700..ec53cb38 100644 +index 449e0700..5aa2e87c 100644 --- a/config/v3_4_experimental/types/file_test.go +++ b/config/v3_4_experimental/types/file_test.go @@ -17,8 +17,8 @@ package types @@ -2620,7 +2620,7 @@ index 449e0700..ec53cb38 100644 func TestFileValidateOverwrite(t *testing.T) { diff --git a/config/v3_4_experimental/types/filesystem.go b/config/v3_4_experimental/types/filesystem.go -index c722b363..d18da9e3 100644 +index c722b363..9f7f8bbc 100644 --- a/config/v3_4_experimental/types/filesystem.go +++ b/config/v3_4_experimental/types/filesystem.go @@ -15,8 +15,8 @@ @@ -2635,7 +2635,7 @@ index c722b363..d18da9e3 100644 "github.com/coreos/vcontext/path" "github.com/coreos/vcontext/report" diff --git a/config/v3_4_experimental/types/filesystem_test.go b/config/v3_4_experimental/types/filesystem_test.go -index 1f8db903..3cab3146 100644 +index 1f8db903..6e710426 100644 --- a/config/v3_4_experimental/types/filesystem_test.go +++ b/config/v3_4_experimental/types/filesystem_test.go @@ -17,8 +17,8 @@ package types @@ -2650,7 +2650,7 @@ index 1f8db903..3cab3146 100644 func TestFilesystemValidateFormat(t *testing.T) { diff --git a/config/v3_4_experimental/types/headers.go b/config/v3_4_experimental/types/headers.go -index be1aadad..56835594 100644 +index be1aadad..e968a2b4 100644 --- a/config/v3_4_experimental/types/headers.go +++ b/config/v3_4_experimental/types/headers.go @@ -17,7 +17,7 @@ package types @@ -2663,7 +2663,7 @@ index be1aadad..56835594 100644 "github.com/coreos/vcontext/report" ) diff --git a/config/v3_4_experimental/types/headers_test.go b/config/v3_4_experimental/types/headers_test.go -index 40380b68..02682db1 100644 +index 40380b68..5e888830 100644 --- a/config/v3_4_experimental/types/headers_test.go +++ b/config/v3_4_experimental/types/headers_test.go @@ -17,7 +17,7 @@ package types @@ -2676,7 +2676,7 @@ index 40380b68..02682db1 100644 func toPointer(val string) *string { diff --git a/config/v3_4_experimental/types/ignition.go b/config/v3_4_experimental/types/ignition.go -index 190445bd..746218a6 100644 +index 190445bd..1fbcf8c4 100644 --- a/config/v3_4_experimental/types/ignition.go +++ b/config/v3_4_experimental/types/ignition.go @@ -17,7 +17,7 @@ package types @@ -2689,7 +2689,7 @@ index 190445bd..746218a6 100644 "github.com/coreos/vcontext/path" "github.com/coreos/vcontext/report" diff --git a/config/v3_4_experimental/types/kargs_test.go b/config/v3_4_experimental/types/kargs_test.go -index 1a258727..79eecda7 100644 +index 1a258727..a79c037a 100644 --- a/config/v3_4_experimental/types/kargs_test.go +++ b/config/v3_4_experimental/types/kargs_test.go @@ -17,7 +17,7 @@ package types @@ -2702,7 +2702,7 @@ index 1a258727..79eecda7 100644 func TestKernelArgumentsValidate(t *testing.T) { diff --git a/config/v3_4_experimental/types/luks.go b/config/v3_4_experimental/types/luks.go -index 90d72387..0d505e34 100644 +index 90d72387..2862ebae 100644 --- a/config/v3_4_experimental/types/luks.go +++ b/config/v3_4_experimental/types/luks.go @@ -17,8 +17,8 @@ package types @@ -2717,7 +2717,7 @@ index 90d72387..0d505e34 100644 "github.com/coreos/vcontext/path" "github.com/coreos/vcontext/report" diff --git a/config/v3_4_experimental/types/mode.go b/config/v3_4_experimental/types/mode.go -index 9eb7573d..5e57bb65 100644 +index 9eb7573d..67c7ebd3 100644 --- a/config/v3_4_experimental/types/mode.go +++ b/config/v3_4_experimental/types/mode.go @@ -15,7 +15,7 @@ @@ -2730,7 +2730,7 @@ index 9eb7573d..5e57bb65 100644 func validateMode(m *int) error { diff --git a/config/v3_4_experimental/types/mode_test.go b/config/v3_4_experimental/types/mode_test.go -index 8966e25d..be3777d4 100644 +index 8966e25d..5c973dbf 100644 --- a/config/v3_4_experimental/types/mode_test.go +++ b/config/v3_4_experimental/types/mode_test.go @@ -18,8 +18,8 @@ import ( @@ -2745,7 +2745,7 @@ index 8966e25d..be3777d4 100644 func TestModeValidate(t *testing.T) { diff --git a/config/v3_4_experimental/types/node.go b/config/v3_4_experimental/types/node.go -index 248276e7..e23730f2 100644 +index 248276e7..f4e94f9e 100644 --- a/config/v3_4_experimental/types/node.go +++ b/config/v3_4_experimental/types/node.go @@ -17,8 +17,8 @@ package types @@ -2760,7 +2760,7 @@ index 248276e7..e23730f2 100644 vpath "github.com/coreos/vcontext/path" "github.com/coreos/vcontext/report" diff --git a/config/v3_4_experimental/types/node_test.go b/config/v3_4_experimental/types/node_test.go -index 20ba4eb6..89a4aa04 100644 +index 20ba4eb6..9176b4b7 100644 --- a/config/v3_4_experimental/types/node_test.go +++ b/config/v3_4_experimental/types/node_test.go @@ -18,8 +18,8 @@ import ( @@ -2775,7 +2775,7 @@ index 20ba4eb6..89a4aa04 100644 "github.com/coreos/vcontext/path" "github.com/coreos/vcontext/report" diff --git a/config/v3_4_experimental/types/partition.go b/config/v3_4_experimental/types/partition.go -index 1b2d97ed..8363be28 100644 +index 1b2d97ed..6603af3b 100644 --- a/config/v3_4_experimental/types/partition.go +++ b/config/v3_4_experimental/types/partition.go @@ -19,8 +19,8 @@ import ( @@ -2790,7 +2790,7 @@ index 1b2d97ed..8363be28 100644 "github.com/coreos/vcontext/path" "github.com/coreos/vcontext/report" diff --git a/config/v3_4_experimental/types/partition_test.go b/config/v3_4_experimental/types/partition_test.go -index a1e1623f..fde716a9 100644 +index a1e1623f..9f8e7997 100644 --- a/config/v3_4_experimental/types/partition_test.go +++ b/config/v3_4_experimental/types/partition_test.go @@ -17,8 +17,8 @@ package types @@ -2805,7 +2805,7 @@ index a1e1623f..fde716a9 100644 func TestValidateLabel(t *testing.T) { diff --git a/config/v3_4_experimental/types/path.go b/config/v3_4_experimental/types/path.go -index 131e300c..d6d394a7 100644 +index 131e300c..cb48e341 100644 --- a/config/v3_4_experimental/types/path.go +++ b/config/v3_4_experimental/types/path.go @@ -17,8 +17,8 @@ package types @@ -2820,7 +2820,7 @@ index 131e300c..d6d394a7 100644 func validatePath(p string) error { diff --git a/config/v3_4_experimental/types/path_test.go b/config/v3_4_experimental/types/path_test.go -index 3d199cbd..6ed191b6 100644 +index 3d199cbd..33b2d0ba 100644 --- a/config/v3_4_experimental/types/path_test.go +++ b/config/v3_4_experimental/types/path_test.go @@ -18,7 +18,7 @@ import ( @@ -2833,7 +2833,7 @@ index 3d199cbd..6ed191b6 100644 func TestPathValidate(t *testing.T) { diff --git a/config/v3_4_experimental/types/proxy.go b/config/v3_4_experimental/types/proxy.go -index d48d210a..088459d8 100644 +index d48d210a..de146a99 100644 --- a/config/v3_4_experimental/types/proxy.go +++ b/config/v3_4_experimental/types/proxy.go @@ -17,7 +17,7 @@ package types @@ -2846,7 +2846,7 @@ index d48d210a..088459d8 100644 "github.com/coreos/vcontext/path" "github.com/coreos/vcontext/report" diff --git a/config/v3_4_experimental/types/proxy_test.go b/config/v3_4_experimental/types/proxy_test.go -index 269f4fb2..6884dd46 100644 +index 269f4fb2..3cc5e5cd 100644 --- a/config/v3_4_experimental/types/proxy_test.go +++ b/config/v3_4_experimental/types/proxy_test.go @@ -18,8 +18,8 @@ import ( @@ -2861,7 +2861,7 @@ index 269f4fb2..6884dd46 100644 "github.com/coreos/vcontext/path" "github.com/coreos/vcontext/report" diff --git a/config/v3_4_experimental/types/raid.go b/config/v3_4_experimental/types/raid.go -index 9d69aa36..6bc73349 100644 +index 9d69aa36..fa1d3f4d 100644 --- a/config/v3_4_experimental/types/raid.go +++ b/config/v3_4_experimental/types/raid.go @@ -15,8 +15,8 @@ @@ -2876,7 +2876,7 @@ index 9d69aa36..6bc73349 100644 "github.com/coreos/vcontext/path" "github.com/coreos/vcontext/report" diff --git a/config/v3_4_experimental/types/raid_test.go b/config/v3_4_experimental/types/raid_test.go -index 7323b26f..542316b2 100644 +index 7323b26f..313b4572 100644 --- a/config/v3_4_experimental/types/raid_test.go +++ b/config/v3_4_experimental/types/raid_test.go @@ -18,8 +18,8 @@ import ( @@ -2891,7 +2891,7 @@ index 7323b26f..542316b2 100644 "github.com/coreos/vcontext/path" "github.com/coreos/vcontext/report" diff --git a/config/v3_4_experimental/types/resource.go b/config/v3_4_experimental/types/resource.go -index 68da6c7b..8c03b7f5 100644 +index 68da6c7b..6ea74d3d 100644 --- a/config/v3_4_experimental/types/resource.go +++ b/config/v3_4_experimental/types/resource.go @@ -17,8 +17,8 @@ package types @@ -2906,7 +2906,7 @@ index 68da6c7b..8c03b7f5 100644 "github.com/coreos/vcontext/path" "github.com/coreos/vcontext/report" diff --git a/config/v3_4_experimental/types/storage.go b/config/v3_4_experimental/types/storage.go -index 02108613..7c01d6d1 100644 +index 02108613..89299b0f 100644 --- a/config/v3_4_experimental/types/storage.go +++ b/config/v3_4_experimental/types/storage.go @@ -18,8 +18,8 @@ import ( @@ -2921,7 +2921,7 @@ index 02108613..7c01d6d1 100644 vpath "github.com/coreos/vcontext/path" "github.com/coreos/vcontext/report" diff --git a/config/v3_4_experimental/types/storage_test.go b/config/v3_4_experimental/types/storage_test.go -index cb9256cf..61efae3c 100644 +index cb9256cf..1d894b20 100644 --- a/config/v3_4_experimental/types/storage_test.go +++ b/config/v3_4_experimental/types/storage_test.go @@ -18,8 +18,8 @@ import ( @@ -2936,7 +2936,7 @@ index cb9256cf..61efae3c 100644 "github.com/coreos/vcontext/path" "github.com/coreos/vcontext/report" diff --git a/config/v3_4_experimental/types/tang.go b/config/v3_4_experimental/types/tang.go -index 86ab79c9..d6df1d98 100644 +index 86ab79c9..a2fd8ee6 100644 --- a/config/v3_4_experimental/types/tang.go +++ b/config/v3_4_experimental/types/tang.go @@ -17,8 +17,8 @@ package types @@ -2951,7 +2951,7 @@ index 86ab79c9..d6df1d98 100644 "github.com/coreos/vcontext/path" "github.com/coreos/vcontext/report" diff --git a/config/v3_4_experimental/types/unit.go b/config/v3_4_experimental/types/unit.go -index bc2d3299..933163a7 100644 +index bc2d3299..ecc7ab08 100644 --- a/config/v3_4_experimental/types/unit.go +++ b/config/v3_4_experimental/types/unit.go @@ -19,9 +19,9 @@ import ( @@ -2968,7 +2968,7 @@ index bc2d3299..933163a7 100644 "github.com/coreos/go-systemd/v22/unit" cpath "github.com/coreos/vcontext/path" diff --git a/config/v3_4_experimental/types/unit_test.go b/config/v3_4_experimental/types/unit_test.go -index 3dc90540..494f210a 100644 +index 3dc90540..8c96dfba 100644 --- a/config/v3_4_experimental/types/unit_test.go +++ b/config/v3_4_experimental/types/unit_test.go @@ -19,8 +19,8 @@ import ( @@ -2983,7 +2983,7 @@ index 3dc90540..494f210a 100644 "github.com/coreos/vcontext/path" "github.com/coreos/vcontext/report" diff --git a/config/v3_4_experimental/types/url.go b/config/v3_4_experimental/types/url.go -index 3ca189da..f094cde8 100644 +index 3ca189da..9b2b4405 100644 --- a/config/v3_4_experimental/types/url.go +++ b/config/v3_4_experimental/types/url.go @@ -21,8 +21,8 @@ import ( @@ -2998,7 +2998,7 @@ index 3ca189da..f094cde8 100644 func validateURL(s string) error { diff --git a/config/v3_4_experimental/types/url_test.go b/config/v3_4_experimental/types/url_test.go -index 1901b7af..a0f2268f 100644 +index 1901b7af..12a4cfbf 100644 --- a/config/v3_4_experimental/types/url_test.go +++ b/config/v3_4_experimental/types/url_test.go @@ -17,8 +17,8 @@ package types @@ -3013,7 +3013,7 @@ index 1901b7af..a0f2268f 100644 func TestURLValidate(t *testing.T) { diff --git a/config/v3_4_experimental/types/verification.go b/config/v3_4_experimental/types/verification.go -index 5def6f04..0aaba72a 100644 +index 5def6f04..1ef291c0 100644 --- a/config/v3_4_experimental/types/verification.go +++ b/config/v3_4_experimental/types/verification.go @@ -19,7 +19,7 @@ import ( @@ -3026,7 +3026,7 @@ index 5def6f04..0aaba72a 100644 "github.com/coreos/vcontext/path" "github.com/coreos/vcontext/report" diff --git a/config/v3_4_experimental/types/verification_test.go b/config/v3_4_experimental/types/verification_test.go -index 9a0914d0..2ec32227 100644 +index 9a0914d0..f121b503 100644 --- a/config/v3_4_experimental/types/verification_test.go +++ b/config/v3_4_experimental/types/verification_test.go @@ -18,7 +18,7 @@ import ( @@ -3039,7 +3039,7 @@ index 9a0914d0..2ec32227 100644 "github.com/coreos/vcontext/path" "github.com/coreos/vcontext/report" diff --git a/config/validate/validate.go b/config/validate/validate.go -index 613c21e4..fb02ace8 100644 +index 613c21e4..a8f41517 100644 --- a/config/validate/validate.go +++ b/config/validate/validate.go @@ -18,8 +18,8 @@ import ( @@ -3054,7 +3054,7 @@ index 613c21e4..fb02ace8 100644 "github.com/coreos/vcontext/json" "github.com/coreos/vcontext/path" diff --git a/config/validate/validate_test.go b/config/validate/validate_test.go -index 18eea933..2c85ef10 100644 +index 18eea933..4f77f19c 100644 --- a/config/validate/validate_test.go +++ b/config/validate/validate_test.go @@ -20,7 +20,7 @@ import ( @@ -3067,7 +3067,7 @@ index 18eea933..2c85ef10 100644 "github.com/coreos/vcontext/path" "github.com/coreos/vcontext/report" diff --git a/go.mod b/go.mod -index 06d80e65..e5a47737 100644 +index 06d80e65..7c813620 100644 --- a/go.mod +++ b/go.mod @@ -1,4 +1,4 @@ @@ -3077,7 +3077,7 @@ index 06d80e65..e5a47737 100644 go 1.15 diff --git a/internal/apply/apply.go b/internal/apply/apply.go -index d4ac38ff..049a65d5 100644 +index d4ac38ff..d8c9f84a 100644 --- a/internal/apply/apply.go +++ b/internal/apply/apply.go @@ -20,21 +20,21 @@ import ( @@ -3118,7 +3118,7 @@ index d4ac38ff..049a65d5 100644 type Flags struct { diff --git a/internal/distro/distro.go b/internal/distro/distro.go -index 61ca87ae..0fe37f4a 100644 +index 61ca87ae..703385ea 100644 --- a/internal/distro/distro.go +++ b/internal/distro/distro.go @@ -20,7 +20,7 @@ import ( @@ -3131,7 +3131,7 @@ index 61ca87ae..0fe37f4a 100644 // Device node directories and paths diskByLabelDir = "/dev/disk/by-label" diff --git a/internal/exec/config_fetcher.go b/internal/exec/config_fetcher.go -index 6d1b8cab..54a6aa57 100644 +index 6d1b8cab..19ec0767 100644 --- a/internal/exec/config_fetcher.go +++ b/internal/exec/config_fetcher.go @@ -20,15 +20,15 @@ import ( @@ -3160,7 +3160,7 @@ index 6d1b8cab..54a6aa57 100644 type ConfigFetcher struct { diff --git a/internal/exec/engine.go b/internal/exec/engine.go -index efe5dba2..2a9bbba3 100644 +index efe5dba2..602840c9 100644 --- a/internal/exec/engine.go +++ b/internal/exec/engine.go @@ -24,18 +24,18 @@ import ( @@ -3195,7 +3195,7 @@ index efe5dba2..2a9bbba3 100644 "github.com/coreos/vcontext/report" "github.com/coreos/vcontext/validate" diff --git a/internal/exec/stages/disks/disks.go b/internal/exec/stages/disks/disks.go -index 745fa19c..285e7e4a 100644 +index 745fa19c..4bb3e459 100644 --- a/internal/exec/stages/disks/disks.go +++ b/internal/exec/stages/disks/disks.go @@ -23,14 +23,14 @@ import ( @@ -3222,7 +3222,7 @@ index 745fa19c..285e7e4a 100644 const ( diff --git a/internal/exec/stages/disks/filesystems.go b/internal/exec/stages/disks/filesystems.go -index 0c5eeff1..ef9028bf 100644 +index 0c5eeff1..b7f3795a 100644 --- a/internal/exec/stages/disks/filesystems.go +++ b/internal/exec/stages/disks/filesystems.go @@ -25,10 +25,10 @@ import ( @@ -3241,7 +3241,7 @@ index 0c5eeff1..ef9028bf 100644 var ( diff --git a/internal/exec/stages/disks/luks.go b/internal/exec/stages/disks/luks.go -index 5fa15e70..dbcd767d 100644 +index 5fa15e70..124711a6 100644 --- a/internal/exec/stages/disks/luks.go +++ b/internal/exec/stages/disks/luks.go @@ -27,11 +27,11 @@ import ( @@ -3262,7 +3262,7 @@ index 5fa15e70..dbcd767d 100644 "github.com/vincent-petithory/dataurl" ) diff --git a/internal/exec/stages/disks/partitions.go b/internal/exec/stages/disks/partitions.go -index 54730b41..99189da0 100644 +index 54730b41..fee39c0a 100644 --- a/internal/exec/stages/disks/partitions.go +++ b/internal/exec/stages/disks/partitions.go @@ -26,10 +26,10 @@ import ( @@ -3281,7 +3281,7 @@ index 54730b41..99189da0 100644 var ( diff --git a/internal/exec/stages/disks/raid.go b/internal/exec/stages/disks/raid.go -index f838f349..dff93413 100644 +index f838f349..2781131b 100644 --- a/internal/exec/stages/disks/raid.go +++ b/internal/exec/stages/disks/raid.go @@ -23,9 +23,9 @@ import ( @@ -3298,7 +3298,7 @@ index f838f349..dff93413 100644 func (s stage) createRaids(config types.Config) error { diff --git a/internal/exec/stages/fetch/fetch.go b/internal/exec/stages/fetch/fetch.go -index f163509e..7b36e267 100644 +index f163509e..df2d5875 100644 --- a/internal/exec/stages/fetch/fetch.go +++ b/internal/exec/stages/fetch/fetch.go @@ -19,12 +19,12 @@ @@ -3321,7 +3321,7 @@ index f163509e..7b36e267 100644 const ( diff --git a/internal/exec/stages/fetch_offline/fetch-offline.go b/internal/exec/stages/fetch_offline/fetch-offline.go -index dcea43a8..5213099a 100644 +index dcea43a8..80ba7cac 100644 --- a/internal/exec/stages/fetch_offline/fetch-offline.go +++ b/internal/exec/stages/fetch_offline/fetch-offline.go @@ -22,14 +22,14 @@ import ( @@ -3348,7 +3348,7 @@ index dcea43a8..5213099a 100644 const ( diff --git a/internal/exec/stages/fetch_offline/fetch_offline_test.go b/internal/exec/stages/fetch_offline/fetch_offline_test.go -index 11f133ff..259f0d69 100644 +index 11f133ff..ffbf375f 100644 --- a/internal/exec/stages/fetch_offline/fetch_offline_test.go +++ b/internal/exec/stages/fetch_offline/fetch_offline_test.go @@ -17,8 +17,8 @@ package fetch_offline @@ -3363,7 +3363,7 @@ index 11f133ff..259f0d69 100644 "github.com/stretchr/testify/assert" ) diff --git a/internal/exec/stages/files/files.go b/internal/exec/stages/files/files.go -index 7d97df5f..de976b5d 100644 +index 7d97df5f..a789c04c 100644 --- a/internal/exec/stages/files/files.go +++ b/internal/exec/stages/files/files.go @@ -19,13 +19,13 @@ import ( @@ -3388,7 +3388,7 @@ index 7d97df5f..de976b5d 100644 const ( diff --git a/internal/exec/stages/files/files_test.go b/internal/exec/stages/files/files_test.go -index 9428b883..f0cf4ef0 100644 +index 9428b883..5c1f7990 100644 --- a/internal/exec/stages/files/files_test.go +++ b/internal/exec/stages/files/files_test.go @@ -19,8 +19,8 @@ import ( @@ -3403,7 +3403,7 @@ index 9428b883..f0cf4ef0 100644 func TestEntrySort(t *testing.T) { diff --git a/internal/exec/stages/files/filesystemEntries.go b/internal/exec/stages/files/filesystemEntries.go -index c61824ba..d7af2c85 100644 +index c61824ba..3883cba2 100644 --- a/internal/exec/stages/files/filesystemEntries.go +++ b/internal/exec/stages/files/filesystemEntries.go @@ -25,11 +25,11 @@ import ( @@ -3433,7 +3433,7 @@ index c61824ba..d7af2c85 100644 return entries, nil diff --git a/internal/exec/stages/files/passwd.go b/internal/exec/stages/files/passwd.go -index 2c5e2d9d..638975a8 100644 +index 2c5e2d9d..07d7ff2a 100644 --- a/internal/exec/stages/files/passwd.go +++ b/internal/exec/stages/files/passwd.go @@ -18,8 +18,8 @@ import ( @@ -3448,7 +3448,7 @@ index 2c5e2d9d..638975a8 100644 func (s *stage) expandGlobList(globs ...string) ([]string, error) { diff --git a/internal/exec/stages/files/units.go b/internal/exec/stages/files/units.go -index f7ded9e8..fdc7be59 100644 +index f7ded9e8..5c254e12 100644 --- a/internal/exec/stages/files/units.go +++ b/internal/exec/stages/files/units.go @@ -19,11 +19,11 @@ import ( @@ -3478,7 +3478,7 @@ index f7ded9e8..fdc7be59 100644 return nil } diff --git a/internal/exec/stages/files/units_test.go b/internal/exec/stages/files/units_test.go -index b7020f7e..a9ead954 100644 +index b7020f7e..dbf93f47 100644 --- a/internal/exec/stages/files/units_test.go +++ b/internal/exec/stages/files/units_test.go @@ -18,8 +18,8 @@ import ( @@ -3493,7 +3493,7 @@ index b7020f7e..a9ead954 100644 func TestParseInstanceUnit(t *testing.T) { diff --git a/internal/exec/stages/kargs/kargs.go b/internal/exec/stages/kargs/kargs.go -index 7267709f..2b7b19e4 100644 +index 7267709f..621dbe63 100644 --- a/internal/exec/stages/kargs/kargs.go +++ b/internal/exec/stages/kargs/kargs.go @@ -19,13 +19,13 @@ import ( @@ -3518,7 +3518,7 @@ index 7267709f..2b7b19e4 100644 const ( diff --git a/internal/exec/stages/mount/mount.go b/internal/exec/stages/mount/mount.go -index 1c25dfed..8ec9ca99 100644 +index 1c25dfed..8cf997fa 100644 --- a/internal/exec/stages/mount/mount.go +++ b/internal/exec/stages/mount/mount.go @@ -27,14 +27,14 @@ import ( @@ -3545,7 +3545,7 @@ index 1c25dfed..8ec9ca99 100644 const ( diff --git a/internal/exec/stages/stages.go b/internal/exec/stages/stages.go -index dc4d7d3e..b7be351e 100644 +index dc4d7d3e..665bc24c 100644 --- a/internal/exec/stages/stages.go +++ b/internal/exec/stages/stages.go @@ -15,11 +15,11 @@ @@ -3566,7 +3566,7 @@ index dc4d7d3e..b7be351e 100644 // Stage is responsible for actually executing a stage of the configuration. diff --git a/internal/exec/stages/umount/umount.go b/internal/exec/stages/umount/umount.go -index d7b7fbba..1abcb57c 100644 +index d7b7fbba..0d671f92 100644 --- a/internal/exec/stages/umount/umount.go +++ b/internal/exec/stages/umount/umount.go @@ -22,13 +22,13 @@ import ( @@ -3591,7 +3591,7 @@ index d7b7fbba..1abcb57c 100644 "golang.org/x/sys/unix" ) diff --git a/internal/exec/util/blkid.go b/internal/exec/util/blkid.go -index 92db9026..a9fc6b64 100644 +index 92db9026..724009f2 100644 --- a/internal/exec/util/blkid.go +++ b/internal/exec/util/blkid.go @@ -33,7 +33,7 @@ import ( @@ -3604,7 +3604,7 @@ index 92db9026..a9fc6b64 100644 const ( diff --git a/internal/exec/util/file.go b/internal/exec/util/file.go -index d5a680d4..de46f9d6 100644 +index d5a680d4..e02e8921 100644 --- a/internal/exec/util/file.go +++ b/internal/exec/util/file.go @@ -27,11 +27,11 @@ import ( @@ -3625,7 +3625,7 @@ index d5a680d4..de46f9d6 100644 "golang.org/x/sys/unix" ) diff --git a/internal/exec/util/passwd.go b/internal/exec/util/passwd.go -index e6050d04..713dacb9 100644 +index e6050d04..242f48f3 100644 --- a/internal/exec/util/passwd.go +++ b/internal/exec/util/passwd.go @@ -24,10 +24,10 @@ import ( @@ -3644,7 +3644,7 @@ index e6050d04..713dacb9 100644 ) diff --git a/internal/exec/util/selinux.go b/internal/exec/util/selinux.go -index a274eae6..25eb17f1 100644 +index a274eae6..0bd57f98 100644 --- a/internal/exec/util/selinux.go +++ b/internal/exec/util/selinux.go @@ -21,7 +21,7 @@ import ( @@ -3657,7 +3657,7 @@ index a274eae6..25eb17f1 100644 const ( diff --git a/internal/exec/util/unit.go b/internal/exec/util/unit.go -index d42c51ad..20afc279 100644 +index d42c51ad..96548b04 100644 --- a/internal/exec/util/unit.go +++ b/internal/exec/util/unit.go @@ -22,8 +22,8 @@ import ( @@ -3672,7 +3672,7 @@ index d42c51ad..20afc279 100644 "github.com/vincent-petithory/dataurl" ) diff --git a/internal/exec/util/user_group_lookup_test.go b/internal/exec/util/user_group_lookup_test.go -index c30e1550..fd0901df 100644 +index c30e1550..dcdc2273 100644 --- a/internal/exec/util/user_group_lookup_test.go +++ b/internal/exec/util/user_group_lookup_test.go @@ -21,7 +21,7 @@ import ( @@ -3685,7 +3685,7 @@ index c30e1550..fd0901df 100644 // tempBase() slaps together a minimal /etc/{passwd,group} for the lookup test. diff --git a/internal/exec/util/util.go b/internal/exec/util/util.go -index 4a81f776..ebe7e00c 100644 +index 4a81f776..bd73adf4 100644 --- a/internal/exec/util/util.go +++ b/internal/exec/util/util.go @@ -18,9 +18,9 @@ import ( @@ -3702,7 +3702,7 @@ index 4a81f776..ebe7e00c 100644 // Util encapsulates logging and destdir indirection for the util methods. diff --git a/internal/main.go b/internal/main.go -index 809a92b5..b87c6293 100644 +index 809a92b5..27403e6b 100644 --- a/internal/main.go +++ b/internal/main.go @@ -22,21 +22,21 @@ import ( @@ -3743,7 +3743,7 @@ index 809a92b5..b87c6293 100644 ) diff --git a/internal/platform/platform.go b/internal/platform/platform.go -index 23339439..f7c59b7f 100644 +index 23339439..51bf5174 100644 --- a/internal/platform/platform.go +++ b/internal/platform/platform.go @@ -18,31 +18,31 @@ import ( @@ -3804,7 +3804,7 @@ index 23339439..f7c59b7f 100644 var ( diff --git a/internal/providers/aliyun/aliyun.go b/internal/providers/aliyun/aliyun.go -index 2da29f86..145a6cee 100644 +index 2da29f86..ec19ddf8 100644 --- a/internal/providers/aliyun/aliyun.go +++ b/internal/providers/aliyun/aliyun.go @@ -20,9 +20,9 @@ package aliyun @@ -3821,7 +3821,7 @@ index 2da29f86..145a6cee 100644 "github.com/coreos/vcontext/report" ) diff --git a/internal/providers/aws/aws.go b/internal/providers/aws/aws.go -index b2385ac8..28157e60 100644 +index b2385ac8..14c77a8f 100644 --- a/internal/providers/aws/aws.go +++ b/internal/providers/aws/aws.go @@ -22,10 +22,10 @@ import ( @@ -3849,7 +3849,7 @@ index b2385ac8..28157e60 100644 // TODO: investigate alternative solutions (adding a Retryer to the // aws.Config, fetching the region from an HTTP URL, handle the diff --git a/internal/providers/azure/azure.go b/internal/providers/azure/azure.go -index 7948e7fe..2f3374c0 100644 +index 7948e7fe..6d95a738 100644 --- a/internal/providers/azure/azure.go +++ b/internal/providers/azure/azure.go @@ -26,12 +26,12 @@ import ( @@ -3872,7 +3872,7 @@ index 7948e7fe..2f3374c0 100644 "github.com/coreos/vcontext/report" "golang.org/x/sys/unix" diff --git a/internal/providers/azurestack/azurestack.go b/internal/providers/azurestack/azurestack.go -index 10da8d23..4d815569 100644 +index 10da8d23..79c1d308 100644 --- a/internal/providers/azurestack/azurestack.go +++ b/internal/providers/azurestack/azurestack.go @@ -18,9 +18,9 @@ @@ -3889,7 +3889,7 @@ index 10da8d23..4d815569 100644 ) diff --git a/internal/providers/cloudstack/cloudstack.go b/internal/providers/cloudstack/cloudstack.go -index 4e94faef..1a0aa048 100644 +index 4e94faef..258496d0 100644 --- a/internal/providers/cloudstack/cloudstack.go +++ b/internal/providers/cloudstack/cloudstack.go @@ -31,12 +31,12 @@ import ( @@ -3921,7 +3921,7 @@ index 4e94faef..1a0aa048 100644 return types.Config{}, report.Report{}, resource.ErrNeedNet } diff --git a/internal/providers/cmdline/cmdline.go b/internal/providers/cmdline/cmdline.go -index 37d246c7..0068ed66 100644 +index 37d246c7..c8006f02 100644 --- a/internal/providers/cmdline/cmdline.go +++ b/internal/providers/cmdline/cmdline.go @@ -22,12 +22,12 @@ import ( @@ -3944,7 +3944,7 @@ index 37d246c7..0068ed66 100644 "github.com/coreos/vcontext/report" ) diff --git a/internal/providers/digitalocean/digitalocean.go b/internal/providers/digitalocean/digitalocean.go -index 928bd272..c6724db8 100644 +index 928bd272..90ed043c 100644 --- a/internal/providers/digitalocean/digitalocean.go +++ b/internal/providers/digitalocean/digitalocean.go @@ -20,9 +20,9 @@ package digitalocean @@ -3961,7 +3961,7 @@ index 928bd272..c6724db8 100644 "github.com/coreos/vcontext/report" ) diff --git a/internal/providers/exoscale/exoscale.go b/internal/providers/exoscale/exoscale.go -index 265e904d..08378c14 100644 +index 265e904d..4045efa9 100644 --- a/internal/providers/exoscale/exoscale.go +++ b/internal/providers/exoscale/exoscale.go @@ -20,9 +20,9 @@ package exoscale @@ -3978,7 +3978,7 @@ index 265e904d..08378c14 100644 "github.com/coreos/vcontext/report" ) diff --git a/internal/providers/file/file.go b/internal/providers/file/file.go -index 794df19a..6def37e7 100644 +index 794df19a..587cf485 100644 --- a/internal/providers/file/file.go +++ b/internal/providers/file/file.go @@ -18,9 +18,9 @@ import ( @@ -3995,7 +3995,7 @@ index 794df19a..6def37e7 100644 "github.com/coreos/vcontext/report" ) diff --git a/internal/providers/gcp/gcp.go b/internal/providers/gcp/gcp.go -index 5fbdd648..b3ac9da2 100644 +index 5fbdd648..f07a4900 100644 --- a/internal/providers/gcp/gcp.go +++ b/internal/providers/gcp/gcp.go @@ -21,9 +21,9 @@ import ( @@ -4012,7 +4012,7 @@ index 5fbdd648..b3ac9da2 100644 "github.com/coreos/vcontext/report" ) diff --git a/internal/providers/ibmcloud/ibmcloud.go b/internal/providers/ibmcloud/ibmcloud.go -index 83bb8952..787ef659 100644 +index 83bb8952..3214e56c 100644 --- a/internal/providers/ibmcloud/ibmcloud.go +++ b/internal/providers/ibmcloud/ibmcloud.go @@ -28,12 +28,12 @@ import ( @@ -4035,7 +4035,7 @@ index 83bb8952..787ef659 100644 "github.com/coreos/vcontext/report" ) diff --git a/internal/providers/kubevirt/kubevirt.go b/internal/providers/kubevirt/kubevirt.go -index ca7ef67b..a3132bfe 100644 +index ca7ef67b..86163588 100644 --- a/internal/providers/kubevirt/kubevirt.go +++ b/internal/providers/kubevirt/kubevirt.go @@ -26,12 +26,12 @@ import ( @@ -4058,7 +4058,7 @@ index ca7ef67b..a3132bfe 100644 "github.com/coreos/vcontext/report" ) diff --git a/internal/providers/noop/noop.go b/internal/providers/noop/noop.go -index cfc20174..2b9e583d 100644 +index cfc20174..bf965499 100644 --- a/internal/providers/noop/noop.go +++ b/internal/providers/noop/noop.go @@ -17,9 +17,9 @@ @@ -4075,7 +4075,7 @@ index cfc20174..2b9e583d 100644 "github.com/coreos/vcontext/report" ) diff --git a/internal/providers/nutanix/nutanix.go b/internal/providers/nutanix/nutanix.go -index c46beab4..7864d33a 100644 +index c46beab4..108b9c81 100644 --- a/internal/providers/nutanix/nutanix.go +++ b/internal/providers/nutanix/nutanix.go @@ -26,12 +26,12 @@ import ( @@ -4098,7 +4098,7 @@ index c46beab4..7864d33a 100644 "github.com/coreos/vcontext/report" ) diff --git a/internal/providers/openstack/openstack.go b/internal/providers/openstack/openstack.go -index 832cbf08..b8439cd4 100644 +index 832cbf08..67a10e4b 100644 --- a/internal/providers/openstack/openstack.go +++ b/internal/providers/openstack/openstack.go @@ -29,12 +29,12 @@ import ( @@ -4130,7 +4130,7 @@ index 832cbf08..b8439cd4 100644 return types.Config{}, report.Report{}, resource.ErrNeedNet } diff --git a/internal/providers/packet/packet.go b/internal/providers/packet/packet.go -index 29b6c161..ce91a131 100644 +index 29b6c161..738b2be6 100644 --- a/internal/providers/packet/packet.go +++ b/internal/providers/packet/packet.go @@ -25,9 +25,9 @@ import ( @@ -4147,7 +4147,7 @@ index 29b6c161..ce91a131 100644 "github.com/coreos/vcontext/report" ) diff --git a/internal/providers/powervs/powervs.go b/internal/providers/powervs/powervs.go -index fe41ec95..578b6d38 100644 +index fe41ec95..1c66f04a 100644 --- a/internal/providers/powervs/powervs.go +++ b/internal/providers/powervs/powervs.go @@ -25,12 +25,12 @@ import ( @@ -4170,7 +4170,7 @@ index fe41ec95..578b6d38 100644 "github.com/coreos/vcontext/report" ) diff --git a/internal/providers/providers.go b/internal/providers/providers.go -index daa80bfb..0bcbd712 100644 +index daa80bfb..8f1a1a01 100644 --- a/internal/providers/providers.go +++ b/internal/providers/providers.go @@ -17,9 +17,9 @@ package providers @@ -4187,7 +4187,7 @@ index daa80bfb..0bcbd712 100644 "github.com/coreos/vcontext/report" ) diff --git a/internal/providers/qemu/qemu_blockdev.go b/internal/providers/qemu/qemu_blockdev.go -index ba05ff6d..ffd2eec0 100644 +index ba05ff6d..46517baf 100644 --- a/internal/providers/qemu/qemu_blockdev.go +++ b/internal/providers/qemu/qemu_blockdev.go @@ -28,10 +28,10 @@ import ( @@ -4206,7 +4206,7 @@ index ba05ff6d..ffd2eec0 100644 "github.com/coreos/vcontext/report" ) diff --git a/internal/providers/qemu/qemu_fwcfg.go b/internal/providers/qemu/qemu_fwcfg.go -index 65c76875..a4ebec6a 100644 +index 65c76875..46ab7ae0 100644 --- a/internal/providers/qemu/qemu_fwcfg.go +++ b/internal/providers/qemu/qemu_fwcfg.go @@ -30,9 +30,9 @@ import ( @@ -4223,7 +4223,7 @@ index 65c76875..a4ebec6a 100644 "github.com/coreos/vcontext/report" ) diff --git a/internal/providers/system/system.go b/internal/providers/system/system.go -index 36cc2b9f..4ec5cf98 100644 +index 36cc2b9f..d637d4c8 100644 --- a/internal/providers/system/system.go +++ b/internal/providers/system/system.go @@ -19,13 +19,13 @@ import ( @@ -4248,7 +4248,7 @@ index 36cc2b9f..4ec5cf98 100644 "github.com/coreos/vcontext/report" ) diff --git a/internal/providers/util/config.go b/internal/providers/util/config.go -index 59e4f9b8..c767f5e5 100644 +index 59e4f9b8..bcecb4ed 100644 --- a/internal/providers/util/config.go +++ b/internal/providers/util/config.go @@ -18,9 +18,9 @@ import ( @@ -4265,7 +4265,7 @@ index 59e4f9b8..c767f5e5 100644 "github.com/coreos/vcontext/report" ) diff --git a/internal/providers/virtualbox/virtualbox.go b/internal/providers/virtualbox/virtualbox.go -index e37304c0..dde19316 100644 +index e37304c0..3724e631 100644 --- a/internal/providers/virtualbox/virtualbox.go +++ b/internal/providers/virtualbox/virtualbox.go @@ -31,10 +31,10 @@ import ( @@ -4284,7 +4284,7 @@ index e37304c0..dde19316 100644 "github.com/coreos/vcontext/report" ) diff --git a/internal/providers/vmware/vmware_amd64.go b/internal/providers/vmware/vmware_amd64.go -index 186ec97d..66ff5490 100644 +index 186ec97d..0c2f0d97 100644 --- a/internal/providers/vmware/vmware_amd64.go +++ b/internal/providers/vmware/vmware_amd64.go @@ -20,10 +20,10 @@ package vmware @@ -4303,7 +4303,7 @@ index 186ec97d..66ff5490 100644 "github.com/coreos/vcontext/report" "github.com/vmware/vmw-guestinfo/rpcvmx" diff --git a/internal/providers/vmware/vmware_unsupported.go b/internal/providers/vmware/vmware_unsupported.go -index e9e26cca..bf0e346f 100644 +index e9e26cca..444d2500 100644 --- a/internal/providers/vmware/vmware_unsupported.go +++ b/internal/providers/vmware/vmware_unsupported.go @@ -23,8 +23,8 @@ package vmware @@ -4318,7 +4318,7 @@ index e9e26cca..bf0e346f 100644 "github.com/coreos/vcontext/report" ) diff --git a/internal/providers/vultr/vultr.go b/internal/providers/vultr/vultr.go -index e691d20b..9bb01c30 100644 +index e691d20b..32dfd570 100644 --- a/internal/providers/vultr/vultr.go +++ b/internal/providers/vultr/vultr.go @@ -21,9 +21,9 @@ package vultr @@ -4335,7 +4335,7 @@ index e691d20b..9bb01c30 100644 "github.com/coreos/vcontext/report" ) diff --git a/internal/providers/zvm/zvm.go b/internal/providers/zvm/zvm.go -index d8a743c6..25affe3e 100644 +index d8a743c6..6e4660fc 100644 --- a/internal/providers/zvm/zvm.go +++ b/internal/providers/zvm/zvm.go @@ -24,12 +24,12 @@ import ( @@ -4358,7 +4358,7 @@ index d8a743c6..25affe3e 100644 ) diff --git a/internal/resource/http.go b/internal/resource/http.go -index 471349a1..9f1d3667 100644 +index 471349a1..198986e5 100644 --- a/internal/resource/http.go +++ b/internal/resource/http.go @@ -28,12 +28,12 @@ import ( @@ -4381,7 +4381,7 @@ index 471349a1..9f1d3667 100644 "github.com/vincent-petithory/dataurl" diff --git a/internal/resource/url.go b/internal/resource/url.go -index 2696b697..25993094 100644 +index 2696b697..ca9c8668 100644 --- a/internal/resource/url.go +++ b/internal/resource/url.go @@ -32,9 +32,9 @@ import ( @@ -4398,7 +4398,7 @@ index 2696b697..25993094 100644 "google.golang.org/api/option" diff --git a/internal/resource/url_test.go b/internal/resource/url_test.go -index 77a39c93..e4241c4f 100644 +index 77a39c93..415822fc 100644 --- a/internal/resource/url_test.go +++ b/internal/resource/url_test.go @@ -23,9 +23,9 @@ import ( @@ -4415,7 +4415,7 @@ index 77a39c93..e4241c4f 100644 func TestDataUrl(t *testing.T) { diff --git a/internal/sgdisk/sgdisk.go b/internal/sgdisk/sgdisk.go -index 3445e2a9..27dfe3ea 100644 +index 3445e2a9..9a933fb3 100644 --- a/internal/sgdisk/sgdisk.go +++ b/internal/sgdisk/sgdisk.go @@ -19,10 +19,10 @@ import ( @@ -4434,7 +4434,7 @@ index 3445e2a9..27dfe3ea 100644 type Operation struct { diff --git a/internal/util/tools/docs/docs.go b/internal/util/tools/docs/docs.go -index a5dd8abf..555244d0 100644 +index a5dd8abf..a0bc1fa7 100644 --- a/internal/util/tools/docs/docs.go +++ b/internal/util/tools/docs/docs.go @@ -25,7 +25,7 @@ import ( @@ -4447,7 +4447,7 @@ index a5dd8abf..555244d0 100644 // Specific section marker used in the docs to indicate that the Markdown code diff --git a/internal/util/verification.go b/internal/util/verification.go -index 26e3f9cc..b2d3414f 100644 +index 26e3f9cc..35945cad 100644 --- a/internal/util/verification.go +++ b/internal/util/verification.go @@ -23,7 +23,7 @@ import ( @@ -4460,7 +4460,7 @@ index 26e3f9cc..b2d3414f 100644 var ( diff --git a/internal/util/verification_test.go b/internal/util/verification_test.go -index fd9132c0..b92ad5ae 100644 +index fd9132c0..d321e746 100644 --- a/internal/util/verification_test.go +++ b/internal/util/verification_test.go @@ -18,7 +18,7 @@ import ( @@ -4473,7 +4473,7 @@ index fd9132c0..b92ad5ae 100644 func TestAssertValid(t *testing.T) { diff --git a/tests/blackbox_test.go b/tests/blackbox_test.go -index b7c240fe..5b586619 100644 +index b7c240fe..a5ebb450 100644 --- a/tests/blackbox_test.go +++ b/tests/blackbox_test.go @@ -26,13 +26,13 @@ import ( @@ -4496,7 +4496,7 @@ index b7c240fe..5b586619 100644 // UUID generation tool "github.com/google/uuid" diff --git a/tests/filesystem.go b/tests/filesystem.go -index fa16c44b..25ed3d7b 100644 +index fa16c44b..9c7a742d 100644 --- a/tests/filesystem.go +++ b/tests/filesystem.go @@ -29,8 +29,8 @@ import ( @@ -4511,7 +4511,7 @@ index fa16c44b..25ed3d7b 100644 func run(ctx context.Context, command string, args ...string) ([]byte, error) { diff --git a/tests/negative/files/invalid_hash.go b/tests/negative/files/invalid_hash.go -index e4bab782..f0634563 100644 +index e4bab782..0c4dfead 100644 --- a/tests/negative/files/invalid_hash.go +++ b/tests/negative/files/invalid_hash.go @@ -15,8 +15,8 @@ @@ -4526,7 +4526,7 @@ index e4bab782..f0634563 100644 func init() { diff --git a/tests/negative/files/link.go b/tests/negative/files/link.go -index a4cf1d66..dc681fbd 100644 +index a4cf1d66..8d4128b2 100644 --- a/tests/negative/files/link.go +++ b/tests/negative/files/link.go @@ -15,8 +15,8 @@ @@ -4541,7 +4541,7 @@ index a4cf1d66..dc681fbd 100644 func init() { diff --git a/tests/negative/files/missing_file.go b/tests/negative/files/missing_file.go -index 3abfb574..613adb82 100644 +index 3abfb574..251f5593 100644 --- a/tests/negative/files/missing_file.go +++ b/tests/negative/files/missing_file.go @@ -15,8 +15,8 @@ @@ -4556,7 +4556,7 @@ index 3abfb574..613adb82 100644 func init() { diff --git a/tests/negative/files/preexisting_nodes.go b/tests/negative/files/preexisting_nodes.go -index 6a80fae6..9995ae94 100644 +index 6a80fae6..0981e95e 100644 --- a/tests/negative/files/preexisting_nodes.go +++ b/tests/negative/files/preexisting_nodes.go @@ -15,8 +15,8 @@ @@ -4571,7 +4571,7 @@ index 6a80fae6..9995ae94 100644 func init() { diff --git a/tests/negative/filesystems/creation.go b/tests/negative/filesystems/creation.go -index db132cac..fce7eb73 100644 +index db132cac..1c538658 100644 --- a/tests/negative/filesystems/creation.go +++ b/tests/negative/filesystems/creation.go @@ -15,8 +15,8 @@ @@ -4586,7 +4586,7 @@ index db132cac..fce7eb73 100644 func init() { diff --git a/tests/negative/filesystems/mount_filesystem.go b/tests/negative/filesystems/mount_filesystem.go -index 7665a82b..ffb50fb5 100644 +index 7665a82b..13f4acdf 100644 --- a/tests/negative/filesystems/mount_filesystem.go +++ b/tests/negative/filesystems/mount_filesystem.go @@ -15,8 +15,8 @@ @@ -4601,7 +4601,7 @@ index 7665a82b..ffb50fb5 100644 func init() { diff --git a/tests/negative/filesystems/no_device.go b/tests/negative/filesystems/no_device.go -index 2166e532..4d94ba47 100644 +index 2166e532..4387c396 100644 --- a/tests/negative/filesystems/no_device.go +++ b/tests/negative/filesystems/no_device.go @@ -15,8 +15,8 @@ @@ -4616,7 +4616,7 @@ index 2166e532..4d94ba47 100644 func init() { diff --git a/tests/negative/filesystems/symlinks.go b/tests/negative/filesystems/symlinks.go -index e62ee681..ecf64fc1 100644 +index e62ee681..b3aff932 100644 --- a/tests/negative/filesystems/symlinks.go +++ b/tests/negative/filesystems/symlinks.go @@ -15,8 +15,8 @@ @@ -4631,7 +4631,7 @@ index e62ee681..ecf64fc1 100644 func init() { diff --git a/tests/negative/general/config.go b/tests/negative/general/config.go -index 3116e331..e5302154 100644 +index 3116e331..ed960f97 100644 --- a/tests/negative/general/config.go +++ b/tests/negative/general/config.go @@ -17,8 +17,8 @@ package general @@ -4646,7 +4646,7 @@ index 3116e331..e5302154 100644 "github.com/vincent-petithory/dataurl" ) diff --git a/tests/negative/partitions/simple.go b/tests/negative/partitions/simple.go -index ae6f50f5..27e3a25d 100644 +index ae6f50f5..79911208 100644 --- a/tests/negative/partitions/simple.go +++ b/tests/negative/partitions/simple.go @@ -15,8 +15,8 @@ @@ -4661,7 +4661,7 @@ index ae6f50f5..27e3a25d 100644 func init() { diff --git a/tests/negative/partitions/zeroes.go b/tests/negative/partitions/zeroes.go -index f9d258c0..3501231e 100644 +index f9d258c0..1c0603a1 100644 --- a/tests/negative/partitions/zeroes.go +++ b/tests/negative/partitions/zeroes.go @@ -15,8 +15,8 @@ @@ -4676,7 +4676,7 @@ index f9d258c0..3501231e 100644 func init() { diff --git a/tests/negative/proxy/http.go b/tests/negative/proxy/http.go -index 7492f940..4e51bb17 100644 +index 7492f940..c219792d 100644 --- a/tests/negative/proxy/http.go +++ b/tests/negative/proxy/http.go @@ -19,8 +19,8 @@ import ( @@ -4691,7 +4691,7 @@ index 7492f940..4e51bb17 100644 var ( diff --git a/tests/negative/regression/filesystem.go b/tests/negative/regression/filesystem.go -index 0627c635..5d388afc 100644 +index 0627c635..37a13f8f 100644 --- a/tests/negative/regression/filesystem.go +++ b/tests/negative/regression/filesystem.go @@ -15,8 +15,8 @@ @@ -4706,7 +4706,7 @@ index 0627c635..5d388afc 100644 func init() { diff --git a/tests/negative/security/tls.go b/tests/negative/security/tls.go -index 0df69e7b..63bde529 100644 +index 0df69e7b..7564f16c 100644 --- a/tests/negative/security/tls.go +++ b/tests/negative/security/tls.go @@ -22,9 +22,9 @@ import ( @@ -4723,7 +4723,7 @@ index 0df69e7b..63bde529 100644 func init() { diff --git a/tests/negative/timeouts/timeouts.go b/tests/negative/timeouts/timeouts.go -index 5ac0967b..d72ba402 100644 +index 5ac0967b..b3bfd02e 100644 --- a/tests/negative/timeouts/timeouts.go +++ b/tests/negative/timeouts/timeouts.go @@ -20,8 +20,8 @@ import ( @@ -4738,7 +4738,7 @@ index 5ac0967b..d72ba402 100644 func init() { diff --git a/tests/positive/files/directory.go b/tests/positive/files/directory.go -index 5bda64c1..ac612b91 100644 +index 5bda64c1..056aa259 100644 --- a/tests/positive/files/directory.go +++ b/tests/positive/files/directory.go @@ -15,8 +15,8 @@ @@ -4753,7 +4753,7 @@ index 5bda64c1..ac612b91 100644 func init() { diff --git a/tests/positive/files/file.go b/tests/positive/files/file.go -index 0dd092e1..a3c69464 100644 +index 0dd092e1..a83da3c1 100644 --- a/tests/positive/files/file.go +++ b/tests/positive/files/file.go @@ -15,8 +15,8 @@ @@ -4768,7 +4768,7 @@ index 0dd092e1..a3c69464 100644 func init() { diff --git a/tests/positive/files/hash.go b/tests/positive/files/hash.go -index 8faecff7..13f5c56d 100644 +index 8faecff7..829b15e7 100644 --- a/tests/positive/files/hash.go +++ b/tests/positive/files/hash.go @@ -17,9 +17,9 @@ package files @@ -4785,7 +4785,7 @@ index 8faecff7..13f5c56d 100644 func init() { diff --git a/tests/positive/files/link.go b/tests/positive/files/link.go -index 72dd1b1f..503ffaac 100644 +index 72dd1b1f..ea21f539 100644 --- a/tests/positive/files/link.go +++ b/tests/positive/files/link.go @@ -15,8 +15,8 @@ @@ -4809,7 +4809,7 @@ index 72dd1b1f..503ffaac 100644 name := "links.hard.deep.create.file" in := types.GetBaseDisk() diff --git a/tests/positive/files/remote.go b/tests/positive/files/remote.go -index d1a8244e..3c9ee830 100644 +index d1a8244e..792bdae7 100644 --- a/tests/positive/files/remote.go +++ b/tests/positive/files/remote.go @@ -17,9 +17,9 @@ package files @@ -4826,7 +4826,7 @@ index d1a8244e..3c9ee830 100644 func init() { diff --git a/tests/positive/files/units.go b/tests/positive/files/units.go -index b8974479..d67861d9 100644 +index b8974479..62f5c033 100644 --- a/tests/positive/files/units.go +++ b/tests/positive/files/units.go @@ -15,8 +15,8 @@ @@ -4841,7 +4841,7 @@ index b8974479..d67861d9 100644 func init() { diff --git a/tests/positive/filesystems/creation.go b/tests/positive/filesystems/creation.go -index b0f058ee..33bb7f28 100644 +index b0f058ee..e5d9dce1 100644 --- a/tests/positive/filesystems/creation.go +++ b/tests/positive/filesystems/creation.go @@ -17,8 +17,8 @@ package filesystems @@ -4856,7 +4856,7 @@ index b0f058ee..33bb7f28 100644 func init() { diff --git a/tests/positive/filesystems/mount_filesystem.go b/tests/positive/filesystems/mount_filesystem.go -index daa72d7d..a16f933a 100644 +index daa72d7d..2cc76c38 100644 --- a/tests/positive/filesystems/mount_filesystem.go +++ b/tests/positive/filesystems/mount_filesystem.go @@ -15,8 +15,8 @@ @@ -4871,7 +4871,7 @@ index daa72d7d..a16f933a 100644 func init() { diff --git a/tests/positive/filesystems/reformat_filesystem.go b/tests/positive/filesystems/reformat_filesystem.go -index 6e58db70..db17df33 100644 +index 6e58db70..550c3ab3 100644 --- a/tests/positive/filesystems/reformat_filesystem.go +++ b/tests/positive/filesystems/reformat_filesystem.go @@ -15,9 +15,9 @@ @@ -4888,7 +4888,7 @@ index 6e58db70..db17df33 100644 func init() { diff --git a/tests/positive/filesystems/reuse_filesystem.go b/tests/positive/filesystems/reuse_filesystem.go -index bb83da30..6dae147d 100644 +index bb83da30..77c33a51 100644 --- a/tests/positive/filesystems/reuse_filesystem.go +++ b/tests/positive/filesystems/reuse_filesystem.go @@ -15,9 +15,9 @@ @@ -4905,7 +4905,7 @@ index bb83da30..6dae147d 100644 func init() { diff --git a/tests/positive/general/baseconfigsmerging.go b/tests/positive/general/baseconfigsmerging.go -index be667be2..26d34d2c 100644 +index be667be2..5ed84b26 100644 --- a/tests/positive/general/baseconfigsmerging.go +++ b/tests/positive/general/baseconfigsmerging.go @@ -15,8 +15,8 @@ @@ -4920,7 +4920,7 @@ index be667be2..26d34d2c 100644 func init() { diff --git a/tests/positive/general/general.go b/tests/positive/general/general.go -index ff7722f7..987f85dd 100644 +index ff7722f7..79a0453e 100644 --- a/tests/positive/general/general.go +++ b/tests/positive/general/general.go @@ -17,9 +17,9 @@ package general @@ -4937,7 +4937,7 @@ index ff7722f7..987f85dd 100644 func init() { diff --git a/tests/positive/general/preemption.go b/tests/positive/general/preemption.go -index 5952097f..af50f634 100644 +index 5952097f..3c0d62dd 100644 --- a/tests/positive/general/preemption.go +++ b/tests/positive/general/preemption.go @@ -18,8 +18,8 @@ import ( @@ -4952,7 +4952,7 @@ index 5952097f..af50f634 100644 func init() { diff --git a/tests/positive/partitions/complex-mb.go b/tests/positive/partitions/complex-mb.go -index 5c090e80..7ec877f1 100644 +index 5c090e80..86e0ff2f 100644 --- a/tests/positive/partitions/complex-mb.go +++ b/tests/positive/partitions/complex-mb.go @@ -15,8 +15,8 @@ @@ -4967,7 +4967,7 @@ index 5c090e80..7ec877f1 100644 func init() { diff --git a/tests/positive/partitions/creation-mb.go b/tests/positive/partitions/creation-mb.go -index 696108a1..337ba883 100644 +index 696108a1..dcba68a5 100644 --- a/tests/positive/partitions/creation-mb.go +++ b/tests/positive/partitions/creation-mb.go @@ -15,8 +15,8 @@ @@ -4982,7 +4982,7 @@ index 696108a1..337ba883 100644 func init() { diff --git a/tests/positive/partitions/deletion.go b/tests/positive/partitions/deletion.go -index 4e32d3cd..31fa5783 100644 +index 4e32d3cd..1dde4830 100644 --- a/tests/positive/partitions/deletion.go +++ b/tests/positive/partitions/deletion.go @@ -15,8 +15,8 @@ @@ -4997,7 +4997,7 @@ index 4e32d3cd..31fa5783 100644 func init() { diff --git a/tests/positive/partitions/mixed.go b/tests/positive/partitions/mixed.go -index 31402918..2e01e6cc 100644 +index 31402918..f7505dbe 100644 --- a/tests/positive/partitions/mixed.go +++ b/tests/positive/partitions/mixed.go @@ -15,8 +15,8 @@ @@ -5012,7 +5012,7 @@ index 31402918..2e01e6cc 100644 func init() { diff --git a/tests/positive/partitions/no-op.go b/tests/positive/partitions/no-op.go -index 58c6bbb0..c6b1dafb 100644 +index 58c6bbb0..40b11716 100644 --- a/tests/positive/partitions/no-op.go +++ b/tests/positive/partitions/no-op.go @@ -15,8 +15,8 @@ @@ -5027,7 +5027,7 @@ index 58c6bbb0..c6b1dafb 100644 func init() { diff --git a/tests/positive/partitions/verification.go b/tests/positive/partitions/verification.go -index 1488e499..5e6065c0 100644 +index 1488e499..efad6d68 100644 --- a/tests/positive/partitions/verification.go +++ b/tests/positive/partitions/verification.go @@ -15,8 +15,8 @@ @@ -5042,7 +5042,7 @@ index 1488e499..5e6065c0 100644 func init() { diff --git a/tests/positive/partitions/zeros.go b/tests/positive/partitions/zeros.go -index 10d32990..a4ae7516 100644 +index 10d32990..d53a7bd5 100644 --- a/tests/positive/partitions/zeros.go +++ b/tests/positive/partitions/zeros.go @@ -15,8 +15,8 @@ @@ -5057,7 +5057,7 @@ index 10d32990..a4ae7516 100644 func init() { diff --git a/tests/positive/passwd/users.go b/tests/positive/passwd/users.go -index b199cae6..a3ba770f 100644 +index b199cae6..0dd2d13e 100644 --- a/tests/positive/passwd/users.go +++ b/tests/positive/passwd/users.go @@ -15,8 +15,8 @@ @@ -5072,7 +5072,7 @@ index b199cae6..a3ba770f 100644 func init() { diff --git a/tests/positive/proxy/http.go b/tests/positive/proxy/http.go -index 1863c744..cdfa6c10 100644 +index 1863c744..8b03ec9f 100644 --- a/tests/positive/proxy/http.go +++ b/tests/positive/proxy/http.go @@ -19,8 +19,8 @@ import ( @@ -5087,7 +5087,7 @@ index 1863c744..cdfa6c10 100644 var ( diff --git a/tests/positive/regression/filesystem.go b/tests/positive/regression/filesystem.go -index 329d14bd..9228ef59 100644 +index 329d14bd..58fd5217 100644 --- a/tests/positive/regression/filesystem.go +++ b/tests/positive/regression/filesystem.go @@ -15,8 +15,8 @@ @@ -5102,7 +5102,7 @@ index 329d14bd..9228ef59 100644 func init() { diff --git a/tests/positive/security/tls.go b/tests/positive/security/tls.go -index 0b52d784..c89c5730 100644 +index 0b52d784..d43ae179 100644 --- a/tests/positive/security/tls.go +++ b/tests/positive/security/tls.go @@ -20,10 +20,10 @@ import ( @@ -5121,7 +5121,7 @@ index 0b52d784..c89c5730 100644 "github.com/vincent-petithory/dataurl" ) diff --git a/tests/positive/systemd/create_unit.go b/tests/positive/systemd/create_unit.go -index 1964a602..6ad13093 100644 +index 1964a602..71fcae85 100644 --- a/tests/positive/systemd/create_unit.go +++ b/tests/positive/systemd/create_unit.go @@ -15,8 +15,8 @@ @@ -5136,7 +5136,7 @@ index 1964a602..6ad13093 100644 func init() { diff --git a/tests/positive/systemd/modify_service.go b/tests/positive/systemd/modify_service.go -index a3faf958..d3382143 100644 +index a3faf958..ae625e76 100644 --- a/tests/positive/systemd/modify_service.go +++ b/tests/positive/systemd/modify_service.go @@ -15,8 +15,8 @@ @@ -5151,7 +5151,7 @@ index a3faf958..d3382143 100644 func init() { diff --git a/tests/positive/timeouts/timeouts.go b/tests/positive/timeouts/timeouts.go -index 34408293..70e4c639 100644 +index 34408293..24a0bc61 100644 --- a/tests/positive/timeouts/timeouts.go +++ b/tests/positive/timeouts/timeouts.go @@ -21,8 +21,8 @@ import ( @@ -5166,7 +5166,7 @@ index 34408293..70e4c639 100644 func init() { diff --git a/tests/register/register.go b/tests/register/register.go -index c6ae2d64..5d5919da 100644 +index c6ae2d64..0be09a38 100644 --- a/tests/register/register.go +++ b/tests/register/register.go @@ -16,12 +16,12 @@ package register @@ -5189,7 +5189,7 @@ index c6ae2d64..5d5919da 100644 type TestType int diff --git a/tests/registry/registry.go b/tests/registry/registry.go -index 917106b1..d1609676 100644 +index 917106b1..d181f843 100644 --- a/tests/registry/registry.go +++ b/tests/registry/registry.go @@ -16,22 +16,22 @@ package registry @@ -5234,7 +5234,7 @@ index 917106b1..d1609676 100644 + _ "github.com/flatcar/ignition/v2/tests/positive/timeouts" ) diff --git a/tests/servers/servers.go b/tests/servers/servers.go -index 4082c2e4..e07d6d8f 100644 +index 4082c2e4..f093c5af 100644 --- a/tests/servers/servers.go +++ b/tests/servers/servers.go @@ -27,7 +27,7 @@ import ( @@ -5247,7 +5247,7 @@ index 4082c2e4..e07d6d8f 100644 ) diff --git a/tests/validator.go b/tests/validator.go -index 6256ace8..c1bc8d62 100644 +index 6256ace8..b98404a5 100644 --- a/tests/validator.go +++ b/tests/validator.go @@ -26,8 +26,8 @@ import ( @@ -5262,7 +5262,7 @@ index 6256ace8..c1bc8d62 100644 "golang.org/x/sys/unix" ) diff --git a/validate/main.go b/validate/main.go -index 3ac03d7c..5edf143e 100644 +index 3ac03d7c..0a554dd6 100644 --- a/validate/main.go +++ b/validate/main.go @@ -21,8 +21,8 @@ import ( diff --git a/sdk_container/src/third_party/coreos-overlay/sys-apps/ignition/files/0002-mod-add-flatcar-ignition-0.36.2.patch b/sdk_container/src/third_party/coreos-overlay/sys-apps/ignition/files/0002-mod-add-flatcar-ignition-0.36.2.patch new file mode 100644 index 0000000000..efdde54da8 --- /dev/null +++ b/sdk_container/src/third_party/coreos-overlay/sys-apps/ignition/files/0002-mod-add-flatcar-ignition-0.36.2.patch @@ -0,0 +1,27 @@ +From 6b8f73219e65925c4c1674d05b371584b6d29d2a Mon Sep 17 00:00:00 2001 +From: Mathieu Tortuyaux +Date: Mon, 26 Sep 2022 12:09:03 +0200 +Subject: [PATCH 02/16] mod: add flatcar/ignition@0.36.2 + +it's required for Ignition conversion. + +Signed-off-by: Mathieu Tortuyaux +--- + go.mod | 1 + + 1 file changed, 1 insertion(+) + +diff --git a/go.mod b/go.mod +index 7c813620..1a85cbc7 100644 +--- a/go.mod ++++ b/go.mod +@@ -10,6 +10,7 @@ require ( + github.com/coreos/go-semver v0.3.0 + github.com/coreos/go-systemd/v22 v22.0.0 + github.com/coreos/vcontext v0.0.0-20211021162308-f1dbbca7bef4 ++ github.com/flatcar/ignition v0.36.2 + github.com/google/renameio v0.1.0 + github.com/google/uuid v1.1.1 + github.com/pin/tftp v2.1.0+incompatible +-- +2.35.1 + diff --git a/sdk_container/src/third_party/coreos-overlay/sys-apps/ignition/files/0002-mod-add-ign-converter-dependency.patch b/sdk_container/src/third_party/coreos-overlay/sys-apps/ignition/files/0002-mod-add-ign-converter-dependency.patch deleted file mode 100644 index 5bc066bd60..0000000000 --- a/sdk_container/src/third_party/coreos-overlay/sys-apps/ignition/files/0002-mod-add-ign-converter-dependency.patch +++ /dev/null @@ -1,36 +0,0 @@ -From c3e6b575bdb267c3500e95934f83247ccc7792dc Mon Sep 17 00:00:00 2001 -From: Mathieu Tortuyaux -Date: Wed, 25 May 2022 10:10:45 +0200 -Subject: [PATCH 02/15] mod: add ign-converter dependency - -Signed-off-by: Mathieu Tortuyaux ---- - go.mod | 4 ++++ - 1 file changed, 4 insertions(+) - -diff --git a/go.mod b/go.mod -index e5a47737..9b5da9f3 100644 ---- a/go.mod -+++ b/go.mod -@@ -10,6 +10,8 @@ require ( - github.com/coreos/go-semver v0.3.0 - github.com/coreos/go-systemd/v22 v22.0.0 - github.com/coreos/vcontext v0.0.0-20211021162308-f1dbbca7bef4 -+ github.com/flatcar/ign-converter v0.2.0 -+ github.com/flatcar/ignition v0.36.2-0.20220221101037-de4e6cc9bbba - github.com/google/renameio v0.1.0 - github.com/google/uuid v1.1.1 - github.com/pin/tftp v2.1.0+incompatible -@@ -21,7 +23,9 @@ require ( - golang.org/x/net v0.0.0-20200602114024-627f9648deb9 - golang.org/x/oauth2 v0.0.0-20200107190931-bf48bf16ab8d - golang.org/x/sys v0.0.0-20200610111108-226ff32320da -+ golang.org/x/text v0.3.7 // indirect - golang.org/x/tools v0.0.0-20200610160956-3e83d1e96d0e // indirect - google.golang.org/api v0.26.0 - google.golang.org/genproto v0.0.0-20200610104632-a5b850bcf112 // indirect -+ gopkg.in/yaml.v2 v2.4.0 // indirect - ) --- -2.35.1 - diff --git a/sdk_container/src/third_party/coreos-overlay/sys-apps/ignition/files/0003-sum-go-mod-tidy.patch b/sdk_container/src/third_party/coreos-overlay/sys-apps/ignition/files/0003-sum-go-mod-tidy.patch index f4e2080013..420eda8eab 100644 --- a/sdk_container/src/third_party/coreos-overlay/sys-apps/ignition/files/0003-sum-go-mod-tidy.patch +++ b/sdk_container/src/third_party/coreos-overlay/sys-apps/ignition/files/0003-sum-go-mod-tidy.patch @@ -1,34 +1,28 @@ -From ebbe212122592250ae7a5d0d8a74b2e78f1cb787 Mon Sep 17 00:00:00 2001 +From a83660f437ffe0fe277f863d26ce39d41e3144c9 Mon Sep 17 00:00:00 2001 From: Mathieu Tortuyaux -Date: Wed, 25 May 2022 10:11:59 +0200 -Subject: [PATCH 03/15] sum: go mod tidy +Date: Mon, 26 Sep 2022 12:09:29 +0200 +Subject: [PATCH 03/16] sum: go mod tidy Signed-off-by: Mathieu Tortuyaux --- - go.sum | 40 ++++++++++++++++++++++++++++++++++++++-- - 1 file changed, 38 insertions(+), 2 deletions(-) + go.sum | 31 +++++++++++++++++++++++++++++-- + 1 file changed, 29 insertions(+), 2 deletions(-) diff --git a/go.sum b/go.sum -index 097b98c7..afe8e529 100644 +index 097b98c7..1d541aaf 100644 --- a/go.sum +++ b/go.sum -@@ -38,6 +38,10 @@ dmitri.shuralyov.com/gpu/mtl v0.0.0-20190408044501-666a987793e9/go.mod h1:H6x//7 +@@ -38,6 +38,9 @@ dmitri.shuralyov.com/gpu/mtl v0.0.0-20190408044501-666a987793e9/go.mod h1:H6x//7 github.com/BurntSushi/toml v0.3.1 h1:WXkYYl6Yr3qBf1K79EBnL4mak0OimBfB0XUf9Vl28OQ= github.com/BurntSushi/toml v0.3.1/go.mod h1:xHWCNGjB5oqiDr8zfno3MHue2Ht5sIBksp03qcyfWMU= github.com/BurntSushi/xgb v0.0.0-20160522181843-27f122750802/go.mod h1:IVnqGOEym/WlBOVXweHU+Q+/VP0lqqI8lqeDx9IjBqo= ++github.com/ajeddeloh/go-json v0.0.0-20160803184958-73d058cf8437 h1:gZCtZ+Hh/e3CGEX8q/yAcp8wWu5ZS6NMk6VGzpQhI3s= +github.com/ajeddeloh/go-json v0.0.0-20160803184958-73d058cf8437/go.mod h1:otnto4/Icqn88WCcM4bhIJNSgsh9VLBuspyyCfvof9c= -+github.com/ajeddeloh/go-json v0.0.0-20200220154158-5ae607161559 h1:4SPQljF/GJ8Q+QlCWMWxRBepub4DresnOm4eI2ebFGc= -+github.com/ajeddeloh/go-json v0.0.0-20200220154158-5ae607161559/go.mod h1:otnto4/Icqn88WCcM4bhIJNSgsh9VLBuspyyCfvof9c= +github.com/aws/aws-sdk-go v1.8.39/go.mod h1:ZRmQr0FajVIyZ4ZzBYKG5P3ZqPz9IHG41ZoMu1ADI3k= github.com/aws/aws-sdk-go v1.30.28 h1:SaPM7dlmp7h3Lj1nJ4jdzOkTdom08+g20k7AU5heZYg= github.com/aws/aws-sdk-go v1.30.28/go.mod h1:5zCpMtNQVjRREroY7sYe8lOMRSxkhG6MZveU8YkpAk0= github.com/beevik/etree v1.1.1-0.20200718192613-4a2f8b9d084c h1:uYq6BD31fkfeNKQmfLj7ODcEfkb5JLsKrXVSqgnfGg8= -@@ -46,12 +50,16 @@ github.com/census-instrumentation/opencensus-proto v0.2.1/go.mod h1:f6KPmirojxKA - github.com/chzyer/logex v1.1.10/go.mod h1:+Ywpsq7O8HXn0nuIou7OrIPyXbp3wmkHB+jjWRnGsAI= - github.com/chzyer/readline v0.0.0-20180603132655-2972be24d48e/go.mod h1:nSuG5e5PlCu98SY8svDHJxuZscDgtXS6KTTbou5AhLI= - github.com/chzyer/test v0.0.0-20180213035817-a1ea475d72b1/go.mod h1:Q3SI9o4m/ZMnBNeIyt5eFwwo7qiLfzFZmjNmxjkiQlU= -+github.com/clarketm/json v1.14.1/go.mod h1:ynr2LRfb0fQU34l07csRNBTcivjySLLiY1YzQqKVfdo= - github.com/client9/misspell v0.3.4/go.mod h1:qj6jICC3Q7zFZvVWo7KLAzC3yx5G7kyvSDkc90ppPyw= +@@ -50,8 +53,11 @@ github.com/client9/misspell v0.3.4/go.mod h1:qj6jICC3Q7zFZvVWo7KLAzC3yx5G7kyvSDk github.com/cncf/udpa/go v0.0.0-20191209042840-269d4d468f6f/go.mod h1:M8M6+tZqaGXZJjfX53e64911xZQV5JYwmTeXPW+k8Sc= github.com/coreos/go-json v0.0.0-20211020211907-c63f628265de h1:qZvNu52Tv7Jfbgxdw3ONHf0BK9UpuSxi9FA9Y+qU5VU= github.com/coreos/go-json v0.0.0-20211020211907-c63f628265de/go.mod h1:lryFBkhadOfv8Jue2Vr/f/Yviw8h1DQPQojbXqEChY0= @@ -40,15 +34,12 @@ index 097b98c7..afe8e529 100644 github.com/coreos/go-systemd/v22 v22.0.0 h1:XJIw/+VlJ+87J+doOxznsAWIdmWuViOVhkQamW5YV28= github.com/coreos/go-systemd/v22 v22.0.0/go.mod h1:xO0FLkIi5MaZafQlIrOotqXZ90ih+1atmu1JpKERPPk= github.com/coreos/vcontext v0.0.0-20211021162308-f1dbbca7bef4 h1:pfSsrvbjUFGINaPGy0mm2QKQKTdq7IcbUa+nQwsz2UM= -@@ -62,10 +70,18 @@ github.com/envoyproxy/go-control-plane v0.9.0/go.mod h1:YTl/9mNaCwkRvm6d1a2C3ymF +@@ -62,10 +68,15 @@ github.com/envoyproxy/go-control-plane v0.9.0/go.mod h1:YTl/9mNaCwkRvm6d1a2C3ymF github.com/envoyproxy/go-control-plane v0.9.1-0.20191026205805-5f8ba28d4473/go.mod h1:YTl/9mNaCwkRvm6d1a2C3ymFceY/DCBVvsKhRF0iEA4= github.com/envoyproxy/go-control-plane v0.9.4/go.mod h1:6rpuAdCZL397s3pYoYcLgu1mIlRU8Am5FuJP05cCM98= github.com/envoyproxy/protoc-gen-validate v0.1.0/go.mod h1:iSmxcyjqTsJpI2R4NaDN7+kN2VEUnK/pcBlmesArF7c= -+github.com/flatcar/ign-converter v0.2.0 h1:XAIP2LHgqwtkPmJmilKSblCj0tGCO86qCrnbO6jgPM8= -+github.com/flatcar/ign-converter v0.2.0/go.mod h1:t/kcw0CQ/uKMCyZwDAzuwMO3CShxaimEJhQzLGCsb3Y= -+github.com/flatcar/ignition v0.36.2-0.20220221101037-de4e6cc9bbba h1:HiTCL7737Hi944kXfLN8ReGoJtAiibGIsCk3MGlYy9M= -+github.com/flatcar/ignition v0.36.2-0.20220221101037-de4e6cc9bbba/go.mod h1:JzHCIdCu9dy0xtezyBit/aOY4QIlJ12UYU6nXNPnnRE= -+github.com/flatcar/ignition/v2 v2.2.1-0.20220302150437-ce14e51676e9/go.mod h1:n076OVuGbg6f+j3YYoxFCjRyMU2hxsx6Q4Gy0xwO7cM= ++github.com/flatcar/ignition v0.36.2 h1:xGHgScUe0P4Fkprjqv7L2CE58emiQgP833OCCn9z2v4= ++github.com/flatcar/ignition v0.36.2/go.mod h1:uk1tpzLFRXus4RrvzgMI+IqmmB8a/RGFSBlI+tMTbbA= github.com/go-gl/glfw v0.0.0-20190409004039-e6da0acd62b1/go.mod h1:vR7hzQXu2zJy9AVAgeJqvqgH9Q5CA+iKCZ2gyEVpxRU= github.com/go-gl/glfw/v3.3/glfw v0.0.0-20191125211704-12ad95a8df72/go.mod h1:tQ2UAYgL5IevRw8kRxooKSPJfGvJ9fJQFa0TUsXzTg8= github.com/go-gl/glfw/v3.3/glfw v0.0.0-20200222043503-6f7a984d4dc4/go.mod h1:tQ2UAYgL5IevRw8kRxooKSPJfGvJ9fJQFa0TUsXzTg8= @@ -59,7 +50,7 @@ index 097b98c7..afe8e529 100644 github.com/godbus/dbus/v5 v5.0.3 h1:ZqHaoEF7TBzh4jzPmqVhE/5A1z9of6orkAe5uHoAeME= github.com/godbus/dbus/v5 v5.0.3/go.mod h1:xhWf0FNVPg57R7Z0UbKHbJfkEywrmjJnf7w5xrFpKfA= github.com/golang/glog v0.0.0-20160126235308-23def4e6c14b/go.mod h1:SBH7ygxi8pfUlaOkMMuAQtPIUF8ecWP5IEl/CR7VP2Q= -@@ -117,20 +133,25 @@ github.com/google/uuid v1.1.1/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+ +@@ -117,20 +128,24 @@ github.com/google/uuid v1.1.1/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+ github.com/googleapis/gax-go/v2 v2.0.4/go.mod h1:0Wqv26UfaUD9n4G6kQubkQ+KchISgw+vpHVxEJEs9eg= github.com/googleapis/gax-go/v2 v2.0.5 h1:sjZBwGj9Jlw33ImPtvFviGYvseOtDM7hkSKB7+Tv3SM= github.com/googleapis/gax-go/v2 v2.0.5/go.mod h1:DWXyrwAJ9X0FpwwEdw+IPEYBICEFu5mhpdKc/us6bOk= @@ -73,7 +64,6 @@ index 097b98c7..afe8e529 100644 github.com/jstemmer/go-junit-report v0.0.0-20190106144839-af01ea7f8024/go.mod h1:6v2b51hI/fHJwM22ozAgKL4VKDeJcHhJFhtBdhmNjmU= github.com/jstemmer/go-junit-report v0.9.1 h1:6QPYqodiu3GuPL+7mfx+NwDdp2eTkp9IfEUpgAwUN0o= github.com/jstemmer/go-junit-report v0.9.1/go.mod h1:Brl9GWCQeLvo8nXZwPNNblvFj/XSXhF0NWZEnDohbsk= -+github.com/jtolds/gls v4.2.1+incompatible/go.mod h1:QJZ7F/aHp+rZTRtaJ1ow/lLfFfVYBRgL+9YlvaHOwJU= +github.com/jtolds/gls v4.20.0+incompatible/go.mod h1:QJZ7F/aHp+rZTRtaJ1ow/lLfFfVYBRgL+9YlvaHOwJU= github.com/kisielk/gotool v1.0.0/go.mod h1:XhKaO+MFFWcvkIS/tQcRk01m1F5IRFswLeQ+oQHNcck= github.com/kr/pretty v0.1.0 h1:L/CwN0zerZDmRFUapSPitk6f+Q3+0za1rQkzVuMiMFI= @@ -85,20 +75,18 @@ index 097b98c7..afe8e529 100644 github.com/pin/tftp v2.1.0+incompatible h1:Yng4J7jv6lOc6IF4XoB5mnd3P7ZrF60XQq+my3FAMus= github.com/pin/tftp v2.1.0+incompatible/go.mod h1:xVpZOMCXTy+A5QMjEVN0Glwa1sUvaJhFXbr/aAxuxGY= github.com/pkg/errors v0.9.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0= -@@ -138,6 +159,12 @@ github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZb +@@ -138,6 +153,10 @@ github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZb github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= github.com/prometheus/client_model v0.0.0-20190812154241-14fe0d1b01d4/go.mod h1:xMI15A0UPsDsEKsMN9yxemIoYk6Tm2C1GtYGdfGttqA= github.com/rogpeppe/go-internal v1.3.0/go.mod h1:M8bDsm7K2OlrFYOpmOWEs/qY81heoFRclV5y23lUDJ4= +github.com/sigma/bdoor v0.0.0-20160202064022-babf2a4017b0/go.mod h1:WBu7REWbxC/s/J06jsk//d+9DOz9BbsmcIrimuGRFbs= +github.com/sigma/vmw-guestinfo v0.0.0-20160204083807-95dd4126d6e8/go.mod h1:JrRFFC0veyh0cibh0DAhriSY7/gV3kDdNaVUOmfx01U= -+github.com/smartystreets/assertions v0.0.0-20180927180507-b2de0cb4f26d/go.mod h1:OnSkiWE9lh6wB0YB77sQom3nweQdgAjqCqsofrRNTgc= +github.com/smartystreets/assertions v1.2.0/go.mod h1:tcbTF8ujkAEcZ8TElKY+i30BzYlVhC/LOxJk7iOWnoo= -+github.com/smartystreets/goconvey v0.0.0-20190222223459-a17d461953aa/go.mod h1:2RVY1rIf+2J2o/IM9+vPq9RzmHDSseB7FoXiSNIUsoU= +github.com/smartystreets/goconvey v1.7.2/go.mod h1:Vw0tHAZW6lzCRk3xgdin6fKYcG+G3Pg9vgXWeJpQFMM= github.com/spf13/pflag v1.0.6-0.20210604193023-d5e0c0615ace h1:9PNP1jnUjRhfmGMlkXHjYPishpcw4jpSt/V/xYY3FMA= github.com/spf13/pflag v1.0.6-0.20210604193023-d5e0c0615ace/go.mod h1:McXfInJRrz4CZXVZOBLb0bTZqETkiAhM9Iw0y3An2Bg= github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= -@@ -147,8 +174,10 @@ github.com/stretchr/testify v1.7.0 h1:nwc3DEeHmmLAfoZucVR881uASk0Mfjw8xYJ99tb5Cc +@@ -147,8 +166,10 @@ github.com/stretchr/testify v1.7.0 h1:nwc3DEeHmmLAfoZucVR881uASk0Mfjw8xYJ99tb5Cc github.com/stretchr/testify v1.7.0/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg= github.com/vincent-petithory/dataurl v1.0.0 h1:cXw+kPto8NLuJtlMsI152irrVw9fRDX8AbShPRpg2CI= github.com/vincent-petithory/dataurl v1.0.0/go.mod h1:FHafX5vmDzyP+1CQATJn7WFKc9CvnvxyvZy6I1MrG/U= @@ -109,17 +97,16 @@ index 097b98c7..afe8e529 100644 github.com/yuin/goldmark v1.1.25/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74= github.com/yuin/goldmark v1.1.27/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74= go.opencensus.io v0.21.0/go.mod h1:mSImk1erAIZhrmZN+AvHh14ztQfjbGwt4TtuofqLduU= -@@ -157,6 +186,9 @@ go.opencensus.io v0.22.2/go.mod h1:yxeiOL68Rb0Xd1ddK5vPZ/oVn4vY4Ynel7k9FzqtOIw= +@@ -157,6 +178,8 @@ go.opencensus.io v0.22.2/go.mod h1:yxeiOL68Rb0Xd1ddK5vPZ/oVn4vY4Ynel7k9FzqtOIw= go.opencensus.io v0.22.3/go.mod h1:yxeiOL68Rb0Xd1ddK5vPZ/oVn4vY4Ynel7k9FzqtOIw= go.opencensus.io v0.22.5 h1:dntmOdLpSpHlVqbW5Eay97DelsZHe+55D+xC6i0dDS0= go.opencensus.io v0.22.5/go.mod h1:5pWMHQbX5EPX2/62yrJeAkowc+lfs/XD7Uxpq3pI6kk= ++go4.org v0.0.0-20160314031811-03efcb870d84 h1:WZkGC1qzoax/QSt84wmvIxk+ZOmGIChsTzdrv9t4nvk= +go4.org v0.0.0-20160314031811-03efcb870d84/go.mod h1:MkTOUMDaeVYJUOUsaDXIhWPZYa1yOyC1qaOBpL57BhE= -+go4.org v0.0.0-20200104003542-c7e774b10ea0 h1:M6XsnQeLwG+rHQ+/rrGh3puBI3WZEy9TBWmf2H+enQA= -+go4.org v0.0.0-20200104003542-c7e774b10ea0/go.mod h1:MkTOUMDaeVYJUOUsaDXIhWPZYa1yOyC1qaOBpL57BhE= golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w= golang.org/x/crypto v0.0.0-20190510104115-cbcb75029529/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= golang.org/x/crypto v0.0.0-20190605123033-f99c8df09eb5/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= -@@ -198,6 +230,7 @@ golang.org/x/net v0.0.0-20180826012351-8a410e7b638d/go.mod h1:mL1N/T3taQHkDXs73r +@@ -198,6 +221,7 @@ golang.org/x/net v0.0.0-20180826012351-8a410e7b638d/go.mod h1:mL1N/T3taQHkDXs73r golang.org/x/net v0.0.0-20190108225652-1e06a53dbb7e/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= golang.org/x/net v0.0.0-20190213061140-3a22650c66bd/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= golang.org/x/net v0.0.0-20190311183353-d8887717615a/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= @@ -127,7 +114,7 @@ index 097b98c7..afe8e529 100644 golang.org/x/net v0.0.0-20190404232315-eb5bcb51f2a3/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= golang.org/x/net v0.0.0-20190501004415-9ce7a6920f09/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= golang.org/x/net v0.0.0-20190503192946-f4e77d36d62c/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= -@@ -261,8 +294,9 @@ golang.org/x/text v0.0.0-20170915032832-14c0d48ead0c/go.mod h1:NqM8EUOU14njkJ3fq +@@ -261,8 +285,9 @@ golang.org/x/text v0.0.0-20170915032832-14c0d48ead0c/go.mod h1:NqM8EUOU14njkJ3fq golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= golang.org/x/text v0.3.1-0.20180807135948-17ff2d5776d2/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= golang.org/x/text v0.3.2/go.mod h1:bEr9sfX3Q8Zfm5fL9x+3itogRgK3+ptLWKqgva+5dAk= @@ -138,7 +125,7 @@ index 097b98c7..afe8e529 100644 golang.org/x/time v0.0.0-20181108054448-85acf8d2951c/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= golang.org/x/time v0.0.0-20190308202827-9d24e82272b4/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= golang.org/x/time v0.0.0-20191024005414-555d28b269f0/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= -@@ -272,6 +306,7 @@ golang.org/x/tools v0.0.0-20190226205152-f727befe758c/go.mod h1:9Yl7xja0Znq3iFh3 +@@ -272,6 +297,7 @@ golang.org/x/tools v0.0.0-20190226205152-f727befe758c/go.mod h1:9Yl7xja0Znq3iFh3 golang.org/x/tools v0.0.0-20190311212946-11955173bddd/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs= golang.org/x/tools v0.0.0-20190312151545-0bb0c0a6e846/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs= golang.org/x/tools v0.0.0-20190312170243-e65039ee4138/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs= @@ -146,7 +133,7 @@ index 097b98c7..afe8e529 100644 golang.org/x/tools v0.0.0-20190425150028-36563e24a262/go.mod h1:RgjU9mgBXZiqYHBnxXauZ1Gv1EHHAz9KjViQ78xBX0Q= golang.org/x/tools v0.0.0-20190506145303-2d16b83fe98c/go.mod h1:RgjU9mgBXZiqYHBnxXauZ1Gv1EHHAz9KjViQ78xBX0Q= golang.org/x/tools v0.0.0-20190524140312-2c0ae7006135/go.mod h1:RgjU9mgBXZiqYHBnxXauZ1Gv1EHHAz9KjViQ78xBX0Q= -@@ -386,8 +421,9 @@ gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8 +@@ -386,8 +412,9 @@ gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8 gopkg.in/check.v1 v1.0.0-20180628173108-788fd7840127 h1:qIbj1fsPNlZgppZ+VLlY7N33q108Sa+fhmuc+sWQYwY= gopkg.in/check.v1 v1.0.0-20180628173108-788fd7840127/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= gopkg.in/errgo.v2 v2.1.0/go.mod h1:hNsd1EY+bozCKY1Ytp96fpM3vjJbqLJn88ws8XvfDNI= diff --git a/sdk_container/src/third_party/coreos-overlay/sys-apps/ignition/files/0004-vendor-go-mod-vendor.patch b/sdk_container/src/third_party/coreos-overlay/sys-apps/ignition/files/0004-vendor-go-mod-vendor.patch index 2872aed103..1a2cb0d4c2 100644 --- a/sdk_container/src/third_party/coreos-overlay/sys-apps/ignition/files/0004-vendor-go-mod-vendor.patch +++ b/sdk_container/src/third_party/coreos-overlay/sys-apps/ignition/files/0004-vendor-go-mod-vendor.patch @@ -1,11 +1,10 @@ -From 1c516a5e817f586a2f57ca4b01306597c902cfe8 Mon Sep 17 00:00:00 2001 +From 3911fdc40823b88fce76665868975f426a92e580 Mon Sep 17 00:00:00 2001 From: Mathieu Tortuyaux -Date: Wed, 25 May 2022 10:12:15 +0200 -Subject: [PATCH 04/15] vendor: go mod vendor +Date: Mon, 26 Sep 2022 12:11:56 +0200 +Subject: [PATCH 04/16] vendor: go mod vendor Signed-off-by: Mathieu Tortuyaux --- - vendor/github.com/ajeddeloh/go-json/OWNERS | 19 + vendor/github.com/ajeddeloh/go-json/README | 10 + vendor/github.com/ajeddeloh/go-json/decode.go | 1226 +++ vendor/github.com/ajeddeloh/go-json/encode.go | 1194 +++ @@ -20,35 +19,32 @@ Signed-off-by: Mathieu Tortuyaux .../coreos/go-systemd/unit/escape.go | 116 + .../coreos/go-systemd/unit/option.go | 59 + .../coreos/go-systemd/unit/serialize.go | 75 + - .../flatcar/ign-converter/LICENSE | 202 + - .../translate/v24tov31/v24tov31.go | 688 ++ - .../flatcar/ign-converter/util/util.go | 166 + - .../github.com/flatcar/ignition/LICENSE | 202 + - .../github.com/flatcar/ignition/NOTICE | 5 + + vendor/github.com/flatcar/ignition/LICENSE | 202 + + vendor/github.com/flatcar/ignition/NOTICE | 5 + .../ignition/config/shared/errors/errors.go | 109 + .../config/shared/validations/unit.go | 54 + - .../ignition/config/util/helpers.go | 34 + + .../flatcar/ignition/config/util/helpers.go | 34 + .../ignition/config/util/parsingErrors.go | 74 + - .../ignition/config/v1/cloudinit.go | 53 + - .../ignition/config/v1/config.go | 59 + + .../flatcar/ignition/config/v1/cloudinit.go | 53 + + .../flatcar/ignition/config/v1/config.go | 59 + .../ignition/config/v1/types/config.go | 35 + - .../ignition/config/v1/types/disk.go | 123 + - .../ignition/config/v1/types/file.go | 39 + + .../flatcar/ignition/config/v1/types/disk.go | 123 + + .../flatcar/ignition/config/v1/types/file.go | 39 + .../ignition/config/v1/types/filesystem.go | 45 + - .../ignition/config/v1/types/group.go | 22 + + .../flatcar/ignition/config/v1/types/group.go | 22 + .../ignition/config/v1/types/networkd.go | 19 + .../ignition/config/v1/types/partition.go | 60 + .../ignition/config/v1/types/passwd.go | 20 + - .../ignition/config/v1/types/path.go | 31 + - .../ignition/config/v1/types/raid.go | 44 + + .../flatcar/ignition/config/v1/types/path.go | 31 + + .../flatcar/ignition/config/v1/types/raid.go | 44 + .../ignition/config/v1/types/storage.go | 21 + .../ignition/config/v1/types/systemd.go | 19 + - .../ignition/config/v1/types/unit.go | 73 + - .../ignition/config/v1/types/user.go | 35 + - .../ignition/config/v2_0/append.go | 76 + - .../ignition/config/v2_0/cloudinit.go | 53 + - .../ignition/config/v2_0/config.go | 70 + - .../ignition/config/v2_0/translate.go | 173 + + .../flatcar/ignition/config/v1/types/unit.go | 73 + + .../flatcar/ignition/config/v1/types/user.go | 35 + + .../flatcar/ignition/config/v2_0/append.go | 76 + + .../flatcar/ignition/config/v2_0/cloudinit.go | 53 + + .../flatcar/ignition/config/v2_0/config.go | 70 + + .../flatcar/ignition/config/v2_0/translate.go | 173 + .../ignition/config/v2_0/types/compression.go | 31 + .../ignition/config/v2_0/types/config.go | 87 + .../ignition/config/v2_0/types/disk.go | 126 + @@ -65,13 +61,13 @@ Signed-off-by: Mathieu Tortuyaux .../ignition/config/v2_0/types/storage.go | 22 + .../ignition/config/v2_0/types/systemd.go | 19 + .../ignition/config/v2_0/types/unit.go | 115 + - .../ignition/config/v2_0/types/url.go | 69 + + .../flatcar/ignition/config/v2_0/types/url.go | 69 + .../ignition/config/v2_0/types/user.go | 35 + .../config/v2_0/types/verification.go | 19 + - .../ignition/config/v2_1/append.go | 76 + - .../ignition/config/v2_1/cloudinit.go | 53 + - .../ignition/config/v2_1/config.go | 68 + - .../ignition/config/v2_1/translate.go | 236 + + .../flatcar/ignition/config/v2_1/append.go | 76 + + .../flatcar/ignition/config/v2_1/cloudinit.go | 53 + + .../flatcar/ignition/config/v2_1/config.go | 68 + + .../flatcar/ignition/config/v2_1/translate.go | 236 + .../ignition/config/v2_1/types/config.go | 91 + .../ignition/config/v2_1/types/directory.go | 30 + .../ignition/config/v2_1/types/disk.go | 128 + @@ -86,13 +82,13 @@ Signed-off-by: Mathieu Tortuyaux .../ignition/config/v2_1/types/raid.go | 57 + .../ignition/config/v2_1/types/schema.go | 221 + .../ignition/config/v2_1/types/unit.go | 109 + - .../ignition/config/v2_1/types/url.go | 52 + + .../flatcar/ignition/config/v2_1/types/url.go | 52 + .../config/v2_1/types/verification.go | 77 + - .../ignition/config/v2_2/append.go | 76 + - .../ignition/config/v2_2/cloudinit.go | 53 + - .../ignition/config/v2_2/config.go | 71 + - .../ignition/config/v2_2/translate.go | 354 + - .../ignition/config/v2_2/types/ca.go | 27 + + .../flatcar/ignition/config/v2_2/append.go | 76 + + .../flatcar/ignition/config/v2_2/cloudinit.go | 53 + + .../flatcar/ignition/config/v2_2/config.go | 71 + + .../flatcar/ignition/config/v2_2/translate.go | 354 + + .../flatcar/ignition/config/v2_2/types/ca.go | 27 + .../ignition/config/v2_2/types/config.go | 91 + .../ignition/config/v2_2/types/directory.go | 37 + .../ignition/config/v2_2/types/disk.go | 128 + @@ -107,13 +103,13 @@ Signed-off-by: Mathieu Tortuyaux .../ignition/config/v2_2/types/raid.go | 57 + .../ignition/config/v2_2/types/schema.go | 246 + .../ignition/config/v2_2/types/unit.go | 131 + - .../ignition/config/v2_2/types/url.go | 53 + + .../flatcar/ignition/config/v2_2/types/url.go | 53 + .../config/v2_2/types/verification.go | 77 + - .../ignition/config/v2_3/append.go | 76 + - .../ignition/config/v2_3/cloudinit.go | 53 + - .../ignition/config/v2_3/config.go | 70 + - .../ignition/config/v2_3/translate.go | 380 + - .../ignition/config/v2_3/types/ca.go | 27 + + .../flatcar/ignition/config/v2_3/append.go | 76 + + .../flatcar/ignition/config/v2_3/cloudinit.go | 53 + + .../flatcar/ignition/config/v2_3/config.go | 70 + + .../flatcar/ignition/config/v2_3/translate.go | 380 + + .../flatcar/ignition/config/v2_3/types/ca.go | 27 + .../ignition/config/v2_3/types/config.go | 91 + .../ignition/config/v2_3/types/directory.go | 37 + .../ignition/config/v2_3/types/disk.go | 164 + @@ -128,13 +124,13 @@ Signed-off-by: Mathieu Tortuyaux .../ignition/config/v2_3/types/raid.go | 57 + .../ignition/config/v2_3/types/schema.go | 250 + .../ignition/config/v2_3/types/unit.go | 131 + - .../ignition/config/v2_3/types/url.go | 53 + + .../flatcar/ignition/config/v2_3/types/url.go | 53 + .../config/v2_3/types/verification.go | 77 + - .../ignition/config/v2_4/append.go | 76 + - .../ignition/config/v2_4/cloudinit.go | 53 + - .../ignition/config/v2_4/config.go | 70 + - .../ignition/config/v2_4/translate.go | 398 + - .../ignition/config/v2_4/types/ca.go | 58 + + .../flatcar/ignition/config/v2_4/append.go | 76 + + .../flatcar/ignition/config/v2_4/cloudinit.go | 53 + + .../flatcar/ignition/config/v2_4/config.go | 70 + + .../flatcar/ignition/config/v2_4/translate.go | 398 + + .../flatcar/ignition/config/v2_4/types/ca.go | 58 + .../ignition/config/v2_4/types/config.go | 91 + .../ignition/config/v2_4/types/directory.go | 37 + .../ignition/config/v2_4/types/disk.go | 164 + @@ -150,7 +146,7 @@ Signed-off-by: Mathieu Tortuyaux .../ignition/config/v2_4/types/raid.go | 57 + .../ignition/config/v2_4/types/schema.go | 269 + .../ignition/config/v2_4/types/unit.go | 131 + - .../ignition/config/v2_4/types/url.go | 53 + + .../flatcar/ignition/config/v2_4/types/url.go | 53 + .../config/v2_4/types/verification.go | 77 + .../ignition/config/validate/astjson/node.go | 73 + .../config/validate/astnode/astnode.go | 45 + @@ -173,9 +169,8 @@ Signed-off-by: Mathieu Tortuyaux .../x/text/unicode/norm/tables12.0.0.go | 3 +- .../x/text/unicode/norm/tables13.0.0.go | 7761 +++++++++++++++++ .../x/text/unicode/norm/tables9.0.0.go | 1 + - vendor/modules.txt | 38 +- - 169 files changed, 26888 insertions(+), 60 deletions(-) - create mode 100644 vendor/github.com/ajeddeloh/go-json/OWNERS + vendor/modules.txt | 31 +- + 165 files changed, 25806 insertions(+), 60 deletions(-) create mode 100644 vendor/github.com/ajeddeloh/go-json/README create mode 100644 vendor/github.com/ajeddeloh/go-json/decode.go create mode 100644 vendor/github.com/ajeddeloh/go-json/encode.go @@ -190,9 +185,6 @@ Signed-off-by: Mathieu Tortuyaux create mode 100644 vendor/github.com/coreos/go-systemd/unit/escape.go create mode 100644 vendor/github.com/coreos/go-systemd/unit/option.go create mode 100644 vendor/github.com/coreos/go-systemd/unit/serialize.go - create mode 100644 vendor/github.com/flatcar/ign-converter/LICENSE - create mode 100644 vendor/github.com/flatcar/ign-converter/translate/v24tov31/v24tov31.go - create mode 100644 vendor/github.com/flatcar/ign-converter/util/util.go create mode 100644 vendor/github.com/flatcar/ignition/LICENSE create mode 100644 vendor/github.com/flatcar/ignition/NOTICE create mode 100644 vendor/github.com/flatcar/ignition/config/shared/errors/errors.go @@ -332,31 +324,6 @@ Signed-off-by: Mathieu Tortuyaux create mode 100644 vendor/golang.org/x/text/unicode/bidi/tables13.0.0.go create mode 100644 vendor/golang.org/x/text/unicode/norm/tables13.0.0.go -diff --git a/vendor/github.com/ajeddeloh/go-json/OWNERS b/vendor/github.com/ajeddeloh/go-json/OWNERS -new file mode 100644 -index 00000000..74818020 ---- /dev/null -+++ b/vendor/github.com/ajeddeloh/go-json/OWNERS -@@ -0,0 +1,19 @@ -+# See the OWNERS docs: https://git.k8s.io/community/contributors/guide/owners.md -+ -+# This matches the fedora-coreos-tools team members. -+# XXX: figure out a way to just have it use GitHub team membership directly. -+ -+approvers: -+ - arithx -+ - ashcrow -+ - bgilbert -+ - cgwalters -+ - darkmuggle -+ - dustymabe -+ - jlebon -+ - LorbusChris -+ - lucab -+ - miabbott -+ - mike-nguyen -+ - yuqi-zhang -+ - zonggen diff --git a/vendor/github.com/ajeddeloh/go-json/README b/vendor/github.com/ajeddeloh/go-json/README new file mode 100644 index 00000000..0f53d345 @@ -375,7 +342,7 @@ index 00000000..0f53d345 +modified go1.6 library. diff --git a/vendor/github.com/ajeddeloh/go-json/decode.go b/vendor/github.com/ajeddeloh/go-json/decode.go new file mode 100644 -index 00000000..1dc2fdf0 +index 00000000..ed5398dd --- /dev/null +++ b/vendor/github.com/ajeddeloh/go-json/decode.go @@ -0,0 +1,1226 @@ @@ -1318,7 +1285,7 @@ index 00000000..1dc2fdf0 + } + } + node.Value = v -+ node.End = d.off - 1 ++ node.End = d.off + return node +} + @@ -1419,7 +1386,7 @@ index 00000000..1dc2fdf0 + } + } + node.Value = m -+ node.End = d.off - 1 ++ node.End = d.off + return node +} + @@ -1467,7 +1434,7 @@ index 00000000..1dc2fdf0 + Start: start, + Value: d.literalInterface(), + } -+ node.End = d.off - 1 ++ node.End = d.off + return node +} + @@ -5029,1080 +4996,6 @@ index 00000000..e07799ca + buf.WriteRune('=') + buf.WriteString(opt.Value) +} -diff --git a/vendor/github.com/flatcar/ign-converter/LICENSE b/vendor/github.com/flatcar/ign-converter/LICENSE -new file mode 100644 -index 00000000..e06d2081 ---- /dev/null -+++ b/vendor/github.com/flatcar/ign-converter/LICENSE -@@ -0,0 +1,202 @@ -+Apache License -+ Version 2.0, January 2004 -+ http://www.apache.org/licenses/ -+ -+ TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION -+ -+ 1. Definitions. -+ -+ "License" shall mean the terms and conditions for use, reproduction, -+ and distribution as defined by Sections 1 through 9 of this document. -+ -+ "Licensor" shall mean the copyright owner or entity authorized by -+ the copyright owner that is granting the License. -+ -+ "Legal Entity" shall mean the union of the acting entity and all -+ other entities that control, are controlled by, or are under common -+ control with that entity. For the purposes of this definition, -+ "control" means (i) the power, direct or indirect, to cause the -+ direction or management of such entity, whether by contract or -+ otherwise, or (ii) ownership of fifty percent (50%) or more of the -+ outstanding shares, or (iii) beneficial ownership of such entity. -+ -+ "You" (or "Your") shall mean an individual or Legal Entity -+ exercising permissions granted by this License. -+ -+ "Source" form shall mean the preferred form for making modifications, -+ including but not limited to software source code, documentation -+ source, and configuration files. -+ -+ "Object" form shall mean any form resulting from mechanical -+ transformation or translation of a Source form, including but -+ not limited to compiled object code, generated documentation, -+ and conversions to other media types. -+ -+ "Work" shall mean the work of authorship, whether in Source or -+ Object form, made available under the License, as indicated by a -+ copyright notice that is included in or attached to the work -+ (an example is provided in the Appendix below). -+ -+ "Derivative Works" shall mean any work, whether in Source or Object -+ form, that is based on (or derived from) the Work and for which the -+ editorial revisions, annotations, elaborations, or other modifications -+ represent, as a whole, an original work of authorship. For the purposes -+ of this License, Derivative Works shall not include works that remain -+ separable from, or merely link (or bind by name) to the interfaces of, -+ the Work and Derivative Works thereof. -+ -+ "Contribution" shall mean any work of authorship, including -+ the original version of the Work and any modifications or additions -+ to that Work or Derivative Works thereof, that is intentionally -+ submitted to Licensor for inclusion in the Work by the copyright owner -+ or by an individual or Legal Entity authorized to submit on behalf of -+ the copyright owner. For the purposes of this definition, "submitted" -+ means any form of electronic, verbal, or written communication sent -+ to the Licensor or its representatives, including but not limited to -+ communication on electronic mailing lists, source code control systems, -+ and issue tracking systems that are managed by, or on behalf of, the -+ Licensor for the purpose of discussing and improving the Work, but -+ excluding communication that is conspicuously marked or otherwise -+ designated in writing by the copyright owner as "Not a Contribution." -+ -+ "Contributor" shall mean Licensor and any individual or Legal Entity -+ on behalf of whom a Contribution has been received by Licensor and -+ subsequently incorporated within the Work. -+ -+ 2. Grant of Copyright License. Subject to the terms and conditions of -+ this License, each Contributor hereby grants to You a perpetual, -+ worldwide, non-exclusive, no-charge, royalty-free, irrevocable -+ copyright license to reproduce, prepare Derivative Works of, -+ publicly display, publicly perform, sublicense, and distribute the -+ Work and such Derivative Works in Source or Object form. -+ -+ 3. Grant of Patent License. Subject to the terms and conditions of -+ this License, each Contributor hereby grants to You a perpetual, -+ worldwide, non-exclusive, no-charge, royalty-free, irrevocable -+ (except as stated in this section) patent license to make, have made, -+ use, offer to sell, sell, import, and otherwise transfer the Work, -+ where such license applies only to those patent claims licensable -+ by such Contributor that are necessarily infringed by their -+ Contribution(s) alone or by combination of their Contribution(s) -+ with the Work to which such Contribution(s) was submitted. If You -+ institute patent litigation against any entity (including a -+ cross-claim or counterclaim in a lawsuit) alleging that the Work -+ or a Contribution incorporated within the Work constitutes direct -+ or contributory patent infringement, then any patent licenses -+ granted to You under this License for that Work shall terminate -+ as of the date such litigation is filed. -+ -+ 4. Redistribution. You may reproduce and distribute copies of the -+ Work or Derivative Works thereof in any medium, with or without -+ modifications, and in Source or Object form, provided that You -+ meet the following conditions: -+ -+ (a) You must give any other recipients of the Work or -+ Derivative Works a copy of this License; and -+ -+ (b) You must cause any modified files to carry prominent notices -+ stating that You changed the files; and -+ -+ (c) You must retain, in the Source form of any Derivative Works -+ that You distribute, all copyright, patent, trademark, and -+ attribution notices from the Source form of the Work, -+ excluding those notices that do not pertain to any part of -+ the Derivative Works; and -+ -+ (d) If the Work includes a "NOTICE" text file as part of its -+ distribution, then any Derivative Works that You distribute must -+ include a readable copy of the attribution notices contained -+ within such NOTICE file, excluding those notices that do not -+ pertain to any part of the Derivative Works, in at least one -+ of the following places: within a NOTICE text file distributed -+ as part of the Derivative Works; within the Source form or -+ documentation, if provided along with the Derivative Works; or, -+ within a display generated by the Derivative Works, if and -+ wherever such third-party notices normally appear. The contents -+ of the NOTICE file are for informational purposes only and -+ do not modify the License. You may add Your own attribution -+ notices within Derivative Works that You distribute, alongside -+ or as an addendum to the NOTICE text from the Work, provided -+ that such additional attribution notices cannot be construed -+ as modifying the License. -+ -+ You may add Your own copyright statement to Your modifications and -+ may provide additional or different license terms and conditions -+ for use, reproduction, or distribution of Your modifications, or -+ for any such Derivative Works as a whole, provided Your use, -+ reproduction, and distribution of the Work otherwise complies with -+ the conditions stated in this License. -+ -+ 5. Submission of Contributions. Unless You explicitly state otherwise, -+ any Contribution intentionally submitted for inclusion in the Work -+ by You to the Licensor shall be under the terms and conditions of -+ this License, without any additional terms or conditions. -+ Notwithstanding the above, nothing herein shall supersede or modify -+ the terms of any separate license agreement you may have executed -+ with Licensor regarding such Contributions. -+ -+ 6. Trademarks. This License does not grant permission to use the trade -+ names, trademarks, service marks, or product names of the Licensor, -+ except as required for reasonable and customary use in describing the -+ origin of the Work and reproducing the content of the NOTICE file. -+ -+ 7. Disclaimer of Warranty. Unless required by applicable law or -+ agreed to in writing, Licensor provides the Work (and each -+ Contributor provides its Contributions) on an "AS IS" BASIS, -+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or -+ implied, including, without limitation, any warranties or conditions -+ of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A -+ PARTICULAR PURPOSE. You are solely responsible for determining the -+ appropriateness of using or redistributing the Work and assume any -+ risks associated with Your exercise of permissions under this License. -+ -+ 8. Limitation of Liability. In no event and under no legal theory, -+ whether in tort (including negligence), contract, or otherwise, -+ unless required by applicable law (such as deliberate and grossly -+ negligent acts) or agreed to in writing, shall any Contributor be -+ liable to You for damages, including any direct, indirect, special, -+ incidental, or consequential damages of any character arising as a -+ result of this License or out of the use or inability to use the -+ Work (including but not limited to damages for loss of goodwill, -+ work stoppage, computer failure or malfunction, or any and all -+ other commercial damages or losses), even if such Contributor -+ has been advised of the possibility of such damages. -+ -+ 9. Accepting Warranty or Additional Liability. While redistributing -+ the Work or Derivative Works thereof, You may choose to offer, -+ and charge a fee for, acceptance of support, warranty, indemnity, -+ or other liability obligations and/or rights consistent with this -+ License. However, in accepting such obligations, You may act only -+ on Your own behalf and on Your sole responsibility, not on behalf -+ of any other Contributor, and only if You agree to indemnify, -+ defend, and hold each Contributor harmless for any liability -+ incurred by, or claims asserted against, such Contributor by reason -+ of your accepting any such warranty or additional liability. -+ -+ END OF TERMS AND CONDITIONS -+ -+ APPENDIX: How to apply the Apache License to your work. -+ -+ To apply the Apache License to your work, attach the following -+ boilerplate notice, with the fields enclosed by brackets "{}" -+ replaced with your own identifying information. (Don't include -+ the brackets!) The text should be enclosed in the appropriate -+ comment syntax for the file format. We also recommend that a -+ file or class name and description of purpose be included on the -+ same "printed page" as the copyright notice for easier -+ identification within third-party archives. -+ -+ Copyright {yyyy} {name of copyright owner} -+ -+ Licensed under the Apache License, Version 2.0 (the "License"); -+ you may not use this file except in compliance with the License. -+ You may obtain a copy of the License at -+ -+ http://www.apache.org/licenses/LICENSE-2.0 -+ -+ Unless required by applicable law or agreed to in writing, software -+ distributed under the License is distributed on an "AS IS" BASIS, -+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -+ See the License for the specific language governing permissions and -+ limitations under the License. -+ -diff --git a/vendor/github.com/flatcar/ign-converter/translate/v24tov31/v24tov31.go b/vendor/github.com/flatcar/ign-converter/translate/v24tov31/v24tov31.go -new file mode 100644 -index 00000000..d10cd7c3 ---- /dev/null -+++ b/vendor/github.com/flatcar/ign-converter/translate/v24tov31/v24tov31.go -@@ -0,0 +1,688 @@ -+// Copyright 2020 Red Hat, Inc. -+// -+// Licensed under the Apache License, Version 2.0 (the "License"); -+// you may not use this file except in compliance with the License. -+// You may obtain a copy of the License at -+// -+// http://www.apache.org/licenses/LICENSE-2.0 -+// -+// Unless required by applicable law or agreed to in writing, software -+// distributed under the License is distributed on an "AS IS" BASIS, -+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -+// See the License for the specific language governing permissions and -+// limitations under the License. -+ -+package v24tov31 -+ -+import ( -+ "errors" -+ "fmt" -+ "net/url" -+ "path" -+ "path/filepath" -+ "reflect" -+ -+ old "github.com/flatcar/ignition/config/v2_4/types" -+ oldValidate "github.com/flatcar/ignition/config/validate" -+ "github.com/flatcar/ignition/v2/config/v3_1/types" -+ "github.com/flatcar/ignition/v2/config/validate" -+ -+ "github.com/flatcar/ign-converter/util" -+) -+ -+// Check2_4 returns if the config is translatable but does not do any translation. -+// fsMap is a map from v2 filesystem names to the paths under which they should -+// be mounted in v3. -+func Check2_4(cfg old.Config, fsMap map[string]string) error { -+ rpt := oldValidate.ValidateWithoutSource(reflect.ValueOf(cfg)) -+ if rpt.IsFatal() || rpt.IsDeprecated() { -+ // disallow any deprecated fields -+ return fmt.Errorf("Invalid input config:\n%s", rpt.String()) -+ } -+ -+ // check that all filesystems have a path -+ if fsMap == nil { -+ fsMap = map[string]string{} -+ } -+ fsMap["root"] = "/" -+ for _, fs := range cfg.Storage.Filesystems { -+ name, err := util.FSGeneration(fs.Name, fsMap) -+ if err != nil { -+ return fmt.Errorf("generating filesystem path and name: %w", err) -+ } -+ -+ fs.Name = name -+ -+ if fs.Mount.Create != nil && !fs.Mount.Create.Force { -+ return fmt.Errorf("Config must force filesystem creation in case `mount.create` object is defined.") -+ } -+ } -+ -+ // check that there are no duplicates with files, links, or directories -+ // from path to a pretty-printing description of the entry -+ entryMap := map[string]string{} -+ links := make([]string, 0, len(cfg.Storage.Links)) -+ // build up a list of all the links we write. We're not allow to use links -+ // that we write -+ for _, link := range cfg.Storage.Links { -+ pathString := path.Join("/", fsMap[link.Filesystem], link.Path) -+ links = append(links, pathString) -+ } -+ -+ for _, file := range cfg.Storage.Files { -+ pathString := path.Join("/", fsMap[file.Filesystem], file.Path) -+ name := fmt.Sprintf("File: %s", pathString) -+ if duplicate, isDup := entryMap[pathString]; isDup { -+ return util.DuplicateInodeError{Old: duplicate, New: name} -+ } -+ if l := util.CheckPathUsesLink(links, pathString); l != "" { -+ return &util.UsesOwnLinkError{ -+ LinkPath: l, -+ Name: name, -+ } -+ } -+ entryMap[pathString] = name -+ } -+ for _, dir := range cfg.Storage.Directories { -+ pathString := path.Join("/", fsMap[dir.Filesystem], dir.Path) -+ name := fmt.Sprintf("Directory: %s", pathString) -+ if duplicate, isDup := entryMap[pathString]; isDup { -+ return util.DuplicateInodeError{Old: duplicate, New: name} -+ } -+ if l := util.CheckPathUsesLink(links, pathString); l != "" { -+ return &util.UsesOwnLinkError{ -+ LinkPath: l, -+ Name: name, -+ } -+ } -+ entryMap[pathString] = name -+ } -+ for _, link := range cfg.Storage.Links { -+ pathString := path.Join("/", fsMap[link.Filesystem], link.Path) -+ name := fmt.Sprintf("Link: %s", pathString) -+ if duplicate, isDup := entryMap[pathString]; isDup { -+ return &util.DuplicateInodeError{Old: duplicate, New: name} -+ } -+ entryMap[pathString] = name -+ if l := util.CheckPathUsesLink(links, pathString); l != "" { -+ return &util.UsesOwnLinkError{ -+ LinkPath: l, -+ Name: name, -+ } -+ } -+ } -+ -+ // check that there are no duplicates with systemd units or dropins -+ unitMap := map[string]struct{}{} // unit name -> struct{} -+ for _, unit := range cfg.Systemd.Units { -+ if _, isDup := unitMap[unit.Name]; isDup { -+ return util.DuplicateUnitError{Name: unit.Name} -+ } -+ unitMap[unit.Name] = struct{}{} -+ -+ dropinMap := map[string]struct{}{} // dropin name -> struct{} -+ for _, dropin := range unit.Dropins { -+ if _, isDup := dropinMap[dropin.Name]; isDup { -+ return util.DuplicateDropinError{Unit: unit.Name, Name: dropin.Name} -+ } -+ dropinMap[dropin.Name] = struct{}{} -+ } -+ } -+ -+ return nil -+} -+ -+// Translate translates an Ignition spec v2.4 config to v3.1 -+func Translate(cfg old.Config, fsMap map[string]string) (types.Config, error) { -+ if err := Check2_4(cfg, fsMap); err != nil { -+ return types.Config{}, err -+ } -+ -+ files := translateFiles(cfg.Storage.Files, fsMap) -+ files = append(files, translateNetworkd(cfg.Networkd.Units, fsMap)...) -+ -+ res := types.Config{ -+ // Ignition section -+ Ignition: types.Ignition{ -+ Version: "3.1.0", -+ Config: types.IgnitionConfig{ -+ Replace: translateCfgRef(cfg.Ignition.Config.Replace), -+ Merge: translateCfgRefs(cfg.Ignition.Config.Append), -+ }, -+ Security: types.Security{ -+ TLS: types.TLS{ -+ CertificateAuthorities: translateCAs(cfg.Ignition.Security.TLS.CertificateAuthorities), -+ }, -+ }, -+ Timeouts: types.Timeouts{ -+ HTTPResponseHeaders: cfg.Ignition.Timeouts.HTTPResponseHeaders, -+ HTTPTotal: cfg.Ignition.Timeouts.HTTPTotal, -+ }, -+ Proxy: types.Proxy{ -+ HTTPProxy: util.StrP(cfg.Ignition.Proxy.HTTPProxy), -+ HTTPSProxy: util.StrP(cfg.Ignition.Proxy.HTTPSProxy), -+ NoProxy: translateNoProxy(cfg.Ignition.Proxy.NoProxy), -+ }, -+ }, -+ // Passwd section -+ Passwd: types.Passwd{ -+ Users: translateUsers(cfg.Passwd.Users), -+ Groups: translateGroups(cfg.Passwd.Groups), -+ }, -+ Systemd: types.Systemd{ -+ Units: translateUnits(cfg.Systemd.Units), -+ }, -+ Storage: types.Storage{ -+ Disks: translateDisks(cfg.Storage.Disks), -+ Raid: translateRaid(cfg.Storage.Raid), -+ Filesystems: translateFilesystems(cfg.Storage.Filesystems, fsMap), -+ Files: files, -+ Directories: translateDirectories(cfg.Storage.Directories, fsMap), -+ Links: translateLinks(cfg.Storage.Links, fsMap), -+ }, -+ } -+ r := validate.ValidateWithContext(res, nil) -+ if r.IsFatal() { -+ return types.Config{}, errors.New(r.String()) -+ } -+ return res, nil -+} -+ -+func translateNoProxy(noproxy []old.NoProxyItem) (ret []types.NoProxyItem) { -+ for _, d := range noproxy { -+ ret = append(ret, types.NoProxyItem(d)) -+ } -+ return -+} -+ -+func translateCfgRef(ref *old.ConfigReference) (ret types.Resource) { -+ if ref == nil { -+ return -+ } -+ ret.Source = &ref.Source -+ ret.Verification.Hash = ref.Verification.Hash -+ ret.HTTPHeaders = translateHTTPHeaders(ref.HTTPHeaders) -+ -+ return -+} -+ -+func translateHTTPHeaders(headers []old.HTTPHeader) (ret []types.HTTPHeader) { -+ for _, o := range headers { -+ ret = append(ret, types.HTTPHeader{ -+ Name: o.Name, -+ Value: util.StrP(o.Value), -+ }) -+ } -+ return -+} -+ -+func translateCfgRefs(refs []old.ConfigReference) (ret []types.Resource) { -+ for _, ref := range refs { -+ ret = append(ret, translateCfgRef(&ref)) -+ } -+ return -+} -+ -+func translateCAs(refs []old.CaReference) (ret []types.Resource) { -+ for _, ref := range refs { -+ ret = append(ret, types.Resource{ -+ Source: &ref.Source, -+ Verification: types.Verification{ -+ Hash: ref.Verification.Hash, -+ }, -+ HTTPHeaders: translateHTTPHeaders(ref.HTTPHeaders), -+ }) -+ } -+ return -+} -+ -+func translateUsers(users []old.PasswdUser) (ret []types.PasswdUser) { -+ for _, u := range users { -+ uid := u.UID -+ gecos := u.Gecos -+ homeDir := u.HomeDir -+ noCreateHome := u.NoCreateHome -+ primaryGroup := u.PrimaryGroup -+ groups := translateUserGroups(u.Groups) -+ noUserGroup := u.NoUserGroup -+ noLogInit := u.NoLogInit -+ shell := u.Shell -+ system := u.System -+ -+ // support deprecated `create` object -+ if u.Create != nil { -+ create := u.Create -+ uid = create.UID -+ gecos = create.Gecos -+ homeDir = create.HomeDir -+ noCreateHome = create.NoCreateHome -+ primaryGroup = create.PrimaryGroup -+ noUserGroup = create.NoUserGroup -+ noLogInit = create.NoLogInit -+ shell = create.Shell -+ system = create.System -+ -+ // convert group type -+ g := make([]types.Group, len(create.Groups)) -+ for i, group := range create.Groups { -+ g[i] = types.Group(group) -+ } -+ -+ groups = g -+ } -+ -+ ret = append(ret, types.PasswdUser{ -+ Name: u.Name, -+ PasswordHash: u.PasswordHash, -+ SSHAuthorizedKeys: translateUserSSH(u.SSHAuthorizedKeys), -+ UID: uid, -+ Gecos: util.StrP(gecos), -+ HomeDir: util.StrP(homeDir), -+ NoCreateHome: util.BoolP(noCreateHome), -+ PrimaryGroup: util.StrP(primaryGroup), -+ Groups: groups, -+ NoUserGroup: util.BoolP(noUserGroup), -+ NoLogInit: util.BoolP(noLogInit), -+ Shell: util.StrP(shell), -+ System: util.BoolP(system), -+ }) -+ } -+ return -+} -+ -+func translateUserSSH(in []old.SSHAuthorizedKey) (ret []types.SSHAuthorizedKey) { -+ for _, k := range in { -+ ret = append(ret, types.SSHAuthorizedKey(k)) -+ } -+ return -+} -+ -+func translateUserGroups(in []old.Group) (ret []types.Group) { -+ for _, g := range in { -+ ret = append(ret, types.Group(g)) -+ } -+ return -+} -+ -+func translateGroups(groups []old.PasswdGroup) (ret []types.PasswdGroup) { -+ for _, g := range groups { -+ ret = append(ret, types.PasswdGroup{ -+ Name: g.Name, -+ Gid: g.Gid, -+ PasswordHash: util.StrP(g.PasswordHash), -+ System: util.BoolP(g.System), -+ }) -+ } -+ return -+} -+ -+func translateUnits(units []old.Unit) (ret []types.Unit) { -+ for _, u := range units { -+ var enabled *bool -+ // The Enabled field wins over Enable, since Enable is deprecated in spec v2 and removed in v3. -+ // It does so following the apparent intent of the upstream code [1] -+ // which actually does the opposite for Enable=true Enabled=false -+ // because the first matching line in a systemd preset wins. -+ // [1] https://github.com/flatcar/ignition/blob/b4d18ad3fcb278a890327f858c1c10256ab6ee9d/internal/exec/stages/files/units.go#L32 -+ if (u.Enabled != nil && *u.Enabled) || u.Enable { -+ enabled = util.BoolP(true) -+ } -+ if u.Enabled != nil && !*u.Enabled { -+ enabled = util.BoolPStrict(false) -+ } -+ ret = append(ret, types.Unit{ -+ Name: u.Name, -+ Enabled: enabled, -+ Mask: util.BoolP(u.Mask), -+ Contents: util.StrP(u.Contents), -+ Dropins: translateDropins(u.Dropins), -+ }) -+ } -+ return -+} -+ -+func translateDropins(dropins []old.SystemdDropin) (ret []types.Dropin) { -+ for _, d := range dropins { -+ ret = append(ret, types.Dropin{ -+ Name: d.Name, -+ Contents: util.StrP(d.Contents), -+ }) -+ } -+ return -+} -+ -+func translateDisks(disks []old.Disk) (ret []types.Disk) { -+ for _, d := range disks { -+ ret = append(ret, types.Disk{ -+ Device: d.Device, -+ WipeTable: util.BoolP(d.WipeTable), -+ Partitions: translatePartitions(d.Partitions), -+ }) -+ } -+ return -+} -+ -+func translatePartitions(parts []old.Partition) (ret []types.Partition) { -+ for _, p := range parts { -+ ret = append(ret, types.Partition{ -+ Label: p.Label, -+ Number: p.Number, -+ SizeMiB: p.SizeMiB, -+ StartMiB: p.StartMiB, -+ TypeGUID: util.StrP(p.TypeGUID), -+ GUID: util.StrP(p.GUID), -+ WipePartitionEntry: util.BoolP(p.WipePartitionEntry), -+ ShouldExist: p.ShouldExist, -+ }) -+ } -+ return -+} -+ -+func translateRaid(raids []old.Raid) (ret []types.Raid) { -+ for _, r := range raids { -+ ret = append(ret, types.Raid{ -+ Name: r.Name, -+ Level: r.Level, -+ Devices: translateDevices(r.Devices), -+ Spares: util.IntP(r.Spares), -+ Options: translateRaidOptions(r.Options), -+ }) -+ } -+ return -+} -+ -+func translateDevices(devices []old.Device) (ret []types.Device) { -+ for _, d := range devices { -+ ret = append(ret, types.Device(d)) -+ } -+ return -+} -+ -+func translateRaidOptions(options []old.RaidOption) (ret []types.RaidOption) { -+ for _, o := range options { -+ ret = append(ret, types.RaidOption(o)) -+ } -+ return -+} -+ -+func translateFilesystems(fss []old.Filesystem, m map[string]string) (ret []types.Filesystem) { -+ for _, f := range fss { -+ if f.Name == "root" { -+ // root is implied -+ continue -+ } -+ if f.Mount == nil { -+ f.Mount = &old.Mount{} -+ } -+ -+ wipe := util.BoolP(f.Mount.WipeFilesystem) -+ options := translateFilesystemOptions(f.Mount.Options) -+ -+ // If we have a `"create": {...}` section, we try -+ // to convert it. -+ if f.Mount.Create != nil { -+ // `wipe` should always be set to `true` - there is a config check -+ // in the beginning of the translation to ensure that we don't try to -+ // use this `create` section without forcing the exising filesystem to be -+ // wiped. -+ wipe = util.BoolP(f.Mount.Create.Force) -+ -+ for _, opt := range f.Mount.Create.Options { -+ options = append(options, types.FilesystemOption(opt)) -+ } -+ } -+ -+ format := f.Mount.Format -+ if f.Name == "oem" && (wipe == nil || !*wipe) { -+ format = "btrfs" -+ } -+ -+ ret = append(ret, types.Filesystem{ -+ Device: f.Mount.Device, -+ Format: util.StrP(format), -+ WipeFilesystem: wipe, -+ Label: f.Mount.Label, -+ UUID: f.Mount.UUID, -+ Options: options, -+ Path: util.StrP(m[f.Name]), -+ }) -+ } -+ return -+} -+ -+func translateFilesystemOptions(options []old.MountOption) (ret []types.FilesystemOption) { -+ for _, o := range options { -+ ret = append(ret, types.FilesystemOption(o)) -+ } -+ return -+} -+ -+func translateNode(n old.Node, m map[string]string) types.Node { -+ if n.User == nil { -+ n.User = &old.NodeUser{} -+ } -+ if n.Group == nil { -+ n.Group = &old.NodeGroup{} -+ } -+ return types.Node{ -+ Path: path.Join(m[n.Filesystem], n.Path), -+ User: types.NodeUser{ -+ ID: n.User.ID, -+ Name: util.StrP(n.User.Name), -+ }, -+ Group: types.NodeGroup{ -+ ID: n.Group.ID, -+ Name: util.StrP(n.Group.Name), -+ }, -+ Overwrite: n.Overwrite, -+ } -+} -+ -+func translateFiles(files []old.File, m map[string]string) (ret []types.File) { -+ for _, f := range files { -+ // 2.x files are overwrite by default -+ if f.Node.Overwrite == nil { -+ f.Node.Overwrite = util.BoolP(true) -+ } -+ -+ // In spec 3, overwrite must be false if append is true -+ // i.e. spec 2 files with append true must be translated to spec 3 files with overwrite false -+ if f.FileEmbedded1.Append { -+ f.Node.Overwrite = util.BoolPStrict(false) -+ } -+ -+ file := types.File{ -+ Node: translateNode(f.Node, m), -+ FileEmbedded1: types.FileEmbedded1{ -+ Mode: f.Mode, -+ }, -+ } -+ c := types.Resource{ -+ Compression: util.StrP(f.Contents.Compression), -+ Source: util.StrPStrict(f.Contents.Source), -+ HTTPHeaders: translateHTTPHeaders(f.Contents.HTTPHeaders), -+ } -+ c.Verification.Hash = f.FileEmbedded1.Contents.Verification.Hash -+ -+ if f.Append { -+ file.Append = []types.Resource{c} -+ } else { -+ file.Contents = c -+ } -+ ret = append(ret, file) -+ } -+ return -+} -+ -+func translateNetworkd(units []old.Networkdunit, m map[string]string) []types.File { -+ var ret []types.File -+ -+ for _, u := range units { -+ if u.Contents != "" { -+ file := types.File{ -+ Node: types.Node{ -+ // 2.x files are overwrite by default -+ Overwrite: util.BoolP(true), -+ }, -+ FileEmbedded1: types.FileEmbedded1{ -+ // Ignition default file permission -+ Mode: util.IntP(int(0644)), -+ }, -+ } -+ // path /etc/systemd/network is hardcoded in Ignition2.x codebase. -+ // TODO: customize this path at compilation time. -+ file.Node.Path = filepath.Join(m["root"], "/etc/systemd/network", u.Name) -+ -+ // URL encoding unit content to follow 'data' format - we could use base64 also. -+ file.FileEmbedded1.Contents.Source = util.StrPStrict("data:," + url.QueryEscape(u.Contents)) -+ -+ ret = append(ret, file) -+ } -+ -+ for _, d := range u.Dropins { -+ file := types.File{ -+ Node: types.Node{ -+ // 2.x files are overwrite by default -+ Overwrite: util.BoolP(true), -+ }, -+ FileEmbedded1: types.FileEmbedded1{ -+ // Ignition default file permission -+ Mode: util.IntP(int(0644)), -+ }, -+ } -+ -+ file.Node.Path = filepath.Join(m["root"], "/etc/systemd/network", string(u.Name)+".d", d.Name) -+ file.FileEmbedded1.Contents.Source = util.StrPStrict("data:," + url.QueryEscape(d.Contents)) -+ -+ ret = append(ret, file) -+ } -+ } -+ -+ return ret -+} -+ -+func translateLinks(links []old.Link, m map[string]string) (ret []types.Link) { -+ for _, l := range links { -+ ret = append(ret, types.Link{ -+ Node: translateNode(l.Node, m), -+ LinkEmbedded1: types.LinkEmbedded1{ -+ Hard: util.BoolP(l.Hard), -+ Target: l.Target, -+ }, -+ }) -+ } -+ return -+} -+ -+func translateDirectories(dirs []old.Directory, m map[string]string) (ret []types.Directory) { -+ for _, d := range dirs { -+ ret = append(ret, types.Directory{ -+ Node: translateNode(d.Node, m), -+ DirectoryEmbedded1: types.DirectoryEmbedded1{ -+ Mode: d.Mode, -+ }, -+ }) -+ } -+ return -+} -+ -+// RemoveDuplicateFilesUnitsUsers is a helper function that removes duplicated files/units/users -+// from spec v2 config, since neither spec v3 nor the translator function allow for duplicate -+// file entries in the config. -+// This functionality is not included in the Translate function and has some limitations, but -+// may be useful in cases where configuration has to be sanitized before translation. -+// For duplicates, it takes ordering into consideration by taking the file/unit contents from -+// the slice with the highest index value, which is assumed to be the latest revision. -+// Unit dropins are concat'ed, i.e. if no duplicate dropin of the same name exists it is added -+// to the list of dropins of the deduplicated unit definition. -+// The function will fail if a non-root filesystem is declared on any file. -+// It will also fail if file appendices are encountered. -+func RemoveDuplicateFilesUnitsUsers(cfg old.Config) (old.Config, error) { -+ files := cfg.Storage.Files -+ units := cfg.Systemd.Units -+ users := cfg.Passwd.Users -+ -+ filePathMap := map[string]bool{} -+ var outFiles []old.File -+ // range from highest to lowest index -+ for i := len(files) - 1; i >= 0; i-- { -+ if files[i].Filesystem != "root" { -+ return old.Config{}, errors.New("cannot dedupe set of files on non-root filesystem") -+ } -+ if files[i].Append { -+ return old.Config{}, errors.New("cannot dedupe set of files that contains appendices") -+ } -+ path := files[i].Path -+ if _, isDup := filePathMap[path]; isDup { -+ // dupes are ignored -+ continue -+ } -+ // append unique file -+ outFiles = append(outFiles, files[i]) -+ filePathMap[path] = true -+ } -+ -+ unitNameMap := map[string]bool{} -+ var outUnits []old.Unit -+ // range from highest to lowest index -+ for i := len(units) - 1; i >= 0; i-- { -+ unitName := units[i].Name -+ if _, isDup := unitNameMap[unitName]; isDup { -+ // this is a duplicated unit by name -+ if len(units[i].Dropins) > 0 { -+ for j := range outUnits { -+ if outUnits[j].Name == unitName { -+ // outUnits[j] is the highest priority entry with this unit name -+ // now loop over the new unit's dropins and append it if the name -+ // isn't duplicated in the existing unit's dropins -+ for _, newDropin := range units[i].Dropins { -+ hasExistingDropin := false -+ for _, existingDropin := range outUnits[j].Dropins { -+ if existingDropin.Name == newDropin.Name { -+ hasExistingDropin = true -+ break -+ } -+ } -+ if !hasExistingDropin { -+ outUnits[j].Dropins = append(outUnits[j].Dropins, newDropin) -+ } -+ } -+ } -+ } -+ } -+ } else { -+ // append unique unit -+ outUnits = append(outUnits, units[i]) -+ unitNameMap[unitName] = true -+ } -+ } -+ -+ // Concat sshkey sections into the newest passwdUser in the list -+ // Only the SSHAuthorizedKeys of a duplicate user are considered, -+ // all other fields are ignored. -+ userNameMap := map[string]bool{} -+ var outUsers []old.PasswdUser -+ // range from highest to lowest index -+ for i := len(users) - 1; i >= 0; i-- { -+ userName := users[i].Name -+ if _, isDup := userNameMap[userName]; isDup { -+ // this is a duplicated user by name, append keys to existing user -+ for j := range outUsers { -+ if outUsers[j].Name == userName { -+ outUsers[j].SSHAuthorizedKeys = append(outUsers[j].SSHAuthorizedKeys, users[i].SSHAuthorizedKeys...) -+ } -+ } -+ } else { -+ // append unique users -+ outUsers = append(outUsers, users[i]) -+ userNameMap[userName] = true -+ } -+ } -+ -+ // outFiles, outUnits, and outUsers should now have all duplication removed -+ cfg.Storage.Files = outFiles -+ cfg.Systemd.Units = outUnits -+ cfg.Passwd.Users = outUsers -+ -+ return cfg, nil -+} -diff --git a/vendor/github.com/flatcar/ign-converter/util/util.go b/vendor/github.com/flatcar/ign-converter/util/util.go -new file mode 100644 -index 00000000..347d148c ---- /dev/null -+++ b/vendor/github.com/flatcar/ign-converter/util/util.go -@@ -0,0 +1,166 @@ -+// Copyright 2020 Red Hat, Inc. -+// -+// Licensed under the Apache License, Version 2.0 (the "License"); -+// you may not use this file except in compliance with the License. -+// You may obtain a copy of the License at -+// -+// http://www.apache.org/licenses/LICENSE-2.0 -+// -+// Unless required by applicable law or agreed to in writing, software -+// distributed under the License is distributed on an "AS IS" BASIS, -+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -+// See the License for the specific language governing permissions and -+// limitations under the License. -+ -+package util -+ -+import ( -+ "fmt" -+ "strconv" -+ "strings" -+ "sync" -+) -+ -+// Error definitions -+ -+// NoFilesystemError type for when a filesystem is referenced in a config but there's no mapping to where -+// it should be mounted (i.e. `path` in v3+ configs) -+type NoFilesystemError string -+ -+func (e NoFilesystemError) Error() string { -+ return fmt.Sprintf("Config defined filesystem %q but no mapping was defined."+ -+ "Please specify a path to be used as the filesystem mountpoint.", string(e)) -+} -+ -+// DuplicateInodeError is for when files, directories, or links both specify the same path -+type DuplicateInodeError struct { -+ Old string // first occurance of the path -+ New string // second occurance of the path -+} -+ -+func (e DuplicateInodeError) Error() string { -+ return fmt.Sprintf("Config has conflicting inodes: %q and %q. All files, directories and links must specify a unique `path`.", e.Old, e.New) -+} -+ -+// UsesOwnLinkError is for when files, directories, or links use symlinks defined in the config -+// in their own path. This is disallowed in v3+ configs. -+type UsesOwnLinkError struct { -+ LinkPath string -+ Name string -+} -+ -+func (e UsesOwnLinkError) Error() string { -+ return fmt.Sprintf("%s uses link defined in config %q. Please use a link not defined in Storage:Links", e.Name, e.LinkPath) -+} -+ -+// DuplicateUnitError is for when a unit name is used twice -+type DuplicateUnitError struct { -+ Name string -+} -+ -+func (e DuplicateUnitError) Error() string { -+ return fmt.Sprintf("Config has duplicate unit name %q. All units must specify a unique `name`.", e.Name) -+} -+ -+// DuplicateDropinError is for when a unit has multiple dropins with the same name -+type DuplicateDropinError struct { -+ Unit string -+ Name string -+} -+ -+func (e DuplicateDropinError) Error() string { -+ return fmt.Sprintf("Config has duplicate dropin name %q in unit %q. All dropins must specify a unique `name`.", e.Name, e.Unit) -+} -+ -+func CheckPathUsesLink(links []string, path string) string { -+ for _, l := range links { -+ linkdir := l -+ if !strings.HasSuffix(l, "/") { -+ linkdir += "/" -+ } -+ if strings.HasPrefix(path, linkdir) && path != l { -+ return l -+ } -+ } -+ return "" -+} -+ -+func StrP(in string) *string { -+ if in == "" { -+ return nil -+ } -+ return &in -+} -+ -+func StrPStrict(in string) *string { -+ return &in -+} -+ -+func BoolP(in bool) *bool { -+ if !in { -+ return nil -+ } -+ return &in -+} -+ -+func BoolPStrict(in bool) *bool { -+ return &in -+} -+ -+func IntP(in int) *int { -+ if in == 0 { -+ return nil -+ } -+ return &in -+} -+ -+func StrV(in *string) string { -+ if in == nil { -+ return "" -+ } -+ return *in -+} -+ -+func BoolV(in *bool) bool { -+ if in == nil { -+ return false -+ } -+ return *in -+} -+ -+func IntV(in *int) int { -+ if in == nil { -+ return 0 -+ } -+ return *in -+} -+ -+var ( -+ generatedNameCounter uint64 -+ addedSuffixCounter uint64 -+ counterMutex sync.Mutex -+) -+ -+// FSGeneration generates a name and a path that will be used to feed -+// the `fsMap` in case consumer provided no entry for it in the map. -+// FSMap is required to link the filesystem from v2 to v3 with the rest of the configuration. -+func FSGeneration(name string, fsMap map[string]string) (string, error) { -+ counterMutex.Lock() -+ if len(name) == 0 { -+ generatedNameCounter += 1 -+ name = "ignition" + strconv.FormatUint(generatedNameCounter, 10) -+ } -+ -+ if _, ok := fsMap[name]; !ok { -+ addedSuffixCounter += 1 -+ if name == "oem" { -+ fsMap[name] = "/usr/share/oem" -+ } else { -+ // generate a new path -+ fsMap[name] = "/tmp/" + name + "-ign" + strconv.FormatUint(addedSuffixCounter, 10) -+ } -+ } -+ -+ counterMutex.Unlock() -+ return name, nil -+} diff --git a/vendor/github.com/flatcar/ignition/LICENSE b/vendor/github.com/flatcar/ignition/LICENSE new file mode 100644 index 00000000..e06d2081 @@ -6439,7 +5332,7 @@ index 00000000..f2b47cf9 +} diff --git a/vendor/github.com/flatcar/ignition/config/shared/validations/unit.go b/vendor/github.com/flatcar/ignition/config/shared/validations/unit.go new file mode 100644 -index 00000000..383a2c6b +index 00000000..a7061dce --- /dev/null +++ b/vendor/github.com/flatcar/ignition/config/shared/validations/unit.go @@ -0,0 +1,54 @@ @@ -6539,7 +5432,7 @@ index 00000000..7d55548f +} diff --git a/vendor/github.com/flatcar/ignition/config/util/parsingErrors.go b/vendor/github.com/flatcar/ignition/config/util/parsingErrors.go new file mode 100644 -index 00000000..fbd712f3 +index 00000000..170f20fe --- /dev/null +++ b/vendor/github.com/flatcar/ignition/config/util/parsingErrors.go @@ -0,0 +1,74 @@ @@ -6678,7 +5571,7 @@ index 00000000..7cfeb455 +} diff --git a/vendor/github.com/flatcar/ignition/config/v1/config.go b/vendor/github.com/flatcar/ignition/config/v1/config.go new file mode 100644 -index 00000000..88c46e87 +index 00000000..95803050 --- /dev/null +++ b/vendor/github.com/flatcar/ignition/config/v1/config.go @@ -0,0 +1,59 @@ @@ -6784,7 +5677,7 @@ index 00000000..3a369e4f +} diff --git a/vendor/github.com/flatcar/ignition/config/v1/types/disk.go b/vendor/github.com/flatcar/ignition/config/v1/types/disk.go new file mode 100644 -index 00000000..81c41d6d +index 00000000..d1b04748 --- /dev/null +++ b/vendor/github.com/flatcar/ignition/config/v1/types/disk.go @@ -0,0 +1,123 @@ @@ -6913,7 +5806,7 @@ index 00000000..81c41d6d +} diff --git a/vendor/github.com/flatcar/ignition/config/v1/types/file.go b/vendor/github.com/flatcar/ignition/config/v1/types/file.go new file mode 100644 -index 00000000..658affb9 +index 00000000..a77bba3a --- /dev/null +++ b/vendor/github.com/flatcar/ignition/config/v1/types/file.go @@ -0,0 +1,39 @@ @@ -6958,7 +5851,7 @@ index 00000000..658affb9 +} diff --git a/vendor/github.com/flatcar/ignition/config/v1/types/filesystem.go b/vendor/github.com/flatcar/ignition/config/v1/types/filesystem.go new file mode 100644 -index 00000000..0aa40ae7 +index 00000000..5cfbe095 --- /dev/null +++ b/vendor/github.com/flatcar/ignition/config/v1/types/filesystem.go @@ -0,0 +1,45 @@ @@ -7062,7 +5955,7 @@ index 00000000..470c7211 +} diff --git a/vendor/github.com/flatcar/ignition/config/v1/types/partition.go b/vendor/github.com/flatcar/ignition/config/v1/types/partition.go new file mode 100644 -index 00000000..86c3f810 +index 00000000..c84091ac --- /dev/null +++ b/vendor/github.com/flatcar/ignition/config/v1/types/partition.go @@ -0,0 +1,60 @@ @@ -7154,7 +6047,7 @@ index 00000000..0ffff43b +} diff --git a/vendor/github.com/flatcar/ignition/config/v1/types/path.go b/vendor/github.com/flatcar/ignition/config/v1/types/path.go new file mode 100644 -index 00000000..812318db +index 00000000..5d94af95 --- /dev/null +++ b/vendor/github.com/flatcar/ignition/config/v1/types/path.go @@ -0,0 +1,31 @@ @@ -7191,7 +6084,7 @@ index 00000000..812318db +} diff --git a/vendor/github.com/flatcar/ignition/config/v1/types/raid.go b/vendor/github.com/flatcar/ignition/config/v1/types/raid.go new file mode 100644 -index 00000000..cad9a1d2 +index 00000000..ca995cf9 --- /dev/null +++ b/vendor/github.com/flatcar/ignition/config/v1/types/raid.go @@ -0,0 +1,44 @@ @@ -7293,7 +6186,7 @@ index 00000000..97194b91 +} diff --git a/vendor/github.com/flatcar/ignition/config/v1/types/unit.go b/vendor/github.com/flatcar/ignition/config/v1/types/unit.go new file mode 100644 -index 00000000..52d45872 +index 00000000..e1e5510c --- /dev/null +++ b/vendor/github.com/flatcar/ignition/config/v1/types/unit.go @@ -0,0 +1,73 @@ @@ -7413,7 +6306,7 @@ index 00000000..f6653e27 +} diff --git a/vendor/github.com/flatcar/ignition/config/v2_0/append.go b/vendor/github.com/flatcar/ignition/config/v2_0/append.go new file mode 100644 -index 00000000..e274e1ab +index 00000000..aca0ebbf --- /dev/null +++ b/vendor/github.com/flatcar/ignition/config/v2_0/append.go @@ -0,0 +1,76 @@ @@ -7554,7 +6447,7 @@ index 00000000..9e1f2ad0 +} diff --git a/vendor/github.com/flatcar/ignition/config/v2_0/config.go b/vendor/github.com/flatcar/ignition/config/v2_0/config.go new file mode 100644 -index 00000000..b345a553 +index 00000000..dcb8e7bd --- /dev/null +++ b/vendor/github.com/flatcar/ignition/config/v2_0/config.go @@ -0,0 +1,70 @@ @@ -7630,7 +6523,7 @@ index 00000000..b345a553 +} diff --git a/vendor/github.com/flatcar/ignition/config/v2_0/translate.go b/vendor/github.com/flatcar/ignition/config/v2_0/translate.go new file mode 100644 -index 00000000..ee05d4b1 +index 00000000..f7b89c41 --- /dev/null +++ b/vendor/github.com/flatcar/ignition/config/v2_0/translate.go @@ -0,0 +1,173 @@ @@ -7809,7 +6702,7 @@ index 00000000..ee05d4b1 +} diff --git a/vendor/github.com/flatcar/ignition/config/v2_0/types/compression.go b/vendor/github.com/flatcar/ignition/config/v2_0/types/compression.go new file mode 100644 -index 00000000..a6b65a5a +index 00000000..3bc7299f --- /dev/null +++ b/vendor/github.com/flatcar/ignition/config/v2_0/types/compression.go @@ -0,0 +1,31 @@ @@ -7846,7 +6739,7 @@ index 00000000..a6b65a5a +} diff --git a/vendor/github.com/flatcar/ignition/config/v2_0/types/config.go b/vendor/github.com/flatcar/ignition/config/v2_0/types/config.go new file mode 100644 -index 00000000..996f6740 +index 00000000..208de491 --- /dev/null +++ b/vendor/github.com/flatcar/ignition/config/v2_0/types/config.go @@ -0,0 +1,87 @@ @@ -7939,7 +6832,7 @@ index 00000000..996f6740 +} diff --git a/vendor/github.com/flatcar/ignition/config/v2_0/types/disk.go b/vendor/github.com/flatcar/ignition/config/v2_0/types/disk.go new file mode 100644 -index 00000000..21334989 +index 00000000..fa508fe0 --- /dev/null +++ b/vendor/github.com/flatcar/ignition/config/v2_0/types/disk.go @@ -0,0 +1,126 @@ @@ -8071,7 +6964,7 @@ index 00000000..21334989 +} diff --git a/vendor/github.com/flatcar/ignition/config/v2_0/types/file.go b/vendor/github.com/flatcar/ignition/config/v2_0/types/file.go new file mode 100644 -index 00000000..517ed770 +index 00000000..75022732 --- /dev/null +++ b/vendor/github.com/flatcar/ignition/config/v2_0/types/file.go @@ -0,0 +1,61 @@ @@ -8138,7 +7031,7 @@ index 00000000..517ed770 +} diff --git a/vendor/github.com/flatcar/ignition/config/v2_0/types/filesystem.go b/vendor/github.com/flatcar/ignition/config/v2_0/types/filesystem.go new file mode 100644 -index 00000000..0582dd5a +index 00000000..8967918e --- /dev/null +++ b/vendor/github.com/flatcar/ignition/config/v2_0/types/filesystem.go @@ -0,0 +1,60 @@ @@ -8232,7 +7125,7 @@ index 00000000..27e51048 +} diff --git a/vendor/github.com/flatcar/ignition/config/v2_0/types/hash.go b/vendor/github.com/flatcar/ignition/config/v2_0/types/hash.go new file mode 100644 -index 00000000..530a07c6 +index 00000000..ae0edce6 --- /dev/null +++ b/vendor/github.com/flatcar/ignition/config/v2_0/types/hash.go @@ -0,0 +1,72 @@ @@ -8310,7 +7203,7 @@ index 00000000..530a07c6 +} diff --git a/vendor/github.com/flatcar/ignition/config/v2_0/types/ignition.go b/vendor/github.com/flatcar/ignition/config/v2_0/types/ignition.go new file mode 100644 -index 00000000..f16e9321 +index 00000000..d337225f --- /dev/null +++ b/vendor/github.com/flatcar/ignition/config/v2_0/types/ignition.go @@ -0,0 +1,64 @@ @@ -8405,7 +7298,7 @@ index 00000000..470c7211 +} diff --git a/vendor/github.com/flatcar/ignition/config/v2_0/types/partition.go b/vendor/github.com/flatcar/ignition/config/v2_0/types/partition.go new file mode 100644 -index 00000000..c6cb0f0c +index 00000000..37c09577 --- /dev/null +++ b/vendor/github.com/flatcar/ignition/config/v2_0/types/partition.go @@ -0,0 +1,64 @@ @@ -8501,7 +7394,7 @@ index 00000000..0ffff43b +} diff --git a/vendor/github.com/flatcar/ignition/config/v2_0/types/path.go b/vendor/github.com/flatcar/ignition/config/v2_0/types/path.go new file mode 100644 -index 00000000..b60f6ef1 +index 00000000..235fc03f --- /dev/null +++ b/vendor/github.com/flatcar/ignition/config/v2_0/types/path.go @@ -0,0 +1,35 @@ @@ -8542,7 +7435,7 @@ index 00000000..b60f6ef1 +} diff --git a/vendor/github.com/flatcar/ignition/config/v2_0/types/raid.go b/vendor/github.com/flatcar/ignition/config/v2_0/types/raid.go new file mode 100644 -index 00000000..cad9a1d2 +index 00000000..ca995cf9 --- /dev/null +++ b/vendor/github.com/flatcar/ignition/config/v2_0/types/raid.go @@ -0,0 +1,44 @@ @@ -8645,7 +7538,7 @@ index 00000000..97194b91 +} diff --git a/vendor/github.com/flatcar/ignition/config/v2_0/types/unit.go b/vendor/github.com/flatcar/ignition/config/v2_0/types/unit.go new file mode 100644 -index 00000000..a47cb2ed +index 00000000..1e6ef2b0 --- /dev/null +++ b/vendor/github.com/flatcar/ignition/config/v2_0/types/unit.go @@ -0,0 +1,115 @@ @@ -8766,7 +7659,7 @@ index 00000000..a47cb2ed +} diff --git a/vendor/github.com/flatcar/ignition/config/v2_0/types/url.go b/vendor/github.com/flatcar/ignition/config/v2_0/types/url.go new file mode 100644 -index 00000000..58cf3f66 +index 00000000..01d82e8c --- /dev/null +++ b/vendor/github.com/flatcar/ignition/config/v2_0/types/url.go @@ -0,0 +1,69 @@ @@ -8907,7 +7800,7 @@ index 00000000..b7cef403 +} diff --git a/vendor/github.com/flatcar/ignition/config/v2_1/append.go b/vendor/github.com/flatcar/ignition/config/v2_1/append.go new file mode 100644 -index 00000000..6bbac2eb +index 00000000..c4257dab --- /dev/null +++ b/vendor/github.com/flatcar/ignition/config/v2_1/append.go @@ -0,0 +1,76 @@ @@ -9048,7 +7941,7 @@ index 00000000..a019320f +} diff --git a/vendor/github.com/flatcar/ignition/config/v2_1/config.go b/vendor/github.com/flatcar/ignition/config/v2_1/config.go new file mode 100644 -index 00000000..b0e31f6e +index 00000000..cf12fe79 --- /dev/null +++ b/vendor/github.com/flatcar/ignition/config/v2_1/config.go @@ -0,0 +1,68 @@ @@ -9122,7 +8015,7 @@ index 00000000..b0e31f6e +} diff --git a/vendor/github.com/flatcar/ignition/config/v2_1/translate.go b/vendor/github.com/flatcar/ignition/config/v2_1/translate.go new file mode 100644 -index 00000000..97fe2260 +index 00000000..ae8a4d35 --- /dev/null +++ b/vendor/github.com/flatcar/ignition/config/v2_1/translate.go @@ -0,0 +1,236 @@ @@ -9364,7 +8257,7 @@ index 00000000..97fe2260 +} diff --git a/vendor/github.com/flatcar/ignition/config/v2_1/types/config.go b/vendor/github.com/flatcar/ignition/config/v2_1/types/config.go new file mode 100644 -index 00000000..ebcb03ab +index 00000000..4a931b61 --- /dev/null +++ b/vendor/github.com/flatcar/ignition/config/v2_1/types/config.go @@ -0,0 +1,91 @@ @@ -9461,7 +8354,7 @@ index 00000000..ebcb03ab +} diff --git a/vendor/github.com/flatcar/ignition/config/v2_1/types/directory.go b/vendor/github.com/flatcar/ignition/config/v2_1/types/directory.go new file mode 100644 -index 00000000..5bc08f9d +index 00000000..d6767c07 --- /dev/null +++ b/vendor/github.com/flatcar/ignition/config/v2_1/types/directory.go @@ -0,0 +1,30 @@ @@ -9497,7 +8390,7 @@ index 00000000..5bc08f9d +} diff --git a/vendor/github.com/flatcar/ignition/config/v2_1/types/disk.go b/vendor/github.com/flatcar/ignition/config/v2_1/types/disk.go new file mode 100644 -index 00000000..73c1404e +index 00000000..ecc84a3e --- /dev/null +++ b/vendor/github.com/flatcar/ignition/config/v2_1/types/disk.go @@ -0,0 +1,128 @@ @@ -9631,7 +8524,7 @@ index 00000000..73c1404e +} diff --git a/vendor/github.com/flatcar/ignition/config/v2_1/types/file.go b/vendor/github.com/flatcar/ignition/config/v2_1/types/file.go new file mode 100644 -index 00000000..266f8342 +index 00000000..12c01937 --- /dev/null +++ b/vendor/github.com/flatcar/ignition/config/v2_1/types/file.go @@ -0,0 +1,56 @@ @@ -9693,7 +8586,7 @@ index 00000000..266f8342 +} diff --git a/vendor/github.com/flatcar/ignition/config/v2_1/types/filesystem.go b/vendor/github.com/flatcar/ignition/config/v2_1/types/filesystem.go new file mode 100644 -index 00000000..171c7572 +index 00000000..da3e766a --- /dev/null +++ b/vendor/github.com/flatcar/ignition/config/v2_1/types/filesystem.go @@ -0,0 +1,144 @@ @@ -9843,7 +8736,7 @@ index 00000000..171c7572 +} diff --git a/vendor/github.com/flatcar/ignition/config/v2_1/types/ignition.go b/vendor/github.com/flatcar/ignition/config/v2_1/types/ignition.go new file mode 100644 -index 00000000..513012e1 +index 00000000..e7a0d520 --- /dev/null +++ b/vendor/github.com/flatcar/ignition/config/v2_1/types/ignition.go @@ -0,0 +1,52 @@ @@ -9901,7 +8794,7 @@ index 00000000..513012e1 +} diff --git a/vendor/github.com/flatcar/ignition/config/v2_1/types/mode.go b/vendor/github.com/flatcar/ignition/config/v2_1/types/mode.go new file mode 100644 -index 00000000..d452c64d +index 00000000..adbb2ba2 --- /dev/null +++ b/vendor/github.com/flatcar/ignition/config/v2_1/types/mode.go @@ -0,0 +1,26 @@ @@ -9933,7 +8826,7 @@ index 00000000..d452c64d +} diff --git a/vendor/github.com/flatcar/ignition/config/v2_1/types/node.go b/vendor/github.com/flatcar/ignition/config/v2_1/types/node.go new file mode 100644 -index 00000000..e6071e99 +index 00000000..dd0489c0 --- /dev/null +++ b/vendor/github.com/flatcar/ignition/config/v2_1/types/node.go @@ -0,0 +1,73 @@ @@ -10012,7 +8905,7 @@ index 00000000..e6071e99 +} diff --git a/vendor/github.com/flatcar/ignition/config/v2_1/types/partition.go b/vendor/github.com/flatcar/ignition/config/v2_1/types/partition.go new file mode 100644 -index 00000000..23c3594d +index 00000000..08e16dc2 --- /dev/null +++ b/vendor/github.com/flatcar/ignition/config/v2_1/types/partition.go @@ -0,0 +1,77 @@ @@ -10095,7 +8988,7 @@ index 00000000..23c3594d +} diff --git a/vendor/github.com/flatcar/ignition/config/v2_1/types/passwd.go b/vendor/github.com/flatcar/ignition/config/v2_1/types/passwd.go new file mode 100644 -index 00000000..5ca03186 +index 00000000..095ddc5e --- /dev/null +++ b/vendor/github.com/flatcar/ignition/config/v2_1/types/passwd.go @@ -0,0 +1,67 @@ @@ -10168,7 +9061,7 @@ index 00000000..5ca03186 +} diff --git a/vendor/github.com/flatcar/ignition/config/v2_1/types/path.go b/vendor/github.com/flatcar/ignition/config/v2_1/types/path.go new file mode 100644 -index 00000000..a478fd3b +index 00000000..f52ec956 --- /dev/null +++ b/vendor/github.com/flatcar/ignition/config/v2_1/types/path.go @@ -0,0 +1,28 @@ @@ -10202,7 +9095,7 @@ index 00000000..a478fd3b +} diff --git a/vendor/github.com/flatcar/ignition/config/v2_1/types/raid.go b/vendor/github.com/flatcar/ignition/config/v2_1/types/raid.go new file mode 100644 -index 00000000..d2b49fc1 +index 00000000..87a10ee7 --- /dev/null +++ b/vendor/github.com/flatcar/ignition/config/v2_1/types/raid.go @@ -0,0 +1,57 @@ @@ -10492,7 +9385,7 @@ index 00000000..e0caed5e +} diff --git a/vendor/github.com/flatcar/ignition/config/v2_1/types/unit.go b/vendor/github.com/flatcar/ignition/config/v2_1/types/unit.go new file mode 100644 -index 00000000..f5cd1142 +index 00000000..76c77e82 --- /dev/null +++ b/vendor/github.com/flatcar/ignition/config/v2_1/types/unit.go @@ -0,0 +1,109 @@ @@ -10607,7 +9500,7 @@ index 00000000..f5cd1142 +} diff --git a/vendor/github.com/flatcar/ignition/config/v2_1/types/url.go b/vendor/github.com/flatcar/ignition/config/v2_1/types/url.go new file mode 100644 -index 00000000..f6ff3606 +index 00000000..e4156582 --- /dev/null +++ b/vendor/github.com/flatcar/ignition/config/v2_1/types/url.go @@ -0,0 +1,52 @@ @@ -10665,7 +9558,7 @@ index 00000000..f6ff3606 +} diff --git a/vendor/github.com/flatcar/ignition/config/v2_1/types/verification.go b/vendor/github.com/flatcar/ignition/config/v2_1/types/verification.go new file mode 100644 -index 00000000..6f77de23 +index 00000000..cb06d76e --- /dev/null +++ b/vendor/github.com/flatcar/ignition/config/v2_1/types/verification.go @@ -0,0 +1,77 @@ @@ -10748,7 +9641,7 @@ index 00000000..6f77de23 +} diff --git a/vendor/github.com/flatcar/ignition/config/v2_2/append.go b/vendor/github.com/flatcar/ignition/config/v2_2/append.go new file mode 100644 -index 00000000..d9c75dcc +index 00000000..f3598eaf --- /dev/null +++ b/vendor/github.com/flatcar/ignition/config/v2_2/append.go @@ -0,0 +1,76 @@ @@ -10889,7 +9782,7 @@ index 00000000..36a54393 +} diff --git a/vendor/github.com/flatcar/ignition/config/v2_2/config.go b/vendor/github.com/flatcar/ignition/config/v2_2/config.go new file mode 100644 -index 00000000..def3dba4 +index 00000000..7df84501 --- /dev/null +++ b/vendor/github.com/flatcar/ignition/config/v2_2/config.go @@ -0,0 +1,71 @@ @@ -10966,7 +9859,7 @@ index 00000000..def3dba4 +} diff --git a/vendor/github.com/flatcar/ignition/config/v2_2/translate.go b/vendor/github.com/flatcar/ignition/config/v2_2/translate.go new file mode 100644 -index 00000000..94c70a19 +index 00000000..e591aecc --- /dev/null +++ b/vendor/github.com/flatcar/ignition/config/v2_2/translate.go @@ -0,0 +1,354 @@ @@ -11326,7 +10219,7 @@ index 00000000..94c70a19 +} diff --git a/vendor/github.com/flatcar/ignition/config/v2_2/types/ca.go b/vendor/github.com/flatcar/ignition/config/v2_2/types/ca.go new file mode 100644 -index 00000000..d5045ff4 +index 00000000..313b3ad5 --- /dev/null +++ b/vendor/github.com/flatcar/ignition/config/v2_2/types/ca.go @@ -0,0 +1,27 @@ @@ -11359,7 +10252,7 @@ index 00000000..d5045ff4 +} diff --git a/vendor/github.com/flatcar/ignition/config/v2_2/types/config.go b/vendor/github.com/flatcar/ignition/config/v2_2/types/config.go new file mode 100644 -index 00000000..0f98970c +index 00000000..d6af950d --- /dev/null +++ b/vendor/github.com/flatcar/ignition/config/v2_2/types/config.go @@ -0,0 +1,91 @@ @@ -11456,7 +10349,7 @@ index 00000000..0f98970c +} diff --git a/vendor/github.com/flatcar/ignition/config/v2_2/types/directory.go b/vendor/github.com/flatcar/ignition/config/v2_2/types/directory.go new file mode 100644 -index 00000000..a86fefcb +index 00000000..50ded7dd --- /dev/null +++ b/vendor/github.com/flatcar/ignition/config/v2_2/types/directory.go @@ -0,0 +1,37 @@ @@ -11499,7 +10392,7 @@ index 00000000..a86fefcb +} diff --git a/vendor/github.com/flatcar/ignition/config/v2_2/types/disk.go b/vendor/github.com/flatcar/ignition/config/v2_2/types/disk.go new file mode 100644 -index 00000000..73c1404e +index 00000000..ecc84a3e --- /dev/null +++ b/vendor/github.com/flatcar/ignition/config/v2_2/types/disk.go @@ -0,0 +1,128 @@ @@ -11633,7 +10526,7 @@ index 00000000..73c1404e +} diff --git a/vendor/github.com/flatcar/ignition/config/v2_2/types/file.go b/vendor/github.com/flatcar/ignition/config/v2_2/types/file.go new file mode 100644 -index 00000000..96236f37 +index 00000000..d5ab7437 --- /dev/null +++ b/vendor/github.com/flatcar/ignition/config/v2_2/types/file.go @@ -0,0 +1,69 @@ @@ -11708,7 +10601,7 @@ index 00000000..96236f37 +} diff --git a/vendor/github.com/flatcar/ignition/config/v2_2/types/filesystem.go b/vendor/github.com/flatcar/ignition/config/v2_2/types/filesystem.go new file mode 100644 -index 00000000..171c7572 +index 00000000..da3e766a --- /dev/null +++ b/vendor/github.com/flatcar/ignition/config/v2_2/types/filesystem.go @@ -0,0 +1,144 @@ @@ -11858,7 +10751,7 @@ index 00000000..171c7572 +} diff --git a/vendor/github.com/flatcar/ignition/config/v2_2/types/ignition.go b/vendor/github.com/flatcar/ignition/config/v2_2/types/ignition.go new file mode 100644 -index 00000000..513012e1 +index 00000000..e7a0d520 --- /dev/null +++ b/vendor/github.com/flatcar/ignition/config/v2_2/types/ignition.go @@ -0,0 +1,52 @@ @@ -11916,7 +10809,7 @@ index 00000000..513012e1 +} diff --git a/vendor/github.com/flatcar/ignition/config/v2_2/types/mode.go b/vendor/github.com/flatcar/ignition/config/v2_2/types/mode.go new file mode 100644 -index 00000000..e0a04917 +index 00000000..b746217c --- /dev/null +++ b/vendor/github.com/flatcar/ignition/config/v2_2/types/mode.go @@ -0,0 +1,26 @@ @@ -11948,7 +10841,7 @@ index 00000000..e0a04917 +} diff --git a/vendor/github.com/flatcar/ignition/config/v2_2/types/node.go b/vendor/github.com/flatcar/ignition/config/v2_2/types/node.go new file mode 100644 -index 00000000..e6071e99 +index 00000000..dd0489c0 --- /dev/null +++ b/vendor/github.com/flatcar/ignition/config/v2_2/types/node.go @@ -0,0 +1,73 @@ @@ -12027,7 +10920,7 @@ index 00000000..e6071e99 +} diff --git a/vendor/github.com/flatcar/ignition/config/v2_2/types/partition.go b/vendor/github.com/flatcar/ignition/config/v2_2/types/partition.go new file mode 100644 -index 00000000..23c3594d +index 00000000..08e16dc2 --- /dev/null +++ b/vendor/github.com/flatcar/ignition/config/v2_2/types/partition.go @@ -0,0 +1,77 @@ @@ -12110,7 +11003,7 @@ index 00000000..23c3594d +} diff --git a/vendor/github.com/flatcar/ignition/config/v2_2/types/passwd.go b/vendor/github.com/flatcar/ignition/config/v2_2/types/passwd.go new file mode 100644 -index 00000000..5ca03186 +index 00000000..095ddc5e --- /dev/null +++ b/vendor/github.com/flatcar/ignition/config/v2_2/types/passwd.go @@ -0,0 +1,67 @@ @@ -12183,7 +11076,7 @@ index 00000000..5ca03186 +} diff --git a/vendor/github.com/flatcar/ignition/config/v2_2/types/path.go b/vendor/github.com/flatcar/ignition/config/v2_2/types/path.go new file mode 100644 -index 00000000..a478fd3b +index 00000000..f52ec956 --- /dev/null +++ b/vendor/github.com/flatcar/ignition/config/v2_2/types/path.go @@ -0,0 +1,28 @@ @@ -12217,7 +11110,7 @@ index 00000000..a478fd3b +} diff --git a/vendor/github.com/flatcar/ignition/config/v2_2/types/raid.go b/vendor/github.com/flatcar/ignition/config/v2_2/types/raid.go new file mode 100644 -index 00000000..d2b49fc1 +index 00000000..87a10ee7 --- /dev/null +++ b/vendor/github.com/flatcar/ignition/config/v2_2/types/raid.go @@ -0,0 +1,57 @@ @@ -12532,7 +11425,7 @@ index 00000000..4b32b337 +} diff --git a/vendor/github.com/flatcar/ignition/config/v2_2/types/unit.go b/vendor/github.com/flatcar/ignition/config/v2_2/types/unit.go new file mode 100644 -index 00000000..7911c92f +index 00000000..3d57428e --- /dev/null +++ b/vendor/github.com/flatcar/ignition/config/v2_2/types/unit.go @@ -0,0 +1,131 @@ @@ -12669,7 +11562,7 @@ index 00000000..7911c92f +} diff --git a/vendor/github.com/flatcar/ignition/config/v2_2/types/url.go b/vendor/github.com/flatcar/ignition/config/v2_2/types/url.go new file mode 100644 -index 00000000..6d25e801 +index 00000000..aedd9a56 --- /dev/null +++ b/vendor/github.com/flatcar/ignition/config/v2_2/types/url.go @@ -0,0 +1,53 @@ @@ -12728,7 +11621,7 @@ index 00000000..6d25e801 +} diff --git a/vendor/github.com/flatcar/ignition/config/v2_2/types/verification.go b/vendor/github.com/flatcar/ignition/config/v2_2/types/verification.go new file mode 100644 -index 00000000..6f77de23 +index 00000000..cb06d76e --- /dev/null +++ b/vendor/github.com/flatcar/ignition/config/v2_2/types/verification.go @@ -0,0 +1,77 @@ @@ -12811,7 +11704,7 @@ index 00000000..6f77de23 +} diff --git a/vendor/github.com/flatcar/ignition/config/v2_3/append.go b/vendor/github.com/flatcar/ignition/config/v2_3/append.go new file mode 100644 -index 00000000..12e2993e +index 00000000..2d099087 --- /dev/null +++ b/vendor/github.com/flatcar/ignition/config/v2_3/append.go @@ -0,0 +1,76 @@ @@ -12952,7 +11845,7 @@ index 00000000..3b83fbd9 +} diff --git a/vendor/github.com/flatcar/ignition/config/v2_3/config.go b/vendor/github.com/flatcar/ignition/config/v2_3/config.go new file mode 100644 -index 00000000..e3a042c2 +index 00000000..4693547a --- /dev/null +++ b/vendor/github.com/flatcar/ignition/config/v2_3/config.go @@ -0,0 +1,70 @@ @@ -13028,7 +11921,7 @@ index 00000000..e3a042c2 +} diff --git a/vendor/github.com/flatcar/ignition/config/v2_3/translate.go b/vendor/github.com/flatcar/ignition/config/v2_3/translate.go new file mode 100644 -index 00000000..e14dda0a +index 00000000..7ab66d7d --- /dev/null +++ b/vendor/github.com/flatcar/ignition/config/v2_3/translate.go @@ -0,0 +1,380 @@ @@ -13414,7 +12307,7 @@ index 00000000..e14dda0a +} diff --git a/vendor/github.com/flatcar/ignition/config/v2_3/types/ca.go b/vendor/github.com/flatcar/ignition/config/v2_3/types/ca.go new file mode 100644 -index 00000000..d5045ff4 +index 00000000..313b3ad5 --- /dev/null +++ b/vendor/github.com/flatcar/ignition/config/v2_3/types/ca.go @@ -0,0 +1,27 @@ @@ -13447,7 +12340,7 @@ index 00000000..d5045ff4 +} diff --git a/vendor/github.com/flatcar/ignition/config/v2_3/types/config.go b/vendor/github.com/flatcar/ignition/config/v2_3/types/config.go new file mode 100644 -index 00000000..8067cc04 +index 00000000..0247fcc3 --- /dev/null +++ b/vendor/github.com/flatcar/ignition/config/v2_3/types/config.go @@ -0,0 +1,91 @@ @@ -13544,7 +12437,7 @@ index 00000000..8067cc04 +} diff --git a/vendor/github.com/flatcar/ignition/config/v2_3/types/directory.go b/vendor/github.com/flatcar/ignition/config/v2_3/types/directory.go new file mode 100644 -index 00000000..a86fefcb +index 00000000..50ded7dd --- /dev/null +++ b/vendor/github.com/flatcar/ignition/config/v2_3/types/directory.go @@ -0,0 +1,37 @@ @@ -13587,7 +12480,7 @@ index 00000000..a86fefcb +} diff --git a/vendor/github.com/flatcar/ignition/config/v2_3/types/disk.go b/vendor/github.com/flatcar/ignition/config/v2_3/types/disk.go new file mode 100644 -index 00000000..67cab984 +index 00000000..9af1ca19 --- /dev/null +++ b/vendor/github.com/flatcar/ignition/config/v2_3/types/disk.go @@ -0,0 +1,164 @@ @@ -13757,7 +12650,7 @@ index 00000000..67cab984 +} diff --git a/vendor/github.com/flatcar/ignition/config/v2_3/types/file.go b/vendor/github.com/flatcar/ignition/config/v2_3/types/file.go new file mode 100644 -index 00000000..6e2a0c7a +index 00000000..b59d08c3 --- /dev/null +++ b/vendor/github.com/flatcar/ignition/config/v2_3/types/file.go @@ -0,0 +1,71 @@ @@ -13834,7 +12727,7 @@ index 00000000..6e2a0c7a +} diff --git a/vendor/github.com/flatcar/ignition/config/v2_3/types/filesystem.go b/vendor/github.com/flatcar/ignition/config/v2_3/types/filesystem.go new file mode 100644 -index 00000000..ccc71660 +index 00000000..9226e373 --- /dev/null +++ b/vendor/github.com/flatcar/ignition/config/v2_3/types/filesystem.go @@ -0,0 +1,146 @@ @@ -13986,7 +12879,7 @@ index 00000000..ccc71660 +} diff --git a/vendor/github.com/flatcar/ignition/config/v2_3/types/ignition.go b/vendor/github.com/flatcar/ignition/config/v2_3/types/ignition.go new file mode 100644 -index 00000000..513012e1 +index 00000000..e7a0d520 --- /dev/null +++ b/vendor/github.com/flatcar/ignition/config/v2_3/types/ignition.go @@ -0,0 +1,52 @@ @@ -14044,7 +12937,7 @@ index 00000000..513012e1 +} diff --git a/vendor/github.com/flatcar/ignition/config/v2_3/types/mode.go b/vendor/github.com/flatcar/ignition/config/v2_3/types/mode.go new file mode 100644 -index 00000000..e0a04917 +index 00000000..b746217c --- /dev/null +++ b/vendor/github.com/flatcar/ignition/config/v2_3/types/mode.go @@ -0,0 +1,26 @@ @@ -14076,7 +12969,7 @@ index 00000000..e0a04917 +} diff --git a/vendor/github.com/flatcar/ignition/config/v2_3/types/node.go b/vendor/github.com/flatcar/ignition/config/v2_3/types/node.go new file mode 100644 -index 00000000..e6071e99 +index 00000000..dd0489c0 --- /dev/null +++ b/vendor/github.com/flatcar/ignition/config/v2_3/types/node.go @@ -0,0 +1,73 @@ @@ -14155,7 +13048,7 @@ index 00000000..e6071e99 +} diff --git a/vendor/github.com/flatcar/ignition/config/v2_3/types/partition.go b/vendor/github.com/flatcar/ignition/config/v2_3/types/partition.go new file mode 100644 -index 00000000..e2b0736e +index 00000000..99a993e9 --- /dev/null +++ b/vendor/github.com/flatcar/ignition/config/v2_3/types/partition.go @@ -0,0 +1,112 @@ @@ -14273,7 +13166,7 @@ index 00000000..e2b0736e +} diff --git a/vendor/github.com/flatcar/ignition/config/v2_3/types/passwd.go b/vendor/github.com/flatcar/ignition/config/v2_3/types/passwd.go new file mode 100644 -index 00000000..5ca03186 +index 00000000..095ddc5e --- /dev/null +++ b/vendor/github.com/flatcar/ignition/config/v2_3/types/passwd.go @@ -0,0 +1,67 @@ @@ -14346,7 +13239,7 @@ index 00000000..5ca03186 +} diff --git a/vendor/github.com/flatcar/ignition/config/v2_3/types/path.go b/vendor/github.com/flatcar/ignition/config/v2_3/types/path.go new file mode 100644 -index 00000000..a478fd3b +index 00000000..f52ec956 --- /dev/null +++ b/vendor/github.com/flatcar/ignition/config/v2_3/types/path.go @@ -0,0 +1,28 @@ @@ -14380,7 +13273,7 @@ index 00000000..a478fd3b +} diff --git a/vendor/github.com/flatcar/ignition/config/v2_3/types/raid.go b/vendor/github.com/flatcar/ignition/config/v2_3/types/raid.go new file mode 100644 -index 00000000..d2b49fc1 +index 00000000..87a10ee7 --- /dev/null +++ b/vendor/github.com/flatcar/ignition/config/v2_3/types/raid.go @@ -0,0 +1,57 @@ @@ -14699,7 +13592,7 @@ index 00000000..5f91b71e +} diff --git a/vendor/github.com/flatcar/ignition/config/v2_3/types/unit.go b/vendor/github.com/flatcar/ignition/config/v2_3/types/unit.go new file mode 100644 -index 00000000..7911c92f +index 00000000..3d57428e --- /dev/null +++ b/vendor/github.com/flatcar/ignition/config/v2_3/types/unit.go @@ -0,0 +1,131 @@ @@ -14836,7 +13729,7 @@ index 00000000..7911c92f +} diff --git a/vendor/github.com/flatcar/ignition/config/v2_3/types/url.go b/vendor/github.com/flatcar/ignition/config/v2_3/types/url.go new file mode 100644 -index 00000000..6d25e801 +index 00000000..aedd9a56 --- /dev/null +++ b/vendor/github.com/flatcar/ignition/config/v2_3/types/url.go @@ -0,0 +1,53 @@ @@ -14895,7 +13788,7 @@ index 00000000..6d25e801 +} diff --git a/vendor/github.com/flatcar/ignition/config/v2_3/types/verification.go b/vendor/github.com/flatcar/ignition/config/v2_3/types/verification.go new file mode 100644 -index 00000000..6f77de23 +index 00000000..cb06d76e --- /dev/null +++ b/vendor/github.com/flatcar/ignition/config/v2_3/types/verification.go @@ -0,0 +1,77 @@ @@ -14978,7 +13871,7 @@ index 00000000..6f77de23 +} diff --git a/vendor/github.com/flatcar/ignition/config/v2_4/append.go b/vendor/github.com/flatcar/ignition/config/v2_4/append.go new file mode 100644 -index 00000000..5246f7dd +index 00000000..8df08d42 --- /dev/null +++ b/vendor/github.com/flatcar/ignition/config/v2_4/append.go @@ -0,0 +1,76 @@ @@ -15119,7 +14012,7 @@ index 00000000..0c428e62 +} diff --git a/vendor/github.com/flatcar/ignition/config/v2_4/config.go b/vendor/github.com/flatcar/ignition/config/v2_4/config.go new file mode 100644 -index 00000000..27d3c0c9 +index 00000000..e6120bda --- /dev/null +++ b/vendor/github.com/flatcar/ignition/config/v2_4/config.go @@ -0,0 +1,70 @@ @@ -15195,7 +14088,7 @@ index 00000000..27d3c0c9 +} diff --git a/vendor/github.com/flatcar/ignition/config/v2_4/translate.go b/vendor/github.com/flatcar/ignition/config/v2_4/translate.go new file mode 100644 -index 00000000..770eee61 +index 00000000..357015a8 --- /dev/null +++ b/vendor/github.com/flatcar/ignition/config/v2_4/translate.go @@ -0,0 +1,398 @@ @@ -15599,7 +14492,7 @@ index 00000000..770eee61 +} diff --git a/vendor/github.com/flatcar/ignition/config/v2_4/types/ca.go b/vendor/github.com/flatcar/ignition/config/v2_4/types/ca.go new file mode 100644 -index 00000000..3955fd22 +index 00000000..5b39e7a9 --- /dev/null +++ b/vendor/github.com/flatcar/ignition/config/v2_4/types/ca.go @@ -0,0 +1,58 @@ @@ -15663,7 +14556,7 @@ index 00000000..3955fd22 +} diff --git a/vendor/github.com/flatcar/ignition/config/v2_4/types/config.go b/vendor/github.com/flatcar/ignition/config/v2_4/types/config.go new file mode 100644 -index 00000000..ceb79e9e +index 00000000..0d2fa7fa --- /dev/null +++ b/vendor/github.com/flatcar/ignition/config/v2_4/types/config.go @@ -0,0 +1,91 @@ @@ -15760,7 +14653,7 @@ index 00000000..ceb79e9e +} diff --git a/vendor/github.com/flatcar/ignition/config/v2_4/types/directory.go b/vendor/github.com/flatcar/ignition/config/v2_4/types/directory.go new file mode 100644 -index 00000000..a86fefcb +index 00000000..50ded7dd --- /dev/null +++ b/vendor/github.com/flatcar/ignition/config/v2_4/types/directory.go @@ -0,0 +1,37 @@ @@ -15803,7 +14696,7 @@ index 00000000..a86fefcb +} diff --git a/vendor/github.com/flatcar/ignition/config/v2_4/types/disk.go b/vendor/github.com/flatcar/ignition/config/v2_4/types/disk.go new file mode 100644 -index 00000000..67cab984 +index 00000000..9af1ca19 --- /dev/null +++ b/vendor/github.com/flatcar/ignition/config/v2_4/types/disk.go @@ -0,0 +1,164 @@ @@ -15973,7 +14866,7 @@ index 00000000..67cab984 +} diff --git a/vendor/github.com/flatcar/ignition/config/v2_4/types/file.go b/vendor/github.com/flatcar/ignition/config/v2_4/types/file.go new file mode 100644 -index 00000000..6bc717fe +index 00000000..45b06739 --- /dev/null +++ b/vendor/github.com/flatcar/ignition/config/v2_4/types/file.go @@ -0,0 +1,100 @@ @@ -16079,7 +14972,7 @@ index 00000000..6bc717fe +} diff --git a/vendor/github.com/flatcar/ignition/config/v2_4/types/filesystem.go b/vendor/github.com/flatcar/ignition/config/v2_4/types/filesystem.go new file mode 100644 -index 00000000..ccc71660 +index 00000000..9226e373 --- /dev/null +++ b/vendor/github.com/flatcar/ignition/config/v2_4/types/filesystem.go @@ -0,0 +1,146 @@ @@ -16231,7 +15124,7 @@ index 00000000..ccc71660 +} diff --git a/vendor/github.com/flatcar/ignition/config/v2_4/types/headers.go b/vendor/github.com/flatcar/ignition/config/v2_4/types/headers.go new file mode 100644 -index 00000000..3d34587a +index 00000000..2b3e2373 --- /dev/null +++ b/vendor/github.com/flatcar/ignition/config/v2_4/types/headers.go @@ -0,0 +1,47 @@ @@ -16284,7 +15177,7 @@ index 00000000..3d34587a +} diff --git a/vendor/github.com/flatcar/ignition/config/v2_4/types/ignition.go b/vendor/github.com/flatcar/ignition/config/v2_4/types/ignition.go new file mode 100644 -index 00000000..a6e2bc6e +index 00000000..aafacdbe --- /dev/null +++ b/vendor/github.com/flatcar/ignition/config/v2_4/types/ignition.go @@ -0,0 +1,82 @@ @@ -16372,7 +15265,7 @@ index 00000000..a6e2bc6e +} diff --git a/vendor/github.com/flatcar/ignition/config/v2_4/types/mode.go b/vendor/github.com/flatcar/ignition/config/v2_4/types/mode.go new file mode 100644 -index 00000000..e0a04917 +index 00000000..b746217c --- /dev/null +++ b/vendor/github.com/flatcar/ignition/config/v2_4/types/mode.go @@ -0,0 +1,26 @@ @@ -16404,7 +15297,7 @@ index 00000000..e0a04917 +} diff --git a/vendor/github.com/flatcar/ignition/config/v2_4/types/node.go b/vendor/github.com/flatcar/ignition/config/v2_4/types/node.go new file mode 100644 -index 00000000..e6071e99 +index 00000000..dd0489c0 --- /dev/null +++ b/vendor/github.com/flatcar/ignition/config/v2_4/types/node.go @@ -0,0 +1,73 @@ @@ -16483,7 +15376,7 @@ index 00000000..e6071e99 +} diff --git a/vendor/github.com/flatcar/ignition/config/v2_4/types/partition.go b/vendor/github.com/flatcar/ignition/config/v2_4/types/partition.go new file mode 100644 -index 00000000..e2b0736e +index 00000000..99a993e9 --- /dev/null +++ b/vendor/github.com/flatcar/ignition/config/v2_4/types/partition.go @@ -0,0 +1,112 @@ @@ -16601,7 +15494,7 @@ index 00000000..e2b0736e +} diff --git a/vendor/github.com/flatcar/ignition/config/v2_4/types/passwd.go b/vendor/github.com/flatcar/ignition/config/v2_4/types/passwd.go new file mode 100644 -index 00000000..5ca03186 +index 00000000..095ddc5e --- /dev/null +++ b/vendor/github.com/flatcar/ignition/config/v2_4/types/passwd.go @@ -0,0 +1,67 @@ @@ -16674,7 +15567,7 @@ index 00000000..5ca03186 +} diff --git a/vendor/github.com/flatcar/ignition/config/v2_4/types/path.go b/vendor/github.com/flatcar/ignition/config/v2_4/types/path.go new file mode 100644 -index 00000000..a478fd3b +index 00000000..f52ec956 --- /dev/null +++ b/vendor/github.com/flatcar/ignition/config/v2_4/types/path.go @@ -0,0 +1,28 @@ @@ -16708,7 +15601,7 @@ index 00000000..a478fd3b +} diff --git a/vendor/github.com/flatcar/ignition/config/v2_4/types/raid.go b/vendor/github.com/flatcar/ignition/config/v2_4/types/raid.go new file mode 100644 -index 00000000..d2b49fc1 +index 00000000..87a10ee7 --- /dev/null +++ b/vendor/github.com/flatcar/ignition/config/v2_4/types/raid.go @@ -0,0 +1,57 @@ @@ -17046,7 +15939,7 @@ index 00000000..4bf7ec84 +} diff --git a/vendor/github.com/flatcar/ignition/config/v2_4/types/unit.go b/vendor/github.com/flatcar/ignition/config/v2_4/types/unit.go new file mode 100644 -index 00000000..7911c92f +index 00000000..3d57428e --- /dev/null +++ b/vendor/github.com/flatcar/ignition/config/v2_4/types/unit.go @@ -0,0 +1,131 @@ @@ -17183,7 +16076,7 @@ index 00000000..7911c92f +} diff --git a/vendor/github.com/flatcar/ignition/config/v2_4/types/url.go b/vendor/github.com/flatcar/ignition/config/v2_4/types/url.go new file mode 100644 -index 00000000..6d25e801 +index 00000000..aedd9a56 --- /dev/null +++ b/vendor/github.com/flatcar/ignition/config/v2_4/types/url.go @@ -0,0 +1,53 @@ @@ -17242,7 +16135,7 @@ index 00000000..6d25e801 +} diff --git a/vendor/github.com/flatcar/ignition/config/v2_4/types/verification.go b/vendor/github.com/flatcar/ignition/config/v2_4/types/verification.go new file mode 100644 -index 00000000..6f77de23 +index 00000000..cb06d76e --- /dev/null +++ b/vendor/github.com/flatcar/ignition/config/v2_4/types/verification.go @@ -0,0 +1,77 @@ @@ -17325,7 +16218,7 @@ index 00000000..6f77de23 +} diff --git a/vendor/github.com/flatcar/ignition/config/validate/astjson/node.go b/vendor/github.com/flatcar/ignition/config/validate/astjson/node.go new file mode 100644 -index 00000000..40f24a74 +index 00000000..9875cfde --- /dev/null +++ b/vendor/github.com/flatcar/ignition/config/validate/astjson/node.go @@ -0,0 +1,73 @@ @@ -17619,7 +16512,7 @@ index 00000000..e0d4fed8 +} diff --git a/vendor/github.com/flatcar/ignition/config/validate/validate.go b/vendor/github.com/flatcar/ignition/config/validate/validate.go new file mode 100644 -index 00000000..54c036e4 +index 00000000..3363f8db --- /dev/null +++ b/vendor/github.com/flatcar/ignition/config/validate/validate.go @@ -0,0 +1,242 @@ @@ -28474,14 +27367,14 @@ index 94290692..0175eae5 100644 package norm diff --git a/vendor/modules.txt b/vendor/modules.txt -index 34bc6c6e..71ec1839 100644 +index 34bc6c6e..48416104 100644 --- a/vendor/modules.txt +++ b/vendor/modules.txt @@ -12,6 +12,8 @@ cloud.google.com/go/internal/version cloud.google.com/go/storage # github.com/BurntSushi/toml v0.3.1 github.com/BurntSushi/toml -+# github.com/ajeddeloh/go-json v0.0.0-20200220154158-5ae607161559 ++# github.com/ajeddeloh/go-json v0.0.0-20160803184958-73d058cf8437 +github.com/ajeddeloh/go-json # github.com/aws/aws-sdk-go v1.30.28 ## explicit @@ -28495,15 +27388,11 @@ index 34bc6c6e..71ec1839 100644 # github.com/coreos/go-systemd/v22 v22.0.0 ## explicit github.com/coreos/go-systemd/v22/dbus -@@ -80,6 +84,31 @@ github.com/coreos/vcontext/tree +@@ -80,6 +84,27 @@ github.com/coreos/vcontext/tree github.com/coreos/vcontext/validate # github.com/davecgh/go-spew v1.1.0 github.com/davecgh/go-spew/spew -+# github.com/flatcar/ign-converter v0.2.0 -+## explicit -+github.com/flatcar/ign-converter/translate/v24tov31 -+github.com/flatcar/ign-converter/util -+# github.com/flatcar/ignition v0.36.2-0.20220221101037-de4e6cc9bbba ++# github.com/flatcar/ignition v0.36.2 +## explicit +github.com/flatcar/ignition/config/shared/errors +github.com/flatcar/ignition/config/shared/validations @@ -28527,7 +27416,7 @@ index 34bc6c6e..71ec1839 100644 # github.com/godbus/dbus/v5 v5.0.3 github.com/godbus/dbus/v5 # github.com/golang/groupcache v0.0.0-20200121045136-8c9f03a8e57e -@@ -113,8 +142,6 @@ github.com/pin/tftp +@@ -113,8 +138,6 @@ github.com/pin/tftp github.com/pin/tftp/netascii # github.com/pmezard/go-difflib v1.0.0 github.com/pmezard/go-difflib/difflib @@ -28536,34 +27425,24 @@ index 34bc6c6e..71ec1839 100644 # github.com/spf13/pflag v1.0.6-0.20210604193023-d5e0c0615ace ## explicit github.com/spf13/pflag -@@ -149,6 +176,8 @@ go.opencensus.io/trace +@@ -149,6 +172,8 @@ go.opencensus.io/trace go.opencensus.io/trace/internal go.opencensus.io/trace/propagation go.opencensus.io/trace/tracestate -+# go4.org v0.0.0-20200104003542-c7e774b10ea0 ++# go4.org v0.0.0-20160314031811-03efcb870d84 +go4.org/errorutil # golang.org/x/lint v0.0.0-20200302205851-738671d3881b golang.org/x/lint golang.org/x/lint/golint -@@ -177,7 +206,8 @@ golang.org/x/oauth2/jwt +@@ -177,7 +202,7 @@ golang.org/x/oauth2/jwt ## explicit golang.org/x/sys/internal/unsafeheader golang.org/x/sys/unix -# golang.org/x/text v0.3.3 +# golang.org/x/text v0.3.7 -+## explicit golang.org/x/text/secure/bidirule golang.org/x/text/transform golang.org/x/text/unicode/bidi -@@ -319,6 +349,8 @@ google.golang.org/protobuf/types/known/anypb - google.golang.org/protobuf/types/known/durationpb - google.golang.org/protobuf/types/known/timestamppb - google.golang.org/protobuf/types/pluginpb -+# gopkg.in/yaml.v2 v2.4.0 -+## explicit - # gopkg.in/yaml.v3 v3.0.0-20210107192922-496545a6307b - gopkg.in/yaml.v3 - # honnef.co/go/tools v0.0.1-2020.1.4 -- 2.35.1 diff --git a/sdk_container/src/third_party/coreos-overlay/sys-apps/ignition/files/0005-config-add-ignition-translation.patch b/sdk_container/src/third_party/coreos-overlay/sys-apps/ignition/files/0005-config-add-ignition-translation.patch new file mode 100644 index 0000000000..5d5d214e6f --- /dev/null +++ b/sdk_container/src/third_party/coreos-overlay/sys-apps/ignition/files/0005-config-add-ignition-translation.patch @@ -0,0 +1,2625 @@ +From 86b42fab8a1bf218babc26176d50c54fb068bd10 Mon Sep 17 00:00:00 2001 +From: Mathieu Tortuyaux +Date: Mon, 26 Sep 2022 12:12:04 +0200 +Subject: [PATCH 05/16] config: add ignition translation + +it's a merge from flatcar/ign-converter + +Signed-off-by: Mathieu Tortuyaux +--- + config/util/translate.go | 166 +++ + config/v24tov31/v24tov31.go | 729 +++++++++++++ + config/v24tov31/v24tov31_test.go | 1692 ++++++++++++++++++++++++++++++ + 3 files changed, 2587 insertions(+) + create mode 100644 config/util/translate.go + create mode 100644 config/v24tov31/v24tov31.go + create mode 100644 config/v24tov31/v24tov31_test.go + +diff --git a/config/util/translate.go b/config/util/translate.go +new file mode 100644 +index 00000000..347d148c +--- /dev/null ++++ b/config/util/translate.go +@@ -0,0 +1,166 @@ ++// Copyright 2020 Red Hat, Inc. ++// ++// Licensed under the Apache License, Version 2.0 (the "License"); ++// you may not use this file except in compliance with the License. ++// You may obtain a copy of the License at ++// ++// http://www.apache.org/licenses/LICENSE-2.0 ++// ++// Unless required by applicable law or agreed to in writing, software ++// distributed under the License is distributed on an "AS IS" BASIS, ++// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. ++// See the License for the specific language governing permissions and ++// limitations under the License. ++ ++package util ++ ++import ( ++ "fmt" ++ "strconv" ++ "strings" ++ "sync" ++) ++ ++// Error definitions ++ ++// NoFilesystemError type for when a filesystem is referenced in a config but there's no mapping to where ++// it should be mounted (i.e. `path` in v3+ configs) ++type NoFilesystemError string ++ ++func (e NoFilesystemError) Error() string { ++ return fmt.Sprintf("Config defined filesystem %q but no mapping was defined."+ ++ "Please specify a path to be used as the filesystem mountpoint.", string(e)) ++} ++ ++// DuplicateInodeError is for when files, directories, or links both specify the same path ++type DuplicateInodeError struct { ++ Old string // first occurance of the path ++ New string // second occurance of the path ++} ++ ++func (e DuplicateInodeError) Error() string { ++ return fmt.Sprintf("Config has conflicting inodes: %q and %q. All files, directories and links must specify a unique `path`.", e.Old, e.New) ++} ++ ++// UsesOwnLinkError is for when files, directories, or links use symlinks defined in the config ++// in their own path. This is disallowed in v3+ configs. ++type UsesOwnLinkError struct { ++ LinkPath string ++ Name string ++} ++ ++func (e UsesOwnLinkError) Error() string { ++ return fmt.Sprintf("%s uses link defined in config %q. Please use a link not defined in Storage:Links", e.Name, e.LinkPath) ++} ++ ++// DuplicateUnitError is for when a unit name is used twice ++type DuplicateUnitError struct { ++ Name string ++} ++ ++func (e DuplicateUnitError) Error() string { ++ return fmt.Sprintf("Config has duplicate unit name %q. All units must specify a unique `name`.", e.Name) ++} ++ ++// DuplicateDropinError is for when a unit has multiple dropins with the same name ++type DuplicateDropinError struct { ++ Unit string ++ Name string ++} ++ ++func (e DuplicateDropinError) Error() string { ++ return fmt.Sprintf("Config has duplicate dropin name %q in unit %q. All dropins must specify a unique `name`.", e.Name, e.Unit) ++} ++ ++func CheckPathUsesLink(links []string, path string) string { ++ for _, l := range links { ++ linkdir := l ++ if !strings.HasSuffix(l, "/") { ++ linkdir += "/" ++ } ++ if strings.HasPrefix(path, linkdir) && path != l { ++ return l ++ } ++ } ++ return "" ++} ++ ++func StrP(in string) *string { ++ if in == "" { ++ return nil ++ } ++ return &in ++} ++ ++func StrPStrict(in string) *string { ++ return &in ++} ++ ++func BoolP(in bool) *bool { ++ if !in { ++ return nil ++ } ++ return &in ++} ++ ++func BoolPStrict(in bool) *bool { ++ return &in ++} ++ ++func IntP(in int) *int { ++ if in == 0 { ++ return nil ++ } ++ return &in ++} ++ ++func StrV(in *string) string { ++ if in == nil { ++ return "" ++ } ++ return *in ++} ++ ++func BoolV(in *bool) bool { ++ if in == nil { ++ return false ++ } ++ return *in ++} ++ ++func IntV(in *int) int { ++ if in == nil { ++ return 0 ++ } ++ return *in ++} ++ ++var ( ++ generatedNameCounter uint64 ++ addedSuffixCounter uint64 ++ counterMutex sync.Mutex ++) ++ ++// FSGeneration generates a name and a path that will be used to feed ++// the `fsMap` in case consumer provided no entry for it in the map. ++// FSMap is required to link the filesystem from v2 to v3 with the rest of the configuration. ++func FSGeneration(name string, fsMap map[string]string) (string, error) { ++ counterMutex.Lock() ++ if len(name) == 0 { ++ generatedNameCounter += 1 ++ name = "ignition" + strconv.FormatUint(generatedNameCounter, 10) ++ } ++ ++ if _, ok := fsMap[name]; !ok { ++ addedSuffixCounter += 1 ++ if name == "oem" { ++ fsMap[name] = "/usr/share/oem" ++ } else { ++ // generate a new path ++ fsMap[name] = "/tmp/" + name + "-ign" + strconv.FormatUint(addedSuffixCounter, 10) ++ } ++ } ++ ++ counterMutex.Unlock() ++ return name, nil ++} +diff --git a/config/v24tov31/v24tov31.go b/config/v24tov31/v24tov31.go +new file mode 100644 +index 00000000..46749385 +--- /dev/null ++++ b/config/v24tov31/v24tov31.go +@@ -0,0 +1,729 @@ ++// Copyright 2020 Red Hat, Inc. ++// ++// Licensed under the Apache License, Version 2.0 (the "License"); ++// you may not use this file except in compliance with the License. ++// You may obtain a copy of the License at ++// ++// http://www.apache.org/licenses/LICENSE-2.0 ++// ++// Unless required by applicable law or agreed to in writing, software ++// distributed under the License is distributed on an "AS IS" BASIS, ++// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. ++// See the License for the specific language governing permissions and ++// limitations under the License. ++ ++package v24tov31 ++ ++import ( ++ "errors" ++ "fmt" ++ "net/url" ++ "path" ++ "path/filepath" ++ "reflect" ++ ++ old "github.com/flatcar/ignition/config/v2_4/types" ++ oldValidate "github.com/flatcar/ignition/config/validate" ++ "github.com/flatcar/ignition/v2/config/merge" ++ "github.com/flatcar/ignition/v2/config/v3_1/types" ++ "github.com/flatcar/ignition/v2/config/validate" ++ "github.com/flatcar/ignition/v2/config/util" ++ ++) ++ ++// Check2_4 returns if the config is translatable but does not do any translation. ++// fsMap is a map from v2 filesystem names to the paths under which they should ++// be mounted in v3. ++func Check2_4(cfg old.Config, fsMap map[string]string) error { ++ rpt := oldValidate.ValidateWithoutSource(reflect.ValueOf(cfg)) ++ if rpt.IsFatal() || rpt.IsDeprecated() { ++ // disallow any deprecated fields ++ return fmt.Errorf("Invalid input config:\n%s", rpt.String()) ++ } ++ ++ // check that all filesystems have a path ++ if fsMap == nil { ++ fsMap = map[string]string{} ++ } ++ fsMap["root"] = "/" ++ for _, fs := range cfg.Storage.Filesystems { ++ name, err := util.FSGeneration(fs.Name, fsMap) ++ if err != nil { ++ return fmt.Errorf("generating filesystem path and name: %w", err) ++ } ++ ++ fs.Name = name ++ ++ if fs.Mount.Create != nil && !fs.Mount.Create.Force { ++ return fmt.Errorf("Config must force filesystem creation in case `mount.create` object is defined.") ++ } ++ } ++ ++ // check that there are no duplicates with files, links, or directories ++ // from path to a pretty-printing description of the entry ++ entryMap := map[string]string{} ++ links := make([]string, 0, len(cfg.Storage.Links)) ++ // build up a list of all the links we write. We're not allow to use links ++ // that we write ++ for _, link := range cfg.Storage.Links { ++ pathString := path.Join("/", fsMap[link.Filesystem], link.Path) ++ links = append(links, pathString) ++ } ++ ++ for _, file := range cfg.Storage.Files { ++ pathString := path.Join("/", fsMap[file.Filesystem], file.Path) ++ name := fmt.Sprintf("File: %s", pathString) ++ if duplicate, isDup := entryMap[pathString]; isDup { ++ return util.DuplicateInodeError{Old: duplicate, New: name} ++ } ++ if l := util.CheckPathUsesLink(links, pathString); l != "" { ++ return &util.UsesOwnLinkError{ ++ LinkPath: l, ++ Name: name, ++ } ++ } ++ entryMap[pathString] = name ++ } ++ for _, dir := range cfg.Storage.Directories { ++ pathString := path.Join("/", fsMap[dir.Filesystem], dir.Path) ++ name := fmt.Sprintf("Directory: %s", pathString) ++ if duplicate, isDup := entryMap[pathString]; isDup { ++ return util.DuplicateInodeError{Old: duplicate, New: name} ++ } ++ if l := util.CheckPathUsesLink(links, pathString); l != "" { ++ return &util.UsesOwnLinkError{ ++ LinkPath: l, ++ Name: name, ++ } ++ } ++ entryMap[pathString] = name ++ } ++ for _, link := range cfg.Storage.Links { ++ pathString := path.Join("/", fsMap[link.Filesystem], link.Path) ++ name := fmt.Sprintf("Link: %s", pathString) ++ if duplicate, isDup := entryMap[pathString]; isDup { ++ return &util.DuplicateInodeError{Old: duplicate, New: name} ++ } ++ entryMap[pathString] = name ++ if l := util.CheckPathUsesLink(links, pathString); l != "" { ++ return &util.UsesOwnLinkError{ ++ LinkPath: l, ++ Name: name, ++ } ++ } ++ } ++ ++ for _, unit := range cfg.Systemd.Units { ++ dropinMap := map[string]struct{}{} // dropin name -> struct{} ++ for _, dropin := range unit.Dropins { ++ if _, isDup := dropinMap[dropin.Name]; isDup { ++ return util.DuplicateDropinError{Unit: unit.Name, Name: dropin.Name} ++ } ++ dropinMap[dropin.Name] = struct{}{} ++ } ++ } ++ ++ return nil ++} ++ ++// Translate translates an Ignition spec v2.4 config to v3.1 ++func Translate(cfg old.Config, fsMap map[string]string) (types.Config, error) { ++ if err := Check2_4(cfg, fsMap); err != nil { ++ return types.Config{}, err ++ } ++ ++ files := translateFiles(cfg.Storage.Files, fsMap) ++ files = append(files, translateNetworkd(cfg.Networkd.Units, fsMap)...) ++ ++ res := types.Config{ ++ // Ignition section ++ Ignition: types.Ignition{ ++ Version: "3.1.0", ++ Config: types.IgnitionConfig{ ++ Replace: translateCfgRef(cfg.Ignition.Config.Replace), ++ Merge: translateCfgRefs(cfg.Ignition.Config.Append), ++ }, ++ Security: types.Security{ ++ TLS: types.TLS{ ++ CertificateAuthorities: translateCAs(cfg.Ignition.Security.TLS.CertificateAuthorities), ++ }, ++ }, ++ Timeouts: types.Timeouts{ ++ HTTPResponseHeaders: cfg.Ignition.Timeouts.HTTPResponseHeaders, ++ HTTPTotal: cfg.Ignition.Timeouts.HTTPTotal, ++ }, ++ Proxy: types.Proxy{ ++ HTTPProxy: util.StrP(cfg.Ignition.Proxy.HTTPProxy), ++ HTTPSProxy: util.StrP(cfg.Ignition.Proxy.HTTPSProxy), ++ NoProxy: translateNoProxy(cfg.Ignition.Proxy.NoProxy), ++ }, ++ }, ++ // Passwd section ++ Passwd: types.Passwd{ ++ Users: translateUsers(cfg.Passwd.Users), ++ Groups: translateGroups(cfg.Passwd.Groups), ++ }, ++ Systemd: types.Systemd{ ++ Units: translateUnits(cfg.Systemd.Units), ++ }, ++ Storage: types.Storage{ ++ Disks: translateDisks(cfg.Storage.Disks), ++ Raid: translateRaid(cfg.Storage.Raid), ++ Filesystems: translateFilesystems(cfg.Storage.Filesystems, fsMap), ++ Files: files, ++ Directories: translateDirectories(cfg.Storage.Directories, fsMap), ++ Links: translateLinks(cfg.Storage.Links, fsMap), ++ }, ++ } ++ r := validate.ValidateWithContext(res, nil) ++ if r.IsFatal() { ++ return types.Config{}, errors.New(r.String()) ++ } ++ return res, nil ++} ++ ++func translateNoProxy(noproxy []old.NoProxyItem) (ret []types.NoProxyItem) { ++ for _, d := range noproxy { ++ ret = append(ret, types.NoProxyItem(d)) ++ } ++ return ++} ++ ++func translateCfgRef(ref *old.ConfigReference) (ret types.Resource) { ++ if ref == nil { ++ return ++ } ++ ret.Source = &ref.Source ++ ret.Verification.Hash = ref.Verification.Hash ++ ret.HTTPHeaders = translateHTTPHeaders(ref.HTTPHeaders) ++ ++ return ++} ++ ++func translateHTTPHeaders(headers []old.HTTPHeader) (ret []types.HTTPHeader) { ++ for _, o := range headers { ++ ret = append(ret, types.HTTPHeader{ ++ Name: o.Name, ++ Value: util.StrP(o.Value), ++ }) ++ } ++ return ++} ++ ++func translateCfgRefs(refs []old.ConfigReference) (ret []types.Resource) { ++ for _, ref := range refs { ++ ret = append(ret, translateCfgRef(&ref)) ++ } ++ return ++} ++ ++func translateCAs(refs []old.CaReference) (ret []types.Resource) { ++ for _, ref := range refs { ++ ret = append(ret, types.Resource{ ++ Source: &ref.Source, ++ Verification: types.Verification{ ++ Hash: ref.Verification.Hash, ++ }, ++ HTTPHeaders: translateHTTPHeaders(ref.HTTPHeaders), ++ }) ++ } ++ return ++} ++ ++func translateUsers(users []old.PasswdUser) (ret []types.PasswdUser) { ++ for _, u := range users { ++ uid := u.UID ++ gecos := u.Gecos ++ homeDir := u.HomeDir ++ noCreateHome := u.NoCreateHome ++ primaryGroup := u.PrimaryGroup ++ groups := translateUserGroups(u.Groups) ++ noUserGroup := u.NoUserGroup ++ noLogInit := u.NoLogInit ++ shell := u.Shell ++ system := u.System ++ ++ // support deprecated `create` object ++ if u.Create != nil { ++ create := u.Create ++ uid = create.UID ++ gecos = create.Gecos ++ homeDir = create.HomeDir ++ noCreateHome = create.NoCreateHome ++ primaryGroup = create.PrimaryGroup ++ noUserGroup = create.NoUserGroup ++ noLogInit = create.NoLogInit ++ shell = create.Shell ++ system = create.System ++ ++ // convert group type ++ g := make([]types.Group, len(create.Groups)) ++ for i, group := range create.Groups { ++ g[i] = types.Group(group) ++ } ++ ++ groups = g ++ } ++ ++ ret = append(ret, types.PasswdUser{ ++ Name: u.Name, ++ PasswordHash: u.PasswordHash, ++ SSHAuthorizedKeys: translateUserSSH(u.SSHAuthorizedKeys), ++ UID: uid, ++ Gecos: util.StrP(gecos), ++ HomeDir: util.StrP(homeDir), ++ NoCreateHome: util.BoolP(noCreateHome), ++ PrimaryGroup: util.StrP(primaryGroup), ++ Groups: groups, ++ NoUserGroup: util.BoolP(noUserGroup), ++ NoLogInit: util.BoolP(noLogInit), ++ Shell: util.StrP(shell), ++ System: util.BoolP(system), ++ }) ++ } ++ return ++} ++ ++func translateUserSSH(in []old.SSHAuthorizedKey) (ret []types.SSHAuthorizedKey) { ++ for _, k := range in { ++ ret = append(ret, types.SSHAuthorizedKey(k)) ++ } ++ return ++} ++ ++func translateUserGroups(in []old.Group) (ret []types.Group) { ++ for _, g := range in { ++ ret = append(ret, types.Group(g)) ++ } ++ return ++} ++ ++func translateGroups(groups []old.PasswdGroup) (ret []types.PasswdGroup) { ++ for _, g := range groups { ++ ret = append(ret, types.PasswdGroup{ ++ Name: g.Name, ++ Gid: g.Gid, ++ PasswordHash: util.StrP(g.PasswordHash), ++ System: util.BoolP(g.System), ++ }) ++ } ++ return ++} ++ ++func translateUnits(units []old.Unit) (ret []types.Unit) { ++ unitsMap := map[string]types.Unit{} ++ ++ for _, u := range units { ++ var enabled *bool ++ // The Enabled field wins over Enable, since Enable is deprecated in spec v2 and removed in v3. ++ // It does so following the apparent intent of the upstream code [1] ++ // which actually does the opposite for Enable=true Enabled=false ++ // because the first matching line in a systemd preset wins. ++ // [1] https://github.com/flatcar-linux/ignition/blob/b4d18ad3fcb278a890327f858c1c10256ab6ee9d/internal/exec/stages/files/units.go#L32 ++ if (u.Enabled != nil && *u.Enabled) || u.Enable { ++ enabled = util.BoolP(true) ++ } ++ if u.Enabled != nil && !*u.Enabled { ++ enabled = util.BoolPStrict(false) ++ } ++ ++ // 'trUnit' is the translated unit, a candidate for insertion. ++ trUnit := types.Unit{ ++ Name: u.Name, ++ Enabled: enabled, ++ Mask: util.BoolP(u.Mask), ++ Contents: util.StrP(u.Contents), ++ Dropins: translateDropins(u.Dropins), ++ } ++ ++ // We check for an already added unit with the same name (it should be unique). ++ // 'prUnit' for previous unit. ++ if prUnit, ok := unitsMap[trUnit.Name]; ok { ++ // We prepare the merging of the two units. For this, we need to ++ // wrap them into an actual Ignition Config. ++ parent := types.Config{ ++ Systemd: types.Systemd{ ++ Units: []types.Unit{ ++ prUnit, ++ }, ++ }, ++ } ++ ++ child := types.Config{ ++ Systemd: types.Systemd{ ++ Units: []types.Unit{ ++ trUnit, ++ }, ++ }, ++ } ++ ++ // We actually merge the two configurations, it should not raise any error. ++ res, _ := merge.MergeStructTranscribe(parent, child) ++ mergedConfig := res.(types.Config) ++ ++ mergedUnits := mergedConfig.Systemd.Units ++ ++ // We should only get one new unit from the merge. ++ if len(mergedUnits) == 1 { ++ // We override the previous unit with the new one for the next round. ++ unitsMap[u.Name] = mergedUnits[0] ++ continue ++ } ++ } ++ ++ // We track the unit as added. ++ unitsMap[u.Name] = trUnit ++ } ++ ++ for _, value := range unitsMap { ++ ret = append(ret, value) ++ } ++ ++ return ++} ++ ++func translateDropins(dropins []old.SystemdDropin) (ret []types.Dropin) { ++ for _, d := range dropins { ++ ret = append(ret, types.Dropin{ ++ Name: d.Name, ++ Contents: util.StrP(d.Contents), ++ }) ++ } ++ return ++} ++ ++func translateDisks(disks []old.Disk) (ret []types.Disk) { ++ for _, d := range disks { ++ ret = append(ret, types.Disk{ ++ Device: d.Device, ++ WipeTable: util.BoolP(d.WipeTable), ++ Partitions: translatePartitions(d.Partitions), ++ }) ++ } ++ return ++} ++ ++func translatePartitions(parts []old.Partition) (ret []types.Partition) { ++ for _, p := range parts { ++ ret = append(ret, types.Partition{ ++ Label: p.Label, ++ Number: p.Number, ++ SizeMiB: p.SizeMiB, ++ StartMiB: p.StartMiB, ++ TypeGUID: util.StrP(p.TypeGUID), ++ GUID: util.StrP(p.GUID), ++ WipePartitionEntry: util.BoolP(p.WipePartitionEntry), ++ ShouldExist: p.ShouldExist, ++ }) ++ } ++ return ++} ++ ++func translateRaid(raids []old.Raid) (ret []types.Raid) { ++ for _, r := range raids { ++ ret = append(ret, types.Raid{ ++ Name: r.Name, ++ Level: r.Level, ++ Devices: translateDevices(r.Devices), ++ Spares: util.IntP(r.Spares), ++ Options: translateRaidOptions(r.Options), ++ }) ++ } ++ return ++} ++ ++func translateDevices(devices []old.Device) (ret []types.Device) { ++ for _, d := range devices { ++ ret = append(ret, types.Device(d)) ++ } ++ return ++} ++ ++func translateRaidOptions(options []old.RaidOption) (ret []types.RaidOption) { ++ for _, o := range options { ++ ret = append(ret, types.RaidOption(o)) ++ } ++ return ++} ++ ++func translateFilesystems(fss []old.Filesystem, m map[string]string) (ret []types.Filesystem) { ++ for _, f := range fss { ++ if f.Name == "root" { ++ // root is implied ++ continue ++ } ++ if f.Mount == nil { ++ f.Mount = &old.Mount{} ++ } ++ ++ wipe := util.BoolP(f.Mount.WipeFilesystem) ++ options := translateFilesystemOptions(f.Mount.Options) ++ ++ // If we have a `"create": {...}` section, we try ++ // to convert it. ++ if f.Mount.Create != nil { ++ // `wipe` should always be set to `true` - there is a config check ++ // in the beginning of the translation to ensure that we don't try to ++ // use this `create` section without forcing the exising filesystem to be ++ // wiped. ++ wipe = util.BoolP(f.Mount.Create.Force) ++ ++ for _, opt := range f.Mount.Create.Options { ++ options = append(options, types.FilesystemOption(opt)) ++ } ++ } ++ ++ format := f.Mount.Format ++ if f.Name == "oem" && (wipe == nil || !*wipe) { ++ format = "btrfs" ++ } ++ ++ ret = append(ret, types.Filesystem{ ++ Device: f.Mount.Device, ++ Format: util.StrP(format), ++ WipeFilesystem: wipe, ++ Label: f.Mount.Label, ++ UUID: f.Mount.UUID, ++ Options: options, ++ Path: util.StrP(m[f.Name]), ++ }) ++ } ++ return ++} ++ ++func translateFilesystemOptions(options []old.MountOption) (ret []types.FilesystemOption) { ++ for _, o := range options { ++ ret = append(ret, types.FilesystemOption(o)) ++ } ++ return ++} ++ ++func translateNode(n old.Node, m map[string]string) types.Node { ++ if n.User == nil { ++ n.User = &old.NodeUser{} ++ } ++ if n.Group == nil { ++ n.Group = &old.NodeGroup{} ++ } ++ return types.Node{ ++ Path: path.Join(m[n.Filesystem], n.Path), ++ User: types.NodeUser{ ++ ID: n.User.ID, ++ Name: util.StrP(n.User.Name), ++ }, ++ Group: types.NodeGroup{ ++ ID: n.Group.ID, ++ Name: util.StrP(n.Group.Name), ++ }, ++ Overwrite: n.Overwrite, ++ } ++} ++ ++func translateFiles(files []old.File, m map[string]string) (ret []types.File) { ++ for _, f := range files { ++ // 2.x files are overwrite by default ++ if f.Node.Overwrite == nil { ++ f.Node.Overwrite = util.BoolP(true) ++ } ++ ++ // In spec 3, overwrite must be false if append is true ++ // i.e. spec 2 files with append true must be translated to spec 3 files with overwrite false ++ if f.FileEmbedded1.Append { ++ f.Node.Overwrite = util.BoolPStrict(false) ++ } ++ ++ file := types.File{ ++ Node: translateNode(f.Node, m), ++ FileEmbedded1: types.FileEmbedded1{ ++ Mode: f.Mode, ++ }, ++ } ++ c := types.Resource{ ++ Compression: util.StrP(f.Contents.Compression), ++ Source: util.StrPStrict(f.Contents.Source), ++ HTTPHeaders: translateHTTPHeaders(f.Contents.HTTPHeaders), ++ } ++ c.Verification.Hash = f.FileEmbedded1.Contents.Verification.Hash ++ ++ if f.Append { ++ file.Append = []types.Resource{c} ++ } else { ++ file.Contents = c ++ } ++ ret = append(ret, file) ++ } ++ return ++} ++ ++func translateNetworkd(units []old.Networkdunit, m map[string]string) []types.File { ++ var ret []types.File ++ ++ for _, u := range units { ++ if u.Contents != "" { ++ file := types.File{ ++ Node: types.Node{ ++ // 2.x files are overwrite by default ++ Overwrite: util.BoolP(true), ++ }, ++ FileEmbedded1: types.FileEmbedded1{ ++ // Ignition default file permission ++ Mode: util.IntP(int(0644)), ++ }, ++ } ++ // path /etc/systemd/network is hardcoded in Ignition2.x codebase. ++ // TODO: customize this path at compilation time. ++ file.Node.Path = filepath.Join(m["root"], "/etc/systemd/network", u.Name) ++ ++ // URL encoding unit content to follow 'data' format - we could use base64 also. ++ file.FileEmbedded1.Contents.Source = util.StrPStrict("data:," + url.PathEscape(u.Contents)) ++ ++ ret = append(ret, file) ++ } ++ ++ for _, d := range u.Dropins { ++ file := types.File{ ++ Node: types.Node{ ++ // 2.x files are overwrite by default ++ Overwrite: util.BoolP(true), ++ }, ++ FileEmbedded1: types.FileEmbedded1{ ++ // Ignition default file permission ++ Mode: util.IntP(int(0644)), ++ }, ++ } ++ ++ file.Node.Path = filepath.Join(m["root"], "/etc/systemd/network", string(u.Name)+".d", d.Name) ++ file.FileEmbedded1.Contents.Source = util.StrPStrict("data:," + url.PathEscape(d.Contents)) ++ ++ ret = append(ret, file) ++ } ++ } ++ ++ return ret ++} ++ ++func translateLinks(links []old.Link, m map[string]string) (ret []types.Link) { ++ for _, l := range links { ++ ret = append(ret, types.Link{ ++ Node: translateNode(l.Node, m), ++ LinkEmbedded1: types.LinkEmbedded1{ ++ Hard: util.BoolP(l.Hard), ++ Target: l.Target, ++ }, ++ }) ++ } ++ return ++} ++ ++func translateDirectories(dirs []old.Directory, m map[string]string) (ret []types.Directory) { ++ for _, d := range dirs { ++ ret = append(ret, types.Directory{ ++ Node: translateNode(d.Node, m), ++ DirectoryEmbedded1: types.DirectoryEmbedded1{ ++ Mode: d.Mode, ++ }, ++ }) ++ } ++ return ++} ++ ++// RemoveDuplicateFilesUnitsUsers is a helper function that removes duplicated files/units/users ++// from spec v2 config, since neither spec v3 nor the translator function allow for duplicate ++// file entries in the config. ++// This functionality is not included in the Translate function and has some limitations, but ++// may be useful in cases where configuration has to be sanitized before translation. ++// For duplicates, it takes ordering into consideration by taking the file/unit contents from ++// the slice with the highest index value, which is assumed to be the latest revision. ++// Unit dropins are concat'ed, i.e. if no duplicate dropin of the same name exists it is added ++// to the list of dropins of the deduplicated unit definition. ++// The function will fail if a non-root filesystem is declared on any file. ++// It will also fail if file appendices are encountered. ++func RemoveDuplicateFilesUnitsUsers(cfg old.Config) (old.Config, error) { ++ files := cfg.Storage.Files ++ units := cfg.Systemd.Units ++ users := cfg.Passwd.Users ++ ++ filePathMap := map[string]bool{} ++ var outFiles []old.File ++ // range from highest to lowest index ++ for i := len(files) - 1; i >= 0; i-- { ++ if files[i].Filesystem != "root" { ++ return old.Config{}, errors.New("cannot dedupe set of files on non-root filesystem") ++ } ++ if files[i].Append { ++ return old.Config{}, errors.New("cannot dedupe set of files that contains appendices") ++ } ++ path := files[i].Path ++ if _, isDup := filePathMap[path]; isDup { ++ // dupes are ignored ++ continue ++ } ++ // append unique file ++ outFiles = append(outFiles, files[i]) ++ filePathMap[path] = true ++ } ++ ++ unitNameMap := map[string]bool{} ++ var outUnits []old.Unit ++ // range from highest to lowest index ++ for i := len(units) - 1; i >= 0; i-- { ++ unitName := units[i].Name ++ if _, isDup := unitNameMap[unitName]; isDup { ++ // this is a duplicated unit by name ++ if len(units[i].Dropins) > 0 { ++ for j := range outUnits { ++ if outUnits[j].Name == unitName { ++ // outUnits[j] is the highest priority entry with this unit name ++ // now loop over the new unit's dropins and append it if the name ++ // isn't duplicated in the existing unit's dropins ++ for _, newDropin := range units[i].Dropins { ++ hasExistingDropin := false ++ for _, existingDropin := range outUnits[j].Dropins { ++ if existingDropin.Name == newDropin.Name { ++ hasExistingDropin = true ++ break ++ } ++ } ++ if !hasExistingDropin { ++ outUnits[j].Dropins = append(outUnits[j].Dropins, newDropin) ++ } ++ } ++ } ++ } ++ } ++ } else { ++ // append unique unit ++ outUnits = append(outUnits, units[i]) ++ unitNameMap[unitName] = true ++ } ++ } ++ ++ // Concat sshkey sections into the newest passwdUser in the list ++ // Only the SSHAuthorizedKeys of a duplicate user are considered, ++ // all other fields are ignored. ++ userNameMap := map[string]bool{} ++ var outUsers []old.PasswdUser ++ // range from highest to lowest index ++ for i := len(users) - 1; i >= 0; i-- { ++ userName := users[i].Name ++ if _, isDup := userNameMap[userName]; isDup { ++ // this is a duplicated user by name, append keys to existing user ++ for j := range outUsers { ++ if outUsers[j].Name == userName { ++ outUsers[j].SSHAuthorizedKeys = append(outUsers[j].SSHAuthorizedKeys, users[i].SSHAuthorizedKeys...) ++ } ++ } ++ } else { ++ // append unique users ++ outUsers = append(outUsers, users[i]) ++ userNameMap[userName] = true ++ } ++ } ++ ++ // outFiles, outUnits, and outUsers should now have all duplication removed ++ cfg.Storage.Files = outFiles ++ cfg.Systemd.Units = outUnits ++ cfg.Passwd.Users = outUsers ++ ++ return cfg, nil ++} +diff --git a/config/v24tov31/v24tov31_test.go b/config/v24tov31/v24tov31_test.go +new file mode 100644 +index 00000000..e81f6bed +--- /dev/null ++++ b/config/v24tov31/v24tov31_test.go +@@ -0,0 +1,1692 @@ ++// Copyright 2020 Red Hat, Inc. ++// ++// Licensed under the Apache License, Version 2.0 (the "License"); ++// you may not use this file except in compliance with the License. ++// You may obtain a copy of the License at ++// ++// http://www.apache.org/licenses/LICENSE-2.0 ++// ++// Unless required by applicable law or agreed to in writing, software ++// distributed under the License is distributed on an "AS IS" BASIS, ++// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. ++// See the License for the specific language governing permissions and ++// limitations under the License. ++ ++package v24tov31_test ++ ++import ( ++ "fmt" ++ "testing" ++ ++ types2_4 "github.com/flatcar/ignition/config/v2_4/types" ++ types3_1 "github.com/flatcar/ignition/v2/config/v3_1/types" ++ ++ "github.com/stretchr/testify/assert" ++ ++ "github.com/flatcar/ignition/v2/config/util" ++ "github.com/flatcar/ignition/v2/config/v24tov31" ++) ++ ++// Configs using _all_ the (undeprecated) fields ++var ( ++ userID = 1010 ++ aSha512Hash = "sha512-c6100de5624cfb3c109909948ecb8d703bbddcd3725b8bd43dcf2cee6d2f5dc990a757575e0306a8e8eea354bcd7cfac354da911719766225668fe5430477fa8" ++ aUUID = "9d6e42cd-dcef-4177-b4c6-2a0c979e3d82" ++ exhaustiveMap = map[string]string{ ++ "var": "/var", ++ "/var": "/var", ++ } ++ ++ wrongDeprecatedConfig2_4 = types2_4.Config{ ++ Ignition: types2_4.Ignition{ ++ Version: "2.4.0", ++ Config: types2_4.IgnitionConfig{ ++ Append: []types2_4.ConfigReference{ ++ { ++ Source: "https://example.com", ++ Verification: types2_4.Verification{ ++ Hash: &aSha512Hash, ++ }, ++ }, ++ }, ++ Replace: &types2_4.ConfigReference{ ++ Source: "https://example.com", ++ Verification: types2_4.Verification{ ++ Hash: &aSha512Hash, ++ }, ++ }, ++ }, ++ Timeouts: types2_4.Timeouts{ ++ HTTPResponseHeaders: util.IntP(5), ++ HTTPTotal: util.IntP(10), ++ }, ++ Security: types2_4.Security{ ++ TLS: types2_4.TLS{ ++ CertificateAuthorities: []types2_4.CaReference{ ++ { ++ Source: "https://example.com", ++ Verification: types2_4.Verification{ ++ Hash: &aSha512Hash, ++ }, ++ }, ++ }, ++ }, ++ }, ++ Proxy: types2_4.Proxy{ ++ HTTPProxy: "https://proxy.example.net/", ++ HTTPSProxy: "https://secure.proxy.example.net/", ++ NoProxy: []types2_4.NoProxyItem{ ++ "www.example.net", ++ "www.example2.net", ++ }, ++ }, ++ }, ++ Storage: types2_4.Storage{ ++ Disks: []types2_4.Disk{ ++ { ++ Device: "/dev/sda", ++ WipeTable: true, ++ Partitions: []types2_4.Partition{ ++ { ++ Label: util.StrP("var"), ++ Number: 1, ++ SizeMiB: util.IntP(5000), ++ StartMiB: util.IntP(2048), ++ TypeGUID: aUUID, ++ GUID: aUUID, ++ WipePartitionEntry: true, ++ ShouldExist: util.BoolP(true), ++ }, ++ }, ++ }, ++ }, ++ Raid: []types2_4.Raid{ ++ { ++ Name: "array", ++ Level: "raid10", ++ Devices: []types2_4.Device{"/dev/sdb", "/dev/sdc"}, ++ Spares: 1, ++ Options: []types2_4.RaidOption{"foobar"}, ++ }, ++ }, ++ Filesystems: []types2_4.Filesystem{ ++ { ++ Name: "/var", ++ Mount: &types2_4.Mount{ ++ Device: "/dev/disk/by-partlabel/var", ++ Format: "xfs", ++ Create: &types2_4.Create{ ++ Force: true, ++ Options: []types2_4.CreateOption{ ++ "--labl=ROOT", ++ types2_4.CreateOption(fmt.Sprintf("--uuid=%s", aUUID)), ++ }, ++ }, ++ UUID: &aUUID, ++ }, ++ }, ++ }, ++ Files: []types2_4.File{ ++ { ++ Node: types2_4.Node{ ++ Filesystem: "/var", ++ Path: "/varfile", ++ Overwrite: util.BoolPStrict(false), ++ User: &types2_4.NodeUser{ ++ ID: util.IntP(1000), ++ }, ++ Group: &types2_4.NodeGroup{ ++ Name: "groupname", ++ }, ++ }, ++ FileEmbedded1: types2_4.FileEmbedded1{ ++ Append: true, ++ Mode: util.IntP(420), ++ Contents: types2_4.FileContents{ ++ Compression: "gzip", ++ Source: "https://example.com", ++ Verification: types2_4.Verification{ ++ Hash: &aSha512Hash, ++ }, ++ HTTPHeaders: types2_4.HTTPHeaders{ ++ types2_4.HTTPHeader{ ++ Name: "Authorization", ++ Value: "Basic YWxhZGRpbjpvcGVuc2VzYW1l", ++ }, ++ types2_4.HTTPHeader{ ++ Name: "User-Agent", ++ Value: "Mozilla/5.0 (compatible; MSIE 6.0; Windows NT 5.1)", ++ }, ++ }, ++ }, ++ }, ++ }, ++ { ++ Node: types2_4.Node{ ++ Filesystem: "root", ++ Path: "/empty", ++ Overwrite: util.BoolPStrict(false), ++ }, ++ FileEmbedded1: types2_4.FileEmbedded1{ ++ Mode: util.IntP(420), ++ }, ++ }, ++ }, ++ Directories: []types2_4.Directory{ ++ { ++ Node: types2_4.Node{ ++ Filesystem: "root", ++ Path: "/rootdir", ++ Overwrite: util.BoolP(true), ++ User: &types2_4.NodeUser{ ++ ID: util.IntP(1000), ++ }, ++ Group: &types2_4.NodeGroup{ ++ Name: "groupname", ++ }, ++ }, ++ DirectoryEmbedded1: types2_4.DirectoryEmbedded1{ ++ Mode: util.IntP(420), ++ }, ++ }, ++ }, ++ Links: []types2_4.Link{ ++ { ++ Node: types2_4.Node{ ++ Filesystem: "root", ++ Path: "/rootlink", ++ Overwrite: util.BoolP(true), ++ User: &types2_4.NodeUser{ ++ ID: util.IntP(1000), ++ }, ++ Group: &types2_4.NodeGroup{ ++ Name: "groupname", ++ }, ++ }, ++ LinkEmbedded1: types2_4.LinkEmbedded1{ ++ Hard: false, ++ Target: "/foobar", ++ }, ++ }, ++ }, ++ }, ++ } ++ ++ deprecatedConfig2_4 = types2_4.Config{ ++ Ignition: types2_4.Ignition{ ++ Version: "2.4.0", ++ Config: types2_4.IgnitionConfig{ ++ Append: []types2_4.ConfigReference{ ++ { ++ Source: "https://example.com", ++ Verification: types2_4.Verification{ ++ Hash: &aSha512Hash, ++ }, ++ }, ++ }, ++ Replace: &types2_4.ConfigReference{ ++ Source: "https://example.com", ++ Verification: types2_4.Verification{ ++ Hash: &aSha512Hash, ++ }, ++ }, ++ }, ++ Timeouts: types2_4.Timeouts{ ++ HTTPResponseHeaders: util.IntP(5), ++ HTTPTotal: util.IntP(10), ++ }, ++ Security: types2_4.Security{ ++ TLS: types2_4.TLS{ ++ CertificateAuthorities: []types2_4.CaReference{ ++ { ++ Source: "https://example.com", ++ Verification: types2_4.Verification{ ++ Hash: &aSha512Hash, ++ }, ++ }, ++ }, ++ }, ++ }, ++ Proxy: types2_4.Proxy{ ++ HTTPProxy: "https://proxy.example.net/", ++ HTTPSProxy: "https://secure.proxy.example.net/", ++ NoProxy: []types2_4.NoProxyItem{ ++ "www.example.net", ++ "www.example2.net", ++ }, ++ }, ++ }, ++ Passwd: types2_4.Passwd{ ++ Users: []types2_4.PasswdUser{ ++ { ++ Name: "user", ++ Create: &types2_4.Usercreate{ ++ UID: &userID, ++ Groups: []types2_4.UsercreateGroup{ ++ types2_4.UsercreateGroup("docker"), ++ }, ++ }, ++ }, ++ }, ++ }, ++ Networkd: types2_4.Networkd{ ++ Units: []types2_4.Networkdunit{ ++ { ++ Contents: "[Match]\nType=!vlan bond bridge\nName=eth*\n\n[Network]\nBond=bond0", ++ Dropins: []types2_4.NetworkdDropin{ ++ { ++ Contents: "[Match]\nName=bond0\n\n[Network]\nDHCP=true", ++ Name: "dropin-1.conf", ++ }, ++ }, ++ Name: "00-eth.network", ++ }, ++ { ++ Contents: "[Match]\nName=eth12\n\n[Network]\nBond=bond0", ++ Name: "99-eth.network", ++ }, ++ }, ++ }, ++ Storage: types2_4.Storage{ ++ Disks: []types2_4.Disk{ ++ { ++ Device: "/dev/sda", ++ WipeTable: true, ++ Partitions: []types2_4.Partition{ ++ { ++ Label: util.StrP("var"), ++ Number: 1, ++ SizeMiB: util.IntP(5000), ++ StartMiB: util.IntP(2048), ++ TypeGUID: aUUID, ++ GUID: aUUID, ++ WipePartitionEntry: true, ++ ShouldExist: util.BoolP(true), ++ }, ++ }, ++ }, ++ }, ++ Raid: []types2_4.Raid{ ++ { ++ Name: "array", ++ Level: "raid10", ++ Devices: []types2_4.Device{"/dev/sdb", "/dev/sdc"}, ++ Spares: 1, ++ Options: []types2_4.RaidOption{"foobar"}, ++ }, ++ }, ++ Filesystems: []types2_4.Filesystem{ ++ { ++ Name: "/var", ++ Mount: &types2_4.Mount{ ++ Device: "/dev/disk/by-partlabel/var", ++ Format: "xfs", ++ Label: util.StrP("var"), ++ UUID: &aUUID, ++ Create: &types2_4.Create{ ++ Force: true, ++ Options: []types2_4.CreateOption{ ++ "--label=var", ++ types2_4.CreateOption(fmt.Sprintf("--uuid=%s", aUUID)), ++ }, ++ }, ++ }, ++ }, ++ }, ++ Files: []types2_4.File{ ++ { ++ Node: types2_4.Node{ ++ Filesystem: "/var", ++ Path: "/varfile", ++ Overwrite: util.BoolPStrict(false), ++ User: &types2_4.NodeUser{ ++ ID: util.IntP(1000), ++ }, ++ Group: &types2_4.NodeGroup{ ++ Name: "groupname", ++ }, ++ }, ++ FileEmbedded1: types2_4.FileEmbedded1{ ++ Append: true, ++ Mode: util.IntP(420), ++ Contents: types2_4.FileContents{ ++ Compression: "gzip", ++ Source: "https://example.com", ++ Verification: types2_4.Verification{ ++ Hash: &aSha512Hash, ++ }, ++ HTTPHeaders: types2_4.HTTPHeaders{ ++ types2_4.HTTPHeader{ ++ Name: "Authorization", ++ Value: "Basic YWxhZGRpbjpvcGVuc2VzYW1l", ++ }, ++ types2_4.HTTPHeader{ ++ Name: "User-Agent", ++ Value: "Mozilla/5.0 (compatible; MSIE 6.0; Windows NT 5.1)", ++ }, ++ }, ++ }, ++ }, ++ }, ++ { ++ Node: types2_4.Node{ ++ Filesystem: "root", ++ Path: "/empty", ++ Overwrite: util.BoolPStrict(false), ++ }, ++ FileEmbedded1: types2_4.FileEmbedded1{ ++ Mode: util.IntP(420), ++ }, ++ }, ++ }, ++ Directories: []types2_4.Directory{ ++ { ++ Node: types2_4.Node{ ++ Filesystem: "root", ++ Path: "/rootdir", ++ Overwrite: util.BoolP(true), ++ User: &types2_4.NodeUser{ ++ ID: util.IntP(1000), ++ }, ++ Group: &types2_4.NodeGroup{ ++ Name: "groupname", ++ }, ++ }, ++ DirectoryEmbedded1: types2_4.DirectoryEmbedded1{ ++ Mode: util.IntP(420), ++ }, ++ }, ++ }, ++ Links: []types2_4.Link{ ++ { ++ Node: types2_4.Node{ ++ Filesystem: "root", ++ Path: "/rootlink", ++ Overwrite: util.BoolP(true), ++ User: &types2_4.NodeUser{ ++ ID: util.IntP(1000), ++ }, ++ Group: &types2_4.NodeGroup{ ++ Name: "groupname", ++ }, ++ }, ++ LinkEmbedded1: types2_4.LinkEmbedded1{ ++ Hard: false, ++ Target: "/foobar", ++ }, ++ }, ++ }, ++ }, ++ } ++ ++ badDeprecatedConfig2_4 = types2_4.Config{ ++ Ignition: types2_4.Ignition{ ++ Version: "2.4.0", ++ Config: types2_4.IgnitionConfig{ ++ Append: []types2_4.ConfigReference{ ++ { ++ Source: "https://example.com", ++ Verification: types2_4.Verification{ ++ Hash: &aSha512Hash, ++ }, ++ }, ++ }, ++ Replace: &types2_4.ConfigReference{ ++ Source: "https://example.com", ++ Verification: types2_4.Verification{ ++ Hash: &aSha512Hash, ++ }, ++ }, ++ }, ++ Timeouts: types2_4.Timeouts{ ++ HTTPResponseHeaders: util.IntP(5), ++ HTTPTotal: util.IntP(10), ++ }, ++ Security: types2_4.Security{ ++ TLS: types2_4.TLS{ ++ CertificateAuthorities: []types2_4.CaReference{ ++ { ++ Source: "https://example.com", ++ Verification: types2_4.Verification{ ++ Hash: &aSha512Hash, ++ }, ++ }, ++ }, ++ }, ++ }, ++ Proxy: types2_4.Proxy{ ++ HTTPProxy: "https://proxy.example.net/", ++ HTTPSProxy: "https://secure.proxy.example.net/", ++ NoProxy: []types2_4.NoProxyItem{ ++ "www.example.net", ++ "www.example2.net", ++ }, ++ }, ++ }, ++ Storage: types2_4.Storage{ ++ Filesystems: []types2_4.Filesystem{ ++ { ++ Name: "/var", ++ Mount: &types2_4.Mount{ ++ Device: "/dev/disk/by-partlabel/var", ++ Format: "xfs", ++ Label: util.StrP("var"), ++ UUID: &aUUID, ++ Create: &types2_4.Create{ ++ Force: false, ++ Options: []types2_4.CreateOption{ ++ "--label=var", ++ types2_4.CreateOption(fmt.Sprintf("--uuid=%s", aUUID)), ++ }, ++ }, ++ }, ++ }, ++ }, ++ }, ++ } ++ ++ exhaustiveConfig2_4 = types2_4.Config{ ++ Ignition: types2_4.Ignition{ ++ Version: "2.4.0", ++ Config: types2_4.IgnitionConfig{ ++ Append: []types2_4.ConfigReference{ ++ { ++ Source: "https://example.com", ++ Verification: types2_4.Verification{ ++ Hash: &aSha512Hash, ++ }, ++ }, ++ }, ++ Replace: &types2_4.ConfigReference{ ++ Source: "https://example.com", ++ Verification: types2_4.Verification{ ++ Hash: &aSha512Hash, ++ }, ++ }, ++ }, ++ Timeouts: types2_4.Timeouts{ ++ HTTPResponseHeaders: util.IntP(5), ++ HTTPTotal: util.IntP(10), ++ }, ++ Security: types2_4.Security{ ++ TLS: types2_4.TLS{ ++ CertificateAuthorities: []types2_4.CaReference{ ++ { ++ Source: "https://example.com", ++ Verification: types2_4.Verification{ ++ Hash: &aSha512Hash, ++ }, ++ }, ++ }, ++ }, ++ }, ++ Proxy: types2_4.Proxy{ ++ HTTPProxy: "https://proxy.example.net/", ++ HTTPSProxy: "https://secure.proxy.example.net/", ++ NoProxy: []types2_4.NoProxyItem{ ++ "www.example.net", ++ "www.example2.net", ++ }, ++ }, ++ }, ++ Storage: types2_4.Storage{ ++ Disks: []types2_4.Disk{ ++ { ++ Device: "/dev/sda", ++ WipeTable: true, ++ Partitions: []types2_4.Partition{ ++ { ++ Label: util.StrP("var"), ++ Number: 1, ++ SizeMiB: util.IntP(5000), ++ StartMiB: util.IntP(2048), ++ TypeGUID: aUUID, ++ GUID: aUUID, ++ WipePartitionEntry: true, ++ ShouldExist: util.BoolP(true), ++ }, ++ }, ++ }, ++ }, ++ Raid: []types2_4.Raid{ ++ { ++ Name: "array", ++ Level: "raid10", ++ Devices: []types2_4.Device{"/dev/sdb", "/dev/sdc"}, ++ Spares: 1, ++ Options: []types2_4.RaidOption{"foobar"}, ++ }, ++ }, ++ Filesystems: []types2_4.Filesystem{ ++ { ++ Name: "/var", ++ Mount: &types2_4.Mount{ ++ Device: "/dev/disk/by-partlabel/var", ++ Format: "xfs", ++ WipeFilesystem: true, ++ Label: util.StrP("var"), ++ UUID: &aUUID, ++ Options: []types2_4.MountOption{"rw"}, ++ }, ++ }, ++ }, ++ Files: []types2_4.File{ ++ { ++ Node: types2_4.Node{ ++ Filesystem: "/var", ++ Path: "/varfile", ++ Overwrite: util.BoolPStrict(false), ++ User: &types2_4.NodeUser{ ++ ID: util.IntP(1000), ++ }, ++ Group: &types2_4.NodeGroup{ ++ Name: "groupname", ++ }, ++ }, ++ FileEmbedded1: types2_4.FileEmbedded1{ ++ Append: true, ++ Mode: util.IntP(420), ++ Contents: types2_4.FileContents{ ++ Compression: "gzip", ++ Source: "https://example.com", ++ Verification: types2_4.Verification{ ++ Hash: &aSha512Hash, ++ }, ++ HTTPHeaders: types2_4.HTTPHeaders{ ++ types2_4.HTTPHeader{ ++ Name: "Authorization", ++ Value: "Basic YWxhZGRpbjpvcGVuc2VzYW1l", ++ }, ++ types2_4.HTTPHeader{ ++ Name: "User-Agent", ++ Value: "Mozilla/5.0 (compatible; MSIE 6.0; Windows NT 5.1)", ++ }, ++ }, ++ }, ++ }, ++ }, ++ { ++ Node: types2_4.Node{ ++ Filesystem: "root", ++ Path: "/empty", ++ Overwrite: util.BoolPStrict(false), ++ }, ++ FileEmbedded1: types2_4.FileEmbedded1{ ++ Mode: util.IntP(420), ++ }, ++ }, ++ }, ++ Directories: []types2_4.Directory{ ++ { ++ Node: types2_4.Node{ ++ Filesystem: "root", ++ Path: "/rootdir", ++ Overwrite: util.BoolP(true), ++ User: &types2_4.NodeUser{ ++ ID: util.IntP(1000), ++ }, ++ Group: &types2_4.NodeGroup{ ++ Name: "groupname", ++ }, ++ }, ++ DirectoryEmbedded1: types2_4.DirectoryEmbedded1{ ++ Mode: util.IntP(420), ++ }, ++ }, ++ }, ++ Links: []types2_4.Link{ ++ { ++ Node: types2_4.Node{ ++ Filesystem: "root", ++ Path: "/rootlink", ++ Overwrite: util.BoolP(true), ++ User: &types2_4.NodeUser{ ++ ID: util.IntP(1000), ++ }, ++ Group: &types2_4.NodeGroup{ ++ Name: "groupname", ++ }, ++ }, ++ LinkEmbedded1: types2_4.LinkEmbedded1{ ++ Hard: false, ++ Target: "/foobar", ++ }, ++ }, ++ }, ++ }, ++ } ++ ++ config3_1WithNoFSOptions = types3_1.Config{ ++ Ignition: types3_1.Ignition{ ++ Version: "3.1.0", ++ Config: types3_1.IgnitionConfig{ ++ Merge: []types3_1.Resource{ ++ { ++ Source: util.StrP("https://example.com"), ++ Verification: types3_1.Verification{ ++ Hash: &aSha512Hash, ++ }, ++ }, ++ }, ++ Replace: types3_1.Resource{ ++ Source: util.StrP("https://example.com"), ++ Verification: types3_1.Verification{ ++ Hash: &aSha512Hash, ++ }, ++ }, ++ }, ++ Timeouts: types3_1.Timeouts{ ++ HTTPResponseHeaders: util.IntP(5), ++ HTTPTotal: util.IntP(10), ++ }, ++ Security: types3_1.Security{ ++ TLS: types3_1.TLS{ ++ CertificateAuthorities: []types3_1.Resource{ ++ { ++ Source: util.StrP("https://example.com"), ++ Verification: types3_1.Verification{ ++ Hash: &aSha512Hash, ++ }, ++ }, ++ }, ++ }, ++ }, ++ Proxy: types3_1.Proxy{ ++ HTTPProxy: util.StrP("https://proxy.example.net/"), ++ HTTPSProxy: util.StrP("https://secure.proxy.example.net/"), ++ NoProxy: []types3_1.NoProxyItem{ ++ "www.example.net", ++ "www.example2.net", ++ }, ++ }, ++ }, ++ Storage: types3_1.Storage{ ++ Disks: []types3_1.Disk{ ++ { ++ Device: "/dev/sda", ++ WipeTable: util.BoolP(true), ++ Partitions: []types3_1.Partition{ ++ { ++ Label: util.StrP("var"), ++ Number: 1, ++ SizeMiB: util.IntP(5000), ++ StartMiB: util.IntP(2048), ++ TypeGUID: &aUUID, ++ GUID: &aUUID, ++ WipePartitionEntry: util.BoolP(true), ++ ShouldExist: util.BoolP(true), ++ }, ++ }, ++ }, ++ }, ++ Raid: []types3_1.Raid{ ++ { ++ Name: "array", ++ Level: "raid10", ++ Devices: []types3_1.Device{"/dev/sdb", "/dev/sdc"}, ++ Spares: util.IntP(1), ++ Options: []types3_1.RaidOption{"foobar"}, ++ }, ++ }, ++ Filesystems: []types3_1.Filesystem{ ++ { ++ Path: util.StrP("/var"), ++ Device: "/dev/disk/by-partlabel/var", ++ Format: util.StrP("xfs"), ++ WipeFilesystem: util.BoolP(true), ++ Label: util.StrP("var"), ++ UUID: &aUUID, ++ Options: []types3_1.FilesystemOption{ ++ types3_1.FilesystemOption("--label=var"), ++ types3_1.FilesystemOption("--uuid=9d6e42cd-dcef-4177-b4c6-2a0c979e3d82"), ++ }, ++ }, ++ }, ++ Files: []types3_1.File{ ++ { ++ Node: types3_1.Node{ ++ Path: "/var/varfile", ++ Overwrite: util.BoolPStrict(false), ++ User: types3_1.NodeUser{ ++ ID: util.IntP(1000), ++ }, ++ Group: types3_1.NodeGroup{ ++ Name: util.StrP("groupname"), ++ }, ++ }, ++ FileEmbedded1: types3_1.FileEmbedded1{ ++ Mode: util.IntP(420), ++ Append: []types3_1.Resource{ ++ { ++ Compression: util.StrP("gzip"), ++ Source: util.StrP("https://example.com"), ++ Verification: types3_1.Verification{ ++ Hash: &aSha512Hash, ++ }, ++ HTTPHeaders: types3_1.HTTPHeaders{ ++ types3_1.HTTPHeader{ ++ Name: "Authorization", ++ Value: util.StrP("Basic YWxhZGRpbjpvcGVuc2VzYW1l"), ++ }, ++ types3_1.HTTPHeader{ ++ Name: "User-Agent", ++ Value: util.StrP("Mozilla/5.0 (compatible; MSIE 6.0; Windows NT 5.1)"), ++ }, ++ }, ++ }, ++ }, ++ }, ++ }, ++ { ++ Node: types3_1.Node{ ++ Path: "/empty", ++ Overwrite: util.BoolPStrict(false), ++ }, ++ FileEmbedded1: types3_1.FileEmbedded1{ ++ Mode: util.IntP(420), ++ Contents: types3_1.Resource{ ++ Source: util.StrPStrict(""), ++ }, ++ }, ++ }, ++ { ++ Node: types3_1.Node{ ++ Path: "/etc/systemd/network/00-eth.network", ++ Overwrite: util.BoolPStrict(true), ++ }, ++ FileEmbedded1: types3_1.FileEmbedded1{ ++ Mode: util.IntP(420), ++ Contents: types3_1.Resource{ ++ Source: util.StrPStrict("data:,%5BMatch%5D%0AType=%21vlan%20bond%20bridge%0AName=eth%2A%0A%0A%5BNetwork%5D%0ABond=bond0"), ++ }, ++ }, ++ }, ++ { ++ Node: types3_1.Node{ ++ Path: "/etc/systemd/network/00-eth.network.d/dropin-1.conf", ++ Overwrite: util.BoolPStrict(true), ++ }, ++ FileEmbedded1: types3_1.FileEmbedded1{ ++ Mode: util.IntP(420), ++ Contents: types3_1.Resource{ ++ Source: util.StrPStrict("data:,%5BMatch%5D%0AName=bond0%0A%0A%5BNetwork%5D%0ADHCP=true"), ++ }, ++ }, ++ }, ++ { ++ Node: types3_1.Node{ ++ Path: "/etc/systemd/network/99-eth.network", ++ Overwrite: util.BoolPStrict(true), ++ }, ++ FileEmbedded1: types3_1.FileEmbedded1{ ++ Mode: util.IntP(420), ++ Contents: types3_1.Resource{ ++ Source: util.StrPStrict("data:,%5BMatch%5D%0AName=eth12%0A%0A%5BNetwork%5D%0ABond=bond0"), ++ }, ++ }, ++ }, ++ }, ++ Directories: []types3_1.Directory{ ++ { ++ Node: types3_1.Node{ ++ Path: "/rootdir", ++ Overwrite: util.BoolP(true), ++ User: types3_1.NodeUser{ ++ ID: util.IntP(1000), ++ }, ++ Group: types3_1.NodeGroup{ ++ Name: util.StrP("groupname"), ++ }, ++ }, ++ DirectoryEmbedded1: types3_1.DirectoryEmbedded1{ ++ Mode: util.IntP(420), ++ }, ++ }, ++ }, ++ Links: []types3_1.Link{ ++ { ++ Node: types3_1.Node{ ++ Path: "/rootlink", ++ Overwrite: util.BoolP(true), ++ User: types3_1.NodeUser{ ++ ID: util.IntP(1000), ++ }, ++ Group: types3_1.NodeGroup{ ++ Name: util.StrP("groupname"), ++ }, ++ }, ++ LinkEmbedded1: types3_1.LinkEmbedded1{ ++ Hard: util.BoolP(false), ++ Target: "/foobar", ++ }, ++ }, ++ }, ++ }, ++ Passwd: types3_1.Passwd{ ++ Users: []types3_1.PasswdUser{ ++ { ++ Name: "user", ++ UID: &userID, ++ Groups: []types3_1.Group{ ++ "docker", ++ }, ++ }, ++ }, ++ }, ++ } ++ ++ config3_1WithNoFSOptionsAndNoLabel = types3_1.Config{ ++ Ignition: types3_1.Ignition{ ++ Version: "3.1.0", ++ Config: types3_1.IgnitionConfig{ ++ Merge: []types3_1.Resource{ ++ { ++ Source: util.StrP("https://example.com"), ++ Verification: types3_1.Verification{ ++ Hash: &aSha512Hash, ++ }, ++ }, ++ }, ++ Replace: types3_1.Resource{ ++ Source: util.StrP("https://example.com"), ++ Verification: types3_1.Verification{ ++ Hash: &aSha512Hash, ++ }, ++ }, ++ }, ++ Timeouts: types3_1.Timeouts{ ++ HTTPResponseHeaders: util.IntP(5), ++ HTTPTotal: util.IntP(10), ++ }, ++ Security: types3_1.Security{ ++ TLS: types3_1.TLS{ ++ CertificateAuthorities: []types3_1.Resource{ ++ { ++ Source: util.StrP("https://example.com"), ++ Verification: types3_1.Verification{ ++ Hash: &aSha512Hash, ++ }, ++ }, ++ }, ++ }, ++ }, ++ Proxy: types3_1.Proxy{ ++ HTTPProxy: util.StrP("https://proxy.example.net/"), ++ HTTPSProxy: util.StrP("https://secure.proxy.example.net/"), ++ NoProxy: []types3_1.NoProxyItem{ ++ "www.example.net", ++ "www.example2.net", ++ }, ++ }, ++ }, ++ Storage: types3_1.Storage{ ++ Disks: []types3_1.Disk{ ++ { ++ Device: "/dev/sda", ++ WipeTable: util.BoolP(true), ++ Partitions: []types3_1.Partition{ ++ { ++ Label: util.StrP("var"), ++ Number: 1, ++ SizeMiB: util.IntP(5000), ++ StartMiB: util.IntP(2048), ++ TypeGUID: &aUUID, ++ GUID: &aUUID, ++ WipePartitionEntry: util.BoolP(true), ++ ShouldExist: util.BoolP(true), ++ }, ++ }, ++ }, ++ }, ++ Raid: []types3_1.Raid{ ++ { ++ Name: "array", ++ Level: "raid10", ++ Devices: []types3_1.Device{"/dev/sdb", "/dev/sdc"}, ++ Spares: util.IntP(1), ++ Options: []types3_1.RaidOption{"foobar"}, ++ }, ++ }, ++ Filesystems: []types3_1.Filesystem{ ++ { ++ Path: util.StrP("/var"), ++ Device: "/dev/disk/by-partlabel/var", ++ Format: util.StrP("xfs"), ++ WipeFilesystem: util.BoolP(true), ++ UUID: &aUUID, ++ Options: []types3_1.FilesystemOption{ ++ types3_1.FilesystemOption("--labl=ROOT"), ++ types3_1.FilesystemOption("--uuid=9d6e42cd-dcef-4177-b4c6-2a0c979e3d82"), ++ }, ++ }, ++ }, ++ Files: []types3_1.File{ ++ { ++ Node: types3_1.Node{ ++ Path: "/var/varfile", ++ Overwrite: util.BoolPStrict(false), ++ User: types3_1.NodeUser{ ++ ID: util.IntP(1000), ++ }, ++ Group: types3_1.NodeGroup{ ++ Name: util.StrP("groupname"), ++ }, ++ }, ++ FileEmbedded1: types3_1.FileEmbedded1{ ++ Mode: util.IntP(420), ++ Append: []types3_1.Resource{ ++ { ++ Compression: util.StrP("gzip"), ++ Source: util.StrP("https://example.com"), ++ Verification: types3_1.Verification{ ++ Hash: &aSha512Hash, ++ }, ++ HTTPHeaders: types3_1.HTTPHeaders{ ++ types3_1.HTTPHeader{ ++ Name: "Authorization", ++ Value: util.StrP("Basic YWxhZGRpbjpvcGVuc2VzYW1l"), ++ }, ++ types3_1.HTTPHeader{ ++ Name: "User-Agent", ++ Value: util.StrP("Mozilla/5.0 (compatible; MSIE 6.0; Windows NT 5.1)"), ++ }, ++ }, ++ }, ++ }, ++ }, ++ }, ++ { ++ Node: types3_1.Node{ ++ Path: "/empty", ++ Overwrite: util.BoolPStrict(false), ++ }, ++ FileEmbedded1: types3_1.FileEmbedded1{ ++ Mode: util.IntP(420), ++ Contents: types3_1.Resource{ ++ Source: util.StrPStrict(""), ++ }, ++ }, ++ }, ++ }, ++ Directories: []types3_1.Directory{ ++ { ++ Node: types3_1.Node{ ++ Path: "/rootdir", ++ Overwrite: util.BoolP(true), ++ User: types3_1.NodeUser{ ++ ID: util.IntP(1000), ++ }, ++ Group: types3_1.NodeGroup{ ++ Name: util.StrP("groupname"), ++ }, ++ }, ++ DirectoryEmbedded1: types3_1.DirectoryEmbedded1{ ++ Mode: util.IntP(420), ++ }, ++ }, ++ }, ++ Links: []types3_1.Link{ ++ { ++ Node: types3_1.Node{ ++ Path: "/rootlink", ++ Overwrite: util.BoolP(true), ++ User: types3_1.NodeUser{ ++ ID: util.IntP(1000), ++ }, ++ Group: types3_1.NodeGroup{ ++ Name: util.StrP("groupname"), ++ }, ++ }, ++ LinkEmbedded1: types3_1.LinkEmbedded1{ ++ Hard: util.BoolP(false), ++ Target: "/foobar", ++ }, ++ }, ++ }, ++ }, ++ } ++ ++ nonexhaustiveConfig3_1 = types3_1.Config{ ++ Ignition: types3_1.Ignition{ ++ Version: "3.1.0", ++ Config: types3_1.IgnitionConfig{ ++ Merge: []types3_1.Resource{ ++ { ++ Source: util.StrP("https://example.com"), ++ Verification: types3_1.Verification{ ++ Hash: &aSha512Hash, ++ }, ++ }, ++ }, ++ Replace: types3_1.Resource{ ++ Source: util.StrP("https://example.com"), ++ Verification: types3_1.Verification{ ++ Hash: &aSha512Hash, ++ }, ++ }, ++ }, ++ Timeouts: types3_1.Timeouts{ ++ HTTPResponseHeaders: util.IntP(5), ++ HTTPTotal: util.IntP(10), ++ }, ++ Security: types3_1.Security{ ++ TLS: types3_1.TLS{ ++ CertificateAuthorities: []types3_1.Resource{ ++ { ++ Source: util.StrP("https://example.com"), ++ Verification: types3_1.Verification{ ++ Hash: &aSha512Hash, ++ }, ++ }, ++ }, ++ }, ++ }, ++ Proxy: types3_1.Proxy{ ++ HTTPProxy: util.StrP("https://proxy.example.net/"), ++ HTTPSProxy: util.StrP("https://secure.proxy.example.net/"), ++ NoProxy: []types3_1.NoProxyItem{ ++ "www.example.net", ++ "www.example2.net", ++ }, ++ }, ++ }, ++ Storage: types3_1.Storage{ ++ Disks: []types3_1.Disk{ ++ { ++ Device: "/dev/sda", ++ WipeTable: util.BoolP(true), ++ Partitions: []types3_1.Partition{ ++ { ++ Label: util.StrP("var"), ++ Number: 1, ++ SizeMiB: util.IntP(5000), ++ StartMiB: util.IntP(2048), ++ TypeGUID: &aUUID, ++ GUID: &aUUID, ++ WipePartitionEntry: util.BoolP(true), ++ ShouldExist: util.BoolP(true), ++ }, ++ }, ++ }, ++ }, ++ Raid: []types3_1.Raid{ ++ { ++ Name: "array", ++ Level: "raid10", ++ Devices: []types3_1.Device{"/dev/sdb", "/dev/sdc"}, ++ Spares: util.IntP(1), ++ Options: []types3_1.RaidOption{"foobar"}, ++ }, ++ }, ++ Filesystems: []types3_1.Filesystem{ ++ { ++ Path: util.StrP("/var"), ++ Device: "/dev/disk/by-partlabel/var", ++ Format: util.StrP("xfs"), ++ WipeFilesystem: util.BoolP(true), ++ Label: util.StrP("var"), ++ UUID: &aUUID, ++ Options: []types3_1.FilesystemOption{"rw"}, ++ }, ++ }, ++ Files: []types3_1.File{ ++ { ++ Node: types3_1.Node{ ++ Path: "/var/varfile", ++ Overwrite: util.BoolPStrict(false), ++ User: types3_1.NodeUser{ ++ ID: util.IntP(1000), ++ }, ++ Group: types3_1.NodeGroup{ ++ Name: util.StrP("groupname"), ++ }, ++ }, ++ FileEmbedded1: types3_1.FileEmbedded1{ ++ Mode: util.IntP(420), ++ Append: []types3_1.Resource{ ++ { ++ Compression: util.StrP("gzip"), ++ Source: util.StrP("https://example.com"), ++ Verification: types3_1.Verification{ ++ Hash: &aSha512Hash, ++ }, ++ HTTPHeaders: types3_1.HTTPHeaders{ ++ types3_1.HTTPHeader{ ++ Name: "Authorization", ++ Value: util.StrP("Basic YWxhZGRpbjpvcGVuc2VzYW1l"), ++ }, ++ types3_1.HTTPHeader{ ++ Name: "User-Agent", ++ Value: util.StrP("Mozilla/5.0 (compatible; MSIE 6.0; Windows NT 5.1)"), ++ }, ++ }, ++ }, ++ }, ++ }, ++ }, ++ { ++ Node: types3_1.Node{ ++ Path: "/empty", ++ Overwrite: util.BoolPStrict(false), ++ }, ++ FileEmbedded1: types3_1.FileEmbedded1{ ++ Mode: util.IntP(420), ++ Contents: types3_1.Resource{ ++ Source: util.StrPStrict(""), ++ }, ++ }, ++ }, ++ }, ++ Directories: []types3_1.Directory{ ++ { ++ Node: types3_1.Node{ ++ Path: "/rootdir", ++ Overwrite: util.BoolP(true), ++ User: types3_1.NodeUser{ ++ ID: util.IntP(1000), ++ }, ++ Group: types3_1.NodeGroup{ ++ Name: util.StrP("groupname"), ++ }, ++ }, ++ DirectoryEmbedded1: types3_1.DirectoryEmbedded1{ ++ Mode: util.IntP(420), ++ }, ++ }, ++ }, ++ Links: []types3_1.Link{ ++ { ++ Node: types3_1.Node{ ++ Path: "/rootlink", ++ Overwrite: util.BoolP(true), ++ User: types3_1.NodeUser{ ++ ID: util.IntP(1000), ++ }, ++ Group: types3_1.NodeGroup{ ++ Name: util.StrP("groupname"), ++ }, ++ }, ++ LinkEmbedded1: types3_1.LinkEmbedded1{ ++ Hard: util.BoolP(false), ++ Target: "/foobar", ++ }, ++ }, ++ }, ++ }, ++ } ++) ++ ++type input2_4 struct { ++ cfg types2_4.Config ++ fsMap map[string]string ++} ++ ++func TestCheck2_4WithGeneratedFSMap(t *testing.T) { ++ // in this config, Filesystem Name is not passed ++ // to verify the FS generation mechanism. ++ cfg := types2_4.Config{ ++ Ignition: types2_4.Ignition{ ++ Version: "2.4.0", ++ }, ++ Storage: types2_4.Storage{ ++ Filesystems: []types2_4.Filesystem{ ++ { ++ Mount: &types2_4.Mount{ ++ Device: "/dev/disk/by-partlabel/var", ++ Format: "xfs", ++ Create: &types2_4.Create{ ++ Force: true, ++ }, ++ }, ++ }, ++ }, ++ }, ++ } ++ fsMap := make(map[string]string) ++ ++ if err := v24tov31.Check2_4(cfg, fsMap); err != nil { ++ t.Errorf("error should be nil got: %v", err) ++ } ++ ++ if len(fsMap) != 2 { ++ t.Errorf("fsMap should have 2 keys: 'root' and a generated one. Got: %d", len(fsMap)) ++ } ++} ++ ++func TestCheck2_4(t *testing.T) { ++ goodConfigs := []input2_4{ ++ { ++ exhaustiveConfig2_4, ++ exhaustiveMap, ++ }, ++ } ++ badConfigs := []input2_4{ ++ {}, // empty config has no version, fails validation ++ { ++ // use `mount.create` with `mount.create.force` set to false. ++ badDeprecatedConfig2_4, ++ exhaustiveMap, ++ }, ++ } ++ for i, e := range goodConfigs { ++ if err := v24tov31.Check2_4(e.cfg, e.fsMap); err != nil { ++ t.Errorf("Good config test %d: got %v, expected nil", i, err) ++ } ++ } ++ for i, e := range badConfigs { ++ if err := v24tov31.Check2_4(e.cfg, e.fsMap); err == nil { ++ t.Errorf("Bad config test %d: got ok, expected: %v", i, err) ++ } ++ } ++} ++ ++func TestTranslate2_4to3_1(t *testing.T) { ++ res, err := v24tov31.Translate(exhaustiveConfig2_4, exhaustiveMap) ++ if err != nil { ++ t.Fatalf("Failed translation: %v", err) ++ } ++ assert.Equal(t, nonexhaustiveConfig3_1, res) ++} ++ ++func TestTranslateDeprecated2_4to3_1(t *testing.T) { ++ res, err := v24tov31.Translate(deprecatedConfig2_4, exhaustiveMap) ++ if err != nil { ++ t.Fatalf("Failed translation: %v", err) ++ } ++ assert.Equal(t, config3_1WithNoFSOptions, res) ++} ++ ++func TestTranslateWrongDeprecated2_4to3_1(t *testing.T) { ++ res, err := v24tov31.Translate(wrongDeprecatedConfig2_4, exhaustiveMap) ++ if err != nil { ++ t.Fatalf("Failed translation: %v", err) ++ } ++ assert.Equal(t, config3_1WithNoFSOptionsAndNoLabel, res) ++} ++ ++func TestRemoveDuplicateFilesUnitsUsers2_4(t *testing.T) { ++ mode := 420 ++ testDataOld := "data:,old" ++ testDataNew := "data:,new" ++ testIgn2Config := types2_4.Config{} ++ ++ // file test, add a duplicate file and see if the newest one is preserved ++ fileOld := types2_4.File{ ++ Node: types2_4.Node{ ++ Filesystem: "root", Path: "/etc/testfileconfig", ++ }, ++ FileEmbedded1: types2_4.FileEmbedded1{ ++ Contents: types2_4.FileContents{ ++ Source: testDataOld, ++ }, ++ Mode: &mode, ++ }, ++ } ++ testIgn2Config.Storage.Files = append(testIgn2Config.Storage.Files, fileOld) ++ ++ fileNew := types2_4.File{ ++ Node: types2_4.Node{ ++ Filesystem: "root", Path: "/etc/testfileconfig", ++ }, ++ FileEmbedded1: types2_4.FileEmbedded1{ ++ Contents: types2_4.FileContents{ ++ Source: testDataNew, ++ }, ++ Mode: &mode, ++ }, ++ } ++ testIgn2Config.Storage.Files = append(testIgn2Config.Storage.Files, fileNew) ++ ++ // unit test, add three units and three dropins with the same name as follows: ++ // unitOne: ++ // contents: old ++ // dropin: ++ // name: one ++ // contents: old ++ // unitTwo: ++ // dropin: ++ // name: one ++ // contents: new ++ // unitThree: ++ // contents: new ++ // dropin: ++ // name: two ++ // contents: new ++ // Which should result in: ++ // unitFinal: ++ // contents: new ++ // dropin: ++ // - name: one ++ // contents: new ++ // - name: two ++ // contents: new ++ // ++ unitName := "testUnit" ++ dropinNameOne := "one" ++ dropinNameTwo := "two" ++ dropinOne := types2_4.SystemdDropin{ ++ Contents: testDataOld, ++ Name: dropinNameOne, ++ } ++ dropinTwo := types2_4.SystemdDropin{ ++ Contents: testDataNew, ++ Name: dropinNameOne, ++ } ++ dropinThree := types2_4.SystemdDropin{ ++ Contents: testDataNew, ++ Name: dropinNameTwo, ++ } ++ ++ unitOne := types2_4.Unit{ ++ Contents: testDataOld, ++ Name: unitName, ++ } ++ unitOne.Dropins = append(unitOne.Dropins, dropinOne) ++ testIgn2Config.Systemd.Units = append(testIgn2Config.Systemd.Units, unitOne) ++ ++ unitTwo := types2_4.Unit{ ++ Name: unitName, ++ } ++ unitTwo.Dropins = append(unitTwo.Dropins, dropinTwo) ++ testIgn2Config.Systemd.Units = append(testIgn2Config.Systemd.Units, unitTwo) ++ ++ unitThree := types2_4.Unit{ ++ Contents: testDataNew, ++ Name: unitName, ++ } ++ unitThree.Dropins = append(unitThree.Dropins, dropinThree) ++ testIgn2Config.Systemd.Units = append(testIgn2Config.Systemd.Units, unitThree) ++ ++ // user test, add a duplicate user and see if it is deduplicated but ssh keys from both are preserved ++ userName := "testUser" ++ userOne := types2_4.PasswdUser{ ++ Name: userName, ++ SSHAuthorizedKeys: []types2_4.SSHAuthorizedKey{ ++ "one", ++ "two", ++ }, ++ } ++ userTwo := types2_4.PasswdUser{ ++ Name: userName, ++ SSHAuthorizedKeys: []types2_4.SSHAuthorizedKey{ ++ "three", ++ }, ++ } ++ userThree := types2_4.PasswdUser{ ++ Name: "userThree", ++ SSHAuthorizedKeys: []types2_4.SSHAuthorizedKey{ ++ "four", ++ }, ++ } ++ testIgn2Config.Passwd.Users = append(testIgn2Config.Passwd.Users, userOne, userTwo, userThree) ++ ++ convertedIgn2Config, err := v24tov31.RemoveDuplicateFilesUnitsUsers(testIgn2Config) ++ assert.NoError(t, err) ++ ++ expectedIgn2Config := types2_4.Config{} ++ expectedIgn2Config.Storage.Files = append(expectedIgn2Config.Storage.Files, fileNew) ++ unitExpected := types2_4.Unit{ ++ Contents: testDataNew, ++ Name: unitName, ++ } ++ unitExpected.Dropins = append(unitExpected.Dropins, dropinThree) ++ unitExpected.Dropins = append(unitExpected.Dropins, dropinTwo) ++ expectedIgn2Config.Systemd.Units = append(expectedIgn2Config.Systemd.Units, unitExpected) ++ expectedMergedUser := types2_4.PasswdUser{ ++ Name: userName, ++ SSHAuthorizedKeys: []types2_4.SSHAuthorizedKey{ ++ "three", ++ "one", ++ "two", ++ }, ++ } ++ expectedIgn2Config.Passwd.Users = append(expectedIgn2Config.Passwd.Users, userThree, expectedMergedUser) ++ assert.Equal(t, expectedIgn2Config, convertedIgn2Config) ++} ++ ++func TestDuplicateUnits(t *testing.T) { ++ tests := []struct { ++ ign2 types2_4.Config ++ ign3 types3_1.Config ++ err error ++ }{ ++ { ++ ign2: types2_4.Config{ ++ Ignition: types2_4.Ignition{ ++ Version: "2.4.0", ++ Config: types2_4.IgnitionConfig{}, ++ Timeouts: types2_4.Timeouts{}, ++ Security: types2_4.Security{}, ++ Proxy: types2_4.Proxy{}, ++ }, ++ Systemd: types2_4.Systemd{ ++ Units: []types2_4.Unit{ ++ { ++ Name: "kubeadm.service", ++ Enable: true, ++ Dropins: []types2_4.SystemdDropin{ ++ { ++ Name: "10-flatcar.conf", ++ Contents: "[Service]\nExecStart=", ++ }, ++ }, ++ }, ++ { ++ Name: "kubeadm.service", ++ Enable: true, ++ Dropins: []types2_4.SystemdDropin{ ++ { ++ Name: "20-flatcar.conf", ++ Contents: "[Service]\nExecStart=", ++ }, ++ }, ++ }, ++ { ++ Name: "kubeadm.service", ++ Enable: true, ++ }, ++ }, ++ }, ++ }, ++ ign3: types3_1.Config{ ++ Ignition: types3_1.Ignition{ ++ Version: "3.1.0", ++ Config: types3_1.IgnitionConfig{}, ++ Timeouts: types3_1.Timeouts{}, ++ Security: types3_1.Security{}, ++ Proxy: types3_1.Proxy{}, ++ }, ++ Systemd: types3_1.Systemd{ ++ Units: []types3_1.Unit{ ++ { ++ Name: "kubeadm.service", ++ Enabled: util.BoolP(true), ++ Dropins: []types3_1.Dropin{ ++ { ++ Name: "10-flatcar.conf", ++ Contents: util.StrP("[Service]\nExecStart="), ++ }, ++ { ++ Name: "20-flatcar.conf", ++ Contents: util.StrP("[Service]\nExecStart="), ++ }, ++ }, ++ }, ++ }, ++ }, ++ }, ++ err: nil, ++ }, ++ { ++ ign2: types2_4.Config{ ++ Ignition: types2_4.Ignition{ ++ Version: "2.4.0", ++ Config: types2_4.IgnitionConfig{}, ++ Timeouts: types2_4.Timeouts{}, ++ Security: types2_4.Security{}, ++ Proxy: types2_4.Proxy{}, ++ }, ++ Systemd: types2_4.Systemd{ ++ Units: []types2_4.Unit{ ++ { ++ Name: "kubeadm.service", ++ Enable: true, ++ Dropins: []types2_4.SystemdDropin{ ++ { ++ Name: "10-flatcar.conf", ++ Contents: "[Service]\nExecStart=", ++ }, ++ }, ++ }, ++ { ++ Name: "kubeadm.service", ++ Enable: true, ++ Dropins: []types2_4.SystemdDropin{ ++ { ++ Name: "20-flatcar.conf", ++ Contents: "[Service]\nExecStart=", ++ }, ++ }, ++ }, ++ }, ++ }, ++ }, ++ ign3: types3_1.Config{ ++ Ignition: types3_1.Ignition{ ++ Version: "3.1.0", ++ Config: types3_1.IgnitionConfig{}, ++ Timeouts: types3_1.Timeouts{}, ++ Security: types3_1.Security{}, ++ Proxy: types3_1.Proxy{}, ++ }, ++ Systemd: types3_1.Systemd{ ++ Units: []types3_1.Unit{ ++ { ++ Name: "kubeadm.service", ++ Enabled: util.BoolP(true), ++ Dropins: []types3_1.Dropin{ ++ { ++ Name: "10-flatcar.conf", ++ Contents: util.StrP("[Service]\nExecStart="), ++ }, ++ { ++ Name: "20-flatcar.conf", ++ Contents: util.StrP("[Service]\nExecStart="), ++ }, ++ }, ++ }, ++ }, ++ }, ++ }, ++ err: nil, ++ }, ++ { ++ ign2: types2_4.Config{ ++ Ignition: types2_4.Ignition{ ++ Version: "2.4.0", ++ Config: types2_4.IgnitionConfig{}, ++ Timeouts: types2_4.Timeouts{}, ++ Security: types2_4.Security{}, ++ Proxy: types2_4.Proxy{}, ++ }, ++ Systemd: types2_4.Systemd{ ++ Units: []types2_4.Unit{ ++ { ++ Name: "kubeadm.service", ++ Enable: true, ++ }, ++ { ++ Name: "kubeadm.service", ++ Enable: true, ++ Dropins: []types2_4.SystemdDropin{ ++ { ++ Name: "10-flatcar.conf", ++ Contents: "[Service]\nExecStart=", ++ }, ++ { ++ Name: "20-flatcar.conf", ++ Contents: "[Service]\nExecStart=", ++ }, ++ }, ++ }, ++ }, ++ }, ++ }, ++ ign3: types3_1.Config{ ++ Ignition: types3_1.Ignition{ ++ Version: "3.1.0", ++ Config: types3_1.IgnitionConfig{}, ++ Timeouts: types3_1.Timeouts{}, ++ Security: types3_1.Security{}, ++ Proxy: types3_1.Proxy{}, ++ }, ++ Systemd: types3_1.Systemd{ ++ Units: []types3_1.Unit{ ++ { ++ Name: "kubeadm.service", ++ Enabled: util.BoolP(true), ++ Dropins: []types3_1.Dropin{ ++ { ++ Name: "10-flatcar.conf", ++ Contents: util.StrP("[Service]\nExecStart="), ++ }, ++ { ++ Name: "20-flatcar.conf", ++ Contents: util.StrP("[Service]\nExecStart="), ++ }, ++ }, ++ }, ++ }, ++ }, ++ }, ++ err: nil, ++ }, ++ { ++ ign2: types2_4.Config{ ++ Ignition: types2_4.Ignition{ ++ Version: "2.4.0", ++ Config: types2_4.IgnitionConfig{}, ++ Timeouts: types2_4.Timeouts{}, ++ Security: types2_4.Security{}, ++ Proxy: types2_4.Proxy{}, ++ }, ++ Systemd: types2_4.Systemd{ ++ Units: []types2_4.Unit{ ++ { ++ Name: "kubeadm.service", ++ Enable: true, ++ }, ++ { ++ Name: "kubeadm.service", ++ Enable: true, ++ }, ++ }, ++ }, ++ }, ++ ign3: types3_1.Config{ ++ Ignition: types3_1.Ignition{ ++ Version: "3.1.0", ++ Config: types3_1.IgnitionConfig{}, ++ Timeouts: types3_1.Timeouts{}, ++ Security: types3_1.Security{}, ++ Proxy: types3_1.Proxy{}, ++ }, ++ Systemd: types3_1.Systemd{ ++ Units: []types3_1.Unit{ ++ { ++ Name: "kubeadm.service", ++ Enabled: util.BoolP(true), ++ }, ++ }, ++ }, ++ }, ++ err: nil, ++ }, ++ } ++ for _, test := range tests { ++ res, err := v24tov31.Translate(test.ign2, nil) ++ ++ assert.Equal(t, test.err, err) ++ assert.Equal(t, test.ign3, res) ++ } ++} +-- +2.35.1 + diff --git a/sdk_container/src/third_party/coreos-overlay/sys-apps/ignition/files/0005-config-v3_4-convert-ignition-2.x-to-3.4-exp.patch b/sdk_container/src/third_party/coreos-overlay/sys-apps/ignition/files/0006-config-v3_4-convert-ignition-2.x-to-3.4-exp.patch similarity index 78% rename from sdk_container/src/third_party/coreos-overlay/sys-apps/ignition/files/0005-config-v3_4-convert-ignition-2.x-to-3.4-exp.patch rename to sdk_container/src/third_party/coreos-overlay/sys-apps/ignition/files/0006-config-v3_4-convert-ignition-2.x-to-3.4-exp.patch index 8ab7fafcf7..61ee6d7470 100644 --- a/sdk_container/src/third_party/coreos-overlay/sys-apps/ignition/files/0005-config-v3_4-convert-ignition-2.x-to-3.4-exp.patch +++ b/sdk_container/src/third_party/coreos-overlay/sys-apps/ignition/files/0006-config-v3_4-convert-ignition-2.x-to-3.4-exp.patch @@ -1,7 +1,7 @@ -From 04bd109f4d6512c80bbd5b2fe0903de2a4dd1d80 Mon Sep 17 00:00:00 2001 +From ab4a9ade5b2e43a4d164392becf8d421256d8ffa Mon Sep 17 00:00:00 2001 From: Mathieu Tortuyaux Date: Wed, 25 May 2022 10:20:09 +0200 -Subject: [PATCH 05/15] config/v3_4: convert ignition 2.x to 3.4-exp +Subject: [PATCH 06/16] config/v3_4: convert ignition 2.x to 3.4-exp if the version of ignition is 2.x we convert it to 3.4-exp using ign-converter. @@ -10,14 +10,14 @@ it should support any 2.x version (or at the least the last 2 releases) Signed-off-by: Mathieu Tortuyaux --- - config/v3_4_experimental/config.go | 38 ++++++++++++++++++++++++++++++ - 1 file changed, 38 insertions(+) + config/v3_4_experimental/config.go | 37 ++++++++++++++++++++++++++++++ + 1 file changed, 37 insertions(+) diff --git a/config/v3_4_experimental/config.go b/config/v3_4_experimental/config.go -index 512fc9f0..b0375236 100644 +index 097dbd83..e666c876 100644 --- a/config/v3_4_experimental/config.go +++ b/config/v3_4_experimental/config.go -@@ -15,6 +15,10 @@ +@@ -15,9 +15,14 @@ package v3_4_experimental import ( @@ -28,16 +28,11 @@ index 512fc9f0..b0375236 100644 "github.com/flatcar/ignition/v2/config/merge" "github.com/flatcar/ignition/v2/config/shared/errors" "github.com/flatcar/ignition/v2/config/util" -@@ -25,6 +29,8 @@ import ( - - "github.com/coreos/go-semver/semver" - "github.com/coreos/vcontext/report" -+ -+ "github.com/flatcar/ign-converter/translate/v24tov31" - ) - - func Merge(parent, child types.Config) types.Config { -@@ -67,6 +73,38 @@ func ParseCompatibleVersion(raw []byte) (types.Config, report.Report, error) { ++ "github.com/flatcar/ignition/v2/config/v24tov31" + prev "github.com/flatcar/ignition/v2/config/v3_3" + "github.com/flatcar/ignition/v2/config/v3_4_experimental/translate" + "github.com/flatcar/ignition/v2/config/v3_4_experimental/types" +@@ -67,6 +72,38 @@ func ParseCompatibleVersion(raw []byte) (types.Config, report.Report, error) { return types.Config{}, rpt, err } diff --git a/sdk_container/src/third_party/coreos-overlay/sys-apps/ignition/files/0006-internal-prv-cmdline-backport-flatcar-patch.patch b/sdk_container/src/third_party/coreos-overlay/sys-apps/ignition/files/0007-internal-prv-cmdline-backport-flatcar-patch.patch similarity index 87% rename from sdk_container/src/third_party/coreos-overlay/sys-apps/ignition/files/0006-internal-prv-cmdline-backport-flatcar-patch.patch rename to sdk_container/src/third_party/coreos-overlay/sys-apps/ignition/files/0007-internal-prv-cmdline-backport-flatcar-patch.patch index bad25daada..d51acc184d 100644 --- a/sdk_container/src/third_party/coreos-overlay/sys-apps/ignition/files/0006-internal-prv-cmdline-backport-flatcar-patch.patch +++ b/sdk_container/src/third_party/coreos-overlay/sys-apps/ignition/files/0007-internal-prv-cmdline-backport-flatcar-patch.patch @@ -1,7 +1,7 @@ -From 731c4c00c7056f4b3333ca0dbe25e0c3b348588a Mon Sep 17 00:00:00 2001 +From c4a13286d36151f7b1b612cca5ceb5e2fdc1306b Mon Sep 17 00:00:00 2001 From: Mathieu Tortuyaux Date: Fri, 30 Jul 2021 14:21:31 +0200 -Subject: [PATCH 06/15] internal/prv/cmdline: backport flatcar patch +Subject: [PATCH 07/16] internal/prv/cmdline: backport flatcar patch this patch provides backward compatibility for various config key @@ -12,7 +12,7 @@ Signed-off-by: Mathieu Tortuyaux 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/internal/providers/cmdline/cmdline.go b/internal/providers/cmdline/cmdline.go -index 0068ed66..80b3af95 100644 +index c8006f02..a2d00627 100644 --- a/internal/providers/cmdline/cmdline.go +++ b/internal/providers/cmdline/cmdline.go @@ -33,7 +33,9 @@ import ( diff --git a/sdk_container/src/third_party/coreos-overlay/sys-apps/ignition/files/0007-provider-qemu-apply-fw_cfg-patch.patch b/sdk_container/src/third_party/coreos-overlay/sys-apps/ignition/files/0008-provider-qemu-apply-fw_cfg-patch.patch similarity index 97% rename from sdk_container/src/third_party/coreos-overlay/sys-apps/ignition/files/0007-provider-qemu-apply-fw_cfg-patch.patch rename to sdk_container/src/third_party/coreos-overlay/sys-apps/ignition/files/0008-provider-qemu-apply-fw_cfg-patch.patch index 1c37f87a6a..01cc03369f 100644 --- a/sdk_container/src/third_party/coreos-overlay/sys-apps/ignition/files/0007-provider-qemu-apply-fw_cfg-patch.patch +++ b/sdk_container/src/third_party/coreos-overlay/sys-apps/ignition/files/0008-provider-qemu-apply-fw_cfg-patch.patch @@ -1,7 +1,7 @@ -From b49c1ecc919a21ff90b71b6a0e67b15600157ad3 Mon Sep 17 00:00:00 2001 +From 8eb60d346a2b792b6fb53fc7066ef4ba789974f9 Mon Sep 17 00:00:00 2001 From: Mathieu Tortuyaux Date: Fri, 13 Aug 2021 11:47:01 +0200 -Subject: [PATCH 07/15] provider/qemu: apply fw_cfg patch +Subject: [PATCH 08/16] provider/qemu: apply fw_cfg patch we support both CoreOS and Flatcar fw_cfg path to ensure compatiblity @@ -11,7 +11,7 @@ Signed-off-by: Mathieu Tortuyaux 1 file changed, 68 insertions(+), 55 deletions(-) diff --git a/internal/providers/qemu/qemu_fwcfg.go b/internal/providers/qemu/qemu_fwcfg.go -index a4ebec6a..0ae9cd66 100644 +index 46ab7ae0..2de49881 100644 --- a/internal/providers/qemu/qemu_fwcfg.go +++ b/internal/providers/qemu/qemu_fwcfg.go @@ -30,6 +30,7 @@ import ( diff --git a/sdk_container/src/third_party/coreos-overlay/sys-apps/ignition/files/0008-config-3_4-test-add-ignition-2.x-test-cases.patch b/sdk_container/src/third_party/coreos-overlay/sys-apps/ignition/files/0009-config-3_4-test-add-ignition-2.x-test-cases.patch similarity index 90% rename from sdk_container/src/third_party/coreos-overlay/sys-apps/ignition/files/0008-config-3_4-test-add-ignition-2.x-test-cases.patch rename to sdk_container/src/third_party/coreos-overlay/sys-apps/ignition/files/0009-config-3_4-test-add-ignition-2.x-test-cases.patch index 15f82ada75..a8e931c7ff 100644 --- a/sdk_container/src/third_party/coreos-overlay/sys-apps/ignition/files/0008-config-3_4-test-add-ignition-2.x-test-cases.patch +++ b/sdk_container/src/third_party/coreos-overlay/sys-apps/ignition/files/0009-config-3_4-test-add-ignition-2.x-test-cases.patch @@ -1,7 +1,7 @@ -From c0105a1aeaf1650b74324457c364ac7e377d80a6 Mon Sep 17 00:00:00 2001 +From 31c8a45bd9468de7e348f28301d979614ae25c83 Mon Sep 17 00:00:00 2001 From: Mathieu Tortuyaux Date: Thu, 2 Sep 2021 11:03:17 +0200 -Subject: [PATCH 08/15] config/3_4/test: add ignition 2.x test cases +Subject: [PATCH 09/16] config/3_4/test: add ignition 2.x test cases Signed-off-by: Mathieu Tortuyaux --- @@ -9,7 +9,7 @@ Signed-off-by: Mathieu Tortuyaux 1 file changed, 20 insertions(+) diff --git a/config/v3_4_experimental/config_test.go b/config/v3_4_experimental/config_test.go -index 7ff31ee8..224c277a 100644 +index e334ca85..eaa817be 100644 --- a/config/v3_4_experimental/config_test.go +++ b/config/v3_4_experimental/config_test.go @@ -149,6 +149,26 @@ func TestParse(t *testing.T) { diff --git a/sdk_container/src/third_party/coreos-overlay/sys-apps/ignition/files/0009-internal-disk-fs-ignore-fs-format-mismatches-for-the.patch b/sdk_container/src/third_party/coreos-overlay/sys-apps/ignition/files/0010-internal-disk-fs-ignore-fs-format-mismatches-for-the.patch similarity index 91% rename from sdk_container/src/third_party/coreos-overlay/sys-apps/ignition/files/0009-internal-disk-fs-ignore-fs-format-mismatches-for-the.patch rename to sdk_container/src/third_party/coreos-overlay/sys-apps/ignition/files/0010-internal-disk-fs-ignore-fs-format-mismatches-for-the.patch index 2686e15965..718ef37551 100644 --- a/sdk_container/src/third_party/coreos-overlay/sys-apps/ignition/files/0009-internal-disk-fs-ignore-fs-format-mismatches-for-the.patch +++ b/sdk_container/src/third_party/coreos-overlay/sys-apps/ignition/files/0010-internal-disk-fs-ignore-fs-format-mismatches-for-the.patch @@ -1,7 +1,7 @@ -From 36a3efc8dfec1b06ee8df97ac87e08f9650cdd24 Mon Sep 17 00:00:00 2001 +From 455292b4dc604c8a4195abf8be5386ff2600ad57 Mon Sep 17 00:00:00 2001 From: Mathieu Tortuyaux Date: Wed, 22 Sep 2021 14:53:49 +0200 -Subject: [PATCH 09/15] internal/disk/fs: ignore fs format mismatches for the +Subject: [PATCH 10/16] internal/disk/fs: ignore fs format mismatches for the OEM partition As soon as the OEM partition's filesystem format changes, all users @@ -22,7 +22,7 @@ Signed-off-by: Mathieu Tortuyaux 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/internal/exec/stages/disks/filesystems.go b/internal/exec/stages/disks/filesystems.go -index ef9028bf..dd251b28 100644 +index b7f3795a..4de09498 100644 --- a/internal/exec/stages/disks/filesystems.go +++ b/internal/exec/stages/disks/filesystems.go @@ -126,7 +126,7 @@ func (s stage) createFilesystem(fs types.Filesystem) error { diff --git a/sdk_container/src/third_party/coreos-overlay/sys-apps/ignition/files/0010-VMware-Fix-guestinfo.-.config.data-and-.config.url-v.patch b/sdk_container/src/third_party/coreos-overlay/sys-apps/ignition/files/0011-VMware-Fix-guestinfo.-.config.data-and-.config.url-v.patch similarity index 96% rename from sdk_container/src/third_party/coreos-overlay/sys-apps/ignition/files/0010-VMware-Fix-guestinfo.-.config.data-and-.config.url-v.patch rename to sdk_container/src/third_party/coreos-overlay/sys-apps/ignition/files/0011-VMware-Fix-guestinfo.-.config.data-and-.config.url-v.patch index c0cf32f0c0..600de7f02b 100644 --- a/sdk_container/src/third_party/coreos-overlay/sys-apps/ignition/files/0010-VMware-Fix-guestinfo.-.config.data-and-.config.url-v.patch +++ b/sdk_container/src/third_party/coreos-overlay/sys-apps/ignition/files/0011-VMware-Fix-guestinfo.-.config.data-and-.config.url-v.patch @@ -1,7 +1,7 @@ -From 840957aac96dee2c954fd821d14e7b41b3979dc7 Mon Sep 17 00:00:00 2001 +From 7b83d08d8d38f5596f1f7b97b6bfa749631d45e0 Mon Sep 17 00:00:00 2001 From: Mathieu Tortuyaux Date: Wed, 25 May 2022 10:34:32 +0200 -Subject: [PATCH 10/15] VMware: Fix guestinfo.*.config.data and *.config.url +Subject: [PATCH 11/16] VMware: Fix guestinfo.*.config.data and *.config.url variables MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 @@ -25,7 +25,7 @@ Co-authored-by: Kai Lüke 1 file changed, 74 insertions(+), 22 deletions(-) diff --git a/internal/providers/vmware/vmware_amd64.go b/internal/providers/vmware/vmware_amd64.go -index 66ff5490..327ad52b 100644 +index 0c2f0d97..3c3d1634 100644 --- a/internal/providers/vmware/vmware_amd64.go +++ b/internal/providers/vmware/vmware_amd64.go @@ -19,6 +19,7 @@ package vmware diff --git a/sdk_container/src/third_party/coreos-overlay/sys-apps/ignition/files/0011-config-version-handle-configuration-version-1.patch b/sdk_container/src/third_party/coreos-overlay/sys-apps/ignition/files/0012-config-version-handle-configuration-version-1.patch similarity index 89% rename from sdk_container/src/third_party/coreos-overlay/sys-apps/ignition/files/0011-config-version-handle-configuration-version-1.patch rename to sdk_container/src/third_party/coreos-overlay/sys-apps/ignition/files/0012-config-version-handle-configuration-version-1.patch index 6641efcd83..f074c93cdd 100644 --- a/sdk_container/src/third_party/coreos-overlay/sys-apps/ignition/files/0011-config-version-handle-configuration-version-1.patch +++ b/sdk_container/src/third_party/coreos-overlay/sys-apps/ignition/files/0012-config-version-handle-configuration-version-1.patch @@ -1,7 +1,7 @@ -From f36f9b24499b1c191538857a3f9faa97008db403 Mon Sep 17 00:00:00 2001 +From 0e139432041a218d7c24cfe9a8844a0bbcb9f3f8 Mon Sep 17 00:00:00 2001 From: Mathieu Tortuyaux Date: Wed, 2 Feb 2022 13:27:18 +0100 -Subject: [PATCH 11/15] config/version: handle configuration version 1 +Subject: [PATCH 12/16] config/version: handle configuration version 1 version 2 should be able to translate configuration version 1 but the `GetConfigVersion` was not able to detect version 1 configuration since for this particular @@ -13,7 +13,7 @@ Signed-off-by: Mathieu Tortuyaux 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/config/util/config.go b/config/util/config.go -index 9fb88d8e..89d815b8 100644 +index 4cdd83b7..f701f4a1 100644 --- a/config/util/config.go +++ b/config/util/config.go @@ -14,6 +14,8 @@ diff --git a/sdk_container/src/third_party/coreos-overlay/sys-apps/ignition/files/0012-config-util-add-cloud-init-detection-to-initial-pars.patch b/sdk_container/src/third_party/coreos-overlay/sys-apps/ignition/files/0013-config-util-add-cloud-init-detection-to-initial-pars.patch similarity index 92% rename from sdk_container/src/third_party/coreos-overlay/sys-apps/ignition/files/0012-config-util-add-cloud-init-detection-to-initial-pars.patch rename to sdk_container/src/third_party/coreos-overlay/sys-apps/ignition/files/0013-config-util-add-cloud-init-detection-to-initial-pars.patch index b7810a3b02..f3f6c2afad 100644 --- a/sdk_container/src/third_party/coreos-overlay/sys-apps/ignition/files/0012-config-util-add-cloud-init-detection-to-initial-pars.patch +++ b/sdk_container/src/third_party/coreos-overlay/sys-apps/ignition/files/0013-config-util-add-cloud-init-detection-to-initial-pars.patch @@ -1,7 +1,7 @@ -From 45c15e838db7ef17cf4ff391195eb4548b5b509e Mon Sep 17 00:00:00 2001 +From 7fd14391857664ac4415f18b0189f17b9732a852 Mon Sep 17 00:00:00 2001 From: Mathieu Tortuyaux Date: Tue, 22 Feb 2022 15:41:13 +0100 -Subject: [PATCH 12/15] config/util: add cloud init detection to initial +Subject: [PATCH 13/16] config/util: add cloud init detection to initial parsing we detect if the config is not an ignition one (script/cloudinit) and we @@ -13,7 +13,7 @@ Signed-off-by: Mathieu Tortuyaux 1 file changed, 39 insertions(+) diff --git a/config/util/parsingErrors.go b/config/util/parsingErrors.go -index 5e2b4a2b..061a488d 100644 +index 865d75d2..914bf2bf 100644 --- a/config/util/parsingErrors.go +++ b/config/util/parsingErrors.go @@ -15,7 +15,12 @@ diff --git a/sdk_container/src/third_party/coreos-overlay/sys-apps/ignition/files/0013-Revert-drop-OEM-URI-support.patch b/sdk_container/src/third_party/coreos-overlay/sys-apps/ignition/files/0014-Revert-drop-OEM-URI-support.patch similarity index 97% rename from sdk_container/src/third_party/coreos-overlay/sys-apps/ignition/files/0013-Revert-drop-OEM-URI-support.patch rename to sdk_container/src/third_party/coreos-overlay/sys-apps/ignition/files/0014-Revert-drop-OEM-URI-support.patch index 8b3f27c53b..1d206b6c5d 100644 --- a/sdk_container/src/third_party/coreos-overlay/sys-apps/ignition/files/0013-Revert-drop-OEM-URI-support.patch +++ b/sdk_container/src/third_party/coreos-overlay/sys-apps/ignition/files/0014-Revert-drop-OEM-URI-support.patch @@ -1,7 +1,7 @@ -From c53d44fd2f59c9cefdc699d55007a92dbbd0f292 Mon Sep 17 00:00:00 2001 +From ed6ea4bd260ff916a55731172b3299067989aa9a Mon Sep 17 00:00:00 2001 From: Mathieu Tortuyaux Date: Wed, 25 May 2022 10:38:16 +0200 -Subject: [PATCH 13/15] Revert "*: drop OEM URI support" +Subject: [PATCH 14/16] Revert "*: drop OEM URI support" This reverts commit 0c088d6de77aa1b1f47b9252a07f51cb1e249df3. --- @@ -21,7 +21,7 @@ This reverts commit 0c088d6de77aa1b1f47b9252a07f51cb1e249df3. 13 files changed, 242 insertions(+), 9 deletions(-) diff --git a/config/v3_0/types/url.go b/config/v3_0/types/url.go -index 90d903f2..33b7643a 100644 +index 2d8c44b1..f560bc22 100644 --- a/config/v3_0/types/url.go +++ b/config/v3_0/types/url.go @@ -30,7 +30,7 @@ func validateURL(s string) error { @@ -34,7 +34,7 @@ index 90d903f2..33b7643a 100644 case "s3": if v, ok := u.Query()["versionId"]; ok { diff --git a/config/v3_1/types/url.go b/config/v3_1/types/url.go -index 90d903f2..33b7643a 100644 +index 2d8c44b1..f560bc22 100644 --- a/config/v3_1/types/url.go +++ b/config/v3_1/types/url.go @@ -30,7 +30,7 @@ func validateURL(s string) error { @@ -47,7 +47,7 @@ index 90d903f2..33b7643a 100644 case "s3": if v, ok := u.Query()["versionId"]; ok { diff --git a/config/v3_2/types/url.go b/config/v3_2/types/url.go -index bb90bdf9..8f3da4d9 100644 +index bf1f3a5e..63297beb 100644 --- a/config/v3_2/types/url.go +++ b/config/v3_2/types/url.go @@ -30,7 +30,7 @@ func validateURL(s string) error { @@ -60,7 +60,7 @@ index bb90bdf9..8f3da4d9 100644 case "s3": if v, ok := u.Query()["versionId"]; ok { diff --git a/config/v3_3/types/url.go b/config/v3_3/types/url.go -index bb90bdf9..8f3da4d9 100644 +index bf1f3a5e..63297beb 100644 --- a/config/v3_3/types/url.go +++ b/config/v3_3/types/url.go @@ -30,7 +30,7 @@ func validateURL(s string) error { @@ -73,7 +73,7 @@ index bb90bdf9..8f3da4d9 100644 case "s3": if v, ok := u.Query()["versionId"]; ok { diff --git a/config/v3_4_experimental/types/url.go b/config/v3_4_experimental/types/url.go -index f094cde8..72b1b37b 100644 +index 9b2b4405..5258c3c6 100644 --- a/config/v3_4_experimental/types/url.go +++ b/config/v3_4_experimental/types/url.go @@ -32,7 +32,7 @@ func validateURL(s string) error { @@ -98,7 +98,7 @@ index 9ecb590a..f7bb4b40 100644 * [CloudStack] (`cloudstack`) - Ignition will read its configuration from the instance userdata via either metadata service or config drive. Cloud SSH keys are handled separately. * [DigitalOcean] (`digitalocean`) - Ignition will read its configuration from the droplet userdata. Cloud SSH keys and network configuration are handled separately. diff --git a/internal/distro/distro.go b/internal/distro/distro.go -index 0fe37f4a..3afc587f 100644 +index 703385ea..644c42c4 100644 --- a/internal/distro/distro.go +++ b/internal/distro/distro.go @@ -23,13 +23,17 @@ import ( @@ -137,7 +137,7 @@ index 0fe37f4a..3afc587f 100644 func GroupaddCmd() string { return groupaddCmd } func GroupdelCmd() string { return groupdelCmd } diff --git a/internal/resource/url.go b/internal/resource/url.go -index 25993094..8ed6efdb 100644 +index ca9c8668..f7fa5edc 100644 --- a/internal/resource/url.go +++ b/internal/resource/url.go @@ -27,13 +27,17 @@ import ( @@ -271,7 +271,7 @@ index 25993094..8ed6efdb 100644 + ) +} diff --git a/tests/blackbox_test.go b/tests/blackbox_test.go -index 5b586619..442d2199 100644 +index a5ebb450..84f969bb 100644 --- a/tests/blackbox_test.go +++ b/tests/blackbox_test.go @@ -140,13 +140,19 @@ func outer(t *testing.T, test types.Test, negativeTests bool) error { @@ -309,7 +309,7 @@ index 5b586619..442d2199 100644 if !negativeTests { if err := runIgnition(t, ctx, "fetch", "", tmpDirectory, appendEnv); err != nil { diff --git a/tests/negative/files/missing_file.go b/tests/negative/files/missing_file.go -index 613adb82..8077fd14 100644 +index 251f5593..4f6a9801 100644 --- a/tests/negative/files/missing_file.go +++ b/tests/negative/files/missing_file.go @@ -23,6 +23,7 @@ func init() { @@ -351,7 +351,7 @@ index 613adb82..8077fd14 100644 + } +} diff --git a/tests/negative/general/config.go b/tests/negative/general/config.go -index e5302154..dd717a48 100644 +index ed960f97..d950bd3a 100644 --- a/tests/negative/general/config.go +++ b/tests/negative/general/config.go @@ -29,12 +29,14 @@ func init() { @@ -434,7 +434,7 @@ index e5302154..dd717a48 100644 name := "config.version.2.5.0-exp" in := types.GetBaseDisk() diff --git a/tests/positive/files/remote.go b/tests/positive/files/remote.go -index 3c9ee830..171c6f83 100644 +index 792bdae7..9117e651 100644 --- a/tests/positive/files/remote.go +++ b/tests/positive/files/remote.go @@ -29,6 +29,7 @@ func init() { diff --git a/sdk_container/src/third_party/coreos-overlay/sys-apps/ignition/files/0014-internal-resource-url-support-btrfs-as-OEM-partition.patch b/sdk_container/src/third_party/coreos-overlay/sys-apps/ignition/files/0015-internal-resource-url-support-btrfs-as-OEM-partition.patch similarity index 88% rename from sdk_container/src/third_party/coreos-overlay/sys-apps/ignition/files/0014-internal-resource-url-support-btrfs-as-OEM-partition.patch rename to sdk_container/src/third_party/coreos-overlay/sys-apps/ignition/files/0015-internal-resource-url-support-btrfs-as-OEM-partition.patch index a0fb42105d..fdc288d785 100644 --- a/sdk_container/src/third_party/coreos-overlay/sys-apps/ignition/files/0014-internal-resource-url-support-btrfs-as-OEM-partition.patch +++ b/sdk_container/src/third_party/coreos-overlay/sys-apps/ignition/files/0015-internal-resource-url-support-btrfs-as-OEM-partition.patch @@ -1,7 +1,7 @@ -From 9212d688c63fab92b2e9d808df04bf75ca86726d Mon Sep 17 00:00:00 2001 +From bbaf408f59b4dfebedc43236705f717e1dcea371 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Kai=20L=C3=BCke?= Date: Wed, 7 Jul 2021 18:40:52 +0200 -Subject: [PATCH 14/15] internal/resource/url: support btrfs as OEM partition +Subject: [PATCH 15/16] internal/resource/url: support btrfs as OEM partition filesystem When btrfs is used to fit more content into the partition, mounting @@ -12,7 +12,7 @@ When mounting ext4 fails, try mounting as btrfs. 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/internal/resource/url.go b/internal/resource/url.go -index 8ed6efdb..d92cefac 100644 +index f7fa5edc..15e13778 100644 --- a/internal/resource/url.go +++ b/internal/resource/url.go @@ -699,8 +699,17 @@ func (f *Fetcher) mountOEM(oemMountPath string) error { diff --git a/sdk_container/src/third_party/coreos-overlay/sys-apps/ignition/files/0015-internal-exec-stages-disks-prevent-races-with-udev.patch b/sdk_container/src/third_party/coreos-overlay/sys-apps/ignition/files/0016-internal-exec-stages-disks-prevent-races-with-udev.patch similarity index 97% rename from sdk_container/src/third_party/coreos-overlay/sys-apps/ignition/files/0015-internal-exec-stages-disks-prevent-races-with-udev.patch rename to sdk_container/src/third_party/coreos-overlay/sys-apps/ignition/files/0016-internal-exec-stages-disks-prevent-races-with-udev.patch index 63038ddb12..3d49850df5 100644 --- a/sdk_container/src/third_party/coreos-overlay/sys-apps/ignition/files/0015-internal-exec-stages-disks-prevent-races-with-udev.patch +++ b/sdk_container/src/third_party/coreos-overlay/sys-apps/ignition/files/0016-internal-exec-stages-disks-prevent-races-with-udev.patch @@ -1,7 +1,7 @@ -From 02dcfeec54df967069efb330971e1a651753a58a Mon Sep 17 00:00:00 2001 +From a0bf53e18fc9de8f6bce2f37faf9e5810a7faa18 Mon Sep 17 00:00:00 2001 From: Kai Lueke Date: Fri, 11 Feb 2022 15:41:12 +0100 -Subject: [PATCH 15/15] internal/exec/stages/disks: prevent races with udev +Subject: [PATCH 16/16] internal/exec/stages/disks: prevent races with udev The "udevadm settle" command used to wait for udev to process the disk changes and recreate the entries under /dev was still prone to races @@ -29,7 +29,7 @@ be done for LUKS. 4 files changed, 78 insertions(+), 29 deletions(-) diff --git a/internal/exec/stages/disks/disks.go b/internal/exec/stages/disks/disks.go -index 285e7e4a..b4c2bede 100644 +index 4bb3e459..23bb7866 100644 --- a/internal/exec/stages/disks/disks.go +++ b/internal/exec/stages/disks/disks.go @@ -22,6 +22,7 @@ import ( @@ -110,7 +110,7 @@ index 285e7e4a..b4c2bede 100644 return nil diff --git a/internal/exec/stages/disks/filesystems.go b/internal/exec/stages/disks/filesystems.go -index dd251b28..2a383e0a 100644 +index 4de09498..ed7430fa 100644 --- a/internal/exec/stages/disks/filesystems.go +++ b/internal/exec/stages/disks/filesystems.go @@ -210,6 +210,29 @@ func (s stage) createFilesystem(fs types.Filesystem) error { @@ -144,7 +144,7 @@ index dd251b28..2a383e0a 100644 } diff --git a/internal/exec/stages/disks/partitions.go b/internal/exec/stages/disks/partitions.go -index 99189da0..1da966e7 100644 +index fee39c0a..feb006bd 100644 --- a/internal/exec/stages/disks/partitions.go +++ b/internal/exec/stages/disks/partitions.go @@ -394,5 +394,14 @@ func (s stage) partitionDisk(dev types.Disk, devAlias string) error { @@ -163,7 +163,7 @@ index 99189da0..1da966e7 100644 return nil } diff --git a/internal/exec/stages/disks/raid.go b/internal/exec/stages/disks/raid.go -index dff93413..7840d8fc 100644 +index 2781131b..2da3f5ec 100644 --- a/internal/exec/stages/disks/raid.go +++ b/internal/exec/stages/disks/raid.go @@ -22,6 +22,7 @@ package disks diff --git a/sdk_container/src/third_party/coreos-overlay/sys-apps/ignition/files/0016-mod-bump-ign-converter-to-pull-networkd-fix.patch b/sdk_container/src/third_party/coreos-overlay/sys-apps/ignition/files/0016-mod-bump-ign-converter-to-pull-networkd-fix.patch deleted file mode 100644 index 4986573b54..0000000000 --- a/sdk_container/src/third_party/coreos-overlay/sys-apps/ignition/files/0016-mod-bump-ign-converter-to-pull-networkd-fix.patch +++ /dev/null @@ -1,79 +0,0 @@ -From 9c0bfb9d652d7446e7d2af28e42622a9371708c6 Mon Sep 17 00:00:00 2001 -From: Mathieu Tortuyaux -Date: Wed, 27 Jul 2022 10:35:37 +0200 -Subject: [PATCH] mod: bump ign-converter to pull networkd fix - -Signed-off-by: Mathieu Tortuyaux ---- - go.mod | 2 +- - go.sum | 4 ++-- - .../ign-converter/translate/v24tov31/v24tov31.go | 4 ++-- - vendor/modules.txt | 2 +- - 4 files changed, 6 insertions(+), 6 deletions(-) - -diff --git a/go.mod b/go.mod -index 9b5da9f3..3e201cfd 100644 ---- a/go.mod -+++ b/go.mod -@@ -10,7 +10,7 @@ require ( - github.com/coreos/go-semver v0.3.0 - github.com/coreos/go-systemd/v22 v22.0.0 - github.com/coreos/vcontext v0.0.0-20211021162308-f1dbbca7bef4 -- github.com/flatcar/ign-converter v0.2.0 -+ github.com/flatcar/ign-converter v0.2.1-0.20220727141303-4991326b64e0 - github.com/flatcar/ignition v0.36.2-0.20220221101037-de4e6cc9bbba - github.com/google/renameio v0.1.0 - github.com/google/uuid v1.1.1 -diff --git a/go.sum b/go.sum -index afe8e529..82290ed3 100644 ---- a/go.sum -+++ b/go.sum -@@ -70,8 +70,8 @@ github.com/envoyproxy/go-control-plane v0.9.0/go.mod h1:YTl/9mNaCwkRvm6d1a2C3ymF - github.com/envoyproxy/go-control-plane v0.9.1-0.20191026205805-5f8ba28d4473/go.mod h1:YTl/9mNaCwkRvm6d1a2C3ymFceY/DCBVvsKhRF0iEA4= - github.com/envoyproxy/go-control-plane v0.9.4/go.mod h1:6rpuAdCZL397s3pYoYcLgu1mIlRU8Am5FuJP05cCM98= - github.com/envoyproxy/protoc-gen-validate v0.1.0/go.mod h1:iSmxcyjqTsJpI2R4NaDN7+kN2VEUnK/pcBlmesArF7c= --github.com/flatcar/ign-converter v0.2.0 h1:XAIP2LHgqwtkPmJmilKSblCj0tGCO86qCrnbO6jgPM8= --github.com/flatcar/ign-converter v0.2.0/go.mod h1:t/kcw0CQ/uKMCyZwDAzuwMO3CShxaimEJhQzLGCsb3Y= -+github.com/flatcar/ign-converter v0.2.1-0.20220727141303-4991326b64e0 h1:7AIVpKuKQ2tUgczrGlR5A3vCqEizqmE2YFLhOnyZtIQ= -+github.com/flatcar/ign-converter v0.2.1-0.20220727141303-4991326b64e0/go.mod h1:t/kcw0CQ/uKMCyZwDAzuwMO3CShxaimEJhQzLGCsb3Y= - github.com/flatcar/ignition v0.36.2-0.20220221101037-de4e6cc9bbba h1:HiTCL7737Hi944kXfLN8ReGoJtAiibGIsCk3MGlYy9M= - github.com/flatcar/ignition v0.36.2-0.20220221101037-de4e6cc9bbba/go.mod h1:JzHCIdCu9dy0xtezyBit/aOY4QIlJ12UYU6nXNPnnRE= - github.com/flatcar/ignition/v2 v2.2.1-0.20220302150437-ce14e51676e9/go.mod h1:n076OVuGbg6f+j3YYoxFCjRyMU2hxsx6Q4Gy0xwO7cM= -diff --git a/vendor/github.com/flatcar/ign-converter/translate/v24tov31/v24tov31.go b/vendor/github.com/flatcar/ign-converter/translate/v24tov31/v24tov31.go -index d10cd7c3..f940b421 100644 ---- a/vendor/github.com/flatcar/ign-converter/translate/v24tov31/v24tov31.go -+++ b/vendor/github.com/flatcar/ign-converter/translate/v24tov31/v24tov31.go -@@ -534,7 +534,7 @@ func translateNetworkd(units []old.Networkdunit, m map[string]string) []types.Fi - file.Node.Path = filepath.Join(m["root"], "/etc/systemd/network", u.Name) - - // URL encoding unit content to follow 'data' format - we could use base64 also. -- file.FileEmbedded1.Contents.Source = util.StrPStrict("data:," + url.QueryEscape(u.Contents)) -+ file.FileEmbedded1.Contents.Source = util.StrPStrict("data:," + url.PathEscape(u.Contents)) - - ret = append(ret, file) - } -@@ -552,7 +552,7 @@ func translateNetworkd(units []old.Networkdunit, m map[string]string) []types.Fi - } - - file.Node.Path = filepath.Join(m["root"], "/etc/systemd/network", string(u.Name)+".d", d.Name) -- file.FileEmbedded1.Contents.Source = util.StrPStrict("data:," + url.QueryEscape(d.Contents)) -+ file.FileEmbedded1.Contents.Source = util.StrPStrict("data:," + url.PathEscape(d.Contents)) - - ret = append(ret, file) - } -diff --git a/vendor/modules.txt b/vendor/modules.txt -index 71ec1839..3e8983d0 100644 ---- a/vendor/modules.txt -+++ b/vendor/modules.txt -@@ -84,7 +84,7 @@ github.com/coreos/vcontext/tree - github.com/coreos/vcontext/validate - # github.com/davecgh/go-spew v1.1.0 - github.com/davecgh/go-spew/spew --# github.com/flatcar/ign-converter v0.2.0 -+# github.com/flatcar/ign-converter v0.2.1-0.20220727141303-4991326b64e0 - ## explicit - github.com/flatcar/ign-converter/translate/v24tov31 - github.com/flatcar/ign-converter/util --- -2.35.1 - diff --git a/sdk_container/src/third_party/coreos-overlay/sys-apps/ignition/files/README.md b/sdk_container/src/third_party/coreos-overlay/sys-apps/ignition/files/README.md new file mode 100644 index 0000000000..f040413103 --- /dev/null +++ b/sdk_container/src/third_party/coreos-overlay/sys-apps/ignition/files/README.md @@ -0,0 +1,43 @@ +# Ignition patches + +These patches bring Flatcar custom features (from a runtime execution point-of-view) to CoreOS's Ignition. + +## Sync Ignition with the upstream + +When a new upstream Ignition release is out, we need to backport the Flatcar patches on this new version. + +For this, we can just apply the current patches and fix any broken stuff: + +```bash +git clone https://github.com/coreos/ignition +cd ignition +git checkout "${RELEASE}" +git am --3way /path/to/coreos-overlay/sys-apps/ignition/files/00* +``` + +Once done, we can generate the new set of patches: +``` +git format-patch "${RELEASE}" +``` + +Copy the new patches to `::coreos-overlay` +``` +cp 00* /path/to/coreos-overlay/sys-apps/ignition/files/ +``` + +:warning: We might need to update the applied patches' names in the Ignition ebuild. +When the new Ignition release adds a higher config version used from `config/config.go`, you also have to modify `files/0006-config-v3_4-convert-ignition-2.x-to-3.4-exp.patch` to be applied for this higher config version. +Note: the translation lifts to v3.1 and if it ever would be the same version as the highest, you also need to set the local `version` varable to meet the `if version == types.MaxVersion {` check. + +## Ignition converter (ign-converter) + +This converter is the central piece of auto-translation from Ignition config version 2 to Ignition config version 3. While we still support both version, we need to maintain it. It was initially on `coreos/ign-converter` then it has moved to `flatcar/ign-converter` to apply some logic (that could be upstreamed). + +To ease the process with the previous section, we decided to "merge" ign-converter with Ignition. It's actually a copy of the package `v24tov31` and the associated tests to `config/v24tov31/` (and `config/util/translate.go`). + +If we drop the support for Ignition config version 2, we can drop the following patches: +* `mod: add flatcar/ignition@0.36.2` +* `sum: go mod tidy` +* `vendor: go mod vendor` +* `config: add ignition translation` +* `config/v3_4: convert ignition 2.x to 3.4-exp` diff --git a/sdk_container/src/third_party/coreos-overlay/sys-apps/ignition/ignition-2.14.0-r3.ebuild b/sdk_container/src/third_party/coreos-overlay/sys-apps/ignition/ignition-2.14.0-r4.ebuild similarity index 100% rename from sdk_container/src/third_party/coreos-overlay/sys-apps/ignition/ignition-2.14.0-r3.ebuild rename to sdk_container/src/third_party/coreos-overlay/sys-apps/ignition/ignition-2.14.0-r4.ebuild diff --git a/sdk_container/src/third_party/coreos-overlay/sys-apps/ignition/ignition-9999.ebuild b/sdk_container/src/third_party/coreos-overlay/sys-apps/ignition/ignition-9999.ebuild index 9b2d0b07b4..b361e6c794 100644 --- a/sdk_container/src/third_party/coreos-overlay/sys-apps/ignition/ignition-9999.ebuild +++ b/sdk_container/src/third_party/coreos-overlay/sys-apps/ignition/ignition-9999.ebuild @@ -42,22 +42,22 @@ RDEPEND=" RDEPEND+="${DEPEND}" PATCHES=( - "${FILESDIR}/0001-sed-s-coreos-flatcar-linux.patch" - "${FILESDIR}/0002-mod-add-ign-converter-dependency.patch" + "${FILESDIR}/0001-sed-s-coreos-flatcar.patch" + "${FILESDIR}/0002-mod-add-flatcar-ignition-0.36.2.patch" "${FILESDIR}/0003-sum-go-mod-tidy.patch" "${FILESDIR}/0004-vendor-go-mod-vendor.patch" - "${FILESDIR}/0005-config-v3_4-convert-ignition-2.x-to-3.4-exp.patch" - "${FILESDIR}/0006-internal-prv-cmdline-backport-flatcar-patch.patch" - "${FILESDIR}/0007-provider-qemu-apply-fw_cfg-patch.patch" - "${FILESDIR}/0008-config-3_4-test-add-ignition-2.x-test-cases.patch" - "${FILESDIR}/0009-internal-disk-fs-ignore-fs-format-mismatches-for-the.patch" - "${FILESDIR}/0010-VMware-Fix-guestinfo.-.config.data-and-.config.url-v.patch" - "${FILESDIR}/0011-config-version-handle-configuration-version-1.patch" - "${FILESDIR}/0012-config-util-add-cloud-init-detection-to-initial-pars.patch" - "${FILESDIR}/0013-Revert-drop-OEM-URI-support.patch" - "${FILESDIR}/0014-internal-resource-url-support-btrfs-as-OEM-partition.patch" - "${FILESDIR}/0015-internal-exec-stages-disks-prevent-races-with-udev.patch" - "${FILESDIR}/0016-mod-bump-ign-converter-to-pull-networkd-fix.patch" + "${FILESDIR}/0005-config-add-ignition-translation.patch" + "${FILESDIR}/0006-config-v3_4-convert-ignition-2.x-to-3.4-exp.patch" + "${FILESDIR}/0007-internal-prv-cmdline-backport-flatcar-patch.patch" + "${FILESDIR}/0008-provider-qemu-apply-fw_cfg-patch.patch" + "${FILESDIR}/0009-config-3_4-test-add-ignition-2.x-test-cases.patch" + "${FILESDIR}/0010-internal-disk-fs-ignore-fs-format-mismatches-for-the.patch" + "${FILESDIR}/0011-VMware-Fix-guestinfo.-.config.data-and-.config.url-v.patch" + "${FILESDIR}/0012-config-version-handle-configuration-version-1.patch" + "${FILESDIR}/0013-config-util-add-cloud-init-detection-to-initial-pars.patch" + "${FILESDIR}/0014-Revert-drop-OEM-URI-support.patch" + "${FILESDIR}/0015-internal-resource-url-support-btrfs-as-OEM-partition.patch" + "${FILESDIR}/0016-internal-exec-stages-disks-prevent-races-with-udev.patch" ) src_compile() {