From c3a019b57cade8e6c3963f6bd2c7c15cd67e561c Mon Sep 17 00:00:00 2001 From: Eduardo Otubo Date: Wed, 2 Sep 2020 14:59:06 +0200 Subject: [PATCH] cc_mounts: fix incorrect format specifiers (#316) RH-Author: Eduardo Otubo Message-id: <20200825131749.4989-1-otubo@redhat.com> Patchwork-id: 98217 O-Subject: [RHEL-8.3.0 cloud-init PATCH] cc_mounts: fix incorrect format specifiers (#316) Bugzilla: 1794664 RH-Acked-by: Mohammed Gamal RH-Acked-by: Cathy Avery 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 e1c43e3..55b6770 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