Beispiel #1
0
    def update_storage(self, args):
        partitioner = self.get_partitioner(args)

        if not args.dry_run:
            errors = partitioner.update_partition_storage_descriptors()
            if errors:
                print_batch_errors(errors, action="update")
                sys.exit(1)
Beispiel #2
0
    def delete_missing_partitions(self, args):
        partitioner = self.get_partitioner(args)

        to_delete = partitioner.missing_partitions()
        print("Found {} partitions to delete:".format(len(to_delete)))
        for partition in to_delete:
            print(f"\t{str(partition)}")

        if not args.dry_run:
            errors = partitioner.delete_partitions(to_delete)
            if errors:
                print_batch_errors(errors)
                sys.exit(1)
Beispiel #3
0
    def delete_bad_partitions(self, args):
        partitioner = self.get_partitioner(args)

        to_delete = partitioner.bad_partitions()
        print("Found {} partitions to delete".format(len(to_delete)))

        if to_delete:
            print("Deleting the following partitions:")
            for partition in to_delete:
                print(f"\t{str(partition)}")

            if not args.dry_run:
                errors = partitioner.delete_partitions(to_delete)
                if errors:
                    print_batch_errors(errors)
                    sys.exit(1)
Beispiel #4
0
    def test_print_batch_errors(self):
        new_out = StringIO()
        old_out = sys.stdout

        try:
            sys.stdout = new_out

            errors = [{"Object": "some-value",
                       "ErrorDetail": {"ErrorCode": "SomeError"}}]
            print_batch_errors(errors, obj_type="object", obj_key="Object", action="foo")

            output = new_out.getvalue().strip()
            output.should.equal(
                "One or more errors occurred when attempting to foo object\nError on some-value: SomeError")
        finally:
            sys.stdout = old_out
Beispiel #5
0
    def update_partitions(self, args):
        partitioner = self.get_partitioner(args)
        moved = partitioner.find_moved_partitions()

        if not moved:
            print("No partitions to update")
            return

        print(f"Found {len(moved)} moved partitions")
        for partition in moved:
            print(f"\t{partition}")

        if not args.dry_run:
            errors = partitioner.update_partition_locations(moved)
            if errors:
                print_batch_errors(errors, action="update")
                sys.exit(1)
Beispiel #6
0
    def delete_all_partitions(self, args):
        partitioner = self.get_partitioner(args)

        existing = partitioner.existing_partitions()

        if existing:
            print("Deleting the following partitions:")
            for partition in existing:
                print(f"\t{str(partition)}")
        else:
            print(f"No partitions found in table {args.table}")

        if not args.dry_run:
            errors = partitioner.delete_partitions(existing)
            if errors:
                print_batch_errors(errors)
                sys.exit(1)
Beispiel #7
0
    def delete_bad_tables(self, args):
        cleaner = self.get_database_cleaner(args)
        to_delete = cleaner.child_tables()

        if not to_delete:
            print("Nothing to delete")
        else:
            print("Going to delete the following tables:")
            for table in to_delete:
                print(f"\t{table}")

            if not args.dry_run:
                errors = cleaner.delete_tables(to_delete)
                if errors:
                    print_batch_errors(errors,
                                       obj_type="tables",
                                       obj_key="TableName")
                    sys.exit(1)