소스 검색

Fix PoolsAction

Bahtiar `kalkin-` Gadimov 8 년 전
부모
커밋
c487b5fe9b
1개의 변경된 파일15개의 추가작업 그리고 10개의 파일을 삭제
  1. 15 10
      qubes/tools/__init__.py

+ 15 - 10
qubes/tools/__init__.py

@@ -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):