Skip to content

Commit dfefd02

Browse files
committed
Migrate action to utils to their own module
1 parent 4e788dc commit dfefd02

13 files changed

Lines changed: 473 additions & 254 deletions

File tree

qubesadmin/tools/qvm_kill.py

Lines changed: 4 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -24,11 +24,10 @@
2424
import asyncio
2525
import sys
2626

27-
import qubesadmin.exc
28-
import qubesadmin.tools
29-
import qubesadmin.tools.qvm_shutdown
27+
from qubesadmin.tools import QubesArgumentParser
28+
from qubesadmin.utils.kill import kill
3029

31-
parser = qubesadmin.tools.QubesArgumentParser(
30+
parser = QubesArgumentParser(
3231
description='immediately terminate a qube without a graceful shutdown'
3332
' sequence',
3433
vmname_nargs='+')
@@ -37,7 +36,7 @@
3736
async def run_async(args=None, app=None):
3837
# pylint: disable=missing-docstring
3938
args = parser.parse_args(args, app=app)
40-
failed = await qubesadmin.utils.kill(domains=args.domains)
39+
failed = await kill(domains=args.domains)
4140
if not failed:
4241
return 0
4342
for qube, exc in failed.items():

qubesadmin/tools/qvm_pause.py

Lines changed: 7 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -22,10 +22,13 @@
2222

2323
import asyncio
2424
import sys
25-
import qubesadmin
2625

26+
from qubesadmin.tools import QubesArgumentParser
27+
from qubesadmin.utils.pause import pause
28+
from qubesadmin.utils.suspend import suspend
2729

28-
parser = qubesadmin.tools.QubesArgumentParser(vmname_nargs='+',
30+
31+
parser = QubesArgumentParser(vmname_nargs='+',
2932
description='pause a qube',
3033
epilog='Paused qubes will be killed on system shutdown.')
3134

@@ -48,10 +51,10 @@ def main(args=None, app=None):
4851
exit_code = 0
4952
if args.suspend:
5053
action = "suspend"
51-
failed = asyncio.run(qubesadmin.utils.suspend(domains=args.domains))
54+
failed = asyncio.run(suspend(domains=args.domains))
5255
else:
5356
action = "pause"
54-
failed = asyncio.run(qubesadmin.utils.pause(domains=args.domains))
57+
failed = asyncio.run(pause(domains=args.domains))
5558
if failed:
5659
exit_code = 1
5760
for qube, exc in failed.items():

qubesadmin/tools/qvm_shutdown.py

Lines changed: 13 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -28,12 +28,12 @@
2828
import sys
2929
from warnings import warn
3030

31-
import qubesadmin.tools
32-
import qubesadmin.exc
31+
from qubesadmin.tools import QubesArgumentParser
32+
from qubesadmin.exc import QubesVMInUseError, QubesVMShutdownTimeoutError
33+
from qubesadmin.utils.shutdown import shutdown
34+
from qubesadmin.utils.kill import kill
3335

34-
parser = qubesadmin.tools.QubesArgumentParser(
35-
description=__doc__, vmname_nargs="+"
36-
)
36+
parser = QubesArgumentParser(description=__doc__, vmname_nargs="+")
3737

3838
parser.add_argument(
3939
"--wait",
@@ -67,18 +67,18 @@
6767
)
6868

6969

70-
async def shutdown(domains, **shutdown_kwargs):
70+
async def shutdown_group_exc(domains, **shutdown_kwargs):
7171
# pylint: disable=missing-function-docstring
72-
failed = await qubesadmin.utils.shutdown(domains=domains, **shutdown_kwargs)
72+
failed = await shutdown(domains=domains, **shutdown_kwargs)
7373
used = {
7474
qube: exc
7575
for qube, exc in failed.items()
76-
if isinstance(exc, qubesadmin.exc.QubesVMInUseError)
76+
if isinstance(exc, QubesVMInUseError)
7777
}
7878
timedout = {
7979
qube: exc
8080
for qube, exc in failed.items()
81-
if isinstance(exc, qubesadmin.exc.QubesVMShutdownTimeoutError)
81+
if isinstance(exc, QubesVMShutdownTimeoutError)
8282
}
8383
unhandled = {
8484
qube: exc
@@ -105,7 +105,7 @@ async def run_async(args=None, app=None):
105105
"wait": args.wait,
106106
}
107107

108-
unhandled, used, timedout = await shutdown(
108+
unhandled, used, timedout = await shutdown_group_exc(
109109
domains=args.domains, **shutdown_kwargs
110110
)
111111
unhandled_retry = {}
@@ -123,7 +123,7 @@ async def run_async(args=None, app=None):
123123
", ".join(qube.name for qube in used)
124124
)
125125
)
126-
failed = await shutdown(domains=used, **shutdown_kwargs)
126+
failed = await shutdown_group_exc(domains=used, **shutdown_kwargs)
127127
unhandled_retry, used, timedout_retry = failed
128128
if not failed:
129129
break
@@ -144,7 +144,7 @@ async def run_async(args=None, app=None):
144144
", ".join(qube.name for qube in timedout)
145145
)
146146
)
147-
unhandled, used, timedout = await shutdown(
147+
unhandled, used, timedout = await shutdown_group_exc(
148148
domains=timedout, **shutdown_kwargs
149149
)
150150

@@ -154,7 +154,7 @@ async def run_async(args=None, app=None):
154154
", ".join(qube.name for qube in timedout)
155155
)
156156
)
157-
timedout = await qubesadmin.utils.kill(domains=timedout)
157+
timedout = await kill(domains=timedout)
158158

159159
for item in [unhandled, used, timedout]:
160160
for qube, exc in item.items():

qubesadmin/tools/qvm_start.py

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -19,12 +19,13 @@
1919
# with this program; if not, see <http://www.gnu.org/licenses/>.
2020

2121
"""qvm-start - start a domain"""
22+
2223
import asyncio
2324
import sys
2425

2526
import qubesadmin.exc
2627
import qubesadmin.tools
27-
import qubesadmin.utils
28+
from qubesadmin.utils.start import DriveAction, start_expert
2829

2930

3031
parser = qubesadmin.tools.QubesArgumentParser(
@@ -49,7 +50,7 @@
4950

5051
parser_drive.add_argument(
5152
"--hddisk",
52-
action=qubesadmin.utils.DriveAction,
53+
action=DriveAction,
5354
dest="drive",
5455
prefix="hd:",
5556
help="temporarily attach specified drive as hard disk",
@@ -58,7 +59,7 @@
5859
parser_drive.add_argument(
5960
"--cdrom",
6061
metavar="IMAGE",
61-
action=qubesadmin.utils.DriveAction,
62+
action=DriveAction,
6263
dest="drive",
6364
prefix="cdrom:",
6465
help="temporarily attach specified drive as CD/DVD",
@@ -79,7 +80,7 @@ async def run_async(args=None, app=None):
7980
args = parser.parse_args(args, app=app)
8081
tasks = [
8182
asyncio.to_thread(
82-
qubesadmin.utils.start_expert,
83+
start_expert,
8384
domain=qube,
8485
skip_if_running=args.skip_if_running,
8586
drive=args.drive,

qubesadmin/tools/qvm_unpause.py

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -22,10 +22,12 @@
2222

2323
import asyncio
2424
import sys
25-
import qubesadmin
2625

26+
from qubesadmin.tools import QubesArgumentParser
27+
from qubesadmin.utils.unpause import unpause
2728

28-
parser = qubesadmin.tools.QubesArgumentParser(
29+
30+
parser = QubesArgumentParser(
2931
vmname_nargs='+',
3032
description='unpause a domain')
3133

@@ -47,7 +49,7 @@ def main(args=None, app=None):
4749
if not vm.features.get("internal")
4850
]
4951

50-
failed = asyncio.run(qubesadmin.utils.unpause(domains=domains))
52+
failed = asyncio.run(unpause(domains=domains))
5153
action = "unpause/resume"
5254
if failed:
5355
exit_code = 1

0 commit comments

Comments
 (0)