about summary refs log tree commit diff
diff options
context:
space:
mode:
authormaxine <35892750+amaxine@users.noreply.github.com>2024-01-21 00:39:06 +0100
committerGitHub <noreply@github.com>2024-01-21 00:39:06 +0100
commitf0dd758da71944c02da2b68ce04d3df759eb6937 (patch)
tree640e5803403fc2753ce43f97833b211687f2b834
parentb1560d63ea2f1eefe8c784854344339cc5b96e58 (diff)
parentd6baaf1c42b41d5a43ff196bdbe10cf5864f87be (diff)
downloadnixlib-f0dd758da71944c02da2b68ce04d3df759eb6937.tar
nixlib-f0dd758da71944c02da2b68ce04d3df759eb6937.tar.gz
nixlib-f0dd758da71944c02da2b68ce04d3df759eb6937.tar.bz2
nixlib-f0dd758da71944c02da2b68ce04d3df759eb6937.tar.lz
nixlib-f0dd758da71944c02da2b68ce04d3df759eb6937.tar.xz
nixlib-f0dd758da71944c02da2b68ce04d3df759eb6937.tar.zst
nixlib-f0dd758da71944c02da2b68ce04d3df759eb6937.zip
Merge pull request #273707 from illustris/cloud-init
cloud-init: 23.3.3 -> 23.4.1, fix race condition on AWS
-rw-r--r--nixos/modules/services/system/cloud-init.nix5
-rw-r--r--nixos/tests/cloud-init.nix1
-rw-r--r--pkgs/tools/virtualization/cloud-init/0001-add-nixos-support.patch8
-rw-r--r--pkgs/tools/virtualization/cloud-init/default.nix4
4 files changed, 11 insertions, 7 deletions
diff --git a/nixos/modules/services/system/cloud-init.nix b/nixos/modules/services/system/cloud-init.nix
index d782bb1a3666..00ae77be4271 100644
--- a/nixos/modules/services/system/cloud-init.nix
+++ b/nixos/modules/services/system/cloud-init.nix
@@ -164,7 +164,10 @@ in
     systemd.services.cloud-init-local = {
       description = "Initial cloud-init job (pre-networking)";
       wantedBy = [ "multi-user.target" ];
-      before = [ "systemd-networkd.service" ];
+      # In certain environments (AWS for example), cloud-init-local will
+      # first configure an IP through DHCP, and later delete it.
+      # This can cause race conditions with anything else trying to set IP through DHCP.
+      before = [ "systemd-networkd.service" "dhcpcd.service" ];
       path = path;
       serviceConfig = {
         Type = "oneshot";
diff --git a/nixos/tests/cloud-init.nix b/nixos/tests/cloud-init.nix
index 786e01add7d4..0b4c5a55c80a 100644
--- a/nixos/tests/cloud-init.nix
+++ b/nixos/tests/cloud-init.nix
@@ -73,6 +73,7 @@ in makeTest {
   };
   testScript = ''
     # To wait until cloud-init terminates its run
+    unnamed.wait_for_unit("cloud-init-local.service")
     unnamed.wait_for_unit("cloud-final.service")
 
     unnamed.succeed("cat /tmp/cloudinit-write-file | grep -q 'cloudinit'")
diff --git a/pkgs/tools/virtualization/cloud-init/0001-add-nixos-support.patch b/pkgs/tools/virtualization/cloud-init/0001-add-nixos-support.patch
index 2e293321ac02..57fcef6fe661 100644
--- a/pkgs/tools/virtualization/cloud-init/0001-add-nixos-support.patch
+++ b/pkgs/tools/virtualization/cloud-init/0001-add-nixos-support.patch
@@ -1,8 +1,8 @@
 diff --git a/cloudinit/distros/__init__.py b/cloudinit/distros/__init__.py
-index 7b83df8d..6d04de1a 100644
+index 79e26235..bdc32c52 100644
 --- a/cloudinit/distros/__init__.py
 +++ b/cloudinit/distros/__init__.py
-@@ -75,6 +75,7 @@ OSFAMILIES = {
+@@ -91,6 +91,7 @@ OSFAMILIES = {
      ],
      "openeuler": ["openeuler"],
      "OpenCloudOS": ["OpenCloudOS", "TencentOS"],
@@ -12,7 +12,7 @@ index 7b83df8d..6d04de1a 100644
  LOG = logging.getLogger(__name__)
 diff --git a/cloudinit/distros/nixos.py b/cloudinit/distros/nixos.py
 new file mode 100644
-index 00000000..954e564b
+index 00000000..67c049b8
 --- /dev/null
 +++ b/cloudinit/distros/nixos.py
 @@ -0,0 +1,109 @@
@@ -38,11 +38,11 @@ index 00000000..954e564b
 +#    You should have received a copy of the GNU General Public License
 +#    along with this program.  If not, see <http://www.gnu.org/licenses/>.
 +
++import logging
 +import os
 +
 +from cloudinit import distros
 +from cloudinit import helpers
-+from cloudinit import log as logging
 +from cloudinit import util
 +from cloudinit import atomic_helper
 +
diff --git a/pkgs/tools/virtualization/cloud-init/default.nix b/pkgs/tools/virtualization/cloud-init/default.nix
index 72a67045f56b..189bed3cea60 100644
--- a/pkgs/tools/virtualization/cloud-init/default.nix
+++ b/pkgs/tools/virtualization/cloud-init/default.nix
@@ -17,14 +17,14 @@
 
 python3.pkgs.buildPythonApplication rec {
   pname = "cloud-init";
-  version = "23.3.3";
+  version = "23.4.1";
   namePrefix = "";
 
   src = fetchFromGitHub {
     owner = "canonical";
     repo = "cloud-init";
     rev = "refs/tags/${version}";
-    hash = "sha256-49UvGrv40hyR3A2BndlQKwQqCC1ZaLm97IUKNW12sJo=";
+    hash = "sha256-jdL5xDQTmz1ppVr2+fX76tiscGazw5L7Q0/uQF6+ogM=";
   };
 
   patches = [