Skip to content

Commit 0aff980

Browse files
committed
vcpu_set: Implement plus-minus operators
1 parent b2326e9 commit 0aff980

File tree

3 files changed

+14
-3
lines changed

3 files changed

+14
-3
lines changed

igvm/cli.py

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -319,8 +319,7 @@ def parse_args():
319319
)
320320
subparser.add_argument(
321321
'count',
322-
type=int,
323-
help='New number of CPUs',
322+
help='New number of CPUs, integers with optional prefix + or -',
324323
)
325324
subparser.add_argument(
326325
'--offline',

igvm/commands.py

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -141,7 +141,11 @@ def vcpu_set(vm_hostname, count, offline=False):
141141
)
142142
offline = False
143143

144-
if count == vm.dataset_obj['num_cpu']:
144+
if str(count).startswith('+'):
145+
count = vm.dataset_obj['num_cpu'] + int(str(count)[1:])
146+
elif str(count).startswith('-'):
147+
count = vm.dataset_obj['num_cpu'] - int(str(count)[1:])
148+
elif count == vm.dataset_obj['num_cpu']:
145149
raise Warning('CPU count is the same.')
146150

147151
if offline:

tests/test_integration.py

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -481,6 +481,14 @@ def _get_cpus_vm():
481481
with self.assertRaises(IGVMError):
482482
vcpu_set(VM_HOSTNAME, -5, offline=True)
483483

484+
vcpu_set(VM_HOSTNAME, -1, offline=True)
485+
self.assertEqual(_get_cpus_hv(), 1)
486+
self.assertEqual(_get_cpus_vm(), 1)
487+
488+
vcpu_set(VM_HOSTNAME, +1)
489+
self.assertEqual(_get_cpus_hv(), 2)
490+
self.assertEqual(_get_cpus_vm(), 2)
491+
484492
def test_sync(self):
485493
obj = (
486494
Query({'hostname': VM_HOSTNAME}, ['disk_size_gib', 'memory']).get()

0 commit comments

Comments
 (0)