def handle(self, *args, **options): type_ = options['type'] if type_: pool_tables = [pool_table_from_type(type_)] else: pool_tables = [pool_table_from_type(x) for x in POOL_CHOICES] for pool_table in pool_tables: self.stdout.write("-" * 80 + '\n') pl = pool_table.__name__.replace("Table", "") self.stdout.write(pl + '\n') self.stdout.write("-" * 80 + '\n') keys = ["id", "size", "base", "offset", "available", "reserved"] for key in keys: self.stdout.write(("%s" % key).rjust(12)) self.stdout.write("\n") for pool_table_row in pool_table.objects.all(): pool = pool_table_row.pool kv = { 'id': pool_table_row.id, 'offset': pool_table_row.offset, 'base': pool_table_row.base, 'size': pool_table_row.size, 'available': pool.count_available(), 'reserved': pool.count_reserved(), } for key in keys: self.stdout.write(("%s" % kv[key]).rjust(12)) self.stdout.write("\n")
def handle(self, *args, **options): type_ = options["type"] if type_: pool_tables = [pool_table_from_type(type_)] else: pool_tables = [pool_table_from_type(x) for x in POOL_CHOICES] for pool_table in pool_tables: self.stdout.write("-" * 80 + "\n") pl = pool_table.__name__.replace("Table", "") self.stdout.write(pl + "\n") self.stdout.write("-" * 80 + "\n") keys = ["id", "size", "base", "offset", "available", "reserved"] for key in keys: self.stdout.write(("%s" % key).rjust(12)) self.stdout.write("\n") for pool_table_row in pool_table.objects.all(): pool = pool_table_row.pool kv = { "id": pool_table_row.id, "offset": pool_table_row.offset, "base": pool_table_row.base, "size": pool_table_row.size, "available": pool.count_available(), "reserved": pool.count_reserved(), } for key in keys: self.stdout.write(("%s" % kv[key]).rjust(12)) self.stdout.write("\n")
def handle(self, *args, **options): type_ = options['type'] size = options['size'] offset = options['offset'] base = options['base'] if not type_: raise CommandError("Type of pool is mandatory") if not size: raise CommandError("Size of pool is mandatory") try: size = int(size) except ValueError: raise CommandError("Invalid size") if type_ == "mac-prefix": if base is None: base = "aa:00:0" try: validate_mac(base + "0:00:00:00") except: raise CommandError("Invalid base. %s is not a" " valid MAC prefix." % base) pool_table = pool_table_from_type(type_) if pool_table.objects.exists(): raise CommandError("Pool of type %s already exists" % type_) pool_table.objects.create(available_map="", reserved_map="", size=size, base=base, offset=offset)
def handle(self, *args, **options): type_ = options['type'] if not type_: raise CommandError("Type of pool is mandatory") pool_table = pool_table_from_type(type_) try: pool_id = int(args[0]) pool_row = pool_table.objects.get(id=pool_id) except (ValueError, pool_table.DoesNotExist): raise CommandError("Invalid pool ID") pool = pool_row.pool kv = { 'id': pool_row.id, 'offset': pool_row.offset, 'base': pool_row.base, 'size': pool_row.size, 'available': pool.count_available(), 'reserved': pool.count_reserved(), } for key, val in sorted(kv.items()): line = '%s: %s\n' % (key.rjust(16), val) self.stdout.write(line.encode('utf8')) step = (type_ == 'bridge') and 64 or 80 print_map('Pool', pool.to_map(), step, self.stdout) print_map('Reserved', bitarray_to_map(pool.reserved[:pool_row.size]), step, self.stdout)
def handle(self, *args, **options): type_ = options['type'] if not type_: raise CommandError("Type of pool is mandatory") pool_table = pool_table_from_type(type_) try: pool_id = int(args[0]) pool = pool_table.objects.get(id=pool_id) except (ValueError, pool_table.DoesNotExist): raise CommandError("Invalid pool ID") pool.delete()
def handle(self, *args, **options): type_ = options['type'] offset = options['offset'] base = options['base'] add_reserved = options['add-reserved'] remove_reserved = options['remove-reserved'] size = options['size'] if not type_: raise CommandError("Type of pool is mandatory") pool_table = pool_table_from_type(type_) try: pool_id = int(args[0]) pool_row = pool_table.objects.get(id=pool_id) except (ValueError, pool_table.DoesNotExist): raise CommandError("Invalid pool ID") pool = pool_row.pool if add_reserved: reserved = add_reserved.split(',') for value in reserved: pool.reserve(value, external=True) if remove_reserved: released = remove_reserved.split(',') for value in released: pool.put(value, external=True) pool.save(db=False) if offset: pool_row.offset = offset if base: pool_row.base = base # Save now, to avoid conflict with resizing pool.save() pool_row.save() if size: try: size = int(size) except ValueError: raise CommandError("Invalid size") pool = pool_row.get_pool() self.resize_pool(pool, pool_row.size, size) pool.save()
def handle(self, *args, **options): type_ = options['type'] offset = options['offset'] base = options['base'] add_reserved = options['add-reserved'] remove_reserved = options['remove-reserved'] if not type_: raise CommandError("Type of pool is mandatory") pool_table = pool_table_from_type(type_) try: pool_id = int(args[0]) pool_row = pool_table.objects.get(id=pool_id) except (ValueError, pool_table.DoesNotExist): raise CommandError("Invalid pool ID") pool = pool_row.pool if add_reserved: reserved = add_reserved.split(',') for value in reserved: pool.reserve(value, external=True) if remove_reserved: released = remove_reserved.split(',') for value in released: pool.put(value, external=True) pool.save(db=False) if offset: pool_row.offset = offset if base: pool_row.base = base # Save now, to avoid conflict with resizing pool.save() pool_row.save() if size: try: size = int(size) except ValueError: raise CommandError("Invalid size") pool = pool_row.get_pool() self.resize_pool(pool, pool_row.size, size) pool.save()