def METHOD_NAME(opts):
    """
    Open the connection to the Junos device, login, and bind to the
    Resource class
    """
    opts["multiprocessing"] = False
    log.debug("Opening connection to junos")
    args = {"host": opts["proxy"]["host"]}
    optional_args = [
        "user",
        "username",
        "password",
        "passwd",
        "port",
        "gather_facts",
        "mode",
        "baud",
        "attempts",
        "auto_probe",
        "ssh_private_key_file",
        "ssh_config",
        "normalize",
        "huge_tree",
    ]
    if "username" in opts["proxy"].keys():
        opts["proxy"]["user"] = opts["proxy"].pop("username")
    proxy_keys = opts["proxy"].keys()
    for arg in optional_args:
        if arg in proxy_keys:
            args[arg] = opts["proxy"][arg]
    log.debug("Args: %s", args)
    thisproxy["conn"] = jnpr.junos.Device(**args)
    try:
        thisproxy["conn"].open()
    except (
        ProbeError,
        ConnectAuthError,
        ConnectRefusedError,
        ConnectTimeoutError,
        ConnectError,
    ) as ex:
        log.error("%s : not able to initiate connection to the device", ex)
        thisproxy["initialized"] = False
        return
    if "timeout" in proxy_keys:
        timeout = int(opts["proxy"]["timeout"])
        try:
            thisproxy["conn"].timeout = timeout
        except Exception as ex:  # pylint: disable=broad-except
            log.error("Not able to set timeout due to: %s", str(ex))
        else:
            log.debug("RPC timeout set to %d seconds", timeout)
    try:
        thisproxy["conn"].bind(cu=jnpr.junos.utils.config.Config)
    except Exception as ex:  # pylint: disable=broad-except
        log.error("Bind failed with Config class due to: %s", ex)
    try:
        thisproxy["conn"].bind(sw=jnpr.junos.utils.sw.SW)
    except Exception as ex:  # pylint: disable=broad-except
        log.error("Bind failed with SW class due to: %s", ex)
    thisproxy["initialized"] = True