qvm-block add extend sub command

This commit is contained in:
Bahtiar `kalkin-` Gadimov 2016-08-28 19:44:39 +02:00
parent 4c65a9c69a
commit 4733e836ce
No known key found for this signature in database
GPG Key ID: 96ED3C3BA19C3DEE

View File

@ -24,6 +24,7 @@
from __future__ import print_function
import re
import sys
import qubes
@ -168,6 +169,34 @@ def detach_volumes(args):
sys.exit(1)
def extend_volumes(args):
''' Called by the parser to execute the :program:`qvm-block extend`
subcommand
'''
volume = args.volume
app = args.app
try:
size = int(args.size.strip())
except ValueError:
if re.match(r'^(\d+[kgm])$', args.size.strip(), re.IGNORECASE):
size = int(args.size.strip()[:-1])
factor = args.size.strip()[-1:]
elif re.match(r'^(\d+[kgm][B])$', args.size.strip(), re.IGNORECASE):
size = int(args.size.strip()[:-2])
factor = args.size.strip()[-2:-1]
else:
print("Unknown size %s" % args.size, file=sys.stderr)
sys.exit(1)
if factor == "K":
size *= 1000
elif factor == "M":
size *= 1000 * 1000
elif factor == "G":
size *= 1000 * 1000 * 1000
pool = app.get_pool(volume.pool)
pool.resize(volume, volume.size+size)
app.save()
def init_list_parser(sub_parsers):
''' Configures the parser for the :program:`qvm-block list` subcommand '''
# pylint: disable=protected-access
@ -214,6 +243,14 @@ def init_dettach_parser(sub_parsers):
action=qubes.tools.VolumeAction)
detach_parser.set_defaults(func=detach_volumes)
def init_extend_parser(sub_parsers):
extend_parser = sub_parsers.add_parser(
"extend", help="extend volume from domain", aliases=('d', 'dt'))
extend_parser.add_argument(metavar='POOL_NAME:VOLUME_ID', dest='volume',
action=qubes.tools.VolumeAction)
extend_parser.add_argument(
'size', help='size in bytes of the new ThinPoolLogicalVolume')
extend_parser.set_defaults(func=extend_volumes)
def get_parser():
'''Create :py:class:`argparse.ArgumentParser` suitable for
@ -227,6 +264,7 @@ def get_parser():
dest='command')
init_attach_parser(sub_parsers)
init_dettach_parser(sub_parsers)
init_extend_parser(sub_parsers)
init_list_parser(sub_parsers)
init_revert_parser(sub_parsers)