def batch_results_job()

in src/run.py [0:0]


def batch_results_job(batch_results: BatchResults):
    _XRAY.put_annotation('batch_results_id', batch_results.id)

    temp_dir = tempfile.TemporaryDirectory()
    work_dir = Path(temp_dir.name)

    tenant: Tenant = SP.modular_client.tenant_service().get(batch_results.tenant_name)
    cloud = Cloud[tenant.cloud.upper()]
    credentials = get_credentials(tenant, batch_results)

    policies = BSP.policies_service.separate_ruleset(
        from_=BSP.policies_service.ensure_event_driven_ruleset(cloud),
        exclude=get_rules_to_exclude(tenant),
        keep=set(
            chain.from_iterable(batch_results.regions_to_rules().values())
        )
    )
    loader = PoliciesLoader(
        cloud=cloud,
        output_dir=work_dir,
        regions=BSP.environment_service.target_regions()
    )
    with EnvironmentContext(credentials, reset_all=False):
        runner = Runner.factory(cloud, loader.load_from_regions_to_rules(
            policies,
            batch_results.regions_to_rules()
        ))
        runner.start()

    result = JobResult(work_dir, cloud)
    keys_builder = TenantReportsBucketKeysBuilder(tenant)
    collection = ShardsCollectionFactory.from_cloud(cloud)
    collection.put_parts(result.iter_shard_parts())
    meta = result.rules_meta()
    collection.meta = meta

    _LOG.info('Going to upload to SIEM')
    upload_to_siem(
        tenant=tenant,
        collection=collection,
        job=AmbiguousJob(batch_results),
    )

    collection.io = ShardsS3IO(
        bucket=SP.environment_service.default_reports_bucket_name(),
        key=keys_builder.ed_job_result(batch_results),
        client=SP.s3
    )
    _LOG.debug('Writing job report')
    collection.write_all()  # writes job report

    latest = ShardsCollectionFactory.from_cloud(cloud)
    latest.io = ShardsS3IO(
        bucket=SP.environment_service.default_reports_bucket_name(),
        key=keys_builder.latest_key(),
        client=SP.s3
    )
    _LOG.debug('Pulling latest state')
    latest.fetch_by_indexes(collection.shards.keys())
    latest.fetch_meta()
    _LOG.info('Self-healing regions')  # todo remove after a couple of releases
    fix_s3_regions(latest)

    difference = collection - latest

    _LOG.debug('Writing latest state')
    latest.update(collection)
    latest.update_meta(meta)
    latest.write_all()
    latest.write_meta()

    _LOG.debug('Writing difference')
    difference.io = ShardsS3IO(
        bucket=SP.environment_service.default_reports_bucket_name(),
        key=keys_builder.ed_job_difference(batch_results),
        client=SP.s3
    )
    difference.write_all()

    _LOG.info('Writing statistics')
    SP.s3.gz_put_json(
        bucket=SP.environment_service.get_statistics_bucket_name(),
        key=StatisticsBucketKeysBuilder.job_statistics(batch_results),
        obj=result.statistics(tenant, runner.failed)
    )
    temp_dir.cleanup()