def METHOD_NAME(
    self,
    *,
    host: TargetHost,
    servers: Sequence[str],
    current_depth: int,
    options: Dict[str, Any],
    interrupt: Event,
    **kwargs,
) -> ExploiterResult:
    # HTTP ports options are hack because they are needed in fingerprinters
    del_key(options, "http_ports")
    try:
        logger.debug(f"Parsing options: {pformat(options)}")
        snmp_options = SNMPOptions(**options)
    except Exception as err:
        msg = f"Failed to parse SNMP options: {err}"
        logger.exception(msg)
        return ExploiterResult(
            exploitation_success=False, propagation_success=False, error_message=msg
        )
    snmp_client = SNMPClient(snmp_options.snmp_request_timeout, snmp_options.snmp_retries)
    attempt_exploit, msg = should_attempt_exploit(host, snmp_client)
    if not attempt_exploit:
        logger.debug(f"Skipping brute force of host {host.ip}: {msg}")
        return ExploiterResult(
            exploitation_success=False, propagation_success=False, error_message=msg
        )
    try:
        logger.debug(f"Running SNMP exploiter on host {host.ip}")
        community_strings = generate_community_strings(
            self._propagation_credentials_repository.get_credentials()
        )
        snmp_exploiter = self._create_snmp_exploiter(snmp_client, host, servers, current_depth)
        return snmp_exploiter.exploit_host(host, snmp_options, community_strings, interrupt)
    except Exception as err:
        msg = f"An unexpected exception occurred while attempting to exploit host: {err}"
        logger.exception(msg)
        return ExploiterResult(
            exploitation_success=False, propagation_success=False, error_message=msg
        )