Fix PoolsAction

This commit is contained in:
Bahtiar `kalkin-` Gadimov 2016-05-26 18:55:50 +02:00
parent 90c882610e
commit c487b5fe9b
No known key found for this signature in database
GPG Key ID: 96ED3C3BA19C3DEE

View File

@ -272,25 +272,30 @@ class VolumeAction(QubesAction):
except ValueError:
parser.error('expected a pool & volume id combination like foo:bar')
class PoolsAction(QubesAction):
''' Action for argument parser to gather multiple pools '''
# pylint: disable=too-few-public-methods
def __call__(self, parser, namespace, values, option_string=None):
''' Set ``namespace.vmname`` to ``values`` '''
setattr(namespace, self.dest, values)
if hasattr(namespace, self.dest) and getattr(namespace, self.dest):
names = getattr(namespace, self.dest)
else:
names = []
names += [values]
setattr(namespace, self.dest, names)
def parse_qubes_app(self, parser, namespace):
app = namespace.app
name = getattr(namespace, self.dest)
if not name:
return
try:
setattr(namespace, self.dest, app.get_pool(name))
except qubes.exc.QubesException as e:
parser.error(e.message)
sys.exit(2)
pool_names = getattr(namespace, self.dest)
if pool_names:
try:
pools = [app.get_pool(name) for name in pool_names]
setattr(namespace, self.dest, pools)
except qubes.exc.QubesException as e:
parser.error(e.message)
sys.exit(2)
class QubesArgumentParser(argparse.ArgumentParser):