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