remove support for resizing via 'parted resizepart'
This was previously broken anyway. It doesn't seem like there was an easy way to actually support it, so for now I'm removing it entirely. growpart works well enough.
This commit is contained in:
parent
15aa19ac78
commit
7bef107216
@ -11,6 +11,8 @@
|
||||
unicode).
|
||||
- config/cloud.cfg.d/05_logging.cfg: provide a default 'output' setting, to
|
||||
redirect cloud-init stderr and stdout /var/log/cloud-init-output.log.
|
||||
- drop support for resizing partitions with parted entirely (LP: #1212492).
|
||||
This was broken as it was anyway.
|
||||
0.7.4:
|
||||
- fix issue mounting 'ephemeral0' if ephemeral0 was an alias for a
|
||||
partitioned block device with target filesystem on ephemeral0.1.
|
||||
|
@ -80,30 +80,6 @@ class ResizeFailedException(Exception):
|
||||
pass
|
||||
|
||||
|
||||
class ResizeParted(object):
|
||||
def available(self):
|
||||
myenv = os.environ.copy()
|
||||
myenv['LANG'] = 'C'
|
||||
|
||||
try:
|
||||
(out, _err) = util.subp(["parted", "--help"], env=myenv)
|
||||
if re.search(r"COMMAND.*resizepart\s+", out, re.DOTALL):
|
||||
return True
|
||||
|
||||
except util.ProcessExecutionError:
|
||||
pass
|
||||
return False
|
||||
|
||||
def resize(self, diskdev, partnum, partdev):
|
||||
before = get_size(partdev)
|
||||
try:
|
||||
util.subp(["parted", diskdev, "resizepart", partnum])
|
||||
except util.ProcessExecutionError as e:
|
||||
raise ResizeFailedException(e)
|
||||
|
||||
return (before, get_size(partdev))
|
||||
|
||||
|
||||
class ResizeGrowPart(object):
|
||||
def available(self):
|
||||
myenv = os.environ.copy()
|
||||
@ -279,6 +255,4 @@ def handle(_name, cfg, _cloud, log, _args):
|
||||
else:
|
||||
log.debug("'%s' %s: %s" % (entry, action, msg))
|
||||
|
||||
# LP: 1212444 FIXME re-order and favor ResizeParted
|
||||
#RESIZERS = (('growpart', ResizeGrowPart),)
|
||||
RESIZERS = (('growpart', ResizeGrowPart), ('parted', ResizeParted))
|
||||
RESIZERS = (('growpart', ResizeGrowPart),)
|
||||
|
@ -5,12 +5,10 @@
|
||||
#
|
||||
# mode:
|
||||
# values:
|
||||
# * auto: use any option possible (growpart or parted)
|
||||
# * auto: use any option possible (any available)
|
||||
# if none are available, do not warn, but debug.
|
||||
# * growpart: use growpart to grow partitions
|
||||
# if growpart is not available, this is an error.
|
||||
# * parted: use parted (parted resizepart) to resize partitions
|
||||
# if parted is not available, this is an error.
|
||||
# * off, false
|
||||
#
|
||||
# devices:
|
||||
|
@ -12,50 +12,9 @@ import re
|
||||
import unittest
|
||||
|
||||
# growpart:
|
||||
# mode: auto # off, on, auto, 'growpart', 'parted'
|
||||
# mode: auto # off, on, auto, 'growpart'
|
||||
# devices: ['root']
|
||||
|
||||
HELP_PARTED_NO_RESIZE = """
|
||||
Usage: parted [OPTION]... [DEVICE [COMMAND [PARAMETERS]...]...]
|
||||
Apply COMMANDs with PARAMETERS to DEVICE. If no COMMAND(s) are given, run in
|
||||
interactive mode.
|
||||
|
||||
OPTIONs:
|
||||
<SNIP>
|
||||
|
||||
COMMANDs:
|
||||
<SNIP>
|
||||
quit exit program
|
||||
rescue START END rescue a lost partition near START
|
||||
and END
|
||||
resize NUMBER START END resize partition NUMBER and its file
|
||||
system
|
||||
rm NUMBER delete partition NUMBER
|
||||
<SNIP>
|
||||
Report bugs to bug-parted@gnu.org
|
||||
"""
|
||||
|
||||
HELP_PARTED_RESIZE = """
|
||||
Usage: parted [OPTION]... [DEVICE [COMMAND [PARAMETERS]...]...]
|
||||
Apply COMMANDs with PARAMETERS to DEVICE. If no COMMAND(s) are given, run in
|
||||
interactive mode.
|
||||
|
||||
OPTIONs:
|
||||
<SNIP>
|
||||
|
||||
COMMANDs:
|
||||
<SNIP>
|
||||
quit exit program
|
||||
rescue START END rescue a lost partition near START
|
||||
and END
|
||||
resize NUMBER START END resize partition NUMBER and its file
|
||||
system
|
||||
resizepart NUMBER END resize partition NUMBER
|
||||
rm NUMBER delete partition NUMBER
|
||||
<SNIP>
|
||||
Report bugs to bug-parted@gnu.org
|
||||
"""
|
||||
|
||||
HELP_GROWPART_RESIZE = """
|
||||
growpart disk partition
|
||||
rewrite partition table so that partition takes up all the space it can
|
||||
@ -122,11 +81,8 @@ class TestConfig(MockerTestCase):
|
||||
# Order must be correct
|
||||
self.mocker.order()
|
||||
|
||||
@unittest.skip("until LP: #1212444 fixed")
|
||||
def test_no_resizers_auto_is_fine(self):
|
||||
subp = self.mocker.replace(util.subp, passthrough=False)
|
||||
subp(['parted', '--help'], env={'LANG': 'C'})
|
||||
self.mocker.result((HELP_PARTED_NO_RESIZE, ""))
|
||||
subp(['growpart', '--help'], env={'LANG': 'C'})
|
||||
self.mocker.result((HELP_GROWPART_NO_RESIZE, ""))
|
||||
self.mocker.replay()
|
||||
@ -144,15 +100,14 @@ class TestConfig(MockerTestCase):
|
||||
self.assertRaises(ValueError, self.handle, self.name, config,
|
||||
self.cloud_init, self.log, self.args)
|
||||
|
||||
@unittest.skip("until LP: #1212444 fixed")
|
||||
def test_mode_auto_prefers_parted(self):
|
||||
def test_mode_auto_prefers_growpart(self):
|
||||
subp = self.mocker.replace(util.subp, passthrough=False)
|
||||
subp(['parted', '--help'], env={'LANG': 'C'})
|
||||
self.mocker.result((HELP_PARTED_RESIZE, ""))
|
||||
subp(['growpart', '--help'], env={'LANG': 'C'})
|
||||
self.mocker.result((HELP_GROWPART_RESIZE, ""))
|
||||
self.mocker.replay()
|
||||
|
||||
ret = cc_growpart.resizer_factory(mode="auto")
|
||||
self.assertTrue(isinstance(ret, cc_growpart.ResizeParted))
|
||||
self.assertTrue(isinstance(ret, cc_growpart.ResizeGrowPart))
|
||||
|
||||
def test_handle_with_no_growpart_entry(self):
|
||||
#if no 'growpart' entry in config, then mode=auto should be used
|
||||
|
Loading…
x
Reference in New Issue
Block a user