def METHOD_NAME(
    dry_run: bool,
    thread_pool_size: int = 10,
    internal: Optional[bool] = None,
    use_jump_host: bool = True,
    defer: Optional[Callable] = None,
) -> None:
    slack: Optional[SlackApi] = None
    if not dry_run:
        slack = slackapi_from_queries(QONTRACT_INTEGRATION)
    vault_settings = get_app_interface_vault_settings()
    settings = queries.get_app_interface_settings()
    secret_reader = create_secret_reader(use_vault=vault_settings.vault)
    state = init_state(integration=QONTRACT_INTEGRATION, secret_reader=secret_reader)
    if defer:
        defer(state.cleanup)
    clusters = [c for c in get_clusters() if c.ocm and c.spec]
    oc_map = init_oc_map_from_clusters(
        clusters=clusters,
        integration=QONTRACT_INTEGRATION,
        secret_reader=secret_reader,
        internal=internal,
        use_jump_host=use_jump_host,
        thread_pool_size=thread_pool_size,
    )
    if defer:
        defer(oc_map.cleanup)
    cluster_like_objects = [cluster.dict(by_alias=True) for cluster in clusters]
    ocm_map = OCMMap(
        clusters=cluster_like_objects,
        integration=QONTRACT_INTEGRATION,
        settings=settings,
    )
    notify_upgrades_start(
        clusters=clusters, oc_map=oc_map, ocm_map=ocm_map, state=state, slack=slack
    )
    notify_cluster_new_version(clusters=clusters, state=state, slack=slack)