Revision 910f53d9 tools/snf-admin
b/tools/snf-admin | ||
---|---|---|
46 | 46 |
import sys |
47 | 47 |
|
48 | 48 |
from collections import defaultdict |
49 |
from itertools import product |
|
49 | 50 |
from optparse import OptionParser |
50 | 51 |
from os.path import basename |
51 | 52 |
|
... | ... | |
436 | 437 |
meta.delete() |
437 | 438 |
|
438 | 439 |
|
440 |
# Flavor commands |
|
441 |
|
|
442 |
class CreateFlavor(Command): |
|
443 |
group = 'flavor' |
|
444 |
name = 'create' |
|
445 |
syntax = '<cpu>[,<cpu>,...] <ram>[,<ram>,...] <disk>[,<disk>,...]' |
|
446 |
description = 'create one or more flavors' |
|
447 |
|
|
448 |
def main(self, cpu, ram, disk): |
|
449 |
cpus = cpu.split(',') |
|
450 |
rams = ram.split(',') |
|
451 |
disks = disk.split(',') |
|
452 |
|
|
453 |
flavors = [] |
|
454 |
for cpu, ram, disk in product(cpus, rams, disks): |
|
455 |
try: |
|
456 |
flavors.append((int(cpu), int(ram), int(disk))) |
|
457 |
except ValueError: |
|
458 |
print 'Invalid values' |
|
459 |
return |
|
460 |
|
|
461 |
created = [] |
|
462 |
for cpu, ram, disk in flavors: |
|
463 |
flavor = models.Flavor.objects.create(cpu=cpu, ram=ram, disk=disk) |
|
464 |
created.append(flavor) |
|
465 |
|
|
466 |
print_items(created, detail=True) |
|
467 |
|
|
468 |
|
|
469 |
class DeleteFlavor(Command): |
|
470 |
group = 'flavor' |
|
471 |
name = 'delete' |
|
472 |
syntax = '<flavor id> [<flavor id>] [...]' |
|
473 |
description = 'delete one or more flavors' |
|
474 |
|
|
475 |
def main(self, *args): |
|
476 |
if not args: |
|
477 |
raise TypeError |
|
478 |
for flavor_id in args: |
|
479 |
flavor = models.Flavor.objects.get(id=int(flavor_id)) |
|
480 |
flavor.delete() |
|
481 |
|
|
482 |
|
|
483 |
class ListFlavors(Command): |
|
484 |
group = 'flavor' |
|
485 |
name = 'list' |
|
486 |
syntax = '[flavor id]' |
|
487 |
description = 'list images' |
|
488 |
|
|
489 |
def add_options(self, parser): |
|
490 |
parser.add_option('-l', action='store_true', dest='detail', |
|
491 |
default=False, help='show detailed output') |
|
492 |
|
|
493 |
def main(self, flavor_id=None): |
|
494 |
if flavor_id: |
|
495 |
flavors = [models.Flavor.objects.get(id=flavor_id)] |
|
496 |
else: |
|
497 |
flavors = models.Flavor.objects.order_by('id') |
|
498 |
print_items(flavors, self.detail) |
|
499 |
|
|
500 |
|
|
439 | 501 |
def print_usage(exe, groups, group=None, shortcut=False): |
440 | 502 |
nop = Command(exe, []) |
441 | 503 |
nop.parser.print_help() |
Also available in: Unified diff