diff --git a/doc/manpages/qvm-shutdown.rst b/doc/manpages/qvm-shutdown.rst index f9239f0..4d08d99 100644 --- a/doc/manpages/qvm-shutdown.rst +++ b/doc/manpages/qvm-shutdown.rst @@ -25,7 +25,7 @@ Options .. option:: --all - perform the action on all qubes + perform the action on all qubes; implies :option:`--force` .. option:: --exclude=EXCLUDE @@ -35,12 +35,18 @@ Options wait for the VMs to shut down. If some domains are providing network to other domains, wait for those domains to shut down before shutting down their - dependents. + dependents, unless :option:`--all` was specified .. option:: --timeout timeout after which domains are killed when using :option:`--wait` +.. option:: --force + + force qube shutdown, regardless of whether there exist any connected domains + (such as those using it as network VM) + + Authors ------- diff --git a/qubesadmin/tools/qvm_shutdown.py b/qubesadmin/tools/qvm_shutdown.py index 12f4a95..fe0b68d 100644 --- a/qubesadmin/tools/qvm_shutdown.py +++ b/qubesadmin/tools/qvm_shutdown.py @@ -50,11 +50,16 @@ parser.add_argument('--timeout', help='timeout after which domains are killed when using --wait' ' (default: %(default)d)') +parser.add_argument( + '--force', + action='store_true', default=False, + help='force shutdown regardless of connected domains; use with caution') + def main(args=None, app=None): # pylint: disable=missing-docstring args = parser.parse_args(args, app=app) - force = bool(args.all_domains) + force = args.force or bool(args.all_domains) if have_events: loop = asyncio.get_event_loop()