From a66df9c82eb4e225e852f9313f6ce82c3ebe6621 Mon Sep 17 00:00:00 2001 From: Bahtiar `kalkin-` Gadimov Date: Wed, 29 Jun 2016 17:25:07 +0200 Subject: [PATCH 1/3] Fix bugs in qvm-shutdown --all - Exit the program if all domains are halted - Changed log.notice to log.info - Replace map with dictionary comprehensions (pylint) --- qubes/tools/qvm_shutdown.py | 12 +++++++----- 1 file changed, 7 insertions(+), 5 deletions(-) diff --git a/qubes/tools/qvm_shutdown.py b/qubes/tools/qvm_shutdown.py index 60695e89..2d424b55 100644 --- a/qubes/tools/qvm_shutdown.py +++ b/qubes/tools/qvm_shutdown.py @@ -53,8 +53,7 @@ parser.add_argument('--timeout', def main(args=None): args = parser.parse_args(args) - for vm in args.domains: - vm.shutdown(force=args.force) + [vm.shutdown(force=args.force) for vm in args.domains if not vm.is_halted()] if not args.wait: return @@ -64,13 +63,16 @@ def main(args=None): while timeout >= 0: current_vms = [vm for vm in current_vms if vm.get_power_state() != 'Halted'] + if not current_vms: + return 0 args.app.log.info('Waiting for shutdown ({}): {}'.format( - timeout, ', '.join(map(str, current_vms)))) + timeout, ', '.join([str(vm) for vm in current_vms]))) time.sleep(1) timeout -= 1 - args.app.log.notice( - 'Killing remaining qubes: {}'.format(', '.join(map(str, current_vms)))) + args.app.log.info( + 'Killing remaining qubes: {}' + .format(', '.join([str(vm) for vm in current_vms]))) for vm in current_vms: vm.force_shutdown() From 5115eef41311e4c93cec9bd8c39d4c1697c39172 Mon Sep 17 00:00:00 2001 From: Bahtiar `kalkin-` Gadimov Date: Wed, 13 Jul 2016 18:08:41 +0200 Subject: [PATCH 2/3] =?UTF-8?q?qvm-shutdown=20make=20pylint=20happy=20?= =?UTF-8?q?=E2=99=A5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- qubes/tools/qvm_shutdown.py | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/qubes/tools/qvm_shutdown.py b/qubes/tools/qvm_shutdown.py index 2d424b55..6b82cfd1 100644 --- a/qubes/tools/qvm_shutdown.py +++ b/qubes/tools/qvm_shutdown.py @@ -23,6 +23,8 @@ # 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. # +''' Shutdown a qube ''' + from __future__ import print_function import sys @@ -32,7 +34,7 @@ import qubes.config import qubes.tools parser = qubes.tools.QubesArgumentParser( - description='gracefully shut down a qube', vmname_nargs='+') + description=__doc__, vmname_nargs='+') parser.add_argument('--force', action='store_true', default=False, @@ -50,10 +52,12 @@ parser.add_argument('--timeout', ' (default: %d)') -def main(args=None): +def main(args=None): # pylint: disable=missing-docstring args = parser.parse_args(args) - [vm.shutdown(force=args.force) for vm in args.domains if not vm.is_halted()] + for vm in args.domains: + if not vm.is_halted(): + vm.shutdown(force=args.force) if not args.wait: return From 3b93fd612eb2297df3009f7b2167dc8d87fd9ad0 Mon Sep 17 00:00:00 2001 From: Bahtiar `kalkin-` Gadimov Date: Wed, 13 Jul 2016 20:38:46 +0200 Subject: [PATCH 3/3] =?UTF-8?q?Make=20pylint=20really=20happy=20=E2=99=A5?= =?UTF-8?q?=E2=99=A5=E2=99=A5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- qubes/__init__.py | 14 ++------------ qubes/app.py | 19 ++++++++++--------- qubes/ext/qubesmanager.py | 2 +- qubes/utils.py | 6 ++---- 4 files changed, 15 insertions(+), 26 deletions(-) diff --git a/qubes/__init__.py b/qubes/__init__.py index fafbcb65..233f480f 100644 --- a/qubes/__init__.py +++ b/qubes/__init__.py @@ -32,22 +32,12 @@ Qubes OS from __future__ import absolute_import +import __builtin__ import collections -import errno -import grp -import logging import os import os.path -import sys -import tempfile -import time -import __builtin__ - -import jinja2 import lxml.etree -import pkg_resources - import qubes.config import qubes.events import qubes.exc @@ -439,7 +429,7 @@ class PropertyHolder(qubes.events.Emitter): propvalues = {} all_names = set(prop.__name__ for prop in self.property_list()) - for key in list(kwargs.keys()): + for key in list(kwargs): if not key in all_names: continue propvalues[key] = kwargs.pop(key) diff --git a/qubes/app.py b/qubes/app.py index 805a64f4..369c6720 100644 --- a/qubes/app.py +++ b/qubes/app.py @@ -36,13 +36,14 @@ import tempfile import time import uuid -import jinja2 import lxml.etree + +import jinja2 import libvirt try: - import xen.lowlevel.xs - import xen.lowlevel.xc + import xen.lowlevel.xs # pylint: disable=wrong-import-order + import xen.lowlevel.xc # pylint: disable=wrong-import-order except ImportError: pass @@ -58,12 +59,12 @@ else: raise RuntimeError("Qubes works only on POSIX or WinNT systems") -import qubes -import qubes.ext -import qubes.utils -import qubes.vm.adminvm -import qubes.vm.qubesvm -import qubes.vm.templatevm +import qubes # pylint: disable=wrong-import-position +import qubes.ext # pylint: disable=wrong-import-position +import qubes.utils # pylint: disable=wrong-import-position +import qubes.vm.adminvm # pylint: disable=wrong-import-position +import qubes.vm.qubesvm # pylint: disable=wrong-import-position +import qubes.vm.templatevm # pylint: disable=wrong-import-position class VirDomainWrapper(object): diff --git a/qubes/ext/qubesmanager.py b/qubes/ext/qubesmanager.py index 41b489cf..9b002d99 100644 --- a/qubes/ext/qubesmanager.py +++ b/qubes/ext/qubesmanager.py @@ -29,8 +29,8 @@ .. warning:: API defined here is not declared stable. ''' -import qubes.ext import dbus +import qubes.ext class QubesManager(qubes.ext.Extension): diff --git a/qubes/utils.py b/qubes/utils.py index 8f0e3121..6b012c17 100644 --- a/qubes/utils.py +++ b/qubes/utils.py @@ -29,11 +29,11 @@ import os import re import subprocess +import pkg_resources + import docutils import docutils.core import docutils.io -import pkg_resources - import qubes.exc @@ -158,5 +158,3 @@ def get_entry_point_one(group, name): ', '.join('{}.{}'.format(ep.module_name, '.'.join(ep.attrs)) for ep in epoints))) return epoints[0].load() - -