Beispiel #1
0
    def setUp(self):
        super().setUp()

        default_storage = self.config.get('defaultStorage', types=str)
        StorageFactory.initialize(self.config)

        self.storage = StorageFactory.get_by_name(default_storage)
        for block_uid in self.storage.list_blocks():
            self.storage.rm_block(block_uid)
        for version_uid in self.storage.list_versions():
            self.storage.rm_version(version_uid)
Beispiel #2
0
 def _ls_versions_table_output(cls, versions: List[Version],
                               include_labels: bool) -> None:
     tbl = PrettyTable()
     # tbls.field_names.append won't work due to magic inside of PrettyTable
     if include_labels:
         tbl.field_names = [
             'date',
             'uid',
             'name',
             'snapshot_name',
             'size',
             'block_size',
             'status',
             'protected',
             'storage',
             'labels',
         ]
     else:
         tbl.field_names = [
             'date',
             'uid',
             'name',
             'snapshot_name',
             'size',
             'block_size',
             'status',
             'protected',
             'storage',
         ]
     tbl.align['name'] = 'l'
     tbl.align['snapshot_name'] = 'l'
     tbl.align['storage'] = 'l'
     tbl.align['size'] = 'r'
     tbl.align['block_size'] = 'r'
     tbl.align['labels'] = 'l'
     for version in versions:
         row = [
             PrettyPrint.local_time(version.date),
             version.uid.v_string,
             version.name,
             version.snapshot_name,
             PrettyPrint.bytes(version.size),
             PrettyPrint.bytes(version.block_size),
             version.status,
             version.protected,
             StorageFactory.storage_id_to_name(version.storage_id),
         ]
         if include_labels:
             row.append('\n'.join(
                 sorted([
                     '{}={}'.format(label.name, label.value)
                     for label in version.labels
                 ])))
         tbl.add_row(row)
     print(tbl)
Beispiel #3
0
    def _ls_versions_table_output(versions: List[Version], include_labels: bool, include_stats: bool) -> None:
        tbl = PrettyTable()

        field_names = ['date', 'uid', 'name', 'snapshot_name', 'size', 'block_size', 'status', 'protected', 'storage']
        if include_stats:
            field_names.extend(['read', 'written', 'dedup', 'sparse', 'duration'])
        if include_labels:
            field_names.append('labels')
        tbl.field_names = field_names

        tbl.align['name'] = 'l'
        tbl.align['snapshot_name'] = 'l'
        tbl.align['storage'] = 'l'
        tbl.align['size'] = 'r'
        tbl.align['block_size'] = 'r'

        tbl.align['read'] = 'r'
        tbl.align['written'] = 'r'
        tbl.align['dedup'] = 'r'
        tbl.align['sparse'] = 'r'
        tbl.align['duration'] = 'r'

        tbl.align['labels'] = 'l'

        for version in versions:
            row = [
                PrettyPrint.local_time(version.date),
                version.uid.v_string,
                version.name,
                version.snapshot_name,
                PrettyPrint.bytes(version.size),
                PrettyPrint.bytes(version.block_size),
                version.status,
                version.protected,
                StorageFactory.storage_id_to_name(version.storage_id),
            ]

            if include_stats:
                row.extend([
                    PrettyPrint.bytes(version.bytes_read) if version.bytes_read is not None else '',
                    PrettyPrint.bytes(version.bytes_written) if version.bytes_written is not None else '',
                    PrettyPrint.bytes(version.bytes_dedup) if version.bytes_dedup is not None else '',
                    PrettyPrint.bytes(version.bytes_sparse) if version.bytes_sparse is not None else '',
                    PrettyPrint.duration(version.duration) if version.duration is not None else '',
                ])

            if include_labels:
                row.append('\n'.join(sorted(['{}={}'.format(label.name, label.value) for label in version.labels])))
            tbl.add_row(row)
        print(tbl)
Beispiel #4
0
 def _stats_table_output(cls, stats: List[VersionStatistic]) -> None:
     tbl = PrettyTable()
     tbl.field_names = [
         'date', 'uid', 'name', 'snapshot_name', 'size', 'block_size',
         'storage', 'read', 'written', 'dedup', 'sparse', 'duration'
     ]
     tbl.align['uid'] = 'l'
     tbl.align['name'] = 'l'
     tbl.align['snapshot_name'] = 'l'
     tbl.align['storage'] = 'l'
     tbl.align['size'] = 'r'
     tbl.align['block_size'] = 'r'
     tbl.align['read'] = 'r'
     tbl.align['written'] = 'r'
     tbl.align['dedup'] = 'r'
     tbl.align['sparse'] = 'r'
     tbl.align['duration'] = 'r'
     for stat in stats:
         augmented_version_uid = '{}{}{}'.format(
             stat.uid.v_string, ',\nbase {}'.format(stat.base_uid.v_string)
             if stat.base_uid else '',
             ', hints' if stat.hints_supplied else '')
         tbl.add_row([
             PrettyPrint.local_time(stat.date),
             augmented_version_uid,
             stat.name,
             stat.snapshot_name,
             PrettyPrint.bytes(stat.size),
             PrettyPrint.bytes(stat.block_size),
             StorageFactory.storage_id_to_name(stat.storage_id),
             PrettyPrint.bytes(stat.bytes_read),
             PrettyPrint.bytes(stat.bytes_written),
             PrettyPrint.bytes(stat.bytes_dedup),
             PrettyPrint.bytes(stat.bytes_sparse),
             PrettyPrint.duration(stat.duration),
         ])
     print(tbl)
Beispiel #5
0
 def tearDown(self):
     uids = self.storage.list_blocks()
     self.assertEqual(0, len(uids))
     StorageFactory.close()
     super().tearDown()
Beispiel #6
0
 def tearDown(self):
     StorageFactory.close()
     super().tearDown()