bp::object WBEMConnection::openEnumerateInstanceNames(
    const bp::object &cls,
    const bp::object &ns,
    const bp::object &query_lang,
    const bp::object &query,
    const bp::object &operation_timeout,
    const bp::object &continue_on_error,
    const bp::object &max_object_cnt) try
{
    String c_cls(StringConv::asString(cls, "ClassName"));
    String c_ns(m_default_namespace);
    if (!isnone(ns))
        c_ns = StringConv::asString(ns, "namespace");
    Pegasus::CIMName peg_cls(c_cls);
    Pegasus::CIMNamespaceName peg_ns(c_ns);

    String c_query_lang;
    String c_query;
    if (!isnone(query_lang))
        c_query_lang = StringConv::asString(query_lang);
    if (!isnone(query))
        c_query = StringConv::asString(query);

    Pegasus::Boolean peg_continue_on_error = Conv::as<Pegasus::Boolean>(
        continue_on_error, "ContinueOnError");
    Pegasus::Uint32 peg_max_object_cnt = Conv::as<Pegasus::Uint32>(
        max_object_cnt, "MaxObjectCount");

    Pegasus::Uint32Arg peg_operation_timeout;
    if (!isnone(operation_timeout)) {
        peg_operation_timeout.setValue(Conv::as<Pegasus::Uint32>(
            operation_timeout, "OperationTimeout"));
    }

    Pegasus::Array<Pegasus::CIMObjectPath> peg_instance_names;
    boost::shared_ptr<Pegasus::CIMEnumerationContext> ctx_ptr(
        make_enumeration_ctx());
    Pegasus::Boolean peg_end_of_sequence;

    ScopedTransactionBegin();
    peg_instance_names = client()->openEnumerateInstancePaths(
        *ctx_ptr,
        peg_end_of_sequence,
        peg_ns,
        peg_cls,
        c_query_lang,
        c_query,
        peg_operation_timeout,
        peg_continue_on_error,
        peg_max_object_cnt);
    ScopedTransactionEnd();

    return bp::make_tuple(
        ListConv::asPyCIMInstanceNameList(peg_instance_names),
        CIMEnumerationContext::create(ctx_ptr),
        bp::object(peg_end_of_sequence));
} catch (...) {
    std::stringstream ss;
    if (Config::isVerbose()) {
        ss << "OpenEnumerateInstanceNames(";
        if (Config::isVerboseMore()) {
            String c_ns(m_default_namespace);
            if (!isnone(ns))
                c_ns = StringConv::asString(ns);
            ss << "classname=u" << StringConv::asString(cls) << ", "
               << "namespace=u" << c_ns;
        }
        ss << ')';
    }
    handle_all_exceptions(ss);
    return None;
}
bp::object WBEMConnection::openEnumerateInstances(
    const bp::object &cls,
    const bp::object &ns,
    const bp::object &deep_inheritance,
    const bp::object &include_class_origin,
    const bp::object &property_list,
    const bp::object &query_lang,
    const bp::object &query,
    const bp::object &operation_timeout,
    const bp::object &continue_on_error,
    const bp::object &max_object_cnt) try
{
    Pegasus::CIMName peg_cls(StringConv::asPegasusString(cls, "ClassName"));
    Pegasus::CIMNamespaceName peg_ns(m_default_namespace.c_str());
    if (!isnone(ns))
        peg_ns = StringConv::asPegasusString(ns, "namespace");

    Pegasus::String peg_query_lang;
    Pegasus::String peg_query;
    if (!isnone(query_lang))
        peg_query_lang = StringConv::asPegasusString(query_lang);
    if (!isnone(query))
        peg_query = StringConv::asPegasusString(query);

    Pegasus::Boolean peg_deep_inheritance = Conv::as<Pegasus::Boolean>(
        deep_inheritance, "DeepInheritance");
    Pegasus::Boolean peg_include_class_origin = Conv::as<Pegasus::Boolean>(
        include_class_origin, "IncludeClassOrigin");
    Pegasus::Boolean peg_continue_on_error = Conv::as<Pegasus::Boolean>(
        continue_on_error, "ContinueOnError");
    Pegasus::CIMPropertyList peg_property_list(
        ListConv::asPegasusPropertyList(property_list,
        "PropertyList"));
    Pegasus::Uint32Arg peg_operation_timeout;
    Pegasus::Uint32 peg_max_object_cnt = Conv::as<Pegasus::Uint32>(
        max_object_cnt, "MaxObjectCount");

    if (!isnone(operation_timeout)) {
        peg_operation_timeout.setValue(Conv::as<Pegasus::Uint32>(
            operation_timeout, "OperationTimeout"));
    }

    boost::shared_ptr<Pegasus::CIMEnumerationContext> ctx_ptr(
        make_enumeration_ctx());
    Pegasus::Array<Pegasus::CIMInstance> peg_instances;
    Pegasus::Boolean peg_end_of_sequence;

    ScopedTransactionBegin();
    peg_instances = m_client.openEnumerateInstances(
        *ctx_ptr,
        peg_end_of_sequence,
        peg_ns,
        peg_cls,
        peg_deep_inheritance,
        peg_include_class_origin,
        peg_property_list,
        peg_query_lang,
        peg_query,
        peg_operation_timeout,
        peg_continue_on_error,
        peg_max_object_cnt);
    ScopedTransactionEnd();

    return bp::make_tuple(
        ListConv::asPyCIMInstanceList(peg_instances),
        CIMEnumerationContext::create(ctx_ptr),
        bp::object(peg_end_of_sequence));
} catch (...) {
    std::stringstream ss;
    if (Config::isVerbose()) {
        ss << "OpenEnumerateInstances(";
        if (Config::isVerboseMore()) {
            std::string std_ns(m_default_namespace);
            if (!isnone(ns))
                std_ns = StringConv::asStdString(ns);
            ss << "classname=" << StringConv::asStdString(cls) << ", "
               << "namespace=" << std_ns;
        }
        ss << ')';
    }
    handle_all_exceptions(ss);
    return None;
}