コード例 #1
0
ファイル: pool-list.py プロジェクト: kins299/mycloud
    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")
コード例 #2
0
ファイル: pool-list.py プロジェクト: antonis-m/synnefo
    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")
コード例 #3
0
ファイル: pool-show.py プロジェクト: antonis-m/synnefo
    def handle(self, *args, **options):
        type_ = options['type']

        if not type_:
            raise CommandError("Type of pool is mandatory")

        pool_table = common.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
        pprint.pprint_pool('Available', pool.to_map(), step, self.stdout)
        pprint.pprint_pool('Reserved',
                           bitarray_to_map(pool.reserved[:pool_row.size]),
                           step, self.stdout)
コード例 #4
0
ファイル: pool-show.py プロジェクト: salsa-dev/synnefo
    def handle(self, *args, **options):
        type_ = options['type']

        if not type_:
            raise CommandError("Type of pool is mandatory")

        pool_table = common.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
        pprint.pprint_pool('Available', pool.to_map(), step, self.stdout)
        pprint.pprint_pool('Reserved',
                           bitarray_to_map(pool.reserved[:pool_row.size]),
                           step, self.stdout)
コード例 #5
0
ファイル: pool-show.py プロジェクト: konsP/synnefo
    def handle(self, *args, **options):
        type_ = options["type"]

        if not type_:
            raise CommandError("Type of pool is mandatory")

        pool_table = common.pool_table_from_type(type_)

        try:
            pool_id = int(args[0])
            pool_row = pool_table.objects.get(id=pool_id)
        except IndexError:
            raise CommandError("Please provide a 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
        pprint.pprint_pool("Available", pool.to_map(), step, self.stdout)
        pprint.pprint_pool("Reserved", bitarray_to_map(pool.reserved[: pool_row.size]), step, self.stdout)
コード例 #6
0
ファイル: pool-create.py プロジェクト: AthinaB/synnefo
    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)
コード例 #7
0
    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)
コード例 #8
0
ファイル: pool-modify.py プロジェクト: salsa-dev/synnefo
    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()

        size = options["size"]
        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()
コード例 #9
0
ファイル: pool-remove.py プロジェクト: AthinaB/synnefo
    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_)

        force = options['force']
        self.confirm_deletion(force, "pool(s)", args)

        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()
コード例 #10
0
ファイル: pool-remove.py プロジェクト: salsa-dev/synnefo
    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_)

        force = options['force']
        self.confirm_deletion(force, "pool(s)", args)

        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()