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