From 20b0ac8b92ef134dbf8446c79da54011ddc5be2e Mon Sep 17 00:00:00 2001 From: Eduardo Otubo Date: Mon, 27 Apr 2020 10:53:07 +0200 Subject: [PATCH 2/2] cc_mounts: fix incorrect format specifiers (#316) RH-Author: Eduardo Otubo Message-id: <20200421081604.8658-1-otubo@redhat.com> Patchwork-id: 96012 O-Subject: [RHEL-7.9 cloud-init PATCH] cc_mounts: fix incorrect format specifiers (#316) Bugzilla: 1772505 RH-Acked-by: Vitaly Kuznetsov RH-Acked-by: Mohammed Gamal BZ: 1772505 BRANCH: rhel79/master-19.4 BREW: 28082908 Conflicts: Not exactly a conflict, but removed optional notations "variable: type" and "-> type" from function header create_swapfile() as it is only available on Python >= 3.5 and this patch is for RHEL-7.9 only (Python 2.*). The rest of the cherry-pick was clean. commit 9d7b35ce23aaf8741dd49b16e359c96591be3c76 Author: Daniel Watkins Date: Wed Apr 15 16:53:08 2020 -0400 cc_mounts: fix incorrect format specifiers (#316) LP: #1872836 Signed-off-by: Eduardo Otubo Signed-off-by: Miroslav Rezanina --- cloudinit/config/cc_mounts.py | 6 +++--- cloudinit/config/tests/test_mounts.py | 22 ++++++++++++++++++++++ 2 files changed, 25 insertions(+), 3 deletions(-) create mode 100644 cloudinit/config/tests/test_mounts.py diff --git a/cloudinit/config/cc_mounts.py b/cloudinit/config/cc_mounts.py index 0573026..7e8d63e 100644 --- a/cloudinit/config/cc_mounts.py +++ b/cloudinit/config/cc_mounts.py @@ -226,17 +226,17 @@ def suggested_swapsize(memsize=None, maxsize=None, fsys=None): def create_swapfile(fname, size): """Size is in MiB.""" - errmsg = "Failed to create swapfile '%s' of size %dMB via %s: %s" + errmsg = "Failed to create swapfile '%s' of size %sMB via %s: %s" def create_swap(fname, size, method): LOG.debug("Creating swapfile in '%s' on fstype '%s' using '%s'", fname, fstype, method) if method == "fallocate": - cmd = ['fallocate', '-l', '%dM' % size, fname] + cmd = ['fallocate', '-l', '%sM' % size, fname] elif method == "dd": cmd = ['dd', 'if=/dev/zero', 'of=%s' % fname, 'bs=1M', - 'count=%d' % size] + 'count=%s' % size] try: util.subp(cmd, capture=True) diff --git a/cloudinit/config/tests/test_mounts.py b/cloudinit/config/tests/test_mounts.py new file mode 100644 index 0000000..c7dad61 --- /dev/null +++ b/cloudinit/config/tests/test_mounts.py @@ -0,0 +1,22 @@ +# This file is part of cloud-init. See LICENSE file for license information. +from unittest import mock + +from cloudinit.config.cc_mounts import create_swapfile + + +M_PATH = 'cloudinit.config.cc_mounts.' + + +class TestCreateSwapfile: + + @mock.patch(M_PATH + 'util.subp') + def test_happy_path(self, m_subp, tmpdir): + swap_file = tmpdir.join("swap-file") + fname = str(swap_file) + + # Some of the calls to util.subp should create the swap file; this + # roughly approximates that + m_subp.side_effect = lambda *args, **kwargs: swap_file.write('') + + create_swapfile(fname, '') + assert mock.call(['mkswap', fname]) in m_subp.call_args_list -- 1.8.3.1